JAL-1807 Bob
authorhansonr <hansonr@stolaf.edu>
Sat, 25 Jul 2015 07:05:19 +0000 (08:05 +0100)
committerhansonr <hansonr@stolaf.edu>
Sat, 25 Jul 2015 07:05:19 +0000 (08:05 +0100)
jars/closure_compiler.jar [new file with mode: 0644]
package/package.js [new file with mode: 0644]
site/j2s/awt2swing/Util.js [new file with mode: 0644]
site/j2s/core/corejalview.js [new file with mode: 0644]
site/j2s/core/corejalview.z.js [new file with mode: 0644]
site/j2s/java/awt/peer/rep5459595286819881521.tmp [new file with mode: 0644]
site/j2s/swingjs/plaf/JSPopupMenuSeparatorUI.js [new file with mode: 0644]
site/js/t [new file with mode: 0644]
src/awt2swing/Util.java [new file with mode: 0644]
swingjs.zip [new file with mode: 0644]

diff --git a/jars/closure_compiler.jar b/jars/closure_compiler.jar
new file mode 100644 (file)
index 0000000..53037b0
Binary files /dev/null and b/jars/closure_compiler.jar differ
diff --git a/package/package.js b/package/package.js
new file mode 100644 (file)
index 0000000..e07efb9
--- /dev/null
@@ -0,0 +1,78 @@
+// package.js from Jmol project -- template only here for Swingjs
+
+// NOTE: Any changes here must also be reflected in build xml
+// NOTE: this code does not allow for multiple J2S applications on a page
+
+if (!window["java.registered"])
+ window["java.registered"] = false;
+
+(function (ClazzLoader) {
+
+       if (window["java.packaged"]) return;
+       window["java.packaged"] = true;
+
+       //if (!Jmol._isAsync) {
+               for (var i = 0; i < Jmol._coreFiles.length; i++)
+                 ClazzLoader.loadZJar(Jmol._coreFiles[i], ClazzLoader.runtimeKeyClass);
+       //}
+               
+ClazzLoader.jarClasspath (ClazzLoader.getJ2SLibBase() + "java/awt/geom/Point2D.js", [
+  "java.awt.geom.Point2D", 
+  "java.awt.geom.Point2D.Double", 
+  "java.awt.geom.Point2D.Float"  
+       ]);
+
+ClazzLoader.jarClasspath (ClazzLoader.getJ2SLibBase() + "sun/awt/SunHints.js", [
+  "sun.awt.SunHints", 
+  "sun.awt.SunHints.Value", 
+  "sun.awt.SunHints.Key", 
+  "sun.awt.SunHints.LCDContrastKey",
+  "sun.awt.SunHints.SunKey" 
+       ]);
+
+ClazzLoader.jarClasspath (ClazzLoader.getJ2SLibBase() + "javax/swing/text/AbstractDocument.js", [
+  "javax.swing.text.AbstractDocument", 
+  "javax.swing.text.AbstractDocument.UndoRedoDocumentEvent" 
+       ]);
+
+ClazzLoader.jarClasspath (ClazzLoader.getJ2SLibBase() + "javax/swing/Popup.js", [
+  "javax.swing.Popup", 
+  "javax.swing.Popup.DefaultFrame",
+  "javax.swing.Popup.HeavyWeightWindow" 
+       ]);
+
+ClazzLoader.jarClasspath (ClazzLoader.getJ2SLibBase() + "javax/swing/text/LayeredHighlighter.js", [
+  "javax.swing.text.LayeredHighlighter", 
+  "javax.swing.text.LayeredHighlighter.LayerPainter" 
+       ]);
+
+ClazzLoader.jarClasspath (ClazzLoader.getJ2SLibBase() + "javax/swing/JComponent.js", [
+  "javax.swing.JComponent", 
+  "javax.swing.JComponent.KeyboardState", 
+  "javax.swing.JComponent.ActionStandin", 
+  "javax.swing.JComponent.IntVector" 
+       ]);
+
+ClazzLoader.jarClasspath (ClazzLoader.getJ2SLibBase() + "sun/util/resources/LocaleData.js", [
+  "sun.util.resources.LocaleData", 
+  "sun.util.resources.LocaleDataResourceBundleControl"
+       ]);
+
+ClazzLoader.jarClasspath (ClazzLoader.getJ2SLibBase() + "java/text/DateFormat.js", [
+  "java.text.DateFormat", 
+  "java.text.DateFormat.Field"
+       ]);
+
+  if (Jmol._debugCode)
+    return;
+
+       var     base = ClazzLoader.getJ2SLibBase() + "core/";
+
+// note - we don't need to list ALL the classes -- only the ones that are entry points.
+
+       ClazzLoader.jarClasspath (base + "corejalview.z.js",    [
+  "jalview.javascript.JalviewLiteJsApi"
+       ]);
+
+}) (Clazz._Loader);
+window["java.registered"] = true;
diff --git a/site/j2s/awt2swing/Util.js b/site/j2s/awt2swing/Util.js
new file mode 100644 (file)
index 0000000..eaf6bf6
--- /dev/null
@@ -0,0 +1,7 @@
+Clazz.declarePackage ("awt2swing");
+c$ = Clazz.declareType (awt2swing, "Util");
+c$.drawString = Clazz.defineMethod (c$, "drawString", 
+function (g, text, x, y) {
+{
+g.drawStringUnique(text, x, y);
+}}, "java.awt.Graphics,~S,~N,~N");
diff --git a/site/j2s/core/corejalview.js b/site/j2s/core/corejalview.js
new file mode 100644 (file)
index 0000000..89feb54
--- /dev/null
@@ -0,0 +1,72014 @@
+(function(Clazz
+,Clazz_getClassName
+,Clazz_newLongArray
+,Clazz_doubleToByte
+,Clazz_doubleToInt
+,Clazz_doubleToLong
+,Clazz_declarePackage
+,Clazz_instanceOf
+,Clazz_load
+,Clazz_instantialize
+,Clazz_decorateAsClass
+,Clazz_floatToInt
+,Clazz_floatToLong
+,Clazz_makeConstructor
+,Clazz_defineEnumConstant
+,Clazz_exceptionOf
+,Clazz_newIntArray
+,Clazz_defineStatics
+,Clazz_newFloatArray
+,Clazz_declareType
+,Clazz_prepareFields
+,Clazz_superConstructor
+,Clazz_newByteArray
+,Clazz_declareInterface
+,Clazz_p0p
+,Clazz_pu$h
+,Clazz_newShortArray
+,Clazz_innerTypeInstance
+,Clazz_isClassDefined
+,Clazz_prepareCallback
+,Clazz_newArray
+,Clazz_castNullAs
+,Clazz_floatToShort
+,Clazz_superCall
+,Clazz_decorateAsType
+,Clazz_newBooleanArray
+,Clazz_newCharArray
+,Clazz_implementOf
+,Clazz_newDoubleArray
+,Clazz_overrideConstructor
+,Clazz_clone
+,Clazz_doubleToShort
+,Clazz_getInheritedLevel
+,Clazz_getParamsType
+,Clazz_isAF
+,Clazz_isAI
+,Clazz_isAS
+,Clazz_isASS
+,Clazz_isAP
+,Clazz_isAFloat
+,Clazz_isAII
+,Clazz_isAFF
+,Clazz_isAFFF
+,Clazz_tryToSearchAndExecute
+,Clazz_getStackTrace
+,Clazz_inheritArgs
+,Clazz_alert
+,Clazz_defineMethod
+,Clazz_overrideMethod
+,Clazz_declareAnonymous
+,Clazz_checkPrivateMethod
+,Clazz_cloneFinals
+){
+var $t$;
+//var c$;
+Clazz_load (["java.io.Reader"], "java.io.InputStreamReader", ["java.lang.NullPointerException"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.$in = null;
+this.isOpen = true;
+this.charsetName = null;
+this.isUTF8 = false;
+this.bytearr = null;
+this.pos = 0;
+Clazz_instantialize (this, arguments);
+}, java.io, "InputStreamReader", java.io.Reader);
+Clazz_makeConstructor (c$, 
+function ($in) {
+//just sets lock Clazz_superConstructor (this, java.io.InputStreamReader, [$in]);
+this.$in = $in;
+var charsetName = (arguments.length > 1 ? arguments[1] : "UTF-8");
+
+this.charsetName = charsetName;
+if (!(this.isUTF8 = "UTF-8".equals (charsetName)) && !"ISO-8859-1".equals (charsetName)) throw  new NullPointerException ("charsetName");
+}, "java.io.InputStream");
+Clazz_defineMethod (c$, "getEncoding", 
+function () {
+return this.charsetName;
+});
+Clazz_overrideMethod (c$, "read", 
+function (cbuf, offset, length) {
+if (this.bytearr == null || this.bytearr.length < length) this.bytearr =  Clazz_newByteArray (length, 0);
+var c;
+var char2;
+var char3;
+var byteCount = 0;
+var charCount = offset;
+var byteLen = this.$in.read (this.bytearr, this.pos, length - this.pos);
+var nAvail = this.$in.available ();
+if (byteLen < 0) return -1;
+var nMax = byteLen;
+while (byteCount < nMax) {
+c = this.bytearr[byteCount] & 0xff;
+if (this.isUTF8) switch (c >> 4) {
+case 0xC:
+case 0xD:
+if (byteCount + 1 >= byteLen) {
+if (nAvail >= 1) {
+nMax = byteCount;
+continue;
+}} else if (((char2 = this.bytearr[byteCount + 1]) & 0xC0) == 0x80) {
+cbuf[charCount++] = String.fromCharCode (((c & 0x1F) << 6) | (char2 & 0x3F));
+byteCount += 2;
+continue;
+}this.isUTF8 = false;
+break;
+case 0xE:
+if (byteCount + 2 >= byteLen) {
+if (nAvail >= 2) {
+nMax = byteCount;
+continue;
+}} else if (((char2 = this.bytearr[byteCount + 1]) & 0xC0) == 0x80 && ((char3 = this.bytearr[byteCount + 2]) & 0xC0) == 0x80) {
+cbuf[charCount++] = String.fromCharCode (((c & 0x0F) << 12) | ((char2 & 0x3F) << 6) | (char3 & 0x3F));
+byteCount += 3;
+continue;
+}this.isUTF8 = false;
+break;
+}
+byteCount++;
+cbuf[charCount++] = String.fromCharCode (c);
+}
+this.pos = byteLen - byteCount;
+for (var i = 0; i < this.pos; i++) {
+this.bytearr[i] = this.bytearr[byteCount++];
+}
+return charCount - offset;
+}, "~A,~N,~N");
+Clazz_overrideMethod (c$, "ready", 
+function () {
+return this.isOpen;
+});
+Clazz_overrideMethod (c$, "close", 
+function () {
+this.$in.close ();
+this.isOpen = false;
+});
+});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["java.awt.event.FocusListener", "$.MouseListener", "javax.swing.ActionMap", "$.InputMap", "$.JComponent", "$.Scrollable", "javax.swing.event.CaretEvent", "$.ChangeListener", "javax.swing.text.Keymap", "javax.swing.DropMode"], "javax.swing.text.JTextComponent", ["java.io.IOException", "java.lang.Boolean", "$.Character", "$.IllegalArgumentException", "java.util.HashMap", "$.Hashtable", "$.Vector", "java.awt.Point", "javax.swing.Action", "$.JViewport", "$.UIManager", "javax.swing.event.CaretListener", "javax.swing.text.DefaultEditorKit", "$.JSMinimalAbstractDocument", "jssun.awt.AppContext", "swingjs.JSToolkit"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.model = null;
+this.caret = null;
+this.navigationFilter = null;
+this.highlighter = null;
+this.keymap = null;
+this.caretEvent = null;
+this.caretColor = null;
+this.selectionColor = null;
+this.selectedTextColor = null;
+this.disabledTextColor = null;
+this.editable = false;
+this.margin = null;
+this.focusAccelerator = '\0';
+this.dragEnabled = false;
+this.dropMode = null;
+this.composedTextAttribute = null;
+this.composedTextContent = null;
+this.composedTextStart = null;
+this.composedTextEnd = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text, "JTextComponent", javax.swing.JComponent, javax.swing.Scrollable);
+Clazz_prepareFields (c$, function () {
+this.dropMode = javax.swing.DropMode.USE_SELECTION;
+});
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.JTextComponent);
+this.enableEvents (2056);
+this.caretEvent =  new javax.swing.text.JTextComponent.MutableCaretEvent (this);
+this.addMouseListener (this.caretEvent);
+this.addFocusListener (this.caretEvent);
+this.setEditable (true);
+this.setDragEnabled (false);
+this.setLayout (null);
+this.updateUI ();
+});
+Clazz_overrideMethod (c$, "getUI", 
+function () {
+return this.ui;
+});
+Clazz_overrideMethod (c$, "updateUI", 
+function () {
+this.setUI (javax.swing.UIManager.getUI (this));
+this.invalidate ();
+});
+Clazz_defineMethod (c$, "addCaretListener", 
+function (listener) {
+this.listenerList.add (javax.swing.event.CaretListener, listener);
+}, "javax.swing.event.CaretListener");
+Clazz_defineMethod (c$, "removeCaretListener", 
+function (listener) {
+this.listenerList.remove (javax.swing.event.CaretListener, listener);
+}, "javax.swing.event.CaretListener");
+Clazz_defineMethod (c$, "getCaretListeners", 
+function () {
+return this.listenerList.getListeners (javax.swing.event.CaretListener);
+});
+Clazz_defineMethod (c$, "fireCaretUpdate", 
+function (e) {
+var listeners = this.listenerList.getListenerList ();
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === javax.swing.event.CaretListener) {
+(listeners[i + 1]).caretUpdate (e);
+}}
+}, "javax.swing.event.CaretEvent");
+Clazz_defineMethod (c$, "setDocument", 
+function (doc) {
+var old = this.model;
+try {
+this.model = doc;
+this.firePropertyChangeObject ("document", old, doc);
+} finally {
+}
+this.revalidate ();
+this.repaint ();
+}, "javax.swing.text.Document");
+Clazz_defineMethod (c$, "getDocument", 
+function () {
+return this.model;
+});
+Clazz_defineMethod (c$, "getActions", 
+function () {
+if (this.getUI () == null) return null;
+return this.getUI ().getEditorKit (this).getActions ();
+});
+Clazz_defineMethod (c$, "setMargin", 
+function (m) {
+var old = this.margin;
+this.margin = m;
+this.firePropertyChangeObject ("margin", old, m);
+this.invalidate ();
+}, "java.awt.Insets");
+Clazz_defineMethod (c$, "getMargin", 
+function () {
+return this.margin;
+});
+Clazz_defineMethod (c$, "setNavigationFilter", 
+function (filter) {
+this.navigationFilter = filter;
+}, "javax.swing.text.NavigationFilter");
+Clazz_defineMethod (c$, "getNavigationFilter", 
+function () {
+return this.navigationFilter;
+});
+Clazz_defineMethod (c$, "getCaret", 
+function () {
+return this.caret;
+});
+Clazz_defineMethod (c$, "setCaret", 
+function (c) {
+if (this.caret != null) {
+this.caret.removeChangeListener (this.caretEvent);
+this.caret.deinstall (this);
+}var old = this.caret;
+this.caret = c;
+if (this.caret != null) {
+this.caret.install (this);
+this.caret.addChangeListener (this.caretEvent);
+}this.firePropertyChangeObject ("caret", old, this.caret);
+}, "javax.swing.text.Caret");
+Clazz_defineMethod (c$, "getHighlighter", 
+function () {
+return this.highlighter;
+});
+Clazz_defineMethod (c$, "setHighlighter", 
+function (h) {
+if (this.highlighter != null) {
+this.highlighter.deinstall (this);
+}var old = this.highlighter;
+this.highlighter = h;
+if (this.highlighter != null) {
+this.highlighter.install (this);
+}this.firePropertyChangeObject ("highlighter", old, h);
+}, "javax.swing.text.Highlighter");
+Clazz_defineMethod (c$, "setKeymap", 
+function (map) {
+var old = this.keymap;
+this.keymap = map;
+this.firePropertyChangeObject ("keymap", old, this.keymap);
+this.updateInputMap (old, map);
+}, "javax.swing.text.Keymap");
+Clazz_defineMethod (c$, "setDragEnabled", 
+function (b) {
+this.dragEnabled = b;
+}, "~B");
+Clazz_defineMethod (c$, "getDragEnabled", 
+function () {
+return this.dragEnabled;
+});
+Clazz_defineMethod (c$, "setDropMode", 
+function (dropMode) {
+if (dropMode != null) {
+switch (dropMode) {
+case javax.swing.DropMode.USE_SELECTION:
+case javax.swing.DropMode.INSERT:
+this.dropMode = dropMode;
+return;
+}
+}throw  new IllegalArgumentException (dropMode + ": Unsupported drop mode for text");
+}, "javax.swing.DropMode");
+Clazz_defineMethod (c$, "getDropMode", 
+function () {
+return this.dropMode;
+});
+Clazz_defineMethod (c$, "updateInputMap", 
+function (oldKm, newKm) {
+var km = this.getInputMap (0);
+var last = km;
+while (km != null && !(Clazz_instanceOf (km, javax.swing.text.JTextComponent.KeymapWrapper))) {
+last = km;
+km = km.getParent ();
+}
+if (km != null) {
+if (newKm == null) {
+if (last !== km) {
+last.setParent (km.getParent ());
+} else {
+last.setParent (null);
+}} else {
+var newKM =  new javax.swing.text.JTextComponent.KeymapWrapper (newKm);
+last.setParent (newKM);
+if (last !== km) {
+newKM.setParent (km.getParent ());
+}}} else if (newKm != null) {
+km = this.getInputMap (0);
+if (km != null) {
+var newKM =  new javax.swing.text.JTextComponent.KeymapWrapper (newKm);
+newKM.setParent (km.getParent ());
+km.setParent (newKM);
+}}var am = this.getActionMap ();
+var lastAM = am;
+while (am != null && !(Clazz_instanceOf (am, javax.swing.text.JTextComponent.KeymapActionMap))) {
+lastAM = am;
+am = am.getParent ();
+}
+if (am != null) {
+if (newKm == null) {
+if (lastAM !== am) {
+lastAM.setParent (am.getParent ());
+} else {
+lastAM.setParent (null);
+}} else {
+var newAM =  new javax.swing.text.JTextComponent.KeymapActionMap (newKm);
+lastAM.setParent (newAM);
+if (lastAM !== am) {
+newAM.setParent (am.getParent ());
+}}} else if (newKm != null) {
+am = this.getActionMap ();
+if (am != null) {
+var newAM =  new javax.swing.text.JTextComponent.KeymapActionMap (newKm);
+newAM.setParent (am.getParent ());
+am.setParent (newAM);
+}}}, "javax.swing.text.Keymap,javax.swing.text.Keymap");
+Clazz_defineMethod (c$, "getKeymap", 
+function () {
+return this.keymap;
+});
+c$.addKeymap = Clazz_defineMethod (c$, "addKeymap", 
+function (nm, parent) {
+var map =  new javax.swing.text.JTextComponent.DefaultKeymap (nm, parent);
+if (nm != null) {
+javax.swing.text.JTextComponent.getKeymapTable ().put (nm, map);
+}return map;
+}, "~S,javax.swing.text.Keymap");
+c$.removeKeymap = Clazz_defineMethod (c$, "removeKeymap", 
+function (nm) {
+return javax.swing.text.JTextComponent.getKeymapTable ().remove (nm);
+}, "~S");
+c$.getKeymap = Clazz_defineMethod (c$, "getKeymap", 
+function (nm) {
+return javax.swing.text.JTextComponent.getKeymapTable ().get (nm);
+}, "~S");
+c$.getKeymapTable = Clazz_defineMethod (c$, "getKeymapTable", 
+ function () {
+{
+var appContext = jssun.awt.AppContext.getAppContext ();
+var keymapTable = appContext.get (javax.swing.text.JTextComponent.KEYMAP_TABLE);
+if (keymapTable == null) {
+keymapTable =  new java.util.HashMap (17);
+appContext.put (javax.swing.text.JTextComponent.KEYMAP_TABLE, keymapTable);
+var binding = javax.swing.text.JTextComponent.addKeymap ("default", null);
+binding.setDefaultAction ( new javax.swing.text.DefaultEditorKit.DefaultKeyTypedAction ());
+}return keymapTable;
+}});
+c$.loadKeymap = Clazz_defineMethod (c$, "loadKeymap", 
+function (map, bindings, actions) {
+var h =  new java.util.Hashtable ();
+for (var i = 0; i < actions.length; i++) {
+var a = actions[i];
+var value = a.getValue ("Name");
+h.put ((value != null ? value : ""), a);
+}
+for (var i = 0; i < bindings.length; i++) {
+var a = h.get (bindings[i].actionName);
+if (a != null) {
+map.addActionForKeyStroke (bindings[i].key, a);
+}}
+}, "javax.swing.text.Keymap,~A,~A");
+Clazz_defineMethod (c$, "getCaretColor", 
+function () {
+return this.caretColor;
+});
+Clazz_defineMethod (c$, "setCaretColor", 
+function (c) {
+var old = this.caretColor;
+this.caretColor = c;
+this.firePropertyChangeObject ("caretColor", old, this.caretColor);
+}, "java.awt.Color");
+Clazz_defineMethod (c$, "getSelectionColor", 
+function () {
+return this.selectionColor;
+});
+Clazz_defineMethod (c$, "setSelectionColor", 
+function (c) {
+var old = this.selectionColor;
+this.selectionColor = c;
+this.firePropertyChangeObject ("selectionColor", old, this.selectionColor);
+}, "java.awt.Color");
+Clazz_defineMethod (c$, "getSelectedTextColor", 
+function () {
+return this.selectedTextColor;
+});
+Clazz_defineMethod (c$, "setSelectedTextColor", 
+function (c) {
+var old = this.selectedTextColor;
+this.selectedTextColor = c;
+this.firePropertyChangeObject ("selectedTextColor", old, this.selectedTextColor);
+}, "java.awt.Color");
+Clazz_defineMethod (c$, "getDisabledTextColor", 
+function () {
+return this.disabledTextColor;
+});
+Clazz_defineMethod (c$, "setDisabledTextColor", 
+function (c) {
+var old = this.disabledTextColor;
+this.disabledTextColor = c;
+this.firePropertyChangeObject ("disabledTextColor", old, this.disabledTextColor);
+}, "java.awt.Color");
+Clazz_defineMethod (c$, "replaceSelection", 
+function (content) {
+var doc = this.getDocument ();
+if (doc != null) {
+try {
+var composedTextSaved = this.saveComposedText (this.caret.getDot ());
+var p0 = Math.min (this.caret.getDot (), this.caret.getMark ());
+var p1 = Math.max (this.caret.getDot (), this.caret.getMark ());
+if (Clazz_instanceOf (doc, javax.swing.text.JSMinimalAbstractDocument)) {
+(doc).replace (p0, p1 - p0, content, null);
+} else {
+if (p0 != p1) {
+doc.remove (p0, p1 - p0);
+}if (content != null && content.length > 0) {
+doc.insertString (p0, content, null);
+}}if (composedTextSaved) {
+this.restoreComposedText ();
+}} catch (e) {
+if (Clazz_exceptionOf (e, javax.swing.text.BadLocationException)) {
+swingjs.JSToolkit.alert ("SWINGJS BAD LOCATION EXCEPTION (replace):" + e.getMessage () + swingjs.JSToolkit.getStackTrace (-10));
+} else {
+throw e;
+}
+}
+}}, "~S");
+Clazz_defineMethod (c$, "getText", 
+function (offs, len) {
+return this.getDocument ().getText (offs, len);
+}, "~N,~N");
+Clazz_defineMethod (c$, "modelToView", 
+function (pos) {
+return this.getUI ().modelToView (this, pos);
+}, "~N");
+Clazz_defineMethod (c$, "viewToModel", 
+function (pt) {
+return this.getUI ().viewToModel (this, pt);
+}, "java.awt.Point");
+Clazz_defineMethod (c$, "cut", 
+function () {
+});
+Clazz_defineMethod (c$, "copy", 
+function () {
+});
+Clazz_defineMethod (c$, "paste", 
+function () {
+});
+Clazz_defineMethod (c$, "moveCaretPosition", 
+function (pos) {
+var doc = this.getDocument ();
+if (doc != null) {
+if (pos > doc.getLength () || pos < 0) {
+throw  new IllegalArgumentException ("bad position: " + pos);
+}this.caret.moveDot (pos);
+}}, "~N");
+Clazz_defineMethod (c$, "setFocusAccelerator", 
+function (aKey) {
+aKey = Character.toUpperCase (aKey);
+var old = this.focusAccelerator;
+this.focusAccelerator = aKey;
+this.firePropertyChange ("focusAcceleratorKey", old, this.focusAccelerator);
+this.firePropertyChange ("focusAccelerator", old, this.focusAccelerator);
+}, "~S");
+Clazz_defineMethod (c$, "getFocusAccelerator", 
+function () {
+return this.focusAccelerator;
+});
+Clazz_defineMethod (c$, "read", 
+function ($in, desc) {
+var kit = this.getUI ().getEditorKit (this);
+var doc = kit.createDefaultDocument ();
+if (desc != null) {
+doc.putProperty ("stream", desc);
+}try {
+kit.read ($in, doc, 0);
+this.setDocument (doc);
+} catch (e) {
+if (Clazz_exceptionOf (e, javax.swing.text.BadLocationException)) {
+throw  new java.io.IOException (e.getMessage ());
+} else {
+throw e;
+}
+}
+}, "java.io.Reader,~O");
+Clazz_defineMethod (c$, "write", 
+function (out) {
+var doc = this.getDocument ();
+try {
+this.getUI ().getEditorKit (this).write (out, doc, 0, doc.getLength ());
+} catch (e) {
+if (Clazz_exceptionOf (e, javax.swing.text.BadLocationException)) {
+throw  new java.io.IOException (e.getMessage ());
+} else {
+throw e;
+}
+}
+}, "java.io.Writer");
+Clazz_defineMethod (c$, "removeNotify", 
+function () {
+Clazz_superCall (this, javax.swing.text.JTextComponent, "removeNotify", []);
+if (javax.swing.text.JTextComponent.getFocusedComponent () === this) {
+jssun.awt.AppContext.getAppContext ().remove (javax.swing.text.JTextComponent.FOCUSED_COMPONENT);
+}});
+Clazz_defineMethod (c$, "setCaretPosition", 
+function (position) {
+var doc = this.getDocument ();
+if (doc != null) {
+if (position > doc.getLength () || position < 0) {
+throw  new IllegalArgumentException ("bad position: " + position);
+}this.caret.setDot (position);
+}}, "~N");
+Clazz_defineMethod (c$, "getCaretPosition", 
+function () {
+return this.caret.getDot ();
+});
+Clazz_defineMethod (c$, "setText", 
+function (t) {
+try {
+var doc = this.getDocument ();
+if (Clazz_instanceOf (doc, javax.swing.text.JSMinimalAbstractDocument)) {
+(doc).replace (0, doc.getLength (), t, null);
+} else {
+doc.remove (0, doc.getLength ());
+doc.insertString (0, t, null);
+}} catch (e) {
+if (Clazz_exceptionOf (e, javax.swing.text.BadLocationException)) {
+swingjs.JSToolkit.alert ("SWINGJS BAD LOCATION EXCEPTION (setText):" + e.getMessage () + swingjs.JSToolkit.getStackTrace (-10));
+} else {
+throw e;
+}
+}
+}, "~S");
+Clazz_defineMethod (c$, "getText", 
+function () {
+var doc = this.getDocument ();
+var txt;
+try {
+txt = doc.getText (0, doc.getLength ());
+} catch (e) {
+if (Clazz_exceptionOf (e, javax.swing.text.BadLocationException)) {
+txt = null;
+} else {
+throw e;
+}
+}
+return txt;
+});
+Clazz_defineMethod (c$, "getSelectedText", 
+function () {
+var txt = null;
+var p0 = Math.min (this.caret.getDot (), this.caret.getMark ());
+var p1 = Math.max (this.caret.getDot (), this.caret.getMark ());
+if (p0 != p1) {
+try {
+var doc = this.getDocument ();
+txt = doc.getText (p0, p1 - p0);
+} catch (e) {
+if (Clazz_exceptionOf (e, javax.swing.text.BadLocationException)) {
+throw  new IllegalArgumentException (e.getMessage ());
+} else {
+throw e;
+}
+}
+}return txt;
+});
+Clazz_defineMethod (c$, "isEditable", 
+function () {
+return this.editable;
+});
+Clazz_defineMethod (c$, "setEditable", 
+function (b) {
+if (b != this.editable) {
+var oldVal = this.editable;
+this.editable = b;
+this.firePropertyChangeObject ("editable", Boolean.$valueOf (oldVal), Boolean.$valueOf (this.editable));
+this.repaint ();
+}}, "~B");
+Clazz_defineMethod (c$, "getSelectionStart", 
+function () {
+var start = Math.min (this.caret.getDot (), this.caret.getMark ());
+return start;
+});
+Clazz_defineMethod (c$, "setSelectionStart", 
+function (selectionStart) {
+this.select (selectionStart, this.getSelectionEnd ());
+}, "~N");
+Clazz_defineMethod (c$, "getSelectionEnd", 
+function () {
+var end = Math.max (this.caret.getDot (), this.caret.getMark ());
+return end;
+});
+Clazz_defineMethod (c$, "setSelectionEnd", 
+function (selectionEnd) {
+this.select (this.getSelectionStart (), selectionEnd);
+}, "~N");
+Clazz_defineMethod (c$, "select", 
+function (selectionStart, selectionEnd) {
+var docLength = this.getDocument ().getLength ();
+if (selectionStart < 0) {
+selectionStart = 0;
+}if (selectionStart > docLength) {
+selectionStart = docLength;
+}if (selectionEnd > docLength) {
+selectionEnd = docLength;
+}if (selectionEnd < selectionStart) {
+selectionEnd = selectionStart;
+}this.setCaretPosition (selectionStart);
+this.moveCaretPosition (selectionEnd);
+}, "~N,~N");
+Clazz_defineMethod (c$, "selectAll", 
+function () {
+var doc = this.getDocument ();
+if (doc != null) {
+this.setCaretPosition (0);
+this.moveCaretPosition (doc.getLength ());
+}});
+Clazz_defineMethod (c$, "getToolTipText", 
+function (event) {
+var retValue = Clazz_superCall (this, javax.swing.text.JTextComponent, "getToolTipText", [event]);
+if (retValue == null) {
+var ui = this.getUI ();
+if (ui != null) {
+retValue = ui.getToolTipText (this,  new java.awt.Point (event.getX (), event.getY ()));
+}}return retValue;
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "getPreferredScrollableViewportSize", 
+function () {
+return this.getPreferredSize ();
+});
+Clazz_overrideMethod (c$, "getScrollableUnitIncrement", 
+function (visibleRect, orientation, direction) {
+switch (orientation) {
+case 1:
+return Clazz_doubleToInt (visibleRect.height / 10);
+case 0:
+return Clazz_doubleToInt (visibleRect.width / 10);
+default:
+throw  new IllegalArgumentException ("Invalid orientation: " + orientation);
+}
+}, "java.awt.Rectangle,~N,~N");
+Clazz_overrideMethod (c$, "getScrollableBlockIncrement", 
+function (visibleRect, orientation, direction) {
+switch (orientation) {
+case 1:
+return visibleRect.height;
+case 0:
+return visibleRect.width;
+default:
+throw  new IllegalArgumentException ("Invalid orientation: " + orientation);
+}
+}, "java.awt.Rectangle,~N,~N");
+Clazz_overrideMethod (c$, "getScrollableTracksViewportWidth", 
+function () {
+if (Clazz_instanceOf (this.getParent (), javax.swing.JViewport)) {
+return ((this.getParent ()).getWidth () > this.getPreferredSize ().width);
+}return false;
+});
+Clazz_overrideMethod (c$, "getScrollableTracksViewportHeight", 
+function () {
+if (Clazz_instanceOf (this.getParent (), javax.swing.JViewport)) {
+return ((this.getParent ()).getHeight () > this.getPreferredSize ().height);
+}return false;
+});
+Clazz_defineMethod (c$, "paramString", 
+function () {
+var editableString = (this.editable ? "true" : "false");
+var caretColorString = (this.caretColor != null ? this.caretColor.toString () : "");
+var selectionColorString = (this.selectionColor != null ? this.selectionColor.toString () : "");
+var selectedTextColorString = (this.selectedTextColor != null ? this.selectedTextColor.toString () : "");
+var disabledTextColorString = (this.disabledTextColor != null ? this.disabledTextColor.toString () : "");
+var marginString = (this.margin != null ? this.margin.toString () : "");
+return Clazz_superCall (this, javax.swing.text.JTextComponent, "paramString", []) + ",caretColor=" + caretColorString + ",disabledTextColor=" + disabledTextColorString + ",editable=" + editableString + ",margin=" + marginString + ",selectedTextColor=" + selectedTextColorString + ",selectionColor=" + selectionColorString;
+});
+c$.getFocusedComponent = Clazz_defineMethod (c$, "getFocusedComponent", 
+function () {
+return jssun.awt.AppContext.getAppContext ().get (javax.swing.text.JTextComponent.FOCUSED_COMPONENT);
+});
+Clazz_defineMethod (c$, "addInputMethodListener", 
+function (l) {
+Clazz_superCall (this, javax.swing.text.JTextComponent, "addInputMethodListener", [l]);
+if (l != null) {
+}}, "java.awt.event.InputMethodListener");
+Clazz_defineMethod (c$, "saveComposedText", 
+ function (pos) {
+if (this.composedTextExists ()) {
+var start = this.composedTextStart.getOffset ();
+var len = this.composedTextEnd.getOffset () - this.composedTextStart.getOffset ();
+if (pos >= start && pos <= start + len) {
+try {
+this.getDocument ().remove (start, len);
+return true;
+} catch (ble) {
+if (Clazz_exceptionOf (ble, javax.swing.text.BadLocationException)) {
+} else {
+throw ble;
+}
+}
+}}return false;
+}, "~N");
+Clazz_defineMethod (c$, "restoreComposedText", 
+ function () {
+var doc = this.getDocument ();
+try {
+doc.insertString (this.caret.getDot (), this.composedTextContent, this.composedTextAttribute);
+this.composedTextStart = doc.createPosition (this.caret.getDot () - this.composedTextContent.length);
+this.composedTextEnd = doc.createPosition (this.caret.getDot ());
+} catch (ble) {
+if (Clazz_exceptionOf (ble, javax.swing.text.BadLocationException)) {
+} else {
+throw ble;
+}
+}
+});
+Clazz_defineMethod (c$, "composedTextExists", 
+function () {
+return (this.composedTextStart != null);
+});
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.key = null;
+this.actionName = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.JTextComponent, "KeyBinding");
+Clazz_makeConstructor (c$, 
+function (a, b) {
+this.key = a;
+this.actionName = b;
+}, "javax.swing.KeyStroke,~S");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.nm = null;
+this.parent = null;
+this.bindings = null;
+this.defaultAction = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.JTextComponent, "DefaultKeymap", null, javax.swing.text.Keymap);
+Clazz_makeConstructor (c$, 
+function (a, b) {
+this.nm = a;
+this.parent = b;
+this.bindings =  new java.util.Hashtable ();
+}, "~S,javax.swing.text.Keymap");
+Clazz_defineMethod (c$, "getDefaultAction", 
+function () {
+if (this.defaultAction != null) {
+return this.defaultAction;
+}return (this.parent != null) ? this.parent.getDefaultAction () : null;
+});
+Clazz_overrideMethod (c$, "setDefaultAction", 
+function (a) {
+this.defaultAction = a;
+}, "javax.swing.Action");
+Clazz_overrideMethod (c$, "getName", 
+function () {
+return this.nm;
+});
+Clazz_defineMethod (c$, "getAction", 
+function (a) {
+var b = this.bindings.get (a);
+if ((b == null) && (this.parent != null)) {
+b = this.parent.getAction (a);
+}return b;
+}, "javax.swing.KeyStroke");
+Clazz_overrideMethod (c$, "getBoundKeyStrokes", 
+function () {
+var a =  new Array (this.bindings.size ());
+var b = 0;
+for (var c = this.bindings.keys (); c.hasMoreElements (); ) {
+a[b++] = c.nextElement ();
+}
+return a;
+});
+Clazz_overrideMethod (c$, "getBoundActions", 
+function () {
+var a =  new Array (this.bindings.size ());
+var b = 0;
+for (var c = this.bindings.elements (); c.hasMoreElements (); ) {
+a[b++] = c.nextElement ();
+}
+return a;
+});
+Clazz_defineMethod (c$, "getKeyStrokesForAction", 
+function (a) {
+if (a == null) {
+return null;
+}var b = null;
+var c = null;
+for (var d = this.bindings.keys (); d.hasMoreElements (); ) {
+var e = d.nextElement ();
+if (this.bindings.get (e) === a) {
+if (c == null) {
+c =  new java.util.Vector ();
+}c.addElement (e);
+}}
+if (this.parent != null) {
+var e = this.parent.getKeyStrokesForAction (a);
+if (e != null) {
+var f = 0;
+for (var g = e.length - 1; g >= 0; g--) {
+if (this.isLocallyDefined (e[g])) {
+e[g] = null;
+f++;
+}}
+if (f > 0 && f < e.length) {
+if (c == null) {
+c =  new java.util.Vector ();
+}for (var h = e.length - 1; h >= 0; h--) {
+if (e[h] != null) {
+c.addElement (e[h]);
+}}
+} else if (f == 0) {
+if (c == null) {
+b = e;
+} else {
+b =  new Array (c.size () + e.length);
+c.copyInto (b);
+System.arraycopy (e, 0, b, c.size (), e.length);
+c = null;
+}}}}if (c != null) {
+b =  new Array (c.size ());
+c.copyInto (b);
+}return b;
+}, "javax.swing.Action");
+Clazz_overrideMethod (c$, "isLocallyDefined", 
+function (a) {
+return this.bindings.containsKey (a);
+}, "javax.swing.KeyStroke");
+Clazz_overrideMethod (c$, "addActionForKeyStroke", 
+function (a, b) {
+this.bindings.put (a, b);
+}, "javax.swing.KeyStroke,javax.swing.Action");
+Clazz_overrideMethod (c$, "removeKeyStrokeBinding", 
+function (a) {
+this.bindings.remove (a);
+}, "javax.swing.KeyStroke");
+Clazz_overrideMethod (c$, "removeBindings", 
+function () {
+this.bindings.clear ();
+});
+Clazz_overrideMethod (c$, "getResolveParent", 
+function () {
+return this.parent;
+});
+Clazz_overrideMethod (c$, "setResolveParent", 
+function (a) {
+this.parent = a;
+}, "javax.swing.text.Keymap");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return "Keymap[" + this.nm + "]" + this.bindings;
+});
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.keymap = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.JTextComponent, "KeymapWrapper", javax.swing.InputMap);
+Clazz_makeConstructor (c$, 
+function (a) {
+Clazz_superConstructor (this, javax.swing.text.JTextComponent.KeymapWrapper, []);
+this.keymap = a;
+}, "javax.swing.text.Keymap");
+Clazz_defineMethod (c$, "keys", 
+function () {
+var a = Clazz_superCall (this, javax.swing.text.JTextComponent.KeymapWrapper, "keys", []);
+var b = this.keymap.getBoundKeyStrokes ();
+var c = (a == null) ? 0 : a.length;
+var d = (b == null) ? 0 : b.length;
+if (c == 0) {
+return b;
+}if (d == 0) {
+return a;
+}var e =  new Array (c + d);
+System.arraycopy (a, 0, e, 0, c);
+System.arraycopy (b, 0, e, c, d);
+return e;
+});
+Clazz_defineMethod (c$, "size", 
+function () {
+var a = this.keymap.getBoundKeyStrokes ();
+var b = (a == null) ? 0 : a.length;
+return Clazz_superCall (this, javax.swing.text.JTextComponent.KeymapWrapper, "size", []) + b;
+});
+Clazz_defineMethod (c$, "get", 
+function (a) {
+var b = this.keymap.getAction (a);
+if (b == null) {
+b = Clazz_superCall (this, javax.swing.text.JTextComponent.KeymapWrapper, "get", [a]);
+if (b == null && a.getKeyChar () != '\uffff' && this.keymap.getDefaultAction () != null) {
+b = javax.swing.text.JTextComponent.KeymapWrapper.DefaultActionKey;
+}}return b;
+}, "javax.swing.KeyStroke");
+c$.DefaultActionKey = c$.prototype.DefaultActionKey =  new Clazz._O ();
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.keymap = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.JTextComponent, "KeymapActionMap", javax.swing.ActionMap);
+Clazz_makeConstructor (c$, 
+function (a) {
+Clazz_superConstructor (this, javax.swing.text.JTextComponent.KeymapActionMap, []);
+this.keymap = a;
+}, "javax.swing.text.Keymap");
+Clazz_defineMethod (c$, "keys", 
+function () {
+var a = Clazz_superCall (this, javax.swing.text.JTextComponent.KeymapActionMap, "keys", []);
+var b = this.keymap.getBoundActions ();
+var c = (a == null) ? 0 : a.length;
+var d = (b == null) ? 0 : b.length;
+var e = (this.keymap.getDefaultAction () != null);
+if (e) {
+d++;
+}if (c == 0) {
+if (e) {
+var f =  new Array (d);
+if (d > 1) {
+System.arraycopy (b, 0, f, 0, d - 1);
+}f[d - 1] = javax.swing.text.JTextComponent.KeymapWrapper.DefaultActionKey;
+return f;
+}return b;
+}if (d == 0) {
+return a;
+}var f =  new Array (c + d);
+System.arraycopy (a, 0, f, 0, c);
+if (e) {
+if (d > 1) {
+System.arraycopy (b, 0, f, c, d - 1);
+}f[c + d - 1] = javax.swing.text.JTextComponent.KeymapWrapper.DefaultActionKey;
+} else {
+System.arraycopy (b, 0, f, c, d);
+}return f;
+});
+Clazz_defineMethod (c$, "size", 
+function () {
+var a = this.keymap.getBoundActions ();
+var b = (a == null) ? 0 : a.length;
+if (this.keymap.getDefaultAction () != null) {
+b++;
+}return Clazz_superCall (this, javax.swing.text.JTextComponent.KeymapActionMap, "size", []) + b;
+});
+Clazz_defineMethod (c$, "get", 
+function (a) {
+var b = Clazz_superCall (this, javax.swing.text.JTextComponent.KeymapActionMap, "get", [a]);
+if (b == null) {
+if (a === javax.swing.text.JTextComponent.KeymapWrapper.DefaultActionKey) {
+b = this.keymap.getDefaultAction ();
+} else if (Clazz_instanceOf (a, javax.swing.Action)) {
+b = a;
+}}return b;
+}, "~O");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.dragActive = false;
+this.dot = 0;
+this.mark = 0;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.JTextComponent, "MutableCaretEvent", javax.swing.event.CaretEvent, [javax.swing.event.ChangeListener, java.awt.event.FocusListener, java.awt.event.MouseListener]);
+Clazz_defineMethod (c$, "fire", 
+function () {
+var a = this.getSource ();
+if (a != null) {
+var b = a.getCaret ();
+if (b != null) {
+this.dot = b.getDot ();
+this.mark = b.getMark ();
+a.fireCaretUpdate (this);
+}}});
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return "dot=" + this.dot + "," + "mark=" + this.mark;
+});
+Clazz_overrideMethod (c$, "getDot", 
+function () {
+return this.dot;
+});
+Clazz_overrideMethod (c$, "getMark", 
+function () {
+return this.mark;
+});
+Clazz_overrideMethod (c$, "stateChanged", 
+function (a) {
+if (!this.dragActive) {
+this.fire ();
+}}, "javax.swing.event.ChangeEvent");
+Clazz_overrideMethod (c$, "focusGained", 
+function (a) {
+jssun.awt.AppContext.getAppContext ().put (javax.swing.text.JTextComponent.FOCUSED_COMPONENT, a.getSource ());
+}, "java.awt.event.FocusEvent");
+Clazz_overrideMethod (c$, "focusLost", 
+function (a) {
+}, "java.awt.event.FocusEvent");
+Clazz_overrideMethod (c$, "mousePressed", 
+function (a) {
+this.dragActive = true;
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (a) {
+this.dragActive = false;
+this.fire ();
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (a) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (a) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (a) {
+}, "java.awt.event.MouseEvent");
+c$ = Clazz_p0p ();
+Clazz_defineStatics (c$,
+"FOCUS_ACCELERATOR_KEY", "focusAcceleratorKey");
+c$.KEYMAP_TABLE = c$.prototype.KEYMAP_TABLE =  new Clazz._O ();
+c$.FOCUSED_COMPONENT = c$.prototype.FOCUSED_COMPONENT =  new Clazz._O ();
+Clazz_defineStatics (c$,
+"DEFAULT_KEYMAP", "default");
+});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_declareInterface (javax.swing.text, "Keymap");
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["javax.swing.text.EditorKit", "$.TextAction"], "javax.swing.text.DefaultEditorKit", ["java.io.InputStreamReader", "$.OutputStreamWriter", "java.awt.ComponentOrientation", "$.Point", "$.Rectangle", "javax.swing.UIManager", "javax.swing.text.BadLocationException", "$.DefaultCaret", "$.Position", "$.Segment", "$.Utilities", "swingjs.JSPlainDocument"], function () {
+c$ = Clazz_declareType (javax.swing.text, "DefaultEditorKit", javax.swing.text.EditorKit);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit, []);
+});
+Clazz_overrideMethod (c$, "getContentType", 
+function () {
+return "text/plain";
+});
+Clazz_overrideMethod (c$, "getViewFactory", 
+function () {
+return null;
+});
+Clazz_overrideMethod (c$, "getActions", 
+function () {
+return javax.swing.text.DefaultEditorKit.defaultActions;
+});
+Clazz_overrideMethod (c$, "createCaret", 
+function () {
+return null;
+});
+Clazz_overrideMethod (c$, "createDefaultDocument", 
+function () {
+return  new swingjs.JSPlainDocument ();
+});
+Clazz_defineMethod (c$, "read", 
+function ($in, doc, pos) {
+this.read ( new java.io.InputStreamReader ($in), doc, pos);
+}, "java.io.InputStream,javax.swing.text.Document,~N");
+Clazz_defineMethod (c$, "write", 
+function (out, doc, pos, len) {
+var osw =  new java.io.OutputStreamWriter (out);
+this.write (osw, doc, pos, len);
+osw.flush ();
+}, "java.io.OutputStream,javax.swing.text.Document,~N,~N");
+Clazz_defineMethod (c$, "getInputAttributes", 
+function () {
+return null;
+});
+Clazz_defineMethod (c$, "read", 
+function ($in, doc, pos) {
+var buff =  Clazz_newCharArray (4096, '\0');
+var nch;
+var lastWasCR = false;
+var isCRLF = false;
+var isCR = false;
+var last;
+var wasEmpty = (doc.getLength () == 0);
+var attr = this.getInputAttributes ();
+while ((nch = $in.read (buff, 0, buff.length)) != -1) {
+last = 0;
+for (var counter = 0; counter < nch; counter++) {
+switch (buff[counter]) {
+case '\r':
+if (lastWasCR) {
+isCR = true;
+if (counter == 0) {
+doc.insertString (pos, "\n", attr);
+pos++;
+} else {
+buff[counter - 1] = '\n';
+}} else {
+lastWasCR = true;
+}break;
+case '\n':
+if (lastWasCR) {
+if (counter > (last + 1)) {
+doc.insertString (pos,  String.instantialize (buff, last, counter - last - 1), attr);
+pos += (counter - last - 1);
+}lastWasCR = false;
+last = counter;
+isCRLF = true;
+}break;
+default:
+if (lastWasCR) {
+isCR = true;
+if (counter == 0) {
+doc.insertString (pos, "\n", attr);
+pos++;
+} else {
+buff[counter - 1] = '\n';
+}lastWasCR = false;
+}break;
+}
+}
+if (last < nch) {
+if (lastWasCR) {
+if (last < (nch - 1)) {
+doc.insertString (pos,  String.instantialize (buff, last, nch - last - 1), attr);
+pos += (nch - last - 1);
+}} else {
+doc.insertString (pos,  String.instantialize (buff, last, nch - last), attr);
+pos += (nch - last);
+}}}
+if (lastWasCR) {
+doc.insertString (pos, "\n", attr);
+isCR = true;
+}if (wasEmpty) {
+if (isCRLF) {
+doc.putProperty ("__EndOfLine__", "\r\n");
+} else if (isCR) {
+doc.putProperty ("__EndOfLine__", "\r");
+} else {
+doc.putProperty ("__EndOfLine__", "\n");
+}}}, "java.io.Reader,javax.swing.text.Document,~N");
+Clazz_defineMethod (c$, "write", 
+function (out, doc, pos, len) {
+if ((pos < 0) || ((pos + len) > doc.getLength ())) {
+throw  new javax.swing.text.BadLocationException ("DefaultEditorKit.write", pos);
+}var data =  new javax.swing.text.Segment ();
+var nleft = len;
+var offs = pos;
+var endOfLineProperty = doc.getProperty ("__EndOfLine__");
+if (endOfLineProperty == null) {
+try {
+endOfLineProperty = System.getProperty ("line.separator");
+} catch (se) {
+if (Clazz_exceptionOf (se, SecurityException)) {
+} else {
+throw se;
+}
+}
+}var endOfLine;
+if (Clazz_instanceOf (endOfLineProperty, String)) {
+endOfLine = endOfLineProperty;
+} else {
+endOfLine = null;
+}if (endOfLineProperty != null && !endOfLine.equals ("\n")) {
+while (nleft > 0) {
+var n = Math.min (nleft, 4096);
+doc.getText (offs, n, data);
+var last = data.offset;
+var array = data.array;
+var maxCounter = last + data.count;
+for (var counter = last; counter < maxCounter; counter++) {
+if (array[counter] == '\n') {
+if (counter > last) {
+out.write (array, last, counter - last);
+}out.write (endOfLine);
+last = counter + 1;
+}}
+if (maxCounter > last) {
+out.write (array, last, maxCounter - last);
+}offs += n;
+nleft -= n;
+}
+} else {
+while (nleft > 0) {
+var n = Math.min (nleft, 4096);
+doc.getText (offs, n, data);
+out.write (data.array, data.offset, data.count);
+offs += n;
+nleft -= n;
+}
+}out.flush ();
+}, "java.io.Writer,javax.swing.text.Document,~N,~N");
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.DefaultEditorKit, "DefaultKeyTypedAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.DefaultKeyTypedAction, ["default-typed"]);
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if ((b != null) && (a != null)) {
+if ((!b.isEditable ()) || (!b.isEnabled ())) {
+return;
+}var c = a.getActionCommand ();
+var d = a.getModifiers ();
+if ((c != null) && (c.length > 0) && ((d & 8) == (d & 2))) {
+var e = c.charAt (0);
+if ((e.charCodeAt (0) >= 0x20) && (e.charCodeAt (0) != 0x7F)) {
+b.replaceSelection (c);
+}}}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.DefaultEditorKit, "InsertContentAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.InsertContentAction, ["insert-content"]);
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if ((b != null) && (a != null)) {
+if ((!b.isEditable ()) || (!b.isEnabled ())) {
+javax.swing.UIManager.getLookAndFeel ().provideErrorFeedback (b);
+return;
+}var c = a.getActionCommand ();
+if (c != null) {
+b.replaceSelection (c);
+} else {
+javax.swing.UIManager.getLookAndFeel ().provideErrorFeedback (b);
+}}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.DefaultEditorKit, "InsertBreakAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.InsertBreakAction, ["insert-break"]);
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+if ((!b.isEditable ()) || (!b.isEnabled ())) {
+javax.swing.UIManager.getLookAndFeel ().provideErrorFeedback (b);
+return;
+}b.replaceSelection ("\n");
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.DefaultEditorKit, "InsertTabAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.InsertTabAction, ["insert-tab"]);
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+if ((!b.isEditable ()) || (!b.isEnabled ())) {
+javax.swing.UIManager.getLookAndFeel ().provideErrorFeedback (b);
+return;
+}b.replaceSelection ("\t");
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.DefaultEditorKit, "DeletePrevCharAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.DeletePrevCharAction, ["delete-previous"]);
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+var c = true;
+if ((b != null) && (b.isEditable ())) {
+try {
+var d = b.getDocument ();
+var e = b.getCaret ();
+var f = e.getDot ();
+var g = e.getMark ();
+if (f != g) {
+d.remove (Math.min (f, g), Math.abs (f - g));
+c = false;
+} else if (f > 0) {
+var h = 1;
+if (f > 1) {
+var i = d.getText (f - 2, 2);
+var j = i.charAt (0);
+var k = i.charAt (1);
+if (j >= '\uD800' && j <= '\uDBFF' && k >= '\uDC00' && k <= '\uDFFF') {
+h = 2;
+}}d.remove (f - h, h);
+c = false;
+}} catch (bl) {
+if (Clazz_exceptionOf (bl, javax.swing.text.BadLocationException)) {
+} else {
+throw bl;
+}
+}
+}if (c) {
+javax.swing.UIManager.getLookAndFeel ().provideErrorFeedback (b);
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.DefaultEditorKit, "DeleteNextCharAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.DeleteNextCharAction, ["delete-next"]);
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+var c = true;
+if ((b != null) && (b.isEditable ())) {
+try {
+var d = b.getDocument ();
+var e = b.getCaret ();
+var f = e.getDot ();
+var g = e.getMark ();
+if (f != g) {
+d.remove (Math.min (f, g), Math.abs (f - g));
+c = false;
+} else if (f < d.getLength ()) {
+var h = 1;
+if (f < d.getLength () - 1) {
+var i = d.getText (f, 2);
+var j = i.charAt (0);
+var k = i.charAt (1);
+if (j >= '\uD800' && j <= '\uDBFF' && k >= '\uDC00' && k <= '\uDFFF') {
+h = 2;
+}}d.remove (f, h);
+c = false;
+}} catch (bl) {
+if (Clazz_exceptionOf (bl, javax.swing.text.BadLocationException)) {
+} else {
+throw bl;
+}
+}
+}if (c) {
+javax.swing.UIManager.getLookAndFeel ().provideErrorFeedback (b);
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.DefaultEditorKit, "ReadOnlyAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.ReadOnlyAction, ["set-read-only"]);
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+b.setEditable (false);
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.DefaultEditorKit, "WritableAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.WritableAction, ["set-writable"]);
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+b.setEditable (true);
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.DefaultEditorKit, "CutAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.CutAction, ["cut-to-clipboard"]);
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+b.cut ();
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.DefaultEditorKit, "CopyAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.CopyAction, ["copy-to-clipboard"]);
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+b.copy ();
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.DefaultEditorKit, "PasteAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.PasteAction, ["paste-from-clipboard"]);
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+b.paste ();
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.DefaultEditorKit, "BeepAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.BeepAction, ["beep"]);
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+javax.swing.UIManager.getLookAndFeel ().provideErrorFeedback (b);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.select = false;
+this.direction = 0;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultEditorKit, "VerticalPageAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function (a, b, c) {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.VerticalPageAction, [a]);
+this.select = c;
+this.direction = b;
+}, "~S,~N,~B");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+var c = b.getVisibleRect ();
+var d =  new java.awt.Rectangle (c);
+var e = b.getCaretPosition ();
+var f = this.direction * b.getScrollableBlockIncrement (c, 1, this.direction);
+var g = c.y;
+var h = b.getCaret ();
+var i = h.getMagicCaretPosition ();
+if (e != -1) {
+try {
+var j = b.modelToView (e);
+var k = (i != null) ? i.x : j.x;
+var l = j.height;
+if (l > 0) {
+f = Clazz_doubleToInt (f / l) * l;
+}d.y = this.constrainY (b, g + f, c.height);
+var m;
+if (c.contains (j.x, j.y)) {
+m = b.viewToModel ( new java.awt.Point (k, this.constrainY (b, j.y + f, 0)));
+} else {
+if (this.direction == -1) {
+m = b.viewToModel ( new java.awt.Point (k, d.y));
+} else {
+m = b.viewToModel ( new java.awt.Point (k, d.y + c.height));
+}}m = this.constrainOffset (b, m);
+if (m != e) {
+this.adjustScrollIfNecessary (b, d, g, m);
+if (this.select) {
+b.moveCaretPosition (m);
+} else {
+b.setCaretPosition (m);
+}}} catch (ble) {
+if (Clazz_exceptionOf (ble, javax.swing.text.BadLocationException)) {
+} else {
+throw ble;
+}
+}
+} else {
+d.y = this.constrainY (b, g + f, c.height);
+}if (i != null) {
+h.setMagicCaretPosition (i);
+}b.scrollRectToVisible (d);
+}}, "java.awt.event.ActionEvent");
+Clazz_defineMethod (c$, "constrainY", 
+ function (a, b, c) {
+if (b < 0) {
+b = 0;
+} else if (b + c > a.getHeight ()) {
+b = Math.max (0, a.getHeight () - c);
+}return b;
+}, "javax.swing.text.JTextComponent,~N,~N");
+Clazz_defineMethod (c$, "constrainOffset", 
+ function (a, b) {
+var c = a.getDocument ();
+if ((b != 0) && (b > c.getLength ())) {
+b = c.getLength ();
+}if (b < 0) {
+b = 0;
+}return b;
+}, "javax.swing.text.JTextComponent,~N");
+Clazz_defineMethod (c$, "adjustScrollIfNecessary", 
+ function (a, b, c, d) {
+try {
+var e = a.modelToView (d);
+if (e.y < b.y || (e.y > (b.y + b.height)) || (e.y + e.height) > (b.y + b.height)) {
+var f;
+if (e.y < b.y) {
+f = e.y;
+} else {
+f = e.y + e.height - b.height;
+}if ((this.direction == -1 && f < c) || (this.direction == 1 && f > c)) {
+b.y = f;
+}}} catch (ble) {
+if (Clazz_exceptionOf (ble, javax.swing.text.BadLocationException)) {
+} else {
+throw ble;
+}
+}
+}, "javax.swing.text.JTextComponent,java.awt.Rectangle,~N,~N");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.select = false;
+this.left = false;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultEditorKit, "PageAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function (a, b, c) {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.PageAction, [a]);
+this.select = c;
+this.left = b;
+}, "~S,~B,~B");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+var c;
+var d =  new java.awt.Rectangle ();
+b.computeVisibleRect (d);
+if (this.left) {
+d.x = Math.max (0, d.x - d.width);
+} else {
+d.x += d.width;
+}c = b.getCaretPosition ();
+if (c != -1) {
+if (this.left) {
+c = b.viewToModel ( new java.awt.Point (d.x, d.y));
+} else {
+c = b.viewToModel ( new java.awt.Point (d.x + d.width - 1, d.y + d.height - 1));
+}var e = b.getDocument ();
+if ((c != 0) && (c > (e.getLength () - 1))) {
+c = e.getLength () - 1;
+} else if (c < 0) {
+c = 0;
+}if (this.select) b.moveCaretPosition (c);
+ else b.setCaretPosition (c);
+}}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.select = false;
+this.direction = 0;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultEditorKit, "NextVisualPositionAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function (a, b, c) {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.NextVisualPositionAction, [a]);
+this.select = b;
+this.direction = c;
+}, "~S,~B,~N");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+var c = b.getCaret ();
+var d = (Clazz_instanceOf (c, javax.swing.text.DefaultCaret)) ? c : null;
+var e = c.getDot ();
+var f =  new Array (1);
+var g = c.getMagicCaretPosition ();
+try {
+if (g == null && (this.direction == 1 || this.direction == 5)) {
+var h = (d != null) ? b.getUI ().modelToView (b, e, d.getDotBias ()) : b.modelToView (e);
+g =  new java.awt.Point (h.x, h.y);
+}var h = b.getNavigationFilter ();
+if (h != null) {
+e = h.getNextVisualPositionFrom (b, e, (d != null) ? d.getDotBias () : javax.swing.text.Position.Bias.Forward, this.direction, f);
+} else {
+e = b.getUI ().getNextVisualPositionFrom (b, e, (d != null) ? d.getDotBias () : javax.swing.text.Position.Bias.Forward, this.direction, f);
+}if (f[0] == null) {
+f[0] = javax.swing.text.Position.Bias.Forward;
+}if (d != null) {
+if (this.select) {
+d.moveDot (e, f[0]);
+} else {
+d.setDot (e, f[0]);
+}} else {
+if (this.select) {
+c.moveDot (e);
+} else {
+c.setDot (e);
+}}if (g != null && (this.direction == 1 || this.direction == 5)) {
+b.getCaret ().setMagicCaretPosition (g);
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, javax.swing.text.BadLocationException)) {
+} else {
+throw ex;
+}
+}
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.select = false;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultEditorKit, "BeginWordAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function (a, b) {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.BeginWordAction, [a]);
+this.select = b;
+}, "~S,~B");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+try {
+var c = b.getCaretPosition ();
+var d = javax.swing.text.Utilities.getWordStart (b, c);
+if (this.select) {
+b.moveCaretPosition (d);
+} else {
+b.setCaretPosition (d);
+}} catch (bl) {
+if (Clazz_exceptionOf (bl, javax.swing.text.BadLocationException)) {
+javax.swing.UIManager.getLookAndFeel ().provideErrorFeedback (b);
+} else {
+throw bl;
+}
+}
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.select = false;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultEditorKit, "EndWordAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function (a, b) {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.EndWordAction, [a]);
+this.select = b;
+}, "~S,~B");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+try {
+var c = b.getCaretPosition ();
+var d = javax.swing.text.Utilities.getWordEnd (b, c);
+if (this.select) {
+b.moveCaretPosition (d);
+} else {
+b.setCaretPosition (d);
+}} catch (bl) {
+if (Clazz_exceptionOf (bl, javax.swing.text.BadLocationException)) {
+javax.swing.UIManager.getLookAndFeel ().provideErrorFeedback (b);
+} else {
+throw bl;
+}
+}
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.select = false;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultEditorKit, "PreviousWordAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function (a, b) {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.PreviousWordAction, [a]);
+this.select = b;
+}, "~S,~B");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+var c = b.getCaretPosition ();
+var d = false;
+try {
+var e = javax.swing.text.Utilities.getParagraphElement (b, c);
+c = javax.swing.text.Utilities.getPreviousWord (b, c);
+if (c < e.getStartOffset ()) {
+c = javax.swing.text.Utilities.getParagraphElement (b, c).getEndOffset () - 1;
+}} catch (bl) {
+if (Clazz_exceptionOf (bl, javax.swing.text.BadLocationException)) {
+if (c != 0) {
+c = 0;
+} else {
+d = true;
+}} else {
+throw bl;
+}
+}
+if (!d) {
+if (this.select) {
+b.moveCaretPosition (c);
+} else {
+b.setCaretPosition (c);
+}} else {
+javax.swing.UIManager.getLookAndFeel ().provideErrorFeedback (b);
+}}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.select = false;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultEditorKit, "NextWordAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function (a, b) {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.NextWordAction, [a]);
+this.select = b;
+}, "~S,~B");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+var c = b.getCaretPosition ();
+var d = false;
+var e = c;
+var f = javax.swing.text.Utilities.getParagraphElement (b, c);
+try {
+c = javax.swing.text.Utilities.getNextWord (b, c);
+if (c >= f.getEndOffset () && e != f.getEndOffset () - 1) {
+c = f.getEndOffset () - 1;
+}} catch (bl) {
+if (Clazz_exceptionOf (bl, javax.swing.text.BadLocationException)) {
+var g = b.getDocument ().getLength ();
+if (c != g) {
+if (e != f.getEndOffset () - 1) {
+c = f.getEndOffset () - 1;
+} else {
+c = g;
+}} else {
+d = true;
+}} else {
+throw bl;
+}
+}
+if (!d) {
+if (this.select) {
+b.moveCaretPosition (c);
+} else {
+b.setCaretPosition (c);
+}} else {
+javax.swing.UIManager.getLookAndFeel ().provideErrorFeedback (b);
+}}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.select = false;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultEditorKit, "BeginLineAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function (a, b) {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.BeginLineAction, [a]);
+this.select = b;
+}, "~S,~B");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+try {
+var c = b.getCaretPosition ();
+var d = javax.swing.text.Utilities.getRowStart (b, c);
+if (this.select) {
+b.moveCaretPosition (d);
+} else {
+b.setCaretPosition (d);
+}} catch (bl) {
+if (Clazz_exceptionOf (bl, javax.swing.text.BadLocationException)) {
+javax.swing.UIManager.getLookAndFeel ().provideErrorFeedback (b);
+} else {
+throw bl;
+}
+}
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.select = false;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultEditorKit, "EndLineAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function (a, b) {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.EndLineAction, [a]);
+this.select = b;
+}, "~S,~B");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+try {
+var c = b.getCaretPosition ();
+var d = javax.swing.text.Utilities.getRowEnd (b, c);
+if (this.select) {
+b.moveCaretPosition (d);
+} else {
+b.setCaretPosition (d);
+}} catch (bl) {
+if (Clazz_exceptionOf (bl, javax.swing.text.BadLocationException)) {
+javax.swing.UIManager.getLookAndFeel ().provideErrorFeedback (b);
+} else {
+throw bl;
+}
+}
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.select = false;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultEditorKit, "BeginParagraphAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function (a, b) {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.BeginParagraphAction, [a]);
+this.select = b;
+}, "~S,~B");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+var c = b.getCaretPosition ();
+var d = javax.swing.text.Utilities.getParagraphElement (b, c);
+c = d.getStartOffset ();
+if (this.select) {
+b.moveCaretPosition (c);
+} else {
+b.setCaretPosition (c);
+}}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.select = false;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultEditorKit, "EndParagraphAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function (a, b) {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.EndParagraphAction, [a]);
+this.select = b;
+}, "~S,~B");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+var c = b.getCaretPosition ();
+var d = javax.swing.text.Utilities.getParagraphElement (b, c);
+c = Math.min (b.getDocument ().getLength (), d.getEndOffset ());
+if (this.select) {
+b.moveCaretPosition (c);
+} else {
+b.setCaretPosition (c);
+}}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.select = false;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultEditorKit, "BeginAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function (a, b) {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.BeginAction, [a]);
+this.select = b;
+}, "~S,~B");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+if (this.select) {
+b.moveCaretPosition (0);
+} else {
+b.setCaretPosition (0);
+}}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.select = false;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultEditorKit, "EndAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function (a, b) {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.EndAction, [a]);
+this.select = b;
+}, "~S,~B");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+var c = b.getDocument ();
+var d = c.getLength ();
+if (this.select) {
+b.moveCaretPosition (d);
+} else {
+b.setCaretPosition (d);
+}}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.start = null;
+this.end = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultEditorKit, "SelectWordAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.SelectWordAction, ["select-word"]);
+this.start =  new javax.swing.text.DefaultEditorKit.BeginWordAction ("pigdog", false);
+this.end =  new javax.swing.text.DefaultEditorKit.EndWordAction ("pigdog", true);
+});
+Clazz_defineMethod (c$, "actionPerformed", 
+function (a) {
+this.start.actionPerformed (a);
+this.end.actionPerformed (a);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.start = null;
+this.end = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultEditorKit, "SelectLineAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.SelectLineAction, ["select-line"]);
+this.start =  new javax.swing.text.DefaultEditorKit.BeginLineAction ("pigdog", false);
+this.end =  new javax.swing.text.DefaultEditorKit.EndLineAction ("pigdog", true);
+});
+Clazz_defineMethod (c$, "actionPerformed", 
+function (a) {
+this.start.actionPerformed (a);
+this.end.actionPerformed (a);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.start = null;
+this.end = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultEditorKit, "SelectParagraphAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.SelectParagraphAction, ["select-paragraph"]);
+this.start =  new javax.swing.text.DefaultEditorKit.BeginParagraphAction ("pigdog", false);
+this.end =  new javax.swing.text.DefaultEditorKit.EndParagraphAction ("pigdog", true);
+});
+Clazz_defineMethod (c$, "actionPerformed", 
+function (a) {
+this.start.actionPerformed (a);
+this.end.actionPerformed (a);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.DefaultEditorKit, "SelectAllAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.SelectAllAction, ["select-all"]);
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+var c = b.getDocument ();
+b.setCaretPosition (0);
+b.moveCaretPosition (c.getLength ());
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.DefaultEditorKit, "UnselectAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.UnselectAction, ["unselect"]);
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+b.setCaretPosition (b.getCaretPosition ());
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.DefaultEditorKit, "ToggleComponentOrientationAction", javax.swing.text.TextAction);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultEditorKit.ToggleComponentOrientationAction, ["toggle-componentOrientation"]);
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+var b = this.getTextComponent (a);
+if (b != null) {
+var c = b.getComponentOrientation ();
+var d;
+if (c === java.awt.ComponentOrientation.RIGHT_TO_LEFT) d = java.awt.ComponentOrientation.LEFT_TO_RIGHT;
+ else d = java.awt.ComponentOrientation.RIGHT_TO_LEFT;
+b.setComponentOrientation (d);
+b.repaint ();
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+Clazz_defineStatics (c$,
+"EndOfLineStringProperty", "__EndOfLine__",
+"insertContentAction", "insert-content",
+"insertBreakAction", "insert-break",
+"insertTabAction", "insert-tab",
+"deletePrevCharAction", "delete-previous",
+"deleteNextCharAction", "delete-next",
+"deleteNextWordAction", "delete-next-word",
+"deletePrevWordAction", "delete-previous-word",
+"readOnlyAction", "set-read-only",
+"writableAction", "set-writable",
+"cutAction", "cut-to-clipboard",
+"copyAction", "copy-to-clipboard",
+"pasteAction", "paste-from-clipboard",
+"beepAction", "beep",
+"pageUpAction", "page-up",
+"pageDownAction", "page-down",
+"selectionPageUpAction", "selection-page-up",
+"selectionPageDownAction", "selection-page-down",
+"selectionPageLeftAction", "selection-page-left",
+"selectionPageRightAction", "selection-page-right",
+"forwardAction", "caret-forward",
+"backwardAction", "caret-backward",
+"selectionForwardAction", "selection-forward",
+"selectionBackwardAction", "selection-backward",
+"upAction", "caret-up",
+"downAction", "caret-down",
+"selectionUpAction", "selection-up",
+"selectionDownAction", "selection-down",
+"beginWordAction", "caret-begin-word",
+"endWordAction", "caret-end-word",
+"selectionBeginWordAction", "selection-begin-word",
+"selectionEndWordAction", "selection-end-word",
+"previousWordAction", "caret-previous-word",
+"nextWordAction", "caret-next-word",
+"selectionPreviousWordAction", "selection-previous-word",
+"selectionNextWordAction", "selection-next-word",
+"beginLineAction", "caret-begin-line",
+"endLineAction", "caret-end-line",
+"selectionBeginLineAction", "selection-begin-line",
+"selectionEndLineAction", "selection-end-line",
+"beginParagraphAction", "caret-begin-paragraph",
+"endParagraphAction", "caret-end-paragraph",
+"selectionBeginParagraphAction", "selection-begin-paragraph",
+"selectionEndParagraphAction", "selection-end-paragraph",
+"beginAction", "caret-begin",
+"endAction", "caret-end",
+"selectionBeginAction", "selection-begin",
+"selectionEndAction", "selection-end",
+"selectWordAction", "select-word",
+"selectLineAction", "select-line",
+"selectParagraphAction", "select-paragraph",
+"selectAllAction", "select-all",
+"unselectAction", "unselect",
+"toggleComponentOrientationAction", "toggle-componentOrientation",
+"defaultKeyTypedAction", "default-typed");
+c$.defaultActions = c$.prototype.defaultActions =  Clazz_newArray (-1, [ new javax.swing.text.DefaultEditorKit.InsertContentAction (),  new javax.swing.text.DefaultEditorKit.DeletePrevCharAction (),  new javax.swing.text.DefaultEditorKit.DeleteNextCharAction (),  new javax.swing.text.DefaultEditorKit.ReadOnlyAction (),  new javax.swing.text.DefaultEditorKit.WritableAction (),  new javax.swing.text.DefaultEditorKit.CutAction (),  new javax.swing.text.DefaultEditorKit.CopyAction (),  new javax.swing.text.DefaultEditorKit.PasteAction (),  new javax.swing.text.DefaultEditorKit.VerticalPageAction ("page-up", -1, false),  new javax.swing.text.DefaultEditorKit.VerticalPageAction ("page-down", 1, false),  new javax.swing.text.DefaultEditorKit.VerticalPageAction ("selection-page-up", -1, true),  new javax.swing.text.DefaultEditorKit.VerticalPageAction ("selection-page-down", 1, true),  new javax.swing.text.DefaultEditorKit.PageAction ("selection-page-left", true, true),  new javax.swing.text.DefaultEditorKit.PageAction ("selection-page-right", false, true),  new javax.swing.text.DefaultEditorKit.InsertBreakAction (),  new javax.swing.text.DefaultEditorKit.BeepAction (),  new javax.swing.text.DefaultEditorKit.NextVisualPositionAction ("caret-forward", false, 3),  new javax.swing.text.DefaultEditorKit.NextVisualPositionAction ("caret-backward", false, 7),  new javax.swing.text.DefaultEditorKit.NextVisualPositionAction ("selection-forward", true, 3),  new javax.swing.text.DefaultEditorKit.NextVisualPositionAction ("selection-backward", true, 7),  new javax.swing.text.DefaultEditorKit.NextVisualPositionAction ("caret-up", false, 1),  new javax.swing.text.DefaultEditorKit.NextVisualPositionAction ("caret-down", false, 5),  new javax.swing.text.DefaultEditorKit.NextVisualPositionAction ("selection-up", true, 1),  new javax.swing.text.DefaultEditorKit.NextVisualPositionAction ("selection-down", true, 5),  new javax.swing.text.DefaultEditorKit.BeginWordAction ("caret-begin-word", false),  new javax.swing.text.DefaultEditorKit.EndWordAction ("caret-end-word", false),  new javax.swing.text.DefaultEditorKit.BeginWordAction ("selection-begin-word", true),  new javax.swing.text.DefaultEditorKit.EndWordAction ("selection-end-word", true),  new javax.swing.text.DefaultEditorKit.PreviousWordAction ("caret-previous-word", false),  new javax.swing.text.DefaultEditorKit.NextWordAction ("caret-next-word", false),  new javax.swing.text.DefaultEditorKit.PreviousWordAction ("selection-previous-word", true),  new javax.swing.text.DefaultEditorKit.NextWordAction ("selection-next-word", true),  new javax.swing.text.DefaultEditorKit.BeginLineAction ("caret-begin-line", false),  new javax.swing.text.DefaultEditorKit.EndLineAction ("caret-end-line", false),  new javax.swing.text.DefaultEditorKit.BeginLineAction ("selection-begin-line", true),  new javax.swing.text.DefaultEditorKit.EndLineAction ("selection-end-line", true),  new javax.swing.text.DefaultEditorKit.BeginParagraphAction ("caret-begin-paragraph", false),  new javax.swing.text.DefaultEditorKit.EndParagraphAction ("caret-end-paragraph", false),  new javax.swing.text.DefaultEditorKit.BeginParagraphAction ("selection-begin-paragraph", true),  new javax.swing.text.DefaultEditorKit.EndParagraphAction ("selection-end-paragraph", true),  new javax.swing.text.DefaultEditorKit.BeginAction ("caret-begin", false),  new javax.swing.text.DefaultEditorKit.EndAction ("caret-end", false),  new javax.swing.text.DefaultEditorKit.BeginAction ("selection-begin", true),  new javax.swing.text.DefaultEditorKit.EndAction ("selection-end", true),  new javax.swing.text.DefaultEditorKit.DefaultKeyTypedAction (),  new javax.swing.text.DefaultEditorKit.InsertTabAction (),  new javax.swing.text.DefaultEditorKit.SelectWordAction (),  new javax.swing.text.DefaultEditorKit.SelectLineAction (),  new javax.swing.text.DefaultEditorKit.SelectParagraphAction (),  new javax.swing.text.DefaultEditorKit.SelectAllAction (),  new javax.swing.text.DefaultEditorKit.UnselectAction (),  new javax.swing.text.DefaultEditorKit.ToggleComponentOrientationAction ()]);
+});
+Clazz_declarePackage ("javax.swing.text");
+c$ = Clazz_declareType (javax.swing.text, "EditorKit", null, Cloneable);
+Clazz_makeConstructor (c$, 
+function () {
+});
+Clazz_defineMethod (c$, "clone", 
+function () {
+var o;
+try {
+o = Clazz_superCall (this, javax.swing.text.EditorKit, "clone", []);
+} catch (cnse) {
+if (Clazz_exceptionOf (cnse, CloneNotSupportedException)) {
+o = null;
+} else {
+throw cnse;
+}
+}
+return o;
+});
+Clazz_defineMethod (c$, "install", 
+function (c) {
+}, "javax.swing.JEditorPane");
+Clazz_defineMethod (c$, "deinstall", 
+function (c) {
+}, "javax.swing.JEditorPane");
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["javax.swing.AbstractAction"], "javax.swing.text.TextAction", ["java.util.Hashtable", "javax.swing.text.JTextComponent"], function () {
+c$ = Clazz_declareType (javax.swing.text, "TextAction", javax.swing.AbstractAction);
+Clazz_defineMethod (c$, "getTextComponent", 
+function (e) {
+if (e != null) {
+var o = e.getSource ();
+if (Clazz_instanceOf (o, javax.swing.text.JTextComponent)) {
+return o;
+}}return this.getFocusedComponent ();
+}, "java.awt.event.ActionEvent");
+c$.augmentList = Clazz_defineMethod (c$, "augmentList", 
+function (list1, list2) {
+var h =  new java.util.Hashtable ();
+if (list1 != null) for (var i = 0; i < list1.length; i++) {
+var a = list1[i];
+var value = a.getValue ("Name");
+h.put ((value != null ? value : ""), a);
+}
+for (var i = 0; i < list2.length; i++) {
+var a = list2[i];
+var value = a.getValue ("Name");
+h.put ((value != null ? value : ""), a);
+}
+var actions =  new Array (h.size ());
+var index = 0;
+for (var e = h.elements (); e.hasMoreElements (); ) {
+actions[index++] = e.nextElement ();
+}
+return actions;
+}, "~A,~A");
+Clazz_defineMethod (c$, "getFocusedComponent", 
+function () {
+return javax.swing.text.JTextComponent.getFocusedComponent ();
+});
+});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["java.lang.Exception"], "javax.swing.text.BadLocationException", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.offs = 0;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text, "BadLocationException", Exception);
+Clazz_makeConstructor (c$, 
+function (s, offs) {
+Clazz_superConstructor (this, javax.swing.text.BadLocationException, [s]);
+this.offs = offs;
+}, "~S,~N");
+Clazz_defineMethod (c$, "offsetRequested", 
+function () {
+return this.offs;
+});
+});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["java.awt.Rectangle", "java.awt.event.ActionListener", "$.FocusListener", "$.MouseListener", "$.MouseMotionListener", "java.beans.PropertyChangeListener", "javax.swing.event.DocumentListener", "javax.swing.text.Caret", "$.NavigationFilter", "javax.swing.event.EventListenerList"], "javax.swing.text.DefaultCaret", ["java.lang.Boolean", "$.IllegalArgumentException", "java.awt.Point", "java.awt.event.ActionEvent", "javax.swing.SwingUtilities", "javax.swing.event.ChangeEvent", "$.ChangeListener", "javax.swing.text.AbstractDocument", "javax.swing.text.AbstractDocument.UndoRedoDocumentEvent", "javax.swing.text.DefaultEditorKit", "$.DefaultHighlighter", "$.Document", "$.Position", "$.Segment", "$.StateInvariantError"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.listenerList = null;
+this.changeEvent = null;
+this.component = null;
+this.updatePolicy = 0;
+this.visible = false;
+this.active = false;
+this.dot = 0;
+this.mark = 0;
+this.selectionTag = null;
+this.selectionVisible = false;
+this.magicCaretPosition = null;
+this.dotBias = null;
+this.markBias = null;
+this.dotLTR = false;
+this.markLTR = false;
+this.handler = null;
+this.flagXPoints = null;
+this.flagYPoints = null;
+this.filterBypass = null;
+this.ownsSelection = false;
+this.forceCaretPositionChange = false;
+this.shouldHandleRelease = false;
+this.selectedWordEvent = null;
+this.caretWidth = -1;
+this.aspectRatio = -1;
+if (!Clazz_isClassDefined ("javax.swing.text.DefaultCaret.SafeScroller")) {
+javax.swing.text.DefaultCaret.$DefaultCaret$SafeScroller$ ();
+}
+if (!Clazz_isClassDefined ("javax.swing.text.DefaultCaret.Handler")) {
+javax.swing.text.DefaultCaret.$DefaultCaret$Handler$ ();
+}
+if (!Clazz_isClassDefined ("javax.swing.text.DefaultCaret.DefaultFilterBypass")) {
+javax.swing.text.DefaultCaret.$DefaultCaret$DefaultFilterBypass$ ();
+}
+Clazz_instantialize (this, arguments);
+}, javax.swing.text, "DefaultCaret", java.awt.Rectangle, [javax.swing.text.Caret, java.awt.event.FocusListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
+Clazz_prepareFields (c$, function () {
+this.listenerList =  new javax.swing.event.EventListenerList ();
+this.handler = Clazz_innerTypeInstance (javax.swing.text.DefaultCaret.Handler, this, null);
+this.flagXPoints =  Clazz_newIntArray (3, 0);
+this.flagYPoints =  Clazz_newIntArray (3, 0);
+});
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultCaret, []);
+});
+Clazz_defineMethod (c$, "setUpdatePolicy", 
+function (policy) {
+this.updatePolicy = policy;
+}, "~N");
+Clazz_defineMethod (c$, "getUpdatePolicy", 
+function () {
+return this.updatePolicy;
+});
+Clazz_defineMethod (c$, "getComponent", 
+function () {
+return this.component;
+});
+Clazz_defineMethod (c$, "repaint", 
+function () {
+if (this.component != null) {
+this.component.repaint (this.x, this.y, this.width, this.height);
+}});
+Clazz_defineMethod (c$, "damage", 
+function (r) {
+if (r != null) {
+var damageWidth = this.getCaretWidth (r.height);
+this.x = r.x - 4 - (damageWidth >> 1);
+this.y = r.y;
+this.width = 9 + damageWidth;
+this.height = r.height;
+this.repaint ();
+}}, "java.awt.Rectangle");
+Clazz_defineMethod (c$, "adjustVisibility", 
+function (nloc) {
+if (this.component == null) {
+return;
+}if (javax.swing.SwingUtilities.isEventDispatchThread ()) {
+this.component.scrollRectToVisible (nloc);
+} else {
+javax.swing.SwingUtilities.invokeLater (Clazz_innerTypeInstance (javax.swing.text.DefaultCaret.SafeScroller, this, null, nloc));
+}}, "java.awt.Rectangle");
+Clazz_defineMethod (c$, "getSelectionPainter", 
+function () {
+return javax.swing.text.DefaultHighlighter.DefaultPainter;
+});
+Clazz_defineMethod (c$, "positionCaret", 
+function (e) {
+var pt =  new java.awt.Point (e.getX (), e.getY ());
+var biasRet =  new Array (1);
+var pos = this.component.getUI ().viewToModel (this.component, pt, biasRet);
+if (biasRet[0] == null) biasRet[0] = javax.swing.text.Position.Bias.Forward;
+if (pos >= 0) {
+this.setDot (pos, biasRet[0]);
+}}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "moveCaret", 
+function (e) {
+var pt =  new java.awt.Point (e.getX (), e.getY ());
+var biasRet =  new Array (1);
+var pos = this.component.getUI ().viewToModel (this.component, pt, biasRet);
+if (biasRet[0] == null) biasRet[0] = javax.swing.text.Position.Bias.Forward;
+if (pos >= 0) {
+this.moveDot (pos, biasRet[0]);
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "focusGained", 
+function (e) {
+if (this.component.isEnabled ()) {
+if (this.component.isEditable ()) {
+this.setVisible (true);
+}this.setSelectionVisible (true);
+}}, "java.awt.event.FocusEvent");
+Clazz_overrideMethod (c$, "focusLost", 
+function (e) {
+this.setVisible (false);
+this.setSelectionVisible (this.ownsSelection || e.isTemporary ());
+}, "java.awt.event.FocusEvent");
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (e) {
+var nclicks = e.getClickCount ();
+if (!e.isConsumed ()) {
+if (javax.swing.SwingUtilities.isLeftMouseButton (e)) {
+if (nclicks == 1) {
+this.selectedWordEvent = null;
+}} else if (javax.swing.SwingUtilities.isMiddleMouseButton (e)) {
+}}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mousePressed", 
+function (e) {
+if (javax.swing.SwingUtilities.isLeftMouseButton (e)) {
+if (e.isConsumed ()) {
+this.shouldHandleRelease = true;
+} else {
+this.shouldHandleRelease = false;
+this.adjustCaretAndFocus (e);
+}}}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "adjustCaretAndFocus", 
+function (e) {
+this.adjustCaret (e);
+this.adjustFocus (false);
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "adjustCaret", 
+ function (e) {
+if ((e.getModifiers () & 1) != 0 && this.getDot () != -1) {
+this.moveCaret (e);
+} else {
+this.positionCaret (e);
+}}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "adjustFocus", 
+ function (inWindow) {
+if ((this.component != null) && this.component.isEnabled () && this.component.isRequestFocusEnabled ()) {
+if (inWindow) {
+this.component.requestFocusInWindow ();
+} else {
+this.component.requestFocus ();
+}}}, "~B");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (e) {
+if (!e.isConsumed () && this.shouldHandleRelease && javax.swing.SwingUtilities.isLeftMouseButton (e)) {
+this.adjustCaretAndFocus (e);
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseDragged", 
+function (e) {
+if ((!e.isConsumed ()) && javax.swing.SwingUtilities.isLeftMouseButton (e)) {
+this.moveCaret (e);
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseMoved", 
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "paint", 
+function (g) {
+if (this.isVisible ()) {
+try {
+var mapper = this.component.getUI ();
+var r = mapper.modelToView (this.component, this.dot, this.dotBias);
+if ((r == null) || ((r.width == 0) && (r.height == 0))) {
+return;
+}if (this.width > 0 && this.height > 0 && !this._contains (r.x, r.y, r.width, r.height)) {
+var clip = g.getClipBounds ();
+if (clip != null && !clip.contains (this)) {
+this.repaint ();
+}this.damage (r);
+}g.setColor (this.component.getCaretColor ());
+var paintWidth = this.getCaretWidth (r.height);
+r.x -= paintWidth >> 1;
+g.fillRect (r.x, r.y, paintWidth, r.height);
+var doc = this.component.getDocument ();
+if (Clazz_instanceOf (doc, javax.swing.text.AbstractDocument)) {
+var bidi = (doc).getBidiRootElement ();
+if ((bidi != null) && (bidi.getElementCount () > 1)) {
+this.flagXPoints[0] = r.x + ((this.dotLTR) ? paintWidth : 0);
+this.flagYPoints[0] = r.y;
+this.flagXPoints[1] = this.flagXPoints[0];
+this.flagYPoints[1] = this.flagYPoints[0] + 4;
+this.flagXPoints[2] = this.flagXPoints[0] + ((this.dotLTR) ? 4 : -4);
+this.flagYPoints[2] = this.flagYPoints[0];
+g.fillPolygon (this.flagXPoints, this.flagYPoints, 3);
+}}} catch (e) {
+if (Clazz_exceptionOf (e, javax.swing.text.BadLocationException)) {
+} else {
+throw e;
+}
+}
+}}, "java.awt.Graphics");
+Clazz_overrideMethod (c$, "install", 
+function (c) {
+this.component = c;
+var doc = c.getDocument ();
+this.dot = this.mark = 0;
+this.dotLTR = this.markLTR = true;
+this.dotBias = this.markBias = javax.swing.text.Position.Bias.Forward;
+if (doc != null) {
+doc.addDocumentListener (this.handler);
+}c.addPropertyChangeListener (this.handler);
+c.addFocusListener (this);
+c.addMouseListener (this);
+c.addMouseMotionListener (this);
+if (this.component.hasFocus ()) {
+this.focusGained (null);
+}var ratio = c.getClientProperty ("caretAspectRatio");
+if (ratio != null) {
+this.aspectRatio = ratio.floatValue ();
+} else {
+this.aspectRatio = -1;
+}var width = c.getClientProperty ("caretWidth");
+if (width != null) {
+this.caretWidth = width.intValue ();
+} else {
+this.caretWidth = -1;
+}}, "javax.swing.text.JTextComponent");
+Clazz_overrideMethod (c$, "deinstall", 
+function (c) {
+c.removeMouseListener (this);
+c.removeMouseMotionListener (this);
+c.removeFocusListener (this);
+c.removePropertyChangeListener (this.handler);
+var doc = c.getDocument ();
+if (doc != null) {
+doc.removeDocumentListener (this.handler);
+}{
+this.component = null;
+}}, "javax.swing.text.JTextComponent");
+Clazz_overrideMethod (c$, "addChangeListener", 
+function (l) {
+this.listenerList.add (javax.swing.event.ChangeListener, l);
+}, "javax.swing.event.ChangeListener");
+Clazz_overrideMethod (c$, "removeChangeListener", 
+function (l) {
+this.listenerList.remove (javax.swing.event.ChangeListener, l);
+}, "javax.swing.event.ChangeListener");
+Clazz_defineMethod (c$, "getChangeListeners", 
+function () {
+return this.listenerList.getListeners (javax.swing.event.ChangeListener);
+});
+Clazz_defineMethod (c$, "fireStateChanged", 
+function () {
+var listeners = this.listenerList.getListenerList ();
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === javax.swing.event.ChangeListener) {
+if (this.changeEvent == null) this.changeEvent =  new javax.swing.event.ChangeEvent (this);
+(listeners[i + 1]).stateChanged (this.changeEvent);
+}}
+});
+Clazz_defineMethod (c$, "getListeners", 
+function (listenerType) {
+return this.listenerList.getListeners (listenerType);
+}, "Class");
+Clazz_overrideMethod (c$, "setSelectionVisible", 
+function (vis) {
+if (vis != this.selectionVisible) {
+this.selectionVisible = vis;
+if (this.selectionVisible) {
+var h = this.component.getHighlighter ();
+if ((this.dot != this.mark) && (h != null) && (this.selectionTag == null)) {
+var p0 = Math.min (this.dot, this.mark);
+var p1 = Math.max (this.dot, this.mark);
+var p = this.getSelectionPainter ();
+try {
+this.selectionTag = h.addHighlight (p0, p1, p);
+} catch (bl) {
+if (Clazz_exceptionOf (bl, javax.swing.text.BadLocationException)) {
+this.selectionTag = null;
+} else {
+throw bl;
+}
+}
+}} else {
+if (this.selectionTag != null) {
+var h = this.component.getHighlighter ();
+h.removeHighlight (this.selectionTag);
+this.selectionTag = null;
+}}}}, "~B");
+Clazz_overrideMethod (c$, "isSelectionVisible", 
+function () {
+return this.selectionVisible;
+});
+Clazz_defineMethod (c$, "isActive", 
+function () {
+return this.active;
+});
+Clazz_overrideMethod (c$, "isVisible", 
+function () {
+return this.visible;
+});
+Clazz_overrideMethod (c$, "setVisible", 
+function (e) {
+if (this.component != null) {
+this.active = e;
+var mapper = this.component.getUI ();
+if (this.visible != e) {
+this.visible = e;
+try {
+var loc = mapper.modelToView (this.component, this.dot, this.dotBias);
+this.damage (loc);
+} catch (badloc) {
+if (Clazz_exceptionOf (badloc, javax.swing.text.BadLocationException)) {
+} else {
+throw badloc;
+}
+}
+}}}, "~B");
+Clazz_overrideMethod (c$, "setBlinkRate", 
+function (rate) {
+}, "~N");
+Clazz_overrideMethod (c$, "getBlinkRate", 
+function () {
+return 0;
+});
+Clazz_overrideMethod (c$, "getDot", 
+function () {
+return this.dot;
+});
+Clazz_overrideMethod (c$, "getMark", 
+function () {
+return this.mark;
+});
+Clazz_defineMethod (c$, "setDot", 
+function (dot) {
+this.setDot (dot, javax.swing.text.Position.Bias.Forward);
+}, "~N");
+Clazz_defineMethod (c$, "moveDot", 
+function (dot) {
+this.moveDot (dot, javax.swing.text.Position.Bias.Forward);
+}, "~N");
+Clazz_defineMethod (c$, "moveDot", 
+function (dot, dotBias) {
+if (dotBias == null) {
+throw  new IllegalArgumentException ("null bias");
+}if (!this.component.isEnabled ()) {
+this.setDot (dot, dotBias);
+return;
+}if (dot != this.dot) {
+var filter = this.component.getNavigationFilter ();
+if (filter != null) {
+filter.moveDot (this.getFilterBypass (), dot, dotBias);
+} else {
+this.handleMoveDot (dot, dotBias);
+}}}, "~N,javax.swing.text.Position.Bias");
+Clazz_defineMethod (c$, "handleMoveDot", 
+function (dot, dotBias) {
+this.changeCaretPosition (dot, dotBias);
+if (this.selectionVisible) {
+var h = this.component.getHighlighter ();
+if (h != null) {
+var p0 = Math.min (dot, this.mark);
+var p1 = Math.max (dot, this.mark);
+if (p0 == p1) {
+if (this.selectionTag != null) {
+h.removeHighlight (this.selectionTag);
+this.selectionTag = null;
+}} else {
+try {
+if (this.selectionTag != null) {
+h.changeHighlight (this.selectionTag, p0, p1);
+} else {
+var p = this.getSelectionPainter ();
+this.selectionTag = h.addHighlight (p0, p1, p);
+}} catch (e) {
+if (Clazz_exceptionOf (e, javax.swing.text.BadLocationException)) {
+throw  new javax.swing.text.StateInvariantError ("Bad caret position");
+} else {
+throw e;
+}
+}
+}}}}, "~N,javax.swing.text.Position.Bias");
+Clazz_defineMethod (c$, "setDot", 
+function (dot, dotBias) {
+if (dotBias == null) {
+throw  new IllegalArgumentException ("null bias");
+}var filter = this.component.getNavigationFilter ();
+if (filter != null) {
+filter.setDot (this.getFilterBypass (), dot, dotBias);
+} else {
+this.handleSetDot (dot, dotBias);
+}}, "~N,javax.swing.text.Position.Bias");
+Clazz_defineMethod (c$, "handleSetDot", 
+function (dot, dotBias) {
+var doc = this.component.getDocument ();
+if (doc != null) {
+dot = Math.min (dot, doc.getLength ());
+}dot = Math.max (dot, 0);
+if (dot == 0) dotBias = javax.swing.text.Position.Bias.Forward;
+this.mark = dot;
+if (this.dot != dot || this.dotBias !== dotBias || this.selectionTag != null || this.forceCaretPositionChange) {
+this.changeCaretPosition (dot, dotBias);
+}this.markBias = this.dotBias;
+this.markLTR = this.dotLTR;
+var h = this.component.getHighlighter ();
+if ((h != null) && (this.selectionTag != null)) {
+h.removeHighlight (this.selectionTag);
+this.selectionTag = null;
+}}, "~N,javax.swing.text.Position.Bias");
+Clazz_defineMethod (c$, "getDotBias", 
+function () {
+return this.dotBias;
+});
+Clazz_defineMethod (c$, "getMarkBias", 
+function () {
+return this.markBias;
+});
+Clazz_defineMethod (c$, "isDotLeftToRight", 
+function () {
+return this.dotLTR;
+});
+Clazz_defineMethod (c$, "isMarkLeftToRight", 
+function () {
+return this.markLTR;
+});
+Clazz_defineMethod (c$, "isPositionLTR", 
+function (position, bias) {
+var doc = this.component.getDocument ();
+if (Clazz_instanceOf (doc, javax.swing.text.AbstractDocument)) {
+if (bias === javax.swing.text.Position.Bias.Backward && --position < 0) position = 0;
+return (doc).isLeftToRight (position, position);
+}return true;
+}, "~N,javax.swing.text.Position.Bias");
+Clazz_defineMethod (c$, "guessBiasForOffset", 
+function (offset, lastBias, lastLTR) {
+if (lastLTR != this.isPositionLTR (offset, lastBias)) {
+lastBias = javax.swing.text.Position.Bias.Backward;
+} else if (lastBias !== javax.swing.text.Position.Bias.Backward && lastLTR != this.isPositionLTR (offset, javax.swing.text.Position.Bias.Backward)) {
+lastBias = javax.swing.text.Position.Bias.Backward;
+}if (lastBias === javax.swing.text.Position.Bias.Backward && offset > 0) {
+try {
+var s =  new javax.swing.text.Segment ();
+this.component.getDocument ().getText (offset - 1, 1, s);
+if (s.count > 0 && s.array[s.offset] == '\n') {
+lastBias = javax.swing.text.Position.Bias.Forward;
+}} catch (ble) {
+if (Clazz_exceptionOf (ble, javax.swing.text.BadLocationException)) {
+} else {
+throw ble;
+}
+}
+}return lastBias;
+}, "~N,javax.swing.text.Position.Bias,~B");
+Clazz_defineMethod (c$, "changeCaretPosition", 
+function (dot, dotBias) {
+this.repaint ();
+this.dot = dot;
+this.dotBias = dotBias;
+this.dotLTR = this.isPositionLTR (dot, dotBias);
+this.fireStateChanged ();
+this.updateSystemSelection ();
+this.setMagicCaretPosition (null);
+var callRepaintNewCaret = ((Clazz_isClassDefined ("javax.swing.text.DefaultCaret$1") ? 0 : javax.swing.text.DefaultCaret.$DefaultCaret$1$ ()), Clazz_innerTypeInstance (javax.swing.text.DefaultCaret$1, this, null));
+javax.swing.SwingUtilities.invokeLater (callRepaintNewCaret);
+}, "~N,javax.swing.text.Position.Bias");
+Clazz_defineMethod (c$, "repaintNewCaret", 
+function () {
+if (this.component != null) {
+var mapper = this.component.getUI ();
+var doc = this.component.getDocument ();
+if ((mapper != null) && (doc != null)) {
+var newLoc;
+try {
+newLoc = mapper.modelToView (this.component, this.dot, this.dotBias);
+} catch (e) {
+if (Clazz_exceptionOf (e, javax.swing.text.BadLocationException)) {
+newLoc = null;
+} else {
+throw e;
+}
+}
+if (newLoc != null) {
+this.adjustVisibility (newLoc);
+if (this.getMagicCaretPosition () == null) {
+this.setMagicCaretPosition ( new java.awt.Point (newLoc.x, newLoc.y));
+}}this.damage (newLoc);
+}}});
+Clazz_defineMethod (c$, "updateSystemSelection", 
+ function () {
+});
+Clazz_defineMethod (c$, "ensureValidPosition", 
+ function () {
+var length = this.component.getDocument ().getLength ();
+if (this.dot > length || this.mark > length) {
+this.handleSetDot (length, javax.swing.text.Position.Bias.Forward);
+}});
+Clazz_overrideMethod (c$, "setMagicCaretPosition", 
+function (p) {
+this.magicCaretPosition = p;
+}, "java.awt.Point");
+Clazz_overrideMethod (c$, "getMagicCaretPosition", 
+function () {
+return this.magicCaretPosition;
+});
+Clazz_overrideMethod (c$, "equals", 
+function (obj) {
+return (this === obj);
+}, "~O");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+var s = "Dot=(" + this.dot + ", " + this.dotBias + ")";
+s += " Mark=(" + this.mark + ", " + this.markBias + ")";
+return s;
+});
+Clazz_defineMethod (c$, "getFilterBypass", 
+ function () {
+if (this.filterBypass == null) {
+this.filterBypass = Clazz_innerTypeInstance (javax.swing.text.DefaultCaret.DefaultFilterBypass, this, null);
+}return this.filterBypass;
+});
+Clazz_defineMethod (c$, "_contains", 
+ function (X, Y, W, H) {
+var w = this.width;
+var h = this.height;
+if ((w | h | W | H) < 0) {
+return false;
+}var x = this.x;
+var y = this.y;
+if (X < x || Y < y) {
+return false;
+}if (W > 0) {
+w += x;
+W += X;
+if (W <= X) {
+if (w >= x || W > w) return false;
+} else {
+if (w >= x && W > w) return false;
+}} else if ((x + w) < X) {
+return false;
+}if (H > 0) {
+h += y;
+H += Y;
+if (H <= Y) {
+if (h >= y || H > h) return false;
+} else {
+if (h >= y && H > h) return false;
+}} else if ((y + h) < Y) {
+return false;
+}return true;
+}, "~N,~N,~N,~N");
+Clazz_defineMethod (c$, "getCaretWidth", 
+function (height) {
+if (this.aspectRatio > -1) {
+return Clazz_floatToInt (this.aspectRatio * height) + 1;
+}if (this.caretWidth > -1) {
+return this.caretWidth;
+}return 1;
+}, "~N");
+c$.$DefaultCaret$SafeScroller$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.r = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultCaret, "SafeScroller", null, Runnable);
+Clazz_makeConstructor (c$, 
+function (a) {
+this.r = a;
+}, "java.awt.Rectangle");
+Clazz_overrideMethod (c$, "run", 
+function () {
+if (this.b$["javax.swing.text.DefaultCaret"].component != null) {
+this.b$["javax.swing.text.DefaultCaret"].component.scrollRectToVisible (this.r);
+}});
+c$ = Clazz_p0p ();
+};
+c$.$DefaultCaret$Handler$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultCaret, "Handler", null, [java.beans.PropertyChangeListener, javax.swing.event.DocumentListener, java.awt.event.ActionListener]);
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (a) {
+if (this.b$["javax.swing.text.DefaultCaret"].width == 0 || this.b$["javax.swing.text.DefaultCaret"].height == 0) {
+if (this.b$["javax.swing.text.DefaultCaret"].component != null) {
+var b = this.b$["javax.swing.text.DefaultCaret"].component.getUI ();
+try {
+var c = b.modelToView (this.b$["javax.swing.text.DefaultCaret"].component, this.b$["javax.swing.text.DefaultCaret"].dot, this.b$["javax.swing.text.DefaultCaret"].dotBias);
+if (c != null && c.width != 0 && c.height != 0) {
+this.b$["javax.swing.text.DefaultCaret"].damage (c);
+}} catch (ble) {
+if (Clazz_exceptionOf (ble, javax.swing.text.BadLocationException)) {
+} else {
+throw ble;
+}
+}
+}}this.b$["javax.swing.text.DefaultCaret"].visible = !this.b$["javax.swing.text.DefaultCaret"].visible;
+this.b$["javax.swing.text.DefaultCaret"].repaint ();
+}, "java.awt.event.ActionEvent");
+Clazz_overrideMethod (c$, "insertUpdate", 
+function (a) {
+if (this.b$["javax.swing.text.DefaultCaret"].getUpdatePolicy () == 1 || (this.b$["javax.swing.text.DefaultCaret"].getUpdatePolicy () == 0 && !javax.swing.SwingUtilities.isEventDispatchThread ())) {
+if ((a.getOffset () <= this.b$["javax.swing.text.DefaultCaret"].dot || a.getOffset () <= this.b$["javax.swing.text.DefaultCaret"].mark) && this.b$["javax.swing.text.DefaultCaret"].selectionTag != null) {
+try {
+this.b$["javax.swing.text.DefaultCaret"].component.getHighlighter ().changeHighlight (this.b$["javax.swing.text.DefaultCaret"].selectionTag, Math.min (this.b$["javax.swing.text.DefaultCaret"].dot, this.b$["javax.swing.text.DefaultCaret"].mark), Math.max (this.b$["javax.swing.text.DefaultCaret"].dot, this.b$["javax.swing.text.DefaultCaret"].mark));
+} catch (e1) {
+if (Clazz_exceptionOf (e1, javax.swing.text.BadLocationException)) {
+e1.printStackTrace ();
+} else {
+throw e1;
+}
+}
+}return;
+}var b = 0;
+var c = a.getOffset ();
+var d = a.getLength ();
+var e = this.b$["javax.swing.text.DefaultCaret"].dot;
+var f = 0;
+if (Clazz_instanceOf (a, javax.swing.text.AbstractDocument.UndoRedoDocumentEvent)) {
+this.b$["javax.swing.text.DefaultCaret"].setDot (c + d);
+return;
+}if (e >= c) {
+e += d;
+f |= 1;
+}var g = this.b$["javax.swing.text.DefaultCaret"].mark;
+if (g >= c) {
+g += d;
+f |= 2;
+}if (f != 0) {
+var h = this.b$["javax.swing.text.DefaultCaret"].dotBias;
+if (this.b$["javax.swing.text.DefaultCaret"].dot == c) {
+var i = this.b$["javax.swing.text.DefaultCaret"].component.getDocument ();
+var j;
+try {
+var k =  new javax.swing.text.Segment ();
+i.getText (e - 1, 1, k);
+j = (k.count > 0 && k.array[k.offset] == '\n');
+} catch (ble) {
+if (Clazz_exceptionOf (ble, javax.swing.text.BadLocationException)) {
+j = false;
+} else {
+throw ble;
+}
+}
+if (j) {
+h = javax.swing.text.Position.Bias.Forward;
+} else {
+h = javax.swing.text.Position.Bias.Backward;
+}}if (g == e) {
+this.b$["javax.swing.text.DefaultCaret"].setDot (e, h);
+this.b$["javax.swing.text.DefaultCaret"].ensureValidPosition ();
+} else {
+this.b$["javax.swing.text.DefaultCaret"].setDot (g, this.b$["javax.swing.text.DefaultCaret"].markBias);
+if (this.b$["javax.swing.text.DefaultCaret"].getDot () == g) {
+this.b$["javax.swing.text.DefaultCaret"].moveDot (e, h);
+}this.b$["javax.swing.text.DefaultCaret"].ensureValidPosition ();
+}}}, "javax.swing.event.DocumentEvent");
+Clazz_overrideMethod (c$, "removeUpdate", 
+function (a) {
+if (this.b$["javax.swing.text.DefaultCaret"].getUpdatePolicy () == 1 || (this.b$["javax.swing.text.DefaultCaret"].getUpdatePolicy () == 0 && !javax.swing.SwingUtilities.isEventDispatchThread ())) {
+var b = this.b$["javax.swing.text.DefaultCaret"].component.getDocument ().getLength ();
+this.b$["javax.swing.text.DefaultCaret"].dot = Math.min (this.b$["javax.swing.text.DefaultCaret"].dot, b);
+this.b$["javax.swing.text.DefaultCaret"].mark = Math.min (this.b$["javax.swing.text.DefaultCaret"].mark, b);
+if ((a.getOffset () < this.b$["javax.swing.text.DefaultCaret"].dot || a.getOffset () < this.b$["javax.swing.text.DefaultCaret"].mark) && this.b$["javax.swing.text.DefaultCaret"].selectionTag != null) {
+try {
+this.b$["javax.swing.text.DefaultCaret"].component.getHighlighter ().changeHighlight (this.b$["javax.swing.text.DefaultCaret"].selectionTag, Math.min (this.b$["javax.swing.text.DefaultCaret"].dot, this.b$["javax.swing.text.DefaultCaret"].mark), Math.max (this.b$["javax.swing.text.DefaultCaret"].dot, this.b$["javax.swing.text.DefaultCaret"].mark));
+} catch (e1) {
+if (Clazz_exceptionOf (e1, javax.swing.text.BadLocationException)) {
+e1.printStackTrace ();
+} else {
+throw e1;
+}
+}
+}return;
+}var b = a.getOffset ();
+var c = b + a.getLength ();
+var d = 0;
+var e = this.b$["javax.swing.text.DefaultCaret"].dot;
+var f = false;
+var g = this.b$["javax.swing.text.DefaultCaret"].mark;
+var h = false;
+if (Clazz_instanceOf (a, javax.swing.text.AbstractDocument.UndoRedoDocumentEvent)) {
+this.b$["javax.swing.text.DefaultCaret"].setDot (b);
+return;
+}if (e >= c) {
+e -= (c - b);
+if (e == c) {
+f = true;
+}} else if (e >= b) {
+e = b;
+f = true;
+}if (g >= c) {
+g -= (c - b);
+if (g == c) {
+h = true;
+}} else if (g >= b) {
+g = b;
+h = true;
+}if (g == e) {
+this.b$["javax.swing.text.DefaultCaret"].forceCaretPositionChange = true;
+try {
+this.b$["javax.swing.text.DefaultCaret"].setDot (e, this.b$["javax.swing.text.DefaultCaret"].guessBiasForOffset (e, this.b$["javax.swing.text.DefaultCaret"].dotBias, this.b$["javax.swing.text.DefaultCaret"].dotLTR));
+} finally {
+this.b$["javax.swing.text.DefaultCaret"].forceCaretPositionChange = false;
+}
+this.b$["javax.swing.text.DefaultCaret"].ensureValidPosition ();
+} else {
+var i = this.b$["javax.swing.text.DefaultCaret"].dotBias;
+var j = this.b$["javax.swing.text.DefaultCaret"].markBias;
+if (f) {
+i = this.b$["javax.swing.text.DefaultCaret"].guessBiasForOffset (e, i, this.b$["javax.swing.text.DefaultCaret"].dotLTR);
+}if (h) {
+j = this.b$["javax.swing.text.DefaultCaret"].guessBiasForOffset (this.b$["javax.swing.text.DefaultCaret"].mark, j, this.b$["javax.swing.text.DefaultCaret"].markLTR);
+}this.b$["javax.swing.text.DefaultCaret"].setDot (g, j);
+if (this.b$["javax.swing.text.DefaultCaret"].getDot () == g) {
+this.b$["javax.swing.text.DefaultCaret"].moveDot (e, i);
+}this.b$["javax.swing.text.DefaultCaret"].ensureValidPosition ();
+}}, "javax.swing.event.DocumentEvent");
+Clazz_overrideMethod (c$, "changedUpdate", 
+function (a) {
+if (this.b$["javax.swing.text.DefaultCaret"].getUpdatePolicy () == 1 || (this.b$["javax.swing.text.DefaultCaret"].getUpdatePolicy () == 0 && !javax.swing.SwingUtilities.isEventDispatchThread ())) {
+return;
+}if (Clazz_instanceOf (a, javax.swing.text.AbstractDocument.UndoRedoDocumentEvent)) {
+this.b$["javax.swing.text.DefaultCaret"].setDot (a.getOffset () + a.getLength ());
+}}, "javax.swing.event.DocumentEvent");
+Clazz_overrideMethod (c$, "propertyChange", 
+function (a) {
+var b = a.getOldValue ();
+var c = a.getNewValue ();
+if ((Clazz_instanceOf (b, javax.swing.text.Document)) || (Clazz_instanceOf (c, javax.swing.text.Document))) {
+this.b$["javax.swing.text.DefaultCaret"].setDot (0);
+if (b != null) {
+(b).removeDocumentListener (this);
+}if (c != null) {
+(c).addDocumentListener (this);
+}} else if ("enabled".equals (a.getPropertyName ())) {
+var d = a.getNewValue ();
+if (this.b$["javax.swing.text.DefaultCaret"].component.isFocusOwner ()) {
+if (d === Boolean.TRUE) {
+if (this.b$["javax.swing.text.DefaultCaret"].component.isEditable ()) {
+this.b$["javax.swing.text.DefaultCaret"].setVisible (true);
+}this.b$["javax.swing.text.DefaultCaret"].setSelectionVisible (true);
+} else {
+this.b$["javax.swing.text.DefaultCaret"].setVisible (false);
+this.b$["javax.swing.text.DefaultCaret"].setSelectionVisible (false);
+}}} else if ("caretWidth".equals (a.getPropertyName ())) {
+var d = a.getNewValue ();
+if (d != null) {
+this.b$["javax.swing.text.DefaultCaret"].caretWidth = d.intValue ();
+} else {
+this.b$["javax.swing.text.DefaultCaret"].caretWidth = -1;
+}this.b$["javax.swing.text.DefaultCaret"].repaint ();
+} else if ("caretAspectRatio".equals (a.getPropertyName ())) {
+var d = a.getNewValue ();
+if (d != null) {
+this.b$["javax.swing.text.DefaultCaret"].aspectRatio = d.floatValue ();
+} else {
+this.b$["javax.swing.text.DefaultCaret"].aspectRatio = -1;
+}this.b$["javax.swing.text.DefaultCaret"].repaint ();
+}}, "java.beans.PropertyChangeEvent");
+c$ = Clazz_p0p ();
+};
+c$.$DefaultCaret$DefaultFilterBypass$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultCaret, "DefaultFilterBypass", javax.swing.text.NavigationFilter.FilterBypass);
+Clazz_overrideMethod (c$, "getCaret", 
+function () {
+return this.b$["javax.swing.text.DefaultCaret"];
+});
+Clazz_overrideMethod (c$, "setDot", 
+function (a, b) {
+this.b$["javax.swing.text.DefaultCaret"].handleSetDot (a, b);
+}, "~N,javax.swing.text.Position.Bias");
+Clazz_overrideMethod (c$, "moveDot", 
+function (a, b) {
+this.b$["javax.swing.text.DefaultCaret"].handleMoveDot (a, b);
+}, "~N,javax.swing.text.Position.Bias");
+c$ = Clazz_p0p ();
+};
+c$.$DefaultCaret$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (javax.swing.text, "DefaultCaret$1", null, Runnable);
+Clazz_overrideMethod (c$, "run", 
+function () {
+this.b$["javax.swing.text.DefaultCaret"].repaintNewCaret ();
+});
+c$ = Clazz_p0p ();
+};
+Clazz_defineStatics (c$,
+"UPDATE_WHEN_ON_EDT", 0,
+"NEVER_UPDATE", 1,
+"ALWAYS_UPDATE", 2,
+"$selectWord", null,
+"selectLine", null);
+});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_declareInterface (javax.swing.text, "Caret");
+Clazz_declarePackage ("javax.swing.text");
+c$ = Clazz_declareType (javax.swing.text, "NavigationFilter");
+Clazz_defineMethod (c$, "setDot", 
+function (fb, dot, bias) {
+fb.setDot (dot, bias);
+}, "javax.swing.text.NavigationFilter.FilterBypass,~N,javax.swing.text.Position.Bias");
+Clazz_defineMethod (c$, "moveDot", 
+function (fb, dot, bias) {
+fb.moveDot (dot, bias);
+}, "javax.swing.text.NavigationFilter.FilterBypass,~N,javax.swing.text.Position.Bias");
+Clazz_defineMethod (c$, "getNextVisualPositionFrom", 
+function (text, pos, bias, direction, biasRet) {
+return text.getUI ().getNextVisualPositionFrom (text, pos, bias, direction, biasRet);
+}, "javax.swing.text.JTextComponent,~N,javax.swing.text.Position.Bias,~N,~A");
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.NavigationFilter, "FilterBypass");
+c$ = Clazz_p0p ();
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["javax.swing.event.DocumentEvent", "javax.swing.text.DocumentFilter", "$.Element", "$.JSMinimalAbstractDocument", "$.MutableAttributeSet", "javax.swing.tree.TreeNode", "javax.swing.undo.AbstractUndoableEdit", "$.CompoundEdit", "javax.swing.event.EventListenerList"], "javax.swing.text.AbstractDocument", ["java.lang.Boolean", "java.util.Hashtable", "$.Vector", "javax.swing.UIManager", "javax.swing.event.DocumentEvent.ElementChange", "javax.swing.event.DocumentListener", "$.UndoableEditEvent", "$.UndoableEditListener", "javax.swing.text.BadLocationException", "$.SegmentCache", "$.StateInvariantError", "$.StyleConstants", "$.StyleContext", "$.Utilities"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.documentProperties = null;
+this.listenerList = null;
+this.data = null;
+this.context = null;
+this.bidiRoot = null;
+this.documentFilter = null;
+this.filterBypass = null;
+if (!Clazz_isClassDefined ("javax.swing.text.AbstractDocument.AbstractElement")) {
+javax.swing.text.AbstractDocument.$AbstractDocument$AbstractElement$ ();
+}
+if (!Clazz_isClassDefined ("javax.swing.text.AbstractDocument.BranchElement")) {
+javax.swing.text.AbstractDocument.$AbstractDocument$BranchElement$ ();
+}
+if (!Clazz_isClassDefined ("javax.swing.text.AbstractDocument.LeafElement")) {
+javax.swing.text.AbstractDocument.$AbstractDocument$LeafElement$ ();
+}
+if (!Clazz_isClassDefined ("javax.swing.text.AbstractDocument.DefaultDocumentEvent")) {
+javax.swing.text.AbstractDocument.$AbstractDocument$DefaultDocumentEvent$ ();
+}
+if (!Clazz_isClassDefined ("javax.swing.text.AbstractDocument.UndoRedoDocumentEvent")) {
+javax.swing.text.AbstractDocument.$AbstractDocument$UndoRedoDocumentEvent$ ();
+}
+if (!Clazz_isClassDefined ("javax.swing.text.AbstractDocument.DefaultFilterBypass")) {
+javax.swing.text.AbstractDocument.$AbstractDocument$DefaultFilterBypass$ ();
+}
+Clazz_instantialize (this, arguments);
+}, javax.swing.text, "AbstractDocument", null, javax.swing.text.JSMinimalAbstractDocument);
+Clazz_prepareFields (c$, function () {
+this.listenerList =  new javax.swing.event.EventListenerList ();
+});
+Clazz_makeConstructor (c$, 
+function (data) {
+this.construct (data, javax.swing.text.StyleContext.getDefaultStyleContext ());
+}, "javax.swing.text.AbstractDocument.Content");
+Clazz_makeConstructor (c$, 
+function (data, context) {
+this.data = data;
+this.context = context;
+}, "javax.swing.text.AbstractDocument.Content,javax.swing.text.AbstractDocument.AttributeContext");
+Clazz_defineMethod (c$, "getDocumentProperties", 
+function () {
+if (this.documentProperties == null) {
+this.documentProperties =  new java.util.Hashtable (2);
+}return this.documentProperties;
+});
+Clazz_defineMethod (c$, "setDocumentProperties", 
+function (x) {
+this.documentProperties = x;
+}, "java.util.Dictionary");
+Clazz_defineMethod (c$, "fireInsertUpdate", 
+function (e) {
+try {
+var listeners = this.listenerList.getListenerList ();
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === javax.swing.event.DocumentListener) {
+(listeners[i + 1]).insertUpdate (e);
+}}
+} finally {
+}
+}, "javax.swing.event.DocumentEvent");
+Clazz_defineMethod (c$, "fireChangedUpdate", 
+function (e) {
+try {
+var listeners = this.listenerList.getListenerList ();
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === javax.swing.event.DocumentListener) {
+(listeners[i + 1]).changedUpdate (e);
+}}
+} finally {
+}
+}, "javax.swing.event.DocumentEvent");
+Clazz_defineMethod (c$, "fireRemoveUpdate", 
+function (e) {
+try {
+var listeners = this.listenerList.getListenerList ();
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === javax.swing.event.DocumentListener) {
+(listeners[i + 1]).removeUpdate (e);
+}}
+} finally {
+}
+}, "javax.swing.event.DocumentEvent");
+Clazz_defineMethod (c$, "fireUndoableEditUpdate", 
+function (e) {
+var listeners = this.listenerList.getListenerList ();
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === javax.swing.event.UndoableEditListener) {
+(listeners[i + 1]).undoableEditHappened (e);
+}}
+}, "javax.swing.event.UndoableEditEvent");
+Clazz_defineMethod (c$, "getListeners", 
+function (listenerType) {
+return this.listenerList.getListeners (listenerType);
+}, "Class");
+Clazz_overrideMethod (c$, "getAsynchronousLoadPriority", 
+function () {
+var loadPriority = this.getProperty ("load priority");
+if (loadPriority != null) {
+return loadPriority.intValue ();
+}return -1;
+});
+Clazz_defineMethod (c$, "setAsynchronousLoadPriority", 
+function (p) {
+var loadPriority = (p >= 0) ?  new Integer (p) : null;
+this.putProperty ("load priority", loadPriority);
+}, "~N");
+Clazz_overrideMethod (c$, "setDocumentFilter", 
+function (filter) {
+this.documentFilter = filter;
+}, "javax.swing.text.DocumentFilter");
+Clazz_defineMethod (c$, "getDocumentFilter", 
+function () {
+return this.documentFilter;
+});
+Clazz_overrideMethod (c$, "getLength", 
+function () {
+return this.data.length () - 1;
+});
+Clazz_overrideMethod (c$, "addDocumentListener", 
+function (listener) {
+this.listenerList.add (javax.swing.event.DocumentListener, listener);
+}, "javax.swing.event.DocumentListener");
+Clazz_overrideMethod (c$, "removeDocumentListener", 
+function (listener) {
+this.listenerList.remove (javax.swing.event.DocumentListener, listener);
+}, "javax.swing.event.DocumentListener");
+Clazz_defineMethod (c$, "getDocumentListeners", 
+function () {
+return this.listenerList.getListeners (javax.swing.event.DocumentListener);
+});
+Clazz_overrideMethod (c$, "addUndoableEditListener", 
+function (listener) {
+this.listenerList.add (javax.swing.event.UndoableEditListener, listener);
+}, "javax.swing.event.UndoableEditListener");
+Clazz_overrideMethod (c$, "removeUndoableEditListener", 
+function (listener) {
+this.listenerList.remove (javax.swing.event.UndoableEditListener, listener);
+}, "javax.swing.event.UndoableEditListener");
+Clazz_defineMethod (c$, "getUndoableEditListeners", 
+function () {
+return this.listenerList.getListeners (javax.swing.event.UndoableEditListener);
+});
+Clazz_overrideMethod (c$, "getProperty", 
+function (key) {
+return this.getDocumentProperties ().get (key);
+}, "~O");
+Clazz_overrideMethod (c$, "putProperty", 
+function (key, value) {
+if (value != null) {
+this.getDocumentProperties ().put (key, value);
+} else {
+this.getDocumentProperties ().remove (key);
+}}, "~O,~O");
+Clazz_overrideMethod (c$, "remove", 
+function (offs, len) {
+var filter = this.getDocumentFilter ();
+this.writeLock ();
+try {
+if (filter != null) {
+filter.remove (this.getFilterBypass (), offs, len);
+} else {
+this.handleRemove (offs, len);
+}} finally {
+this.writeUnlock ();
+}
+}, "~N,~N");
+Clazz_defineMethod (c$, "handleRemove", 
+function (offs, len) {
+if (len > 0) {
+if (offs < 0 || (offs + len) > this.getLength ()) {
+throw  new javax.swing.text.BadLocationException ("Invalid remove", this.getLength () + 1);
+}var chng = Clazz_innerTypeInstance (javax.swing.text.AbstractDocument.DefaultDocumentEvent, this, null, offs, len, javax.swing.event.DocumentEvent.EventType.REMOVE);
+var isComposedTextElement = false;
+isComposedTextElement = javax.swing.text.Utilities.isComposedTextElement (this, offs);
+this.removeUpdate (chng);
+var u = this.data.remove (offs, len);
+if (u != null) {
+chng.addEdit (u);
+}this.postRemoveUpdate (chng);
+chng.end ();
+this.fireRemoveUpdate (chng);
+if ((u != null) && !isComposedTextElement) {
+this.fireUndoableEditUpdate ( new javax.swing.event.UndoableEditEvent (this, chng));
+}}}, "~N,~N");
+Clazz_overrideMethod (c$, "replace", 
+function (offset, length, text, attrs) {
+if (length == 0 && (text == null || text.length == 0)) {
+return;
+}var filter = this.getDocumentFilter ();
+this.writeLock ();
+try {
+if (filter != null) {
+filter.replace (this.getFilterBypass (), offset, length, text, attrs);
+} else {
+if (length > 0) {
+this.remove (offset, length);
+}if (text != null && text.length > 0) {
+this.insertString (offset, text, attrs);
+}}} finally {
+this.writeUnlock ();
+}
+}, "~N,~N,~S,javax.swing.text.AttributeSet");
+Clazz_overrideMethod (c$, "insertString", 
+function (offs, str, a) {
+if ((str == null) || (str.length == 0)) {
+return;
+}var filter = this.getDocumentFilter ();
+this.writeLock ();
+try {
+if (filter != null) {
+filter.insertString (this.getFilterBypass (), offs, str, a);
+} else {
+this.handleInsertString (offs, str, a);
+}} finally {
+this.writeUnlock ();
+}
+}, "~N,~S,javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "handleInsertString", 
+function (offs, str, a) {
+if ((str == null) || (str.length == 0)) {
+return;
+}var u = this.data.insertString (offs, str);
+var e = Clazz_innerTypeInstance (javax.swing.text.AbstractDocument.DefaultDocumentEvent, this, null, offs, str.length, javax.swing.event.DocumentEvent.EventType.INSERT);
+if (u != null) {
+e.addEdit (u);
+}if (this.getProperty ("i18n").equals (Boolean.FALSE)) {
+}this.insertUpdate (e, a);
+e.end ();
+this.fireInsertUpdate (e);
+if (u != null && (a == null || !a.isDefined (javax.swing.text.StyleConstants.ComposedTextAttribute))) {
+this.fireUndoableEditUpdate ( new javax.swing.event.UndoableEditEvent (this, e));
+}}, "~N,~S,javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "getText", 
+function (offset, length) {
+if (length < 0) {
+throw  new javax.swing.text.BadLocationException ("Length must be positive", length);
+}var str = this.data.getString (offset, length);
+return str;
+}, "~N,~N");
+Clazz_defineMethod (c$, "getText", 
+function (offset, length, txt) {
+if (length < 0) {
+throw  new javax.swing.text.BadLocationException ("Length must be positive", length);
+}this.data.getChars (offset, length, txt);
+}, "~N,~N,javax.swing.text.Segment");
+Clazz_overrideMethod (c$, "createPosition", 
+function (offs) {
+return this.data.createPosition (offs);
+}, "~N");
+Clazz_overrideMethod (c$, "getStartPosition", 
+function () {
+var p;
+try {
+p = this.createPosition (0);
+} catch (bl) {
+if (Clazz_exceptionOf (bl, javax.swing.text.BadLocationException)) {
+p = null;
+} else {
+throw bl;
+}
+}
+return p;
+});
+Clazz_overrideMethod (c$, "getEndPosition", 
+function () {
+var p;
+try {
+p = this.createPosition (this.data.length ());
+} catch (bl) {
+if (Clazz_exceptionOf (bl, javax.swing.text.BadLocationException)) {
+p = null;
+} else {
+throw bl;
+}
+}
+return p;
+});
+Clazz_overrideMethod (c$, "getRootElements", 
+function () {
+var elems =  new Array (2);
+elems[0] = this.getDefaultRootElement ();
+elems[1] = this.getBidiRootElement ();
+return elems;
+});
+Clazz_defineMethod (c$, "getFilterBypass", 
+ function () {
+if (this.filterBypass == null) {
+this.filterBypass = Clazz_innerTypeInstance (javax.swing.text.AbstractDocument.DefaultFilterBypass, this, null);
+}return this.filterBypass;
+});
+Clazz_defineMethod (c$, "getBidiRootElement", 
+function () {
+return this.bidiRoot;
+});
+Clazz_defineMethod (c$, "isLeftToRight", 
+function (p0, p1) {
+if (!this.getProperty ("i18n").equals (Boolean.TRUE)) {
+return true;
+}var bidiRoot = this.getBidiRootElement ();
+var index = bidiRoot.getElementIndex (p0);
+var bidiElem = bidiRoot.getElement (index);
+if (bidiElem.getEndOffset () >= p1) {
+var bidiAttrs = bidiElem.getAttributes ();
+return ((javax.swing.text.StyleConstants.getBidiLevel (bidiAttrs) % 2) == 0);
+}return true;
+}, "~N,~N");
+Clazz_defineMethod (c$, "getAttributeContext", 
+function () {
+return this.context;
+});
+Clazz_defineMethod (c$, "insertUpdate", 
+function (chng, attr) {
+if (chng.type === javax.swing.event.DocumentEvent.EventType.INSERT && chng.getLength () > 0 && !Boolean.TRUE.equals (this.getProperty (javax.swing.text.AbstractDocument.MultiByteProperty))) {
+var segment = javax.swing.text.SegmentCache.getSharedSegment ();
+try {
+this.getText (chng.getOffset (), chng.getLength (), segment);
+segment.first ();
+do {
+if ((segment.current ()).charCodeAt (0) > 255) {
+this.putProperty (javax.swing.text.AbstractDocument.MultiByteProperty, Boolean.TRUE);
+break;
+}} while (segment.next () != '\uffff');
+} catch (ble) {
+if (Clazz_exceptionOf (ble, javax.swing.text.BadLocationException)) {
+} else {
+throw ble;
+}
+}
+javax.swing.text.SegmentCache.releaseSharedSegment (segment);
+}}, "javax.swing.text.AbstractDocument.DefaultDocumentEvent,javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "removeUpdate", 
+function (chng) {
+}, "javax.swing.text.AbstractDocument.DefaultDocumentEvent");
+Clazz_defineMethod (c$, "postRemoveUpdate", 
+function (chng) {
+}, "javax.swing.text.AbstractDocument.DefaultDocumentEvent");
+Clazz_defineMethod (c$, "getContent", 
+function () {
+return this.data;
+});
+Clazz_defineMethod (c$, "createLeafElement", 
+function (parent, a, p0, p1) {
+return Clazz_innerTypeInstance (javax.swing.text.AbstractDocument.LeafElement, this, null, parent, a, p0, p1);
+}, "javax.swing.text.Element,javax.swing.text.AttributeSet,~N,~N");
+Clazz_defineMethod (c$, "createBranchElement", 
+function (parent, a) {
+return Clazz_innerTypeInstance (javax.swing.text.AbstractDocument.BranchElement, this, null, parent, a);
+}, "javax.swing.text.Element,javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "writeLock", 
+function () {
+});
+Clazz_defineMethod (c$, "writeUnlock", 
+function () {
+});
+Clazz_defineMethod (c$, "readLock", 
+function () {
+});
+Clazz_defineMethod (c$, "readUnlock", 
+function () {
+});
+c$.$AbstractDocument$AbstractElement$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.parent = null;
+this.attributes = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.AbstractDocument, "AbstractElement", null, [javax.swing.text.Element, javax.swing.text.MutableAttributeSet, javax.swing.tree.TreeNode]);
+Clazz_makeConstructor (c$, 
+function (a, b) {
+this.parent = a;
+this.attributes = this.b$["javax.swing.text.AbstractDocument"].getAttributeContext ().getEmptySet ();
+if (b != null) {
+this.addAttributes (b);
+}}, "javax.swing.text.Element,javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "getAttributeCount", 
+function () {
+return this.attributes.getAttributeCount ();
+});
+Clazz_defineMethod (c$, "isDefined", 
+function (a) {
+return this.attributes.isDefined (a);
+}, "~O");
+Clazz_defineMethod (c$, "isEqual", 
+function (a) {
+return this.attributes.isEqual (a);
+}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "copyAttributes", 
+function () {
+return this.attributes.copyAttributes ();
+});
+Clazz_defineMethod (c$, "getAttribute", 
+function (a) {
+var b = this.attributes.getAttribute (a);
+if (b == null) {
+var c = (this.parent != null) ? this.parent.getAttributes () : null;
+if (c != null) {
+b = c.getAttribute (a);
+}}return b;
+}, "~O");
+Clazz_defineMethod (c$, "getAttributeNames", 
+function () {
+return this.attributes.getAttributeNames ();
+});
+Clazz_defineMethod (c$, "containsAttribute", 
+function (a, b) {
+return this.attributes.containsAttribute (a, b);
+}, "~O,~O");
+Clazz_defineMethod (c$, "containsAttributes", 
+function (a) {
+return this.attributes.containsAttributes (a);
+}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "getResolveParent", 
+function () {
+var a = this.attributes.getResolveParent ();
+if ((a == null) && (this.parent != null)) {
+a = this.parent.getAttributes ();
+}return a;
+});
+Clazz_overrideMethod (c$, "addAttribute", 
+function (a, b) {
+this.checkForIllegalCast ();
+var c = this.b$["javax.swing.text.AbstractDocument"].getAttributeContext ();
+this.attributes = c.addAttribute (this.attributes, a, b);
+}, "~O,~O");
+Clazz_overrideMethod (c$, "addAttributes", 
+function (a) {
+this.checkForIllegalCast ();
+var b = this.b$["javax.swing.text.AbstractDocument"].getAttributeContext ();
+this.attributes = b.addAttributes (this.attributes, a);
+}, "javax.swing.text.AttributeSet");
+Clazz_overrideMethod (c$, "removeAttribute", 
+function (a) {
+this.checkForIllegalCast ();
+var b = this.b$["javax.swing.text.AbstractDocument"].getAttributeContext ();
+this.attributes = b.removeAttribute (this.attributes, a);
+}, "~O");
+Clazz_defineMethod (c$, "removeAttributes", 
+function (a) {
+this.checkForIllegalCast ();
+var b = this.b$["javax.swing.text.AbstractDocument"].getAttributeContext ();
+this.attributes = b.removeAttributes (this.attributes, a);
+}, "java.util.Enumeration");
+Clazz_defineMethod (c$, "removeAttributes", 
+function (a) {
+this.checkForIllegalCast ();
+var b = this.b$["javax.swing.text.AbstractDocument"].getAttributeContext ();
+if (a === this) {
+this.attributes = b.getEmptySet ();
+} else {
+this.attributes = b.removeAttributes (this.attributes, a);
+}}, "javax.swing.text.AttributeSet");
+Clazz_overrideMethod (c$, "setResolveParent", 
+function (a) {
+this.checkForIllegalCast ();
+var b = this.b$["javax.swing.text.AbstractDocument"].getAttributeContext ();
+if (a != null) {
+this.attributes = b.addAttribute (this.attributes, javax.swing.text.StyleConstants.ResolveAttribute, a);
+} else {
+this.attributes = b.removeAttribute (this.attributes, javax.swing.text.StyleConstants.ResolveAttribute);
+}}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "checkForIllegalCast", 
+ function () {
+});
+Clazz_overrideMethod (c$, "getDocument", 
+function () {
+return this.b$["javax.swing.text.AbstractDocument"];
+});
+Clazz_overrideMethod (c$, "getParentElement", 
+function () {
+return this.parent;
+});
+Clazz_defineMethod (c$, "getAttributes", 
+function () {
+return this;
+});
+Clazz_overrideMethod (c$, "getName", 
+function () {
+if (this.attributes.isDefined ("$ename")) {
+return this.attributes.getAttribute ("$ename");
+}return null;
+});
+Clazz_overrideMethod (c$, "getChildAt", 
+function (a) {
+return this.getElement (a);
+}, "~N");
+Clazz_overrideMethod (c$, "getChildCount", 
+function () {
+return this.getElementCount ();
+});
+Clazz_overrideMethod (c$, "getParent", 
+function () {
+return this.getParentElement ();
+});
+Clazz_overrideMethod (c$, "getIndex", 
+function (a) {
+for (var b = this.getChildCount () - 1; b >= 0; b--) if (this.getChildAt (b) === a) return b;
+
+return -1;
+}, "javax.swing.tree.TreeNode");
+c$ = Clazz_p0p ();
+};
+c$.$AbstractDocument$BranchElement$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.$children = null;
+this.nchildren = 0;
+this.lastIndex = 0;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.AbstractDocument, "BranchElement", javax.swing.text.AbstractDocument.AbstractElement, null, Clazz_innerTypeInstance (javax.swing.text.AbstractDocument.AbstractElement, this, null, Clazz_inheritArgs));
+Clazz_makeConstructor (c$, 
+function (a, b) {
+Clazz_superConstructor (this, javax.swing.text.AbstractDocument.BranchElement, [a, b]);
+this.$children =  new Array (1);
+this.nchildren = 0;
+this.lastIndex = -1;
+}, "javax.swing.text.Element,javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "positionToElement", 
+function (a) {
+var b = this.getElementIndex (a);
+var c = this.$children[b];
+var d = c.getStartOffset ();
+var e = c.getEndOffset ();
+if ((a >= d) && (a < e)) {
+return c;
+}return null;
+}, "~N");
+Clazz_defineMethod (c$, "replace", 
+function (a, b, c) {
+var d = c.length - b;
+var e = a + b;
+var f = this.nchildren - e;
+var g = e + d;
+if ((this.nchildren + d) >= this.$children.length) {
+var h = Math.max (2 * this.$children.length, this.nchildren + d);
+var i =  new Array (h);
+System.arraycopy (this.$children, 0, i, 0, a);
+System.arraycopy (c, 0, i, a, c.length);
+System.arraycopy (this.$children, e, i, g, f);
+this.$children = i;
+} else {
+System.arraycopy (this.$children, e, this.$children, g, f);
+System.arraycopy (c, 0, this.$children, a, c.length);
+}this.nchildren = this.nchildren + d;
+}, "~N,~N,~A");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return "BranchElement(" + this.getName () + ") " + this.getStartOffset () + "," + this.getEndOffset () + "\n";
+});
+Clazz_defineMethod (c$, "getName", 
+function () {
+var a = Clazz_superCall (this, javax.swing.text.AbstractDocument.BranchElement, "getName", []);
+if (a == null) {
+a = "paragraph";
+}return a;
+});
+Clazz_defineMethod (c$, "getStartOffset", 
+function () {
+return this.$children[0].getStartOffset ();
+});
+Clazz_overrideMethod (c$, "getEndOffset", 
+function () {
+var a = (this.nchildren > 0) ? this.$children[this.nchildren - 1] : this.$children[0];
+return a.getEndOffset ();
+});
+Clazz_overrideMethod (c$, "getElement", 
+function (a) {
+if (a < this.nchildren) {
+return this.$children[a];
+}return null;
+}, "~N");
+Clazz_overrideMethod (c$, "getElementCount", 
+function () {
+return this.nchildren;
+});
+Clazz_overrideMethod (c$, "getElementIndex", 
+function (a) {
+var b;
+var c = 0;
+var d = this.nchildren - 1;
+var e = 0;
+var f = this.getStartOffset ();
+var g;
+if (this.nchildren == 0) {
+return 0;
+}if (a >= this.getEndOffset ()) {
+return this.nchildren - 1;
+}if ((this.lastIndex >= c) && (this.lastIndex <= d)) {
+var h = this.$children[this.lastIndex];
+f = h.getStartOffset ();
+g = h.getEndOffset ();
+if ((a >= f) && (a < g)) {
+return this.lastIndex;
+}if (a < f) {
+d = this.lastIndex;
+} else {
+c = this.lastIndex;
+}}while (c <= d) {
+e = c + (Clazz_doubleToInt ((d - c) / 2));
+var h = this.$children[e];
+f = h.getStartOffset ();
+g = h.getEndOffset ();
+if ((a >= f) && (a < g)) {
+b = e;
+this.lastIndex = b;
+return b;
+} else if (a < f) {
+d = e - 1;
+} else {
+c = e + 1;
+}}
+if (a < f) {
+b = e;
+} else {
+b = e + 1;
+}this.lastIndex = b;
+return b;
+}, "~N");
+Clazz_overrideMethod (c$, "isLeaf", 
+function () {
+return false;
+});
+Clazz_overrideMethod (c$, "getAllowsChildren", 
+function () {
+return true;
+});
+Clazz_overrideMethod (c$, "children", 
+function () {
+if (this.nchildren == 0) return null;
+var a =  new java.util.Vector (this.nchildren);
+for (var b = 0; b < this.nchildren; b++) a.addElement (this.$children[b]);
+
+return a.elements ();
+});
+c$ = Clazz_p0p ();
+};
+c$.$AbstractDocument$LeafElement$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.p0 = null;
+this.p1 = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.AbstractDocument, "LeafElement", javax.swing.text.AbstractDocument.AbstractElement, null, Clazz_innerTypeInstance (javax.swing.text.AbstractDocument.AbstractElement, this, null, Clazz_inheritArgs));
+Clazz_makeConstructor (c$, 
+function (a, b, c, d) {
+Clazz_superConstructor (this, javax.swing.text.AbstractDocument.LeafElement, [a, b]);
+try {
+this.p0 = this.b$["javax.swing.text.AbstractDocument"].createPosition (c);
+this.p1 = this.b$["javax.swing.text.AbstractDocument"].createPosition (d);
+} catch (e) {
+if (Clazz_exceptionOf (e, javax.swing.text.BadLocationException)) {
+this.p0 = null;
+this.p1 = null;
+throw  new javax.swing.text.StateInvariantError ("Can't create Position references");
+} else {
+throw e;
+}
+}
+}, "javax.swing.text.Element,javax.swing.text.AttributeSet,~N,~N");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return "LeafElement(" + this.getName () + ") " + this.p0 + "," + this.p1 + "\n";
+});
+Clazz_overrideMethod (c$, "getStartOffset", 
+function () {
+return this.p0.getOffset ();
+});
+Clazz_overrideMethod (c$, "getEndOffset", 
+function () {
+return this.p1.getOffset ();
+});
+Clazz_defineMethod (c$, "getName", 
+function () {
+var a = Clazz_superCall (this, javax.swing.text.AbstractDocument.LeafElement, "getName", []);
+if (a == null) {
+a = "content";
+}return a;
+});
+Clazz_overrideMethod (c$, "getElementIndex", 
+function (a) {
+return -1;
+}, "~N");
+Clazz_overrideMethod (c$, "getElement", 
+function (a) {
+return null;
+}, "~N");
+Clazz_overrideMethod (c$, "getElementCount", 
+function () {
+return 0;
+});
+Clazz_overrideMethod (c$, "isLeaf", 
+function () {
+return true;
+});
+Clazz_overrideMethod (c$, "getAllowsChildren", 
+function () {
+return false;
+});
+Clazz_overrideMethod (c$, "children", 
+function () {
+return null;
+});
+c$ = Clazz_p0p ();
+};
+c$.$AbstractDocument$DefaultDocumentEvent$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.offset = 0;
+this.length = 0;
+this.changeLookup = null;
+this.type = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.AbstractDocument, "DefaultDocumentEvent", javax.swing.undo.CompoundEdit, javax.swing.event.DocumentEvent);
+Clazz_makeConstructor (c$, 
+function (a, b, c) {
+Clazz_superConstructor (this, javax.swing.text.AbstractDocument.DefaultDocumentEvent);
+this.offset = a;
+this.length = b;
+this.type = c;
+}, "~N,~N,javax.swing.event.DocumentEvent.EventType");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return this.edits.toString ();
+});
+Clazz_defineMethod (c$, "addEdit", 
+function (a) {
+if ((this.changeLookup == null) && (this.edits.size () > 10)) {
+this.changeLookup =  new java.util.Hashtable ();
+var b = this.edits.size ();
+for (var c = 0; c < b; c++) {
+var d = this.edits.elementAt (c);
+if (Clazz_instanceOf (d, javax.swing.event.DocumentEvent.ElementChange)) {
+var e = d;
+this.changeLookup.put (e.getElement (), e);
+}}
+}if ((this.changeLookup != null) && (Clazz_instanceOf (a, javax.swing.event.DocumentEvent.ElementChange))) {
+var b = a;
+this.changeLookup.put (b.getElement (), b);
+}return Clazz_superCall (this, javax.swing.text.AbstractDocument.DefaultDocumentEvent, "addEdit", [a]);
+}, "javax.swing.undo.UndoableEdit");
+Clazz_defineMethod (c$, "redo", 
+function () {
+this.b$["javax.swing.text.AbstractDocument"].writeLock ();
+try {
+Clazz_superCall (this, javax.swing.text.AbstractDocument.DefaultDocumentEvent, "redo", []);
+var a = Clazz_innerTypeInstance (javax.swing.text.AbstractDocument.UndoRedoDocumentEvent, this, null, this, false);
+if (this.type === javax.swing.event.DocumentEvent.EventType.INSERT) {
+this.b$["javax.swing.text.AbstractDocument"].fireInsertUpdate (a);
+} else if (this.type === javax.swing.event.DocumentEvent.EventType.REMOVE) {
+this.b$["javax.swing.text.AbstractDocument"].fireRemoveUpdate (a);
+} else {
+this.b$["javax.swing.text.AbstractDocument"].fireChangedUpdate (a);
+}} finally {
+this.b$["javax.swing.text.AbstractDocument"].writeUnlock ();
+}
+});
+Clazz_defineMethod (c$, "undo", 
+function () {
+this.b$["javax.swing.text.AbstractDocument"].writeLock ();
+try {
+Clazz_superCall (this, javax.swing.text.AbstractDocument.DefaultDocumentEvent, "undo", []);
+var a = Clazz_innerTypeInstance (javax.swing.text.AbstractDocument.UndoRedoDocumentEvent, this, null, this, true);
+if (this.type === javax.swing.event.DocumentEvent.EventType.REMOVE) {
+this.b$["javax.swing.text.AbstractDocument"].fireInsertUpdate (a);
+} else if (this.type === javax.swing.event.DocumentEvent.EventType.INSERT) {
+this.b$["javax.swing.text.AbstractDocument"].fireRemoveUpdate (a);
+} else {
+this.b$["javax.swing.text.AbstractDocument"].fireChangedUpdate (a);
+}} finally {
+this.b$["javax.swing.text.AbstractDocument"].writeUnlock ();
+}
+});
+Clazz_overrideMethod (c$, "isSignificant", 
+function () {
+return true;
+});
+Clazz_overrideMethod (c$, "getPresentationName", 
+function () {
+var a = this.getType ();
+if (a === javax.swing.event.DocumentEvent.EventType.INSERT) return javax.swing.UIManager.getString ("AbstractDocument.additionText");
+if (a === javax.swing.event.DocumentEvent.EventType.REMOVE) return javax.swing.UIManager.getString ("AbstractDocument.deletionText");
+return javax.swing.UIManager.getString ("AbstractDocument.styleChangeText");
+});
+Clazz_overrideMethod (c$, "getUndoPresentationName", 
+function () {
+return javax.swing.UIManager.getString ("AbstractDocument.undoText") + " " + this.getPresentationName ();
+});
+Clazz_overrideMethod (c$, "getRedoPresentationName", 
+function () {
+return javax.swing.UIManager.getString ("AbstractDocument.redoText") + " " + this.getPresentationName ();
+});
+Clazz_overrideMethod (c$, "getType", 
+function () {
+return this.type;
+});
+Clazz_overrideMethod (c$, "getOffset", 
+function () {
+return this.offset;
+});
+Clazz_overrideMethod (c$, "getLength", 
+function () {
+return this.length;
+});
+Clazz_overrideMethod (c$, "getDocument", 
+function () {
+return this.b$["javax.swing.text.AbstractDocument"];
+});
+Clazz_overrideMethod (c$, "getChange", 
+function (a) {
+if (this.changeLookup != null) {
+return this.changeLookup.get (a);
+}var b = this.edits.size ();
+for (var c = 0; c < b; c++) {
+var d = this.edits.elementAt (c);
+if (Clazz_instanceOf (d, javax.swing.event.DocumentEvent.ElementChange)) {
+var e = d;
+if (a.equals (e.getElement ())) {
+return e;
+}}}
+return null;
+}, "javax.swing.text.Element");
+c$ = Clazz_p0p ();
+};
+c$.$AbstractDocument$UndoRedoDocumentEvent$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.src = null;
+this.type = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.AbstractDocument, "UndoRedoDocumentEvent", null, javax.swing.event.DocumentEvent);
+Clazz_makeConstructor (c$, 
+function (a, b) {
+this.src = a;
+if (b) {
+if (a.getType ().equals (javax.swing.event.DocumentEvent.EventType.INSERT)) {
+this.type = javax.swing.event.DocumentEvent.EventType.REMOVE;
+} else if (a.getType ().equals (javax.swing.event.DocumentEvent.EventType.REMOVE)) {
+this.type = javax.swing.event.DocumentEvent.EventType.INSERT;
+} else {
+this.type = a.getType ();
+}} else {
+this.type = a.getType ();
+}}, "javax.swing.text.AbstractDocument.DefaultDocumentEvent,~B");
+Clazz_defineMethod (c$, "getSource", 
+function () {
+return this.src;
+});
+Clazz_overrideMethod (c$, "getOffset", 
+function () {
+return this.src.getOffset ();
+});
+Clazz_overrideMethod (c$, "getLength", 
+function () {
+return this.src.getLength ();
+});
+Clazz_overrideMethod (c$, "getDocument", 
+function () {
+return this.src.getDocument ();
+});
+Clazz_overrideMethod (c$, "getType", 
+function () {
+return this.type;
+});
+Clazz_overrideMethod (c$, "getChange", 
+function (a) {
+return this.src.getChange (a);
+}, "javax.swing.text.Element");
+c$ = Clazz_p0p ();
+};
+c$.$AbstractDocument$DefaultFilterBypass$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.AbstractDocument, "DefaultFilterBypass", javax.swing.text.DocumentFilter.FilterBypass);
+Clazz_overrideMethod (c$, "getDocument", 
+function () {
+return this.b$["javax.swing.text.AbstractDocument"];
+});
+Clazz_overrideMethod (c$, "remove", 
+function (a, b) {
+this.b$["javax.swing.text.AbstractDocument"].handleRemove (a, b);
+}, "~N,~N");
+Clazz_overrideMethod (c$, "insertString", 
+function (a, b, c) {
+this.b$["javax.swing.text.AbstractDocument"].handleInsertString (a, b, c);
+}, "~N,~S,javax.swing.text.AttributeSet");
+Clazz_overrideMethod (c$, "replace", 
+function (a, b, c, d) {
+this.b$["javax.swing.text.AbstractDocument"].handleRemove (a, b);
+this.b$["javax.swing.text.AbstractDocument"].handleInsertString (a, c, d);
+}, "~N,~N,~S,javax.swing.text.AttributeSet");
+c$ = Clazz_p0p ();
+};
+Clazz_declareInterface (javax.swing.text.AbstractDocument, "Content");
+Clazz_declareInterface (javax.swing.text.AbstractDocument, "AttributeContext");
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.e = null;
+this.index = 0;
+this.removed = null;
+this.added = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.AbstractDocument, "ElementEdit", javax.swing.undo.AbstractUndoableEdit, javax.swing.event.DocumentEvent.ElementChange);
+Clazz_makeConstructor (c$, 
+function (a, b, c, d) {
+Clazz_superConstructor (this, javax.swing.text.AbstractDocument.ElementEdit);
+this.e = a;
+this.index = b;
+this.removed = c;
+this.added = d;
+}, "javax.swing.text.Element,~N,~A,~A");
+Clazz_overrideMethod (c$, "getElement", 
+function () {
+return this.e;
+});
+Clazz_overrideMethod (c$, "getIndex", 
+function () {
+return this.index;
+});
+Clazz_overrideMethod (c$, "getChildrenRemoved", 
+function () {
+return this.removed;
+});
+Clazz_overrideMethod (c$, "getChildrenAdded", 
+function () {
+return this.added;
+});
+Clazz_defineMethod (c$, "redo", 
+function () {
+Clazz_superCall (this, javax.swing.text.AbstractDocument.ElementEdit, "redo", []);
+var a = this.removed;
+this.removed = this.added;
+this.added = a;
+(this.e).replace (this.index, this.removed.length, this.added);
+});
+Clazz_defineMethod (c$, "undo", 
+function () {
+Clazz_superCall (this, javax.swing.text.AbstractDocument.ElementEdit, "undo", []);
+(this.e).replace (this.index, this.added.length, this.removed);
+var a = this.removed;
+this.removed = this.added;
+this.added = a;
+});
+c$ = Clazz_p0p ();
+Clazz_defineStatics (c$,
+"BAD_LOCATION", "document location failure",
+"ParagraphElementName", "paragraph",
+"ContentElementName", "content",
+"SectionElementName", "section",
+"BidiElementName", "bidi level",
+"ElementNameAttribute", "$ename",
+"I18NProperty", "i18n",
+"MultiByteProperty", "multiByte",
+"AsyncLoadPriority", "load priority");
+});
+Clazz_declarePackage ("javax.swing.event");
+Clazz_declareInterface (javax.swing.event, "DocumentEvent");
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.typeString = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.event.DocumentEvent, "EventType");
+Clazz_makeConstructor (c$, 
+ function (a) {
+this.typeString = a;
+}, "~S");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return this.typeString;
+});
+c$.INSERT = c$.prototype.INSERT =  new javax.swing.event.DocumentEvent.EventType ("INSERT");
+c$.REMOVE = c$.prototype.REMOVE =  new javax.swing.event.DocumentEvent.EventType ("REMOVE");
+c$.CHANGE = c$.prototype.CHANGE =  new javax.swing.event.DocumentEvent.EventType ("CHANGE");
+c$ = Clazz_p0p ();
+Clazz_declareInterface (javax.swing.event.DocumentEvent, "ElementChange");
+Clazz_declarePackage ("javax.swing.text");
+c$ = Clazz_declareType (javax.swing.text, "DocumentFilter");
+Clazz_defineMethod (c$, "remove", 
+function (fb, offset, length) {
+fb.remove (offset, length);
+}, "javax.swing.text.DocumentFilter.FilterBypass,~N,~N");
+Clazz_defineMethod (c$, "insertString", 
+function (fb, offset, string, attr) {
+fb.insertString (offset, string, attr);
+}, "javax.swing.text.DocumentFilter.FilterBypass,~N,~S,javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "replace", 
+function (fb, offset, length, text, attrs) {
+fb.replace (offset, length, text, attrs);
+}, "javax.swing.text.DocumentFilter.FilterBypass,~N,~N,~S,javax.swing.text.AttributeSet");
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.DocumentFilter, "FilterBypass");
+c$ = Clazz_p0p ();
+Clazz_declarePackage ("javax.swing.text");
+Clazz_declareInterface (javax.swing.text, "Element");
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["javax.swing.text.Document"], "javax.swing.text.JSMinimalAbstractDocument", null, function () {
+Clazz_declareInterface (javax.swing.text, "JSMinimalAbstractDocument", javax.swing.text.Document);
+});
+Clazz_declarePackage ("javax.swing.text");
+c$ = Clazz_declareInterface (javax.swing.text, "Document");
+Clazz_defineStatics (c$,
+"StreamDescriptionProperty", "stream",
+"TitleProperty", "title");
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["javax.swing.text.AttributeSet"], "javax.swing.text.MutableAttributeSet", null, function () {
+Clazz_declareInterface (javax.swing.text, "MutableAttributeSet", javax.swing.text.AttributeSet);
+});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_declareInterface (javax.swing.text, "AttributeSet");
+Clazz_declareInterface (javax.swing.text.AttributeSet, "FontAttribute");
+Clazz_declareInterface (javax.swing.text.AttributeSet, "ColorAttribute");
+Clazz_declareInterface (javax.swing.text.AttributeSet, "CharacterAttribute");
+Clazz_declareInterface (javax.swing.text.AttributeSet, "ParagraphAttribute");
+Clazz_declarePackage ("javax.swing.tree");
+Clazz_declareInterface (javax.swing.tree, "TreeNode");
+Clazz_declarePackage ("javax.swing.undo");
+Clazz_load (["javax.swing.undo.UndoableEdit"], "javax.swing.undo.AbstractUndoableEdit", ["javax.swing.UIManager", "javax.swing.undo.CannotRedoException", "$.CannotUndoException"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.hasBeenDone = false;
+this.alive = false;
+Clazz_instantialize (this, arguments);
+}, javax.swing.undo, "AbstractUndoableEdit", null, javax.swing.undo.UndoableEdit);
+Clazz_makeConstructor (c$, 
+function () {
+this.hasBeenDone = true;
+this.alive = true;
+});
+Clazz_overrideMethod (c$, "die", 
+function () {
+this.alive = false;
+});
+Clazz_overrideMethod (c$, "undo", 
+function () {
+if (!this.canUndo ()) {
+throw  new javax.swing.undo.CannotUndoException ();
+}this.hasBeenDone = false;
+});
+Clazz_overrideMethod (c$, "canUndo", 
+function () {
+return this.alive && this.hasBeenDone;
+});
+Clazz_overrideMethod (c$, "redo", 
+function () {
+if (!this.canRedo ()) {
+throw  new javax.swing.undo.CannotRedoException ();
+}this.hasBeenDone = true;
+});
+Clazz_overrideMethod (c$, "canRedo", 
+function () {
+return this.alive && !this.hasBeenDone;
+});
+Clazz_overrideMethod (c$, "addEdit", 
+function (anEdit) {
+return false;
+}, "javax.swing.undo.UndoableEdit");
+Clazz_overrideMethod (c$, "replaceEdit", 
+function (anEdit) {
+return false;
+}, "javax.swing.undo.UndoableEdit");
+Clazz_overrideMethod (c$, "isSignificant", 
+function () {
+return true;
+});
+Clazz_overrideMethod (c$, "getPresentationName", 
+function () {
+return "";
+});
+Clazz_overrideMethod (c$, "getUndoPresentationName", 
+function () {
+var name = this.getPresentationName ();
+if (!"".equals (name)) {
+name = javax.swing.UIManager.getString ("AbstractUndoableEdit.undoText") + " " + name;
+} else {
+name = javax.swing.UIManager.getString ("AbstractUndoableEdit.undoText");
+}return name;
+});
+Clazz_overrideMethod (c$, "getRedoPresentationName", 
+function () {
+var name = this.getPresentationName ();
+if (!"".equals (name)) {
+name = javax.swing.UIManager.getString ("AbstractUndoableEdit.redoText") + " " + name;
+} else {
+name = javax.swing.UIManager.getString ("AbstractUndoableEdit.redoText");
+}return name;
+});
+Clazz_defineMethod (c$, "toString", 
+function () {
+return Clazz_superCall (this, javax.swing.undo.AbstractUndoableEdit, "toString", []) + " hasBeenDone: " + this.hasBeenDone + " alive: " + this.alive;
+});
+Clazz_defineStatics (c$,
+"UndoName", "Undo",
+"RedoName", "Redo");
+});
+Clazz_declarePackage ("javax.swing.undo");
+Clazz_declareInterface (javax.swing.undo, "UndoableEdit");
+Clazz_declarePackage ("javax.swing.undo");
+Clazz_load (["java.lang.RuntimeException"], "javax.swing.undo.CannotRedoException", null, function () {
+c$ = Clazz_declareType (javax.swing.undo, "CannotRedoException", RuntimeException);
+});
+Clazz_declarePackage ("javax.swing.undo");
+Clazz_load (["java.lang.RuntimeException"], "javax.swing.undo.CannotUndoException", null, function () {
+c$ = Clazz_declareType (javax.swing.undo, "CannotUndoException", RuntimeException);
+});
+Clazz_declarePackage ("javax.swing.undo");
+Clazz_load (["javax.swing.undo.AbstractUndoableEdit"], "javax.swing.undo.CompoundEdit", ["java.util.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.inProgress = false;
+this.edits = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.undo, "CompoundEdit", javax.swing.undo.AbstractUndoableEdit);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.undo.CompoundEdit);
+this.inProgress = true;
+this.edits =  new java.util.Vector ();
+});
+Clazz_defineMethod (c$, "undo", 
+function () {
+Clazz_superCall (this, javax.swing.undo.CompoundEdit, "undo", []);
+var i = this.edits.size ();
+while (i-- > 0) {
+var e = this.edits.elementAt (i);
+e.undo ();
+}
+});
+Clazz_defineMethod (c$, "redo", 
+function () {
+Clazz_superCall (this, javax.swing.undo.CompoundEdit, "redo", []);
+var cursor = this.edits.elements ();
+while (cursor.hasMoreElements ()) {
+(cursor.nextElement ()).redo ();
+}
+});
+Clazz_defineMethod (c$, "lastEdit", 
+function () {
+var count = this.edits.size ();
+if (count > 0) return this.edits.elementAt (count - 1);
+ else return null;
+});
+Clazz_defineMethod (c$, "die", 
+function () {
+var size = this.edits.size ();
+for (var i = size - 1; i >= 0; i--) {
+var e = this.edits.elementAt (i);
+e.die ();
+}
+Clazz_superCall (this, javax.swing.undo.CompoundEdit, "die", []);
+});
+Clazz_overrideMethod (c$, "addEdit", 
+function (anEdit) {
+if (!this.inProgress) {
+return false;
+} else {
+var last = this.lastEdit ();
+if (last == null) {
+this.edits.addElement (anEdit);
+} else if (!last.addEdit (anEdit)) {
+if (anEdit.replaceEdit (last)) {
+this.edits.removeElementAt (this.edits.size () - 1);
+}this.edits.addElement (anEdit);
+}return true;
+}}, "javax.swing.undo.UndoableEdit");
+Clazz_defineMethod (c$, "end", 
+function () {
+this.inProgress = false;
+});
+Clazz_defineMethod (c$, "canUndo", 
+function () {
+return !this.isInProgress () && Clazz_superCall (this, javax.swing.undo.CompoundEdit, "canUndo", []);
+});
+Clazz_defineMethod (c$, "canRedo", 
+function () {
+return !this.isInProgress () && Clazz_superCall (this, javax.swing.undo.CompoundEdit, "canRedo", []);
+});
+Clazz_defineMethod (c$, "isInProgress", 
+function () {
+return this.inProgress;
+});
+Clazz_overrideMethod (c$, "isSignificant", 
+function () {
+var cursor = this.edits.elements ();
+while (cursor.hasMoreElements ()) {
+if ((cursor.nextElement ()).isSignificant ()) {
+return true;
+}}
+return false;
+});
+Clazz_defineMethod (c$, "getPresentationName", 
+function () {
+var last = this.lastEdit ();
+if (last != null) {
+return last.getPresentationName ();
+} else {
+return Clazz_superCall (this, javax.swing.undo.CompoundEdit, "getPresentationName", []);
+}});
+Clazz_defineMethod (c$, "getUndoPresentationName", 
+function () {
+var last = this.lastEdit ();
+if (last != null) {
+return last.getUndoPresentationName ();
+} else {
+return Clazz_superCall (this, javax.swing.undo.CompoundEdit, "getUndoPresentationName", []);
+}});
+Clazz_defineMethod (c$, "getRedoPresentationName", 
+function () {
+var last = this.lastEdit ();
+if (last != null) {
+return last.getRedoPresentationName ();
+} else {
+return Clazz_superCall (this, javax.swing.undo.CompoundEdit, "getRedoPresentationName", []);
+}});
+Clazz_defineMethod (c$, "toString", 
+function () {
+return Clazz_superCall (this, javax.swing.undo.CompoundEdit, "toString", []) + " inProgress: " + this.inProgress + " edits: " + this.edits;
+});
+});
+Clazz_declarePackage ("javax.swing.event");
+Clazz_load (["java.util.EventObject"], "javax.swing.event.UndoableEditEvent", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.myEdit = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.event, "UndoableEditEvent", java.util.EventObject);
+Clazz_makeConstructor (c$, 
+function (source, edit) {
+Clazz_superConstructor (this, javax.swing.event.UndoableEditEvent, [source]);
+this.myEdit = edit;
+}, "~O,javax.swing.undo.UndoableEdit");
+Clazz_defineMethod (c$, "getEdit", 
+function () {
+return this.myEdit;
+});
+});
+Clazz_declarePackage ("javax.swing.event");
+Clazz_load (["java.util.EventListener"], "javax.swing.event.UndoableEditListener", null, function () {
+Clazz_declareInterface (javax.swing.event, "UndoableEditListener", java.util.EventListener);
+});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["javax.swing.text.Segment"], "javax.swing.text.SegmentCache", ["java.util.ArrayList"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.segments = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text, "SegmentCache");
+c$.getSharedInstance = Clazz_defineMethod (c$, "getSharedInstance", 
+function () {
+return javax.swing.text.SegmentCache.sharedCache;
+});
+c$.getSharedSegment = Clazz_defineMethod (c$, "getSharedSegment", 
+function () {
+return javax.swing.text.SegmentCache.getSharedInstance ().getSegment ();
+});
+c$.releaseSharedSegment = Clazz_defineMethod (c$, "releaseSharedSegment", 
+function (segment) {
+javax.swing.text.SegmentCache.getSharedInstance ().releaseSegment (segment);
+}, "javax.swing.text.Segment");
+Clazz_makeConstructor (c$, 
+function () {
+this.segments =  new java.util.ArrayList (11);
+});
+Clazz_defineMethod (c$, "getSegment", 
+function () {
+{
+var size = this.segments.size ();
+if (size > 0) {
+return this.segments.remove (size - 1);
+}}return  new javax.swing.text.SegmentCache.CachedSegment ();
+});
+Clazz_defineMethod (c$, "releaseSegment", 
+function (segment) {
+if (Clazz_instanceOf (segment, javax.swing.text.SegmentCache.CachedSegment)) {
+{
+segment.array = null;
+segment.count = 0;
+this.segments.add (segment);
+}}}, "javax.swing.text.Segment");
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.SegmentCache, "CachedSegment", javax.swing.text.Segment);
+c$ = Clazz_p0p ();
+c$.sharedCache = c$.prototype.sharedCache =  new javax.swing.text.SegmentCache ();
+});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["java.text.CharacterIterator"], "javax.swing.text.Segment", ["java.lang.IllegalArgumentException", "$.StringIndexOutOfBoundsException"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.array = null;
+this.offset = 0;
+this.count = 0;
+this.partialReturn = false;
+this.pos = 0;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text, "Segment", null, [Cloneable, java.text.CharacterIterator, CharSequence]);
+Clazz_makeConstructor (c$, 
+function () {
+this.construct (null, 0, 0);
+});
+Clazz_makeConstructor (c$, 
+function (array, offset, count) {
+this.array = array;
+this.offset = offset;
+this.count = count;
+this.partialReturn = false;
+}, "~A,~N,~N");
+Clazz_defineMethod (c$, "setPartialReturn", 
+function (p) {
+this.partialReturn = p;
+}, "~B");
+Clazz_defineMethod (c$, "isPartialReturn", 
+function () {
+return this.partialReturn;
+});
+Clazz_overrideMethod (c$, "toString", 
+function () {
+if (this.array != null) {
+return  String.instantialize (this.array, this.offset, this.count);
+}return  String.instantialize ();
+});
+Clazz_overrideMethod (c$, "first", 
+function () {
+this.pos = this.offset;
+if (this.count != 0) {
+return this.array[this.pos];
+}return '\uffff';
+});
+Clazz_overrideMethod (c$, "last", 
+function () {
+this.pos = this.offset + this.count;
+if (this.count != 0) {
+this.pos -= 1;
+return this.array[this.pos];
+}return '\uffff';
+});
+Clazz_overrideMethod (c$, "current", 
+function () {
+if (this.count != 0 && this.pos < this.offset + this.count) {
+return this.array[this.pos];
+}return '\uffff';
+});
+Clazz_overrideMethod (c$, "next", 
+function () {
+this.pos += 1;
+var end = this.offset + this.count;
+if (this.pos >= end) {
+this.pos = end;
+return '\uffff';
+}return this.current ();
+});
+Clazz_overrideMethod (c$, "previous", 
+function () {
+if (this.pos == this.offset) {
+return '\uffff';
+}this.pos -= 1;
+return this.current ();
+});
+Clazz_overrideMethod (c$, "setIndex", 
+function (position) {
+var end = this.offset + this.count;
+if ((position < this.offset) || (position > end)) {
+throw  new IllegalArgumentException ("bad position: " + position);
+}this.pos = position;
+if ((this.pos != end) && (this.count != 0)) {
+return this.array[this.pos];
+}return '\uffff';
+}, "~N");
+Clazz_overrideMethod (c$, "getBeginIndex", 
+function () {
+return this.offset;
+});
+Clazz_overrideMethod (c$, "getEndIndex", 
+function () {
+return this.offset + this.count;
+});
+Clazz_overrideMethod (c$, "getIndex", 
+function () {
+return this.pos;
+});
+Clazz_overrideMethod (c$, "charAt", 
+function (index) {
+if (index < 0 || index >= this.count) {
+throw  new StringIndexOutOfBoundsException (index);
+}return this.array[this.offset + index];
+}, "~N");
+Clazz_overrideMethod (c$, "length", 
+function () {
+return this.count;
+});
+Clazz_overrideMethod (c$, "subSequence", 
+function (start, end) {
+if (start < 0) {
+throw  new StringIndexOutOfBoundsException (start);
+}if (end > this.count) {
+throw  new StringIndexOutOfBoundsException (end);
+}if (start > end) {
+throw  new StringIndexOutOfBoundsException (end - start);
+}var segment =  new javax.swing.text.Segment ();
+segment.array = this.array;
+segment.offset = this.offset + start;
+segment.count = end - start;
+return segment;
+}, "~N,~N");
+Clazz_overrideMethod (c$, "clone", 
+function () {
+var o;
+try {
+o = Clazz_superCall (this, javax.swing.text.Segment, "clone", []);
+} catch (cnse) {
+if (Clazz_exceptionOf (cnse, CloneNotSupportedException)) {
+o = null;
+} else {
+throw cnse;
+}
+}
+return o;
+});
+});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["java.lang.Error"], "javax.swing.text.StateInvariantError", null, function () {
+c$ = Clazz_declareType (javax.swing.text, "StateInvariantError", Error);
+});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["javax.swing.text.AttributeSet"], "javax.swing.text.StyleConstants", ["java.lang.Boolean", "$.Float", "java.awt.Color"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.representation = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text, "StyleConstants");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return this.representation;
+});
+c$.getBidiLevel = Clazz_defineMethod (c$, "getBidiLevel", 
+function (a) {
+var o = a.getAttribute (javax.swing.text.StyleConstants.BidiLevel);
+if (o != null) {
+return o.intValue ();
+}return 0;
+}, "javax.swing.text.AttributeSet");
+c$.setBidiLevel = Clazz_defineMethod (c$, "setBidiLevel", 
+function (a, o) {
+a.addAttribute (javax.swing.text.StyleConstants.BidiLevel,  new Integer (o));
+}, "javax.swing.text.MutableAttributeSet,~N");
+c$.getComponent = Clazz_defineMethod (c$, "getComponent", 
+function (a) {
+return a.getAttribute (javax.swing.text.StyleConstants.ComponentAttribute);
+}, "javax.swing.text.AttributeSet");
+c$.setComponent = Clazz_defineMethod (c$, "setComponent", 
+function (a, c) {
+a.addAttribute ("$ename", "component");
+a.addAttribute (javax.swing.text.StyleConstants.ComponentAttribute, c);
+}, "javax.swing.text.MutableAttributeSet,java.awt.Component");
+c$.getIcon = Clazz_defineMethod (c$, "getIcon", 
+function (a) {
+return a.getAttribute (javax.swing.text.StyleConstants.IconAttribute);
+}, "javax.swing.text.AttributeSet");
+c$.setIcon = Clazz_defineMethod (c$, "setIcon", 
+function (a, c) {
+a.addAttribute ("$ename", "icon");
+a.addAttribute (javax.swing.text.StyleConstants.IconAttribute, c);
+}, "javax.swing.text.MutableAttributeSet,javax.swing.Icon");
+c$.getFontFamily = Clazz_defineMethod (c$, "getFontFamily", 
+function (a) {
+var family = a.getAttribute (javax.swing.text.StyleConstants.FontFamily);
+if (family == null) {
+family = "Monospaced";
+}return family;
+}, "javax.swing.text.AttributeSet");
+c$.setFontFamily = Clazz_defineMethod (c$, "setFontFamily", 
+function (a, fam) {
+a.addAttribute (javax.swing.text.StyleConstants.FontFamily, fam);
+}, "javax.swing.text.MutableAttributeSet,~S");
+c$.getFontSize = Clazz_defineMethod (c$, "getFontSize", 
+function (a) {
+var size = a.getAttribute (javax.swing.text.StyleConstants.FontSize);
+if (size != null) {
+return size.intValue ();
+}return 12;
+}, "javax.swing.text.AttributeSet");
+c$.setFontSize = Clazz_defineMethod (c$, "setFontSize", 
+function (a, s) {
+a.addAttribute (javax.swing.text.StyleConstants.FontSize,  new Integer (s));
+}, "javax.swing.text.MutableAttributeSet,~N");
+c$.isBold = Clazz_defineMethod (c$, "isBold", 
+function (a) {
+var bold = a.getAttribute (javax.swing.text.StyleConstants.Bold);
+if (bold != null) {
+return bold.booleanValue ();
+}return false;
+}, "javax.swing.text.AttributeSet");
+c$.setBold = Clazz_defineMethod (c$, "setBold", 
+function (a, b) {
+a.addAttribute (javax.swing.text.StyleConstants.Bold, Boolean.$valueOf (b));
+}, "javax.swing.text.MutableAttributeSet,~B");
+c$.isItalic = Clazz_defineMethod (c$, "isItalic", 
+function (a) {
+var italic = a.getAttribute (javax.swing.text.StyleConstants.Italic);
+if (italic != null) {
+return italic.booleanValue ();
+}return false;
+}, "javax.swing.text.AttributeSet");
+c$.setItalic = Clazz_defineMethod (c$, "setItalic", 
+function (a, b) {
+a.addAttribute (javax.swing.text.StyleConstants.Italic, Boolean.$valueOf (b));
+}, "javax.swing.text.MutableAttributeSet,~B");
+c$.isUnderline = Clazz_defineMethod (c$, "isUnderline", 
+function (a) {
+var underline = a.getAttribute (javax.swing.text.StyleConstants.Underline);
+if (underline != null) {
+return underline.booleanValue ();
+}return false;
+}, "javax.swing.text.AttributeSet");
+c$.isStrikeThrough = Clazz_defineMethod (c$, "isStrikeThrough", 
+function (a) {
+var strike = a.getAttribute (javax.swing.text.StyleConstants.StrikeThrough);
+if (strike != null) {
+return strike.booleanValue ();
+}return false;
+}, "javax.swing.text.AttributeSet");
+c$.isSuperscript = Clazz_defineMethod (c$, "isSuperscript", 
+function (a) {
+var superscript = a.getAttribute (javax.swing.text.StyleConstants.Superscript);
+if (superscript != null) {
+return superscript.booleanValue ();
+}return false;
+}, "javax.swing.text.AttributeSet");
+c$.isSubscript = Clazz_defineMethod (c$, "isSubscript", 
+function (a) {
+var subscript = a.getAttribute (javax.swing.text.StyleConstants.Subscript);
+if (subscript != null) {
+return subscript.booleanValue ();
+}return false;
+}, "javax.swing.text.AttributeSet");
+c$.setUnderline = Clazz_defineMethod (c$, "setUnderline", 
+function (a, b) {
+a.addAttribute (javax.swing.text.StyleConstants.Underline, Boolean.$valueOf (b));
+}, "javax.swing.text.MutableAttributeSet,~B");
+c$.setStrikeThrough = Clazz_defineMethod (c$, "setStrikeThrough", 
+function (a, b) {
+a.addAttribute (javax.swing.text.StyleConstants.StrikeThrough, Boolean.$valueOf (b));
+}, "javax.swing.text.MutableAttributeSet,~B");
+c$.setSuperscript = Clazz_defineMethod (c$, "setSuperscript", 
+function (a, b) {
+a.addAttribute (javax.swing.text.StyleConstants.Superscript, Boolean.$valueOf (b));
+}, "javax.swing.text.MutableAttributeSet,~B");
+c$.setSubscript = Clazz_defineMethod (c$, "setSubscript", 
+function (a, b) {
+a.addAttribute (javax.swing.text.StyleConstants.Subscript, Boolean.$valueOf (b));
+}, "javax.swing.text.MutableAttributeSet,~B");
+c$.getForeground = Clazz_defineMethod (c$, "getForeground", 
+function (a) {
+var fg = a.getAttribute (javax.swing.text.StyleConstants.Foreground);
+if (fg == null) {
+fg = java.awt.Color.black;
+}return fg;
+}, "javax.swing.text.AttributeSet");
+c$.setForeground = Clazz_defineMethod (c$, "setForeground", 
+function (a, fg) {
+a.addAttribute (javax.swing.text.StyleConstants.Foreground, fg);
+}, "javax.swing.text.MutableAttributeSet,java.awt.Color");
+c$.getBackground = Clazz_defineMethod (c$, "getBackground", 
+function (a) {
+var fg = a.getAttribute (javax.swing.text.StyleConstants.Background);
+if (fg == null) {
+fg = java.awt.Color.black;
+}return fg;
+}, "javax.swing.text.AttributeSet");
+c$.setBackground = Clazz_defineMethod (c$, "setBackground", 
+function (a, fg) {
+a.addAttribute (javax.swing.text.StyleConstants.Background, fg);
+}, "javax.swing.text.MutableAttributeSet,java.awt.Color");
+c$.getFirstLineIndent = Clazz_defineMethod (c$, "getFirstLineIndent", 
+function (a) {
+var indent = a.getAttribute (javax.swing.text.StyleConstants.FirstLineIndent);
+if (indent != null) {
+return indent.floatValue ();
+}return 0;
+}, "javax.swing.text.AttributeSet");
+c$.setFirstLineIndent = Clazz_defineMethod (c$, "setFirstLineIndent", 
+function (a, i) {
+a.addAttribute (javax.swing.text.StyleConstants.FirstLineIndent,  new Float (i));
+}, "javax.swing.text.MutableAttributeSet,~N");
+c$.getRightIndent = Clazz_defineMethod (c$, "getRightIndent", 
+function (a) {
+var indent = a.getAttribute (javax.swing.text.StyleConstants.RightIndent);
+if (indent != null) {
+return indent.floatValue ();
+}return 0;
+}, "javax.swing.text.AttributeSet");
+c$.setRightIndent = Clazz_defineMethod (c$, "setRightIndent", 
+function (a, i) {
+a.addAttribute (javax.swing.text.StyleConstants.RightIndent,  new Float (i));
+}, "javax.swing.text.MutableAttributeSet,~N");
+c$.getLeftIndent = Clazz_defineMethod (c$, "getLeftIndent", 
+function (a) {
+var indent = a.getAttribute (javax.swing.text.StyleConstants.LeftIndent);
+if (indent != null) {
+return indent.floatValue ();
+}return 0;
+}, "javax.swing.text.AttributeSet");
+c$.setLeftIndent = Clazz_defineMethod (c$, "setLeftIndent", 
+function (a, i) {
+a.addAttribute (javax.swing.text.StyleConstants.LeftIndent,  new Float (i));
+}, "javax.swing.text.MutableAttributeSet,~N");
+c$.getLineSpacing = Clazz_defineMethod (c$, "getLineSpacing", 
+function (a) {
+var space = a.getAttribute (javax.swing.text.StyleConstants.LineSpacing);
+if (space != null) {
+return space.floatValue ();
+}return 0;
+}, "javax.swing.text.AttributeSet");
+c$.setLineSpacing = Clazz_defineMethod (c$, "setLineSpacing", 
+function (a, i) {
+a.addAttribute (javax.swing.text.StyleConstants.LineSpacing,  new Float (i));
+}, "javax.swing.text.MutableAttributeSet,~N");
+c$.getSpaceAbove = Clazz_defineMethod (c$, "getSpaceAbove", 
+function (a) {
+var space = a.getAttribute (javax.swing.text.StyleConstants.SpaceAbove);
+if (space != null) {
+return space.floatValue ();
+}return 0;
+}, "javax.swing.text.AttributeSet");
+c$.setSpaceAbove = Clazz_defineMethod (c$, "setSpaceAbove", 
+function (a, i) {
+a.addAttribute (javax.swing.text.StyleConstants.SpaceAbove,  new Float (i));
+}, "javax.swing.text.MutableAttributeSet,~N");
+c$.getSpaceBelow = Clazz_defineMethod (c$, "getSpaceBelow", 
+function (a) {
+var space = a.getAttribute (javax.swing.text.StyleConstants.SpaceBelow);
+if (space != null) {
+return space.floatValue ();
+}return 0;
+}, "javax.swing.text.AttributeSet");
+c$.setSpaceBelow = Clazz_defineMethod (c$, "setSpaceBelow", 
+function (a, i) {
+a.addAttribute (javax.swing.text.StyleConstants.SpaceBelow,  new Float (i));
+}, "javax.swing.text.MutableAttributeSet,~N");
+c$.getAlignment = Clazz_defineMethod (c$, "getAlignment", 
+function (a) {
+var align = a.getAttribute (javax.swing.text.StyleConstants.Alignment);
+if (align != null) {
+return align.intValue ();
+}return 0;
+}, "javax.swing.text.AttributeSet");
+c$.setAlignment = Clazz_defineMethod (c$, "setAlignment", 
+function (a, align) {
+a.addAttribute (javax.swing.text.StyleConstants.Alignment,  new Integer (align));
+}, "javax.swing.text.MutableAttributeSet,~N");
+c$.getTabSet = Clazz_defineMethod (c$, "getTabSet", 
+function (a) {
+var tabs = a.getAttribute (javax.swing.text.StyleConstants.TabSet);
+return tabs;
+}, "javax.swing.text.AttributeSet");
+c$.setTabSet = Clazz_defineMethod (c$, "setTabSet", 
+function (a, tabs) {
+a.addAttribute (javax.swing.text.StyleConstants.TabSet, tabs);
+}, "javax.swing.text.MutableAttributeSet,javax.swing.text.TabSet");
+Clazz_makeConstructor (c$, 
+function (representation) {
+this.representation = representation;
+}, "~S");
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.StyleConstants, "ParagraphConstants", javax.swing.text.StyleConstants, javax.swing.text.AttributeSet.ParagraphAttribute);
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.StyleConstants, "CharacterConstants", javax.swing.text.StyleConstants, javax.swing.text.AttributeSet.CharacterAttribute);
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.StyleConstants, "ColorConstants", javax.swing.text.StyleConstants, [javax.swing.text.AttributeSet.ColorAttribute, javax.swing.text.AttributeSet.CharacterAttribute]);
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.StyleConstants, "FontConstants", javax.swing.text.StyleConstants, [javax.swing.text.AttributeSet.FontAttribute, javax.swing.text.AttributeSet.CharacterAttribute]);
+c$ = Clazz_p0p ();
+Clazz_defineStatics (c$,
+"ComponentElementName", "component",
+"IconElementName", "icon");
+c$.NameAttribute = c$.prototype.NameAttribute =  new javax.swing.text.StyleConstants ("name");
+c$.ResolveAttribute = c$.prototype.ResolveAttribute =  new javax.swing.text.StyleConstants ("resolver");
+c$.ModelAttribute = c$.prototype.ModelAttribute =  new javax.swing.text.StyleConstants ("model");
+c$.BidiLevel = c$.prototype.BidiLevel =  new javax.swing.text.StyleConstants.CharacterConstants ("bidiLevel");
+c$.FontFamily = c$.prototype.FontFamily =  new javax.swing.text.StyleConstants.FontConstants ("family");
+c$.Family = c$.prototype.Family = javax.swing.text.StyleConstants.FontFamily;
+c$.FontSize = c$.prototype.FontSize =  new javax.swing.text.StyleConstants.FontConstants ("size");
+c$.Size = c$.prototype.Size = javax.swing.text.StyleConstants.FontSize;
+c$.Bold = c$.prototype.Bold =  new javax.swing.text.StyleConstants.FontConstants ("bold");
+c$.Italic = c$.prototype.Italic =  new javax.swing.text.StyleConstants.FontConstants ("italic");
+c$.Underline = c$.prototype.Underline =  new javax.swing.text.StyleConstants.CharacterConstants ("underline");
+c$.StrikeThrough = c$.prototype.StrikeThrough =  new javax.swing.text.StyleConstants.CharacterConstants ("strikethrough");
+c$.Superscript = c$.prototype.Superscript =  new javax.swing.text.StyleConstants.CharacterConstants ("superscript");
+c$.Subscript = c$.prototype.Subscript =  new javax.swing.text.StyleConstants.CharacterConstants ("subscript");
+c$.Foreground = c$.prototype.Foreground =  new javax.swing.text.StyleConstants.ColorConstants ("foreground");
+c$.Background = c$.prototype.Background =  new javax.swing.text.StyleConstants.ColorConstants ("background");
+c$.ComponentAttribute = c$.prototype.ComponentAttribute =  new javax.swing.text.StyleConstants.CharacterConstants ("component");
+c$.IconAttribute = c$.prototype.IconAttribute =  new javax.swing.text.StyleConstants.CharacterConstants ("icon");
+c$.ComposedTextAttribute = c$.prototype.ComposedTextAttribute =  new javax.swing.text.StyleConstants ("composed text");
+c$.FirstLineIndent = c$.prototype.FirstLineIndent =  new javax.swing.text.StyleConstants.ParagraphConstants ("FirstLineIndent");
+c$.LeftIndent = c$.prototype.LeftIndent =  new javax.swing.text.StyleConstants.ParagraphConstants ("LeftIndent");
+c$.RightIndent = c$.prototype.RightIndent =  new javax.swing.text.StyleConstants.ParagraphConstants ("RightIndent");
+c$.LineSpacing = c$.prototype.LineSpacing =  new javax.swing.text.StyleConstants.ParagraphConstants ("LineSpacing");
+c$.SpaceAbove = c$.prototype.SpaceAbove =  new javax.swing.text.StyleConstants.ParagraphConstants ("SpaceAbove");
+c$.SpaceBelow = c$.prototype.SpaceBelow =  new javax.swing.text.StyleConstants.ParagraphConstants ("SpaceBelow");
+c$.Alignment = c$.prototype.Alignment =  new javax.swing.text.StyleConstants.ParagraphConstants ("Alignment");
+c$.TabSet = c$.prototype.TabSet =  new javax.swing.text.StyleConstants.ParagraphConstants ("TabSet");
+c$.Orientation = c$.prototype.Orientation =  new javax.swing.text.StyleConstants.ParagraphConstants ("Orientation");
+Clazz_defineStatics (c$,
+"ALIGN_LEFT", 0,
+"ALIGN_CENTER", 1,
+"ALIGN_RIGHT", 2,
+"ALIGN_JUSTIFIED", 3);
+c$.keys = c$.prototype.keys =  Clazz_newArray (-1, [javax.swing.text.StyleConstants.NameAttribute, javax.swing.text.StyleConstants.ResolveAttribute, javax.swing.text.StyleConstants.BidiLevel, javax.swing.text.StyleConstants.FontFamily, javax.swing.text.StyleConstants.FontSize, javax.swing.text.StyleConstants.Bold, javax.swing.text.StyleConstants.Italic, javax.swing.text.StyleConstants.Underline, javax.swing.text.StyleConstants.StrikeThrough, javax.swing.text.StyleConstants.Superscript, javax.swing.text.StyleConstants.Subscript, javax.swing.text.StyleConstants.Foreground, javax.swing.text.StyleConstants.Background, javax.swing.text.StyleConstants.ComponentAttribute, javax.swing.text.StyleConstants.IconAttribute, javax.swing.text.StyleConstants.FirstLineIndent, javax.swing.text.StyleConstants.LeftIndent, javax.swing.text.StyleConstants.RightIndent, javax.swing.text.StyleConstants.LineSpacing, javax.swing.text.StyleConstants.SpaceAbove, javax.swing.text.StyleConstants.SpaceBelow, javax.swing.text.StyleConstants.Alignment, javax.swing.text.StyleConstants.TabSet, javax.swing.text.StyleConstants.Orientation, javax.swing.text.StyleConstants.ModelAttribute, javax.swing.text.StyleConstants.ComposedTextAttribute]);
+});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["java.util.Enumeration", "javax.swing.text.AbstractDocument", "$.AttributeSet", "$.Style", "java.util.Collections", "$.HashMap", "$.Hashtable", "$.Vector", "javax.swing.event.EventListenerList", "javax.swing.text.SimpleAttributeSet"], "javax.swing.text.StyleContext", ["java.util.NoSuchElementException", "java.awt.Font", "$.Toolkit", "javax.swing.SwingUtilities", "javax.swing.event.ChangeEvent", "$.ChangeListener", "javax.swing.text.MutableAttributeSet", "$.StyleConstants"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.styles = null;
+this.fontSearch = null;
+this.fontTable = null;
+this.attributesPool = null;
+this.search = null;
+if (!Clazz_isClassDefined ("javax.swing.text.StyleContext.SmallAttributeSet")) {
+javax.swing.text.StyleContext.$StyleContext$SmallAttributeSet$ ();
+}
+if (!Clazz_isClassDefined ("javax.swing.text.StyleContext.KeyEnumeration")) {
+javax.swing.text.StyleContext.$StyleContext$KeyEnumeration$ ();
+}
+if (!Clazz_isClassDefined ("javax.swing.text.StyleContext.KeyBuilder")) {
+javax.swing.text.StyleContext.$StyleContext$KeyBuilder$ ();
+}
+if (!Clazz_isClassDefined ("javax.swing.text.StyleContext.NamedStyle")) {
+javax.swing.text.StyleContext.$StyleContext$NamedStyle$ ();
+}
+Clazz_instantialize (this, arguments);
+}, javax.swing.text, "StyleContext", null, javax.swing.text.AbstractDocument.AttributeContext);
+Clazz_prepareFields (c$, function () {
+this.fontSearch =  new javax.swing.text.StyleContext.FontKey (null, 0, 0);
+this.fontTable =  new java.util.Hashtable ();
+this.attributesPool = java.util.Collections.synchronizedMap ( new java.util.HashMap ());
+this.search =  new javax.swing.text.SimpleAttributeSet ();
+});
+c$.getDefaultStyleContext = Clazz_defineMethod (c$, "getDefaultStyleContext", 
+function () {
+if (javax.swing.text.StyleContext.defaultContext == null) {
+javax.swing.text.StyleContext.defaultContext =  new javax.swing.text.StyleContext ();
+}return javax.swing.text.StyleContext.defaultContext;
+});
+Clazz_makeConstructor (c$, 
+function () {
+this.styles = Clazz_innerTypeInstance (javax.swing.text.StyleContext.NamedStyle, this, null, null);
+this.addStyle ("default", null);
+});
+Clazz_defineMethod (c$, "addStyle", 
+function (nm, parent) {
+var style = Clazz_innerTypeInstance (javax.swing.text.StyleContext.NamedStyle, this, null, nm, parent);
+if (nm != null) {
+this.styles.addAttribute (nm, style);
+}return style;
+}, "~S,javax.swing.text.Style");
+Clazz_defineMethod (c$, "removeStyle", 
+function (nm) {
+this.styles.removeAttribute (nm);
+}, "~S");
+Clazz_defineMethod (c$, "getStyle", 
+function (nm) {
+return this.styles.getAttribute (nm);
+}, "~S");
+Clazz_defineMethod (c$, "getStyleNames", 
+function () {
+return this.styles.getAttributeNames ();
+});
+Clazz_defineMethod (c$, "addChangeListener", 
+function (l) {
+this.styles.addChangeListener (l);
+}, "javax.swing.event.ChangeListener");
+Clazz_defineMethod (c$, "removeChangeListener", 
+function (l) {
+this.styles.removeChangeListener (l);
+}, "javax.swing.event.ChangeListener");
+Clazz_defineMethod (c$, "getChangeListeners", 
+function () {
+return (this.styles).getChangeListeners ();
+});
+Clazz_defineMethod (c$, "getFont", 
+function (attr) {
+var style = 0;
+if (javax.swing.text.StyleConstants.isBold (attr)) {
+style |= 1;
+}if (javax.swing.text.StyleConstants.isItalic (attr)) {
+style |= 2;
+}var family = javax.swing.text.StyleConstants.getFontFamily (attr);
+var size = javax.swing.text.StyleConstants.getFontSize (attr);
+if (javax.swing.text.StyleConstants.isSuperscript (attr) || javax.swing.text.StyleConstants.isSubscript (attr)) {
+size -= 2;
+}return this.getFont (family, style, size);
+}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "getForeground", 
+function (attr) {
+return javax.swing.text.StyleConstants.getForeground (attr);
+}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "getBackground", 
+function (attr) {
+return javax.swing.text.StyleConstants.getBackground (attr);
+}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "getFont", 
+function (family, style, size) {
+this.fontSearch.setValue (family, style, size);
+var f = this.fontTable.get (this.fontSearch);
+if (f == null) {
+var defaultStyle = this.getStyle ("default");
+if (defaultStyle != null) {
+var FONT_ATTRIBUTE_KEY = "FONT_ATTRIBUTE_KEY";
+var defaultFont = defaultStyle.getAttribute ("FONT_ATTRIBUTE_KEY");
+if (defaultFont != null && defaultFont.getFamily ().equalsIgnoreCase (family)) {
+f = defaultFont.deriveFont (style, size);
+}}if (f == null) {
+f =  new java.awt.Font (family, style, size);
+}var key =  new javax.swing.text.StyleContext.FontKey (family, style, size);
+this.fontTable.put (key, f);
+}return f;
+}, "~S,~N,~N");
+Clazz_defineMethod (c$, "getFontMetrics", 
+function (f) {
+return java.awt.Toolkit.getDefaultToolkit ().getFontMetrics (f);
+}, "java.awt.Font");
+Clazz_overrideMethod (c$, "addAttribute", 
+function (old, name, value) {
+if ((old.getAttributeCount () + 1) <= this.getCompressionThreshold ()) {
+this.search.removeAttributes (this.search);
+this.search.addAttributes (old);
+this.search.addAttribute (name, value);
+this.reclaim (old);
+return this.getImmutableUniqueSet ();
+}var ma = this.getMutableAttributeSet (old);
+ma.addAttribute (name, value);
+return ma;
+}, "javax.swing.text.AttributeSet,~O,~O");
+Clazz_overrideMethod (c$, "addAttributes", 
+function (old, attr) {
+if ((old.getAttributeCount () + attr.getAttributeCount ()) <= this.getCompressionThreshold ()) {
+this.search.removeAttributes (this.search);
+this.search.addAttributes (old);
+this.search.addAttributes (attr);
+this.reclaim (old);
+return this.getImmutableUniqueSet ();
+}var ma = this.getMutableAttributeSet (old);
+ma.addAttributes (attr);
+return ma;
+}, "javax.swing.text.AttributeSet,javax.swing.text.AttributeSet");
+Clazz_overrideMethod (c$, "removeAttribute", 
+function (old, name) {
+if ((old.getAttributeCount () - 1) <= this.getCompressionThreshold ()) {
+this.search.removeAttributes (this.search);
+this.search.addAttributes (old);
+this.search.removeAttribute (name);
+this.reclaim (old);
+return this.getImmutableUniqueSet ();
+}var ma = this.getMutableAttributeSet (old);
+ma.removeAttribute (name);
+return ma;
+}, "javax.swing.text.AttributeSet,~O");
+Clazz_defineMethod (c$, "removeAttributes", 
+function (old, names) {
+if (old.getAttributeCount () <= this.getCompressionThreshold ()) {
+this.search.removeAttributes (this.search);
+this.search.addAttributes (old);
+this.search.removeAttributes (names);
+this.reclaim (old);
+return this.getImmutableUniqueSet ();
+}var ma = this.getMutableAttributeSet (old);
+ma.removeAttributes (names);
+return ma;
+}, "javax.swing.text.AttributeSet,java.util.Enumeration");
+Clazz_defineMethod (c$, "removeAttributes", 
+function (old, attrs) {
+if (old.getAttributeCount () <= this.getCompressionThreshold ()) {
+this.search.removeAttributes (this.search);
+this.search.addAttributes (old);
+this.search.removeAttributes (attrs);
+this.reclaim (old);
+return this.getImmutableUniqueSet ();
+}var ma = this.getMutableAttributeSet (old);
+ma.removeAttributes (attrs);
+return ma;
+}, "javax.swing.text.AttributeSet,javax.swing.text.AttributeSet");
+Clazz_overrideMethod (c$, "getEmptySet", 
+function () {
+return javax.swing.text.SimpleAttributeSet.EMPTY;
+});
+Clazz_overrideMethod (c$, "reclaim", 
+function (a) {
+if (javax.swing.SwingUtilities.isEventDispatchThread ()) {
+this.attributesPool.size ();
+}}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "getCompressionThreshold", 
+function () {
+return 9;
+});
+Clazz_defineMethod (c$, "createSmallAttributeSet", 
+function (a) {
+return Clazz_innerTypeInstance (javax.swing.text.StyleContext.SmallAttributeSet, this, null, a);
+}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "createLargeAttributeSet", 
+function (a) {
+return  new javax.swing.text.SimpleAttributeSet (a);
+}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "removeUnusedSets", 
+function () {
+this.attributesPool.size ();
+});
+Clazz_defineMethod (c$, "getImmutableUniqueSet", 
+function () {
+return null;
+});
+Clazz_defineMethod (c$, "getMutableAttributeSet", 
+function (a) {
+if (Clazz_instanceOf (a, javax.swing.text.MutableAttributeSet) && a !== javax.swing.text.SimpleAttributeSet.EMPTY) {
+return a;
+}return this.createLargeAttributeSet (a);
+}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "toString", 
+function () {
+this.removeUnusedSets ();
+var s = "";
+var iterator = this.attributesPool.keySet ().iterator ();
+while (iterator.hasNext ()) {
+var set = iterator.next ();
+s = s + set + "\n";
+}
+return s;
+});
+c$.registerStaticAttributeKey = Clazz_defineMethod (c$, "registerStaticAttributeKey", 
+function (key) {
+var ioFmt = key.getClass ().getName () + "." + key.toString ();
+if (javax.swing.text.StyleContext.freezeKeyMap == null) {
+javax.swing.text.StyleContext.freezeKeyMap =  new java.util.Hashtable ();
+javax.swing.text.StyleContext.thawKeyMap =  new java.util.Hashtable ();
+}javax.swing.text.StyleContext.freezeKeyMap.put (key, ioFmt);
+javax.swing.text.StyleContext.thawKeyMap.put (ioFmt, key);
+}, "~O");
+c$.getStaticAttribute = Clazz_defineMethod (c$, "getStaticAttribute", 
+function (key) {
+if (javax.swing.text.StyleContext.thawKeyMap == null || key == null) {
+return null;
+}return javax.swing.text.StyleContext.thawKeyMap.get (key);
+}, "~O");
+c$.getStaticAttributeKey = Clazz_defineMethod (c$, "getStaticAttributeKey", 
+function (key) {
+return key.getClass ().getName () + "." + key.toString ();
+}, "~O");
+c$.$StyleContext$SmallAttributeSet$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.attributes = null;
+this.resolveParent = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.StyleContext, "SmallAttributeSet", null, javax.swing.text.AttributeSet);
+Clazz_makeConstructor (c$, 
+function (a) {
+this.attributes = a;
+this.updateResolveParent ();
+}, "~A");
+Clazz_makeConstructor (c$, 
+function (a) {
+var b = a.getAttributeCount ();
+var c =  new Array (2 * b);
+var d = a.getAttributeNames ();
+var e = 0;
+while (d.hasMoreElements ()) {
+c[e] = d.nextElement ();
+c[e + 1] = a.getAttribute (c[e]);
+e += 2;
+}
+this.attributes = c;
+this.updateResolveParent ();
+}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "updateResolveParent", 
+ function () {
+this.resolveParent = null;
+var a = this.attributes;
+for (var b = 0; b < a.length; b += 2) {
+if (a[b] === javax.swing.text.StyleConstants.ResolveAttribute) {
+this.resolveParent = a[b + 1];
+break;
+}}
+});
+Clazz_defineMethod (c$, "getLocalAttribute", 
+function (a) {
+if (a === javax.swing.text.StyleConstants.ResolveAttribute) {
+return this.resolveParent;
+}var b = this.attributes;
+for (var c = 0; c < b.length; c += 2) {
+if (a.equals (b[c])) {
+return b[c + 1];
+}}
+return null;
+}, "~O");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+var a = "{";
+var b = this.attributes;
+for (var c = 0; c < b.length; c += 2) {
+if (Clazz_instanceOf (b[c + 1], javax.swing.text.AttributeSet)) {
+a = a + b[c] + "=" + "AttributeSet" + ",";
+} else {
+a = a + b[c] + "=" + b[c + 1] + ",";
+}}
+a = a + "}";
+return a;
+});
+Clazz_defineMethod (c$, "hashCode", 
+function () {
+var a = 0;
+var b = this.attributes;
+for (var c = 1; c < b.length; c += 2) {
+a ^= b[c].hashCode ();
+}
+return a;
+});
+Clazz_defineMethod (c$, "equals", 
+function (a) {
+if (Clazz_instanceOf (a, javax.swing.text.AttributeSet)) {
+var b = a;
+return ((this.getAttributeCount () == b.getAttributeCount ()) && this.containsAttributes (b));
+}return false;
+}, "~O");
+Clazz_overrideMethod (c$, "clone", 
+function () {
+return this;
+});
+Clazz_defineMethod (c$, "getAttributeCount", 
+function () {
+return Clazz_doubleToInt (this.attributes.length / 2);
+});
+Clazz_overrideMethod (c$, "isDefined", 
+function (a) {
+var b = this.attributes;
+var c = b.length;
+for (var d = 0; d < c; d += 2) {
+if (a.equals (b[d])) {
+return true;
+}}
+return false;
+}, "~O");
+Clazz_overrideMethod (c$, "isEqual", 
+function (a) {
+if (Clazz_instanceOf (a, javax.swing.text.StyleContext.SmallAttributeSet)) {
+return a === this;
+}return ((this.getAttributeCount () == a.getAttributeCount ()) && this.containsAttributes (a));
+}, "javax.swing.text.AttributeSet");
+Clazz_overrideMethod (c$, "copyAttributes", 
+function () {
+return this;
+});
+Clazz_defineMethod (c$, "getAttribute", 
+function (a) {
+var b = this.getLocalAttribute (a);
+if (b == null) {
+var c = this.getResolveParent ();
+if (c != null) b = c.getAttribute (a);
+}return b;
+}, "~O");
+Clazz_defineMethod (c$, "getAttributeNames", 
+function () {
+return Clazz_innerTypeInstance (javax.swing.text.StyleContext.KeyEnumeration, this, null, this.attributes);
+});
+Clazz_overrideMethod (c$, "containsAttribute", 
+function (a, b) {
+return b.equals (this.getAttribute (a));
+}, "~O,~O");
+Clazz_overrideMethod (c$, "containsAttributes", 
+function (a) {
+var b = true;
+var c = a.getAttributeNames ();
+while (b && c.hasMoreElements ()) {
+var d = c.nextElement ();
+b = a.getAttribute (d).equals (this.getAttribute (d));
+}
+return b;
+}, "javax.swing.text.AttributeSet");
+Clazz_overrideMethod (c$, "getResolveParent", 
+function () {
+return this.resolveParent;
+});
+c$ = Clazz_p0p ();
+};
+c$.$StyleContext$KeyEnumeration$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.attr = null;
+this.i = 0;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.StyleContext, "KeyEnumeration", null, java.util.Enumeration);
+Clazz_makeConstructor (c$, 
+function (a) {
+this.attr = a;
+this.i = 0;
+}, "~A");
+Clazz_overrideMethod (c$, "hasMoreElements", 
+function () {
+return this.i < this.attr.length;
+});
+Clazz_overrideMethod (c$, "nextElement", 
+function () {
+if (this.i < this.attr.length) {
+var a = this.attr[this.i];
+this.i += 2;
+return a;
+}throw  new java.util.NoSuchElementException ();
+});
+c$ = Clazz_p0p ();
+};
+c$.$StyleContext$KeyBuilder$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.keys = null;
+this.data = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.StyleContext, "KeyBuilder");
+Clazz_prepareFields (c$, function () {
+this.keys =  new java.util.Vector ();
+this.data =  new java.util.Vector ();
+});
+Clazz_defineMethod (c$, "initialize", 
+function (a) {
+if (Clazz_instanceOf (a, javax.swing.text.StyleContext.SmallAttributeSet)) {
+this.initialize ((a).attributes);
+} else {
+this.keys.removeAllElements ();
+this.data.removeAllElements ();
+var b = a.getAttributeNames ();
+while (b.hasMoreElements ()) {
+var c = b.nextElement ();
+this.addAttribute (c, a.getAttribute (c));
+}
+}}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "initialize", 
+ function (a) {
+this.keys.removeAllElements ();
+this.data.removeAllElements ();
+var b = a.length;
+for (var c = 0; c < b; c += 2) {
+this.keys.addElement (a[c]);
+this.data.addElement (a[c + 1]);
+}
+}, "~A");
+Clazz_defineMethod (c$, "createTable", 
+function () {
+var a = this.keys.size ();
+var b =  new Array (2 * a);
+for (var c = 0; c < a; c++) {
+var d = 2 * c;
+b[d] = this.keys.elementAt (c);
+b[d + 1] = this.data.elementAt (c);
+}
+return b;
+});
+Clazz_defineMethod (c$, "getCount", 
+function () {
+return this.keys.size ();
+});
+Clazz_defineMethod (c$, "addAttribute", 
+function (a, b) {
+this.keys.addElement (a);
+this.data.addElement (b);
+}, "~O,~O");
+Clazz_defineMethod (c$, "addAttributes", 
+function (a) {
+if (Clazz_instanceOf (a, javax.swing.text.StyleContext.SmallAttributeSet)) {
+var b = (a).attributes;
+var c = b.length;
+for (var d = 0; d < c; d += 2) {
+this.addAttribute (b[d], b[d + 1]);
+}
+} else {
+var b = a.getAttributeNames ();
+while (b.hasMoreElements ()) {
+var c = b.nextElement ();
+this.addAttribute (c, a.getAttribute (c));
+}
+}}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "removeAttribute", 
+function (a) {
+var b = this.keys.size ();
+for (var c = 0; c < b; c++) {
+if (this.keys.elementAt (c).equals (a)) {
+this.keys.removeElementAt (c);
+this.data.removeElementAt (c);
+return;
+}}
+}, "~O");
+Clazz_defineMethod (c$, "removeAttributes", 
+function (a) {
+while (a.hasMoreElements ()) {
+var b = a.nextElement ();
+this.removeAttribute (b);
+}
+}, "java.util.Enumeration");
+Clazz_defineMethod (c$, "removeAttributes", 
+function (a) {
+var b = a.getAttributeNames ();
+while (b.hasMoreElements ()) {
+var c = b.nextElement ();
+var d = a.getAttribute (c);
+this.removeSearchAttribute (c, d);
+}
+}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "removeSearchAttribute", 
+ function (a, b) {
+var c = this.keys.size ();
+for (var d = 0; d < c; d++) {
+if (this.keys.elementAt (d).equals (a)) {
+if (this.data.elementAt (d).equals (b)) {
+this.keys.removeElementAt (d);
+this.data.removeElementAt (d);
+}return;
+}}
+}, "~O,~O");
+c$ = Clazz_p0p ();
+};
+c$.$StyleContext$NamedStyle$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.listenerList = null;
+this.changeEvent = null;
+this.attributes = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.StyleContext, "NamedStyle", null, javax.swing.text.Style);
+Clazz_prepareFields (c$, function () {
+this.listenerList =  new javax.swing.event.EventListenerList ();
+});
+Clazz_makeConstructor (c$, 
+function (a, b) {
+this.attributes = this.b$["javax.swing.text.StyleContext"].getEmptySet ();
+if (a != null) {
+this.setName (a);
+}if (b != null) {
+this.setResolveParent (b);
+}}, "~S,javax.swing.text.Style");
+Clazz_makeConstructor (c$, 
+function (a) {
+this.construct (null, a);
+}, "javax.swing.text.Style");
+Clazz_makeConstructor (c$, 
+function () {
+this.attributes = this.b$["javax.swing.text.StyleContext"].getEmptySet ();
+});
+Clazz_defineMethod (c$, "toString", 
+function () {
+return "NamedStyle:" + this.getName () + " " + this.attributes;
+});
+Clazz_overrideMethod (c$, "getName", 
+function () {
+if (this.isDefined (javax.swing.text.StyleConstants.NameAttribute)) {
+return this.getAttribute (javax.swing.text.StyleConstants.NameAttribute).toString ();
+}return null;
+});
+Clazz_defineMethod (c$, "setName", 
+function (a) {
+if (a != null) {
+this.addAttribute (javax.swing.text.StyleConstants.NameAttribute, a);
+}}, "~S");
+Clazz_overrideMethod (c$, "addChangeListener", 
+function (a) {
+this.listenerList.add (javax.swing.event.ChangeListener, a);
+}, "javax.swing.event.ChangeListener");
+Clazz_overrideMethod (c$, "removeChangeListener", 
+function (a) {
+this.listenerList.remove (javax.swing.event.ChangeListener, a);
+}, "javax.swing.event.ChangeListener");
+Clazz_defineMethod (c$, "getChangeListeners", 
+function () {
+return this.listenerList.getListeners (javax.swing.event.ChangeListener);
+});
+Clazz_defineMethod (c$, "fireStateChanged", 
+function () {
+var a = this.listenerList.getListenerList ();
+for (var b = a.length - 2; b >= 0; b -= 2) {
+if (a[b] === javax.swing.event.ChangeListener) {
+if (this.changeEvent == null) this.changeEvent =  new javax.swing.event.ChangeEvent (this);
+(a[b + 1]).stateChanged (this.changeEvent);
+}}
+});
+Clazz_defineMethod (c$, "getListeners", 
+function (a) {
+return this.listenerList.getListeners (a);
+}, "Class");
+Clazz_defineMethod (c$, "getAttributeCount", 
+function () {
+return this.attributes.getAttributeCount ();
+});
+Clazz_defineMethod (c$, "isDefined", 
+function (a) {
+return this.attributes.isDefined (a);
+}, "~O");
+Clazz_defineMethod (c$, "isEqual", 
+function (a) {
+return this.attributes.isEqual (a);
+}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "copyAttributes", 
+function () {
+var a = Clazz_innerTypeInstance (javax.swing.text.StyleContext.NamedStyle, this, null);
+a.attributes = this.attributes.copyAttributes ();
+return a;
+});
+Clazz_defineMethod (c$, "getAttribute", 
+function (a) {
+return this.attributes.getAttribute (a);
+}, "~O");
+Clazz_defineMethod (c$, "getAttributeNames", 
+function () {
+return this.attributes.getAttributeNames ();
+});
+Clazz_defineMethod (c$, "containsAttribute", 
+function (a, b) {
+return this.attributes.containsAttribute (a, b);
+}, "~O,~O");
+Clazz_defineMethod (c$, "containsAttributes", 
+function (a) {
+return this.attributes.containsAttributes (a);
+}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "getResolveParent", 
+function () {
+return this.attributes.getResolveParent ();
+});
+Clazz_overrideMethod (c$, "addAttribute", 
+function (a, b) {
+var c = this.b$["javax.swing.text.StyleContext"];
+this.attributes = c.addAttribute (this.attributes, a, b);
+this.fireStateChanged ();
+}, "~O,~O");
+Clazz_overrideMethod (c$, "addAttributes", 
+function (a) {
+var b = this.b$["javax.swing.text.StyleContext"];
+this.attributes = b.addAttributes (this.attributes, a);
+this.fireStateChanged ();
+}, "javax.swing.text.AttributeSet");
+Clazz_overrideMethod (c$, "removeAttribute", 
+function (a) {
+var b = this.b$["javax.swing.text.StyleContext"];
+this.attributes = b.removeAttribute (this.attributes, a);
+this.fireStateChanged ();
+}, "~O");
+Clazz_defineMethod (c$, "removeAttributes", 
+function (a) {
+var b = this.b$["javax.swing.text.StyleContext"];
+this.attributes = b.removeAttributes (this.attributes, a);
+this.fireStateChanged ();
+}, "java.util.Enumeration");
+Clazz_defineMethod (c$, "removeAttributes", 
+function (a) {
+var b = this.b$["javax.swing.text.StyleContext"];
+if (a === this) {
+this.attributes = b.getEmptySet ();
+} else {
+this.attributes = b.removeAttributes (this.attributes, a);
+}this.fireStateChanged ();
+}, "javax.swing.text.AttributeSet");
+Clazz_overrideMethod (c$, "setResolveParent", 
+function (a) {
+if (a != null) {
+this.addAttribute (javax.swing.text.StyleConstants.ResolveAttribute, a);
+} else {
+this.removeAttribute (javax.swing.text.StyleConstants.ResolveAttribute);
+}}, "javax.swing.text.AttributeSet");
+c$ = Clazz_p0p ();
+};
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.family = null;
+this.style = 0;
+this.size = 0;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.StyleContext, "FontKey");
+Clazz_makeConstructor (c$, 
+function (a, b, c) {
+this.setValue (a, b, c);
+}, "~S,~N,~N");
+Clazz_defineMethod (c$, "setValue", 
+function (a, b, c) {
+this.family = (a != null) ? a.intern () : null;
+this.style = b;
+this.size = c;
+}, "~S,~N,~N");
+Clazz_overrideMethod (c$, "hashCode", 
+function () {
+var a = (this.family != null) ? this.family.hashCode () : 0;
+return a ^ this.style ^ this.size;
+});
+Clazz_overrideMethod (c$, "equals", 
+function (a) {
+if (Clazz_instanceOf (a, javax.swing.text.StyleContext.FontKey)) {
+var b = a;
+return (this.size == b.size) && (this.style == b.style) && (this.family === b.family);
+}return false;
+}, "~O");
+c$ = Clazz_p0p ();
+Clazz_defineStatics (c$,
+"defaultContext", null,
+"DEFAULT_STYLE", "default",
+"freezeKeyMap", null,
+"thawKeyMap", null,
+"THRESHOLD", 9);
+{
+}});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["javax.swing.text.MutableAttributeSet"], "javax.swing.text.Style", null, function () {
+Clazz_declareInterface (javax.swing.text, "Style", javax.swing.text.MutableAttributeSet);
+});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["javax.swing.text.AttributeSet", "$.MutableAttributeSet", "java.util.Hashtable"], "javax.swing.text.SimpleAttributeSet", ["java.util.Enumeration", "$.NoSuchElementException", "javax.swing.text.StyleConstants"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.table = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text, "SimpleAttributeSet", null, [javax.swing.text.MutableAttributeSet, Cloneable]);
+Clazz_prepareFields (c$, function () {
+this.table =  new java.util.Hashtable (3);
+});
+Clazz_makeConstructor (c$, 
+function () {
+});
+Clazz_makeConstructor (c$, 
+function (source) {
+this.addAttributes (source);
+}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "isEmpty", 
+function () {
+return this.table.isEmpty ();
+});
+Clazz_defineMethod (c$, "getAttributeCount", 
+function () {
+return this.table.size ();
+});
+Clazz_overrideMethod (c$, "isDefined", 
+function (attrName) {
+return this.table.containsKey (attrName);
+}, "~O");
+Clazz_overrideMethod (c$, "isEqual", 
+function (attr) {
+return ((this.getAttributeCount () == attr.getAttributeCount ()) && this.containsAttributes (attr));
+}, "javax.swing.text.AttributeSet");
+Clazz_overrideMethod (c$, "copyAttributes", 
+function () {
+return this.clone ();
+});
+Clazz_defineMethod (c$, "getAttributeNames", 
+function () {
+return this.table.keys ();
+});
+Clazz_defineMethod (c$, "getAttribute", 
+function (name) {
+var value = this.table.get (name);
+if (value == null) {
+var parent = this.getResolveParent ();
+if (parent != null) {
+value = parent.getAttribute (name);
+}}return value;
+}, "~O");
+Clazz_overrideMethod (c$, "containsAttribute", 
+function (name, value) {
+return value.equals (this.getAttribute (name));
+}, "~O,~O");
+Clazz_overrideMethod (c$, "containsAttributes", 
+function (attributes) {
+var result = true;
+var names = attributes.getAttributeNames ();
+while (result && names.hasMoreElements ()) {
+var name = names.nextElement ();
+result = attributes.getAttribute (name).equals (this.getAttribute (name));
+}
+return result;
+}, "javax.swing.text.AttributeSet");
+Clazz_overrideMethod (c$, "addAttribute", 
+function (name, value) {
+this.table.put (name, value);
+}, "~O,~O");
+Clazz_overrideMethod (c$, "addAttributes", 
+function (attributes) {
+var names = attributes.getAttributeNames ();
+while (names.hasMoreElements ()) {
+var name = names.nextElement ();
+this.addAttribute (name, attributes.getAttribute (name));
+}
+}, "javax.swing.text.AttributeSet");
+Clazz_overrideMethod (c$, "removeAttribute", 
+function (name) {
+this.table.remove (name);
+}, "~O");
+Clazz_defineMethod (c$, "removeAttributes", 
+function (names) {
+while (names.hasMoreElements ()) this.removeAttribute (names.nextElement ());
+
+}, "java.util.Enumeration");
+Clazz_defineMethod (c$, "removeAttributes", 
+function (attributes) {
+if (attributes === this) {
+this.table.clear ();
+} else {
+var names = attributes.getAttributeNames ();
+while (names.hasMoreElements ()) {
+var name = names.nextElement ();
+var value = attributes.getAttribute (name);
+if (value.equals (this.getAttribute (name))) this.removeAttribute (name);
+}
+}}, "javax.swing.text.AttributeSet");
+Clazz_overrideMethod (c$, "getResolveParent", 
+function () {
+return this.table.get (javax.swing.text.StyleConstants.ResolveAttribute);
+});
+Clazz_overrideMethod (c$, "setResolveParent", 
+function (parent) {
+this.addAttribute (javax.swing.text.StyleConstants.ResolveAttribute, parent);
+}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "clone", 
+function () {
+var attr;
+try {
+attr = Clazz_superCall (this, javax.swing.text.SimpleAttributeSet, "clone", []);
+attr.table = this.table.clone ();
+} catch (cnse) {
+if (Clazz_exceptionOf (cnse, CloneNotSupportedException)) {
+attr = null;
+} else {
+throw cnse;
+}
+}
+return attr;
+});
+Clazz_overrideMethod (c$, "hashCode", 
+function () {
+return this.table.hashCode ();
+});
+Clazz_defineMethod (c$, "equals", 
+function (obj) {
+if (this === obj) {
+return true;
+}if (Clazz_instanceOf (obj, javax.swing.text.AttributeSet)) {
+var attrs = obj;
+return this.isEqual (attrs);
+}return false;
+}, "~O");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+var s = "";
+var names = this.getAttributeNames ();
+while (names.hasMoreElements ()) {
+var key = names.nextElement ();
+var value = this.getAttribute (key);
+if (Clazz_instanceOf (value, javax.swing.text.AttributeSet)) {
+s = s + key + "=**AttributeSet** ";
+} else {
+s = s + key + "=" + value + " ";
+}}
+return s;
+});
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.SimpleAttributeSet, "EmptyAttributeSet", null, javax.swing.text.AttributeSet);
+Clazz_defineMethod (c$, "getAttributeCount", 
+function () {
+return 0;
+});
+Clazz_overrideMethod (c$, "isDefined", 
+function (a) {
+return false;
+}, "~O");
+Clazz_overrideMethod (c$, "isEqual", 
+function (a) {
+return (a.getAttributeCount () == 0);
+}, "javax.swing.text.AttributeSet");
+Clazz_overrideMethod (c$, "copyAttributes", 
+function () {
+return this;
+});
+Clazz_overrideMethod (c$, "getAttribute", 
+function (a) {
+return null;
+}, "~O");
+Clazz_overrideMethod (c$, "getAttributeNames", 
+function () {
+return ((Clazz_isClassDefined ("javax.swing.text.SimpleAttributeSet$EmptyAttributeSet$1") ? 0 : javax.swing.text.SimpleAttributeSet.EmptyAttributeSet.$SimpleAttributeSet$EmptyAttributeSet$1$ ()), Clazz_innerTypeInstance (javax.swing.text.SimpleAttributeSet$EmptyAttributeSet$1, this, null));
+});
+Clazz_overrideMethod (c$, "containsAttribute", 
+function (a, b) {
+return false;
+}, "~O,~O");
+Clazz_overrideMethod (c$, "containsAttributes", 
+function (a) {
+return (a.getAttributeCount () == 0);
+}, "javax.swing.text.AttributeSet");
+Clazz_overrideMethod (c$, "getResolveParent", 
+function () {
+return null;
+});
+Clazz_overrideMethod (c$, "equals", 
+function (a) {
+if (this === a) {
+return true;
+}return ((Clazz_instanceOf (a, javax.swing.text.AttributeSet)) && ((a).getAttributeCount () == 0));
+}, "~O");
+Clazz_overrideMethod (c$, "hashCode", 
+function () {
+return 0;
+});
+c$.$SimpleAttributeSet$EmptyAttributeSet$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (javax.swing.text, "SimpleAttributeSet$EmptyAttributeSet$1", null, java.util.Enumeration);
+Clazz_overrideMethod (c$, "hasMoreElements", 
+function () {
+return false;
+});
+Clazz_overrideMethod (c$, "nextElement", 
+function () {
+throw  new java.util.NoSuchElementException ();
+});
+c$ = Clazz_p0p ();
+};
+c$ = Clazz_p0p ();
+c$.EMPTY = c$.prototype.EMPTY =  new javax.swing.text.SimpleAttributeSet.EmptyAttributeSet ();
+});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (null, "javax.swing.text.Utilities", ["javax.swing.JComponent", "javax.swing.text.CompositeView", "$.Position", "$.StyleConstants", "$.StyledDocument"], function () {
+c$ = Clazz_declareType (javax.swing.text, "Utilities");
+c$.getJComponent = Clazz_defineMethod (c$, "getJComponent", 
+function (view) {
+if (view != null) {
+var component = view.getContainer ();
+if (Clazz_instanceOf (component, javax.swing.JComponent)) {
+return component;
+}}return null;
+}, "javax.swing.text.View");
+c$.getTabbedTextWidth = Clazz_defineMethod (c$, "getTabbedTextWidth", 
+function (s, metrics, x, e, startOffset) {
+return javax.swing.text.Utilities.getTabbedTextWidth (null, s, metrics, x, e, startOffset, null);
+}, "javax.swing.text.Segment,java.awt.FontMetrics,~N,javax.swing.text.TabExpander,~N");
+c$.getTabbedTextWidth = Clazz_defineMethod (c$, "getTabbedTextWidth", 
+function (view, s, metrics, x, e, startOffset, justificationData) {
+var nextX = x;
+var txt = s.array;
+var txtOffset = s.offset;
+var n = s.offset + s.count;
+var charCount = 0;
+var spaceAddon = 0;
+var spaceAddonLeftoverEnd = -1;
+var startJustifiableContent = 0;
+var endJustifiableContent = 0;
+if (justificationData != null) {
+var offset = -startOffset + txtOffset;
+var parent = null;
+if (view != null && (parent = view.getParent ()) != null) {
+offset += parent.getStartOffset ();
+}spaceAddon = justificationData[0];
+spaceAddonLeftoverEnd = justificationData[1] + offset;
+startJustifiableContent = justificationData[2] + offset;
+endJustifiableContent = justificationData[3] + offset;
+}for (var i = txtOffset; i < n; i++) {
+if (txt[i] == '\t' || ((spaceAddon != 0 || i <= spaceAddonLeftoverEnd) && (txt[i] == ' ') && startJustifiableContent <= i && i <= endJustifiableContent)) {
+nextX += metrics.charsWidth (txt, i - charCount, charCount);
+charCount = 0;
+if (txt[i] == '\t') {
+if (e != null) {
+nextX = Clazz_floatToInt (e.nextTabStop (nextX, startOffset + i - txtOffset));
+} else {
+nextX += metrics.charWidth (' ');
+}} else if (txt[i] == ' ') {
+nextX += metrics.charWidth (' ') + spaceAddon;
+if (i <= spaceAddonLeftoverEnd) {
+nextX++;
+}}} else if (txt[i] == '\n') {
+nextX += metrics.charsWidth (txt, i - charCount, charCount);
+charCount = 0;
+} else {
+charCount++;
+}}
+nextX += metrics.charsWidth (txt, n - charCount, charCount);
+return nextX - x;
+}, "javax.swing.text.View,javax.swing.text.Segment,java.awt.FontMetrics,~N,javax.swing.text.TabExpander,~N,~A");
+c$.getTabbedTextOffset = Clazz_defineMethod (c$, "getTabbedTextOffset", 
+function (s, metrics, x0, x, e, startOffset) {
+return javax.swing.text.Utilities.getTabbedTextOffset (s, metrics, x0, x, e, startOffset, true);
+}, "javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N");
+c$.getTabbedTextOffset = Clazz_defineMethod (c$, "getTabbedTextOffset", 
+function (view, s, metrics, x0, x, e, startOffset, justificationData) {
+return javax.swing.text.Utilities.getTabbedTextOffset (view, s, metrics, x0, x, e, startOffset, true, justificationData);
+}, "javax.swing.text.View,javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N,~A");
+c$.getTabbedTextOffset = Clazz_defineMethod (c$, "getTabbedTextOffset", 
+function (s, metrics, x0, x, e, startOffset, round) {
+return javax.swing.text.Utilities.getTabbedTextOffset (null, s, metrics, x0, x, e, startOffset, round, null);
+}, "javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N,~B");
+c$.getTabbedTextOffset = Clazz_defineMethod (c$, "getTabbedTextOffset", 
+function (view, s, metrics, x0, x, e, startOffset, round, justificationData) {
+if (x0 >= x) {
+return 0;
+}var currX = x0;
+var nextX = currX;
+var txt = s.array;
+var txtOffset = s.offset;
+var txtCount = s.count;
+var spaceAddon = 0;
+var spaceAddonLeftoverEnd = -1;
+var startJustifiableContent = 0;
+var endJustifiableContent = 0;
+if (justificationData != null) {
+var offset = -startOffset + txtOffset;
+var parent = null;
+if (view != null && (parent = view.getParent ()) != null) {
+offset += parent.getStartOffset ();
+}spaceAddon = justificationData[0];
+spaceAddonLeftoverEnd = justificationData[1] + offset;
+startJustifiableContent = justificationData[2] + offset;
+endJustifiableContent = justificationData[3] + offset;
+}var n = s.offset + s.count;
+for (var i = s.offset; i < n; i++) {
+if (txt[i] == '\t' || ((spaceAddon != 0 || i <= spaceAddonLeftoverEnd) && (txt[i] == ' ') && startJustifiableContent <= i && i <= endJustifiableContent)) {
+if (txt[i] == '\t') {
+if (e != null) {
+nextX = Clazz_floatToInt (e.nextTabStop (nextX, startOffset + i - txtOffset));
+} else {
+nextX += metrics.charWidth (' ');
+}} else if (txt[i] == ' ') {
+nextX += metrics.charWidth (' ') + spaceAddon;
+if (i <= spaceAddonLeftoverEnd) {
+nextX++;
+}}} else {
+nextX += metrics.charWidth (txt[i]);
+}if ((x >= currX) && (x < nextX)) {
+if ((round == false) || ((x - currX) < (nextX - x))) {
+return i - txtOffset;
+} else {
+return i + 1 - txtOffset;
+}}currX = nextX;
+}
+return txtCount;
+}, "javax.swing.text.View,javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N,~B,~A");
+c$.getBreakLocation = Clazz_defineMethod (c$, "getBreakLocation", 
+function (s, metrics, x0, x, e, startOffset) {
+return 0;
+}, "javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N");
+c$.getRowStart = Clazz_defineMethod (c$, "getRowStart", 
+function (c, offs) {
+var r = c.modelToView (offs);
+if (r == null) {
+return -1;
+}var lastOffs = offs;
+var y = r.y;
+while ((r != null) && (y == r.y)) {
+if (r.height != 0) {
+offs = lastOffs;
+}lastOffs -= 1;
+r = (lastOffs >= 0) ? c.modelToView (lastOffs) : null;
+}
+return offs;
+}, "javax.swing.text.JTextComponent,~N");
+c$.getRowEnd = Clazz_defineMethod (c$, "getRowEnd", 
+function (c, offs) {
+var r = c.modelToView (offs);
+if (r == null) {
+return -1;
+}var n = c.getDocument ().getLength ();
+var lastOffs = offs;
+var y = r.y;
+while ((r != null) && (y == r.y)) {
+if (r.height != 0) {
+offs = lastOffs;
+}lastOffs += 1;
+r = (lastOffs <= n) ? c.modelToView (lastOffs) : null;
+}
+return offs;
+}, "javax.swing.text.JTextComponent,~N");
+c$.getPositionAbove = Clazz_defineMethod (c$, "getPositionAbove", 
+function (c, offs, x) {
+var lastOffs = javax.swing.text.Utilities.getRowStart (c, offs) - 1;
+if (lastOffs < 0) {
+return -1;
+}var bestSpan = 2147483647;
+var y = 0;
+var r = null;
+if (lastOffs >= 0) {
+r = c.modelToView (lastOffs);
+y = r.y;
+}while ((r != null) && (y == r.y)) {
+var span = Math.abs (r.x - x);
+if (span < bestSpan) {
+offs = lastOffs;
+bestSpan = span;
+}lastOffs -= 1;
+r = (lastOffs >= 0) ? c.modelToView (lastOffs) : null;
+}
+return offs;
+}, "javax.swing.text.JTextComponent,~N,~N");
+c$.getPositionBelow = Clazz_defineMethod (c$, "getPositionBelow", 
+function (c, offs, x) {
+var lastOffs = javax.swing.text.Utilities.getRowEnd (c, offs) + 1;
+if (lastOffs <= 0) {
+return -1;
+}var bestSpan = 2147483647;
+var n = c.getDocument ().getLength ();
+var y = 0;
+var r = null;
+if (lastOffs <= n) {
+r = c.modelToView (lastOffs);
+y = r.y;
+}while ((r != null) && (y == r.y)) {
+var span = Math.abs (x - r.x);
+if (span < bestSpan) {
+offs = lastOffs;
+bestSpan = span;
+}lastOffs += 1;
+r = (lastOffs <= n) ? c.modelToView (lastOffs) : null;
+}
+return offs;
+}, "javax.swing.text.JTextComponent,~N,~N");
+c$.getWordStart = Clazz_defineMethod (c$, "getWordStart", 
+function (c, offs) {
+return 0;
+}, "javax.swing.text.JTextComponent,~N");
+c$.getWordEnd = Clazz_defineMethod (c$, "getWordEnd", 
+function (c, offs) {
+return 0;
+}, "javax.swing.text.JTextComponent,~N");
+c$.getNextWord = Clazz_defineMethod (c$, "getNextWord", 
+function (c, offs) {
+var nextWord;
+var line = javax.swing.text.Utilities.getParagraphElement (c, offs);
+for (nextWord = javax.swing.text.Utilities.getNextWordInParagraph (c, line, offs, false); nextWord == -1; nextWord = javax.swing.text.Utilities.getNextWordInParagraph (c, line, offs, true)) {
+offs = line.getEndOffset ();
+line = javax.swing.text.Utilities.getParagraphElement (c, offs);
+}
+return nextWord;
+}, "javax.swing.text.JTextComponent,~N");
+c$.getNextWordInParagraph = Clazz_defineMethod (c$, "getNextWordInParagraph", 
+function (c, line, offs, first) {
+return 0;
+}, "javax.swing.text.JTextComponent,javax.swing.text.Element,~N,~B");
+c$.getPreviousWord = Clazz_defineMethod (c$, "getPreviousWord", 
+function (c, offs) {
+var prevWord;
+var line = javax.swing.text.Utilities.getParagraphElement (c, offs);
+for (prevWord = javax.swing.text.Utilities.getPrevWordInParagraph (c, line, offs); prevWord == -1; prevWord = javax.swing.text.Utilities.getPrevWordInParagraph (c, line, offs)) {
+offs = line.getStartOffset () - 1;
+line = javax.swing.text.Utilities.getParagraphElement (c, offs);
+}
+return prevWord;
+}, "javax.swing.text.JTextComponent,~N");
+c$.getPrevWordInParagraph = Clazz_defineMethod (c$, "getPrevWordInParagraph", 
+function (c, line, offs) {
+return 0;
+}, "javax.swing.text.JTextComponent,javax.swing.text.Element,~N");
+c$.getParagraphElement = Clazz_defineMethod (c$, "getParagraphElement", 
+function (c, offs) {
+var doc = c.getDocument ();
+if (Clazz_instanceOf (doc, javax.swing.text.StyledDocument)) {
+return (doc).getParagraphElement (offs);
+}var map = doc.getDefaultRootElement ();
+var index = map.getElementIndex (offs);
+var paragraph = map.getElement (index);
+if ((offs >= paragraph.getStartOffset ()) && (offs < paragraph.getEndOffset ())) {
+return paragraph;
+}return null;
+}, "javax.swing.text.JTextComponent,~N");
+c$.isComposedTextElement = Clazz_defineMethod (c$, "isComposedTextElement", 
+function (doc, offset) {
+var elem = doc.getDefaultRootElement ();
+while (!elem.isLeaf ()) {
+elem = elem.getElement (elem.getElementIndex (offset));
+}
+return javax.swing.text.Utilities.isComposedTextElement (elem);
+}, "javax.swing.text.Document,~N");
+c$.isComposedTextElement = Clazz_defineMethod (c$, "isComposedTextElement", 
+function (elem) {
+var as = elem.getAttributes ();
+return javax.swing.text.Utilities.isComposedTextAttributeDefined (as);
+}, "javax.swing.text.Element");
+c$.isComposedTextAttributeDefined = Clazz_defineMethod (c$, "isComposedTextAttributeDefined", 
+function (as) {
+return ((as != null) && (as.isDefined (javax.swing.text.StyleConstants.ComposedTextAttribute)));
+}, "javax.swing.text.AttributeSet");
+c$.isLeftToRight = Clazz_defineMethod (c$, "isLeftToRight", 
+function (c) {
+return c.getComponentOrientation ().isLeftToRight ();
+}, "java.awt.Component");
+c$.getNextVisualPositionFrom = Clazz_defineMethod (c$, "getNextVisualPositionFrom", 
+function (v, pos, b, alloc, direction, biasRet) {
+if (v.getViewCount () == 0) {
+return pos;
+}var top = (direction == 1 || direction == 7);
+var retValue;
+if (pos == -1) {
+var childIndex = (top) ? v.getViewCount () - 1 : 0;
+var child = v.getView (childIndex);
+var childBounds = v.getChildAllocation (childIndex, alloc);
+retValue = child.getNextVisualPositionFrom (pos, b, childBounds, direction, biasRet);
+if (retValue == -1 && !top && v.getViewCount () > 1) {
+child = v.getView (1);
+childBounds = v.getChildAllocation (1, alloc);
+retValue = child.getNextVisualPositionFrom (-1, biasRet[0], childBounds, direction, biasRet);
+}} else {
+var increment = (top) ? -1 : 1;
+var childIndex;
+if (b === javax.swing.text.Position.Bias.Backward && pos > 0) {
+childIndex = v.getViewIndex (pos - 1, javax.swing.text.Position.Bias.Forward);
+} else {
+childIndex = v.getViewIndex (pos, javax.swing.text.Position.Bias.Forward);
+}var child = v.getView (childIndex);
+var childBounds = v.getChildAllocation (childIndex, alloc);
+retValue = child.getNextVisualPositionFrom (pos, b, childBounds, direction, biasRet);
+if ((direction == 3 || direction == 7) && (Clazz_instanceOf (v, javax.swing.text.CompositeView)) && (v).flipEastAndWestAtEnds (pos, b)) {
+increment *= -1;
+}childIndex += increment;
+if (retValue == -1 && childIndex >= 0 && childIndex < v.getViewCount ()) {
+child = v.getView (childIndex);
+childBounds = v.getChildAllocation (childIndex, alloc);
+retValue = child.getNextVisualPositionFrom (-1, b, childBounds, direction, biasRet);
+if (retValue == pos && biasRet[0] !== b) {
+return javax.swing.text.Utilities.getNextVisualPositionFrom (v, pos, biasRet[0], alloc, direction, biasRet);
+}} else if (retValue != -1 && biasRet[0] !== b && ((increment == 1 && child.getEndOffset () == retValue) || (increment == -1 && child.getStartOffset () == retValue)) && childIndex >= 0 && childIndex < v.getViewCount ()) {
+child = v.getView (childIndex);
+childBounds = v.getChildAllocation (childIndex, alloc);
+var originalBias = biasRet[0];
+var nextPos = child.getNextVisualPositionFrom (-1, b, childBounds, direction, biasRet);
+if (biasRet[0] === b) {
+retValue = nextPos;
+} else {
+biasRet[0] = originalBias;
+}}}return retValue;
+}, "javax.swing.text.View,~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");
+});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["javax.swing.text.View"], "javax.swing.text.CompositeView", ["java.lang.IllegalArgumentException", "java.awt.Rectangle", "javax.swing.text.BadLocationException", "$.Position", "$.StyleConstants", "$.Utilities"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.children = null;
+this.nchildren = 0;
+this.left = 0;
+this.right = 0;
+this.top = 0;
+this.bottom = 0;
+this.childAlloc = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text, "CompositeView", javax.swing.text.View);
+Clazz_makeConstructor (c$, 
+function (elem) {
+Clazz_superConstructor (this, javax.swing.text.CompositeView, [elem]);
+this.children =  new Array (1);
+this.nchildren = 0;
+this.childAlloc =  new java.awt.Rectangle ();
+}, "javax.swing.text.Element");
+Clazz_defineMethod (c$, "loadChildren", 
+function (f) {
+if (f == null) {
+return;
+}var e = this.getElement ();
+var n = e.getElementCount ();
+if (n > 0) {
+var added =  new Array (n);
+for (var i = 0; i < n; i++) {
+added[i] = f.create (e.getElement (i));
+}
+this.replace (0, 0, added);
+}}, "javax.swing.text.ViewFactory");
+Clazz_defineMethod (c$, "setParent", 
+function (parent) {
+Clazz_superCall (this, javax.swing.text.CompositeView, "setParent", [parent]);
+if ((parent != null) && (this.nchildren == 0)) {
+var f = this.getViewFactory ();
+this.loadChildren (f);
+}}, "javax.swing.text.View");
+Clazz_overrideMethod (c$, "getViewCount", 
+function () {
+return this.nchildren;
+});
+Clazz_overrideMethod (c$, "getView", 
+function (n) {
+return this.children[n];
+}, "~N");
+Clazz_overrideMethod (c$, "replace", 
+function (offset, length, views) {
+if (views == null) {
+views = javax.swing.text.CompositeView.ZERO;
+}for (var i = offset; i < offset + length; i++) {
+if (this.children[i].getParent () === this) {
+this.children[i].setParent (null);
+}this.children[i] = null;
+}
+var delta = views.length - length;
+var src = offset + length;
+var nmove = this.nchildren - src;
+var dest = src + delta;
+if ((this.nchildren + delta) >= this.children.length) {
+var newLength = Math.max (2 * this.children.length, this.nchildren + delta);
+var newChildren =  new Array (newLength);
+System.arraycopy (this.children, 0, newChildren, 0, offset);
+System.arraycopy (views, 0, newChildren, offset, views.length);
+System.arraycopy (this.children, src, newChildren, dest, nmove);
+this.children = newChildren;
+} else {
+System.arraycopy (this.children, src, this.children, dest, nmove);
+System.arraycopy (views, 0, this.children, offset, views.length);
+}this.nchildren = this.nchildren + delta;
+for (var i = 0; i < views.length; i++) {
+views[i].setParent (this);
+}
+}, "~N,~N,~A");
+Clazz_overrideMethod (c$, "getChildAllocation", 
+function (index, a) {
+var alloc = this.getInsideAllocation (a);
+this.childAllocation (index, alloc);
+return alloc;
+}, "~N,java.awt.Shape");
+Clazz_defineMethod (c$, "modelToView", 
+function (pos, a, b) {
+var isBackward = (b === javax.swing.text.Position.Bias.Backward);
+var testPos = (isBackward) ? Math.max (0, pos - 1) : pos;
+if (isBackward && testPos < this.getStartOffset ()) {
+return null;
+}var vIndex = this.getViewIndexAtPosition (testPos);
+if ((vIndex != -1) && (vIndex < this.getViewCount ())) {
+var v = this.getView (vIndex);
+if (v != null && testPos >= v.getStartOffset () && testPos < v.getEndOffset ()) {
+var childShape = this.getChildAllocation (vIndex, a);
+if (childShape == null) {
+return null;
+}var retShape = v.modelToView (pos, childShape, b);
+if (retShape == null && v.getEndOffset () == pos) {
+if (++vIndex < this.getViewCount ()) {
+v = this.getView (vIndex);
+retShape = v.modelToView (pos, this.getChildAllocation (vIndex, a), b);
+}}return retShape;
+}}throw  new javax.swing.text.BadLocationException ("Position not represented by view", pos);
+}, "~N,java.awt.Shape,javax.swing.text.Position.Bias");
+Clazz_defineMethod (c$, "modelToView", 
+function (p0, b0, p1, b1, a) {
+if (p0 == this.getStartOffset () && p1 == this.getEndOffset ()) {
+return a;
+}var alloc = this.getInsideAllocation (a);
+var r0 =  new java.awt.Rectangle (alloc);
+var v0 = this.getViewAtPosition ((b0 === javax.swing.text.Position.Bias.Backward) ? Math.max (0, p0 - 1) : p0, r0);
+var r1 =  new java.awt.Rectangle (alloc);
+var v1 = this.getViewAtPosition ((b1 === javax.swing.text.Position.Bias.Backward) ? Math.max (0, p1 - 1) : p1, r1);
+if (v0 === v1) {
+if (v0 == null) {
+return a;
+}return v0.modelToView (p0, b0, p1, b1, r0);
+}var viewCount = this.getViewCount ();
+var counter = 0;
+while (counter < viewCount) {
+var v;
+if ((v = this.getView (counter)) === v0 || v === v1) {
+var endView;
+var retRect;
+var tempRect =  new java.awt.Rectangle ();
+if (v === v0) {
+retRect = v0.modelToView (p0, b0, v0.getEndOffset (), javax.swing.text.Position.Bias.Backward, r0).getBounds ();
+endView = v1;
+} else {
+retRect = v1.modelToView (v1.getStartOffset (), javax.swing.text.Position.Bias.Forward, p1, b1, r1).getBounds ();
+endView = v0;
+}while (++counter < viewCount && (v = this.getView (counter)) !== endView) {
+tempRect.setBounds (alloc);
+this.childAllocation (counter, tempRect);
+retRect.add (tempRect);
+}
+if (endView != null) {
+var endShape;
+if (endView === v1) {
+endShape = v1.modelToView (v1.getStartOffset (), javax.swing.text.Position.Bias.Forward, p1, b1, r1);
+} else {
+endShape = v0.modelToView (p0, b0, v0.getEndOffset (), javax.swing.text.Position.Bias.Backward, r0);
+}if (Clazz_instanceOf (endShape, java.awt.Rectangle)) {
+retRect.add (endShape);
+} else {
+retRect.add (endShape.getBounds ());
+}}return retRect;
+}counter++;
+}
+throw  new javax.swing.text.BadLocationException ("Position not represented by view", p0);
+}, "~N,javax.swing.text.Position.Bias,~N,javax.swing.text.Position.Bias,java.awt.Shape");
+Clazz_defineMethod (c$, "viewToModel", 
+function (x, y, a, bias) {
+var alloc = this.getInsideAllocation (a);
+if (this.isBefore (Clazz_floatToInt (x), Clazz_floatToInt (y), alloc)) {
+var retValue = -1;
+try {
+retValue = this.getNextVisualPositionFrom (-1, javax.swing.text.Position.Bias.Forward, a, 3, bias);
+} catch (e$$) {
+if (Clazz_exceptionOf (e$$, javax.swing.text.BadLocationException)) {
+var ble = e$$;
+{
+}
+} else if (Clazz_exceptionOf (e$$, IllegalArgumentException)) {
+var iae = e$$;
+{
+}
+} else {
+throw e$$;
+}
+}
+if (retValue == -1) {
+retValue = this.getStartOffset ();
+bias[0] = javax.swing.text.Position.Bias.Forward;
+}return retValue;
+} else if (this.isAfter (Clazz_floatToInt (x), Clazz_floatToInt (y), alloc)) {
+var retValue = -1;
+try {
+retValue = this.getNextVisualPositionFrom (-1, javax.swing.text.Position.Bias.Forward, a, 7, bias);
+} catch (e$$) {
+if (Clazz_exceptionOf (e$$, javax.swing.text.BadLocationException)) {
+var ble = e$$;
+{
+}
+} else if (Clazz_exceptionOf (e$$, IllegalArgumentException)) {
+var iae = e$$;
+{
+}
+} else {
+throw e$$;
+}
+}
+if (retValue == -1) {
+retValue = this.getEndOffset () - 1;
+bias[0] = javax.swing.text.Position.Bias.Forward;
+}return retValue;
+} else {
+var v = this.getViewAtPoint (Clazz_floatToInt (x), Clazz_floatToInt (y), alloc);
+if (v != null) {
+return v.viewToModel (x, y, alloc, bias);
+}}return -1;
+}, "~N,~N,java.awt.Shape,~A");
+Clazz_overrideMethod (c$, "getNextVisualPositionFrom", 
+function (pos, b, a, direction, biasRet) {
+switch (direction) {
+case 1:
+return this.getNextNorthSouthVisualPositionFrom (pos, b, a, direction, biasRet);
+case 5:
+return this.getNextNorthSouthVisualPositionFrom (pos, b, a, direction, biasRet);
+case 3:
+return this.getNextEastWestVisualPositionFrom (pos, b, a, direction, biasRet);
+case 7:
+return this.getNextEastWestVisualPositionFrom (pos, b, a, direction, biasRet);
+default:
+throw  new IllegalArgumentException ("Bad direction: " + direction);
+}
+}, "~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");
+Clazz_defineMethod (c$, "getViewIndex", 
+function (pos, b) {
+if (b === javax.swing.text.Position.Bias.Backward) {
+pos -= 1;
+}if ((pos >= this.getStartOffset ()) && (pos < this.getEndOffset ())) {
+return this.getViewIndexAtPosition (pos);
+}return -1;
+}, "~N,javax.swing.text.Position.Bias");
+Clazz_defineMethod (c$, "getViewAtPosition", 
+function (pos, a) {
+var index = this.getViewIndexAtPosition (pos);
+if ((index >= 0) && (index < this.getViewCount ())) {
+var v = this.getView (index);
+if (a != null) {
+this.childAllocation (index, a);
+}return v;
+}return null;
+}, "~N,java.awt.Rectangle");
+Clazz_defineMethod (c$, "getViewIndexAtPosition", 
+function (pos) {
+var elem = this.getElement ();
+return elem.getElementIndex (pos);
+}, "~N");
+Clazz_defineMethod (c$, "getInsideAllocation", 
+function (a) {
+if (a != null) {
+var alloc;
+if (Clazz_instanceOf (a, java.awt.Rectangle)) {
+alloc = a;
+} else {
+alloc = a.getBounds ();
+}this.childAlloc.setBounds (alloc);
+this.childAlloc.x += this.getLeftInset ();
+this.childAlloc.y += this.getTopInset ();
+this.childAlloc.width -= this.getLeftInset () + this.getRightInset ();
+this.childAlloc.height -= this.getTopInset () + this.getBottomInset ();
+return this.childAlloc;
+}return null;
+}, "java.awt.Shape");
+Clazz_defineMethod (c$, "setParagraphInsets", 
+function (attr) {
+this.top = Clazz_floatToShort (javax.swing.text.StyleConstants.getSpaceAbove (attr));
+this.left = Clazz_floatToShort (javax.swing.text.StyleConstants.getLeftIndent (attr));
+this.bottom = Clazz_floatToShort (javax.swing.text.StyleConstants.getSpaceBelow (attr));
+this.right = Clazz_floatToShort (javax.swing.text.StyleConstants.getRightIndent (attr));
+}, "javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "setInsets", 
+function (top, left, bottom, right) {
+this.top = top;
+this.left = left;
+this.right = right;
+this.bottom = bottom;
+}, "~N,~N,~N,~N");
+Clazz_defineMethod (c$, "getLeftInset", 
+function () {
+return this.left;
+});
+Clazz_defineMethod (c$, "getRightInset", 
+function () {
+return this.right;
+});
+Clazz_defineMethod (c$, "getTopInset", 
+function () {
+return this.top;
+});
+Clazz_defineMethod (c$, "getBottomInset", 
+function () {
+return this.bottom;
+});
+Clazz_defineMethod (c$, "getNextNorthSouthVisualPositionFrom", 
+function (pos, b, a, direction, biasRet) {
+return javax.swing.text.Utilities.getNextVisualPositionFrom (this, pos, b, a, direction, biasRet);
+}, "~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");
+Clazz_defineMethod (c$, "getNextEastWestVisualPositionFrom", 
+function (pos, b, a, direction, biasRet) {
+return javax.swing.text.Utilities.getNextVisualPositionFrom (this, pos, b, a, direction, biasRet);
+}, "~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");
+Clazz_defineMethod (c$, "flipEastAndWestAtEnds", 
+function (position, bias) {
+return false;
+}, "~N,javax.swing.text.Position.Bias");
+c$.ZERO = c$.prototype.ZERO =  new Array (0);
+});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["javax.swing.SwingConstants"], "javax.swing.text.View", ["java.lang.IllegalArgumentException", "java.awt.Rectangle", "javax.swing.event.DocumentEvent", "javax.swing.text.Position", "$.Utilities"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.parent = null;
+this.elem = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text, "View", null, javax.swing.SwingConstants);
+Clazz_makeConstructor (c$, 
+function (elem) {
+this.elem = elem;
+}, "javax.swing.text.Element");
+Clazz_defineMethod (c$, "getParent", 
+function () {
+return this.parent;
+});
+Clazz_defineMethod (c$, "isVisible", 
+function () {
+return true;
+});
+Clazz_defineMethod (c$, "getMinimumSpan", 
+function (axis) {
+var w = this.getResizeWeight (axis);
+if (w == 0) {
+return this.getPreferredSpan (axis);
+}return 0;
+}, "~N");
+Clazz_defineMethod (c$, "getMaximumSpan", 
+function (axis) {
+var w = this.getResizeWeight (axis);
+if (w == 0) {
+return this.getPreferredSpan (axis);
+}return 2147483647;
+}, "~N");
+Clazz_defineMethod (c$, "preferenceChanged", 
+function (child, width, height) {
+var parent = this.getParent ();
+if (parent != null) {
+parent.preferenceChanged (this, width, height);
+}}, "javax.swing.text.View,~B,~B");
+Clazz_defineMethod (c$, "getAlignment", 
+function (axis) {
+return 0.5;
+}, "~N");
+Clazz_defineMethod (c$, "setParent", 
+function (parent) {
+if (parent == null) {
+for (var i = 0; i < this.getViewCount (); i++) {
+if (this.getView (i).getParent () === this) {
+this.getView (i).setParent (null);
+}}
+}this.parent = parent;
+}, "javax.swing.text.View");
+Clazz_defineMethod (c$, "getViewCount", 
+function () {
+return 0;
+});
+Clazz_defineMethod (c$, "getView", 
+function (n) {
+return null;
+}, "~N");
+Clazz_defineMethod (c$, "removeAll", 
+function () {
+this.replace (0, this.getViewCount (), null);
+});
+Clazz_defineMethod (c$, "remove", 
+function (i) {
+this.replace (i, 1, null);
+}, "~N");
+Clazz_defineMethod (c$, "insert", 
+function (offs, v) {
+var one =  new Array (1);
+one[0] = v;
+this.replace (offs, 0, one);
+}, "~N,javax.swing.text.View");
+Clazz_defineMethod (c$, "append", 
+function (v) {
+var one =  new Array (1);
+one[0] = v;
+this.replace (this.getViewCount (), 0, one);
+}, "javax.swing.text.View");
+Clazz_defineMethod (c$, "replace", 
+function (offset, length, views) {
+}, "~N,~N,~A");
+Clazz_defineMethod (c$, "getViewIndex", 
+function (pos, b) {
+return -1;
+}, "~N,javax.swing.text.Position.Bias");
+Clazz_defineMethod (c$, "getChildAllocation", 
+function (index, a) {
+return null;
+}, "~N,java.awt.Shape");
+Clazz_defineMethod (c$, "getNextVisualPositionFrom", 
+function (pos, b, a, direction, biasRet) {
+biasRet[0] = javax.swing.text.Position.Bias.Forward;
+switch (direction) {
+case 1:
+case 5:
+{
+if (pos == -1) {
+pos = (direction == 1) ? Math.max (0, this.getEndOffset () - 1) : this.getStartOffset ();
+break;
+}var target = this.getContainer ();
+var c = (target != null) ? target.getCaret () : null;
+var mcp;
+if (c != null) {
+mcp = c.getMagicCaretPosition ();
+} else {
+mcp = null;
+}var x;
+if (mcp == null) {
+var loc = target.modelToView (pos);
+x = (loc == null) ? 0 : loc.x;
+} else {
+x = mcp.x;
+}if (direction == 1) {
+pos = javax.swing.text.Utilities.getPositionAbove (target, pos, x);
+} else {
+pos = javax.swing.text.Utilities.getPositionBelow (target, pos, x);
+}}break;
+case 7:
+if (pos == -1) {
+pos = Math.max (0, this.getEndOffset () - 1);
+} else {
+pos = Math.max (0, pos - 1);
+}break;
+case 3:
+if (pos == -1) {
+pos = this.getStartOffset ();
+} else {
+pos = Math.min (pos + 1, this.getDocument ().getLength ());
+}break;
+default:
+throw  new IllegalArgumentException ("Bad direction: " + direction);
+}
+return pos;
+}, "~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");
+Clazz_defineMethod (c$, "modelToView", 
+function (p0, b0, p1, b1, a) {
+var s0 = this.modelToView (p0, a, b0);
+var s1;
+if (p1 == this.getEndOffset ()) {
+try {
+s1 = this.modelToView (p1, a, b1);
+} catch (ble) {
+if (Clazz_exceptionOf (ble, javax.swing.text.BadLocationException)) {
+s1 = null;
+} else {
+throw ble;
+}
+}
+if (s1 == null) {
+var alloc = (Clazz_instanceOf (a, java.awt.Rectangle)) ? a : a.getBounds ();
+s1 =  new java.awt.Rectangle (alloc.x + alloc.width - 1, alloc.y, 1, alloc.height);
+}} else {
+s1 = this.modelToView (p1, a, b1);
+}var r0 = s0.getBounds ();
+var r1 = (Clazz_instanceOf (s1, java.awt.Rectangle)) ? s1 : s1.getBounds ();
+if (r0.y != r1.y) {
+var alloc = (Clazz_instanceOf (a, java.awt.Rectangle)) ? a : a.getBounds ();
+r0.x = alloc.x;
+r0.width = alloc.width;
+}r0.add (r1);
+return r0;
+}, "~N,javax.swing.text.Position.Bias,~N,javax.swing.text.Position.Bias,java.awt.Shape");
+Clazz_defineMethod (c$, "insertUpdate", 
+function (e, a, f) {
+if (this.getViewCount () > 0) {
+var elem = this.getElement ();
+var ec = e.getChange (elem);
+if (ec != null) {
+if (!this.updateChildren (ec, e, f)) {
+ec = null;
+}}this.forwardUpdate (ec, e, a, f);
+this.updateLayout (ec, e, a);
+}}, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");
+Clazz_defineMethod (c$, "removeUpdate", 
+function (e, a, f) {
+if (this.getViewCount () > 0) {
+var elem = this.getElement ();
+var ec = e.getChange (elem);
+if (ec != null) {
+if (!this.updateChildren (ec, e, f)) {
+ec = null;
+}}this.forwardUpdate (ec, e, a, f);
+this.updateLayout (ec, e, a);
+}}, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");
+Clazz_defineMethod (c$, "changedUpdate", 
+function (e, a, f) {
+if (this.getViewCount () > 0) {
+var elem = this.getElement ();
+var ec = e.getChange (elem);
+if (ec != null) {
+if (!this.updateChildren (ec, e, f)) {
+ec = null;
+}}this.forwardUpdate (ec, e, a, f);
+this.updateLayout (ec, e, a);
+}}, "javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");
+Clazz_defineMethod (c$, "getDocument", 
+function () {
+return this.elem.getDocument ();
+});
+Clazz_defineMethod (c$, "getStartOffset", 
+function () {
+return this.elem.getStartOffset ();
+});
+Clazz_defineMethod (c$, "getEndOffset", 
+function () {
+return this.elem.getEndOffset ();
+});
+Clazz_defineMethod (c$, "getElement", 
+function () {
+return this.elem;
+});
+Clazz_defineMethod (c$, "getGraphics", 
+function () {
+var c = this.getContainer ();
+return c.getGraphics ();
+});
+Clazz_defineMethod (c$, "getAttributes", 
+function () {
+return this.elem.getAttributes ();
+});
+Clazz_defineMethod (c$, "breakView", 
+function (axis, offset, pos, len) {
+return this;
+}, "~N,~N,~N,~N");
+Clazz_defineMethod (c$, "createFragment", 
+function (p0, p1) {
+return this;
+}, "~N,~N");
+Clazz_defineMethod (c$, "getBreakWeight", 
+function (axis, pos, len) {
+if (len > this.getPreferredSpan (axis)) {
+return 1000;
+}return 0;
+}, "~N,~N,~N");
+Clazz_defineMethod (c$, "getResizeWeight", 
+function (axis) {
+return 0;
+}, "~N");
+Clazz_defineMethod (c$, "setSize", 
+function (width, height) {
+}, "~N,~N");
+Clazz_defineMethod (c$, "getContainer", 
+function () {
+var v = this.getParent ();
+return (v != null) ? v.getContainer () : null;
+});
+Clazz_defineMethod (c$, "getViewFactory", 
+function () {
+var v = this.getParent ();
+return (v != null) ? v.getViewFactory () : null;
+});
+Clazz_defineMethod (c$, "getToolTipText", 
+function (x, y, allocation) {
+var viewIndex = this.getViewIndex (x, y, allocation);
+if (viewIndex >= 0) {
+allocation = this.getChildAllocation (viewIndex, allocation);
+var rect = (Clazz_instanceOf (allocation, java.awt.Rectangle)) ? allocation : allocation.getBounds ();
+if (rect.contains (x, y)) {
+return this.getView (viewIndex).getToolTipText (x, y, allocation);
+}}return null;
+}, "~N,~N,java.awt.Shape");
+Clazz_defineMethod (c$, "getViewIndex", 
+function (x, y, allocation) {
+for (var counter = this.getViewCount () - 1; counter >= 0; counter--) {
+var childAllocation = this.getChildAllocation (counter, allocation);
+if (childAllocation != null) {
+var rect = (Clazz_instanceOf (childAllocation, java.awt.Rectangle)) ? childAllocation : childAllocation.getBounds ();
+if (rect.contains (x, y)) {
+return counter;
+}}}
+return -1;
+}, "~N,~N,java.awt.Shape");
+Clazz_defineMethod (c$, "updateChildren", 
+function (ec, e, f) {
+var removedElems = ec.getChildrenRemoved ();
+var addedElems = ec.getChildrenAdded ();
+var added = null;
+if (addedElems != null) {
+added =  new Array (addedElems.length);
+for (var i = 0; i < addedElems.length; i++) {
+added[i] = f.create (addedElems[i]);
+}
+}var nremoved = 0;
+var index = ec.getIndex ();
+if (removedElems != null) {
+nremoved = removedElems.length;
+}this.replace (index, nremoved, added);
+return true;
+}, "javax.swing.event.DocumentEvent.ElementChange,javax.swing.event.DocumentEvent,javax.swing.text.ViewFactory");
+Clazz_defineMethod (c$, "forwardUpdate", 
+function (ec, e, a, f) {
+var elem = this.getElement ();
+var pos = e.getOffset ();
+var index0 = this.getViewIndex (pos, javax.swing.text.Position.Bias.Forward);
+if (index0 == -1 && e.getType () === javax.swing.event.DocumentEvent.EventType.REMOVE && pos >= this.getEndOffset ()) {
+index0 = this.getViewCount () - 1;
+}var index1 = index0;
+var v = (index0 >= 0) ? this.getView (index0) : null;
+if (v != null) {
+if ((v.getStartOffset () == pos) && (pos > 0)) {
+index0 = Math.max (index0 - 1, 0);
+}}if (e.getType () !== javax.swing.event.DocumentEvent.EventType.REMOVE) {
+index1 = this.getViewIndex (pos + e.getLength (), javax.swing.text.Position.Bias.Forward);
+if (index1 < 0) {
+index1 = this.getViewCount () - 1;
+}}var hole0 = index1 + 1;
+var hole1 = hole0;
+var addedElems = (ec != null) ? ec.getChildrenAdded () : null;
+if ((addedElems != null) && (addedElems.length > 0)) {
+hole0 = ec.getIndex ();
+hole1 = hole0 + addedElems.length - 1;
+}index0 = Math.max (index0, 0);
+for (var i = index0; i <= index1; i++) {
+if (!((i >= hole0) && (i <= hole1))) {
+v = this.getView (i);
+if (v != null) {
+var childAlloc = this.getChildAllocation (i, a);
+this.forwardUpdateToView (v, e, childAlloc, f);
+}}}
+}, "javax.swing.event.DocumentEvent.ElementChange,javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");
+Clazz_defineMethod (c$, "forwardUpdateToView", 
+function (v, e, a, f) {
+var type = e.getType ();
+if (type === javax.swing.event.DocumentEvent.EventType.INSERT) {
+v.insertUpdate (e, a, f);
+} else if (type === javax.swing.event.DocumentEvent.EventType.REMOVE) {
+v.removeUpdate (e, a, f);
+} else {
+v.changedUpdate (e, a, f);
+}}, "javax.swing.text.View,javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");
+Clazz_defineMethod (c$, "updateLayout", 
+function (ec, e, a) {
+if ((ec != null) && (a != null)) {
+this.preferenceChanged (null, true, true);
+var host = this.getContainer ();
+if (host != null) {
+host.repaint ();
+}}}, "javax.swing.event.DocumentEvent.ElementChange,javax.swing.event.DocumentEvent,java.awt.Shape");
+Clazz_defineMethod (c$, "modelToView", 
+function (pos, a) {
+return this.modelToView (pos, a, javax.swing.text.Position.Bias.Forward);
+}, "~N,java.awt.Shape");
+Clazz_defineMethod (c$, "viewToModel", 
+function (x, y, a) {
+javax.swing.text.View.sharedBiasReturn[0] = javax.swing.text.Position.Bias.Forward;
+return this.viewToModel (x, y, a, javax.swing.text.View.sharedBiasReturn);
+}, "~N,~N,java.awt.Shape");
+Clazz_defineStatics (c$,
+"BadBreakWeight", 0,
+"GoodBreakWeight", 1000,
+"ExcellentBreakWeight", 2000,
+"ForcedBreakWeight", 3000,
+"X_AXIS", 0,
+"Y_AXIS", 1);
+c$.sharedBiasReturn = c$.prototype.sharedBiasReturn =  new Array (1);
+});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_declareInterface (javax.swing.text, "Position");
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.name = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.Position, "Bias");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return this.name;
+});
+Clazz_makeConstructor (c$, 
+ function (a) {
+this.name = a;
+}, "~S");
+c$.Forward = c$.prototype.Forward =  new javax.swing.text.Position.Bias ("Forward");
+c$.Backward = c$.prototype.Backward =  new javax.swing.text.Position.Bias ("Backward");
+c$ = Clazz_p0p ();
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["javax.swing.text.Document"], "javax.swing.text.StyledDocument", null, function () {
+Clazz_declareInterface (javax.swing.text, "StyledDocument", javax.swing.text.Document);
+});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["javax.swing.text.Highlighter", "$.LayeredHighlighter", "java.util.Vector"], "javax.swing.text.DefaultHighlighter", ["java.awt.Rectangle", "javax.swing.SwingUtilities", "javax.swing.text.LayeredHighlighter.LayerPainter", "javax.swing.text.Position"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.highlights = null;
+this.component = null;
+this.drawsLayeredHighlights = false;
+this.safeDamager = null;
+if (!Clazz_isClassDefined ("javax.swing.text.DefaultHighlighter.HighlightInfo")) {
+javax.swing.text.DefaultHighlighter.$DefaultHighlighter$HighlightInfo$ ();
+}
+if (!Clazz_isClassDefined ("javax.swing.text.DefaultHighlighter.LayeredHighlightInfo")) {
+javax.swing.text.DefaultHighlighter.$DefaultHighlighter$LayeredHighlightInfo$ ();
+}
+if (!Clazz_isClassDefined ("javax.swing.text.DefaultHighlighter.SafeDamager")) {
+javax.swing.text.DefaultHighlighter.$DefaultHighlighter$SafeDamager$ ();
+}
+Clazz_instantialize (this, arguments);
+}, javax.swing.text, "DefaultHighlighter", javax.swing.text.LayeredHighlighter);
+Clazz_prepareFields (c$, function () {
+this.highlights =  new java.util.Vector ();
+this.safeDamager = Clazz_innerTypeInstance (javax.swing.text.DefaultHighlighter.SafeDamager, this, null);
+});
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.text.DefaultHighlighter, []);
+this.drawsLayeredHighlights = true;
+});
+Clazz_overrideMethod (c$, "paint", 
+function (g) {
+var len = this.highlights.size ();
+for (var i = 0; i < len; i++) {
+var info = this.highlights.elementAt (i);
+if (!(Clazz_instanceOf (info, javax.swing.text.DefaultHighlighter.LayeredHighlightInfo))) {
+var a = this.component.getBounds ();
+var insets = this.component.getInsets ();
+a.x = insets.left;
+a.y = insets.top;
+a.width -= insets.left + insets.right;
+a.height -= insets.top + insets.bottom;
+for (; i < len; i++) {
+info = this.highlights.elementAt (i);
+if (!(Clazz_instanceOf (info, javax.swing.text.DefaultHighlighter.LayeredHighlightInfo))) {
+var p = info.getPainter ();
+p.paint (g, info.getStartOffset (), info.getEndOffset (), a, this.component);
+}}
+}}
+}, "java.awt.Graphics");
+Clazz_overrideMethod (c$, "install", 
+function (c) {
+this.component = c;
+this.removeAllHighlights ();
+}, "javax.swing.text.JTextComponent");
+Clazz_overrideMethod (c$, "deinstall", 
+function (c) {
+this.component = null;
+}, "javax.swing.text.JTextComponent");
+Clazz_overrideMethod (c$, "addHighlight", 
+function (p0, p1, p) {
+var doc = this.component.getDocument ();
+var i = (this.getDrawsLayeredHighlights () && (Clazz_instanceOf (p, javax.swing.text.LayeredHighlighter.LayerPainter))) ? Clazz_innerTypeInstance (javax.swing.text.DefaultHighlighter.LayeredHighlightInfo, this, null) : Clazz_innerTypeInstance (javax.swing.text.DefaultHighlighter.HighlightInfo, this, null);
+i.painter = p;
+i.p0 = doc.createPosition (p0);
+i.p1 = doc.createPosition (p1);
+this.highlights.addElement (i);
+this.safeDamageRange (p0, p1);
+return i;
+}, "~N,~N,javax.swing.text.Highlighter.HighlightPainter");
+Clazz_overrideMethod (c$, "removeHighlight", 
+function (tag) {
+if (Clazz_instanceOf (tag, javax.swing.text.DefaultHighlighter.LayeredHighlightInfo)) {
+var lhi = tag;
+if (lhi.width > 0 && lhi.height > 0) {
+this.component.repaint (lhi.x, lhi.y, lhi.width, lhi.height);
+}} else {
+var info = tag;
+this.safeDamageRange (info.p0, info.p1);
+}this.highlights.removeElement (tag);
+}, "~O");
+Clazz_overrideMethod (c$, "removeAllHighlights", 
+function () {
+var mapper = this.component.getUI ();
+if (this.getDrawsLayeredHighlights ()) {
+var len = this.highlights.size ();
+if (len != 0) {
+var minX = 0;
+var minY = 0;
+var maxX = 0;
+var maxY = 0;
+var p0 = -1;
+var p1 = -1;
+for (var i = 0; i < len; i++) {
+var hi = this.highlights.elementAt (i);
+if (Clazz_instanceOf (hi, javax.swing.text.DefaultHighlighter.LayeredHighlightInfo)) {
+var info = hi;
+minX = Math.min (minX, info.x);
+minY = Math.min (minY, info.y);
+maxX = Math.max (maxX, info.x + info.width);
+maxY = Math.max (maxY, info.y + info.height);
+} else {
+if (p0 == -1) {
+p0 = hi.p0.getOffset ();
+p1 = hi.p1.getOffset ();
+} else {
+p0 = Math.min (p0, hi.p0.getOffset ());
+p1 = Math.max (p1, hi.p1.getOffset ());
+}}}
+if (minX != maxX && minY != maxY) {
+this.component.repaint (minX, minY, maxX - minX, maxY - minY);
+}if (p0 != -1) {
+try {
+this.safeDamageRange (p0, p1);
+} catch (e) {
+if (Clazz_exceptionOf (e, javax.swing.text.BadLocationException)) {
+} else {
+throw e;
+}
+}
+}this.highlights.removeAllElements ();
+}} else if (mapper != null) {
+var len = this.highlights.size ();
+if (len != 0) {
+var p0 = 2147483647;
+var p1 = 0;
+for (var i = 0; i < len; i++) {
+var info = this.highlights.elementAt (i);
+p0 = Math.min (p0, info.p0.getOffset ());
+p1 = Math.max (p1, info.p1.getOffset ());
+}
+try {
+this.safeDamageRange (p0, p1);
+} catch (e) {
+if (Clazz_exceptionOf (e, javax.swing.text.BadLocationException)) {
+} else {
+throw e;
+}
+}
+this.highlights.removeAllElements ();
+}}});
+Clazz_overrideMethod (c$, "changeHighlight", 
+function (tag, p0, p1) {
+var doc = this.component.getDocument ();
+if (Clazz_instanceOf (tag, javax.swing.text.DefaultHighlighter.LayeredHighlightInfo)) {
+var lhi = tag;
+if (lhi.width > 0 && lhi.height > 0) {
+this.component.repaint (lhi.x, lhi.y, lhi.width, lhi.height);
+}lhi.width = lhi.height = 0;
+lhi.p0 = doc.createPosition (p0);
+lhi.p1 = doc.createPosition (p1);
+this.safeDamageRange (Math.min (p0, p1), Math.max (p0, p1));
+} else {
+var info = tag;
+var oldP0 = info.p0.getOffset ();
+var oldP1 = info.p1.getOffset ();
+if (p0 == oldP0) {
+this.safeDamageRange (Math.min (oldP1, p1), Math.max (oldP1, p1));
+} else if (p1 == oldP1) {
+this.safeDamageRange (Math.min (p0, oldP0), Math.max (p0, oldP0));
+} else {
+this.safeDamageRange (oldP0, oldP1);
+this.safeDamageRange (p0, p1);
+}info.p0 = doc.createPosition (p0);
+info.p1 = doc.createPosition (p1);
+}}, "~O,~N,~N");
+Clazz_overrideMethod (c$, "getHighlights", 
+function () {
+var size = this.highlights.size ();
+if (size == 0) {
+return javax.swing.text.DefaultHighlighter.noHighlights;
+}var h =  new Array (size);
+this.highlights.copyInto (h);
+return h;
+});
+Clazz_overrideMethod (c$, "paintLayeredHighlights", 
+function (g, p0, p1, viewBounds, editor, view) {
+for (var counter = this.highlights.size () - 1; counter >= 0; counter--) {
+var tag = this.highlights.elementAt (counter);
+if (Clazz_instanceOf (tag, javax.swing.text.DefaultHighlighter.LayeredHighlightInfo)) {
+var lhi = tag;
+var start = lhi.getStartOffset ();
+var end = lhi.getEndOffset ();
+if ((p0 < start && p1 > start) || (p0 >= start && p0 < end)) {
+lhi.paintLayeredHighlights (g, p0, p1, viewBounds, editor, view);
+}}}
+}, "java.awt.Graphics,~N,~N,java.awt.Shape,javax.swing.text.JTextComponent,javax.swing.text.View");
+Clazz_defineMethod (c$, "safeDamageRange", 
+ function (p0, p1) {
+this.safeDamager.damageRange (p0, p1);
+}, "javax.swing.text.Position,javax.swing.text.Position");
+Clazz_defineMethod (c$, "safeDamageRange", 
+ function (a0, a1) {
+var doc = this.component.getDocument ();
+this.safeDamageRange (doc.createPosition (a0), doc.createPosition (a1));
+}, "~N,~N");
+Clazz_defineMethod (c$, "setDrawsLayeredHighlights", 
+function (newValue) {
+this.drawsLayeredHighlights = newValue;
+}, "~B");
+Clazz_defineMethod (c$, "getDrawsLayeredHighlights", 
+function () {
+return this.drawsLayeredHighlights;
+});
+c$.$DefaultHighlighter$HighlightInfo$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.p0 = null;
+this.p1 = null;
+this.painter = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultHighlighter, "HighlightInfo", null, javax.swing.text.Highlighter.Highlight);
+Clazz_overrideMethod (c$, "getStartOffset", 
+function () {
+return this.p0.getOffset ();
+});
+Clazz_overrideMethod (c$, "getEndOffset", 
+function () {
+return this.p1.getOffset ();
+});
+Clazz_overrideMethod (c$, "getPainter", 
+function () {
+return this.painter;
+});
+c$ = Clazz_p0p ();
+};
+c$.$DefaultHighlighter$LayeredHighlightInfo$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.x = 0;
+this.y = 0;
+this.width = 0;
+this.height = 0;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultHighlighter, "LayeredHighlightInfo", javax.swing.text.DefaultHighlighter.HighlightInfo, null, Clazz_innerTypeInstance (javax.swing.text.DefaultHighlighter.HighlightInfo, this, null, Clazz_inheritArgs));
+Clazz_defineMethod (c$, "union", 
+function (a) {
+if (a == null) return;
+var b;
+if (Clazz_instanceOf (a, java.awt.Rectangle)) {
+b = a;
+} else {
+b = a.getBounds ();
+}if (this.width == 0 || this.height == 0) {
+this.x = b.x;
+this.y = b.y;
+this.width = b.width;
+this.height = b.height;
+} else {
+this.width = Math.max (this.x + this.width, b.x + b.width);
+this.height = Math.max (this.y + this.height, b.y + b.height);
+this.x = Math.min (this.x, b.x);
+this.width -= this.x;
+this.y = Math.min (this.y, b.y);
+this.height -= this.y;
+}}, "java.awt.Shape");
+Clazz_defineMethod (c$, "paintLayeredHighlights", 
+function (a, b, c, d, e, f) {
+var g = this.getStartOffset ();
+var h = this.getEndOffset ();
+b = Math.max (g, b);
+c = Math.min (h, c);
+this.union ((this.painter).paintLayer (a, b, c, d, e, f));
+}, "java.awt.Graphics,~N,~N,java.awt.Shape,javax.swing.text.JTextComponent,javax.swing.text.View");
+c$ = Clazz_p0p ();
+};
+c$.$DefaultHighlighter$SafeDamager$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.p0 = null;
+this.p1 = null;
+this.lastDoc = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultHighlighter, "SafeDamager", null, Runnable);
+Clazz_prepareFields (c$, function () {
+this.p0 =  new java.util.Vector (10);
+this.p1 =  new java.util.Vector (10);
+});
+Clazz_overrideMethod (c$, "run", 
+function () {
+if (this.b$["javax.swing.text.DefaultHighlighter"].component != null) {
+var a = this.b$["javax.swing.text.DefaultHighlighter"].component.getUI ();
+if (a != null && this.lastDoc === this.b$["javax.swing.text.DefaultHighlighter"].component.getDocument ()) {
+var b = this.p0.size ();
+for (var c = 0; c < b; c++) {
+a.damageRange (this.b$["javax.swing.text.DefaultHighlighter"].component, (this.p0.get (c)).getOffset (), (this.p1.get (c)).getOffset ());
+}
+}}this.p0.clear ();
+this.p1.clear ();
+this.lastDoc = null;
+});
+Clazz_defineMethod (c$, "damageRange", 
+function (a, b) {
+if (this.b$["javax.swing.text.DefaultHighlighter"].component == null) {
+this.p0.clear ();
+this.lastDoc = null;
+return;
+}var c = this.p0.isEmpty ();
+var d = this.b$["javax.swing.text.DefaultHighlighter"].component.getDocument ();
+if (d !== this.lastDoc) {
+if (!this.p0.isEmpty ()) {
+this.p0.clear ();
+this.p1.clear ();
+}this.lastDoc = d;
+}this.p0.add (a);
+this.p1.add (b);
+if (c) {
+javax.swing.SwingUtilities.invokeLater (this);
+}}, "javax.swing.text.Position,javax.swing.text.Position");
+c$ = Clazz_p0p ();
+};
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.color = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing.text.DefaultHighlighter, "DefaultHighlightPainter", javax.swing.text.LayeredHighlighter.LayerPainter);
+Clazz_makeConstructor (c$, 
+function (a) {
+Clazz_superConstructor (this, javax.swing.text.DefaultHighlighter.DefaultHighlightPainter, []);
+this.color = a;
+}, "java.awt.Color");
+Clazz_defineMethod (c$, "getColor", 
+function () {
+return this.color;
+});
+Clazz_overrideMethod (c$, "paint", 
+function (a, b, c, d, e) {
+var f = d.getBounds ();
+try {
+var g = e.getUI ();
+var h = g.modelToView (e, b);
+var i = g.modelToView (e, c);
+var j = this.getColor ();
+if (j == null) {
+a.setColor (e.getSelectionColor ());
+} else {
+a.setColor (j);
+}if (h.y == i.y) {
+var k = h.union (i);
+a.fillRect (k.x, k.y, k.width, k.height);
+} else {
+var k = f.x + f.width - h.x;
+a.fillRect (h.x, h.y, k, h.height);
+if ((h.y + h.height) != i.y) {
+a.fillRect (f.x, h.y + h.height, f.width, i.y - (h.y + h.height));
+}a.fillRect (f.x, i.y, (i.x - f.x), i.height);
+}} catch (e) {
+if (Clazz_exceptionOf (e, javax.swing.text.BadLocationException)) {
+} else {
+throw e;
+}
+}
+}, "java.awt.Graphics,~N,~N,java.awt.Shape,javax.swing.text.JTextComponent");
+Clazz_overrideMethod (c$, "paintLayer", 
+function (a, b, c, d, e, f) {
+var g = this.getColor ();
+if (g == null) {
+a.setColor (e.getSelectionColor ());
+} else {
+a.setColor (g);
+}var h;
+if (b == f.getStartOffset () && c == f.getEndOffset ()) {
+if (Clazz_instanceOf (d, java.awt.Rectangle)) {
+h = d;
+} else {
+h = d.getBounds ();
+}} else {
+try {
+var i = f.modelToView (b, javax.swing.text.Position.Bias.Forward, c, javax.swing.text.Position.Bias.Backward, d);
+h = (Clazz_instanceOf (i, java.awt.Rectangle)) ? i : i.getBounds ();
+} catch (e) {
+if (Clazz_exceptionOf (e, javax.swing.text.BadLocationException)) {
+h = null;
+} else {
+throw e;
+}
+}
+}if (h != null) {
+h.width = Math.max (h.width, 1);
+a.fillRect (h.x, h.y, h.width, h.height);
+}return h;
+}, "java.awt.Graphics,~N,~N,java.awt.Shape,javax.swing.text.JTextComponent,javax.swing.text.View");
+c$ = Clazz_p0p ();
+c$.noHighlights = c$.prototype.noHighlights =  new Array (0);
+c$.DefaultPainter = c$.prototype.DefaultPainter =  new javax.swing.text.DefaultHighlighter.DefaultHighlightPainter (null);
+});
+Clazz_declarePackage ("javax.swing.text");
+Clazz_declareInterface (javax.swing.text, "Highlighter");
+Clazz_declareInterface (javax.swing.text.Highlighter, "HighlightPainter");
+Clazz_declareInterface (javax.swing.text.Highlighter, "Highlight");
+Clazz_declarePackage ("javax.swing.text");
+Clazz_load (["javax.swing.text.Highlighter"], "javax.swing.text.LayeredHighlighter", null, function () {
+c$ = Clazz_declareType (javax.swing.text, "LayeredHighlighter", null, javax.swing.text.Highlighter);
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.text.LayeredHighlighter, "LayerPainter", null, javax.swing.text.Highlighter.HighlightPainter);
+c$ = Clazz_p0p ();
+});
+Clazz_declarePackage ("swingjs");
+Clazz_load (["swingjs.JSAbstractDocument"], "swingjs.JSPlainDocument", ["java.util.Hashtable", "JU.SB", "swingjs.JSPosition"], function () {
+c$ = Clazz_declareType (swingjs, "JSPlainDocument", swingjs.JSAbstractDocument);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, swingjs.JSPlainDocument);
+this.sb =  new JU.SB ();
+this.root = Clazz_innerTypeInstance (swingjs.JSAbstractDocument.JSElement, this, null);
+});
+Clazz_overrideMethod (c$, "getLength", 
+function () {
+return this.sb.length ();
+});
+Clazz_defineMethod (c$, "getText", 
+function (offset, length) {
+this.checkLoc (offset, offset + length);
+return this.sb.substring2 (offset, offset + length);
+}, "~N,~N");
+Clazz_defineMethod (c$, "getText", 
+function (offset, length, chars) {
+this.checkLoc (offset, offset + length);
+if (this.tempChar == null) {
+this.tempChar =  Clazz_newCharArray (this.sb.length (), '\0');
+for (var i = this.tempChar.length; --i >= 0; ) this.tempChar[i] = this.sb.charAt (i);
+
+}chars.array = this.tempChar;
+chars.offset = offset;
+chars.count = length;
+}, "~N,~N,javax.swing.text.Segment");
+Clazz_overrideMethod (c$, "getStartPosition", 
+function () {
+return  new swingjs.JSPosition (0);
+});
+Clazz_overrideMethod (c$, "getEndPosition", 
+function () {
+return  new swingjs.JSPosition (this.sb.length ());
+});
+Clazz_overrideMethod (c$, "createPosition", 
+function (offs) {
+this.checkLoc (offs, offs);
+var i = Integer.$valueOf (offs);
+if (this.positions == null) this.positions =  new java.util.Hashtable ();
+var p = this.positions.get (i);
+if (p == null) this.positions.put (i, p =  new swingjs.JSPosition (offs));
+return p;
+}, "~N");
+Clazz_overrideMethod (c$, "getDefaultRootElement", 
+function () {
+return this.root;
+});
+Clazz_overrideMethod (c$, "render", 
+function (r) {
+}, "Runnable");
+Clazz_defineStatics (c$,
+"tabSizeAttribute", "tabSize",
+"lineLimitAttribute", "lineLimit");
+});
+Clazz_declarePackage ("swingjs");
+Clazz_load (["javax.swing.text.DocumentFilter", "$.Element", "$.JSMinimalAbstractDocument"], "swingjs.JSAbstractDocument", ["java.lang.IllegalStateException", "java.util.HashMap", "JU.AU", "javax.swing.event.DocumentEvent", "$.DocumentListener", "$.EventListenerList", "javax.swing.text.BadLocationException", "swingjs.JSDocumentEvent"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.props = null;
+this.root = null;
+this.positions = null;
+this.listenerList = null;
+this.notifyingListeners = false;
+this.filterBypass = null;
+this.me = null;
+this.sb = null;
+this.tempChar = null;
+this.filter = null;
+if (!Clazz_isClassDefined ("swingjs.JSAbstractDocument.DefaultFilterBypass")) {
+swingjs.JSAbstractDocument.$JSAbstractDocument$DefaultFilterBypass$ ();
+}
+if (!Clazz_isClassDefined ("swingjs.JSAbstractDocument.JSElement")) {
+swingjs.JSAbstractDocument.$JSAbstractDocument$JSElement$ ();
+}
+Clazz_instantialize (this, arguments);
+}, swingjs, "JSAbstractDocument", null, javax.swing.text.JSMinimalAbstractDocument);
+Clazz_makeConstructor (c$, 
+function () {
+this.me = this;
+this.props =  new java.util.HashMap ();
+});
+Clazz_overrideMethod (c$, "getRootElements", 
+function () {
+return  Clazz_newArray (-1, [this.root, null]);
+});
+Clazz_defineMethod (c$, "checkLoc", 
+function (start, end) {
+if (start < 0 || end > this.getLength ()) throw  new javax.swing.text.BadLocationException ("JSAbstractDocument: out of range", (start < 0 ? start : end));
+}, "~N,~N");
+Clazz_defineMethod (c$, "fixPositions", 
+function (offset, length, isInsert) {
+if (this.positions == null || this.positions.isEmpty ()) return;
+if (isInsert) {
+for (var i, $i = this.positions.keySet ().iterator (); $i.hasNext () && ((i = $i.next ()) || true);) {
+var pos = i.intValue ();
+if (pos > offset) this.positions.get (i).pos += length;
+}
+return;
+}for (var i, $i = this.positions.keySet ().iterator (); $i.hasNext () && ((i = $i.next ()) || true);) {
+var pos = i.intValue ();
+if (pos <= offset) continue;
+if (pos >= offset + length) this.positions.get (i).pos -= length;
+ else this.positions.get (i).pos = offset;
+}
+}, "~N,~N,~B");
+Clazz_defineMethod (c$, "getFilterBypass", 
+ function () {
+if (this.filterBypass == null) {
+this.filterBypass = Clazz_innerTypeInstance (swingjs.JSAbstractDocument.DefaultFilterBypass, this, null);
+}return this.filterBypass;
+});
+Clazz_overrideMethod (c$, "remove", 
+function (offs, len) {
+var filter = this.getDocumentFilter ();
+if (filter == null) this.handleRemove (offs, len);
+ else filter.remove (this.getFilterBypass (), offs, len);
+}, "~N,~N");
+Clazz_overrideMethod (c$, "insertString", 
+function (offset, str, a) {
+var filter = this.getDocumentFilter ();
+if (filter == null) this.handleInsertString (offset, str, a);
+ else filter.insertString (this.getFilterBypass (), offset, str, a);
+}, "~N,~S,javax.swing.text.AttributeSet");
+Clazz_overrideMethod (c$, "replace", 
+function (offset, length, text, attrs) {
+if (length == 0 && (text == null || text.length == 0)) return;
+var filter = this.getDocumentFilter ();
+if (filter != null) {
+filter.replace (this.getFilterBypass (), offset, length, text, attrs);
+} else {
+if (length > 0) this.remove (offset, length);
+if (text != null && text.length > 0) this.insertString (offset, text, attrs);
+}}, "~N,~N,~S,javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "taint", 
+ function () {
+this.tempChar = null;
+});
+Clazz_defineMethod (c$, "setLines", 
+ function () {
+this.root = Clazz_innerTypeInstance (swingjs.JSAbstractDocument.JSElement, this, null);
+var s = this.sb.toString ();
+if (s.lastIndexOf ('\n') != s.length - 1) s += "\n";
+var ilast = 0;
+for (var i = 0; i < s.length; i++) {
+if (s.charAt (i) != '\n') continue;
+var e = Clazz_innerTypeInstance (swingjs.JSAbstractDocument.JSElement, this, null);
+e.start = ilast;
+e.end = i;
+ilast = i + 1;
+this.root.addChild (e);
+}
+});
+Clazz_defineMethod (c$, "handleInsertString", 
+function (offs, str, a) {
+if ((str == null) || (str.length == 0)) {
+return;
+}this.checkLoc (offs, offs);
+this.taint ();
+this.sb.insert (offs, str);
+this.fixPositions (offs, str.length, true);
+if (str.indexOf ('\n') >= 0) this.setLines ();
+var e =  new swingjs.JSDocumentEvent (this, offs, str.length, javax.swing.event.DocumentEvent.EventType.INSERT);
+this.fireInsertUpdate (e);
+}, "~N,~S,javax.swing.text.AttributeSet");
+Clazz_defineMethod (c$, "handleRemove", 
+function (offs, len) {
+this.checkLoc (offs, offs + len);
+this.taint ();
+var str = this.sb.substring2 (offs, offs + len);
+this.sb.replace (offs, offs + len, "");
+this.fixPositions (offs, offs + len, false);
+if (str.indexOf ('\n') >= 0) this.setLines ();
+if (len > 0) {
+var chng =  new swingjs.JSDocumentEvent (this, offs, len, javax.swing.event.DocumentEvent.EventType.REMOVE);
+this.fireRemoveUpdate (chng);
+}}, "~N,~N");
+Clazz_defineMethod (c$, "fireInsertUpdate", 
+function (e) {
+if (this.listenerList == null) return;
+this.checkAlreadyNotifying ();
+this.notifyingListeners = true;
+try {
+var listeners = this.listenerList.getListenerList ();
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === javax.swing.event.DocumentListener) {
+(listeners[i + 1]).insertUpdate (e);
+}}
+} finally {
+this.notifyingListeners = false;
+}
+}, "javax.swing.event.DocumentEvent");
+Clazz_defineMethod (c$, "fireChangedUpdate", 
+function (e) {
+if (this.listenerList == null) return;
+this.checkAlreadyNotifying ();
+this.notifyingListeners = true;
+try {
+var listeners = this.listenerList.getListenerList ();
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === javax.swing.event.DocumentListener) {
+(listeners[i + 1]).changedUpdate (e);
+}}
+} finally {
+this.notifyingListeners = false;
+}
+}, "javax.swing.event.DocumentEvent");
+Clazz_defineMethod (c$, "fireRemoveUpdate", 
+function (e) {
+if (this.listenerList == null) return;
+this.checkAlreadyNotifying ();
+this.notifyingListeners = true;
+try {
+var listeners = this.listenerList.getListenerList ();
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === javax.swing.event.DocumentListener) {
+(listeners[i + 1]).removeUpdate (e);
+}}
+} finally {
+this.notifyingListeners = false;
+}
+}, "javax.swing.event.DocumentEvent");
+Clazz_defineMethod (c$, "checkAlreadyNotifying", 
+ function () {
+if (this.notifyingListeners) throw  new IllegalStateException ("One of the document listeners modifed the document. This is not allowed.");
+});
+Clazz_overrideMethod (c$, "addDocumentListener", 
+function (listener) {
+if (this.listenerList == null) this.listenerList =  new javax.swing.event.EventListenerList ();
+this.listenerList.add (javax.swing.event.DocumentListener, listener);
+}, "javax.swing.event.DocumentListener");
+Clazz_overrideMethod (c$, "removeDocumentListener", 
+function (listener) {
+if (this.listenerList != null) this.listenerList.remove (javax.swing.event.DocumentListener, listener);
+}, "javax.swing.event.DocumentListener");
+Clazz_overrideMethod (c$, "addUndoableEditListener", 
+function (listener) {
+}, "javax.swing.event.UndoableEditListener");
+Clazz_overrideMethod (c$, "removeUndoableEditListener", 
+function (listener) {
+}, "javax.swing.event.UndoableEditListener");
+Clazz_overrideMethod (c$, "getProperty", 
+function (key) {
+return this.props.get (key);
+}, "~O");
+Clazz_overrideMethod (c$, "putProperty", 
+function (key, value) {
+this.props.put (key, value);
+}, "~O,~O");
+Clazz_overrideMethod (c$, "getAsynchronousLoadPriority", 
+function () {
+return -1;
+});
+Clazz_overrideMethod (c$, "setDocumentFilter", 
+function (filter) {
+this.filter = filter;
+}, "javax.swing.text.DocumentFilter");
+Clazz_defineMethod (c$, "getDocumentFilter", 
+function () {
+return this.filter;
+});
+c$.$JSAbstractDocument$DefaultFilterBypass$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+Clazz_instantialize (this, arguments);
+}, swingjs.JSAbstractDocument, "DefaultFilterBypass", javax.swing.text.DocumentFilter.FilterBypass);
+Clazz_overrideMethod (c$, "getDocument", 
+function () {
+return this.b$["swingjs.JSAbstractDocument"].me;
+});
+Clazz_overrideMethod (c$, "remove", 
+function (a, b) {
+this.b$["swingjs.JSAbstractDocument"].handleRemove (a, b);
+}, "~N,~N");
+Clazz_overrideMethod (c$, "insertString", 
+function (a, b, c) {
+this.b$["swingjs.JSAbstractDocument"].handleInsertString (a, b, c);
+}, "~N,~S,javax.swing.text.AttributeSet");
+Clazz_overrideMethod (c$, "replace", 
+function (a, b, c, d) {
+this.b$["swingjs.JSAbstractDocument"].handleRemove (a, b);
+this.b$["swingjs.JSAbstractDocument"].handleInsertString (a, c, d);
+}, "~N,~N,~S,javax.swing.text.AttributeSet");
+c$ = Clazz_p0p ();
+};
+c$.$JSAbstractDocument$JSElement$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.parent = null;
+this.attributeSet = null;
+this.start = 0;
+this.end = 0;
+this.nchildren = 0;
+this.children = null;
+this.lastIndex = 0;
+Clazz_instantialize (this, arguments);
+}, swingjs.JSAbstractDocument, "JSElement", null, javax.swing.text.Element);
+Clazz_makeConstructor (c$, 
+function () {
+this.children = null;
+this.nchildren = 0;
+this.lastIndex = -1;
+});
+Clazz_defineMethod (c$, "addChild", 
+function (a) {
+if (this.children == null) this.children =  new Array (10);
+ else if (this.nchildren == this.children.length) this.children = JU.AU.doubleLength (this.children);
+this.children[this.nchildren++] = a;
+}, "swingjs.JSAbstractDocument.JSElement");
+Clazz_overrideMethod (c$, "getDocument", 
+function () {
+return this.b$["swingjs.JSAbstractDocument"].me;
+});
+Clazz_overrideMethod (c$, "getParentElement", 
+function () {
+return this.parent;
+});
+Clazz_overrideMethod (c$, "getName", 
+function () {
+return this.getName ();
+});
+Clazz_overrideMethod (c$, "getAttributes", 
+function () {
+return this.attributeSet;
+});
+Clazz_defineMethod (c$, "getStartOffset", 
+function () {
+return this.start;
+});
+Clazz_defineMethod (c$, "getEndOffset", 
+function () {
+return this.end;
+});
+Clazz_overrideMethod (c$, "getElementIndex", 
+function (a) {
+var b;
+var c = 0;
+var d = this.nchildren - 1;
+var e = 0;
+var f = this.getStartOffset ();
+var g;
+if (this.nchildren == 0) {
+return 0;
+}if (a >= this.getEndOffset ()) {
+return this.nchildren - 1;
+}if ((this.lastIndex >= c) && (this.lastIndex <= d)) {
+var h = this.children[this.lastIndex];
+f = h.getStartOffset ();
+g = h.getEndOffset ();
+if ((a >= f) && (a < g)) {
+return this.lastIndex;
+}if (a < f) {
+d = this.lastIndex;
+} else {
+c = this.lastIndex;
+}}while (c <= d) {
+e = c + (Clazz_doubleToInt ((d - c) / 2));
+var h = this.children[e];
+f = h.getStartOffset ();
+g = h.getEndOffset ();
+if ((a >= f) && (a < g)) {
+b = e;
+this.lastIndex = b;
+return b;
+} else if (a < f) {
+d = e - 1;
+} else {
+c = e + 1;
+}}
+if (a < f) {
+b = e;
+} else {
+b = e + 1;
+}this.lastIndex = b;
+return b;
+}, "~N");
+Clazz_overrideMethod (c$, "getElementCount", 
+function () {
+return this.nchildren;
+});
+Clazz_overrideMethod (c$, "getElement", 
+function (a) {
+return (a >= this.nchildren ? null : this.children[a]);
+}, "~N");
+Clazz_overrideMethod (c$, "isLeaf", 
+function () {
+return (this.parent != null);
+});
+c$ = Clazz_p0p ();
+};
+Clazz_defineStatics (c$,
+"ParagraphElementName", "paragraph",
+"ContentElementName", "content");
+});
+Clazz_declarePackage ("swingjs");
+Clazz_load (["javax.swing.event.DocumentEvent"], "swingjs.JSDocumentEvent", ["swingjs.JSToolkit"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.off = 0;
+this.len = 0;
+this.type = null;
+this.doc = null;
+Clazz_instantialize (this, arguments);
+}, swingjs, "JSDocumentEvent", null, javax.swing.event.DocumentEvent);
+Clazz_makeConstructor (c$, 
+function (doc, offs, len, eventType) {
+this.off = offs;
+this.len = len;
+this.type = eventType;
+this.doc = doc;
+}, "swingjs.JSAbstractDocument,~N,~N,javax.swing.event.DocumentEvent.EventType");
+Clazz_overrideMethod (c$, "getOffset", 
+function () {
+return this.off;
+});
+Clazz_overrideMethod (c$, "getLength", 
+function () {
+return this.len;
+});
+Clazz_overrideMethod (c$, "getDocument", 
+function () {
+return this.doc;
+});
+Clazz_overrideMethod (c$, "getType", 
+function () {
+return this.type;
+});
+Clazz_overrideMethod (c$, "getChange", 
+function (elem) {
+swingjs.JSToolkit.notImplemented ("");
+return null;
+}, "javax.swing.text.Element");
+});
+Clazz_declarePackage ("swingjs");
+Clazz_load (["javax.swing.text.Position"], "swingjs.JSPosition", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.pos = 0;
+Clazz_instantialize (this, arguments);
+}, swingjs, "JSPosition", null, javax.swing.text.Position);
+Clazz_makeConstructor (c$, 
+function (offset) {
+this.pos = offset;
+}, "~N");
+Clazz_overrideMethod (c$, "getOffset", 
+function () {
+return this.pos;
+});
+});
+Clazz_declarePackage ("swingjs.api");
+c$ = Clazz_declareType (swingjs.api, "HTML5CanvasContext2D");
+c$.stretchImage = Clazz_defineMethod (c$, "stretchImage", 
+function (ctx, img, sx, sy, swidth, sheight, dx, dy, dwidth, dheight) {
+{
+ctx.drawImage(img, sx, sy, swidth, sheight, dx, dy, dwidth, dheight);
+}}, "swingjs.api.HTML5CanvasContext2D,swingjs.api.DOMNode,~N,~N,~N,~N,~N,~N,~N,~N");
+Clazz_declarePackage ("javax.swing");
+Clazz_load (["javax.swing.JLabel", "$.ListCellRenderer", "javax.swing.plaf.UIResource", "javax.swing.border.EmptyBorder"], "javax.swing.DefaultListCellRenderer", ["javax.swing.Icon", "jssun.swing.DefaultLookup"], function () {
+c$ = Clazz_declareType (javax.swing, "DefaultListCellRenderer", javax.swing.JLabel, javax.swing.ListCellRenderer);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.DefaultListCellRenderer);
+this.setOpaque (true);
+this.setBorder (this.getNoFocusBorder ());
+this.setName ("List.cellRenderer");
+});
+Clazz_defineMethod (c$, "getNoFocusBorder", 
+ function () {
+var border = jssun.swing.DefaultLookup.getBorder (this, this.ui, "List.cellNoFocusBorder");
+if (System.getSecurityManager () != null) {
+if (border != null) return border;
+return javax.swing.DefaultListCellRenderer.SAFE_NO_FOCUS_BORDER;
+} else {
+if (border != null && (javax.swing.DefaultListCellRenderer.noFocusBorder == null || javax.swing.DefaultListCellRenderer.noFocusBorder === javax.swing.DefaultListCellRenderer.DEFAULT_NO_FOCUS_BORDER)) {
+return border;
+}return javax.swing.DefaultListCellRenderer.noFocusBorder;
+}});
+Clazz_overrideMethod (c$, "getListCellRendererComponent", 
+function (list, value, index, isSelected, cellHasFocus) {
+this.setComponentOrientation (list.getComponentOrientation ());
+var bg = null;
+var fg = null;
+if (isSelected) {
+this.setBackground (bg == null ? list.getSelectionBackground () : bg);
+this.setForeground (fg == null ? list.getSelectionForeground () : fg);
+} else {
+this.setBackground (list.getBackground ());
+this.setForeground (list.getForeground ());
+}if (Clazz_instanceOf (value, javax.swing.Icon)) {
+this.setIcon (value);
+this.setText ("");
+} else {
+this.setIcon (null);
+this.setText ((value == null) ? "" : value.toString ());
+}this.setEnabled (list.isEnabled ());
+this.setFont (list.getFont ());
+var border = null;
+if (cellHasFocus) {
+if (isSelected) {
+border = jssun.swing.DefaultLookup.getBorder (this, this.ui, "List.focusSelectedCellHighlightBorder");
+}if (border == null) {
+border = jssun.swing.DefaultLookup.getBorder (this, this.ui, "List.focusCellHighlightBorder");
+}} else {
+border = this.getNoFocusBorder ();
+}this.setBorder (border);
+return this;
+}, "javax.swing.JList,~O,~N,~B,~B");
+Clazz_defineMethod (c$, "isOpaque", 
+function () {
+var back = this.getBackground ();
+var p = this.getParent ();
+if (p != null) {
+p = p.getParent ();
+}var colorMatch = (back != null) && (p != null) && back.equals (p.getBackground ()) && p.isOpaque ();
+return !colorMatch && Clazz_superCall (this, javax.swing.DefaultListCellRenderer, "isOpaque", []);
+});
+Clazz_overrideMethod (c$, "validate", 
+function () {
+});
+Clazz_overrideMethod (c$, "invalidate", 
+function () {
+});
+Clazz_defineMethod (c$, "repaint", 
+function () {
+});
+Clazz_overrideMethod (c$, "revalidate", 
+function () {
+});
+Clazz_defineMethod (c$, "repaint", 
+function (tm, x, y, width, height) {
+}, "~N,~N,~N,~N,~N");
+Clazz_defineMethod (c$, "repaint", 
+function (r) {
+}, "java.awt.Rectangle");
+Clazz_overrideMethod (c$, "firePropertyChangeObject", 
+function (propertyName, oldValue, newValue) {
+}, "~S,~O,~O");
+Clazz_overrideMethod (c$, "firePropertyChangeByte", 
+function (propertyName, oldValue, newValue) {
+}, "~S,~N,~N");
+Clazz_overrideMethod (c$, "firePropertyChangeChar", 
+function (propertyName, oldValue, newValue) {
+}, "~S,~S,~S");
+Clazz_overrideMethod (c$, "firePropertyChangeShort", 
+function (propertyName, oldValue, newValue) {
+}, "~S,~N,~N");
+Clazz_overrideMethod (c$, "firePropertyChangeInt", 
+function (propertyName, oldValue, newValue) {
+}, "~S,~N,~N");
+Clazz_overrideMethod (c$, "firePropertyChangeLong", 
+function (propertyName, oldValue, newValue) {
+}, "~S,~N,~N");
+Clazz_overrideMethod (c$, "firePropertyChangeFloat", 
+function (propertyName, oldValue, newValue) {
+}, "~S,~N,~N");
+Clazz_overrideMethod (c$, "firePropertyChangeDouble", 
+function (propertyName, oldValue, newValue) {
+}, "~S,~N,~N");
+Clazz_overrideMethod (c$, "firePropertyChangeBool", 
+function (propertyName, oldValue, newValue) {
+}, "~S,~B,~B");
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.DefaultListCellRenderer, "UIResource", javax.swing.DefaultListCellRenderer, javax.swing.plaf.UIResource);
+c$ = Clazz_p0p ();
+c$.SAFE_NO_FOCUS_BORDER = c$.prototype.SAFE_NO_FOCUS_BORDER =  new javax.swing.border.EmptyBorder (1, 1, 1, 1);
+c$.DEFAULT_NO_FOCUS_BORDER = c$.prototype.DEFAULT_NO_FOCUS_BORDER =  new javax.swing.border.EmptyBorder (1, 1, 1, 1);
+c$.noFocusBorder = c$.prototype.noFocusBorder = javax.swing.DefaultListCellRenderer.DEFAULT_NO_FOCUS_BORDER;
+});
+Clazz_declarePackage ("javax.swing");
+Clazz_declareInterface (javax.swing, "ListCellRenderer");
+Clazz_declarePackage ("javax.swing.border");
+Clazz_load (["javax.swing.border.AbstractBorder"], "javax.swing.border.EmptyBorder", ["java.awt.Insets"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.left = 0;
+this.right = 0;
+this.top = 0;
+this.bottom = 0;
+Clazz_instantialize (this, arguments);
+}, javax.swing.border, "EmptyBorder", javax.swing.border.AbstractBorder);
+Clazz_makeConstructor (c$, 
+function (top, left, bottom, right) {
+Clazz_superConstructor (this, javax.swing.border.EmptyBorder, []);
+this.top = top;
+this.right = right;
+this.bottom = bottom;
+this.left = left;
+}, "~N,~N,~N,~N");
+Clazz_makeConstructor (c$, 
+function (borderInsets) {
+Clazz_superConstructor (this, javax.swing.border.EmptyBorder, []);
+this.top = borderInsets.top;
+this.right = borderInsets.right;
+this.bottom = borderInsets.bottom;
+this.left = borderInsets.left;
+}, "java.awt.Insets");
+Clazz_overrideMethod (c$, "paintBorder", 
+function (c, g, x, y, width, height) {
+}, "java.awt.Component,java.awt.Graphics,~N,~N,~N,~N");
+Clazz_defineMethod (c$, "getBorderInsets", 
+function (c) {
+return this.getBorderInsets ();
+}, "java.awt.Component");
+Clazz_defineMethod (c$, "getBorderInsets", 
+function (c, insets) {
+insets.left = this.left;
+insets.top = this.top;
+insets.right = this.right;
+insets.bottom = this.bottom;
+return insets;
+}, "java.awt.Component,java.awt.Insets");
+Clazz_defineMethod (c$, "getBorderInsets", 
+function () {
+return  new java.awt.Insets (this.top, this.left, this.bottom, this.right);
+});
+Clazz_overrideMethod (c$, "isBorderOpaque", 
+function () {
+return false;
+});
+});
+Clazz_declarePackage ("jssun.swing");
+Clazz_load (null, "jssun.swing.DefaultLookup", ["java.lang.Boolean", "$.Number", "$.Thread", "java.awt.Color", "$.Insets", "javax.swing.Icon", "$.UIManager", "javax.swing.border.Border", "jssun.awt.AppContext"], function () {
+c$ = Clazz_declareType (jssun.swing, "DefaultLookup");
+c$.setDefaultLookup = Clazz_defineMethod (c$, "setDefaultLookup", 
+function (lookup) {
+{
+if (!jssun.swing.DefaultLookup.isLookupSet && lookup == null) {
+return;
+} else if (lookup == null) {
+lookup =  new jssun.swing.DefaultLookup ();
+}jssun.swing.DefaultLookup.isLookupSet = true;
+jssun.awt.AppContext.getAppContext ().put (jssun.swing.DefaultLookup.DEFAULT_LOOKUP_KEY, lookup);
+jssun.swing.DefaultLookup.currentDefaultThread = Thread.currentThread ();
+jssun.swing.DefaultLookup.currentDefaultLookup = lookup;
+}}, "jssun.swing.DefaultLookup");
+c$.get = Clazz_defineMethod (c$, "get", 
+function (c, ui, key) {
+var lookupSet;
+{
+lookupSet = jssun.swing.DefaultLookup.isLookupSet;
+}if (!lookupSet) {
+return javax.swing.UIManager.get (key, c.getLocale ());
+}var thisThread = Thread.currentThread ();
+var lookup;
+{
+if (thisThread === jssun.swing.DefaultLookup.currentDefaultThread) {
+lookup = jssun.swing.DefaultLookup.currentDefaultLookup;
+} else {
+lookup = jssun.awt.AppContext.getAppContext ().get (jssun.swing.DefaultLookup.DEFAULT_LOOKUP_KEY);
+if (lookup == null) {
+lookup =  new jssun.swing.DefaultLookup ();
+jssun.awt.AppContext.getAppContext ().put (jssun.swing.DefaultLookup.DEFAULT_LOOKUP_KEY, lookup);
+}jssun.swing.DefaultLookup.currentDefaultThread = thisThread;
+jssun.swing.DefaultLookup.currentDefaultLookup = lookup;
+}}return lookup.getDefault (c, ui, key);
+}, "javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S");
+c$.getInt = Clazz_defineMethod (c$, "getInt", 
+function (c, ui, key, defaultValue) {
+var iValue = jssun.swing.DefaultLookup.get (c, ui, key);
+if (iValue == null || !(Clazz_instanceOf (iValue, Number))) {
+return defaultValue;
+}return (iValue).intValue ();
+}, "javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S,~N");
+c$.getInt = Clazz_defineMethod (c$, "getInt", 
+function (c, ui, key) {
+return jssun.swing.DefaultLookup.getInt (c, ui, key, -1);
+}, "javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S");
+c$.getInsets = Clazz_defineMethod (c$, "getInsets", 
+function (c, ui, key, defaultValue) {
+var iValue = jssun.swing.DefaultLookup.get (c, ui, key);
+if (iValue == null || !(Clazz_instanceOf (iValue, java.awt.Insets))) {
+return defaultValue;
+}return iValue;
+}, "javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S,java.awt.Insets");
+c$.getInsets = Clazz_defineMethod (c$, "getInsets", 
+function (c, ui, key) {
+return jssun.swing.DefaultLookup.getInsets (c, ui, key, null);
+}, "javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S");
+c$.getBoolean = Clazz_defineMethod (c$, "getBoolean", 
+function (c, ui, key, defaultValue) {
+var iValue = jssun.swing.DefaultLookup.get (c, ui, key);
+if (iValue == null || !(Clazz_instanceOf (iValue, Boolean))) {
+return defaultValue;
+}return (iValue).booleanValue ();
+}, "javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S,~B");
+c$.getBoolean = Clazz_defineMethod (c$, "getBoolean", 
+function (c, ui, key) {
+return jssun.swing.DefaultLookup.getBoolean (c, ui, key, false);
+}, "javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S");
+c$.getColor = Clazz_defineMethod (c$, "getColor", 
+function (c, ui, key, defaultValue) {
+var iValue = jssun.swing.DefaultLookup.get (c, ui, key);
+if (iValue == null || !(Clazz_instanceOf (iValue, java.awt.Color))) {
+return defaultValue;
+}return iValue;
+}, "javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S,java.awt.Color");
+c$.getColor = Clazz_defineMethod (c$, "getColor", 
+function (c, ui, key) {
+return jssun.swing.DefaultLookup.getColor (c, ui, key, null);
+}, "javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S");
+c$.getIcon = Clazz_defineMethod (c$, "getIcon", 
+function (c, ui, key, defaultValue) {
+var iValue = jssun.swing.DefaultLookup.get (c, ui, key);
+if (iValue == null || !(Clazz_instanceOf (iValue, javax.swing.Icon))) {
+return defaultValue;
+}return iValue;
+}, "javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S,javax.swing.Icon");
+c$.getIcon = Clazz_defineMethod (c$, "getIcon", 
+function (c, ui, key) {
+return jssun.swing.DefaultLookup.getIcon (c, ui, key, null);
+}, "javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S");
+c$.getBorder = Clazz_defineMethod (c$, "getBorder", 
+function (c, ui, key, defaultValue) {
+var iValue = jssun.swing.DefaultLookup.get (c, ui, key);
+if (iValue == null || !(Clazz_instanceOf (iValue, javax.swing.border.Border))) {
+return defaultValue;
+}return iValue;
+}, "javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S,javax.swing.border.Border");
+c$.getBorder = Clazz_defineMethod (c$, "getBorder", 
+function (c, ui, key) {
+return jssun.swing.DefaultLookup.getBorder (c, ui, key, null);
+}, "javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S");
+Clazz_defineMethod (c$, "getDefault", 
+function (c, ui, key) {
+return javax.swing.UIManager.get (key, c.getLocale ());
+}, "javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S");
+c$.DEFAULT_LOOKUP_KEY = c$.prototype.DEFAULT_LOOKUP_KEY =  new Clazz._O ();
+Clazz_defineStatics (c$,
+"currentDefaultThread", null,
+"currentDefaultLookup", null,
+"isLookupSet", false);
+});
+Clazz_declarePackage ("javax.swing.plaf");
+Clazz_load (["java.awt.Dimension", "javax.swing.plaf.UIResource"], "javax.swing.plaf.DimensionUIResource", null, function () {
+c$ = Clazz_declareType (javax.swing.plaf, "DimensionUIResource", java.awt.Dimension, javax.swing.plaf.UIResource);
+});
+Clazz_declarePackage ("javax.swing.plaf");
+Clazz_load (["java.awt.Insets", "javax.swing.plaf.UIResource"], "javax.swing.plaf.InsetsUIResource", null, function () {
+c$ = Clazz_declareType (javax.swing.plaf, "InsetsUIResource", java.awt.Insets, javax.swing.plaf.UIResource);
+});
+Clazz_declarePackage ("swingjs.plaf");
+Clazz_declareInterface (swingjs.plaf, "JSEventHandler");
+Clazz_declarePackage ("JU");
+Clazz_load (["java.net.URLStreamHandlerFactory", "java.util.Hashtable"], "JU.AjaxURLStreamHandlerFactory", ["JU.AjaxURLStreamHandler"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.htFactories = null;
+Clazz_instantialize (this, arguments);
+}, JU, "AjaxURLStreamHandlerFactory", null, java.net.URLStreamHandlerFactory);
+Clazz_prepareFields (c$, function () {
+this.htFactories =  new java.util.Hashtable ();
+});
+Clazz_overrideMethod (c$, "createURLStreamHandler", 
+function (protocol) {
+var fac = this.htFactories.get (protocol);
+if (fac == null) this.htFactories.put (protocol, fac =  new JU.AjaxURLStreamHandler (protocol));
+return (fac.protocol == null ? null : fac);
+}, "~S");
+});
+Clazz_declarePackage ("java.net");
+Clazz_declareInterface (java.net, "URLStreamHandlerFactory");
+Clazz_declarePackage ("JU");
+Clazz_load (["java.net.URLStreamHandler"], "JU.AjaxURLStreamHandler", ["JU.AjaxURLConnection", "$.SB"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.protocol = null;
+Clazz_instantialize (this, arguments);
+}, JU, "AjaxURLStreamHandler", java.net.URLStreamHandler);
+Clazz_makeConstructor (c$, 
+function (protocol) {
+Clazz_superConstructor (this, JU.AjaxURLStreamHandler, []);
+this.protocol = protocol;
+}, "~S");
+Clazz_overrideMethod (c$, "openConnection", 
+function (url) {
+return  new JU.AjaxURLConnection (url);
+}, "java.net.URL");
+Clazz_overrideMethod (c$, "toExternalForm", 
+function (u) {
+var result =  new JU.SB ();
+result.append (u.getProtocol ());
+result.append (":");
+if (u.getAuthority () != null && u.getAuthority ().length > 0) {
+result.append ("//");
+result.append (u.getAuthority ());
+}if (u.getPath () != null) {
+result.append (u.getPath ());
+}if (u.getQuery () != null) {
+result.append ("?");
+result.append (u.getQuery ());
+}if (u.getRef () != null) {
+result.append ("#");
+result.append (u.getRef ());
+}return result.toString ();
+}, "java.net.URL");
+});
+Clazz_declarePackage ("java.net");
+Clazz_load (null, "java.net.URLStreamHandler", ["java.lang.IllegalArgumentException", "$.SecurityException", "$.UnsupportedOperationException"], function () {
+c$ = Clazz_declareType (java.net, "URLStreamHandler");
+Clazz_defineMethod (c$, "openConnectionProxy", 
+function (u, p) {
+throw  new UnsupportedOperationException ("Method not implemented.");
+}, "java.net.URL,java.net.Proxy");
+Clazz_defineMethod (c$, "parseURL", 
+function (u, spec, start, limit) {
+var protocol = u.getProtocol ();
+var authority = u.getAuthority ();
+var userInfo = u.getUserInfo ();
+var host = u.getHost ();
+var port = u.getPort ();
+var path = u.getPath ();
+var query = u.getQuery ();
+var ref = u.getRef ();
+var isRelPath = false;
+var queryOnly = false;
+if (start < limit) {
+var queryStart = spec.indexOf ('?');
+queryOnly = queryStart == start;
+if ((queryStart != -1) && (queryStart < limit)) {
+query = spec.substring (queryStart + 1, limit);
+if (limit > queryStart) limit = queryStart;
+spec = spec.substring (0, queryStart);
+}}var i = 0;
+var isUNCName = (start <= limit - 4) && (spec.charAt (start) == '/') && (spec.charAt (start + 1) == '/') && (spec.charAt (start + 2) == '/') && (spec.charAt (start + 3) == '/');
+if (!isUNCName && (start <= limit - 2) && (spec.charAt (start) == '/') && (spec.charAt (start + 1) == '/')) {
+start += 2;
+i = spec.indexOf ('/', start);
+if (i < 0) {
+i = spec.indexOf ('?', start);
+if (i < 0) i = limit;
+}host = authority = spec.substring (start, i);
+var ind = authority.indexOf ('@');
+if (ind != -1) {
+userInfo = authority.substring (0, ind);
+host = authority.substring (ind + 1);
+} else {
+userInfo = null;
+}if (host != null) {
+if (host.length > 0 && (host.charAt (0) == '[')) {
+throw  new IllegalArgumentException ("Invalid host: " + host);
+}ind = host.indexOf (':');
+port = -1;
+if (ind >= 0) {
+if (host.length > (ind + 1)) {
+port = Integer.parseInt (host.substring (ind + 1));
+}host = host.substring (0, ind);
+}} else {
+host = "";
+}if (port < -1) throw  new IllegalArgumentException ("Invalid port number :" + port);
+start = i;
+if (authority.length > 0) path = "";
+}if (host == null) {
+host = "";
+}if (start < limit) {
+if (spec.charAt (start) == '/') {
+path = spec.substring (start, limit);
+} else if (path != null && path.length > 0) {
+isRelPath = true;
+var ind = path.lastIndexOf ('/');
+var seperator = "";
+if (ind == -1 && authority != null) seperator = "/";
+path = path.substring (0, ind + 1) + seperator + spec.substring (start, limit);
+} else {
+var seperator = (authority != null) ? "/" : "";
+path = seperator + spec.substring (start, limit);
+}} else if (queryOnly && path != null) {
+var ind = path.lastIndexOf ('/');
+if (ind < 0) ind = 0;
+path = path.substring (0, ind) + "/";
+}if (path == null) path = "";
+if (isRelPath) {
+while ((i = path.indexOf ("/./")) >= 0) {
+path = path.substring (0, i) + path.substring (i + 2);
+}
+i = 0;
+while ((i = path.indexOf ("/../", i)) >= 0) {
+if (i > 0 && (limit = path.lastIndexOf ('/', i - 1)) >= 0 && (path.indexOf ("/../", limit) != 0)) {
+path = path.substring (0, limit) + path.substring (i + 3);
+i = 0;
+} else {
+i = i + 3;
+}}
+while (path.endsWith ("/..")) {
+i = path.indexOf ("/..");
+if ((limit = path.lastIndexOf ('/', i - 1)) >= 0) {
+path = path.substring (0, limit + 1);
+} else {
+break;
+}}
+if (path.startsWith ("./") && path.length > 2) path = path.substring (2);
+if (path.endsWith ("/.")) path = path.substring (0, path.length - 1);
+}this.setURL (u, protocol, host, port, authority, userInfo, path, query, ref);
+}, "java.net.URL,~S,~N,~N");
+Clazz_defineMethod (c$, "getDefaultPort", 
+function () {
+return -1;
+});
+Clazz_defineMethod (c$, "equals2", 
+function (u1, u2) {
+var ref1 = u1.getRef ();
+var ref2 = u2.getRef ();
+return (ref1 === ref2 || (ref1 != null && ref1.equals (ref2))) && this.sameFile (u1, u2);
+}, "java.net.URL,java.net.URL");
+Clazz_defineMethod (c$, "hashCode", 
+function (u) {
+var h = 0;
+var protocol = u.getProtocol ();
+if (protocol != null) h += protocol.hashCode ();
+h += u.toString ().hashCode ();
+var file = u.getFile ();
+if (file != null) h += file.hashCode ();
+if (u.getPort () == -1) h += this.getDefaultPort ();
+ else h += u.getPort ();
+var ref = u.getRef ();
+if (ref != null) h += ref.hashCode ();
+return h;
+}, "java.net.URL");
+Clazz_defineMethod (c$, "sameFile", 
+function (u1, u2) {
+if (!((u1.getProtocol () === u2.getProtocol ()) || (u1.getProtocol () != null && u1.getProtocol ().equalsIgnoreCase (u2.getProtocol ())))) return false;
+if (!(u1.getFile () === u2.getFile () || (u1.getFile () != null && u1.getFile ().equals (u2.getFile ())))) return false;
+var port1;
+var port2;
+port1 = (u1.getPort () != -1) ? u1.getPort () : u1.handler.getDefaultPort ();
+port2 = (u2.getPort () != -1) ? u2.getPort () : u2.handler.getDefaultPort ();
+if (port1 != port2) return false;
+if (!this.hostsEqual (u1, u2)) return false;
+return true;
+}, "java.net.URL,java.net.URL");
+Clazz_defineMethod (c$, "hostsEqual", 
+function (u1, u2) {
+if (u1.getHost () != null && u2.getHost () != null) return u1.getHost ().equalsIgnoreCase (u2.getHost ());
+return u1.getHost () == null && u2.getHost () == null;
+}, "java.net.URL,java.net.URL");
+Clazz_defineMethod (c$, "toExternalForm", 
+function (u) {
+return "";
+}, "java.net.URL");
+Clazz_defineMethod (c$, "setURL", 
+function (u, protocol, host, port, authority, userInfo, path, query, ref) {
+if (this !== u.handler) {
+throw  new SecurityException ("handler for url different from this handler");
+}u.set (u.getProtocol (), host, port, authority, userInfo, path, query, ref);
+}, "java.net.URL,~S,~S,~N,~S,~S,~S,~S,~S");
+Clazz_defineMethod (c$, "setURLDeprecated", 
+function (u, protocol, host, port, file, ref) {
+var authority = null;
+var userInfo = null;
+if (host != null && host.length != 0) {
+authority = (port == -1) ? host : host + ":" + port;
+var at = host.lastIndexOf ('@');
+if (at != -1) {
+userInfo = host.substring (0, at);
+host = host.substring (at + 1);
+}}var path = null;
+var query = null;
+if (file != null) {
+var q = file.lastIndexOf ('?');
+if (q != -1) {
+query = file.substring (q + 1);
+path = file.substring (0, q);
+} else path = file;
+}this.setURL (u, protocol, host, port, authority, userInfo, path, query, ref);
+}, "java.net.URL,~S,~S,~N,~S,~S");
+});
+Clazz_declarePackage ("JU");
+Clazz_load (["java.net.URLConnection"], "JU.AjaxURLConnection", ["JU.AU", "$.Rdr", "$.SB"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.bytesOut = null;
+this.postOut = "";
+Clazz_instantialize (this, arguments);
+}, JU, "AjaxURLConnection", java.net.URLConnection);
+Clazz_defineMethod (c$, "doAjax", 
+ function () {
+{
+return Jmol._doAjax(this.url, this.postOut, this.bytesOut);
+}});
+Clazz_overrideMethod (c$, "connect", 
+function () {
+});
+Clazz_defineMethod (c$, "outputBytes", 
+function (bytes) {
+this.bytesOut = bytes;
+}, "~A");
+Clazz_defineMethod (c$, "outputString", 
+function (post) {
+this.postOut = post;
+}, "~S");
+Clazz_overrideMethod (c$, "getInputStream", 
+function () {
+var is = null;
+var o = this.doAjax ();
+if (JU.AU.isAB (o)) is = JU.Rdr.getBIS (o);
+ else if (Clazz_instanceOf (o, JU.SB)) is = JU.Rdr.getBIS (JU.Rdr.getBytesFromSB (o));
+ else if (Clazz_instanceOf (o, String)) is = JU.Rdr.getBIS ((o).getBytes ());
+return is;
+});
+Clazz_defineMethod (c$, "getContents", 
+function () {
+return this.doAjax ();
+});
+});
+Clazz_declarePackage ("java.net");
+Clazz_load (null, "java.net.URLConnection", ["java.lang.IllegalStateException", "$.NullPointerException", "java.net.UnknownServiceException", "JU.Lst"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.url = null;
+this.doInput = true;
+this.doOutput = false;
+this.connected = false;
+this.requests = null;
+Clazz_instantialize (this, arguments);
+}, java.net, "URLConnection");
+Clazz_defineMethod (c$, "setDoInput", 
+function (doinput) {
+if (this.connected) throw  new IllegalStateException ("Already connected");
+this.doInput = doinput;
+}, "~B");
+Clazz_defineMethod (c$, "getDoInput", 
+function () {
+return this.doInput;
+});
+Clazz_defineMethod (c$, "setDoOutput", 
+function (dooutput) {
+if (this.connected) throw  new IllegalStateException ("Already connected");
+this.doOutput = dooutput;
+}, "~B");
+Clazz_defineMethod (c$, "getDoOutput", 
+function () {
+return this.doOutput;
+});
+Clazz_makeConstructor (c$, 
+function (url) {
+this.url = url;
+}, "java.net.URL");
+Clazz_defineMethod (c$, "getURL", 
+function () {
+return this.url;
+});
+Clazz_defineMethod (c$, "getInputStream", 
+function () {
+throw  new java.net.UnknownServiceException ("protocol doesn't support input");
+});
+Clazz_defineMethod (c$, "getOutputStream", 
+function () {
+throw  new java.net.UnknownServiceException ("protocol doesn't support output");
+});
+Clazz_defineMethod (c$, "setRequestProperty", 
+function (key, value) {
+if (this.connected) throw  new IllegalStateException ("Already connected");
+if (key == null) throw  new NullPointerException ("key is null");
+if (this.requests == null) this.requests =  new JU.Lst ();
+for (var i = this.requests.size (); --i >= 0; ) if (this.requests.get (i)[0].equals (key)) {
+this.requests.get (i)[1] = value;
+return;
+}
+this.requests.addLast ( Clazz_newArray (-1, [key, value]));
+}, "~S,~S");
+});
+Clazz_declarePackage ("java.net");
+Clazz_load (["java.io.IOException"], "java.net.UnknownServiceException", null, function () {
+c$ = Clazz_declareType (java.net, "UnknownServiceException", java.io.IOException);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, java.net.UnknownServiceException, []);
+});
+});
+Clazz_declarePackage ("jalview.bin");
+Clazz_load (["jalview.api.StructureSelectionManagerProvider", "jalview.javascript.JalviewLiteJsApi", "java.lang.Thread", "javax.swing.JApplet", "jalview.util.MessageManager", "java.util.Hashtable", "$.Vector", "javax.swing.JButton"], "jalview.bin.JalviewLite", ["awt2swing.Util", "jalview.analysis.SequenceIdMatcher", "jalview.appletgui.AlignFrame", "$.EmbmenuFrame", "$.FeatureSettings", "$.SplitFrame", "jalview.datamodel.Alignment", "$.AlignmentOrder", "$.ColumnSelection", "$.PDBEntry", "$.SequenceGroup", "jalview.io.AnnotationFile", "$.AppletFormatAdapter", "$.FileParse", "$.IdentifyFile", "$.JnetAnnotationMaker", "$.NewickFile", "jalview.javascript.JSFunctionExec", "$.JsSelectionSender", "$.MouseOverListener", "$.MouseOverStructureListener", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.ColourSchemeProperty", "$.UserColourScheme", "jalview.structure.SelectionListener", "$.StructureSelectionManager", "java.awt.Color", "$.EventQueue", "$.Font", "java.awt.event.ActionListener", "$.WindowAdapter", "java.io.BufferedReader", "$.InputStreamReader", "java.lang.Error", "$.StringBuffer", "java.net.URL", "java.util.StringTokenizer", "netscape.javascript.JSObject"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.embedded = false;
+this.enableSplitFrame = false;
+this.showButton = true;
+this.checkForJmol = true;
+this.jalviewServletURL = null;
+this.startupFile = "No file";
+this.helpUrl = null;
+this.externalstructureviewer = null;
+this.sep = null;
+this.rgb = null;
+this.labelColour = null;
+this.initjscallback = null;
+this.pdbFile = null;
+this.sequence = null;
+this.jnetFile = null;
+this.annotations = null;
+this.hideFeatureGroups = null;
+this.showFeatureGroups = null;
+this.features = null;
+this.showFeatureSettings = null;
+this.scoreFile = null;
+this.treeFile = null;
+this.windowWidth = null;
+this.windowHeight = null;
+this.defaultColour = null;
+this.sortBy = null;
+this.wrap = null;
+this.centrecolumnlabels = null;
+this.userDefinedColour = null;
+this.widthScale = null;
+this.heightScale = null;
+this.upperCase = null;
+this.file2 = null;
+this.javascriptListeners = null;
+this.jsFunctionExec = null;
+this.fileFound = true;
+this.launcher = null;
+this.currentAlignFrame = null;
+this.initialAlignFrame = null;
+this.checkedForJmol = false;
+this.jmolAvailable = false;
+this.alignPdbStructures = false;
+this.useXtrnalSviewer = false;
+this.haveShownLoadMessage = false;
+if (!Clazz_isClassDefined ("jalview.bin.JalviewLite.LoadJmolThread")) {
+jalview.bin.JalviewLite.$JalviewLite$LoadJmolThread$ ();
+}
+if (!Clazz_isClassDefined ("jalview.bin.JalviewLite.LoadingThread")) {
+jalview.bin.JalviewLite.$JalviewLite$LoadingThread$ ();
+}
+this.separator = "\u00ac";
+this.jsfallbackEnabled = false;
+this.jshashes = null;
+this.jsmessages = null;
+this.jsExecQueue = null;
+Clazz_instantialize (this, arguments);
+}, jalview.bin, "JalviewLite", javax.swing.JApplet, [jalview.api.StructureSelectionManagerProvider, jalview.javascript.JalviewLiteJsApi]);
+Clazz_prepareFields (c$, function () {
+this.javascriptListeners =  new java.util.Vector ();
+this.launcher =  new javax.swing.JButton (jalview.util.MessageManager.getString ("label.start_jalview"));
+this.jshashes =  new java.util.Hashtable ();
+this.jsmessages =  new java.util.Hashtable ();
+this.jsExecQueue =  new java.util.Vector ();
+});
+Clazz_defineMethod (c$, "setParams", 
+ function () {
+jalview.bin.JalviewLite.debug = "true".equalsIgnoreCase (this.getParameter ("debug"));
+this.enableSplitFrame = "true".equalsIgnoreCase (this.getParameter ("enableSplitFrame"));
+this.embedded = "true".equalsIgnoreCase (this.getParameter ("embedded"));
+this.showButton = !"false".equalsIgnoreCase (this.getParameter ("showbutton"));
+this.jalviewServletURL = this.getParameter ("APPLICATION_URL");
+this.startupFile = this.getParameter ("file");
+this.helpUrl = this.getParameter ("jalviewhelpurl");
+this.externalstructureviewer = this.getParameter ("externalstructureviewer");
+this.checkForJmol = !"true".equals (this.getParameter ("nojmol"));
+this.sep = this.getParameter ("separator");
+this.rgb = this.getParameter ("RGB");
+this.labelColour = this.getParameter ("label");
+this.initjscallback = this.getParameter ("oninit");
+this.pdbFile = this.getParameter ("PDBFILE");
+this.sequence = this.getParameter ("PDBSEQ");
+this.jnetFile = this.getParameter ("jnetfile");
+this.annotations = this.getParameter ("annotations");
+this.hideFeatureGroups = this.getParameter ("hidefeaturegroups");
+this.showFeatureGroups = this.getParameter ("showfeaturegroups");
+this.features = this.getParameter ("features");
+this.showFeatureSettings = this.getParameter ("showFeatureSettings");
+this.scoreFile = this.getParameter ("scoreFile");
+this.treeFile = this.getParameter ("tree");
+if (this.treeFile == null) this.treeFile = this.getParameter ("treeFile");
+this.windowWidth = this.getParameter ("windowWidth");
+this.windowHeight = this.getParameter ("windowHeight");
+this.defaultColour = this.getParameter ("defaultColour");
+this.sortBy = this.getParameter ("sortBy");
+this.wrap = this.getParameter ("wrap");
+this.centrecolumnlabels = this.getParameter ("centrecolumnlabels");
+this.userDefinedColour = this.getParameter ("userDefinedColour");
+this.widthScale = this.getParameter ("widthScale");
+this.heightScale = this.getParameter ("heightScale");
+this.upperCase = this.getParameter ("upperCase");
+this.file2 = this.getParameter ("file2");
+});
+Clazz_defineMethod (c$, "getDefaultParameter", 
+function (name, def) {
+var stn;
+if ((stn = this.getParameter (name)) == null) {
+return def;
+}if (stn.toLowerCase ().equals ("true")) {
+return true;
+}return false;
+}, "~S,~B");
+Clazz_defineMethod (c$, "getLinkParams", 
+function (links) {
+var label;
+var url;
+for (var i = 1; i < 10; i++) {
+label = this.getParameter ("linkLabel_" + i);
+url = this.getParameter ("linkURL_" + i);
+if (label != null && url != null) {
+links.addElement (label + "|" + url);
+}}
+}, "java.util.Vector");
+Clazz_defineMethod (c$, "getStructureSelectionManager", 
+function () {
+return jalview.structure.StructureSelectionManager.getStructureSelectionManager (this);
+});
+Clazz_defineMethod (c$, "getSelectedSequences", 
+function () {
+return this.getSelectedSequencesFrom (this.getDefaultTargetFrame ());
+});
+Clazz_defineMethod (c$, "getSelectedSequences", 
+function (sep) {
+return this.getSelectedSequencesFrom (this.getDefaultTargetFrame (), sep);
+}, "~S");
+Clazz_defineMethod (c$, "getSelectedSequencesFrom", 
+function (alf) {
+return this.getSelectedSequencesFrom (alf, this.separator);
+}, "jalview.appletgui.AlignFrame");
+Clazz_defineMethod (c$, "getSelectedSequencesFrom", 
+function (alf, sep) {
+var result =  new StringBuffer ("");
+if (sep == null || sep.length == 0) {
+sep = this.separator;
+}if (alf.viewport.getSelectionGroup () != null) {
+var seqs = alf.viewport.getSelectionGroup ().getSequencesInOrder (alf.viewport.getAlignment ());
+for (var i = 0; i < seqs.length; i++) {
+result.append (seqs[i].getName ());
+result.append (sep);
+}
+}return result.toString ();
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz_overrideMethod (c$, "highlight", 
+function (sequenceId, position, alignedPosition) {
+this.highlightIn (this.getDefaultTargetFrame (), sequenceId, position, alignedPosition);
+}, "~S,~S,~S");
+Clazz_overrideMethod (c$, "highlightIn", 
+function (alf, sequenceId, position, alignedPosition) {
+var matcher =  new jalview.analysis.SequenceIdMatcher (alf.viewport.getAlignment ().getSequencesArray ());
+var sq = matcher.findIdMatch (sequenceId);
+if (sq != null) {
+var apos = -1;
+try {
+apos =  new Integer (position).intValue ();
+apos--;
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+return;
+} else {
+throw ex;
+}
+}
+var me = this;
+var pos = apos;
+if (alignedPosition != null && (alignedPosition.trim ().length == 0 || alignedPosition.toLowerCase ().indexOf ("false") > -1)) {
+java.awt.EventQueue.invokeLater (((Clazz_isClassDefined ("jalview.bin.JalviewLite$1") ? 0 : jalview.bin.JalviewLite.$JalviewLite$1$ ()), Clazz_innerTypeInstance (jalview.bin.JalviewLite$1, this, Clazz_cloneFinals ("me", me, "sq", sq, "pos", pos))));
+} else {
+java.awt.EventQueue.invokeLater (((Clazz_isClassDefined ("jalview.bin.JalviewLite$2") ? 0 : jalview.bin.JalviewLite.$JalviewLite$2$ ()), Clazz_innerTypeInstance (jalview.bin.JalviewLite$2, this, Clazz_cloneFinals ("me", me, "sq", sq, "pos", pos))));
+}}}, "jalview.appletgui.AlignFrame,~S,~S,~S");
+Clazz_defineMethod (c$, "select", 
+function (sequenceIds, columns) {
+this.selectIn (this.getDefaultTargetFrame (), sequenceIds, columns, this.separator);
+}, "~S,~S");
+Clazz_defineMethod (c$, "select", 
+function (sequenceIds, columns, sep) {
+this.selectIn (this.getDefaultTargetFrame (), sequenceIds, columns, sep);
+}, "~S,~S,~S");
+Clazz_defineMethod (c$, "selectIn", 
+function (alf, sequenceIds, columns) {
+this.selectIn (alf, sequenceIds, columns, this.separator);
+}, "jalview.appletgui.AlignFrame,~S,~S");
+Clazz_defineMethod (c$, "selectIn", 
+function (alf, sequenceIds, columns, sep) {
+if (sep == null || sep.length == 0) {
+sep = this.separator;
+} else {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Selecting region using separator string '" + this.separator + "'");
+}}var ids = this.separatorListToArray (sequenceIds, sep);
+var cols = this.separatorListToArray (columns, sep);
+var sel =  new jalview.datamodel.SequenceGroup ();
+var csel =  new jalview.datamodel.ColumnSelection ();
+var al = alf.viewport.getAlignment ();
+var matcher =  new jalview.analysis.SequenceIdMatcher (alf.viewport.getAlignment ().getSequencesArray ());
+var start = 0;
+var end = al.getWidth ();
+var alw = al.getWidth ();
+var seqsfound = true;
+if (ids != null && ids.length > 0) {
+seqsfound = false;
+for (var i = 0; i < ids.length; i++) {
+if (ids[i].trim ().length == 0) {
+continue;
+}var sq = matcher.findIdMatch (ids[i]);
+if (sq != null) {
+seqsfound = true;
+sel.addSequence (sq, false);
+}}
+}var inseqpos = false;
+if (cols != null && cols.length > 0) {
+var seset = false;
+for (var i = 0; i < cols.length; i++) {
+var cl = cols[i].trim ();
+if (cl.length == 0) {
+continue;
+}var p;
+if ((p = cl.indexOf ("-")) > -1) {
+var from = -1;
+var to = -1;
+try {
+from =  new Integer (cl.substring (0, p)).intValue ();
+from--;
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+System.err.println ("ERROR: Couldn't parse first integer in range element column selection string '" + cl + "' - format is 'from-to'");
+return;
+} else {
+throw ex;
+}
+}
+try {
+to =  new Integer (cl.substring (p + 1)).intValue ();
+to--;
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+System.err.println ("ERROR: Couldn't parse second integer in range element column selection string '" + cl + "' - format is 'from-to'");
+return;
+} else {
+throw ex;
+}
+}
+if (from >= 0 && to >= 0) {
+if (from < to) {
+var t = to;
+to = from;
+to = t;
+}if (!seset) {
+start = from;
+end = to;
+seset = true;
+} else {
+if (start > from) {
+start = from;
+}if (end < to) {
+end = to;
+}}for (var r = from; r <= to; r++) {
+if (r >= 0 && r < alw) {
+csel.addElement (r);
+}}
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Range '" + cl + "' deparsed as [" + from + "," + to + "]");
+}} else {
+System.err.println ("ERROR: Invalid Range '" + cl + "' deparsed as [" + from + "," + to + "]");
+}} else {
+var r = -1;
+try {
+r =  new Integer (cl).intValue ();
+r--;
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+if (cl.toLowerCase ().equals ("sequence")) {
+inseqpos = true;
+} else {
+System.err.println ("ERROR: Couldn't parse integer from point selection element of column selection string '" + cl + "'");
+return;
+}} else {
+throw ex;
+}
+}
+if (r >= 0 && r <= alw) {
+if (!seset) {
+start = r;
+end = r;
+seset = true;
+} else {
+if (start > r) {
+start = r;
+}if (end < r) {
+end = r;
+}}csel.addElement (r);
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Point selection '" + cl + "' deparsed as [" + r + "]");
+}} else {
+System.err.println ("ERROR: Invalid Point selection '" + cl + "' deparsed as [" + r + "]");
+}}}
+}if (seqsfound) {
+if (inseqpos && sel.getSize () > 0) {
+var rs = sel.getSequenceAt (0);
+start = rs.findIndex (start);
+end = rs.findIndex (end);
+if (csel != null) {
+var cs = csel.getSelected ();
+csel.clear ();
+for (var selectedCol, $selectedCol = cs.iterator (); $selectedCol.hasNext () && ((selectedCol = $selectedCol.next ()) || true);) {
+csel.addElement (rs.findIndex ((selectedCol).intValue ()));
+}
+}}sel.setStartRes (start);
+sel.setEndRes (end);
+java.awt.EventQueue.invokeLater (((Clazz_isClassDefined ("jalview.bin.JalviewLite$3") ? 0 : jalview.bin.JalviewLite.$JalviewLite$3$ ()), Clazz_innerTypeInstance (jalview.bin.JalviewLite$3, this, Clazz_cloneFinals ("alf", alf, "sel", sel, "csel", csel))));
+}}, "jalview.appletgui.AlignFrame,~S,~S,~S");
+Clazz_overrideMethod (c$, "getSelectedSequencesAsAlignment", 
+function (format, suffix) {
+return this.getSelectedSequencesAsAlignmentFrom (this.getDefaultTargetFrame (), format, suffix);
+}, "~S,~S");
+Clazz_overrideMethod (c$, "getSelectedSequencesAsAlignmentFrom", 
+function (alf, format, suffix) {
+try {
+var seqlimits = suffix.equalsIgnoreCase ("true");
+if (alf.viewport.getSelectionGroup () != null) {
+var reply =  new jalview.io.AppletFormatAdapter ().formatSequences (format,  new jalview.datamodel.Alignment (alf.viewport.getSelectionAsNewSequence ()), seqlimits);
+return reply;
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+return "Error retrieving alignment in " + format + " format. ";
+} else {
+throw ex;
+}
+}
+return "";
+}, "jalview.appletgui.AlignFrame,~S,~S");
+Clazz_overrideMethod (c$, "getAlignmentOrder", 
+function () {
+return this.getAlignmentOrderFrom (this.getDefaultTargetFrame ());
+});
+Clazz_defineMethod (c$, "getAlignmentOrderFrom", 
+function (alf) {
+return this.getAlignmentOrderFrom (alf, this.separator);
+}, "jalview.appletgui.AlignFrame");
+Clazz_defineMethod (c$, "getAlignmentOrderFrom", 
+function (alf, sep) {
+var alorder = alf.getAlignViewport ().getAlignment ();
+var order =  new Array (alorder.getHeight ());
+for (var i = 0; i < order.length; i++) {
+order[i] = alorder.getSequenceAt (i).getName ();
+}
+return this.arrayToSeparatorList (order);
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz_defineMethod (c$, "orderBy", 
+function (order, undoName) {
+return this.orderBy (order, undoName, this.separator);
+}, "~S,~S");
+Clazz_defineMethod (c$, "orderBy", 
+function (order, undoName, sep) {
+return this.orderAlignmentBy (this.getDefaultTargetFrame (), order, undoName, sep);
+}, "~S,~S,~S");
+Clazz_overrideMethod (c$, "orderAlignmentBy", 
+function (alf, order, undoName, sep) {
+var ids = this.separatorListToArray (order, sep);
+var sqs = null;
+if (ids != null && ids.length > 0) {
+var matcher =  new jalview.analysis.SequenceIdMatcher (alf.viewport.getAlignment ().getSequencesArray ());
+var s = 0;
+sqs =  new Array (ids.length);
+for (var i = 0; i < ids.length; i++) {
+if (ids[i].trim ().length == 0) {
+continue;
+}var sq = matcher.findIdMatch (ids[i]);
+if (sq != null) {
+sqs[s++] = sq;
+}}
+if (s > 0) {
+var sqq =  new Array (s);
+System.arraycopy (sqs, 0, sqq, 0, s);
+sqs = sqq;
+} else {
+sqs = null;
+}}if (sqs == null) {
+return "";
+};var aorder =  new jalview.datamodel.AlignmentOrder (sqs);
+if (undoName != null && undoName.trim ().length == 0) {
+undoName = null;
+}var _undoName = undoName;
+return alf.sortBy (aorder, _undoName) ? "true" : "";
+}, "jalview.appletgui.AlignFrame,~S,~S,~S");
+Clazz_defineMethod (c$, "getAlignment", 
+function (format) {
+return this.getAlignmentFrom (this.getDefaultTargetFrame (), format, "true");
+}, "~S");
+Clazz_defineMethod (c$, "getAlignmentFrom", 
+function (alf, format) {
+return this.getAlignmentFrom (alf, format, "true");
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz_defineMethod (c$, "getAlignment", 
+function (format, suffix) {
+return this.getAlignmentFrom (this.getDefaultTargetFrame (), format, suffix);
+}, "~S,~S");
+Clazz_defineMethod (c$, "getAlignmentFrom", 
+function (alf, format, suffix) {
+try {
+var seqlimits = suffix.equalsIgnoreCase ("true");
+var reply =  new jalview.io.AppletFormatAdapter ().formatSequences (format, alf.viewport.getAlignment (), seqlimits);
+return reply;
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+return "Error retrieving alignment in " + format + " format. ";
+} else {
+throw ex;
+}
+}
+}, "jalview.appletgui.AlignFrame,~S,~S");
+Clazz_overrideMethod (c$, "loadAnnotation", 
+function (annotation) {
+this.loadAnnotationFrom (this.getDefaultTargetFrame (), annotation);
+}, "~S");
+Clazz_overrideMethod (c$, "loadAnnotationFrom", 
+function (alf, annotation) {
+if ( new jalview.io.AnnotationFile ().annotateAlignmentView (alf.getAlignViewport (), annotation, jalview.io.AppletFormatAdapter.PASTE)) {
+alf.alignPanel.fontChanged ();
+alf.alignPanel.setScrollValues (0, 0);
+} else {
+alf.parseFeaturesFile (annotation, jalview.io.AppletFormatAdapter.PASTE);
+}}, "jalview.appletgui.AlignFrame,~S");
+Clazz_overrideMethod (c$, "loadFeatures", 
+function (features, autoenabledisplay) {
+this.loadFeaturesFrom (this.getDefaultTargetFrame (), features, autoenabledisplay);
+}, "~S,~B");
+Clazz_overrideMethod (c$, "loadFeaturesFrom", 
+function (alf, features, autoenabledisplay) {
+return alf.parseFeaturesFile (features, jalview.io.AppletFormatAdapter.PASTE, autoenabledisplay);
+}, "jalview.appletgui.AlignFrame,~S,~B");
+Clazz_overrideMethod (c$, "getFeatures", 
+function (format) {
+return this.getFeaturesFrom (this.getDefaultTargetFrame (), format);
+}, "~S");
+Clazz_overrideMethod (c$, "getFeaturesFrom", 
+function (alf, format) {
+return alf.outputFeatures (false, format);
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz_overrideMethod (c$, "getAnnotation", 
+function () {
+return this.getAnnotationFrom (this.getDefaultTargetFrame ());
+});
+Clazz_overrideMethod (c$, "getAnnotationFrom", 
+function (alf) {
+return alf.outputAnnotations (false);
+}, "jalview.appletgui.AlignFrame");
+Clazz_defineMethod (c$, "newView", 
+function () {
+return this.newViewFrom (this.getDefaultTargetFrame ());
+});
+Clazz_defineMethod (c$, "newView", 
+function (name) {
+return this.newViewFrom (this.getDefaultTargetFrame (), name);
+}, "~S");
+Clazz_defineMethod (c$, "newViewFrom", 
+function (alf) {
+return alf.newView (null);
+}, "jalview.appletgui.AlignFrame");
+Clazz_defineMethod (c$, "newViewFrom", 
+function (alf, name) {
+return alf.newView (name);
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz_overrideMethod (c$, "loadAlignment", 
+function (text, title) {
+var al = null;
+var format =  new jalview.io.IdentifyFile ().Identify (text, jalview.io.AppletFormatAdapter.PASTE);
+try {
+al =  new jalview.io.AppletFormatAdapter ().readFile (text, jalview.io.AppletFormatAdapter.PASTE, format);
+if (al.getHeight () > 0) {
+return  new jalview.appletgui.AlignFrame (al, this, title, false);
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, java.io.IOException)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+return null;
+}, "~S,~S");
+Clazz_defineMethod (c$, "setMouseoverListener", 
+function (listener) {
+this.setMouseoverListener (this.currentAlignFrame, listener);
+}, "~S");
+Clazz_defineMethod (c$, "setMouseoverListener", 
+function (af, listener) {
+if (listener != null) {
+listener = listener.trim ();
+if (listener.length == 0) {
+System.err.println ("jalview Javascript error: Ignoring empty function for mouseover listener.");
+return;
+}}var mol =  new jalview.javascript.MouseOverListener (this, af, listener);
+this.javascriptListeners.addElement (mol);
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).addStructureViewerListener (mol);
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Added a mouseover listener for " + ((af == null) ? "All frames" : "Just views for " + af.getAlignViewport ().getSequenceSetId ()));
+System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");
+}}, "jalview.appletgui.AlignFrame,~S");
+Clazz_defineMethod (c$, "setSelectionListener", 
+function (listener) {
+this.setSelectionListener (null, listener);
+}, "~S");
+Clazz_defineMethod (c$, "setSelectionListener", 
+function (af, listener) {
+if (listener != null) {
+listener = listener.trim ();
+if (listener.length == 0) {
+System.err.println ("jalview Javascript error: Ignoring empty function for selection listener.");
+return;
+}}var mol =  new jalview.javascript.JsSelectionSender (this, af, listener);
+this.javascriptListeners.addElement (mol);
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).addSelectionListener (mol);
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Added a selection listener for " + ((af == null) ? "All frames" : "Just views for " + af.getAlignViewport ().getSequenceSetId ()));
+System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");
+}}, "jalview.appletgui.AlignFrame,~S");
+Clazz_overrideMethod (c$, "setStructureListener", 
+function (listener, modelSet) {
+if (listener != null) {
+listener = listener.trim ();
+if (listener.length == 0) {
+System.err.println ("jalview Javascript error: Ignoring empty function for selection listener.");
+return;
+}}var mol =  new jalview.javascript.MouseOverStructureListener (this, listener, this.separatorListToArray (modelSet));
+this.javascriptListeners.addElement (mol);
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).addStructureViewerListener (mol);
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Added a javascript structure viewer listener '" + listener + "'");
+System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");
+}}, "~S,~S");
+Clazz_overrideMethod (c$, "removeJavascriptListener", 
+function (af, listener) {
+if (listener != null) {
+listener = listener.trim ();
+if (listener.length == 0) {
+listener = null;
+}}var rprt = false;
+for (var ms = 0, msSize = this.javascriptListeners.size (); ms < msSize; ) {
+var lstn = this.javascriptListeners.elementAt (ms);
+var lstner = lstn;
+if ((af == null || lstner.getAlignFrame () === af) && (listener == null || lstner.getListenerFunction ().equals (listener))) {
+this.javascriptListeners.removeElement (lstner);
+msSize--;
+if (Clazz_instanceOf (lstner, jalview.structure.SelectionListener)) {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeSelectionListener (lstner);
+} else {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeStructureViewerListener (lstner, null);
+}rprt = jalview.bin.JalviewLite.debug;
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Removed listener '" + listener + "'");
+}} else {
+ms++;
+}}
+if (rprt) {
+System.err.println ("There are now " + this.javascriptListeners.size () + " listeners in total.");
+}}, "jalview.appletgui.AlignFrame,~S");
+Clazz_overrideMethod (c$, "stop", 
+function () {
+System.err.println ("Applet " + this.getName () + " stop().");
+this.tidyUp ();
+});
+Clazz_overrideMethod (c$, "destroy", 
+function () {
+System.err.println ("Applet " + this.getName () + " destroy().");
+this.tidyUp ();
+});
+Clazz_defineMethod (c$, "tidyUp", 
+ function () {
+this.removeAll ();
+if (this.currentAlignFrame != null && this.currentAlignFrame.viewport != null && this.currentAlignFrame.viewport.applet != null) {
+var av = this.currentAlignFrame.viewport;
+this.currentAlignFrame.closeMenuItem_actionPerformed ();
+av.applet = null;
+this.currentAlignFrame = null;
+}if (this.javascriptListeners != null) {
+while (this.javascriptListeners.size () > 0) {
+var mol = this.javascriptListeners.elementAt (0);
+this.javascriptListeners.removeElement (mol);
+if (Clazz_instanceOf (mol, jalview.structure.SelectionListener)) {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeSelectionListener (mol);
+} else {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this).removeStructureViewerListener (mol, null);
+}mol.jvlite = null;
+}
+}if (this.jsFunctionExec != null) {
+this.jsFunctionExec.stopQueue ();
+this.jsFunctionExec.jvlite = null;
+}this.initialAlignFrame = null;
+this.jsFunctionExec = null;
+this.javascriptListeners = null;
+jalview.structure.StructureSelectionManager.release (this);
+});
+Clazz_overrideMethod (c$, "mouseOverStructure", 
+function (pdbResNum, chain, pdbfile) {
+var me = this;
+java.awt.EventQueue.invokeLater (((Clazz_isClassDefined ("jalview.bin.JalviewLite$4") ? 0 : jalview.bin.JalviewLite.$JalviewLite$4$ ()), Clazz_innerTypeInstance (jalview.bin.JalviewLite$4, this, Clazz_cloneFinals ("me", me, "pdbResNum", pdbResNum, "chain", chain, "pdbfile", pdbfile))));
+}, "~S,~S,~S");
+Clazz_overrideMethod (c$, "scrollViewToIn", 
+function (alf, topRow, leftHandColumn) {
+java.awt.EventQueue.invokeLater (((Clazz_isClassDefined ("jalview.bin.JalviewLite$5") ? 0 : jalview.bin.JalviewLite.$JalviewLite$5$ ()), Clazz_innerTypeInstance (jalview.bin.JalviewLite$5, this, Clazz_cloneFinals ("alf", alf, "topRow", topRow, "leftHandColumn", leftHandColumn))));
+}, "jalview.appletgui.AlignFrame,~S,~S");
+Clazz_overrideMethod (c$, "scrollViewToRowIn", 
+function (alf, topRow) {
+java.awt.EventQueue.invokeLater (((Clazz_isClassDefined ("jalview.bin.JalviewLite$6") ? 0 : jalview.bin.JalviewLite.$JalviewLite$6$ ()), Clazz_innerTypeInstance (jalview.bin.JalviewLite$6, this, Clazz_cloneFinals ("alf", alf, "topRow", topRow))));
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz_overrideMethod (c$, "scrollViewToColumnIn", 
+function (alf, leftHandColumn) {
+java.awt.EventQueue.invokeLater (((Clazz_isClassDefined ("jalview.bin.JalviewLite$7") ? 0 : jalview.bin.JalviewLite.$JalviewLite$7$ ()), Clazz_innerTypeInstance (jalview.bin.JalviewLite$7, this, Clazz_cloneFinals ("alf", alf, "leftHandColumn", leftHandColumn))));
+}, "jalview.appletgui.AlignFrame,~S");
+c$.initBuildDetails = Clazz_defineMethod (c$, "initBuildDetails", 
+ function () {
+if (jalview.bin.JalviewLite.builddate == null) {
+jalview.bin.JalviewLite.builddate = "unknown";
+jalview.bin.JalviewLite.version = "test";
+jalview.bin.JalviewLite.installation = "Webstart";
+var url = jalview.bin.JalviewLite.getResource ("/.build_properties");
+if (url != null) {
+try {
+var reader =  new java.io.BufferedReader ( new java.io.InputStreamReader (url.openStream ()));
+var line;
+while ((line = reader.readLine ()) != null) {
+if (line.indexOf ("VERSION") > -1) {
+jalview.bin.JalviewLite.version = line.substring (line.indexOf ("=") + 1);
+}if (line.indexOf ("BUILD_DATE") > -1) {
+jalview.bin.JalviewLite.builddate = line.substring (line.indexOf ("=") + 1);
+}if (line.indexOf ("INSTALLATION") > -1) {
+jalview.bin.JalviewLite.installation = line.substring (line.indexOf ("=") + 1);
+}}
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}}});
+c$.getBuildDate = Clazz_defineMethod (c$, "getBuildDate", 
+function () {
+jalview.bin.JalviewLite.initBuildDetails ();
+return jalview.bin.JalviewLite.builddate;
+});
+c$.getInstallation = Clazz_defineMethod (c$, "getInstallation", 
+function () {
+jalview.bin.JalviewLite.initBuildDetails ();
+return jalview.bin.JalviewLite.installation;
+});
+c$.getVersion = Clazz_defineMethod (c$, "getVersion", 
+function () {
+jalview.bin.JalviewLite.initBuildDetails ();
+return jalview.bin.JalviewLite.version;
+});
+Clazz_overrideMethod (c$, "init", 
+function () {
+this.setParams ();
+try {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Applet context is '" + this.getAppletContext ().getClass ().toString () + "'");
+}var scriptObject = netscape.javascript.JSObject.getWindow (this);
+if (jalview.bin.JalviewLite.debug && scriptObject != null) {
+System.err.println ("Applet has Javascript callback support.");
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+System.err.println ("Warning: No JalviewLite javascript callbacks available.");
+if (jalview.bin.JalviewLite.debug) {
+ex.printStackTrace ();
+}} else {
+throw ex;
+}
+}
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("JalviewLite Version " + jalview.bin.JalviewLite.getVersion ());
+System.err.println ("Build Date : " + jalview.bin.JalviewLite.getBuildDate ());
+System.err.println ("Installation : " + jalview.bin.JalviewLite.getInstallation ());
+}if (this.externalstructureviewer != null) {
+this.useXtrnalSviewer = this.externalstructureviewer.trim ().toLowerCase ().equals ("true");
+}if (this.sep != null) {
+if (this.sep.length > 0) {
+this.separator = this.sep;
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Separator set to '" + this.separator + "'");
+}} else {
+throw  new Error (jalview.util.MessageManager.getString ("error.invalid_separator_parameter"));
+}}var r = 255;
+var g = 255;
+var b = 255;
+if (this.rgb != null) {
+try {
+r = Integer.parseInt (this.rgb.substring (0, 2), 16);
+g = Integer.parseInt (this.rgb.substring (2, 4), 16);
+b = Integer.parseInt (this.rgb.substring (4, 6), 16);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+r = 255;
+g = 255;
+b = 255;
+} else {
+throw ex;
+}
+}
+}this.rgb = this.labelColour;
+if (this.rgb != null) {
+this.launcher.setLabel (this.rgb);
+}this.setBackground ( new java.awt.Color (r, g, b));
+if (this.startupFile == null) {
+var data =  new StringBuffer ("PASTE");
+var i = 1;
+while ((this.startupFile = this.getParameter ("sequence" + i)) != null) {
+data.append (this.startupFile.toString () + "\n");
+i++;
+}
+if (data.length () > 5) {
+this.startupFile = data.toString ();
+}}if (!this.enableSplitFrame) {
+this.file2 = null;
+}if (this.embedded) {
+var loader = Clazz_innerTypeInstance (jalview.bin.JalviewLite.LoadingThread, this, null, this.startupFile, this.file2, this);
+{
+loader.run();
+}} else if (this.startupFile != null) {
+if (!this.showButton) {
+var loader = Clazz_innerTypeInstance (jalview.bin.JalviewLite.LoadingThread, this, null, this.startupFile, this.file2, this);
+loader.start ();
+} else {
+this.add (this.launcher);
+this.launcher.addActionListener (((Clazz_isClassDefined ("jalview.bin.JalviewLite$8") ? 0 : jalview.bin.JalviewLite.$JalviewLite$8$ ()), Clazz_innerTypeInstance (jalview.bin.JalviewLite$8, this, null)));
+}} else {
+this.startupFile = "NO FILE";
+this.fileFound = false;
+this.callInitCallback ();
+}});
+Clazz_defineMethod (c$, "initLiveConnect", 
+ function () {
+var notFailed = false;
+var tries = 0;
+while (!notFailed && tries < 10) {
+if (tries > 0) {
+System.err.println ("LiveConnect request thread going to sleep.");
+}try {
+Thread.sleep (700 * (1 + tries));
+} catch (q) {
+if (Clazz_exceptionOf (q, InterruptedException)) {
+} else {
+throw q;
+}
+}
+;if (tries++ > 0) {
+System.err.println ("LiveConnect request thread woken up.");
+}try {
+var scriptObject = netscape.javascript.JSObject.getWindow (this);
+if (scriptObject.eval ("navigator") != null) {
+notFailed = true;
+}} catch (jsex) {
+if (Clazz_exceptionOf (jsex, Exception)) {
+System.err.println ("Attempt " + tries + " to access LiveConnect javascript failed.");
+} else {
+throw jsex;
+}
+}
+}
+});
+Clazz_defineMethod (c$, "callInitCallback", 
+ function () {
+if (this.initjscallback == null) {
+return;
+}this.initjscallback = this.initjscallback.trim ();
+if (this.initjscallback.length > 0) {
+var scriptObject = null;
+try {
+scriptObject = netscape.javascript.JSObject.getWindow (this);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+;this.initLiveConnect ();
+if (scriptObject != null) {
+try {
+ new jalview.javascript.JSFunctionExec (this).executeJavascriptFunction (true, this.initjscallback, null, "Calling oninit callback '" + this.initjscallback + "'.");
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+System.err.println ("Exception when executing _oninit callback '" + this.initjscallback + "'.");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+} else {
+System.err.println ("Not executing _oninit callback '" + this.initjscallback + "' - no scripting allowed.");
+}}});
+c$.addFrame = Clazz_defineMethod (c$, "addFrame", 
+function (frame, title, width, height) {
+frame.setLocation (jalview.bin.JalviewLite.lastFrameX, jalview.bin.JalviewLite.lastFrameY);
+jalview.bin.JalviewLite.lastFrameX += 40;
+jalview.bin.JalviewLite.lastFrameY += 40;
+frame.setSize (width, height);
+frame.setTitle (title);
+frame.addWindowListener (((Clazz_isClassDefined ("jalview.bin.JalviewLite$9") ? 0 : jalview.bin.JalviewLite.$JalviewLite$9$ ()), Clazz_innerTypeInstance (jalview.bin.JalviewLite$9, this, Clazz_cloneFinals ("frame", frame))));
+frame.setVisible (true);
+}, "javax.swing.JFrame,~S,~N,~N");
+Clazz_defineMethod (c$, "paintComponent", 
+function (g) {
+if (!this.fileFound) {
+g.setColor ( new java.awt.Color (200, 200, 200));
+g.setColor (java.awt.Color.cyan);
+g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+g.setColor (java.awt.Color.red);
+awt2swing.Util.drawString (g, jalview.util.MessageManager.getString ("label.jalview_cannot_open_file"), 5, 15);
+awt2swing.Util.drawString (g, "\"" + this.startupFile + "\"", 5, 30);
+} else if (this.embedded && !this.haveShownLoadMessage) {
+g.setColor (java.awt.Color.black);
+g.setFont ( new java.awt.Font ("Arial", 1, 24));
+awt2swing.Util.drawString (g, jalview.util.MessageManager.getString ("label.jalview_applet"), 50, Clazz_doubleToInt (this.getSize ().height / 2) - 30);
+awt2swing.Util.drawString (g, jalview.util.MessageManager.getString ("label.loading_data") + "...", 50, Clazz_doubleToInt (this.getSize ().height / 2));
+this.haveShownLoadMessage = true;
+}}, "java.awt.Graphics");
+Clazz_defineMethod (c$, "getAppletWindow", 
+function (class1) {
+var wnds =  new java.util.Vector ();
+var cmp = this.getComponents ();
+if (cmp != null) {
+for (var i = 0; i < cmp.length; i++) {
+if (class1.isAssignableFrom (cmp[i].getClass ())) {
+wnds.addElement (cmp);
+}}
+}return wnds;
+}, "Class");
+Clazz_defineMethod (c$, "getDefaultTargetFrame", 
+function () {
+if (this.currentAlignFrame != null) {
+return this.currentAlignFrame;
+}if (this.initialAlignFrame != null) {
+return this.initialAlignFrame;
+}System.err.println ("Implementation error: Jalview Applet API cannot work out which AlignFrame to use.");
+return null;
+});
+Clazz_defineMethod (c$, "separatorListToArray", 
+function (list) {
+return this.separatorListToArray (list, this.separator);
+}, "~S");
+Clazz_defineMethod (c$, "separatorListToArray", 
+function (list, separator) {
+var seplen = separator.length;
+if (list == null || list.equals ("") || list.equals (separator)) {
+return null;
+}var jv =  new java.util.Vector ();
+var cp = 0;
+var pos;
+while ((pos = list.indexOf (separator, cp)) > cp) {
+jv.addElement (list.substring (cp, pos));
+cp = pos + seplen;
+}
+if (cp < list.length) {
+var c = list.substring (cp);
+if (!c.equals (separator)) {
+jv.addElement (c);
+}}if (jv.size () > 0) {
+var v =  new Array (jv.size ());
+for (var i = 0; i < v.length; i++) {
+v[i] = jv.elementAt (i);
+}
+jv.removeAllElements ();
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Array from '" + separator + "' separated List:\n" + v.length);
+for (var i = 0; i < v.length; i++) {
+System.err.println ("item " + i + " '" + v[i] + "'");
+}
+}return v;
+}if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Empty Array from '" + separator + "' separated List");
+}return null;
+}, "~S,~S");
+Clazz_defineMethod (c$, "arrayToSeparatorList", 
+function (list) {
+return this.arrayToSeparatorList (list, this.separator);
+}, "~A");
+Clazz_defineMethod (c$, "arrayToSeparatorList", 
+function (list, separator) {
+var v =  new StringBuffer ();
+if (list != null && list.length > 0) {
+for (var i = 0, iSize = list.length; i < iSize; i++) {
+if (list[i] != null) {
+if (i > 0) {
+v.append (separator);
+}v.append (list[i]);
+}}
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Returning '" + separator + "' separated List:\n");
+System.err.println (v);
+}return v.toString ();
+}if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Returning empty '" + separator + "' separated List\n");
+}return "" + separator;
+}, "~A,~S");
+Clazz_overrideMethod (c$, "getFeatureGroups", 
+function () {
+var lst = this.arrayToSeparatorList (this.getDefaultTargetFrame ().getFeatureGroups ());
+return lst;
+});
+Clazz_overrideMethod (c$, "getFeatureGroupsOn", 
+function (alf) {
+var lst = this.arrayToSeparatorList (alf.getFeatureGroups ());
+return lst;
+}, "jalview.appletgui.AlignFrame");
+Clazz_overrideMethod (c$, "getFeatureGroupsOfState", 
+function (visible) {
+return this.arrayToSeparatorList (this.getDefaultTargetFrame ().getFeatureGroupsOfState (visible));
+}, "~B");
+Clazz_overrideMethod (c$, "getFeatureGroupsOfStateOn", 
+function (alf, visible) {
+return this.arrayToSeparatorList (alf.getFeatureGroupsOfState (visible));
+}, "jalview.appletgui.AlignFrame,~B");
+Clazz_overrideMethod (c$, "setFeatureGroupStateOn", 
+function (alf, groups, state) {
+var st = state;
+java.awt.EventQueue.invokeLater (((Clazz_isClassDefined ("jalview.bin.JalviewLite$10") ? 0 : jalview.bin.JalviewLite.$JalviewLite$10$ ()), Clazz_innerTypeInstance (jalview.bin.JalviewLite$10, this, Clazz_cloneFinals ("alf", alf, "groups", groups, "st", st))));
+}, "jalview.appletgui.AlignFrame,~S,~B");
+Clazz_overrideMethod (c$, "setFeatureGroupState", 
+function (groups, state) {
+this.setFeatureGroupStateOn (this.getDefaultTargetFrame (), groups, state);
+}, "~S,~B");
+Clazz_overrideMethod (c$, "getSeparator", 
+function () {
+return this.separator;
+});
+Clazz_overrideMethod (c$, "setSeparator", 
+function (separator) {
+if (separator == null || separator.length < 1) {
+separator = "\u00ac";
+}this.separator = separator;
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Default Separator now: '" + separator + "'");
+}}, "~S");
+Clazz_overrideMethod (c$, "addPdbFile", 
+function (alFrame, sequenceId, pdbEntryString, pdbFile) {
+return alFrame.addPdbFile (sequenceId, pdbEntryString, pdbFile);
+}, "jalview.appletgui.AlignFrame,~S,~S,~S");
+Clazz_defineMethod (c$, "setAlignPdbStructures", 
+function (alignPdbStructures) {
+this.alignPdbStructures = alignPdbStructures;
+}, "~B");
+Clazz_defineMethod (c$, "isAlignPdbStructures", 
+function () {
+return this.alignPdbStructures;
+});
+Clazz_overrideMethod (c$, "start", 
+function () {
+});
+Clazz_defineMethod (c$, "setJsMessageSet", 
+function (messageclass, viewId, colcommands) {
+var msgset = this.jsmessages.get (messageclass);
+if (msgset == null) {
+msgset =  new java.util.Hashtable ();
+this.jsmessages.put (messageclass, msgset);
+}msgset.put (viewId, colcommands);
+var l =  Clazz_newLongArray (colcommands.length, 0);
+for (var i = 0; i < colcommands.length; i++) {
+l[i] = colcommands[i].hashCode ();
+}
+this.jshashes.put (messageclass + "|" + viewId, l);
+}, "~S,~S,~A");
+Clazz_overrideMethod (c$, "getJsMessage", 
+function (messageclass, viewId) {
+var msgset = this.jsmessages.get (messageclass);
+if (msgset != null) {
+var msgs = msgset.get (viewId);
+if (msgs != null) {
+for (var i = 0; i < msgs.length; i++) {
+if (msgs[i] != null) {
+var m = msgs[i];
+msgs[i] = null;
+return m;
+}}
+}}return "";
+}, "~S,~S");
+Clazz_defineMethod (c$, "isJsMessageSetChanged", 
+function (string, string2, colcommands) {
+var l = this.jshashes.get (string + "|" + string2);
+if (l == null && colcommands != null) {
+return true;
+}for (var i = 0; i < colcommands.length; i++) {
+if (l[i] != colcommands[i].hashCode ()) {
+return true;
+}}
+return false;
+}, "~S,~S,~A");
+Clazz_defineMethod (c$, "getJsExecQueue", 
+function () {
+return this.jsExecQueue;
+});
+Clazz_defineMethod (c$, "setExecutor", 
+function (jsFunctionExec2) {
+this.jsFunctionExec = jsFunctionExec2;
+}, "jalview.javascript.JSFunctionExec");
+Clazz_defineMethod (c$, "getDefaultColourParameter", 
+function (colparam, defcolour) {
+var colprop = this.getParameter (colparam);
+if (colprop == null || colprop.trim ().length == 0) {
+return defcolour;
+}var col = jalview.schemes.ColourSchemeProperty.getAWTColorFromName (colprop);
+if (col == null) {
+try {
+col =  new jalview.schemes.UserColourScheme (colprop).findColour ('A');
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+System.err.println ("Couldn't parse '" + colprop + "' as a colour for " + colparam);
+col = null;
+} else {
+throw ex;
+}
+}
+}return (col == null) ? defcolour : col;
+}, "~S,java.awt.Color");
+Clazz_defineMethod (c$, "openJalviewHelpUrl", 
+function () {
+if (this.helpUrl == null || this.helpUrl.trim ().length < 5) {
+this.helpUrl = "http://www.jalview.org/help.html";
+}this.showURL (this.helpUrl, "HELP");
+});
+Clazz_defineMethod (c$, "resolveUrlForLocalOrAbsolute", 
+ function (url, localref) {
+var codebase = localref.toString ();
+var pt = codebase.indexOf ("?");
+if (pt < 0) pt = codebase.length;
+codebase = codebase.substring (0, pt);
+codebase = codebase.substring (0, codebase.lastIndexOf ("/") + 1);
+if (url.indexOf ("/") == 0 && !localref.getProtocol ().equals ("file")) {
+pt = codebase.indexOf ("/", 8);
+return codebase.substring (0, pt) + url;
+}return codebase + url;
+}, "~S,java.net.URL");
+Clazz_defineMethod (c$, "showURL", 
+function (url, target) {
+try {
+if (url.indexOf (":") == -1) {
+var prepend;
+url = this.resolveUrlForLocalOrAbsolute (url, prepend = this.getDefaultParameter ("resolvetocodebase", false) ? this.getDocumentBase () : this.getCodeBase ());
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Show url (prepended " + prepend + " - toggle resolvetocodebase if code/docbase resolution is wrong): " + url);
+}} else {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Show url: " + url);
+}}if (url.indexOf ("javascript:") == 0) {
+this.getAppletContext ().showDocument ( new java.net.URL (url));
+} else {
+this.getAppletContext ().showDocument ( new java.net.URL (url), target);
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}, "~S,~S");
+c$.$JalviewLite$LoadJmolThread$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.running = false;
+Clazz_instantialize (this, arguments);
+}, jalview.bin.JalviewLite, "LoadJmolThread", Thread);
+Clazz_overrideMethod (c$, "run", 
+function () {
+if (this.running || this.b$["jalview.bin.JalviewLite"].checkedForJmol) {
+return;
+}this.running = true;
+if (this.b$["jalview.bin.JalviewLite"].checkForJmol) {
+try {
+if (!System.getProperty ("java.version").startsWith ("1.1")) {
+Clazz._4Name ("org.jmol.adapter.smarter.SmarterJmolAdapter");
+this.b$["jalview.bin.JalviewLite"].jmolAvailable = true;
+}if (!this.b$["jalview.bin.JalviewLite"].jmolAvailable) {
+System.out.println ("Jmol not available - Using MCview for structures");
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, ClassNotFoundException)) {
+} else {
+throw ex;
+}
+}
+} else {
+this.b$["jalview.bin.JalviewLite"].jmolAvailable = false;
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Skipping Jmol check. Will use MCView (probably)");
+}}this.b$["jalview.bin.JalviewLite"].checkedForJmol = true;
+this.running = false;
+});
+Clazz_defineMethod (c$, "notFinished", 
+function () {
+return this.running || !this.b$["jalview.bin.JalviewLite"].checkedForJmol;
+});
+c$ = Clazz_p0p ();
+};
+c$.$JalviewLite$LoadingThread$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.protocol = null;
+this._file = null;
+this._file2 = null;
+this.applet = null;
+Clazz_instantialize (this, arguments);
+}, jalview.bin.JalviewLite, "LoadingThread", Thread);
+Clazz_defineMethod (c$, "dbgMsg", 
+ function (a) {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println (a);
+}}, "~S");
+Clazz_defineMethod (c$, "setProtocolState", 
+function (a) {
+if (a.startsWith ("PASTE")) {
+a = a.substring (5);
+this.protocol = jalview.io.AppletFormatAdapter.PASTE;
+} else if (this.inArchive (a)) {
+this.protocol = jalview.io.AppletFormatAdapter.CLASSLOADER;
+} else {
+a = this.addProtocol (a);
+this.protocol = jalview.io.AppletFormatAdapter.URL;
+}this.dbgMsg ("Protocol identified as '" + this.protocol + "'");
+return a;
+}, "~S");
+Clazz_makeConstructor (c$, 
+function (a, b, c) {
+Clazz_superConstructor (this, jalview.bin.JalviewLite.LoadingThread, []);
+this._file = a;
+this._file2 = b;
+this.applet = c;
+}, "~S,~S,jalview.bin.JalviewLite");
+Clazz_overrideMethod (c$, "run", 
+function () {
+{
+System.out.println("BYPASSING JMOL LOADING FOR NOW. THIS WILL BE DONE ANOTHER WAY")
+}this.startLoading ();
+});
+Clazz_defineMethod (c$, "startLoading", 
+ function () {
+this.dbgMsg ("Loading thread started with:\n>>file\n" + this._file + ">>endfile");
+this.dbgMsg ("Loading started.");
+var a = this.readAlignment (this._file);
+var b = this.readAlignment (this._file2);
+if (a != null) {
+this.addToDisplay (a, b);
+this.loadTree (a);
+this.loadScoreFile (a);
+this.loadFeatures (a);
+this.loadAnnotations (a);
+this.loadJnetFile (a);
+this.loadPdbFiles (a);
+} else {
+this.b$["jalview.bin.JalviewLite"].fileFound = false;
+this.applet.remove (this.b$["jalview.bin.JalviewLite"].launcher);
+this.applet.repaint ();
+}this.b$["jalview.bin.JalviewLite"].callInitCallback ();
+});
+Clazz_defineMethod (c$, "addToDisplay", 
+function (a, b) {
+if (b == null) {
+a.addToDisplay (this.b$["jalview.bin.JalviewLite"].embedded);
+} else {
+var c =  new jalview.appletgui.SplitFrame (a, b);
+c.addToDisplay (this.b$["jalview.bin.JalviewLite"].embedded, this.b$["jalview.bin.JalviewLite"]);
+}}, "jalview.appletgui.AlignFrame,jalview.appletgui.AlignFrame");
+Clazz_defineMethod (c$, "readAlignment", 
+function (a) {
+if (a == null) {
+return null;
+}var b = this.setProtocolState (a);
+var c =  new jalview.io.IdentifyFile ().Identify (b, this.protocol);
+this.dbgMsg ("File identified as '" + c + "'");
+var d = null;
+try {
+d =  new jalview.io.AppletFormatAdapter ().readFile (b, this.protocol, c);
+if ((d != null) && (d.getHeight () > 0)) {
+this.dbgMsg ("Successfully loaded file.");
+d.setDataset (null);
+var e =  new jalview.appletgui.AlignFrame (d, this.applet, b, this.b$["jalview.bin.JalviewLite"].embedded, false);
+e.setTitle (b);
+if (this.b$["jalview.bin.JalviewLite"].initialAlignFrame == null) {
+this.b$["jalview.bin.JalviewLite"].initialAlignFrame = e;
+}this.b$["jalview.bin.JalviewLite"].currentAlignFrame = e;
+if (this.protocol === jalview.io.AppletFormatAdapter.PASTE) {
+e.setTitle (jalview.util.MessageManager.formatMessage ("label.sequences_from",  Clazz_newArray (-1, [this.applet.getDocumentBase ().toString ()])));
+}e.setStatus (jalview.util.MessageManager.formatMessage ("label.successfully_loaded_file",  Clazz_newArray (-1, [b])));
+return e;
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, java.io.IOException)) {
+this.dbgMsg ("File load exception.");
+ex.printStackTrace ();
+if (jalview.bin.JalviewLite.debug) {
+try {
+var e =  new jalview.io.FileParse (b, this.protocol);
+var f = null;
+this.dbgMsg (">>>Dumping contents of '" + b + "' " + "(" + this.protocol + ")");
+while ((f = e.nextLine ()) != null) {
+this.dbgMsg (f);
+}
+this.dbgMsg (">>>Dump finished.");
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+System.err.println ("Exception when trying to dump the content of the file parameter.");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+}} else {
+throw ex;
+}
+}
+return null;
+}, "~S");
+Clazz_defineMethod (c$, "loadPdbFiles", 
+function (a) {
+var b = false;
+this.applet.setAlignPdbStructures (this.b$["jalview.bin.JalviewLite"].getDefaultParameter ("alignpdbfiles", false));
+var c = 0;
+var d =  new java.util.Vector ();
+var e = (this.applet.getDefaultParameter ("relaxedidmatch", false)) ?  new jalview.analysis.SequenceIdMatcher (a.getAlignViewport ().getAlignment ().getSequencesArray ()) : null;
+var f;
+do {
+if (c > 0) {
+f = this.applet.getParameter ("PDBFILE" + c);
+} else {
+f = this.b$["jalview.bin.JalviewLite"].pdbFile;
+}if (f != null) {
+var g =  new jalview.datamodel.PDBEntry ();
+var h;
+var i = null;
+var j = null;
+var k =  new java.util.StringTokenizer (f, " ");
+if (k.countTokens () < 2) {
+if (this.b$["jalview.bin.JalviewLite"].sequence != null) {
+i =  Clazz_newArray (-1, [e == null ? a.getAlignViewport ().getAlignment ().findName (this.b$["jalview.bin.JalviewLite"].sequence) : e.findIdMatch (this.b$["jalview.bin.JalviewLite"].sequence)]);
+}} else {
+f = k.nextToken ();
+var l =  new java.util.Vector ();
+var m =  new java.util.Vector ();
+while (k.hasMoreTokens ()) {
+h = k.nextToken ();
+var n =  new java.util.StringTokenizer (h, "=");
+if (n.countTokens () > 1) {
+m.addElement (n.nextToken ());
+h = n.nextToken ();
+}l.addElement (e == null ? a.getAlignViewport ().getAlignment ().findName (h) : e.findIdMatch (h));
+}
+i =  new Array (l.size ());
+l.copyInto (i);
+if (m.size () == l.size ()) {
+j =  new Array (m.size ());
+m.copyInto (j);
+}}f = this.setProtocolState (f);
+if (this.protocol === jalview.io.AppletFormatAdapter.CLASSLOADER && !this.b$["jalview.bin.JalviewLite"].useXtrnalSviewer) {
+this.protocol = jalview.io.AppletFormatAdapter.URL;
+f = this.addProtocol (f);
+}g.setFile (f);
+if (i != null) {
+for (var l = 0; l < i.length; l++) {
+if (i[l] != null) {
+(i[l]).addPDBId (g);
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.applet).registerPDBEntry (g);
+} else {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Warning: Possible input parsing error: Null sequence for attachment of PDB (sequence " + l + ")");
+}}}
+if (!this.b$["jalview.bin.JalviewLite"].alignPdbStructures) {
+a.newStructureView (this.applet, g, i, j, this.protocol);
+} else {
+d.addElement ( Clazz_newArray (-1, [g, i, j,  String.instantialize (this.protocol)]));
+}}}c++;
+} while (f != null || c < 10);
+if (d.size () > 0) {
+var g =  new Array (d.size ());
+var h =  new Array (d.size ());
+var i =  new Array (d.size ());
+var j =  new Array (d.size ());
+for (var k = 0, l = d.size (); k < l; k++) {
+var m = d.elementAt (k);
+h[k] = m[0];
+g[k] = m[1];
+i[k] = m[2];
+j[k] = m[3];
+}
+a.alignedStructureView (this.applet, h, g, i, j);
+b = true;
+}return b;
+}, "jalview.appletgui.AlignFrame");
+Clazz_defineMethod (c$, "loadJnetFile", 
+function (a) {
+var b = false;
+var c = this.b$["jalview.bin.JalviewLite"].jnetFile;
+if (c != null) {
+try {
+c = this.setProtocolState (c);
+var d = jalview.jsdev.GenericFileAdapter.getFile ("JPredFile", [c, this.protocol]);
+jalview.io.JnetAnnotationMaker.add_annotation (d, a.viewport.getAlignment (), 0, false);
+var e = a.viewport.getAlignment ().getSequenceAt (0);
+a.viewport.getAlignment ().setSeqrep (e);
+var f =  new jalview.datamodel.ColumnSelection ();
+f.hideInsertionsFor (e);
+a.viewport.setColumnSelection (f);
+a.alignPanel.fontChanged ();
+a.alignPanel.setScrollValues (0, 0);
+b = true;
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}return b;
+}, "jalview.appletgui.AlignFrame");
+Clazz_defineMethod (c$, "loadAnnotations", 
+function (a) {
+var b = false;
+var c = this.b$["jalview.bin.JalviewLite"].annotations;
+if (c != null) {
+c = this.setProtocolState (c);
+if ( new jalview.io.AnnotationFile ().annotateAlignmentView (a.viewport, c, this.protocol)) {
+a.alignPanel.fontChanged ();
+a.alignPanel.setScrollValues (0, 0);
+b = true;
+} else {
+System.err.println ("Annotations were not added from annotation file '" + c + "'");
+}}return b;
+}, "jalview.appletgui.AlignFrame");
+Clazz_defineMethod (c$, "loadFeatures", 
+function (a) {
+var b = false;
+var c = this.b$["jalview.bin.JalviewLite"].hideFeatureGroups;
+if (c != null) {
+a.setFeatureGroupState (this.b$["jalview.bin.JalviewLite"].separatorListToArray (c), false);
+}c = this.b$["jalview.bin.JalviewLite"].showFeatureGroups;
+if (c != null) {
+a.setFeatureGroupState (this.b$["jalview.bin.JalviewLite"].separatorListToArray (c), true);
+}c = this.b$["jalview.bin.JalviewLite"].features;
+if (c != null) {
+c = this.setProtocolState (c);
+b = a.parseFeaturesFile (c, this.protocol);
+}c = this.b$["jalview.bin.JalviewLite"].showFeatureSettings;
+if (c != null && c.equalsIgnoreCase ("true")) {
+a.viewport.setShowSequenceFeatures (true);
+ new jalview.appletgui.FeatureSettings (a.alignPanel);
+}return b;
+}, "jalview.appletgui.AlignFrame");
+Clazz_defineMethod (c$, "loadScoreFile", 
+function (a) {
+var b = false;
+if (this.b$["jalview.bin.JalviewLite"].scoreFile != null && !"".equals (this.b$["jalview.bin.JalviewLite"].scoreFile)) {
+try {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Attempting to load T-COFFEE score file from the scoreFile parameter");
+}b = a.loadScoreFile (this.b$["jalview.bin.JalviewLite"].scoreFile);
+if (!b) {
+System.err.println ("Failed to parse T-COFFEE parameter as a valid score file ('" + this.b$["jalview.bin.JalviewLite"].scoreFile + "')");
+}} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+System.err.printf ("Cannot read score file: '%s'. Cause: %s \n", [this.b$["jalview.bin.JalviewLite"].scoreFile, e.getMessage ()]);
+} else {
+throw e;
+}
+}
+}return b;
+}, "jalview.appletgui.AlignFrame");
+Clazz_defineMethod (c$, "loadTree", 
+function (a) {
+var b = false;
+if (this.b$["jalview.bin.JalviewLite"].treeFile == null) {
+this.b$["jalview.bin.JalviewLite"].treeFile = this.applet.getParameter ("treeFile");
+}if (this.b$["jalview.bin.JalviewLite"].treeFile != null) {
+try {
+this.b$["jalview.bin.JalviewLite"].treeFile = this.setProtocolState (this.b$["jalview.bin.JalviewLite"].treeFile);
+var c =  new jalview.io.NewickFile (this.b$["jalview.bin.JalviewLite"].treeFile, this.protocol);
+c.parse ();
+if (c.getTree () != null) {
+a.loadTree (c, this.b$["jalview.bin.JalviewLite"].treeFile);
+b = true;
+this.dbgMsg ("Successfully imported tree.");
+} else {
+this.dbgMsg ("Tree parameter did not resolve to a valid tree.");
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}return b;
+}, "jalview.appletgui.AlignFrame");
+Clazz_defineMethod (c$, "inArchive", 
+function (a) {
+try {
+var b = (this.getClass ().getResourceAsStream ("/" + a) != null);
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Resource '" + a + "' was " + (b ? "" : "not") + " located by classloader.");
+}return b;
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+System.out.println ("Exception checking resources: " + a + " " + ex);
+return false;
+} else {
+throw ex;
+}
+}
+}, "~S");
+Clazz_defineMethod (c$, "addProtocol", 
+function (a) {
+if (a.indexOf ("://") == -1) {
+var b = this.applet.resolveUrlForLocalOrAbsolute (a, this.b$["jalview.bin.JalviewLite"].getDocumentBase ());
+if (this.urlExists (b)) {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Prepended document base for resource: '" + a + "'");
+}return b;
+}b = this.applet.resolveUrlForLocalOrAbsolute (a, this.b$["jalview.bin.JalviewLite"].getCodeBase ());
+if (this.urlExists (b)) {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Prepended codebase for resource: '" + a + "'");
+}return b;
+}}return a;
+}, "~S");
+Clazz_defineMethod (c$, "urlExists", 
+ function (a) {
+var b = null;
+try {
+b =  new java.net.URL (a).openStream ();
+if (b != null) {
+return true;
+}} catch (x) {
+if (Clazz_exceptionOf (x, Exception)) {
+} else {
+throw x;
+}
+} finally {
+if (b != null) {
+try {
+b.close ();
+} catch (e) {
+if (Clazz_exceptionOf (e, java.io.IOException)) {
+} else {
+throw e;
+}
+}
+}}
+return false;
+}, "~S");
+c$ = Clazz_p0p ();
+};
+c$.$JalviewLite$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.bin, "JalviewLite$1", null, Runnable);
+Clazz_overrideMethod (c$, "run", 
+function () {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.f$.me).mouseOverVamsasSequence (this.f$.sq, this.f$.sq.findIndex (this.f$.pos), null);
+});
+c$ = Clazz_p0p ();
+};
+c$.$JalviewLite$2$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.bin, "JalviewLite$2", null, Runnable);
+Clazz_overrideMethod (c$, "run", 
+function () {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.f$.me).mouseOverVamsasSequence (this.f$.sq, this.f$.pos, null);
+});
+c$ = Clazz_p0p ();
+};
+c$.$JalviewLite$3$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.bin, "JalviewLite$3", null, Runnable);
+Clazz_overrideMethod (c$, "run", 
+function () {
+this.f$.alf.select (this.f$.sel, this.f$.csel);
+});
+c$ = Clazz_p0p ();
+};
+c$.$JalviewLite$4$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.bin, "JalviewLite$4", null, Runnable);
+Clazz_overrideMethod (c$, "run", 
+function () {
+try {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.f$.me).mouseOverStructure ( new Integer (this.f$.pdbResNum).intValue (), this.f$.chain, this.f$.pdbfile);
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("mouseOver for '" + this.f$.pdbResNum + "' in chain '" + this.f$.chain + "' in structure '" + this.f$.pdbfile + "'");
+}} catch (e) {
+if (Clazz_exceptionOf (e, NumberFormatException)) {
+System.err.println ("Ignoring invalid residue number string '" + this.f$.pdbResNum + "'");
+} else {
+throw e;
+}
+}
+});
+c$ = Clazz_p0p ();
+};
+c$.$JalviewLite$5$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.bin, "JalviewLite$5", null, Runnable);
+Clazz_overrideMethod (c$, "run", 
+function () {
+try {
+this.f$.alf.scrollTo ( new Integer (this.f$.topRow).intValue (),  new Integer (this.f$.leftHandColumn).intValue ());
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+System.err.println ("Couldn't parse integer arguments (topRow='" + this.f$.topRow + "' and leftHandColumn='" + this.f$.leftHandColumn + "')");
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+});
+c$ = Clazz_p0p ();
+};
+c$.$JalviewLite$6$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.bin, "JalviewLite$6", null, Runnable);
+Clazz_overrideMethod (c$, "run", 
+function () {
+try {
+this.f$.alf.scrollToRow ( new Integer (this.f$.topRow).intValue ());
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+System.err.println ("Couldn't parse integer arguments (topRow='" + this.f$.topRow + "')");
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+});
+c$ = Clazz_p0p ();
+};
+c$.$JalviewLite$7$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.bin, "JalviewLite$7", null, Runnable);
+Clazz_overrideMethod (c$, "run", 
+function () {
+try {
+this.f$.alf.scrollToColumn ( new Integer (this.f$.leftHandColumn).intValue ());
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+System.err.println ("Couldn't parse integer arguments (leftHandColumn='" + this.f$.leftHandColumn + "')");
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+});
+c$ = Clazz_p0p ();
+};
+c$.$JalviewLite$8$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.bin, "JalviewLite$8", null, java.awt.event.ActionListener);
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (e) {
+var loader = Clazz_innerTypeInstance (jalview.bin.JalviewLite.LoadingThread, this, null, this.b$["jalview.bin.JalviewLite"].startupFile, this.b$["jalview.bin.JalviewLite"].file2, this.b$["jalview.bin.JalviewLite"]);
+loader.start ();
+}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+};
+c$.$JalviewLite$9$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.bin, "JalviewLite$9", java.awt.event.WindowAdapter);
+Clazz_overrideMethod (c$, "windowClosing", 
+function (e) {
+if (Clazz_instanceOf (this.f$.frame, jalview.appletgui.AlignFrame)) {
+var vp = (this.f$.frame).viewport;
+(this.f$.frame).closeMenuItem_actionPerformed ();
+if (vp.applet.currentAlignFrame === this.f$.frame) {
+vp.applet.currentAlignFrame = null;
+}vp.applet = null;
+vp = null;
+}jalview.bin.JalviewLite.lastFrameX -= 40;
+jalview.bin.JalviewLite.lastFrameY -= 40;
+if (Clazz_instanceOf (this.f$.frame, jalview.appletgui.EmbmenuFrame)) {
+(this.f$.frame).destroyMenus ();
+}this.f$.frame.setMenuBar (null);
+this.f$.frame.dispose ();
+}, "java.awt.event.WindowEvent");
+Clazz_defineMethod (c$, "windowActivated", 
+function (e) {
+if (Clazz_instanceOf (this.f$.frame, jalview.appletgui.AlignFrame)) {
+(this.f$.frame).viewport.applet.currentAlignFrame = this.f$.frame;
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Activated window " + this.f$.frame);
+}}Clazz_superCall (this, jalview.bin.JalviewLite$9, "windowActivated", [e]);
+}, "java.awt.event.WindowEvent");
+c$ = Clazz_p0p ();
+};
+c$.$JalviewLite$10$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.bin, "JalviewLite$10", null, Runnable);
+Clazz_overrideMethod (c$, "run", 
+function () {
+this.f$.alf.setFeatureGroupState (this.b$["jalview.bin.JalviewLite"].separatorListToArray (this.f$.groups), this.f$.st);
+});
+c$ = Clazz_p0p ();
+};
+Clazz_defineStatics (c$,
+"TRUE", "true",
+"FALSE", "false",
+"debug", false,
+"lastFrameX", 200,
+"lastFrameY", 200,
+"builddate", null,
+"version", null,
+"installation", null);
+});
+Clazz_declarePackage ("javax.swing");
+Clazz_load (["javax.swing.AbstractButton"], "javax.swing.JButton", ["javax.swing.DefaultButtonModel", "$.SwingUtilities", "$.UIManager"], function () {
+c$ = Clazz_declareType (javax.swing, "JButton", javax.swing.AbstractButton);
+Clazz_makeConstructor (c$, 
+function () {
+this.construct (null, null);
+});
+Clazz_makeConstructor (c$, 
+function (icon) {
+this.construct (null, icon);
+}, "javax.swing.Icon");
+Clazz_makeConstructor (c$, 
+function (text) {
+this.construct (text, null);
+}, "~S");
+Clazz_makeConstructor (c$, 
+function (a) {
+this.construct ();
+this.setAction (a);
+}, "javax.swing.Action");
+Clazz_makeConstructor (c$, 
+function (text, icon) {
+Clazz_superConstructor (this, javax.swing.JButton, []);
+this.setModel ( new javax.swing.DefaultButtonModel ());
+this.init (text, icon);
+}, "~S,javax.swing.Icon");
+Clazz_overrideMethod (c$, "updateUI", 
+function () {
+this.setUI (javax.swing.UIManager.getUI (this));
+});
+Clazz_overrideMethod (c$, "getUIClassID", 
+function () {
+return "ButtonUI";
+});
+Clazz_defineMethod (c$, "isDefaultButton", 
+function () {
+var root = javax.swing.SwingUtilities.getRootPane (this);
+if (root != null) {
+return root.getDefaultButton () === this;
+}return false;
+});
+Clazz_defineMethod (c$, "isDefaultCapable", 
+function () {
+return this.defaultCapable;
+});
+Clazz_defineMethod (c$, "setDefaultCapable", 
+function (defaultCapable) {
+var oldDefaultCapable = this.defaultCapable;
+this.defaultCapable = defaultCapable;
+this.firePropertyChangeBool ("defaultCapable", oldDefaultCapable, defaultCapable);
+}, "~B");
+Clazz_defineMethod (c$, "removeNotify", 
+function () {
+var root = javax.swing.SwingUtilities.getRootPane (this);
+if (root != null && root.getDefaultButton () === this) {
+root.setDefaultButton (null);
+}Clazz_superCall (this, javax.swing.JButton, "removeNotify", []);
+});
+Clazz_defineMethod (c$, "paramString", 
+function () {
+var defaultCapableString = (this.defaultCapable ? "true" : "false");
+return Clazz_superCall (this, javax.swing.JButton, "paramString", []) + ",defaultCapable=" + defaultCapableString;
+});
+Clazz_defineStatics (c$,
+"$uiClassID", "ButtonUI");
+});
+Clazz_declarePackage ("jalview.util");
+Clazz_load (["java.text.MessageFormat", "java.util.logging.Logger"], "jalview.util.MessageManager", ["java.util.Locale", "$.ResourceBundle", "java.util.logging.Level"], function () {
+c$ = Clazz_declareType (jalview.util, "MessageManager");
+c$.getString = Clazz_defineMethod (c$, "getString", 
+function (key) {
+var value = "[missing key] " + key;
+try {
+value = jalview.util.MessageManager.rb.getString (key);
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+jalview.util.MessageManager.log.warning ("I18N missing: " + jalview.util.MessageManager.loc + "\t" + key);
+} else {
+throw e;
+}
+}
+return value;
+}, "~S");
+c$.getLocale = Clazz_defineMethod (c$, "getLocale", 
+function () {
+return jalview.util.MessageManager.loc;
+});
+c$.formatMessage = Clazz_defineMethod (c$, "formatMessage", 
+function (key, params) {
+return java.text.MessageFormat.format (jalview.util.MessageManager.getString (key), params);
+}, "~S,~A");
+c$.formatMessage = Clazz_defineMethod (c$, "formatMessage", 
+function (key, params) {
+return java.text.MessageFormat.format (jalview.util.MessageManager.getString (key), params);
+}, "~S,~A");
+c$.getStringOrReturn = Clazz_defineMethod (c$, "getStringOrReturn", 
+function (keyroot, name) {
+var smkey = keyroot + name.toLowerCase ().replaceAll (" ", "");
+try {
+name = jalview.util.MessageManager.rb.getString (smkey);
+} catch (x) {
+if (Clazz_exceptionOf (x, Exception)) {
+jalview.util.MessageManager.log.finest ("I18N missing key with root " + keyroot + ": " + jalview.util.MessageManager.loc + "\t" + smkey);
+} else {
+throw x;
+}
+}
+return name;
+}, "~S,~S");
+Clazz_defineStatics (c$,
+"rb", null);
+c$.log = c$.prototype.log = java.util.logging.Logger.getLogger (jalview.util.MessageManager.getCanonicalName ());
+Clazz_defineStatics (c$,
+"loc", null);
+{
+try {
+jalview.util.MessageManager.loc = java.util.Locale.getDefault ();
+jalview.util.MessageManager.log.info ("Getting messages for lang: " + jalview.util.MessageManager.loc);
+jalview.util.MessageManager.rb = java.util.ResourceBundle.getBundle ("lang.Messages", jalview.util.MessageManager.loc);
+if (jalview.util.MessageManager.rb == null || jalview.util.MessageManager.log.isLoggable (java.util.logging.Level.FINEST)) {
+jalview.util.MessageManager.log.finest ("Language keys: " + jalview.util.MessageManager.rb.keySet ());
+}} catch (e$$) {
+if (Clazz_exceptionOf (e$$, Exception)) {
+var q = e$$;
+{
+jalview.util.MessageManager.log.warning ("Exception when initting Locale for i18n messages\n" + q.getMessage ());
+q.printStackTrace ();
+}
+} else if (Clazz_exceptionOf (e$$, Error)) {
+var v = e$$;
+{
+jalview.util.MessageManager.log.warning ("Error when initting Locale for i18n messages\n" + v.getMessage ());
+v.printStackTrace ();
+}
+} else {
+throw e$$;
+}
+}
+}});
+Clazz_declarePackage ("java.util.logging");
+Clazz_load (["java.util.Hashtable", "java.util.logging.Level", "$.LogRecord"], "java.util.logging.Logger", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.name = null;
+this.levelObject = null;
+this.levelValue = 0;
+Clazz_instantialize (this, arguments);
+}, java.util.logging, "Logger");
+Clazz_makeConstructor (c$, 
+function (name, resourceBundleName) {
+this.construct (name, resourceBundleName, null, false);
+}, "~S,~S");
+Clazz_makeConstructor (c$, 
+function (name, resourceBundleName, caller, isSystemLogger) {
+this.name = name;
+this.levelValue = java.util.logging.Level.INFO.intValue ();
+}, "~S,~S,Class,~B");
+Clazz_makeConstructor (c$, 
+ function (name) {
+this.name = name;
+this.levelValue = java.util.logging.Level.INFO.intValue ();
+}, "~S");
+c$.getLogger = Clazz_defineMethod (c$, "getLogger", 
+function (name) {
+var log = java.util.logging.Logger.loggers.get (name);
+if (log == null) java.util.logging.Logger.loggers.put (name, log =  new java.util.logging.Logger (name));
+return log;
+}, "~S");
+c$.getLogger = Clazz_defineMethod (c$, "getLogger", 
+function (name, resourceBundleName) {
+return java.util.logging.Logger.getLogger (name);
+}, "~S,~S");
+c$.getAnonymousLogger = Clazz_defineMethod (c$, "getAnonymousLogger", 
+function () {
+return java.util.logging.Logger.getAnonymousLogger (null);
+});
+c$.getAnonymousLogger = Clazz_defineMethod (c$, "getAnonymousLogger", 
+function (resourceBundleName) {
+return java.util.logging.Logger.global;
+}, "~S");
+Clazz_defineMethod (c$, "log", 
+function (record) {
+if (record.getLevel ().intValue () < this.levelValue || this.levelValue == java.util.logging.Logger.offValue) {
+return;
+}System.out.println (record.getLoggerName () + ": " + record.getMessage ());
+}, "java.util.logging.LogRecord");
+Clazz_defineMethod (c$, "doLog", 
+ function (lr) {
+lr.setLoggerName (this.name);
+this.log (lr);
+}, "java.util.logging.LogRecord");
+Clazz_defineMethod (c$, "log", 
+function (level, msg) {
+if (level.intValue () < this.levelValue || this.levelValue == java.util.logging.Logger.offValue) {
+return;
+}var lr =  new java.util.logging.LogRecord (level, msg);
+this.doLog (lr);
+}, "java.util.logging.Level,~S");
+Clazz_defineMethod (c$, "log", 
+function (level, msg, param1) {
+if (level.intValue () < this.levelValue || this.levelValue == java.util.logging.Logger.offValue) {
+return;
+}var lr =  new java.util.logging.LogRecord (level, msg);
+var params =  Clazz_newArray (-1, [param1]);
+lr.setParameters (params);
+this.doLog (lr);
+}, "java.util.logging.Level,~S,~O");
+Clazz_defineMethod (c$, "log", 
+function (level, msg, params) {
+if (level.intValue () < this.levelValue || this.levelValue == java.util.logging.Logger.offValue) {
+return;
+}var lr =  new java.util.logging.LogRecord (level, msg);
+lr.setParameters (params);
+this.doLog (lr);
+}, "java.util.logging.Level,~S,~A");
+Clazz_defineMethod (c$, "log", 
+function (level, msg, thrown) {
+if (level.intValue () < this.levelValue || this.levelValue == java.util.logging.Logger.offValue) {
+return;
+}var lr =  new java.util.logging.LogRecord (level, msg);
+lr.setThrown (thrown);
+this.doLog (lr);
+}, "java.util.logging.Level,~S,Throwable");
+Clazz_defineMethod (c$, "logp", 
+function (level, sourceClass, sourceMethod, msg) {
+if (level.intValue () < this.levelValue || this.levelValue == java.util.logging.Logger.offValue) {
+return;
+}var lr =  new java.util.logging.LogRecord (level, msg);
+lr.setSourceClassName (sourceClass);
+lr.setSourceMethodName (sourceMethod);
+this.doLog (lr);
+}, "java.util.logging.Level,~S,~S,~S");
+Clazz_defineMethod (c$, "logp", 
+function (level, sourceClass, sourceMethod, msg, param1) {
+if (level.intValue () < this.levelValue || this.levelValue == java.util.logging.Logger.offValue) {
+return;
+}var lr =  new java.util.logging.LogRecord (level, msg);
+lr.setSourceClassName (sourceClass);
+lr.setSourceMethodName (sourceMethod);
+var params =  Clazz_newArray (-1, [param1]);
+lr.setParameters (params);
+this.doLog (lr);
+}, "java.util.logging.Level,~S,~S,~S,~O");
+Clazz_defineMethod (c$, "logp", 
+function (level, sourceClass, sourceMethod, msg, params) {
+if (level.intValue () < this.levelValue || this.levelValue == java.util.logging.Logger.offValue) {
+return;
+}var lr =  new java.util.logging.LogRecord (level, msg);
+lr.setSourceClassName (sourceClass);
+lr.setSourceMethodName (sourceMethod);
+lr.setParameters (params);
+this.doLog (lr);
+}, "java.util.logging.Level,~S,~S,~S,~A");
+Clazz_defineMethod (c$, "logp", 
+function (level, sourceClass, sourceMethod, msg, thrown) {
+if (level.intValue () < this.levelValue || this.levelValue == java.util.logging.Logger.offValue) {
+return;
+}var lr =  new java.util.logging.LogRecord (level, msg);
+lr.setSourceClassName (sourceClass);
+lr.setSourceMethodName (sourceMethod);
+lr.setThrown (thrown);
+this.doLog (lr);
+}, "java.util.logging.Level,~S,~S,~S,Throwable");
+Clazz_defineMethod (c$, "entering", 
+function (sourceClass, sourceMethod) {
+if (java.util.logging.Level.FINER.intValue () < this.levelValue) {
+return;
+}this.logp (java.util.logging.Level.FINER, sourceClass, sourceMethod, "ENTRY");
+}, "~S,~S");
+Clazz_defineMethod (c$, "entering", 
+function (sourceClass, sourceMethod, param1) {
+if (java.util.logging.Level.FINER.intValue () < this.levelValue) {
+return;
+}var params =  Clazz_newArray (-1, [param1]);
+this.logp (java.util.logging.Level.FINER, sourceClass, sourceMethod, "ENTRY {0}", params);
+}, "~S,~S,~O");
+Clazz_defineMethod (c$, "entering", 
+function (sourceClass, sourceMethod, params) {
+if (java.util.logging.Level.FINER.intValue () < this.levelValue) {
+return;
+}var msg = "ENTRY";
+if (params == null) {
+this.logp (java.util.logging.Level.FINER, sourceClass, sourceMethod, msg);
+return;
+}for (var i = 0; i < params.length; i++) {
+msg = msg + " {" + i + "}";
+}
+this.logp (java.util.logging.Level.FINER, sourceClass, sourceMethod, msg, params);
+}, "~S,~S,~A");
+Clazz_defineMethod (c$, "exiting", 
+function (sourceClass, sourceMethod) {
+if (java.util.logging.Level.FINER.intValue () < this.levelValue) {
+return;
+}this.logp (java.util.logging.Level.FINER, sourceClass, sourceMethod, "RETURN");
+}, "~S,~S");
+Clazz_defineMethod (c$, "exiting", 
+function (sourceClass, sourceMethod, result) {
+if (java.util.logging.Level.FINER.intValue () < this.levelValue) {
+return;
+}this.logp (java.util.logging.Level.FINER, sourceClass, sourceMethod, "RETURN {0}", result);
+}, "~S,~S,~O");
+Clazz_defineMethod (c$, "throwing", 
+function (sourceClass, sourceMethod, thrown) {
+if (java.util.logging.Level.FINER.intValue () < this.levelValue || this.levelValue == java.util.logging.Logger.offValue) {
+return;
+}var lr =  new java.util.logging.LogRecord (java.util.logging.Level.FINER, "THROW");
+lr.setSourceClassName (sourceClass);
+lr.setSourceMethodName (sourceMethod);
+lr.setThrown (thrown);
+this.doLog (lr);
+}, "~S,~S,Throwable");
+Clazz_defineMethod (c$, "severe", 
+function (msg) {
+if (java.util.logging.Level.SEVERE.intValue () < this.levelValue) {
+return;
+}this.log (java.util.logging.Level.SEVERE, msg);
+}, "~S");
+Clazz_defineMethod (c$, "warning", 
+function (msg) {
+if (java.util.logging.Level.WARNING.intValue () < this.levelValue) {
+return;
+}this.log (java.util.logging.Level.WARNING, msg);
+}, "~S");
+Clazz_defineMethod (c$, "info", 
+function (msg) {
+if (java.util.logging.Level.INFO.intValue () < this.levelValue) {
+return;
+}this.log (java.util.logging.Level.INFO, msg);
+}, "~S");
+Clazz_defineMethod (c$, "config", 
+function (msg) {
+if (java.util.logging.Level.CONFIG.intValue () < this.levelValue) {
+return;
+}this.log (java.util.logging.Level.CONFIG, msg);
+}, "~S");
+Clazz_defineMethod (c$, "fine", 
+function (msg) {
+if (java.util.logging.Level.FINE.intValue () < this.levelValue) {
+return;
+}this.log (java.util.logging.Level.FINE, msg);
+}, "~S");
+Clazz_defineMethod (c$, "finer", 
+function (msg) {
+if (java.util.logging.Level.FINER.intValue () < this.levelValue) {
+return;
+}this.log (java.util.logging.Level.FINER, msg);
+}, "~S");
+Clazz_defineMethod (c$, "finest", 
+function (msg) {
+if (java.util.logging.Level.FINEST.intValue () < this.levelValue) {
+return;
+}this.log (java.util.logging.Level.FINEST, msg);
+}, "~S");
+Clazz_defineMethod (c$, "setLevel", 
+function (newLevel) {
+this.levelObject = newLevel;
+this.updateEffectiveLevel ();
+}, "java.util.logging.Level");
+Clazz_defineMethod (c$, "getLevel", 
+function () {
+return this.levelObject;
+});
+Clazz_defineMethod (c$, "isLoggable", 
+function (level) {
+if (level.intValue () < this.levelValue || this.levelValue == java.util.logging.Logger.offValue) {
+return false;
+}return true;
+}, "java.util.logging.Level");
+Clazz_defineMethod (c$, "getName", 
+function () {
+return this.name;
+});
+Clazz_defineMethod (c$, "updateEffectiveLevel", 
+ function () {
+var newLevelValue;
+if (this.levelObject != null) {
+newLevelValue = this.levelObject.intValue ();
+} else {
+newLevelValue = java.util.logging.Level.INFO.intValue ();
+}if (this.levelValue == newLevelValue) {
+return;
+}this.levelValue = newLevelValue;
+});
+c$.offValue = c$.prototype.offValue = java.util.logging.Level.OFF.intValue ();
+Clazz_defineStatics (c$,
+"GLOBAL_LOGGER_NAME", "global");
+c$.global = c$.prototype.global =  new java.util.logging.Logger ("global");
+c$.loggers = c$.prototype.loggers =  new java.util.Hashtable ();
+{
+java.util.logging.Logger.loggers.put ("global", java.util.logging.Logger.global);
+}});
+Clazz_declarePackage ("java.util.logging");
+Clazz_load (null, "java.util.logging.LogRecord", ["java.lang.NullPointerException", "$.Throwable"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.level = null;
+this.sequenceNumber = 0;
+this.sourceClassName = null;
+this.sourceMethodName = null;
+this.message = null;
+this.threadID = 0;
+this.millis = 0;
+this.thrown = null;
+this.loggerName = null;
+this.resourceBundleName = null;
+this.needToInferCaller = false;
+this.parameters = null;
+this.resourceBundle = null;
+Clazz_instantialize (this, arguments);
+}, java.util.logging, "LogRecord", null, java.io.Serializable);
+Clazz_makeConstructor (c$, 
+function (level, msg) {
+level.getClass ();
+this.level = level;
+this.message = msg;
+this.millis = System.currentTimeMillis ();
+this.needToInferCaller = true;
+}, "java.util.logging.Level,~S");
+Clazz_defineMethod (c$, "getLoggerName", 
+function () {
+return this.loggerName;
+});
+Clazz_defineMethod (c$, "setLoggerName", 
+function (name) {
+this.loggerName = name;
+}, "~S");
+Clazz_defineMethod (c$, "getResourceBundle", 
+function () {
+return this.resourceBundle;
+});
+Clazz_defineMethod (c$, "setResourceBundle", 
+function (bundle) {
+this.resourceBundle = bundle;
+}, "java.util.ResourceBundle");
+Clazz_defineMethod (c$, "getResourceBundleName", 
+function () {
+return this.resourceBundleName;
+});
+Clazz_defineMethod (c$, "setResourceBundleName", 
+function (name) {
+this.resourceBundleName = name;
+}, "~S");
+Clazz_defineMethod (c$, "getLevel", 
+function () {
+return this.level;
+});
+Clazz_defineMethod (c$, "setLevel", 
+function (level) {
+if (level == null) {
+throw  new NullPointerException ();
+}this.level = level;
+}, "java.util.logging.Level");
+Clazz_defineMethod (c$, "getSequenceNumber", 
+function () {
+return this.sequenceNumber;
+});
+Clazz_defineMethod (c$, "setSequenceNumber", 
+function (seq) {
+this.sequenceNumber = seq;
+}, "~N");
+Clazz_defineMethod (c$, "getSourceClassName", 
+function () {
+if (this.needToInferCaller) {
+this.inferCaller ();
+}return this.sourceClassName;
+});
+Clazz_defineMethod (c$, "setSourceClassName", 
+function (sourceClassName) {
+this.sourceClassName = sourceClassName;
+this.needToInferCaller = false;
+}, "~S");
+Clazz_defineMethod (c$, "getSourceMethodName", 
+function () {
+if (this.needToInferCaller) {
+this.inferCaller ();
+}return this.sourceMethodName;
+});
+Clazz_defineMethod (c$, "setSourceMethodName", 
+function (sourceMethodName) {
+this.sourceMethodName = sourceMethodName;
+this.needToInferCaller = false;
+}, "~S");
+Clazz_defineMethod (c$, "getMessage", 
+function () {
+return this.message;
+});
+Clazz_defineMethod (c$, "setMessage", 
+function (message) {
+this.message = message;
+}, "~S");
+Clazz_defineMethod (c$, "getParameters", 
+function () {
+return this.parameters;
+});
+Clazz_defineMethod (c$, "setParameters", 
+function (parameters) {
+this.parameters = parameters;
+}, "~A");
+Clazz_defineMethod (c$, "getThreadID", 
+function () {
+return this.threadID;
+});
+Clazz_defineMethod (c$, "setThreadID", 
+function (threadID) {
+this.threadID = threadID;
+}, "~N");
+Clazz_defineMethod (c$, "getMillis", 
+function () {
+return this.millis;
+});
+Clazz_defineMethod (c$, "setMillis", 
+function (millis) {
+this.millis = millis;
+}, "~N");
+Clazz_defineMethod (c$, "getThrown", 
+function () {
+return this.thrown;
+});
+Clazz_defineMethod (c$, "setThrown", 
+function (thrown) {
+this.thrown = thrown;
+}, "Throwable");
+Clazz_defineMethod (c$, "inferCaller", 
+ function () {
+this.needToInferCaller = false;
+var stack = ( new Throwable ()).getStackTrace ();
+var ix = 0;
+while (ix < stack.length) {
+var frame = stack[ix];
+var cname = frame.getClassName ();
+if (cname.equals ("java.util.logging.Logger")) {
+break;
+}ix++;
+}
+while (ix < stack.length) {
+var frame = stack[ix];
+var cname = frame.getClassName ();
+if (!cname.equals ("java.util.logging.Logger")) {
+this.setSourceClassName (cname);
+this.setSourceMethodName (frame.getMethodName ());
+return;
+}ix++;
+}
+});
+Clazz_defineStatics (c$,
+"globalSequenceNumber", 0);
+});
+Clazz_declarePackage ("java.util.logging");
+Clazz_load (["java.util.HashMap"], "java.util.logging.Level", ["java.lang.IllegalArgumentException", "$.NullPointerException", "java.util.ArrayList", "$.ResourceBundle"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.name = null;
+this.value = 0;
+this.resourceBundleName = null;
+this.localizedLevelName = null;
+Clazz_instantialize (this, arguments);
+}, java.util.logging, "Level", null, java.io.Serializable);
+Clazz_makeConstructor (c$, 
+function (name, value) {
+this.construct (name, value, null);
+}, "~S,~N");
+Clazz_makeConstructor (c$, 
+function (name, value, resourceBundleName) {
+if (name == null) {
+throw  new NullPointerException ();
+}this.name = name;
+this.value = value;
+this.resourceBundleName = resourceBundleName;
+this.localizedLevelName = resourceBundleName == null ? name : null;
+java.util.logging.Level.KnownLevel.add (this);
+}, "~S,~N,~S");
+Clazz_defineMethod (c$, "getResourceBundleName", 
+function () {
+return this.resourceBundleName;
+});
+Clazz_defineMethod (c$, "getName", 
+function () {
+return this.name;
+});
+Clazz_defineMethod (c$, "getLocalizedName", 
+function () {
+return this.getLocalizedLevelName ();
+});
+Clazz_defineMethod (c$, "getLevelName", 
+function () {
+return this.name;
+});
+Clazz_defineMethod (c$, "getLocalizedLevelName", 
+function () {
+if (this.localizedLevelName != null) {
+return this.localizedLevelName;
+}try {
+var rb = java.util.ResourceBundle.getBundle (this.resourceBundleName);
+this.localizedLevelName = rb.getString (this.name);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+this.localizedLevelName = this.name;
+} else {
+throw ex;
+}
+}
+return this.localizedLevelName;
+});
+c$.findLevel = Clazz_defineMethod (c$, "findLevel", 
+function (name) {
+if (name == null) {
+throw  new NullPointerException ();
+}var level;
+level = java.util.logging.Level.KnownLevel.findByName (name);
+if (level != null) {
+return level.mirroredLevel;
+}try {
+var x = Integer.parseInt (name);
+level = java.util.logging.Level.KnownLevel.findByValue (x);
+if (level == null) {
+var levelObject =  new java.util.logging.Level (name, x);
+level = java.util.logging.Level.KnownLevel.findByValue (x);
+}return level.mirroredLevel;
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+level = java.util.logging.Level.KnownLevel.findByLocalizedLevelName (name);
+if (level != null) {
+return level.mirroredLevel;
+}return null;
+}, "~S");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return this.name;
+});
+Clazz_defineMethod (c$, "intValue", 
+function () {
+return this.value;
+});
+c$.parse = Clazz_defineMethod (c$, "parse", 
+function (name) {
+name.length;
+var level;
+level = java.util.logging.Level.KnownLevel.findByName (name);
+if (level != null) {
+return level.levelObject;
+}try {
+var x = Integer.parseInt (name);
+level = java.util.logging.Level.KnownLevel.findByValue (x);
+if (level == null) {
+var levelObject =  new java.util.logging.Level (name, x);
+level = java.util.logging.Level.KnownLevel.findByValue (x);
+}return level.levelObject;
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+level = java.util.logging.Level.KnownLevel.findByLocalizedName (name);
+if (level != null) {
+return level.levelObject;
+}throw  new IllegalArgumentException ("Bad level \"" + name + "\"");
+}, "~S");
+Clazz_overrideMethod (c$, "equals", 
+function (ox) {
+try {
+var lx = ox;
+return (lx.value == this.value);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+return false;
+} else {
+throw ex;
+}
+}
+}, "~O");
+Clazz_overrideMethod (c$, "hashCode", 
+function () {
+return this.value;
+});
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.levelObject = null;
+this.mirroredLevel = null;
+Clazz_instantialize (this, arguments);
+}, java.util.logging.Level, "KnownLevel");
+Clazz_makeConstructor (c$, 
+function (a) {
+this.levelObject = a;
+if (a.getClass () === java.util.logging.Level) {
+this.mirroredLevel = a;
+} else {
+this.mirroredLevel =  new java.util.logging.Level (a.name, a.value, a.resourceBundleName);
+}}, "java.util.logging.Level");
+c$.add = Clazz_defineMethod (c$, "add", 
+function (a) {
+var b =  new java.util.logging.Level.KnownLevel (a);
+var c = java.util.logging.Level.KnownLevel.nameToLevels.get (a.name);
+if (c == null) {
+c =  new java.util.ArrayList ();
+java.util.logging.Level.KnownLevel.nameToLevels.put (a.name, c);
+}c.add (b);
+c = java.util.logging.Level.KnownLevel.intToLevels.get (new Integer (a.value));
+if (c == null) {
+c =  new java.util.ArrayList ();
+java.util.logging.Level.KnownLevel.intToLevels.put (new Integer (a.value), c);
+}c.add (b);
+}, "java.util.logging.Level");
+c$.findByName = Clazz_defineMethod (c$, "findByName", 
+function (a) {
+var b = java.util.logging.Level.KnownLevel.nameToLevels.get (a);
+if (b != null) {
+return b.get (0);
+}return null;
+}, "~S");
+c$.findByValue = Clazz_defineMethod (c$, "findByValue", 
+function (a) {
+var b = java.util.logging.Level.KnownLevel.intToLevels.get (new Integer (a));
+if (b != null) {
+return b.get (0);
+}return null;
+}, "~N");
+c$.findByLocalizedLevelName = Clazz_defineMethod (c$, "findByLocalizedLevelName", 
+function (a) {
+for (var levels, $levels = java.util.logging.Level.KnownLevel.nameToLevels.values ().iterator (); $levels.hasNext () && ((levels = $levels.next ()) || true);) {
+for (var l, $l = levels.iterator (); $l.hasNext () && ((l = $l.next ()) || true);) {
+var b = l.levelObject.getLocalizedLevelName ();
+if (a.equals (b)) {
+return l;
+}}
+}
+return null;
+}, "~S");
+c$.findByLocalizedName = Clazz_defineMethod (c$, "findByLocalizedName", 
+function (a) {
+for (var levels, $levels = java.util.logging.Level.KnownLevel.nameToLevels.values ().iterator (); $levels.hasNext () && ((levels = $levels.next ()) || true);) {
+for (var l, $l = levels.iterator (); $l.hasNext () && ((l = $l.next ()) || true);) {
+var b = l.levelObject.getLocalizedName ();
+if (a.equals (b)) {
+return l;
+}}
+}
+return null;
+}, "~S");
+c$.matches = Clazz_defineMethod (c$, "matches", 
+function (a) {
+var b = java.util.logging.Level.KnownLevel.nameToLevels.get (a.name);
+if (b != null) {
+for (var level, $level = b.iterator (); $level.hasNext () && ((level = $level.next ()) || true);) {
+var c = level.mirroredLevel;
+if (a.value == c.value && (a.resourceBundleName === c.resourceBundleName || (a.resourceBundleName != null && a.resourceBundleName.equals (c.resourceBundleName)))) {
+return level;
+}}
+}return null;
+}, "java.util.logging.Level");
+c$.nameToLevels = c$.prototype.nameToLevels =  new java.util.HashMap ();
+c$.intToLevels = c$.prototype.intToLevels =  new java.util.HashMap ();
+c$ = Clazz_p0p ();
+Clazz_defineStatics (c$,
+"defaultBundle", "sun.util.logging.resources.logging");
+c$.OFF = c$.prototype.OFF =  new java.util.logging.Level ("OFF", 2147483647, java.util.logging.Level.defaultBundle);
+c$.SEVERE = c$.prototype.SEVERE =  new java.util.logging.Level ("SEVERE", 1000, java.util.logging.Level.defaultBundle);
+c$.WARNING = c$.prototype.WARNING =  new java.util.logging.Level ("WARNING", 900, java.util.logging.Level.defaultBundle);
+c$.INFO = c$.prototype.INFO =  new java.util.logging.Level ("INFO", 800, java.util.logging.Level.defaultBundle);
+c$.CONFIG = c$.prototype.CONFIG =  new java.util.logging.Level ("CONFIG", 700, java.util.logging.Level.defaultBundle);
+c$.FINE = c$.prototype.FINE =  new java.util.logging.Level ("FINE", 500, java.util.logging.Level.defaultBundle);
+c$.FINER = c$.prototype.FINER =  new java.util.logging.Level ("FINER", 400, java.util.logging.Level.defaultBundle);
+c$.FINEST = c$.prototype.FINEST =  new java.util.logging.Level ("FINEST", 300, java.util.logging.Level.defaultBundle);
+c$.ALL = c$.prototype.ALL =  new java.util.logging.Level ("ALL", -2147483648, java.util.logging.Level.defaultBundle);
+});
+Clazz_declarePackage("java.text");
+c$=Clazz_decorateAsClass(function(){
+this.pattern=null;
+Clazz_instantialize(this,arguments);
+},java.text,"MessageFormat");
+Clazz_makeConstructor(c$,
+function(pattern){
+this.pattern=pattern;
+},"~S");
+Clazz_makeConstructor(c$,
+function(pattern,locale){
+this.pattern=pattern;
+},"~S,java.util.Locale");
+c$.format=Clazz_defineMethod(c$,"format",
+function(pattern,args){
+return pattern.replace(/\{(\d+)\}/g,function($0,$1){
+var i=parseInt($1);
+if(args==null)return null;
+return args[i];
+});
+},"~S,~A");
+Clazz_defineMethod(c$,"format",
+function(obj){
+return java.text.MessageFormat.format(this.pattern,[obj]);
+},"~O");
+Clazz_declarePackage ("java.util");
+Clazz_load (["java.util.ResourceBundle"], "java.util.PropertyResourceBundle", ["java.lang.NullPointerException", "java.util.HashMap", "java.util.Properties", "jssun.util.ResourceBundleEnumeration"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.lookup = null;
+Clazz_instantialize (this, arguments);
+}, java.util, "PropertyResourceBundle", java.util.ResourceBundle);
+Clazz_makeConstructor (c$, 
+function (stream) {
+Clazz_superConstructor (this, java.util.PropertyResourceBundle, []);
+this.setStream (stream);
+}, "java.io.InputStream");
+Clazz_defineMethod (c$, "setStream", 
+function (stream) {
+var properties =  new java.util.Properties ();
+properties.load (stream);
+this.lookup =  new java.util.HashMap (properties);
+return this;
+}, "java.io.InputStream");
+Clazz_makeConstructor (c$, 
+function (reader) {
+Clazz_superConstructor (this, java.util.PropertyResourceBundle, []);
+var properties =  new java.util.Properties ();
+properties.load (reader);
+this.lookup =  new java.util.HashMap (properties);
+}, "java.io.Reader");
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, java.util.PropertyResourceBundle, []);
+});
+Clazz_overrideMethod (c$, "handleGetObject", 
+function (key) {
+if (key == null) {
+throw  new NullPointerException ();
+}return this.lookup.get (key);
+}, "~S");
+Clazz_defineMethod (c$, "getKeys", 
+function () {
+var parent = this.parent;
+return  new jssun.util.ResourceBundleEnumeration (this.lookup.keySet (), (parent != null) ? parent.getKeys () : null);
+});
+Clazz_overrideMethod (c$, "handleKeySet", 
+function () {
+return this.lookup.keySet ();
+});
+});
+Clazz_declarePackage ("jalview.javascript");
+Clazz_declareInterface (jalview.javascript, "JalviewLiteJsApi");
+Clazz_declarePackage ("jalview.api");
+Clazz_declareInterface (jalview.api, "StructureSelectionManagerProvider");
+Clazz_declarePackage ("awt2swing");
+c$ = Clazz_declareType (awt2swing, "Util");
+c$.drawString = Clazz_defineMethod (c$, "drawString", 
+function (g, text, x, y) {
+{
+g.drawStringUnique(text, x, y);
+}}, "java.awt.Graphics,~S,~N,~N");
+Clazz_declarePackage ("jalview.analysis");
+Clazz_load (null, "jalview.analysis.SequenceIdMatcher", ["java.util.ArrayList", "$.Arrays", "$.HashMap", "$.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.names = null;
+if (!Clazz_isClassDefined ("jalview.analysis.SequenceIdMatcher.SeqIdName")) {
+jalview.analysis.SequenceIdMatcher.$SequenceIdMatcher$SeqIdName$ ();
+}
+Clazz_instantialize (this, arguments);
+}, jalview.analysis, "SequenceIdMatcher");
+Clazz_makeConstructor (c$, 
+function (seqs) {
+this.names =  new java.util.HashMap ();
+this.addAll (seqs);
+}, "java.util.List");
+Clazz_defineMethod (c$, "addAll", 
+function (seqs) {
+for (var seq, $seq = seqs.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+this.names.put (Clazz_innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, seq.getDisplayId (true)), seq);
+var dbseq = seq;
+while (dbseq.getDatasetSequence () != null) {
+dbseq = dbseq.getDatasetSequence ();
+}
+if (dbseq.getDBRef () != null) {
+var dbr = dbseq.getDBRef ();
+var sid = null;
+for (var r = 0; r < dbr.length; r++) {
+sid = Clazz_innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, dbr[r].getAccessionId ());
+if (!this.names.containsKey (sid)) {
+this.names.put (sid, seq);
+}}
+}}
+}, "java.util.List");
+Clazz_makeConstructor (c$, 
+function (sequences) {
+this.construct (java.util.Arrays.asList (sequences));
+}, "~A");
+Clazz_defineMethod (c$, "pickbestMatch", 
+ function (candName, matches) {
+var st = this.pickbestMatches (candName, matches);
+return st == null || st.size () == 0 ? null : st.get (0);
+}, "jalview.analysis.SequenceIdMatcher.SeqIdName,java.util.List");
+Clazz_defineMethod (c$, "pickbestMatches", 
+ function (candName, matches) {
+var best =  new java.util.ArrayList ();
+if (candName == null || matches == null || matches.size () == 0) {
+return null;
+}var match = matches.remove (0);
+best.add (match);
+this.names.put (Clazz_innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, match.getName ()), match);
+var matchlen = match.getName ().length;
+var namlen = candName.id.length;
+while (matches.size () > 0) {
+var cand = matches.remove (0);
+this.names.put (Clazz_innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, cand.getName ()), cand);
+var q;
+var w;
+var candlen = cand.getName ().length;
+if ((q = Math.abs (matchlen - namlen)) > (w = Math.abs (candlen - namlen)) && candlen > matchlen) {
+best.clear ();
+match = cand;
+matchlen = candlen;
+best.add (match);
+}if (q == w && candlen == matchlen) {
+best.add (cand);
+}}
+if (best.size () == 0) {
+return null;
+};return best;
+}, "jalview.analysis.SequenceIdMatcher.SeqIdName,java.util.List");
+Clazz_defineMethod (c$, "findIdMatch", 
+function (seq) {
+var nam = Clazz_innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, seq.getName ());
+return this.findIdMatch (nam);
+}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "findIdMatch", 
+function (seqnam) {
+var nam = Clazz_innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, seqnam);
+return this.findIdMatch (nam);
+}, "~S");
+Clazz_defineMethod (c$, "findAllIdMatches", 
+function (seqnam) {
+var nam = Clazz_innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, seqnam);
+var m = this.findAllIdMatches (nam);
+if (m != null) {
+return m.toArray ( new Array (m.size ()));
+}return null;
+}, "~S");
+Clazz_defineMethod (c$, "findIdMatch", 
+function (seqs) {
+var namedseqs = null;
+var i = 0;
+var nam;
+if (seqs.length > 0) {
+namedseqs =  new Array (seqs.length);
+do {
+nam = Clazz_innerTypeInstance (jalview.analysis.SequenceIdMatcher.SeqIdName, this, null, seqs[i].getName ());
+if (this.names.containsKey (nam)) {
+namedseqs[i] = this.findIdMatch (nam);
+} else {
+namedseqs[i] = null;
+}} while (++i < seqs.length);
+}return namedseqs;
+}, "~A");
+Clazz_defineMethod (c$, "findIdMatch", 
+ function (nam) {
+var matches =  new java.util.Vector ();
+while (this.names.containsKey (nam)) {
+matches.addElement (this.names.remove (nam));
+}
+return this.pickbestMatch (nam, matches);
+}, "jalview.analysis.SequenceIdMatcher.SeqIdName");
+Clazz_defineMethod (c$, "findAllIdMatches", 
+ function (nam) {
+var matches =  new java.util.ArrayList ();
+while (this.names.containsKey (nam)) {
+matches.add (this.names.remove (nam));
+}
+var r = this.pickbestMatches (nam, matches);
+return r;
+}, "jalview.analysis.SequenceIdMatcher.SeqIdName");
+c$.$SequenceIdMatcher$SeqIdName$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.id = null;
+this.WORD_SEP = "~. |#\\/<>!\"\u00a4$%^*)}[@\',?_";
+Clazz_instantialize (this, arguments);
+}, jalview.analysis.SequenceIdMatcher, "SeqIdName");
+Clazz_makeConstructor (c$, 
+function (a) {
+if (a != null) {
+this.id =  String.instantialize (a);
+} else {
+this.id = "";
+}}, "~S");
+Clazz_overrideMethod (c$, "hashCode", 
+function () {
+return ((this.id.length >= 4) ? this.id.substring (0, 4).hashCode () : this.id.hashCode ());
+});
+Clazz_defineMethod (c$, "equals", 
+function (a) {
+if (a == null) {
+return false;
+}if (Clazz_instanceOf (a, jalview.analysis.SequenceIdMatcher.SeqIdName)) {
+return this.equals (a);
+} else {
+if (Clazz_instanceOf (a, String)) {
+return this.equals (a);
+}}return false;
+}, "~O");
+Clazz_defineMethod (c$, "equals", 
+function (a) {
+if (this.id.length > a.id.length) {
+return this.id.startsWith (a.id) ? (this.WORD_SEP.indexOf (this.id.charAt (a.id.length)) > -1) : false;
+} else {
+return a.id.startsWith (this.id) ? (a.id.equals (this.id) ? true : (this.WORD_SEP.indexOf (a.id.charAt (this.id.length)) > -1)) : false;
+}}, "jalview.analysis.SequenceIdMatcher.SeqIdName");
+Clazz_defineMethod (c$, "equals", 
+function (a) {
+if (this.id.length > a.length) {
+return this.id.startsWith (a) ? (this.WORD_SEP.indexOf (this.id.charAt (a.length)) > -1) : false;
+} else {
+return a.startsWith (this.id) ? (a.equals (this.id) ? true : (this.WORD_SEP.indexOf (a.charAt (this.id.length)) > -1)) : false;
+}}, "~S");
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Canvas", "jalview.api.AlignViewControllerGuiI", "jalview.appletgui.EmbmenuFrame", "java.awt.event.ActionListener", "$.ItemListener", "$.KeyListener", "awt2swing.CheckboxMenuItem", "$.Label", "$.Menu", "$.MenuBar", "$.MenuItem", "jalview.util.MessageManager", "java.awt.BorderLayout"], "jalview.appletgui.AlignFrame", ["awt2swing.Frame", "$.Util", "jalview.analysis.AlignmentSorter", "$.AnnotationSorter", "jalview.appletgui.AlignViewport", "$.AlignmentPanel", "$.AnnotationColourChooser", "$.AnnotationColumnChooser", "$.AppletJmol", "$.CutAndPasteTransfer", "$.FeatureSettings", "$.Finder", "$.FontChooser", "$.OverviewPanel", "$.PCAPanel", "$.PaintRefresher", "$.PairwiseAlignPanel", "$.RedundancyPanel", "$.SliderPanel", "$.TreePanel", "$.UserDefinedColours", "jalview.bin.JalviewLite", "jalview.commands.EditCommand", "$.OrderCommand", "$.RemoveGapColCommand", "$.RemoveGapsCommand", "$.SlideSequencesCommand", "$.TrimRegionCommand", "jalview.controller.AlignViewController", "jalview.datamodel.Alignment", "$.PDBEntry", "$.Sequence", "$.SequenceGroup", "jalview.io.AlignmentProperties", "$.AnnotationFile", "$.AppletFormatAdapter", "$.FeaturesFile", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.Blosum62ColourScheme", "$.BuriedColourScheme", "$.ClustalxColourScheme", "$.HelixColourScheme", "$.HydrophobicColourScheme", "$.NucleotideColourScheme", "$.PIDColourScheme", "$.PurinePyrimidineColourScheme", "$.RNAHelicesColourChooser", "$.RNAInteractionColourScheme", "$.StrandColourScheme", "$.TCoffeeColourScheme", "$.TaylorColourScheme", "$.TurnColourScheme", "$.ZappoColourScheme", "jalview.structure.StructureSelectionManager", "jalview.util.Comparison", "$.MappingUtils", "java.awt.Color", "$.Font", "java.awt.event.FocusListener", "$.WindowAdapter", "java.lang.Character", "$.StringBuffer", "java.net.URL", "$.URLEncoder", "java.util.Arrays", "$.HashMap", "$.Hashtable", "$.StringTokenizer", "$.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.avc = null;
+this.alignPanel = null;
+this.viewport = null;
+this.frameWidth = 700;
+this.frameHeight = 500;
+this.jalviewServletURL = null;
+this.showAutoCalculatedAbove = false;
+this.annotationSortOrder = null;
+this.alignFrameMenuBar = null;
+this.fileMenu = null;
+this.loadApplication = null;
+this.$loadTree = null;
+this.$loadAnnotations = null;
+this.$outputFeatures = null;
+this.$outputAnnotations = null;
+this.closeMenuItem = null;
+this.selectAllSequenceMenuItem = null;
+this.deselectAllSequenceMenuItem = null;
+this.invertSequenceMenuItem = null;
+this.remove2LeftMenuItem = null;
+this.remove2RightMenuItem = null;
+this.removeGappedColumnMenuItem = null;
+this.removeAllGapsMenuItem = null;
+this.viewBoxesMenuItem = null;
+this.viewTextMenuItem = null;
+this.sortPairwiseMenuItem = null;
+this.sortIDMenuItem = null;
+this.sortLengthMenuItem = null;
+this.sortGroupMenuItem = null;
+this.removeRedundancyMenuItem = null;
+this.pairwiseAlignmentMenuItem = null;
+this.PCAMenuItem = null;
+this.averageDistanceTreeMenuItem = null;
+this.neighbourTreeMenuItem = null;
+this.borderLayout1 = null;
+this.statusBar = null;
+this.clustalColour = null;
+this.zappoColour = null;
+this.taylorColour = null;
+this.hydrophobicityColour = null;
+this.helixColour = null;
+this.strandColour = null;
+this.turnColour = null;
+this.buriedColour = null;
+this.purinePyrimidineColour = null;
+this.RNAInteractionColour = null;
+this.RNAHelixColour = null;
+this.userDefinedColour = null;
+this.PIDColour = null;
+this.BLOSUM62Colour = null;
+this.tcoffeeColour = null;
+this.njTreeBlosumMenuItem = null;
+this.avDistanceTreeBlosumMenuItem = null;
+this.annotationPanelMenuItem = null;
+this.colourTextMenuItem = null;
+this.displayNonconservedMenuItem = null;
+this.alProperties = null;
+this.overviewMenuItem = null;
+this.undoMenuItem = null;
+this.redoMenuItem = null;
+this.conservationMenuItem = null;
+this.noColourmenuItem = null;
+this.wrapMenuItem = null;
+this.renderGapsMenuItem = null;
+this.findMenuItem = null;
+this.abovePIDThreshold = null;
+this.nucleotideColour = null;
+this.deleteGroups = null;
+this.grpsFromSelection = null;
+this.createGroup = null;
+this.unGroup = null;
+this.$delete = null;
+this.copy = null;
+this.cut = null;
+this.pasteMenu = null;
+this.pasteNew = null;
+this.pasteThis = null;
+this.applyToAllGroups = null;
+this.$font = null;
+this.scaleAbove = null;
+this.scaleLeft = null;
+this.scaleRight = null;
+this.modifyPID = null;
+this.modifyConservation = null;
+this.autoCalculate = null;
+this.$sortByTree = null;
+this.sortByTreeMenu = null;
+this.inputText = null;
+this.documentation = null;
+this.about = null;
+this.seqLimits = null;
+this.centreColumnLabelFlag = null;
+this.followMouseOverFlag = null;
+this.showSequenceLogo = null;
+this.applyAutoAnnotationSettings = null;
+this.showConsensusHistogram = null;
+this.showGroupConsensus = null;
+this.showGroupConservation = null;
+this.normSequenceLogo = null;
+this.featureSettings = null;
+this.sequenceFeatures = null;
+this.annotationColour = null;
+this.annotationColumnSelection = null;
+this.invertColSel = null;
+this.showColumns = null;
+this.showSeqs = null;
+this.hideColumns = null;
+this.hideSequences = null;
+this.hideAllButSelection = null;
+this.hideAllSelection = null;
+this.showAllHidden = null;
+this.$newView = null;
+this.showAlignmentAnnotations = null;
+this.showSequenceAnnotations = null;
+this.sortAnnBySequence = null;
+this.sortAnnByLabel = null;
+this.showAutoFirst = null;
+this.showAutoLast = null;
+this.splitFrame = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "AlignFrame", jalview.appletgui.EmbmenuFrame, [java.awt.event.ActionListener, java.awt.event.ItemListener, java.awt.event.KeyListener, jalview.api.AlignViewControllerGuiI]);
+Clazz_prepareFields (c$, function () {
+this.alignFrameMenuBar =  new awt2swing.MenuBar ();
+this.fileMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.file"));
+this.loadApplication =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.view_full_application"));
+this.$loadTree =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.load_associated_tree"));
+this.$loadAnnotations =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.load_features_annotations"));
+this.$outputFeatures =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.export_features").concat ("..."));
+this.$outputAnnotations =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.export_annotations").concat ("..."));
+this.closeMenuItem =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.close"));
+this.selectAllSequenceMenuItem =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.select_all"));
+this.deselectAllSequenceMenuItem =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.deselect_all"));
+this.invertSequenceMenuItem =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.invert_selection"));
+this.remove2LeftMenuItem =  new awt2swing.MenuItem ();
+this.remove2RightMenuItem =  new awt2swing.MenuItem ();
+this.removeGappedColumnMenuItem =  new awt2swing.MenuItem ();
+this.removeAllGapsMenuItem =  new awt2swing.MenuItem ();
+this.viewBoxesMenuItem =  new awt2swing.CheckboxMenuItem ();
+this.viewTextMenuItem =  new awt2swing.CheckboxMenuItem ();
+this.sortPairwiseMenuItem =  new awt2swing.MenuItem ();
+this.sortIDMenuItem =  new awt2swing.MenuItem ();
+this.sortLengthMenuItem =  new awt2swing.MenuItem ();
+this.sortGroupMenuItem =  new awt2swing.MenuItem ();
+this.removeRedundancyMenuItem =  new awt2swing.MenuItem ();
+this.pairwiseAlignmentMenuItem =  new awt2swing.MenuItem ();
+this.PCAMenuItem =  new awt2swing.MenuItem ();
+this.averageDistanceTreeMenuItem =  new awt2swing.MenuItem ();
+this.neighbourTreeMenuItem =  new awt2swing.MenuItem ();
+this.borderLayout1 =  new java.awt.BorderLayout ();
+this.statusBar =  new awt2swing.Label ();
+this.clustalColour =  new awt2swing.MenuItem ();
+this.zappoColour =  new awt2swing.MenuItem ();
+this.taylorColour =  new awt2swing.MenuItem ();
+this.hydrophobicityColour =  new awt2swing.MenuItem ();
+this.helixColour =  new awt2swing.MenuItem ();
+this.strandColour =  new awt2swing.MenuItem ();
+this.turnColour =  new awt2swing.MenuItem ();
+this.buriedColour =  new awt2swing.MenuItem ();
+this.purinePyrimidineColour =  new awt2swing.MenuItem ();
+this.RNAInteractionColour =  new awt2swing.MenuItem ();
+this.RNAHelixColour =  new awt2swing.MenuItem ();
+this.userDefinedColour =  new awt2swing.MenuItem ();
+this.PIDColour =  new awt2swing.MenuItem ();
+this.BLOSUM62Colour =  new awt2swing.MenuItem ();
+this.tcoffeeColour =  new awt2swing.MenuItem ();
+this.njTreeBlosumMenuItem =  new awt2swing.MenuItem ();
+this.avDistanceTreeBlosumMenuItem =  new awt2swing.MenuItem ();
+this.annotationPanelMenuItem =  new awt2swing.CheckboxMenuItem ();
+this.colourTextMenuItem =  new awt2swing.CheckboxMenuItem ();
+this.displayNonconservedMenuItem =  new awt2swing.CheckboxMenuItem ();
+this.alProperties =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.alignment_props"));
+this.overviewMenuItem =  new awt2swing.MenuItem ();
+this.undoMenuItem =  new awt2swing.MenuItem ();
+this.redoMenuItem =  new awt2swing.MenuItem ();
+this.conservationMenuItem =  new awt2swing.CheckboxMenuItem ();
+this.noColourmenuItem =  new awt2swing.MenuItem ();
+this.wrapMenuItem =  new awt2swing.CheckboxMenuItem ();
+this.renderGapsMenuItem =  new awt2swing.CheckboxMenuItem ();
+this.findMenuItem =  new awt2swing.MenuItem ();
+this.abovePIDThreshold =  new awt2swing.CheckboxMenuItem ();
+this.nucleotideColour =  new awt2swing.MenuItem ();
+this.deleteGroups =  new awt2swing.MenuItem ();
+this.grpsFromSelection =  new awt2swing.MenuItem ();
+this.createGroup =  new awt2swing.MenuItem ();
+this.unGroup =  new awt2swing.MenuItem ();
+this.$delete =  new awt2swing.MenuItem ();
+this.copy =  new awt2swing.MenuItem ();
+this.cut =  new awt2swing.MenuItem ();
+this.pasteMenu =  new awt2swing.Menu ();
+this.pasteNew =  new awt2swing.MenuItem ();
+this.pasteThis =  new awt2swing.MenuItem ();
+this.applyToAllGroups =  new awt2swing.CheckboxMenuItem ();
+this.$font =  new awt2swing.MenuItem ();
+this.scaleAbove =  new awt2swing.CheckboxMenuItem ();
+this.scaleLeft =  new awt2swing.CheckboxMenuItem ();
+this.scaleRight =  new awt2swing.CheckboxMenuItem ();
+this.modifyPID =  new awt2swing.MenuItem ();
+this.modifyConservation =  new awt2swing.MenuItem ();
+this.$sortByTree =  new awt2swing.CheckboxMenuItem ("Sort Alignment With New Tree", true);
+this.sortByTreeMenu =  new awt2swing.Menu ();
+this.inputText =  new awt2swing.MenuItem ();
+this.documentation =  new awt2swing.MenuItem ();
+this.about =  new awt2swing.MenuItem ();
+this.seqLimits =  new awt2swing.CheckboxMenuItem ();
+this.centreColumnLabelFlag =  new awt2swing.CheckboxMenuItem ();
+this.followMouseOverFlag =  new awt2swing.CheckboxMenuItem ();
+this.showSequenceLogo =  new awt2swing.CheckboxMenuItem ();
+this.applyAutoAnnotationSettings =  new awt2swing.CheckboxMenuItem ();
+this.showConsensusHistogram =  new awt2swing.CheckboxMenuItem ();
+this.showGroupConsensus =  new awt2swing.CheckboxMenuItem ();
+this.showGroupConservation =  new awt2swing.CheckboxMenuItem ();
+this.normSequenceLogo =  new awt2swing.CheckboxMenuItem ();
+this.featureSettings =  new awt2swing.MenuItem ();
+this.sequenceFeatures =  new awt2swing.CheckboxMenuItem ();
+this.annotationColour =  new awt2swing.MenuItem ();
+this.annotationColumnSelection =  new awt2swing.MenuItem ();
+this.invertColSel =  new awt2swing.MenuItem ();
+this.showColumns =  new awt2swing.MenuItem ();
+this.showSeqs =  new awt2swing.MenuItem ();
+this.hideColumns =  new awt2swing.MenuItem ();
+this.hideSequences =  new awt2swing.MenuItem ();
+this.hideAllButSelection =  new awt2swing.MenuItem ();
+this.hideAllSelection =  new awt2swing.MenuItem ();
+this.showAllHidden =  new awt2swing.MenuItem ();
+this.$newView =  new awt2swing.MenuItem ();
+});
+Clazz_makeConstructor (c$, 
+function (al, applet, title, embedded) {
+this.construct (al, applet, title, embedded, true);
+}, "jalview.datamodel.AlignmentI,jalview.bin.JalviewLite,~S,~B");
+Clazz_makeConstructor (c$, 
+function (al, applet, title, embedded, addToDisplay) {
+this.construct (al, null, null, applet, title, embedded, addToDisplay);
+}, "jalview.datamodel.AlignmentI,jalview.bin.JalviewLite,~S,~B,~B");
+Clazz_makeConstructor (c$, 
+function (al, hiddenSeqs, columnSelection, applet, title, embedded) {
+this.construct (al, hiddenSeqs, columnSelection, applet, title, embedded, true);
+}, "jalview.datamodel.AlignmentI,~A,jalview.datamodel.ColumnSelection,jalview.bin.JalviewLite,~S,~B");
+Clazz_makeConstructor (c$, 
+function (al, hiddenSeqs, columnSelection, applet, title, embedded, addToDisplay) {
+Clazz_superConstructor (this, jalview.appletgui.AlignFrame, []);
+if (applet != null) {
+this.jalviewServletURL = applet.jalviewServletURL;
+}try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+if (applet != null) {
+var param;
+try {
+param = applet.windowWidth;
+if (param != null) {
+var width = Integer.parseInt (param);
+this.frameWidth = width;
+}param = applet.windowHeight;
+if (param != null) {
+var height = Integer.parseInt (param);
+this.frameHeight = height;
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}this.viewport =  new jalview.appletgui.AlignViewport (al, applet);
+if (hiddenSeqs != null && hiddenSeqs.length > 0) {
+this.viewport.hideSequence (hiddenSeqs);
+}if (columnSelection != null) {
+this.viewport.setColumnSelection (columnSelection);
+}this.alignPanel =  new jalview.appletgui.AlignmentPanel (this, this.viewport);
+this.avc =  new jalview.controller.AlignViewController (this, this.viewport, this.alignPanel);
+this.viewport.updateConservation (this.alignPanel);
+this.viewport.updateConsensus (this.alignPanel);
+this.displayNonconservedMenuItem.setState (this.viewport.getShowUnconserved ());
+this.followMouseOverFlag.setState (this.viewport.isFollowHighlight ());
+this.showGroupConsensus.setState (this.viewport.isShowGroupConsensus ());
+this.showGroupConservation.setState (this.viewport.isShowGroupConservation ());
+this.showConsensusHistogram.setState (this.viewport.isShowConsensusHistogram ());
+this.showSequenceLogo.setState (this.viewport.isShowSequenceLogo ());
+this.normSequenceLogo.setState (this.viewport.isNormaliseSequenceLogo ());
+this.applyToAllGroups.setState (this.viewport.getColourAppliesToAllGroups ());
+this.annotationPanelMenuItem.setState (this.viewport.isShowAnnotation ());
+this.showAlignmentAnnotations.setState (this.viewport.isShowAnnotation ());
+this.showSequenceAnnotations.setState (this.viewport.isShowAnnotation ());
+this.seqLimits.setState (this.viewport.getShowJVSuffix ());
+if (applet != null) {
+var param = applet.sortBy;
+if (param != null) {
+if (param.equalsIgnoreCase ("Id")) {
+this.sortIDMenuItem_actionPerformed ();
+} else if (param.equalsIgnoreCase ("Pairwise Identity")) {
+this.sortPairwiseMenuItem_actionPerformed ();
+} else if (param.equalsIgnoreCase ("Length")) {
+this.sortLengthMenuItem_actionPerformed ();
+}}param = applet.wrap;
+if (param != null) {
+if (param.equalsIgnoreCase ("true")) {
+this.wrapMenuItem.setState (true);
+this.wrapMenuItem_actionPerformed ();
+}}param = applet.centrecolumnlabels;
+if (param != null) {
+this.centreColumnLabelFlag.setState (true);
+this.centreColumnLabelFlag_stateChanged ();
+}}if (this.viewport.getAlignment ().isNucleotide ()) {
+this.viewport.updateStrucConsensus (this.alignPanel);
+if (this.viewport.getAlignment ().hasRNAStructure ()) {
+this.RNAHelixColour.setEnabled (true);
+} else {
+this.RNAHelixColour.setEnabled (false);
+}} else {
+this.RNAHelixColour.setEnabled (false);
+this.purinePyrimidineColour.setEnabled (false);
+}this.addKeyListener (this);
+this.alignPanel.seqPanel.seqCanvas.addKeyListener (this);
+this.alignPanel.idPanel.idCanvas.addKeyListener (this);
+this.alignPanel.scalePanel.addKeyListener (this);
+this.alignPanel.annotationPanel.addKeyListener (this);
+this.alignPanel.annotationPanelHolder.addKeyListener (this);
+this.alignPanel.annotationSpaceFillerHolder.addKeyListener (this);
+this.alignPanel.alabels.addKeyListener (this);
+if (addToDisplay) {
+this.addToDisplay (embedded);
+}}, "jalview.datamodel.AlignmentI,~A,jalview.datamodel.ColumnSelection,jalview.bin.JalviewLite,~S,~B,~B");
+Clazz_defineMethod (c$, "addToDisplay", 
+function (embedded) {
+this.createAlignFrameWindow (embedded);
+this.validate ();
+this.alignPanel.adjustAnnotationHeight ();
+this.alignPanel.paintAlignment (true);
+}, "~B");
+Clazz_defineMethod (c$, "getAlignViewport", 
+function () {
+return this.viewport;
+});
+Clazz_defineMethod (c$, "getSeqcanvas", 
+function () {
+return this.alignPanel.seqPanel.seqCanvas;
+});
+Clazz_defineMethod (c$, "parseFeaturesFile", 
+function (file, type) {
+return this.parseFeaturesFile (file, type, true);
+}, "~S,~S");
+Clazz_defineMethod (c$, "parseFeaturesFile", 
+function (file, type, autoenabledisplay) {
+var featureLinks =  new java.util.Hashtable ();
+var featuresFile = false;
+try {
+featuresFile =  new jalview.io.FeaturesFile (file, type).parse (this.viewport.getAlignment (), this.alignPanel.seqPanel.seqCanvas.getFeatureRenderer ().getFeatureColours (), featureLinks, true, this.viewport.applet.getDefaultParameter ("relaxedidmatch", false));
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+if (featuresFile) {
+if (featureLinks.size () > 0) {
+this.alignPanel.seqPanel.seqCanvas.getFeatureRenderer ().featureLinks = featureLinks;
+}if (autoenabledisplay) {
+this.viewport.setShowSequenceFeatures (true);
+this.sequenceFeatures.setState (true);
+}if (this.alignPanel.seqPanel.seqCanvas.fr != null) {
+this.alignPanel.seqPanel.seqCanvas.fr.findAllFeatures (true);
+}if (this.viewport.featureSettings != null) {
+this.viewport.featureSettings.refreshTable ();
+}this.alignPanel.paintAlignment (true);
+this.setStatus (jalview.util.MessageManager.getString ("label.successfully_added_features_alignment"));
+}return featuresFile;
+}, "~S,~S,~B");
+Clazz_overrideMethod (c$, "keyPressed", 
+function (evt) {
+if (this.viewport.cursorMode && ((evt.getKeyCode () >= 48 && evt.getKeyCode () <= 57) || (evt.getKeyCode () >= 96 && evt.getKeyCode () <= 105)) && Character.isDigit (evt.getKeyChar ())) {
+this.alignPanel.seqPanel.numberPressed (evt.getKeyChar ());
+}switch (evt.getKeyCode ()) {
+case 27:
+this.deselectAllSequenceMenuItem_actionPerformed ();
+this.alignPanel.alabels.cancelDrag ();
+break;
+case 88:
+if (evt.isControlDown () || evt.isMetaDown ()) {
+this.cut_actionPerformed ();
+}break;
+case 67:
+if (this.viewport.cursorMode && !evt.isControlDown ()) {
+this.alignPanel.seqPanel.setCursorColumn ();
+}if (evt.isControlDown () || evt.isMetaDown ()) {
+this.copy_actionPerformed ();
+}break;
+case 86:
+if (evt.isControlDown ()) {
+this.paste (evt.isShiftDown ());
+}break;
+case 65:
+if (evt.isControlDown () || evt.isMetaDown ()) {
+this.selectAllSequenceMenuItem_actionPerformed ();
+}break;
+case 40:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.moveCursor (0, 1);
+} else {
+this.moveSelectedSequences (false);
+}break;
+case 38:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.moveCursor (0, -1);
+} else {
+this.moveSelectedSequences (true);
+}break;
+case 37:
+if (evt.isAltDown () || !this.viewport.cursorMode) {
+this.slideSequences (false, this.alignPanel.seqPanel.getKeyboardNo1 ());
+} else {
+this.alignPanel.seqPanel.moveCursor (-1, 0);
+}break;
+case 39:
+if (evt.isAltDown () || !this.viewport.cursorMode) {
+this.slideSequences (true, this.alignPanel.seqPanel.getKeyboardNo1 ());
+} else {
+this.alignPanel.seqPanel.moveCursor (1, 0);
+}break;
+case 32:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.insertGapAtCursor (evt.isControlDown () || evt.isShiftDown () || evt.isAltDown ());
+}break;
+case 127:
+case 8:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.deleteGapAtCursor (evt.isControlDown () || evt.isShiftDown () || evt.isAltDown ());
+} else {
+this.cut_actionPerformed ();
+this.alignPanel.seqPanel.seqCanvas.repaint ();
+}break;
+case 83:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.setCursorRow ();
+}break;
+case 80:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.setCursorPosition ();
+}break;
+case 10:
+case 44:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.setCursorRowAndColumn ();
+}break;
+case 81:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.setSelectionAreaAtCursor (true);
+}break;
+case 77:
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.setSelectionAreaAtCursor (false);
+}break;
+case 113:
+this.viewport.cursorMode = !this.viewport.cursorMode;
+this.setStatus (jalview.util.MessageManager.formatMessage ("label.keyboard_editing_mode",  Clazz_newArray (-1, [(this.viewport.cursorMode ? "on" : "off")])));
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.seqCanvas.cursorX = this.viewport.startRes;
+this.alignPanel.seqPanel.seqCanvas.cursorY = this.viewport.startSeq;
+}break;
+case 70:
+if (evt.isControlDown ()) {
+this.findMenuItem_actionPerformed ();
+}break;
+case 72:
+{
+var toggleSeqs = !evt.isControlDown ();
+var toggleCols = !evt.isShiftDown ();
+this.toggleHiddenRegions (toggleSeqs, toggleCols);
+break;
+}case 33:
+if (this.viewport.getWrapAlignment ()) {
+this.alignPanel.scrollUp (true);
+} else {
+this.alignPanel.setScrollValues (this.viewport.startRes, this.viewport.startSeq - this.viewport.endSeq + this.viewport.startSeq);
+}break;
+case 34:
+if (this.viewport.getWrapAlignment ()) {
+this.alignPanel.scrollUp (false);
+} else {
+this.alignPanel.setScrollValues (this.viewport.startRes, this.viewport.startSeq + this.viewport.endSeq - this.viewport.startSeq);
+}break;
+case 90:
+if (evt.isControlDown ()) {
+this.undoMenuItem_actionPerformed ();
+}break;
+case 89:
+if (evt.isControlDown ()) {
+this.redoMenuItem_actionPerformed ();
+}break;
+case 76:
+if (evt.isControlDown ()) {
+this.trimAlignment (true);
+}break;
+case 82:
+if (evt.isControlDown ()) {
+this.trimAlignment (false);
+}break;
+case 69:
+if (evt.isControlDown ()) {
+if (evt.isShiftDown ()) {
+this.removeAllGapsMenuItem_actionPerformed ();
+} else {
+this.removeGappedColumnMenuItem_actionPerformed ();
+}}break;
+case 73:
+if (evt.isControlDown ()) {
+if (evt.isAltDown ()) {
+this.invertColSel_actionPerformed ();
+} else {
+this.invertSequenceMenuItem_actionPerformed ();
+}}break;
+case 71:
+if (evt.isControlDown ()) {
+if (evt.isShiftDown ()) {
+this.unGroup_actionPerformed ();
+} else {
+this.createGroup_actionPerformed ();
+}}break;
+case 85:
+if (evt.isControlDown ()) {
+this.deleteGroups_actionPerformed ();
+}break;
+case 84:
+if (evt.isControlDown ()) {
+this.newView (null);
+}break;
+}
+this.alignPanel.paintAlignment (true);
+}, "java.awt.event.KeyEvent");
+Clazz_defineMethod (c$, "toggleHiddenRegions", 
+ function (toggleSeqs, toggleCols) {
+var hide = false;
+var sg = this.viewport.getSelectionGroup ();
+if (!toggleSeqs && !toggleCols) {
+if ((this.viewport.getColumnSelection () != null && this.viewport.getColumnSelection ().getSelected () != null && this.viewport.getColumnSelection ().getSelected ().size () > 0) || (sg != null && sg.getSize () > 0 && sg.getStartRes () <= sg.getEndRes ())) {
+if (sg != null) {
+this.invertSequenceMenuItem_actionPerformed ();
+sg = this.viewport.getSelectionGroup ();
+toggleSeqs = true;
+}this.viewport.expandColSelection (sg, true);
+this.invertColSel_actionPerformed ();
+toggleCols = true;
+}}if (toggleSeqs) {
+if (sg != null && sg.getSize () != this.viewport.getAlignment ().getHeight ()) {
+hide = true;
+this.viewport.hideAllSelectedSeqs ();
+} else if (!(toggleCols && this.viewport.getColumnSelection ().getSelected ().size () > 0)) {
+this.viewport.showAllHiddenSeqs ();
+}}if (toggleCols) {
+if (this.viewport.getColumnSelection ().getSelected ().size () > 0) {
+this.viewport.hideSelectedColumns ();
+if (!toggleSeqs) {
+this.viewport.setSelectionGroup (sg);
+}} else if (!hide) {
+this.viewport.showAllHiddenColumns ();
+}}}, "~B,~B");
+Clazz_overrideMethod (c$, "keyReleased", 
+function (evt) {
+}, "java.awt.event.KeyEvent");
+Clazz_overrideMethod (c$, "keyTyped", 
+function (evt) {
+}, "java.awt.event.KeyEvent");
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (evt) {
+var source = evt.getSource ();
+if (source === this.displayNonconservedMenuItem) {
+this.displayNonconservedMenuItem_actionPerformed ();
+} else if (source === this.colourTextMenuItem) {
+this.colourTextMenuItem_actionPerformed ();
+} else if (source === this.wrapMenuItem) {
+this.wrapMenuItem_actionPerformed ();
+} else if (source === this.scaleAbove) {
+this.viewport.setScaleAboveWrapped (this.scaleAbove.getState ());
+} else if (source === this.scaleLeft) {
+this.viewport.setScaleLeftWrapped (this.scaleLeft.getState ());
+} else if (source === this.scaleRight) {
+this.viewport.setScaleRightWrapped (this.scaleRight.getState ());
+} else if (source === this.seqLimits) {
+this.seqLimits_itemStateChanged ();
+} else if (source === this.viewBoxesMenuItem) {
+this.viewport.setShowBoxes (this.viewBoxesMenuItem.getState ());
+} else if (source === this.viewTextMenuItem) {
+this.viewport.setShowText (this.viewTextMenuItem.getState ());
+} else if (source === this.renderGapsMenuItem) {
+this.viewport.setRenderGaps (this.renderGapsMenuItem.getState ());
+} else if (source === this.annotationPanelMenuItem) {
+this.viewport.setShowAnnotation (this.annotationPanelMenuItem.getState ());
+this.alignPanel.setAnnotationVisible (this.annotationPanelMenuItem.getState ());
+} else if (source === this.sequenceFeatures) {
+this.viewport.setShowSequenceFeatures (this.sequenceFeatures.getState ());
+this.alignPanel.seqPanel.seqCanvas.repaint ();
+} else if (source === this.showAlignmentAnnotations) {
+this.setAnnotationsVisibility ();
+} else if (source === this.showSequenceAnnotations) {
+this.setAnnotationsVisibility ();
+} else if (source === this.sortAnnBySequence) {
+var newState = this.sortAnnBySequence.getState ();
+this.sortAnnByLabel.setState (false);
+this.setAnnotationSortOrder (newState ? jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.SEQUENCE_AND_LABEL : jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.NONE);
+this.setViewportAnnotationOrder ();
+} else if (source === this.sortAnnByLabel) {
+var newState = this.sortAnnByLabel.getState ();
+this.sortAnnBySequence.setState (false);
+this.setAnnotationSortOrder (newState ? jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.LABEL_AND_SEQUENCE : jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.NONE);
+this.setViewportAnnotationOrder ();
+} else if (source === this.showAutoFirst) {
+this.showAutoLast.setState (!this.showAutoFirst.getState ());
+this.setShowAutoCalculatedAbove (this.showAutoFirst.getState ());
+this.setViewportAnnotationOrder ();
+} else if (source === this.showAutoLast) {
+this.showAutoFirst.setState (!this.showAutoLast.getState ());
+this.setShowAutoCalculatedAbove (this.showAutoFirst.getState ());
+this.setViewportAnnotationOrder ();
+} else if (source === this.conservationMenuItem) {
+this.conservationMenuItem_actionPerformed ();
+} else if (source === this.abovePIDThreshold) {
+this.abovePIDThreshold_actionPerformed ();
+} else if (source === this.applyToAllGroups) {
+this.viewport.setColourAppliesToAllGroups (this.applyToAllGroups.getState ());
+} else if (source === this.autoCalculate) {
+this.viewport.autoCalculateConsensus = this.autoCalculate.getState ();
+} else if (source === this.$sortByTree) {
+this.viewport.sortByTree = this.$sortByTree.getState ();
+} else if (source === this.centreColumnLabelFlag) {
+this.centreColumnLabelFlag_stateChanged ();
+} else if (source === this.followMouseOverFlag) {
+this.mouseOverFlag_stateChanged ();
+} else if (source === this.showGroupConsensus) {
+this.showGroupConsensus_actionPerformed ();
+} else if (source === this.showGroupConservation) {
+this.showGroupConservation_actionPerformed ();
+} else if (source === this.showSequenceLogo) {
+this.showSequenceLogo_actionPerformed ();
+} else if (source === this.normSequenceLogo) {
+this.normSequenceLogo_actionPerformed ();
+} else if (source === this.showConsensusHistogram) {
+this.showConsensusHistogram_actionPerformed ();
+} else if (source === this.applyAutoAnnotationSettings) {
+this.applyAutoAnnotationSettings_actionPerformed ();
+}this.alignPanel.paintAlignment (true);
+}, "java.awt.event.ItemEvent");
+Clazz_defineMethod (c$, "setAnnotationsVisibility", 
+ function () {
+var showForAlignment = this.showAlignmentAnnotations.getState ();
+var showForSequences = this.showSequenceAnnotations.getState ();
+for (var aa, $aa = 0, $$aa = this.alignPanel.getAlignment ().getAlignmentAnnotation (); $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {
+var visible = (aa.sequenceRef == null ? showForAlignment : showForSequences);
+aa.visible = visible;
+}
+this.alignPanel.validateAnnotationDimensions (true);
+this.validate ();
+this.repaint ();
+});
+Clazz_defineMethod (c$, "setAnnotationSortOrder", 
+ function (order) {
+this.annotationSortOrder = order;
+}, "jalview.analysis.AnnotationSorter.SequenceAnnotationOrder");
+Clazz_defineMethod (c$, "setViewportAnnotationOrder", 
+ function () {
+this.alignPanel.av.setSortAnnotationsBy (this.annotationSortOrder);
+this.alignPanel.av.setShowAutocalculatedAbove (this.showAutoCalculatedAbove);
+});
+Clazz_defineMethod (c$, "setShowAutoCalculatedAbove", 
+ function (showAbove) {
+this.showAutoCalculatedAbove = showAbove;
+}, "~B");
+Clazz_defineMethod (c$, "mouseOverFlag_stateChanged", 
+ function () {
+this.viewport.setFollowHighlight (this.followMouseOverFlag.getState ());
+});
+Clazz_defineMethod (c$, "centreColumnLabelFlag_stateChanged", 
+ function () {
+this.viewport.centreColumnLabels = this.centreColumnLabelFlag.getState ();
+this.alignPanel.annotationPanel.repaint ();
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (evt) {
+var source = evt.getSource ();
+if (source === this.inputText) {
+this.inputText_actionPerformed ();
+} else if (source === this.$loadTree) {
+this.loadTree_actionPerformed ();
+} else if (source === this.loadApplication) {
+this.launchFullApplication ();
+} else if (source === this.$loadAnnotations) {
+this.loadAnnotations ();
+} else if (source === this.$outputAnnotations) {
+this.outputAnnotations (true);
+} else if (source === this.$outputFeatures) {
+this.outputFeatures (true, "Jalview");
+} else if (source === this.closeMenuItem) {
+this.closeMenuItem_actionPerformed ();
+} else if (source === this.copy) {
+this.copy_actionPerformed ();
+} else if (source === this.undoMenuItem) {
+this.undoMenuItem_actionPerformed ();
+} else if (source === this.redoMenuItem) {
+this.redoMenuItem_actionPerformed ();
+} else if (source === this.inputText) {
+this.inputText_actionPerformed ();
+} else if (source === this.closeMenuItem) {
+this.closeMenuItem_actionPerformed ();
+} else if (source === this.undoMenuItem) {
+this.undoMenuItem_actionPerformed ();
+} else if (source === this.redoMenuItem) {
+this.redoMenuItem_actionPerformed ();
+} else if (source === this.copy) {
+this.copy_actionPerformed ();
+} else if (source === this.pasteNew) {
+this.pasteNew_actionPerformed ();
+} else if (source === this.pasteThis) {
+this.pasteThis_actionPerformed ();
+} else if (source === this.cut) {
+this.cut_actionPerformed ();
+} else if (source === this.$delete) {
+this.delete_actionPerformed ();
+} else if (source === this.grpsFromSelection) {
+this.makeGrpsFromSelection_actionPerformed ();
+} else if (source === this.deleteGroups) {
+this.deleteGroups_actionPerformed ();
+} else if (source === this.selectAllSequenceMenuItem) {
+this.selectAllSequenceMenuItem_actionPerformed ();
+} else if (source === this.deselectAllSequenceMenuItem) {
+this.deselectAllSequenceMenuItem_actionPerformed ();
+} else if (source === this.invertSequenceMenuItem) {
+this.invertSequenceMenuItem_actionPerformed ();
+} else if (source === this.invertColSel) {
+this.viewport.invertColumnSelection ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.remove2LeftMenuItem) {
+this.trimAlignment (true);
+} else if (source === this.remove2RightMenuItem) {
+this.trimAlignment (false);
+} else if (source === this.removeGappedColumnMenuItem) {
+this.removeGappedColumnMenuItem_actionPerformed ();
+} else if (source === this.removeAllGapsMenuItem) {
+this.removeAllGapsMenuItem_actionPerformed ();
+} else if (source === this.findMenuItem) {
+this.findMenuItem_actionPerformed ();
+} else if (source === this.$font) {
+ new jalview.appletgui.FontChooser (this.alignPanel);
+} else if (source === this.$newView) {
+this.newView (null);
+} else if (source === this.showColumns) {
+this.viewport.showAllHiddenColumns ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.showSeqs) {
+this.viewport.showAllHiddenSeqs ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.hideColumns) {
+this.viewport.hideSelectedColumns ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.hideSequences && this.viewport.getSelectionGroup () != null) {
+this.viewport.hideAllSelectedSeqs ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.hideAllButSelection) {
+this.toggleHiddenRegions (false, false);
+this.alignPanel.paintAlignment (true);
+} else if (source === this.hideAllSelection) {
+var sg = this.viewport.getSelectionGroup ();
+this.viewport.expandColSelection (sg, false);
+this.viewport.hideAllSelectedSeqs ();
+this.viewport.hideSelectedColumns ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.showAllHidden) {
+this.viewport.showAllHiddenColumns ();
+this.viewport.showAllHiddenSeqs ();
+this.alignPanel.paintAlignment (true);
+} else if (source === this.showGroupConsensus) {
+this.showGroupConsensus_actionPerformed ();
+} else if (source === this.showGroupConservation) {
+this.showGroupConservation_actionPerformed ();
+} else if (source === this.showSequenceLogo) {
+this.showSequenceLogo_actionPerformed ();
+} else if (source === this.normSequenceLogo) {
+this.normSequenceLogo_actionPerformed ();
+} else if (source === this.showConsensusHistogram) {
+this.showConsensusHistogram_actionPerformed ();
+} else if (source === this.applyAutoAnnotationSettings) {
+this.applyAutoAnnotationSettings_actionPerformed ();
+} else if (source === this.featureSettings) {
+ new jalview.appletgui.FeatureSettings (this.alignPanel);
+} else if (source === this.alProperties) {
+var contents =  new jalview.io.AlignmentProperties (this.viewport.getAlignment ()).formatAsString ();
+var cap =  new jalview.appletgui.CutAndPasteTransfer (false, this);
+cap.setText (contents.toString ());
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.alignment_properties",  Clazz_newArray (-1, [this.getTitle ()])), 400, 250);
+} else if (source === this.overviewMenuItem) {
+this.overviewMenuItem_actionPerformed ();
+} else if (source === this.noColourmenuItem) {
+this.changeColour (null);
+} else if (source === this.clustalColour) {
+this.abovePIDThreshold.setState (false);
+this.changeColour ( new jalview.schemes.ClustalxColourScheme (this.viewport.getAlignment (), null));
+} else if (source === this.zappoColour) {
+this.changeColour ( new jalview.schemes.ZappoColourScheme ());
+} else if (source === this.taylorColour) {
+this.changeColour ( new jalview.schemes.TaylorColourScheme ());
+} else if (source === this.hydrophobicityColour) {
+this.changeColour ( new jalview.schemes.HydrophobicColourScheme ());
+} else if (source === this.helixColour) {
+this.changeColour ( new jalview.schemes.HelixColourScheme ());
+} else if (source === this.strandColour) {
+this.changeColour ( new jalview.schemes.StrandColourScheme ());
+} else if (source === this.turnColour) {
+this.changeColour ( new jalview.schemes.TurnColourScheme ());
+} else if (source === this.buriedColour) {
+this.changeColour ( new jalview.schemes.BuriedColourScheme ());
+} else if (source === this.nucleotideColour) {
+this.changeColour ( new jalview.schemes.NucleotideColourScheme ());
+} else if (source === this.purinePyrimidineColour) {
+this.changeColour ( new jalview.schemes.PurinePyrimidineColourScheme ());
+} else if (source === this.RNAInteractionColour) {
+this.changeColour ( new jalview.schemes.RNAInteractionColourScheme ());
+} else if (source === this.RNAHelixColour) {
+ new jalview.schemes.RNAHelicesColourChooser (this.viewport, this.alignPanel);
+} else if (source === this.modifyPID) {
+this.modifyPID_actionPerformed ();
+} else if (source === this.modifyConservation) {
+this.modifyConservation_actionPerformed ();
+} else if (source === this.userDefinedColour) {
+ new jalview.appletgui.UserDefinedColours (this.alignPanel, null);
+} else if (source === this.PIDColour) {
+this.changeColour ( new jalview.schemes.PIDColourScheme ());
+} else if (source === this.BLOSUM62Colour) {
+this.changeColour ( new jalview.schemes.Blosum62ColourScheme ());
+} else if (source === this.tcoffeeColour) {
+this.changeColour ( new jalview.schemes.TCoffeeColourScheme (this.alignPanel.getAlignment ()));
+} else if (source === this.annotationColour) {
+ new jalview.appletgui.AnnotationColourChooser (this.viewport, this.alignPanel);
+} else if (source === this.annotationColumnSelection) {
+ new jalview.appletgui.AnnotationColumnChooser (this.viewport, this.alignPanel);
+} else if (source === this.sortPairwiseMenuItem) {
+this.sortPairwiseMenuItem_actionPerformed ();
+} else if (source === this.sortIDMenuItem) {
+this.sortIDMenuItem_actionPerformed ();
+} else if (source === this.sortLengthMenuItem) {
+this.sortLengthMenuItem_actionPerformed ();
+} else if (source === this.sortGroupMenuItem) {
+this.sortGroupMenuItem_actionPerformed ();
+} else if (source === this.removeRedundancyMenuItem) {
+this.removeRedundancyMenuItem_actionPerformed ();
+} else if (source === this.pairwiseAlignmentMenuItem) {
+this.pairwiseAlignmentMenuItem_actionPerformed ();
+} else if (source === this.PCAMenuItem) {
+this.PCAMenuItem_actionPerformed ();
+} else if (source === this.averageDistanceTreeMenuItem) {
+this.averageDistanceTreeMenuItem_actionPerformed ();
+} else if (source === this.neighbourTreeMenuItem) {
+this.neighbourTreeMenuItem_actionPerformed ();
+} else if (source === this.njTreeBlosumMenuItem) {
+this.njTreeBlosumMenuItem_actionPerformed ();
+} else if (source === this.avDistanceTreeBlosumMenuItem) {
+this.avTreeBlosumMenuItem_actionPerformed ();
+} else if (source === this.documentation) {
+this.documentation_actionPerformed ();
+} else if (source === this.about) {
+this.about_actionPerformed ();
+}}, "java.awt.event.ActionEvent");
+Clazz_defineMethod (c$, "inputText_actionPerformed", 
+function () {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (true, this);
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.input_cut_paste"), 500, 500);
+});
+Clazz_defineMethod (c$, "outputText_actionPerformed", 
+function (e) {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (true, this);
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.alignment_output_command",  Clazz_newArray (-1, [e.getActionCommand ()])), 600, 500);
+var fr = this.alignPanel.cloneFeatureRenderer ();
+cap.setText ( new jalview.io.AppletFormatAdapter (this.alignPanel).formatSequences (e.getActionCommand (), this.viewport.getAlignment (), this.viewport.getShowJVSuffix ()));
+}, "java.awt.event.ActionEvent");
+Clazz_defineMethod (c$, "loadAnnotations", 
+function () {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (true, this);
+cap.setText (jalview.util.MessageManager.getString ("label.paste_features_annotations_Tcoffee_here"));
+cap.setAnnotationImport ();
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("action.paste_annotations"), 400, 300);
+});
+Clazz_defineMethod (c$, "outputAnnotations", 
+function (displayTextbox) {
+var annotation =  new jalview.io.AnnotationFile ().printAnnotationsForView (this.viewport);
+if (displayTextbox) {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (false, this);
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.annotations"), 600, 500);
+cap.setText (annotation);
+}return annotation;
+}, "~B");
+Clazz_defineMethod (c$, "getDisplayedFeatureCols", 
+ function () {
+if (this.alignPanel.getFeatureRenderer () != null && this.viewport.getFeaturesDisplayed () != null) {
+return this.alignPanel.getFeatureRenderer ().getDisplayedFeatureCols ();
+}return null;
+});
+Clazz_defineMethod (c$, "outputFeatures", 
+function (displayTextbox, format) {
+var features;
+if (format.equalsIgnoreCase ("Jalview")) {
+features =  new jalview.io.FeaturesFile ().printJalviewFormat (this.viewport.getAlignment ().getSequencesArray (), this.getDisplayedFeatureCols ());
+} else {
+features =  new jalview.io.FeaturesFile ().printGFFFormat (this.viewport.getAlignment ().getSequencesArray (), this.getDisplayedFeatureCols ());
+}if (displayTextbox) {
+var frimport = false;
+if (features == null || features.equals ("No Features Visible")) {
+features = "# No features visible - paste some and import them here.";
+frimport = true;
+}var cap =  new jalview.appletgui.CutAndPasteTransfer (frimport, this);
+if (frimport) {
+cap.setAnnotationImport ();
+}var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.features"), 600, 500);
+cap.setText (features);
+} else {
+if (features == null) {
+features = "";
+}}return features;
+}, "~B,~S");
+Clazz_defineMethod (c$, "launchFullApplication", 
+function () {
+var url =  new StringBuffer (this.jalviewServletURL);
+var firstSep = url.lastIndexOf ("?") > url.lastIndexOf ("/") ? "&" : "?";
+url.append (firstSep);
+var applet = this.viewport.applet;
+var s = applet.startupFile;
+url.append ("open=" + this.appendProtocol (s));
+if (this.viewport.applet.features != null) {
+url.append ("&features=");
+url.append (this.appendProtocol (applet.features));
+}if (applet.annotations != null) {
+url.append ("&annotations=");
+url.append (this.appendProtocol (applet.annotations));
+}if (applet.jnetFile != null) {
+url.append ("&annotations=");
+url.append (this.appendProtocol (applet.jnetFile));
+}if (applet.defaultColour != null) {
+url.append ("&colour=" + this.removeWhiteSpace (applet.defaultColour));
+}if (applet.userDefinedColour != null) {
+url.append ("&colour=" + this.removeWhiteSpace (applet.userDefinedColour));
+}if (applet.treeFile != null) {
+url.append ("&tree=" + this.appendProtocol (applet.treeFile));
+}this.showURL (url.toString (), "FULL_APP");
+});
+Clazz_defineMethod (c$, "removeWhiteSpace", 
+function (colour) {
+var sb =  new StringBuffer ();
+for (var i = 0; i < colour.length; i++) {
+if (Character.isWhitespace (colour.charAt (i))) {
+sb.append ("%20");
+} else {
+sb.append (colour.charAt (i));
+}}
+return sb.toString ();
+}, "~S");
+Clazz_defineMethod (c$, "appendProtocol", 
+function (url) {
+try {
+ new java.net.URL (url);
+url = java.net.URLEncoder.encode (url);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, java.net.MalformedURLException)) {
+url = this.viewport.applet.getCodeBase () + url;
+} else {
+throw ex;
+}
+}
+return url;
+}, "~S");
+Clazz_defineMethod (c$, "closeMenuItem_actionPerformed", 
+function () {
+jalview.appletgui.PaintRefresher.RemoveComponent (this.alignPanel);
+if (this.alignPanel.seqPanel != null && this.alignPanel.seqPanel.seqCanvas != null) {
+jalview.appletgui.PaintRefresher.RemoveComponent (this.alignPanel.seqPanel.seqCanvas);
+}if (this.alignPanel.idPanel != null && this.alignPanel.idPanel.idCanvas != null) {
+jalview.appletgui.PaintRefresher.RemoveComponent (this.alignPanel.idPanel.idCanvas);
+}if (jalview.appletgui.PaintRefresher.components.size () == 0 && this.viewport.applet == null) {
+System.exit (0);
+} else {
+}this.viewport = null;
+this.alignPanel = null;
+this.dispose ();
+});
+Clazz_defineMethod (c$, "updateEditMenuBar", 
+function () {
+if (this.viewport.getHistoryList ().size () > 0) {
+this.undoMenuItem.setEnabled (true);
+var command = this.viewport.getHistoryList ().peek ();
+this.undoMenuItem.setLabel (jalview.util.MessageManager.formatMessage ("label.undo_command",  Clazz_newArray (-1, [command.getDescription ()])));
+} else {
+this.undoMenuItem.setEnabled (false);
+this.undoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.undo"));
+}if (this.viewport.getRedoList ().size () > 0) {
+this.redoMenuItem.setEnabled (true);
+var command = this.viewport.getRedoList ().peek ();
+this.redoMenuItem.setLabel (jalview.util.MessageManager.formatMessage ("label.redo_command",  Clazz_newArray (-1, [command.getDescription ()])));
+} else {
+this.redoMenuItem.setEnabled (false);
+this.redoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.redo"));
+}});
+Clazz_overrideMethod (c$, "addHistoryItem", 
+function (command) {
+if (command.getSize () > 0) {
+this.viewport.addToHistoryList (command);
+this.viewport.clearRedoList ();
+this.updateEditMenuBar ();
+this.viewport.updateHiddenColumns ();
+}}, "jalview.commands.CommandI");
+Clazz_defineMethod (c$, "undoMenuItem_actionPerformed", 
+function () {
+if (this.viewport.getHistoryList ().isEmpty ()) {
+return;
+}var command = this.viewport.getHistoryList ().pop ();
+this.viewport.addToRedoList (command);
+command.undoCommand (null);
+var originalSource = this.getOriginatingSource (command);
+if (originalSource !== this.viewport) {
+System.err.println ("Warning: Viewport object mismatch whilst undoing");
+}originalSource.updateHiddenColumns ();
+this.updateEditMenuBar ();
+originalSource.firePropertyChange ("alignment", null, originalSource.getAlignment ().getSequences ());
+});
+Clazz_defineMethod (c$, "redoMenuItem_actionPerformed", 
+function () {
+if (this.viewport.getRedoList ().isEmpty ()) {
+return;
+}var command = this.viewport.getRedoList ().pop ();
+this.viewport.addToHistoryList (command);
+command.doCommand (null);
+var originalSource = this.getOriginatingSource (command);
+if (originalSource !== this.viewport) {
+System.err.println ("Warning: Viewport object mismatch whilst re-doing");
+}originalSource.updateHiddenColumns ();
+this.updateEditMenuBar ();
+originalSource.firePropertyChange ("alignment", null, originalSource.getAlignment ().getSequences ());
+});
+Clazz_defineMethod (c$, "getOriginatingSource", 
+function (command) {
+var originalSource = null;
+var al = null;
+if (Clazz_instanceOf (command, jalview.commands.EditCommand)) {
+var editCommand = command;
+al = editCommand.getAlignment ();
+var comps = jalview.appletgui.PaintRefresher.components.get (this.viewport.getSequenceSetId ());
+for (var i = 0; i < comps.size (); i++) {
+if (Clazz_instanceOf (comps.elementAt (i), jalview.appletgui.AlignmentPanel)) {
+if (al === (comps.elementAt (i)).av.getAlignment ()) {
+originalSource = (comps.elementAt (i)).av;
+break;
+}}}
+}if (originalSource == null) {
+if (al != null) {
+jalview.appletgui.PaintRefresher.validateSequences (al, this.viewport.getAlignment ());
+}originalSource = this.viewport;
+}return originalSource;
+}, "jalview.commands.CommandI");
+Clazz_defineMethod (c$, "moveSelectedSequences", 
+function (up) {
+var sg = this.viewport.getSelectionGroup ();
+if (sg == null) {
+return;
+}this.viewport.getAlignment ().moveSelectedSequencesByOne (sg, up ? null : this.viewport.getHiddenRepSequences (), up);
+this.alignPanel.paintAlignment (true);
+var complement = this.viewport.getCodingComplement ();
+if (complement != null) {
+var mappedSelection = jalview.util.MappingUtils.mapSequenceGroup (sg, this.viewport, complement);
+complement.getAlignment ().moveSelectedSequencesByOne (mappedSelection, up ? null : complement.getHiddenRepSequences (), up);
+}}, "~B");
+Clazz_defineMethod (c$, "slideSequences", 
+function (right, size) {
+var sg =  new java.util.Vector ();
+if (this.viewport.cursorMode) {
+sg.add (this.viewport.getAlignment ().getSequenceAt (this.alignPanel.seqPanel.seqCanvas.cursorY));
+} else if (this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () != this.viewport.getAlignment ().getHeight ()) {
+sg = this.viewport.getSelectionGroup ().getSequences (this.viewport.getHiddenRepSequences ());
+}if (sg.size () < 1) {
+return;
+}var invertGroup =  new java.util.Vector ();
+for (var i = 0; i < this.viewport.getAlignment ().getHeight (); i++) {
+if (!sg.contains (this.viewport.getAlignment ().getSequenceAt (i))) {
+invertGroup.addElement (this.viewport.getAlignment ().getSequenceAt (i));
+}}
+var seqs1 = sg.toArray ( new Array (sg.size ()));
+var seqs2 = invertGroup.toArray ( new Array (invertGroup.size ()));
+for (var i = 0; i < invertGroup.size (); i++) {
+seqs2[i] = invertGroup.elementAt (i);
+}
+var ssc;
+if (right) {
+ssc =  new jalview.commands.SlideSequencesCommand ("Slide Sequences", seqs2, seqs1, size, this.viewport.getGapCharacter ());
+} else {
+ssc =  new jalview.commands.SlideSequencesCommand ("Slide Sequences", seqs1, seqs2, size, this.viewport.getGapCharacter ());
+}var groupAdjustment = 0;
+if (ssc.getGapsInsertedBegin () && right) {
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.moveCursor (size, 0);
+} else {
+groupAdjustment = size;
+}} else if (!ssc.getGapsInsertedBegin () && !right) {
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.moveCursor (-size, 0);
+} else {
+groupAdjustment = -size;
+}}if (groupAdjustment != 0) {
+this.viewport.getSelectionGroup ().setStartRes (this.viewport.getSelectionGroup ().getStartRes () + groupAdjustment);
+this.viewport.getSelectionGroup ().setEndRes (this.viewport.getSelectionGroup ().getEndRes () + groupAdjustment);
+}var appendHistoryItem = false;
+var historyList = this.viewport.getHistoryList ();
+if (historyList != null && historyList.size () > 0 && Clazz_instanceOf (historyList.peek (), jalview.commands.SlideSequencesCommand)) {
+appendHistoryItem = ssc.appendSlideCommand (historyList.peek ());
+}if (!appendHistoryItem) {
+this.addHistoryItem (ssc);
+}this.repaint ();
+}, "~B,~N");
+Clazz_defineMethod (c$, "copy_actionPerformed", 
+function () {
+if (this.viewport.getSelectionGroup () == null) {
+return;
+}var sg = this.viewport.getSelectionGroup ();
+jalview.appletgui.AlignFrame.copiedSequences =  new StringBuffer ();
+var orderedSeqs =  new java.util.HashMap ();
+for (var i = 0; i < sg.getSize (); i++) {
+var seq = sg.getSequenceAt (i);
+var index = this.viewport.getAlignment ().findIndex (seq);
+orderedSeqs.put (new Integer (index), seq);
+}
+var index = 0;
+var startRes;
+var endRes;
+var ch;
+if (this.viewport.hasHiddenColumns () && this.viewport.getSelectionGroup () != null) {
+jalview.appletgui.AlignFrame.copiedHiddenColumns =  new java.util.Vector ();
+var hiddenOffset = this.viewport.getSelectionGroup ().getStartRes ();
+for (var region, $region = this.viewport.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
+jalview.appletgui.AlignFrame.copiedHiddenColumns.addElement ( Clazz_newIntArray (-1, [region[0] - hiddenOffset, region[1] - hiddenOffset]));
+}
+} else {
+jalview.appletgui.AlignFrame.copiedHiddenColumns = null;
+}for (var i = 0; i < sg.getSize (); i++) {
+var seq = null;
+while (seq == null) {
+if (orderedSeqs.containsKey (new Integer (index))) {
+seq = orderedSeqs.get (new Integer (index));
+index++;
+break;
+} else {
+index++;
+}}
+startRes = seq.findPosition (sg.getStartRes ());
+endRes = 0;
+for (var j = 0; j < sg.getEndRes () + 1 && j < seq.getLength (); j++) {
+ch = seq.getCharAt (j);
+if (!jalview.util.Comparison.isGap ((ch))) {
+endRes++;
+}}
+if (endRes > 0) {
+endRes += seq.getStart () - 1;
+}jalview.appletgui.AlignFrame.copiedSequences.append (seq.getName () + "\t" + startRes + "\t" + endRes + "\t" + seq.getSequenceAsString (sg.getStartRes (), sg.getEndRes () + 1) + "\n");
+}
+});
+Clazz_defineMethod (c$, "pasteNew_actionPerformed", 
+function () {
+this.paste (true);
+});
+Clazz_defineMethod (c$, "pasteThis_actionPerformed", 
+function () {
+this.paste (false);
+});
+Clazz_defineMethod (c$, "paste", 
+function (newAlignment) {
+try {
+if (jalview.appletgui.AlignFrame.copiedSequences == null) {
+return;
+}var st =  new java.util.StringTokenizer (jalview.appletgui.AlignFrame.copiedSequences.toString ());
+var seqs =  new java.util.Vector ();
+while (st.hasMoreElements ()) {
+var name = st.nextToken ();
+var start = Integer.parseInt (st.nextToken ());
+var end = Integer.parseInt (st.nextToken ());
+seqs.addElement ( new jalview.datamodel.Sequence (name, st.nextToken (), start, end));
+}
+var newSeqs =  new Array (seqs.size ());
+for (var i = 0; i < seqs.size (); i++) {
+newSeqs[i] = seqs.elementAt (i);
+}
+if (newAlignment) {
+var newtitle = jalview.util.MessageManager.getString ("label.copied_sequences");
+if (this.getTitle ().startsWith (jalview.util.MessageManager.getString ("label.copied_sequences"))) {
+newtitle = this.getTitle ();
+} else {
+newtitle = newtitle.concat (jalview.util.MessageManager.formatMessage ("label.from_msname",  Clazz_newArray (-1, [this.getTitle ()])));
+}var af =  new jalview.appletgui.AlignFrame ( new jalview.datamodel.Alignment (newSeqs), this.viewport.applet, newtitle, false);
+if (jalview.appletgui.AlignFrame.copiedHiddenColumns != null) {
+for (var i = 0; i < jalview.appletgui.AlignFrame.copiedHiddenColumns.size (); i++) {
+var region = jalview.appletgui.AlignFrame.copiedHiddenColumns.elementAt (i);
+af.viewport.hideColumns (region[0], region[1]);
+}
+}jalview.bin.JalviewLite.addFrame (af, newtitle, this.frameWidth, this.frameHeight);
+} else {
+this.addSequences (newSeqs);
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}, "~B");
+Clazz_defineMethod (c$, "addSequences", 
+function (seqs) {
+for (var i = 0; i < seqs.length; i++) {
+this.viewport.getAlignment ().addSequence (seqs[i]);
+}
+this.addHistoryItem ( new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("label.add_sequences"), jalview.commands.EditCommand.Action.PASTE, seqs, 0, this.viewport.getAlignment ().getWidth (), this.viewport.getAlignment ()));
+this.viewport.setEndSeq (this.viewport.getAlignment ().getHeight ());
+this.viewport.getAlignment ().getWidth ();
+this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
+}, "~A");
+Clazz_defineMethod (c$, "cut_actionPerformed", 
+function () {
+this.copy_actionPerformed ();
+this.delete_actionPerformed ();
+});
+Clazz_defineMethod (c$, "delete_actionPerformed", 
+function () {
+var sg = this.viewport.getSelectionGroup ();
+if (sg == null) {
+return;
+}var seqs =  new java.util.Vector ();
+var seq;
+for (var i = 0; i < sg.getSize (); i++) {
+seq = sg.getSequenceAt (i);
+seqs.addElement (seq);
+}
+if (sg.getSize () == this.viewport.getAlignment ().getHeight ()) {
+this.viewport.getColumnSelection ().removeElements (sg.getStartRes (), sg.getEndRes () + 1);
+}var cut =  new Array (seqs.size ());
+for (var i = 0; i < seqs.size (); i++) {
+cut[i] = seqs.elementAt (i);
+}
+this.addHistoryItem ( new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("label.cut_sequences"), jalview.commands.EditCommand.Action.CUT, cut, sg.getStartRes (), sg.getEndRes () - sg.getStartRes () + 1, this.viewport.getAlignment ()));
+this.viewport.setSelectionGroup (null);
+this.viewport.getAlignment ().deleteGroup (sg);
+this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
+if (this.viewport.getAlignment ().getHeight () < 1) {
+this.setVisible (false);
+}this.viewport.sendSelection ();
+});
+Clazz_defineMethod (c$, "showGroupConsensus_actionPerformed", 
+function () {
+this.viewport.setShowGroupConsensus (this.showGroupConsensus.getState ());
+this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
+});
+Clazz_defineMethod (c$, "showGroupConservation_actionPerformed", 
+function () {
+this.viewport.setShowGroupConservation (this.showGroupConservation.getState ());
+this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
+});
+Clazz_defineMethod (c$, "showConsensusHistogram_actionPerformed", 
+function () {
+this.viewport.setShowConsensusHistogram (this.showConsensusHistogram.getState ());
+this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
+});
+Clazz_defineMethod (c$, "showSequenceLogo_actionPerformed", 
+function () {
+this.viewport.setShowSequenceLogo (this.showSequenceLogo.getState ());
+this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
+});
+Clazz_defineMethod (c$, "normSequenceLogo_actionPerformed", 
+function () {
+this.showSequenceLogo.setState (true);
+this.viewport.setShowSequenceLogo (true);
+this.viewport.setNormaliseSequenceLogo (this.normSequenceLogo.getState ());
+this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
+});
+Clazz_defineMethod (c$, "applyAutoAnnotationSettings_actionPerformed", 
+function () {
+this.alignPanel.updateAnnotation (this.applyAutoAnnotationSettings.getState ());
+});
+Clazz_defineMethod (c$, "makeGrpsFromSelection_actionPerformed", 
+function () {
+if (this.avc.makeGroupsFromSelection ()) {
+jalview.appletgui.PaintRefresher.Refresh (this, this.viewport.getSequenceSetId ());
+this.alignPanel.updateAnnotation ();
+this.alignPanel.paintAlignment (true);
+}});
+Clazz_defineMethod (c$, "createGroup_actionPerformed", 
+function () {
+this.avc.createGroup ();
+});
+Clazz_defineMethod (c$, "unGroup_actionPerformed", 
+function () {
+if (this.avc.unGroup ()) {
+this.alignPanel.alignmentChanged ();
+}});
+Clazz_defineMethod (c$, "deleteGroups_actionPerformed", 
+function () {
+if (this.avc.deleteGroups ()) {
+this.alignPanel.alignmentChanged ();
+}});
+Clazz_defineMethod (c$, "selectAllSequenceMenuItem_actionPerformed", 
+function () {
+var sg =  new jalview.datamodel.SequenceGroup ();
+for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {
+sg.addSequence (this.viewport.getAlignment ().getSequenceAt (i), false);
+}
+sg.setEndRes (this.viewport.getAlignment ().getWidth () - 1);
+this.viewport.setSelectionGroup (sg);
+this.alignPanel.paintAlignment (true);
+jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());
+this.viewport.sendSelection ();
+});
+Clazz_defineMethod (c$, "deselectAllSequenceMenuItem_actionPerformed", 
+function () {
+if (this.viewport.cursorMode) {
+this.alignPanel.seqPanel.keyboardNo1 = null;
+this.alignPanel.seqPanel.keyboardNo2 = null;
+}this.viewport.setSelectionGroup (null);
+this.viewport.getColumnSelection ().clear ();
+this.viewport.setSelectionGroup (null);
+this.alignPanel.idPanel.idCanvas.searchResults = null;
+this.alignPanel.seqPanel.seqCanvas.highlightSearchResults (null);
+this.alignPanel.paintAlignment (true);
+jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());
+this.viewport.sendSelection ();
+});
+Clazz_defineMethod (c$, "invertSequenceMenuItem_actionPerformed", 
+function () {
+var sg = this.viewport.getSelectionGroup ();
+for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {
+sg.addOrRemove (this.viewport.getAlignment ().getSequenceAt (i), false);
+}
+jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());
+this.viewport.sendSelection ();
+});
+Clazz_defineMethod (c$, "invertColSel_actionPerformed", 
+function () {
+this.viewport.invertColumnSelection ();
+this.alignPanel.paintAlignment (true);
+jalview.appletgui.PaintRefresher.Refresh (this.alignPanel, this.viewport.getSequenceSetId ());
+this.viewport.sendSelection ();
+});
+Clazz_defineMethod (c$, "trimAlignment", 
+function (trimLeft) {
+var colSel = this.viewport.getColumnSelection ();
+var column;
+if (colSel.size () > 0) {
+if (trimLeft) {
+column = colSel.getMin ();
+} else {
+column = colSel.getMax ();
+}var seqs;
+if (this.viewport.getSelectionGroup () != null) {
+seqs = this.viewport.getSelectionGroup ().getSequencesAsArray (this.viewport.getHiddenRepSequences ());
+} else {
+seqs = this.viewport.getAlignment ().getSequencesArray ();
+}var trimRegion;
+if (trimLeft) {
+trimRegion =  new jalview.commands.TrimRegionCommand ("Remove Left", jalview.commands.TrimRegionCommand.TRIM_LEFT, seqs, column, this.viewport.getAlignment (), this.viewport.getColumnSelection (), this.viewport.getSelectionGroup ());
+this.viewport.setStartRes (0);
+} else {
+trimRegion =  new jalview.commands.TrimRegionCommand ("Remove Right", jalview.commands.TrimRegionCommand.TRIM_RIGHT, seqs, column, this.viewport.getAlignment (), this.viewport.getColumnSelection (), this.viewport.getSelectionGroup ());
+}this.setStatus (jalview.util.MessageManager.formatMessage ("label.removed_columns",  Clazz_newArray (-1, [Integer.$valueOf (trimRegion.getSize ()).toString ()])));
+this.addHistoryItem (trimRegion);
+for (var sg, $sg = this.viewport.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if ((trimLeft && !sg.adjustForRemoveLeft (column)) || (!trimLeft && !sg.adjustForRemoveRight (column))) {
+this.viewport.getAlignment ().deleteGroup (sg);
+}}
+this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
+}}, "~B");
+Clazz_defineMethod (c$, "removeGappedColumnMenuItem_actionPerformed", 
+function () {
+var start = 0;
+var end = this.viewport.getAlignment ().getWidth () - 1;
+var seqs;
+if (this.viewport.getSelectionGroup () != null) {
+seqs = this.viewport.getSelectionGroup ().getSequencesAsArray (this.viewport.getHiddenRepSequences ());
+start = this.viewport.getSelectionGroup ().getStartRes ();
+end = this.viewport.getSelectionGroup ().getEndRes ();
+} else {
+seqs = this.viewport.getAlignment ().getSequencesArray ();
+}var removeGapCols =  new jalview.commands.RemoveGapColCommand ("Remove Gapped Columns", seqs, start, end, this.viewport.getAlignment ());
+this.addHistoryItem (removeGapCols);
+this.setStatus (jalview.util.MessageManager.formatMessage ("label.removed_empty_columns",  Clazz_newArray (-1, [Integer.$valueOf (removeGapCols.getSize ()).toString ()])));
+var seq = this.viewport.getAlignment ().getSequenceAt (0);
+var startRes = seq.findPosition (this.viewport.startRes);
+this.viewport.setStartRes (seq.findIndex (startRes) - 1);
+this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
+});
+Clazz_defineMethod (c$, "removeAllGapsMenuItem_actionPerformed", 
+function () {
+var start = 0;
+var end = this.viewport.getAlignment ().getWidth () - 1;
+var seqs;
+if (this.viewport.getSelectionGroup () != null) {
+seqs = this.viewport.getSelectionGroup ().getSequencesAsArray (this.viewport.getHiddenRepSequences ());
+start = this.viewport.getSelectionGroup ().getStartRes ();
+end = this.viewport.getSelectionGroup ().getEndRes ();
+} else {
+seqs = this.viewport.getAlignment ().getSequencesArray ();
+}var seq = this.viewport.getAlignment ().getSequenceAt (0);
+var startRes = seq.findPosition (this.viewport.startRes);
+this.addHistoryItem ( new jalview.commands.RemoveGapsCommand ("Remove Gaps", seqs, start, end, this.viewport.getAlignment ()));
+this.viewport.setStartRes (seq.findIndex (startRes) - 1);
+this.viewport.firePropertyChange ("alignment", null, this.viewport.getAlignment ().getSequences ());
+});
+Clazz_defineMethod (c$, "findMenuItem_actionPerformed", 
+function () {
+ new jalview.appletgui.Finder (this.alignPanel);
+});
+Clazz_defineMethod (c$, "newView", 
+function (viewtitle) {
+var newal;
+if (this.viewport.hasHiddenRows ()) {
+newal =  new jalview.datamodel.Alignment (this.viewport.getAlignment ().getHiddenSequences ().getFullAlignment ().getSequencesArray ());
+} else {
+newal =  new jalview.datamodel.Alignment (this.viewport.getAlignment ().getSequencesArray ());
+}if (this.viewport.getAlignment ().getAlignmentAnnotation () != null) {
+for (var i = 0; i < this.viewport.getAlignment ().getAlignmentAnnotation ().length; i++) {
+if (!this.viewport.getAlignment ().getAlignmentAnnotation ()[i].autoCalculated) {
+newal.addAnnotation (this.viewport.getAlignment ().getAlignmentAnnotation ()[i]);
+}}
+}var newaf =  new jalview.appletgui.AlignFrame (newal, this.viewport.applet, "", false);
+newaf.viewport.setSequenceSetId (this.alignPanel.av.getSequenceSetId ());
+jalview.appletgui.PaintRefresher.Register (this.alignPanel, this.alignPanel.av.getSequenceSetId ());
+jalview.appletgui.PaintRefresher.Register (newaf.alignPanel, newaf.alignPanel.av.getSequenceSetId ());
+jalview.appletgui.PaintRefresher.Register (newaf.alignPanel.idPanel.idCanvas, newaf.alignPanel.av.getSequenceSetId ());
+jalview.appletgui.PaintRefresher.Register (newaf.alignPanel.seqPanel.seqCanvas, newaf.alignPanel.av.getSequenceSetId ());
+var comps = jalview.appletgui.PaintRefresher.components.get (this.viewport.getSequenceSetId ());
+var viewSize = -1;
+for (var i = 0; i < comps.size (); i++) {
+if (Clazz_instanceOf (comps.elementAt (i), jalview.appletgui.AlignmentPanel)) {
+viewSize++;
+}}
+var title =  String.instantialize (this.getTitle ());
+if (viewtitle != null) {
+title = viewtitle + " ( " + title + ")";
+} else {
+if (title.indexOf ("(View") > -1) {
+title = title.substring (0, title.indexOf ("(View"));
+}title += "(View " + viewSize + ")";
+}newaf.setTitle (title.toString ());
+newaf.viewport.setHistoryList (this.viewport.getHistoryList ());
+newaf.viewport.setRedoList (this.viewport.getRedoList ());
+return newaf;
+}, "~S");
+Clazz_defineMethod (c$, "getFeatureGroups", 
+function () {
+var fr = null;
+if (this.alignPanel != null && (fr = this.alignPanel.getFeatureRenderer ()) != null) {
+var gps = fr.getFeatureGroups ();
+var _gps = gps.toArray ( new Array (gps.size ()));
+return _gps;
+}return null;
+});
+Clazz_defineMethod (c$, "getFeatureGroupsOfState", 
+function (visible) {
+var fr = null;
+if (this.alignPanel != null && (fr = this.alignPanel.getFeatureRenderer ()) != null) {
+var gps = fr.getGroups (visible);
+var _gps = gps.toArray ( new Array (gps.size ()));
+return _gps;
+}return null;
+}, "~B");
+Clazz_defineMethod (c$, "setFeatureGroupState", 
+function (groups, state) {
+var fr = null;
+this.sequenceFeatures.setState (true);
+this.viewport.setShowSequenceFeatures (true);
+if (this.alignPanel != null && (fr = this.alignPanel.getFeatureRenderer ()) != null) {
+fr.setGroupVisibility (java.util.Arrays.asList (groups), state);
+this.alignPanel.seqPanel.seqCanvas.repaint ();
+if (this.alignPanel.overviewPanel != null) {
+this.alignPanel.overviewPanel.updateOverviewImage ();
+}}}, "~A,~B");
+Clazz_defineMethod (c$, "seqLimits_itemStateChanged", 
+function () {
+this.viewport.setShowJVSuffix (this.seqLimits.getState ());
+this.alignPanel.fontChanged ();
+this.alignPanel.paintAlignment (true);
+});
+Clazz_defineMethod (c$, "colourTextMenuItem_actionPerformed", 
+function () {
+this.viewport.setColourText (this.colourTextMenuItem.getState ());
+this.alignPanel.paintAlignment (true);
+});
+Clazz_defineMethod (c$, "displayNonconservedMenuItem_actionPerformed", 
+function () {
+this.viewport.setShowUnconserved (this.displayNonconservedMenuItem.getState ());
+this.alignPanel.paintAlignment (true);
+});
+Clazz_defineMethod (c$, "wrapMenuItem_actionPerformed", 
+function () {
+this.viewport.setWrapAlignment (this.wrapMenuItem.getState ());
+this.alignPanel.setWrapAlignment (this.wrapMenuItem.getState ());
+this.scaleAbove.setEnabled (this.wrapMenuItem.getState ());
+this.scaleLeft.setEnabled (this.wrapMenuItem.getState ());
+this.scaleRight.setEnabled (this.wrapMenuItem.getState ());
+this.alignPanel.paintAlignment (true);
+});
+Clazz_defineMethod (c$, "overviewMenuItem_actionPerformed", 
+function () {
+if (this.alignPanel.overviewPanel != null) {
+return;
+}var frame =  new awt2swing.Frame ();
+var overview =  new jalview.appletgui.OverviewPanel (this.alignPanel);
+frame.add (overview);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.overview_params",  Clazz_newArray (-1, [this.getTitle ()])), overview.getPreferredSize ().width, overview.getPreferredSize ().height + 50);
+frame.pack ();
+var ap = this.alignPanel;
+frame.addWindowListener (((Clazz_isClassDefined ("jalview.appletgui.AlignFrame$1") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$1$ ()), Clazz_innerTypeInstance (jalview.appletgui.AlignFrame$1, this, Clazz_cloneFinals ("ap", ap))));
+this.alignPanel.setOverviewPanel (overview);
+});
+Clazz_overrideMethod (c$, "changeColour", 
+function (cs) {
+var threshold = 0;
+if (cs != null) {
+if (this.viewport.getAbovePIDThreshold ()) {
+this.viewport.setThreshold (jalview.appletgui.SliderPanel.setPIDSliderSource (this.alignPanel, cs, "Background"));
+}if (this.viewport.getConservationSelected ()) {
+cs.setConservationApplied (true);
+this.viewport.setIncrement (jalview.appletgui.SliderPanel.setConservationSlider (this.alignPanel, cs, "Background"));
+} else {
+cs.setConservationApplied (false);
+}}this.viewport.setGlobalColourScheme (cs);
+if (this.alignPanel.getOverviewPanel () != null) {
+this.alignPanel.getOverviewPanel ().updateOverviewImage ();
+}jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.viewport.applet).sequenceColoursChanged (this.alignPanel);
+this.alignPanel.paintAlignment (true);
+}, "jalview.schemes.ColourSchemeI");
+Clazz_defineMethod (c$, "modifyPID_actionPerformed", 
+function () {
+if (this.viewport.getAbovePIDThreshold () && this.viewport.getGlobalColourScheme () != null) {
+jalview.appletgui.SliderPanel.setPIDSliderSource (this.alignPanel, this.viewport.getGlobalColourScheme (), "Background");
+jalview.appletgui.SliderPanel.showPIDSlider ();
+}});
+Clazz_defineMethod (c$, "modifyConservation_actionPerformed", 
+function () {
+if (this.viewport.getConservationSelected () && this.viewport.getGlobalColourScheme () != null) {
+jalview.appletgui.SliderPanel.setConservationSlider (this.alignPanel, this.viewport.getGlobalColourScheme (), "Background");
+jalview.appletgui.SliderPanel.showConservationSlider ();
+}});
+Clazz_defineMethod (c$, "conservationMenuItem_actionPerformed", 
+function () {
+this.viewport.setConservationSelected (this.conservationMenuItem.getState ());
+this.viewport.setAbovePIDThreshold (false);
+this.abovePIDThreshold.setState (false);
+this.changeColour (this.viewport.getGlobalColourScheme ());
+this.modifyConservation_actionPerformed ();
+});
+Clazz_defineMethod (c$, "abovePIDThreshold_actionPerformed", 
+function () {
+this.viewport.setAbovePIDThreshold (this.abovePIDThreshold.getState ());
+this.conservationMenuItem.setState (false);
+this.viewport.setConservationSelected (false);
+this.changeColour (this.viewport.getGlobalColourScheme ());
+this.modifyPID_actionPerformed ();
+});
+Clazz_defineMethod (c$, "sortPairwiseMenuItem_actionPerformed", 
+function () {
+var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortByPID (this.viewport.getAlignment (), this.viewport.getAlignment ().getSequenceAt (0), null);
+this.addHistoryItem ( new jalview.commands.OrderCommand ("Pairwise Sort", oldOrder, this.viewport.getAlignment ()));
+this.alignPanel.paintAlignment (true);
+});
+Clazz_defineMethod (c$, "sortIDMenuItem_actionPerformed", 
+function () {
+var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortByID (this.viewport.getAlignment ());
+this.addHistoryItem ( new jalview.commands.OrderCommand ("ID Sort", oldOrder, this.viewport.getAlignment ()));
+this.alignPanel.paintAlignment (true);
+});
+Clazz_defineMethod (c$, "sortLengthMenuItem_actionPerformed", 
+function () {
+var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortByLength (this.viewport.getAlignment ());
+this.addHistoryItem ( new jalview.commands.OrderCommand ("Length Sort", oldOrder, this.viewport.getAlignment ()));
+this.alignPanel.paintAlignment (true);
+});
+Clazz_defineMethod (c$, "sortGroupMenuItem_actionPerformed", 
+function () {
+var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortByGroup (this.viewport.getAlignment ());
+this.addHistoryItem ( new jalview.commands.OrderCommand ("Group Sort", oldOrder, this.viewport.getAlignment ()));
+this.alignPanel.paintAlignment (true);
+});
+Clazz_defineMethod (c$, "removeRedundancyMenuItem_actionPerformed", 
+function () {
+ new jalview.appletgui.RedundancyPanel (this.alignPanel);
+});
+Clazz_defineMethod (c$, "pairwiseAlignmentMenuItem_actionPerformed", 
+function () {
+if (this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () > 1) {
+var frame =  new awt2swing.Frame ();
+frame.add ( new jalview.appletgui.PairwiseAlignPanel (this.alignPanel));
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("action.pairwise_alignment"), 600, 500);
+}});
+Clazz_defineMethod (c$, "PCAMenuItem_actionPerformed", 
+function () {
+if (!this.viewport.getAlignment ().isAligned (false)) {
+var current;
+var Width = this.viewport.getAlignment ().getWidth ();
+for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {
+current = this.viewport.getAlignment ().getSequenceAt (i);
+if (current.getLength () < Width) {
+current.insertCharAt (Width - 1, this.viewport.getGapCharacter ());
+}}
+this.alignPanel.paintAlignment (true);
+}if ((this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () < 4 && this.viewport.getSelectionGroup ().getSize () > 0) || this.viewport.getAlignment ().getHeight () < 4) {
+return;
+}try {
+ new jalview.appletgui.PCAPanel (this.viewport);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, OutOfMemoryError)) {
+} else {
+throw ex;
+}
+}
+});
+Clazz_defineMethod (c$, "averageDistanceTreeMenuItem_actionPerformed", 
+function () {
+this.NewTreePanel ("AV", "PID", "Average distance tree using PID");
+});
+Clazz_defineMethod (c$, "neighbourTreeMenuItem_actionPerformed", 
+function () {
+this.NewTreePanel ("NJ", "PID", "Neighbour joining tree using PID");
+});
+Clazz_defineMethod (c$, "njTreeBlosumMenuItem_actionPerformed", 
+function () {
+this.NewTreePanel ("NJ", "BL", "Neighbour joining tree using BLOSUM62");
+});
+Clazz_defineMethod (c$, "avTreeBlosumMenuItem_actionPerformed", 
+function () {
+this.NewTreePanel ("AV", "BL", "Average distance tree using BLOSUM62");
+});
+Clazz_defineMethod (c$, "NewTreePanel", 
+function (type, pwType, title) {
+if (!this.viewport.getAlignment ().isAligned (false)) {
+var current;
+var Width = this.viewport.getAlignment ().getWidth ();
+for (var i = 0; i < this.viewport.getAlignment ().getSequences ().size (); i++) {
+current = this.viewport.getAlignment ().getSequenceAt (i);
+if (current.getLength () < Width) {
+current.insertCharAt (Width - 1, this.viewport.getGapCharacter ());
+}}
+this.alignPanel.paintAlignment (true);
+}if ((this.viewport.getSelectionGroup () != null && this.viewport.getSelectionGroup ().getSize () > 1) || (this.viewport.getAlignment ().getHeight () > 1)) {
+var tp =  new jalview.appletgui.TreePanel (this.alignPanel, type, pwType);
+this.addTreeMenuItem (tp, title);
+jalview.bin.JalviewLite.addFrame (tp, title, 600, 500);
+}}, "~S,~S,~S");
+Clazz_defineMethod (c$, "loadTree_actionPerformed", 
+function () {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (true, this);
+cap.setText (jalview.util.MessageManager.getString ("label.paste_newick_tree_file"));
+cap.setTreeImport ();
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.paste_newick_file"), 400, 300);
+});
+Clazz_defineMethod (c$, "loadTree", 
+function (tree, treeFile) {
+var tp =  new jalview.appletgui.TreePanel (this.alignPanel, treeFile, jalview.util.MessageManager.getString ("label.load_tree_from_file"), tree);
+jalview.bin.JalviewLite.addFrame (tp, treeFile, 600, 500);
+this.addTreeMenuItem (tp, treeFile);
+}, "jalview.io.NewickFile,~S");
+Clazz_defineMethod (c$, "sortByTree", 
+function (treePanel, title) {
+var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortByTree (this.viewport.getAlignment (), treePanel.getTree ());
+this.addHistoryItem ( new jalview.commands.OrderCommand (jalview.util.MessageManager.formatMessage ("label.order_by_params",  Clazz_newArray (-1, [title])), oldOrder, this.viewport.getAlignment ()));
+this.alignPanel.paintAlignment (true);
+}, "jalview.appletgui.TreePanel,~S");
+Clazz_defineMethod (c$, "addTreeMenuItem", 
+function (treePanel, title) {
+var item =  new awt2swing.MenuItem (title);
+this.sortByTreeMenu.add (item);
+item.addActionListener (((Clazz_isClassDefined ("jalview.appletgui.AlignFrame$2") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$2$ ()), Clazz_innerTypeInstance (jalview.appletgui.AlignFrame$2, this, Clazz_cloneFinals ("treePanel", treePanel, "title", title))));
+treePanel.addWindowListener (((Clazz_isClassDefined ("jalview.appletgui.AlignFrame$3") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$3$ ()), Clazz_innerTypeInstance (jalview.appletgui.AlignFrame$3, this, Clazz_cloneFinals ("treePanel", treePanel, "title", title, "item", item))));
+}, "jalview.appletgui.TreePanel,~S");
+Clazz_defineMethod (c$, "sortBy", 
+function (alorder, undoname) {
+var oldOrder = this.viewport.getAlignment ().getSequencesArray ();
+if ((this.viewport.applet, jalview.bin.JalviewLite).debug) {
+System.err.println ("Sorting " + alorder.getOrder ().size () + " in alignment '" + this.getTitle () + "'");
+}jalview.analysis.AlignmentSorter.sortBy (this.viewport.getAlignment (), alorder);
+if (undoname != null) {
+this.addHistoryItem ( new jalview.commands.OrderCommand (undoname, oldOrder, this.viewport.getAlignment ()));
+}this.alignPanel.paintAlignment (true);
+return true;
+}, "jalview.datamodel.AlignmentOrder,~S");
+Clazz_defineMethod (c$, "documentation_actionPerformed", 
+function () {
+this.alignPanel.av.applet.openJalviewHelpUrl ();
+});
+Clazz_defineMethod (c$, "about_actionPerformed", 
+function () {
+if (!Clazz_isClassDefined ("jalview.appletgui.AlignFrame$1AboutPanel")) {
+jalview.appletgui.AlignFrame.$AlignFrame$1AboutPanel$ ();
+}
+var frame =  new awt2swing.Frame ();
+frame.add (Clazz_innerTypeInstance (jalview.appletgui.AlignFrame$1AboutPanel, this, null, jalview.bin.JalviewLite.getVersion (), jalview.bin.JalviewLite.getBuildDate ()));
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.jalview"), 580, 220);
+});
+Clazz_defineMethod (c$, "showURL", 
+function (url, target) {
+if (this.viewport.applet == null) {
+System.out.println ("Not running as applet - no browser available.");
+} else {
+this.viewport.applet.showURL (url, target);
+}}, "~S,~S");
+Clazz_defineMethod (c$, "jbInit", 
+ function () {
+this.setMenuBar (this.alignFrameMenuBar);
+this.inputText.setLabel (jalview.util.MessageManager.getString ("label.input_from_textbox"));
+this.inputText.addActionListener (this);
+var outputTextboxMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("label.out_to_textbox"));
+for (var i = 0; i < jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS.length; i++) {
+var item =  new awt2swing.MenuItem (jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS[i]);
+item.addActionListener (((Clazz_isClassDefined ("jalview.appletgui.AlignFrame$4") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$4$ ()), Clazz_innerTypeInstance (jalview.appletgui.AlignFrame$4, this, null)));
+outputTextboxMenu.add (item);
+}
+this.closeMenuItem.addActionListener (this);
+this.loadApplication.addActionListener (this);
+this.$loadTree.addActionListener (this);
+this.$loadAnnotations.addActionListener (this);
+this.$outputFeatures.addActionListener (this);
+this.$outputAnnotations.addActionListener (this);
+this.undoMenuItem.setEnabled (false);
+this.undoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.undo"));
+this.undoMenuItem.addActionListener (this);
+this.redoMenuItem.setEnabled (false);
+this.redoMenuItem.setLabel (jalview.util.MessageManager.getString ("action.redo"));
+this.redoMenuItem.addActionListener (this);
+this.copy.setLabel (jalview.util.MessageManager.getString ("action.copy"));
+this.copy.addActionListener (this);
+this.cut.setLabel (jalview.util.MessageManager.getString ("action.cut"));
+this.cut.addActionListener (this);
+this.$delete.setLabel (jalview.util.MessageManager.getString ("action.delete"));
+this.$delete.addActionListener (this);
+this.pasteMenu.setLabel (jalview.util.MessageManager.getString ("action.paste"));
+this.pasteNew.setLabel (jalview.util.MessageManager.getString ("label.to_new_alignment"));
+this.pasteNew.addActionListener (this);
+this.pasteThis.setLabel (jalview.util.MessageManager.getString ("label.to_this_alignment"));
+this.pasteThis.addActionListener (this);
+this.remove2LeftMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_left"));
+this.remove2LeftMenuItem.addActionListener (this);
+this.remove2RightMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_right"));
+this.remove2RightMenuItem.addActionListener (this);
+this.removeGappedColumnMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_empty_columns"));
+this.removeGappedColumnMenuItem.addActionListener (this);
+this.removeAllGapsMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_all_gaps"));
+this.removeAllGapsMenuItem.addActionListener (this);
+this.removeRedundancyMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_redundancy").concat ("..."));
+this.removeRedundancyMenuItem.addActionListener (this);
+this.findMenuItem.setLabel (jalview.util.MessageManager.getString ("action.find"));
+this.findMenuItem.addActionListener (this);
+this.selectAllSequenceMenuItem.addActionListener (this);
+this.deselectAllSequenceMenuItem.addActionListener (this);
+this.invertSequenceMenuItem.setLabel (jalview.util.MessageManager.getString ("action.invert_sequence_selection"));
+this.invertSequenceMenuItem.addActionListener (this);
+this.invertColSel.setLabel (jalview.util.MessageManager.getString ("action.invert_column_selection"));
+this.invertColSel.addActionListener (this);
+this.deleteGroups.setLabel (jalview.util.MessageManager.getString ("action.undefine_groups"));
+this.deleteGroups.addActionListener (this);
+this.grpsFromSelection.setLabel (jalview.util.MessageManager.getString ("action.make_groups_selection"));
+this.grpsFromSelection.addActionListener (this);
+this.createGroup.setLabel (jalview.util.MessageManager.getString ("action.create_group"));
+this.unGroup.setLabel (jalview.util.MessageManager.getString ("action.remove_group"));
+this.annotationColumnSelection.setLabel ("Select by Annotation");
+this.annotationColumnSelection.addActionListener (this);
+this.$newView.setLabel (jalview.util.MessageManager.getString ("action.new_view"));
+this.$newView.addActionListener (this);
+var showMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.show"));
+this.showColumns.setLabel (jalview.util.MessageManager.getString ("label.all_columns"));
+this.showSeqs.setLabel (jalview.util.MessageManager.getString ("label.all_sequences"));
+var hideMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.hide"));
+this.hideColumns.setLabel (jalview.util.MessageManager.getString ("label.selected_columns"));
+this.hideSequences.setLabel (jalview.util.MessageManager.getString ("label.selected_sequences"));
+this.hideAllButSelection.setLabel (jalview.util.MessageManager.getString ("label.all_but_selected_region"));
+this.hideAllSelection.setLabel (jalview.util.MessageManager.getString ("label.selected_region"));
+this.showAllHidden.setLabel (jalview.util.MessageManager.getString ("label.all_sequences_columns"));
+this.showColumns.addActionListener (this);
+this.showSeqs.addActionListener (this);
+this.hideColumns.addActionListener (this);
+this.hideSequences.addActionListener (this);
+this.hideAllButSelection.addActionListener (this);
+this.hideAllSelection.addActionListener (this);
+this.showAllHidden.addActionListener (this);
+this.featureSettings.setLabel (jalview.util.MessageManager.getString ("label.feature_settings"));
+this.featureSettings.addActionListener (this);
+this.sequenceFeatures.setLabel (jalview.util.MessageManager.getString ("label.show_sequence_features"));
+this.sequenceFeatures.addItemListener (this);
+this.sequenceFeatures.setState (false);
+this.followMouseOverFlag.setLabel (jalview.util.MessageManager.getString ("label.automatic_scrolling"));
+this.followMouseOverFlag.addItemListener (this);
+this.alProperties.addActionListener (this);
+this.overviewMenuItem.setLabel (jalview.util.MessageManager.getString ("label.overview_window"));
+this.overviewMenuItem.addActionListener (this);
+this.annotationPanelMenuItem.setLabel (jalview.util.MessageManager.getString ("label.show_annotations"));
+this.annotationPanelMenuItem.addItemListener (this);
+this.showGroupConsensus.setLabel (jalview.util.MessageManager.getString ("label.group_consensus"));
+this.showGroupConservation.setLabel (jalview.util.MessageManager.getString ("label.group_conservation"));
+this.showConsensusHistogram.setLabel (jalview.util.MessageManager.getString ("label.show_consensus_histogram"));
+this.showSequenceLogo.setLabel (jalview.util.MessageManager.getString ("label.show_consensus_logo"));
+this.normSequenceLogo.setLabel (jalview.util.MessageManager.getString ("label.norm_consensus_logo"));
+this.applyAutoAnnotationSettings.setLabel (jalview.util.MessageManager.getString ("label.apply_all_groups"));
+this.applyAutoAnnotationSettings.setState (true);
+var autoAnnMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("label.autocalculated_annotation"));
+this.showGroupConsensus.addItemListener (this);
+this.showGroupConservation.addItemListener (this);
+this.showConsensusHistogram.addItemListener (this);
+this.showSequenceLogo.addItemListener (this);
+this.normSequenceLogo.addItemListener (this);
+this.applyAutoAnnotationSettings.addItemListener (this);
+this.showAlignmentAnnotations =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_all_al_annotations"));
+this.showSequenceAnnotations =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_all_seq_annotations"));
+this.sortAnnBySequence =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.sort_annotations_by_sequence"));
+this.sortAnnByLabel =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.sort_annotations_by_label"));
+this.showAutoFirst =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_first"));
+this.showAutoLast =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_last"));
+this.showAlignmentAnnotations.addItemListener (this);
+this.showSequenceAnnotations.addItemListener (this);
+this.sortAnnBySequence.addItemListener (this);
+this.sortAnnByLabel.addItemListener (this);
+this.showAutoFirst.addItemListener (this);
+this.showAutoLast.addItemListener (this);
+this.$font.setLabel (jalview.util.MessageManager.getString ("action.font"));
+this.$font.addActionListener (this);
+this.scaleAbove.setLabel (jalview.util.MessageManager.getString ("action.scale_above"));
+this.scaleAbove.setState (true);
+this.scaleAbove.setEnabled (false);
+this.scaleAbove.addItemListener (this);
+this.scaleLeft.setEnabled (false);
+this.scaleLeft.setState (true);
+this.scaleLeft.setLabel (jalview.util.MessageManager.getString ("action.scale_left"));
+this.scaleLeft.addItemListener (this);
+this.scaleRight.setEnabled (false);
+this.scaleRight.setState (true);
+this.scaleRight.setLabel (jalview.util.MessageManager.getString ("action.scale_right"));
+this.scaleRight.addItemListener (this);
+this.viewBoxesMenuItem.setLabel (jalview.util.MessageManager.getString ("action.boxes"));
+this.viewBoxesMenuItem.setState (true);
+this.viewBoxesMenuItem.addItemListener (this);
+this.viewTextMenuItem.setLabel (jalview.util.MessageManager.getString ("action.text"));
+this.viewTextMenuItem.setState (true);
+this.viewTextMenuItem.addItemListener (this);
+this.colourTextMenuItem.setLabel (jalview.util.MessageManager.getString ("label.colour_text"));
+this.colourTextMenuItem.addItemListener (this);
+this.displayNonconservedMenuItem.setLabel (jalview.util.MessageManager.getString ("label.show_non_conversed"));
+this.displayNonconservedMenuItem.addItemListener (this);
+this.wrapMenuItem.setLabel (jalview.util.MessageManager.getString ("action.wrap"));
+this.wrapMenuItem.addItemListener (this);
+this.renderGapsMenuItem.setLabel (jalview.util.MessageManager.getString ("action.show_gaps"));
+this.renderGapsMenuItem.setState (true);
+this.renderGapsMenuItem.addItemListener (this);
+this.centreColumnLabelFlag.setLabel (jalview.util.MessageManager.getString ("label.centre_column_labels"));
+this.centreColumnLabelFlag.addItemListener (this);
+this.seqLimits.setState (true);
+this.seqLimits.setLabel (jalview.util.MessageManager.getString ("label.show_sequence_limits"));
+this.seqLimits.addItemListener (this);
+this.applyToAllGroups.setLabel (jalview.util.MessageManager.getString ("label.apply_colour_to_all_groups"));
+this.applyToAllGroups.setState (true);
+this.applyToAllGroups.addItemListener (this);
+this.clustalColour.setLabel (jalview.util.MessageManager.getString ("label.clustalx"));
+this.clustalColour.addActionListener (this);
+this.zappoColour.setLabel (jalview.util.MessageManager.getString ("label.zappo"));
+this.zappoColour.addActionListener (this);
+this.taylorColour.setLabel (jalview.util.MessageManager.getString ("label.taylor"));
+this.taylorColour.addActionListener (this);
+this.hydrophobicityColour.setLabel (jalview.util.MessageManager.getString ("label.hydrophobicity"));
+this.hydrophobicityColour.addActionListener (this);
+this.helixColour.setLabel (jalview.util.MessageManager.getString ("label.helix_propensity"));
+this.helixColour.addActionListener (this);
+this.strandColour.setLabel (jalview.util.MessageManager.getString ("label.strand_propensity"));
+this.strandColour.addActionListener (this);
+this.turnColour.setLabel (jalview.util.MessageManager.getString ("label.turn_propensity"));
+this.turnColour.addActionListener (this);
+this.buriedColour.setLabel (jalview.util.MessageManager.getString ("label.buried_index"));
+this.buriedColour.addActionListener (this);
+this.purinePyrimidineColour.setLabel (jalview.util.MessageManager.getString ("label.purine_pyrimidine"));
+this.purinePyrimidineColour.addActionListener (this);
+this.RNAInteractionColour.setLabel (jalview.util.MessageManager.getString ("label.rna_interaction"));
+this.RNAInteractionColour.addActionListener (this);
+this.RNAHelixColour.setLabel (jalview.util.MessageManager.getString ("action.by_rna_helixes"));
+this.RNAHelixColour.addActionListener (this);
+this.userDefinedColour.setLabel (jalview.util.MessageManager.getString ("action.user_defined"));
+this.userDefinedColour.addActionListener (this);
+this.PIDColour.setLabel (jalview.util.MessageManager.getString ("label.percentage_identity"));
+this.PIDColour.addActionListener (this);
+this.BLOSUM62Colour.setLabel (jalview.util.MessageManager.getString ("label.blosum62_score"));
+this.BLOSUM62Colour.addActionListener (this);
+this.tcoffeeColour.setLabel (jalview.util.MessageManager.getString ("label.tcoffee_scores"));
+this.tcoffeeColour.setEnabled (false);
+this.tcoffeeColour.addActionListener (this);
+this.conservationMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_conservation"));
+this.conservationMenuItem.addItemListener (this);
+this.noColourmenuItem.setLabel (jalview.util.MessageManager.getString ("label.none"));
+this.noColourmenuItem.addActionListener (this);
+this.abovePIDThreshold.setLabel (jalview.util.MessageManager.getString ("label.above_identity_threshold"));
+this.abovePIDThreshold.addItemListener (this);
+this.nucleotideColour.setLabel (jalview.util.MessageManager.getString ("label.nucleotide"));
+this.nucleotideColour.addActionListener (this);
+this.modifyPID.setLabel (jalview.util.MessageManager.getString ("label.modify_identity_thereshold"));
+this.modifyPID.addActionListener (this);
+this.modifyConservation.setLabel (jalview.util.MessageManager.getString ("label.modify_conservation_thereshold"));
+this.modifyConservation.addActionListener (this);
+this.annotationColour.setLabel (jalview.util.MessageManager.getString ("action.by_annotation"));
+this.annotationColour.addActionListener (this);
+this.sortPairwiseMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_pairwise_id"));
+this.sortPairwiseMenuItem.addActionListener (this);
+this.sortIDMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_id"));
+this.sortIDMenuItem.addActionListener (this);
+this.sortLengthMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_length"));
+this.sortLengthMenuItem.addActionListener (this);
+this.sortGroupMenuItem.setLabel (jalview.util.MessageManager.getString ("action.by_group"));
+this.sortGroupMenuItem.addActionListener (this);
+this.pairwiseAlignmentMenuItem.setLabel (jalview.util.MessageManager.getString ("action.pairwise_alignment"));
+this.pairwiseAlignmentMenuItem.addActionListener (this);
+this.PCAMenuItem.setLabel (jalview.util.MessageManager.getString ("label.principal_component_analysis"));
+this.PCAMenuItem.addActionListener (this);
+this.autoCalculate =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.autocalculate_consensus"), true);
+this.averageDistanceTreeMenuItem.setLabel (jalview.util.MessageManager.getString ("label.average_distance_identity"));
+this.averageDistanceTreeMenuItem.addActionListener (this);
+this.neighbourTreeMenuItem.setLabel (jalview.util.MessageManager.getString ("label.neighbour_joining_identity"));
+this.neighbourTreeMenuItem.addActionListener (this);
+this.avDistanceTreeBlosumMenuItem.setLabel (jalview.util.MessageManager.getString ("label.average_distance_bloslum62"));
+this.avDistanceTreeBlosumMenuItem.addActionListener (this);
+this.njTreeBlosumMenuItem.setLabel (jalview.util.MessageManager.getString ("label.neighbour_blosum62"));
+this.njTreeBlosumMenuItem.addActionListener (this);
+this.sortByTreeMenu.setLabel (jalview.util.MessageManager.getString ("action.by_tree_order"));
+var sortMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.sort"));
+var calculateTreeMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.calculate_tree"));
+this.autoCalculate.addItemListener (this);
+this.$sortByTree.addItemListener (this);
+var helpMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.help"));
+this.documentation.setLabel (jalview.util.MessageManager.getString ("label.documentation"));
+this.documentation.addActionListener (this);
+this.about.setLabel (jalview.util.MessageManager.getString ("label.about"));
+this.about.addActionListener (this);
+this.alignFrameMenuBar.add (this.fileMenu);
+var editMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.edit"));
+this.alignFrameMenuBar.add (editMenu);
+var selectMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.select"));
+this.alignFrameMenuBar.add (selectMenu);
+var viewMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.view"));
+this.alignFrameMenuBar.add (viewMenu);
+var annotationsMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.annotations"));
+this.alignFrameMenuBar.add (annotationsMenu);
+var formatMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.format"));
+this.alignFrameMenuBar.add (formatMenu);
+var colourMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.colour"));
+this.alignFrameMenuBar.add (colourMenu);
+var calculateMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.calculate"));
+this.alignFrameMenuBar.add (calculateMenu);
+this.alignFrameMenuBar.add (helpMenu);
+this.fileMenu.add (this.inputText);
+this.fileMenu.add (this.$loadTree);
+this.fileMenu.add (this.$loadAnnotations);
+this.fileMenu.addSeparator ();
+this.fileMenu.add (outputTextboxMenu);
+this.fileMenu.add (this.$outputFeatures);
+this.fileMenu.add (this.$outputAnnotations);
+if (this.jalviewServletURL != null) {
+this.fileMenu.add (this.loadApplication);
+}this.fileMenu.addSeparator ();
+this.fileMenu.add (this.closeMenuItem);
+editMenu.add (this.undoMenuItem);
+editMenu.add (this.redoMenuItem);
+editMenu.add (this.cut);
+editMenu.add (this.copy);
+this.pasteMenu.add (this.pasteNew);
+this.pasteMenu.add (this.pasteThis);
+editMenu.add (this.pasteMenu);
+editMenu.add (this.$delete);
+editMenu.addSeparator ();
+editMenu.add (this.remove2LeftMenuItem);
+editMenu.add (this.remove2RightMenuItem);
+editMenu.add (this.removeGappedColumnMenuItem);
+editMenu.add (this.removeAllGapsMenuItem);
+editMenu.add (this.removeRedundancyMenuItem);
+selectMenu.add (this.findMenuItem);
+selectMenu.addSeparator ();
+selectMenu.add (this.selectAllSequenceMenuItem);
+selectMenu.add (this.deselectAllSequenceMenuItem);
+selectMenu.add (this.invertSequenceMenuItem);
+selectMenu.add (this.invertColSel);
+selectMenu.add (this.createGroup);
+selectMenu.add (this.unGroup);
+selectMenu.add (this.grpsFromSelection);
+selectMenu.add (this.deleteGroups);
+selectMenu.add (this.annotationColumnSelection);
+viewMenu.add (this.$newView);
+viewMenu.addSeparator ();
+showMenu.add (this.showColumns);
+showMenu.add (this.showSeqs);
+showMenu.add (this.showAllHidden);
+viewMenu.add (showMenu);
+hideMenu.add (this.hideColumns);
+hideMenu.add (this.hideSequences);
+hideMenu.add (this.hideAllSelection);
+hideMenu.add (this.hideAllButSelection);
+viewMenu.add (hideMenu);
+viewMenu.addSeparator ();
+viewMenu.add (this.followMouseOverFlag);
+viewMenu.addSeparator ();
+viewMenu.add (this.sequenceFeatures);
+viewMenu.add (this.featureSettings);
+viewMenu.addSeparator ();
+viewMenu.add (this.alProperties);
+viewMenu.addSeparator ();
+viewMenu.add (this.overviewMenuItem);
+annotationsMenu.add (this.annotationPanelMenuItem);
+annotationsMenu.addSeparator ();
+annotationsMenu.add (this.showAlignmentAnnotations);
+annotationsMenu.add (this.showSequenceAnnotations);
+annotationsMenu.add (this.sortAnnBySequence);
+annotationsMenu.add (this.sortAnnByLabel);
+annotationsMenu.addSeparator ();
+autoAnnMenu.add (this.showAutoFirst);
+autoAnnMenu.add (this.showAutoLast);
+autoAnnMenu.addSeparator ();
+autoAnnMenu.add (this.applyAutoAnnotationSettings);
+autoAnnMenu.add (this.showConsensusHistogram);
+autoAnnMenu.add (this.showSequenceLogo);
+autoAnnMenu.add (this.normSequenceLogo);
+autoAnnMenu.addSeparator ();
+autoAnnMenu.add (this.showGroupConservation);
+autoAnnMenu.add (this.showGroupConsensus);
+annotationsMenu.add (autoAnnMenu);
+formatMenu.add (this.$font);
+formatMenu.add (this.seqLimits);
+formatMenu.add (this.wrapMenuItem);
+formatMenu.add (this.scaleAbove);
+formatMenu.add (this.scaleLeft);
+formatMenu.add (this.scaleRight);
+formatMenu.add (this.viewBoxesMenuItem);
+formatMenu.add (this.viewTextMenuItem);
+formatMenu.add (this.colourTextMenuItem);
+formatMenu.add (this.displayNonconservedMenuItem);
+formatMenu.add (this.renderGapsMenuItem);
+formatMenu.add (this.centreColumnLabelFlag);
+colourMenu.add (this.applyToAllGroups);
+colourMenu.addSeparator ();
+colourMenu.add (this.noColourmenuItem);
+colourMenu.add (this.clustalColour);
+colourMenu.add (this.BLOSUM62Colour);
+colourMenu.add (this.PIDColour);
+colourMenu.add (this.zappoColour);
+colourMenu.add (this.taylorColour);
+colourMenu.add (this.hydrophobicityColour);
+colourMenu.add (this.helixColour);
+colourMenu.add (this.strandColour);
+colourMenu.add (this.turnColour);
+colourMenu.add (this.buriedColour);
+colourMenu.add (this.nucleotideColour);
+colourMenu.add (this.purinePyrimidineColour);
+colourMenu.add (this.tcoffeeColour);
+colourMenu.add (this.userDefinedColour);
+colourMenu.addSeparator ();
+colourMenu.add (this.conservationMenuItem);
+colourMenu.add (this.modifyConservation);
+colourMenu.add (this.abovePIDThreshold);
+colourMenu.add (this.modifyPID);
+colourMenu.add (this.annotationColour);
+colourMenu.add (this.RNAHelixColour);
+sortMenu.add (this.sortIDMenuItem);
+sortMenu.add (this.sortLengthMenuItem);
+sortMenu.add (this.sortByTreeMenu);
+sortMenu.add (this.sortGroupMenuItem);
+sortMenu.add (this.sortPairwiseMenuItem);
+calculateMenu.add (sortMenu);
+calculateTreeMenu.add (this.averageDistanceTreeMenuItem);
+calculateTreeMenu.add (this.neighbourTreeMenuItem);
+calculateTreeMenu.add (this.avDistanceTreeBlosumMenuItem);
+calculateTreeMenu.add (this.njTreeBlosumMenuItem);
+calculateMenu.add (calculateTreeMenu);
+calculateMenu.addSeparator ();
+calculateMenu.add (this.pairwiseAlignmentMenuItem);
+calculateMenu.add (this.PCAMenuItem);
+calculateMenu.add (this.autoCalculate);
+calculateMenu.add (this.$sortByTree);
+helpMenu.add (this.documentation);
+helpMenu.add (this.about);
+this.statusBar.setBackground (java.awt.Color.white);
+this.statusBar.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.setStatus (jalview.util.MessageManager.getString ("label.status_bar"));
+this.add (this.statusBar, "South");
+});
+Clazz_overrideMethod (c$, "setStatus", 
+function (string) {
+this.statusBar.setText (string);
+}, "~S");
+Clazz_defineMethod (c$, "createAlignFrameWindow", 
+function (reallyEmbedded) {
+if (reallyEmbedded) {
+this.embedAlignFrameInApplet (this.viewport.applet);
+} else {
+if (this.embedMenuIfNeeded (this.alignPanel)) {
+this.alignPanel.setSize (this.getSize ().width, this.getSize ().height - this.statusBar.getHeight ());
+}this.add (this.statusBar, "South");
+this.add (this.alignPanel, "Center");
+jalview.bin.JalviewLite.addFrame (this, this.getTitle (), this.frameWidth, this.frameHeight);
+}}, "~B");
+Clazz_defineMethod (c$, "embedAlignFrameInApplet", 
+function (theApplet) {
+this.fileMenu.remove (this.closeMenuItem);
+this.fileMenu.remove (3);
+this.embeddedMenu = this.makeEmbeddedPopupMenu (this.alignFrameMenuBar, false, false);
+theApplet.setLayout ( new java.awt.BorderLayout ());
+theApplet.add (this.embeddedMenu, "North");
+theApplet.add (this.statusBar, "South");
+this.alignPanel.setSize (theApplet.getSize ().width, theApplet.getSize ().height - this.embeddedMenu.getHeight () - this.statusBar.getHeight ());
+theApplet.add (this.alignPanel, "Center");
+var me = this;
+theApplet.addFocusListener (((Clazz_isClassDefined ("jalview.appletgui.AlignFrame$5") ? 0 : jalview.appletgui.AlignFrame.$AlignFrame$5$ ()), Clazz_innerTypeInstance (jalview.appletgui.AlignFrame$5, this, Clazz_cloneFinals ("theApplet", theApplet, "me", me))));
+theApplet.validate ();
+}, "jalview.bin.JalviewLite");
+Clazz_defineMethod (c$, "addStructureViewInstance", 
+function (jmolviewer, sequenceIds) {
+return null;
+}, "~O,~A");
+Clazz_defineMethod (c$, "addPdbFile", 
+function (sequenceId, pdbEntryString, pdbFile) {
+var toaddpdb = this.viewport.getAlignment ().findName (sequenceId);
+var needtoadd = false;
+if (toaddpdb != null) {
+var pdbe = toaddpdb.getPDBId ();
+var pdbentry = null;
+if (pdbe != null && pdbe.size () > 0) {
+for (var pe = 0, peSize = pdbe.size (); pe < peSize; pe++) {
+pdbentry = pdbe.elementAt (pe);
+if (!pdbentry.getId ().equals (pdbEntryString) && !pdbentry.getFile ().equals (pdbFile)) {
+pdbentry = null;
+} else {
+continue;
+}}
+}if (pdbentry == null) {
+pdbentry =  new jalview.datamodel.PDBEntry ();
+pdbentry.setId (pdbEntryString);
+pdbentry.setFile (pdbFile);
+needtoadd = true;
+}var protocol = jalview.io.AppletFormatAdapter.resolveProtocol (pdbFile, "PDB");
+if (protocol == null) {
+return false;
+}if (needtoadd) {
+if (pdbentry.getProperty () == null) {
+pdbentry.setProperty ( new java.util.Hashtable ());
+}pdbentry.getProperty ().put ("protocol", protocol);
+toaddpdb.addPDBId (pdbentry);
+this.alignPanel.getStructureSelectionManager ().registerPDBEntry (pdbentry);
+}}return true;
+}, "~S,~S,~S");
+Clazz_defineMethod (c$, "cleanSeqChainArrays", 
+ function (seqs, chains) {
+if (seqs != null) {
+var sequences =  new java.util.Vector ();
+for (var i = 0; i < seqs.length; i++) {
+if (seqs[i] != null) {
+sequences.addElement ( Clazz_newArray (-1, [seqs[i], (chains != null) ? chains[i] : null]));
+}}
+seqs =  new Array (sequences.size ());
+chains =  new Array (sequences.size ());
+for (var i = 0, isize = sequences.size (); i < isize; i++) {
+var oj = sequences.elementAt (i);
+seqs[i] = oj[0];
+chains[i] = oj[1];
+}
+}return  Clazz_newArray (-1, [seqs, chains]);
+}, "~A,~A");
+Clazz_defineMethod (c$, "newStructureView", 
+function (applet, pdb, seqs, chains, protocol) {
+var sqch = this.cleanSeqChainArrays (seqs, chains);
+seqs = sqch[0];
+chains = sqch[1];
+if (seqs == null || seqs.length == 0) {
+System.err.println ("JalviewLite.AlignFrame:newStructureView: No sequence to bind structure to.");
+}if (protocol == null || protocol.trim ().length == 0 || protocol.equals ("null")) {
+protocol = pdb.getProperty ().get ("protocol");
+if (protocol == null) {
+System.err.println ("Couldn't work out protocol to open structure: " + pdb.getId ());
+return;
+}}if (applet.useXtrnalSviewer) {
+if (jalview.structure.StructureSelectionManager.getStructureSelectionManager (applet).setMapping (seqs, chains, pdb.getFile (), protocol) == null) {
+System.err.println ("Failed to map " + pdb.getFile () + " (" + protocol + ") to any sequences");
+}return;
+}if (applet.isAlignPdbStructures () && applet.jmolAvailable) {
+var ajm = null;
+var tajm;
+var jmols = applet.getAppletWindow (jalview.appletgui.AppletJmol);
+for (var i = 0, iSize = jmols.size (); i < iSize; i++) {
+tajm = jmols.elementAt (i);
+if (tajm.ap.alignFrame === this) {
+ajm = tajm;
+break;
+}}
+if (ajm != null) {
+System.err.println ("Incremental adding and aligning structure to existing Jmol view not yet implemented.");
+ajm = null;
+}} new jalview.appletgui.AppletJmol (pdb, seqs, chains, this.alignPanel, protocol);
+jalview.bin.JalviewLite.lastFrameX += 40;
+jalview.bin.JalviewLite.lastFrameY += 40;
+}, "jalview.bin.JalviewLite,jalview.datamodel.PDBEntry,~A,~A,~S");
+Clazz_defineMethod (c$, "alignedStructureView", 
+function (applet, pdb, seqs, chains, protocols) {
+System.err.println ("Aligned Structure View: Not yet implemented.");
+}, "jalview.bin.JalviewLite,~A,~A,~A,~A");
+Clazz_defineMethod (c$, "select", 
+function (sel, csel) {
+this.alignPanel.seqPanel.selection (sel, csel, null);
+}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection");
+Clazz_defineMethod (c$, "scrollTo", 
+function (row, column) {
+this.alignPanel.seqPanel.scrollTo (row, column);
+}, "~N,~N");
+Clazz_defineMethod (c$, "scrollToRow", 
+function (row) {
+this.alignPanel.seqPanel.scrollToRow (row);
+}, "~N");
+Clazz_defineMethod (c$, "scrollToColumn", 
+function (column) {
+this.alignPanel.seqPanel.scrollToColumn (column);
+}, "~N");
+Clazz_defineMethod (c$, "getSequenceSetId", 
+function () {
+return this.viewport.getSequenceSetId ();
+});
+Clazz_defineMethod (c$, "loadScoreFile", 
+function (inFile) {
+var file = jalview.jsdev.GenericFileAdapter.getFile ("TCoffeeScoreFile", [inFile, jalview.io.AppletFormatAdapter.checkProtocol (inFile)]);
+if (!file.isValid ()) {
+System.err.println ("Problems parsing T-Coffee scores: " + file.getWarningMessage ());
+System.err.println ("Origin was:\n" + inFile);
+return false;
+}var aln;
+if ((aln = this.viewport.getAlignment ()) != null && (aln.getHeight () != file.getHeight () || aln.getWidth () != file.getWidth ())) {
+System.err.println ("The scores matrix does not match the alignment dimensions");
+}if (file.annotateAlignment (this.alignPanel.getAlignment (), false)) {
+this.alignPanel.fontChanged ();
+this.tcoffeeColour.setEnabled (true);
+this.changeColour ( new jalview.schemes.TCoffeeColourScheme (this.alignPanel.getAlignment ()));
+return true;
+} else {
+System.err.println ("Problems resolving T-Coffee scores:");
+if (file.getWarningMessage () != null) {
+System.err.println (file.getWarningMessage ());
+}}return false;
+}, "~S");
+Clazz_defineMethod (c$, "getSplitFrame", 
+function () {
+return this.splitFrame;
+});
+Clazz_defineMethod (c$, "setSplitFrame", 
+function (sf) {
+this.splitFrame = sf;
+}, "jalview.appletgui.SplitFrame");
+Clazz_overrideMethod (c$, "setShowSeqFeatures", 
+function (b) {
+this.viewport.setShowSequenceFeatures (b);
+}, "~B");
+Clazz_overrideMethod (c$, "setMenusForViewport", 
+function () {
+});
+Clazz_overrideMethod (c$, "refreshFeatureUI", 
+function (enableIfNecessary) {
+if (enableIfNecessary) {
+this.sequenceFeatures.setState (true);
+this.alignPanel.av.setShowSequenceFeatures (true);
+}}, "~B");
+Clazz_overrideMethod (c$, "getFeatureSettingsUI", 
+function () {
+return this.alignPanel.av.featureSettings;
+});
+c$.$AlignFrame$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "AlignFrame$1", java.awt.event.WindowAdapter);
+Clazz_overrideMethod (c$, "windowClosing", 
+function (e) {
+if (this.f$.ap != null) {
+this.f$.ap.setOverviewPanel (null);
+}}, "java.awt.event.WindowEvent");
+c$ = Clazz_p0p ();
+};
+c$.$AlignFrame$2$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "AlignFrame$2", null, java.awt.event.ActionListener);
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (evt) {
+this.b$["jalview.appletgui.AlignFrame"].sortByTree (this.f$.treePanel, this.f$.title);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+};
+c$.$AlignFrame$3$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "AlignFrame$3", java.awt.event.WindowAdapter);
+Clazz_defineMethod (c$, "windowOpened", 
+function (e) {
+if (this.b$["jalview.appletgui.AlignFrame"].viewport.sortByTree) {
+this.b$["jalview.appletgui.AlignFrame"].sortByTree (this.f$.treePanel, this.f$.title);
+}Clazz_superCall (this, jalview.appletgui.AlignFrame$3, "windowOpened", [e]);
+}, "java.awt.event.WindowEvent");
+Clazz_overrideMethod (c$, "windowClosing", 
+function (e) {
+this.b$["jalview.appletgui.AlignFrame"].sortByTreeMenu.remove (this.f$.item);
+}, "java.awt.event.WindowEvent");
+c$ = Clazz_p0p ();
+};
+c$.$AlignFrame$1AboutPanel$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.version = null;
+this.builddate = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "AlignFrame$1AboutPanel", awt2swing.Canvas);
+Clazz_makeConstructor (c$, 
+function (a, b) {
+Clazz_superConstructor (this, jalview.appletgui.AlignFrame$1AboutPanel, []);
+this.version = a;
+this.builddate = b;
+}, "~S,~S");
+Clazz_overrideMethod (c$, "paintComponent", 
+function (a) {
+a.setColor (java.awt.Color.white);
+a.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+a.setFont ( new java.awt.Font ("Helvetica", 0, 12));
+var b = a.getFontMetrics ();
+var c = b.getHeight ();
+var d = 5;
+var e = 7;
+a.setColor (java.awt.Color.black);
+a.setFont ( new java.awt.Font ("Helvetica", 1, 14));
+awt2swing.Util.drawString (a, jalview.util.MessageManager.formatMessage ("label.jalviewLite_release",  Clazz_newArray (-1, [this.version])), e, d += c);
+a.setFont ( new java.awt.Font ("Helvetica", 1, 12));
+awt2swing.Util.drawString (a, jalview.util.MessageManager.formatMessage ("label.jaview_build_date",  Clazz_newArray (-1, [this.builddate])), e, d += c);
+a.setFont ( new java.awt.Font ("Helvetica", 0, 12));
+awt2swing.Util.drawString (a, jalview.util.MessageManager.getString ("label.jalview_authors_1"), e, d += c * 1.5);
+awt2swing.Util.drawString (a, jalview.util.MessageManager.getString ("label.jalview_authors_2"), e + 50, d += c + 8);
+awt2swing.Util.drawString (a, jalview.util.MessageManager.getString ("label.jalview_dev_managers"), e, d += c);
+awt2swing.Util.drawString (a, jalview.util.MessageManager.getString ("label.jalview_distribution_lists"), e, d += c);
+awt2swing.Util.drawString (a, jalview.util.MessageManager.getString ("label.jalview_please_cite"), e, d += c + 8);
+awt2swing.Util.drawString (a, jalview.util.MessageManager.getString ("label.jalview_cite_1_authors"), e, d += c);
+awt2swing.Util.drawString (a, jalview.util.MessageManager.getString ("label.jalview_cite_1_title"), e, d += c);
+awt2swing.Util.drawString (a, jalview.util.MessageManager.getString ("label.jalview_cite_1_ref"), e, d += c);
+}, "java.awt.Graphics");
+c$ = Clazz_p0p ();
+};
+c$.$AlignFrame$4$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "AlignFrame$4", null, java.awt.event.ActionListener);
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.AlignFrame"].outputText_actionPerformed (e);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+};
+c$.$AlignFrame$5$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "AlignFrame$5", null, java.awt.event.FocusListener);
+Clazz_overrideMethod (c$, "focusLost", 
+function (e) {
+if (this.f$.theApplet.currentAlignFrame === this.f$.me) {
+this.f$.theApplet.currentAlignFrame = null;
+}}, "java.awt.event.FocusEvent");
+Clazz_overrideMethod (c$, "focusGained", 
+function (e) {
+this.f$.theApplet.currentAlignFrame = this.f$.me;
+}, "java.awt.event.FocusEvent");
+c$ = Clazz_p0p ();
+};
+Clazz_defineStatics (c$,
+"copiedSequences", null,
+"copiedHiddenColumns", null);
+});
+Clazz_declarePackage ("awt2swing");
+Clazz_load (["awt2swing.Panel"], "awt2swing.Canvas", null, function () {
+c$ = Clazz_declareType (awt2swing, "Canvas", awt2swing.Panel);
+});
+Clazz_declarePackage ("awt2swing");
+Clazz_load (["javax.swing.JPanel"], "awt2swing.Panel", null, function () {
+c$ = Clazz_declareType (awt2swing, "Panel", javax.swing.JPanel);
+Clazz_defineMethod (c$, "setName", 
+function (name) {
+System.out.println (name);
+Clazz_superCall (this, awt2swing.Panel, "setName", [name]);
+}, "~S");
+});
+Clazz_declarePackage ("jalview.api");
+Clazz_declareInterface (jalview.api, "AlignViewControllerGuiI");
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Frame", "java.awt.event.MouseListener", "java.awt.Font", "java.util.HashMap"], "jalview.appletgui.EmbmenuFrame", ["awt2swing.Label", "$.Panel", "$.PopupMenu", "jalview.util.Platform", "java.awt.Color", "$.FlowLayout"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.embeddedPopup = null;
+this.embeddedMenu = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "EmbmenuFrame", awt2swing.Frame, java.awt.event.MouseListener);
+Clazz_prepareFields (c$, function () {
+this.embeddedPopup =  new java.util.HashMap ();
+});
+Clazz_defineMethod (c$, "embedMenuIfNeeded", 
+function (tobeAdjusted) {
+var topMenuBar = this.getJMenuBar ();
+if (topMenuBar == null) {
+return false;
+}if (jalview.util.Platform.isAMac ()) {
+this.embeddedMenu = this.makeEmbeddedPopupMenu (topMenuBar, true, false);
+this.unsetMenuBar ();
+this.add (this.embeddedMenu, "North");
+tobeAdjusted.setSize (this.getSize ().width, this.getSize ().height - this.embeddedMenu.getHeight ());
+return true;
+}return false;
+}, "awt2swing.Panel");
+Clazz_defineMethod (c$, "makeEmbeddedPopupMenu", 
+function (menuBar, overrideFonts, append) {
+if (!append) {
+this.embeddedPopup.clear ();
+if (this.embeddedMenu != null) {
+this.embeddedMenu.removeAll ();
+}}this.embeddedMenu = this.makeEmbeddedPopupMenu (menuBar, jalview.appletgui.EmbmenuFrame.DEFAULT_MENU_FONT, overrideFonts,  new awt2swing.Panel (), this);
+return this.embeddedMenu;
+}, "awt2swing.MenuBar,~B,~B");
+Clazz_defineMethod (c$, "makeEmbeddedPopupMenu", 
+function (menuBar, font, overrideFonts, embeddedMenu, clickHandler) {
+if (overrideFonts) {
+var mbf = menuBar.getFont ();
+if (mbf != null) {
+font = mbf;
+}}if (embeddedMenu == null) {
+embeddedMenu =  new awt2swing.Panel ();
+}var flowLayout1 =  new java.awt.FlowLayout ();
+embeddedMenu.setBackground (java.awt.Color.lightGray);
+embeddedMenu.setLayout (flowLayout1);
+for (var mbi = 0, nMbi = menuBar.getMenuCount (); mbi < nMbi; mbi++) {
+var mi = menuBar.getMenu (mbi);
+var elab =  new awt2swing.Label (mi.getLabel ());
+elab.setFont (font);
+var popup =  new awt2swing.PopupMenu ();
+var m;
+var mSize = mi.getItemCount ();
+for (m = 0; m < mSize; m++) {
+if (mi.getItem (m) == null) popup.addSeparator ();
+ else popup.add (mi.getItem (m));
+mSize--;
+m--;
+}
+this.embeddedPopup.put (elab, popup);
+embeddedMenu.add (elab);
+elab.addMouseListener (clickHandler);
+}
+flowLayout1.setAlignment (0);
+flowLayout1.setHgap (2);
+flowLayout1.setVgap (0);
+return embeddedMenu;
+}, "awt2swing.MenuBar,java.awt.Font,~B,awt2swing.Panel,java.awt.event.MouseListener");
+Clazz_overrideMethod (c$, "mousePressed", 
+function (evt) {
+var popup = null;
+var source = evt.getSource ();
+popup = this.getPopupMenu (source);
+if (popup != null) {
+this.embeddedMenu.add (popup);
+popup.show (this.embeddedMenu, source.getBounds ().x, source.getBounds ().y + source.getBounds ().getSize ().height);
+}}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "getPopupMenu", 
+function (source) {
+return this.embeddedPopup.get (source);
+}, "awt2swing.Label");
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "destroyMenus", 
+function () {
+if (this.embeddedPopup != null) {
+for (var lb, $lb = this.embeddedPopup.keySet ().iterator (); $lb.hasNext () && ((lb = $lb.next ()) || true);) {
+lb.removeMouseListener (this);
+}
+this.embeddedPopup.clear ();
+}if (this.embeddedMenu != null) {
+this.embeddedMenu.removeAll ();
+}});
+Clazz_defineMethod (c$, "finalize", 
+function () {
+this.destroyMenus ();
+this.embeddedPopup = null;
+this.embeddedMenu = null;
+Clazz_superCall (this, jalview.appletgui.EmbmenuFrame, "finalize", []);
+});
+c$.FONT_ARIAL_PLAIN_11 = c$.prototype.FONT_ARIAL_PLAIN_11 =  new java.awt.Font ("Arial", 0, 11);
+c$.DEFAULT_MENU_FONT = c$.prototype.DEFAULT_MENU_FONT = jalview.appletgui.EmbmenuFrame.FONT_ARIAL_PLAIN_11;
+});
+Clazz_declarePackage ("awt2swing");
+Clazz_load (["javax.swing.JFrame"], "awt2swing.Frame", null, function () {
+c$ = Clazz_declareType (awt2swing, "Frame", javax.swing.JFrame);
+Clazz_defineMethod (c$, "remove", 
+function (i) {
+{
+this.removeInt(i);
+}}, "~N");
+Clazz_defineMethod (c$, "setMenuBar", 
+function (m) {
+this.setJMenuBar (m);
+}, "awt2swing.MenuBar");
+Clazz_defineMethod (c$, "unsetMenuBar", 
+function () {
+this.setJMenuBar (null);
+});
+Clazz_defineMethod (c$, "getMenubar", 
+function () {
+return this.getJMenuBar ();
+});
+});
+Clazz_declarePackage ("awt2swing");
+Clazz_load (["javax.swing.JLabel"], "awt2swing.Label", null, function () {
+c$ = Clazz_declareType (awt2swing, "Label", javax.swing.JLabel);
+Clazz_defineMethod (c$, "setAlignment", 
+function (alignment) {
+this.setAlignmentX (alignment);
+}, "~N");
+});
+Clazz_declarePackage ("awt2swing");
+Clazz_load (["javax.swing.JPopupMenu"], "awt2swing.PopupMenu", null, function () {
+c$ = Clazz_declareType (awt2swing, "PopupMenu", javax.swing.JPopupMenu);
+});
+Clazz_declarePackage ("jalview.util");
+Clazz_load (null, "jalview.util.Platform", ["java.lang.StringBuffer"], function () {
+c$ = Clazz_declareType (jalview.util, "Platform");
+c$.isAMac = Clazz_defineMethod (c$, "isAMac", 
+function () {
+return java.lang.System.getProperty ("os.name").indexOf ("Mac") > -1;
+});
+c$.isHeadless = Clazz_defineMethod (c$, "isHeadless", 
+function () {
+var hdls = java.lang.System.getProperty ("java.awt.headless");
+return hdls != null && hdls.equals ("true");
+});
+c$.getMaxCommandLineLength = Clazz_defineMethod (c$, "getMaxCommandLineLength", 
+function () {
+return 2046;
+});
+c$.escapeString = Clazz_defineMethod (c$, "escapeString", 
+function (file) {
+var f =  new StringBuffer ();
+var p = 0;
+var lastp = 0;
+while ((p = file.indexOf ('\\', lastp)) > -1) {
+f.append (file.subSequence (lastp, p));
+f.append ("\\\\");
+lastp = p + 1;
+}
+f.append (file.substring (lastp));
+return f.toString ();
+}, "~S");
+});
+Clazz_declarePackage ("awt2swing");
+Clazz_load (["javax.swing.JCheckBoxMenuItem"], "awt2swing.CheckboxMenuItem", null, function () {
+c$ = Clazz_declareType (awt2swing, "CheckboxMenuItem", javax.swing.JCheckBoxMenuItem);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, awt2swing.CheckboxMenuItem, []);
+});
+Clazz_overrideMethod (c$, "getState", 
+function () {
+return this.isSelected ();
+});
+Clazz_overrideMethod (c$, "setState", 
+function (tf) {
+this.setSelected (tf);
+}, "~B");
+});
+Clazz_declarePackage ("awt2swing");
+Clazz_load (["javax.swing.JMenu"], "awt2swing.Menu", null, function () {
+c$ = Clazz_declareType (awt2swing, "Menu", javax.swing.JMenu);
+Clazz_makeConstructor (c$, 
+function (title) {
+Clazz_superConstructor (this, awt2swing.Menu, [title]);
+title = null;
+}, "~S");
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, awt2swing.Menu);
+var s = null;
+});
+});
+Clazz_declarePackage ("awt2swing");
+Clazz_load (["javax.swing.JMenuBar"], "awt2swing.MenuBar", null, function () {
+c$ = Clazz_declareType (awt2swing, "MenuBar", javax.swing.JMenuBar);
+});
+Clazz_declarePackage ("awt2swing");
+Clazz_load (["javax.swing.JMenuItem"], "awt2swing.MenuItem", null, function () {
+c$ = Clazz_declareType (awt2swing, "MenuItem", javax.swing.JMenuItem);
+});
+Clazz_declarePackage ("jalview.analysis");
+Clazz_load (null, "jalview.analysis.AlignmentSorter", ["jalview.datamodel.SequenceI", "jalview.util.Comparison", "$.MessageManager", "$.QuickSort", "java.lang.Error", "$.Float", "$.StringBuffer", "java.util.ArrayList"], function () {
+c$ = Clazz_declareType (jalview.analysis, "AlignmentSorter");
+c$.sortByPID = Clazz_defineMethod (c$, "sortByPID", 
+function (align, s, tosort) {
+jalview.analysis.AlignmentSorter.sortByPID (align, s, tosort, 0, -1);
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI,~A");
+c$.sortByPID = Clazz_defineMethod (c$, "sortByPID", 
+function (align, s, tosort, start, end) {
+var nSeq = align.getHeight ();
+var scores =  Clazz_newFloatArray (nSeq, 0);
+var seqs =  new Array (nSeq);
+for (var i = 0; i < nSeq; i++) {
+scores[i] = jalview.util.Comparison.PID (align.getSequenceAt (i).getSequenceAsString (), s.getSequenceAsString ());
+seqs[i] = align.getSequenceAt (i);
+}
+jalview.util.QuickSort.sortFloatObject (scores, seqs);
+jalview.analysis.AlignmentSorter.setReverseOrder (align, seqs);
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI,~A,~N,~N");
+c$.setReverseOrder = Clazz_defineMethod (c$, "setReverseOrder", 
+ function (align, seqs) {
+var nSeq = seqs.length;
+var len = 0;
+if ((nSeq % 2) == 0) {
+len = Clazz_doubleToInt (nSeq / 2);
+} else {
+len = Clazz_doubleToInt ((nSeq + 1) / 2);
+}var asq;
+{
+for (var i = 0; i < len; i++) {
+asq.set (i, seqs[nSeq - i - 1]);
+asq.set (nSeq - i - 1, seqs[i]);
+}
+}}, "jalview.datamodel.AlignmentI,~A");
+c$.setOrder = Clazz_defineMethod (c$, "setOrder", 
+ function (align, tmp) {
+jalview.analysis.AlignmentSorter.setOrder (align, jalview.analysis.AlignmentSorter.vectorSubsetToArray (tmp, align.getSequences ()));
+}, "jalview.datamodel.AlignmentI,java.util.List");
+c$.setOrder = Clazz_defineMethod (c$, "setOrder", 
+function (align, seqs) {
+var algn;
+{
+var tmp =  new java.util.ArrayList ();
+for (var i = 0; i < seqs.length; i++) {
+if (algn.contains (seqs[i])) {
+tmp.add (seqs[i]);
+}}
+algn.clear ();
+for (var i = 0; i < tmp.size (); i++) {
+algn.add (tmp.get (i));
+}
+}}, "jalview.datamodel.AlignmentI,~A");
+c$.sortByID = Clazz_defineMethod (c$, "sortByID", 
+function (align) {
+var nSeq = align.getHeight ();
+var ids =  new Array (nSeq);
+var seqs =  new Array (nSeq);
+for (var i = 0; i < nSeq; i++) {
+ids[i] = align.getSequenceAt (i).getName ();
+seqs[i] = align.getSequenceAt (i);
+}
+jalview.util.QuickSort.sort (ids, seqs);
+if (jalview.analysis.AlignmentSorter.sortIdAscending) {
+jalview.analysis.AlignmentSorter.setReverseOrder (align, seqs);
+} else {
+jalview.analysis.AlignmentSorter.setOrder (align, seqs);
+}jalview.analysis.AlignmentSorter.sortIdAscending = !jalview.analysis.AlignmentSorter.sortIdAscending;
+}, "jalview.datamodel.AlignmentI");
+c$.sortByLength = Clazz_defineMethod (c$, "sortByLength", 
+function (align) {
+var nSeq = align.getHeight ();
+var length =  Clazz_newFloatArray (nSeq, 0);
+var seqs =  new Array (nSeq);
+for (var i = 0; i < nSeq; i++) {
+seqs[i] = align.getSequenceAt (i);
+length[i] = (seqs[i].getEnd () - seqs[i].getStart ());
+}
+jalview.util.QuickSort.sortFloatObject (length, seqs);
+if (jalview.analysis.AlignmentSorter.sortLengthAscending) {
+jalview.analysis.AlignmentSorter.setReverseOrder (align, seqs);
+} else {
+jalview.analysis.AlignmentSorter.setOrder (align, seqs);
+}jalview.analysis.AlignmentSorter.sortLengthAscending = !jalview.analysis.AlignmentSorter.sortLengthAscending;
+}, "jalview.datamodel.AlignmentI");
+c$.sortByGroup = Clazz_defineMethod (c$, "sortByGroup", 
+function (align) {
+var groups =  new java.util.ArrayList ();
+if (groups.hashCode () != jalview.analysis.AlignmentSorter.lastGroupHash) {
+jalview.analysis.AlignmentSorter.sortGroupAscending = true;
+jalview.analysis.AlignmentSorter.lastGroupHash = groups.hashCode ();
+} else {
+jalview.analysis.AlignmentSorter.sortGroupAscending = !jalview.analysis.AlignmentSorter.sortGroupAscending;
+}for (var sg, $sg = align.getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+for (var j = 0; j < groups.size (); j++) {
+var sg2 = groups.get (j);
+if (sg.getSize () > sg2.getSize ()) {
+groups.add (j, sg);
+break;
+}}
+if (!groups.contains (sg)) {
+groups.add (sg);
+}}
+var seqs =  new java.util.ArrayList ();
+for (var i = 0; i < groups.size (); i++) {
+var sg = groups.get (i);
+var orderedseqs = sg.getSequencesInOrder (align);
+for (var j = 0; j < orderedseqs.length; j++) {
+seqs.add (orderedseqs[j]);
+}
+}
+if (jalview.analysis.AlignmentSorter.sortGroupAscending) {
+jalview.analysis.AlignmentSorter.setOrder (align, seqs);
+} else {
+jalview.analysis.AlignmentSorter.setReverseOrder (align, jalview.analysis.AlignmentSorter.vectorSubsetToArray (seqs, align.getSequences ()));
+}}, "jalview.datamodel.AlignmentI");
+c$.vectorSubsetToArray = Clazz_defineMethod (c$, "vectorSubsetToArray", 
+ function (tmp, mask) {
+var seqs =  new java.util.ArrayList ();
+var i;
+var idx;
+var tmask =  Clazz_newBooleanArray (mask.size (), false);
+for (i = 0; i < mask.size (); i++) {
+tmask[i] = true;
+}
+for (i = 0; i < tmp.size (); i++) {
+var sq = tmp.get (i);
+idx = mask.indexOf (sq);
+if (idx > -1 && tmask[idx]) {
+tmask[idx] = false;
+seqs.add (sq);
+}}
+for (i = 0; i < tmask.length; i++) {
+if (tmask[i]) {
+seqs.add (mask.get (i));
+}}
+return seqs.toArray ( new Array (seqs.size ()));
+}, "java.util.List,java.util.List");
+c$.sortBy = Clazz_defineMethod (c$, "sortBy", 
+function (align, order) {
+var tmp = order.getOrder ();
+if (jalview.analysis.AlignmentSorter.lastOrder === order) {
+jalview.analysis.AlignmentSorter.sortOrderAscending = !jalview.analysis.AlignmentSorter.sortOrderAscending;
+} else {
+jalview.analysis.AlignmentSorter.sortOrderAscending = true;
+}if (jalview.analysis.AlignmentSorter.sortOrderAscending) {
+jalview.analysis.AlignmentSorter.setOrder (align, tmp);
+} else {
+jalview.analysis.AlignmentSorter.setReverseOrder (align, jalview.analysis.AlignmentSorter.vectorSubsetToArray (tmp, align.getSequences ()));
+}}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentOrder");
+c$.getOrderByTree = Clazz_defineMethod (c$, "getOrderByTree", 
+ function (align, tree) {
+var nSeq = align.getHeight ();
+var tmp =  new java.util.ArrayList ();
+tmp = jalview.analysis.AlignmentSorter._sortByTree (tree.getTopNode (), tmp, align.getSequences ());
+if (tmp.size () != nSeq) {
+if (tmp.size () != nSeq) {
+jalview.analysis.AlignmentSorter.addStrays (align, tmp);
+}if (tmp.size () != nSeq) {
+System.err.println ("WARNING: tmp.size()=" + tmp.size () + " != nseq=" + nSeq + " in getOrderByTree - tree contains sequences not in alignment");
+}}return tmp;
+}, "jalview.datamodel.AlignmentI,jalview.analysis.NJTree");
+c$.sortByTree = Clazz_defineMethod (c$, "sortByTree", 
+function (align, tree) {
+var tmp = jalview.analysis.AlignmentSorter.getOrderByTree (align, tree);
+if (jalview.analysis.AlignmentSorter.lastTree !== tree) {
+jalview.analysis.AlignmentSorter.sortTreeAscending = true;
+jalview.analysis.AlignmentSorter.lastTree = tree;
+} else {
+jalview.analysis.AlignmentSorter.sortTreeAscending = !jalview.analysis.AlignmentSorter.sortTreeAscending;
+}if (jalview.analysis.AlignmentSorter.sortTreeAscending) {
+jalview.analysis.AlignmentSorter.setOrder (align, tmp);
+} else {
+jalview.analysis.AlignmentSorter.setReverseOrder (align, jalview.analysis.AlignmentSorter.vectorSubsetToArray (tmp, align.getSequences ()));
+}}, "jalview.datamodel.AlignmentI,jalview.analysis.NJTree");
+c$.addStrays = Clazz_defineMethod (c$, "addStrays", 
+ function (align, tmp) {
+var nSeq = align.getHeight ();
+for (var i = 0; i < nSeq; i++) {
+if (!tmp.contains (align.getSequenceAt (i))) {
+tmp.add (align.getSequenceAt (i));
+}}
+if (nSeq != tmp.size ()) {
+System.err.println ("ERROR: Size still not right even after addStrays");
+}}, "jalview.datamodel.AlignmentI,java.util.List");
+c$._sortByTree = Clazz_defineMethod (c$, "_sortByTree", 
+ function (node, tmp, seqset) {
+if (node == null) {
+return tmp;
+}var left = node.left ();
+var right = node.right ();
+if ((left == null) && (right == null)) {
+if (!node.isPlaceholder () && (node.element () != null)) {
+if (Clazz_instanceOf (node.element (), jalview.datamodel.SequenceI)) {
+if (!tmp.contains (node.element ())) {
+tmp.add (node.element ());
+}}}return tmp;
+} else {
+jalview.analysis.AlignmentSorter._sortByTree (left, tmp, seqset);
+jalview.analysis.AlignmentSorter._sortByTree (right, tmp, seqset);
+}return tmp;
+}, "jalview.datamodel.SequenceNode,java.util.List,java.util.List");
+c$.recoverOrder = Clazz_defineMethod (c$, "recoverOrder", 
+function (alignment) {
+var ids =  Clazz_newFloatArray (alignment.length, 0);
+for (var i = 0; i < alignment.length; i++) {
+ids[i] = ( new Float (alignment[i].getName ().substring (8))).floatValue ();
+}
+jalview.util.QuickSort.sortFloatObject (ids, alignment);
+}, "~A");
+c$.sortByAnnotationScore = Clazz_defineMethod (c$, "sortByAnnotationScore", 
+function (scoreLabel, alignment) {
+var seqs = alignment.getSequencesArray ();
+var hasScore =  Clazz_newBooleanArray (seqs.length, false);
+var hasScores = 0;
+var scores =  Clazz_newDoubleArray (seqs.length, 0);
+var min = 0;
+var max = 0;
+for (var i = 0; i < seqs.length; i++) {
+var scoreAnn = seqs[i].getAnnotation (scoreLabel);
+if (scoreAnn != null) {
+hasScores++;
+hasScore[i] = true;
+scores[i] = scoreAnn[0].getScore ();
+if (hasScores == 1) {
+max = min = scores[i];
+} else {
+if (max < scores[i]) {
+max = scores[i];
+}if (min > scores[i]) {
+min = scores[i];
+}}} else {
+hasScore[i] = false;
+}}
+if (hasScores == 0) {
+return;
+}if (hasScores < seqs.length) {
+for (var i = 0; i < seqs.length; i++) {
+if (!hasScore[i]) {
+scores[i] = (max + i + 1.0);
+}}
+}jalview.util.QuickSort.sortDouble (scores, seqs);
+if (jalview.analysis.AlignmentSorter.lastSortByScore !== scoreLabel) {
+jalview.analysis.AlignmentSorter.lastSortByScore = scoreLabel;
+jalview.analysis.AlignmentSorter.setOrder (alignment, seqs);
+} else {
+jalview.analysis.AlignmentSorter.setReverseOrder (alignment, seqs);
+}}, "~S,jalview.datamodel.AlignmentI");
+c$.sortByFeature = Clazz_defineMethod (c$, "sortByFeature", 
+function (featureLabel, groupLabel, start, stop, alignment, method) {
+jalview.analysis.AlignmentSorter.sortByFeature (featureLabel == null ? null :  Clazz_newArray (-1, [featureLabel]), groupLabel == null ? null :  Clazz_newArray (-1, [groupLabel]), start, stop, alignment, method);
+}, "~S,~S,~N,~N,jalview.datamodel.AlignmentI,~S");
+c$.containsIgnoreCase = Clazz_defineMethod (c$, "containsIgnoreCase", 
+ function (lab, labs) {
+if (labs == null) {
+return true;
+}if (lab == null) {
+return false;
+}for (var q = 0; q < labs.length; q++) {
+if (labs[q] != null && lab.equalsIgnoreCase (labs[q])) {
+return true;
+}}
+return false;
+}, "~S,~A");
+c$.sortByFeature = Clazz_defineMethod (c$, "sortByFeature", 
+function (featureLabels, groupLabels, start, stop, alignment, method) {
+if (method !== jalview.analysis.AlignmentSorter.FEATURE_SCORE && method !== jalview.analysis.AlignmentSorter.FEATURE_LABEL && method !== jalview.analysis.AlignmentSorter.FEATURE_DENSITY) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_sortbyfeature"));
+}var ignoreScore = method !== jalview.analysis.AlignmentSorter.FEATURE_SCORE;
+var scoreLabel =  new StringBuffer ();
+scoreLabel.append (start + stop + method);
+for (var i = 0; featureLabels != null && i < featureLabels.length; i++) {
+scoreLabel.append (featureLabels[i] == null ? "null" : featureLabels[i]);
+}
+for (var i = 0; groupLabels != null && i < groupLabels.length; i++) {
+scoreLabel.append (groupLabels[i] == null ? "null" : groupLabels[i]);
+}
+var seqs = alignment.getSequencesArray ();
+var hasScore =  Clazz_newBooleanArray (seqs.length, false);
+var hasScores = 0;
+var scores =  Clazz_newDoubleArray (seqs.length, 0);
+var seqScores =  Clazz_newIntArray (seqs.length, 0);
+var feats =  new Array (seqs.length);
+var min = 0;
+var max = 0;
+for (var i = 0; i < seqs.length; i++) {
+var sf = seqs[i].getSequenceFeatures ();
+if (sf == null) {
+sf =  new Array (0);
+} else {
+var tmp =  new Array (sf.length);
+for (var s = 0; s < tmp.length; s++) {
+tmp[s] = sf[s];
+}
+sf = tmp;
+}var sstart = (start == -1) ? start : seqs[i].findPosition (start);
+var sstop = (stop == -1) ? stop : seqs[i].findPosition (stop);
+seqScores[i] = 0;
+scores[i] = 0.0;
+var n = sf.length;
+for (var f = 0; f < sf.length; f++) {
+if ((sf[f].end < sstart || sf[f].begin > sstop) || (featureLabels != null && !jalview.analysis.AlignmentSorter.containsIgnoreCase (sf[f].type, featureLabels)) || (groupLabels != null && (sf[f].getFeatureGroup () != null && !jalview.analysis.AlignmentSorter.containsIgnoreCase (sf[f].getFeatureGroup (), groupLabels)))) {
+sf[f] = null;
+n--;
+} else {
+if (!ignoreScore && !Float.isNaN (sf[f].getScore ())) {
+if (seqScores[i] == 0) {
+hasScores++;
+}seqScores[i]++;
+hasScore[i] = true;
+scores[i] += sf[f].getScore ();
+}}}
+var fs;
+feats[i] = fs =  new Array (n);
+if (n > 0) {
+n = 0;
+for (var f = 0; f < sf.length; f++) {
+if (sf[f] != null) {
+(feats[i])[n++] = sf[f];
+}}
+if (method === jalview.analysis.AlignmentSorter.FEATURE_LABEL) {
+var labs =  new Array (fs.length);
+for (var l = 0; l < labs.length; l++) {
+labs[l] = (fs[l].getDescription () != null ? fs[l].getDescription () : fs[l].getType ());
+}
+jalview.util.QuickSort.sort (labs, (feats[i]));
+}}if (hasScore[i]) {
+scores[i] /= seqScores[i];
+if (hasScores == 1) {
+max = min = scores[i];
+} else {
+if (max < scores[i]) {
+max = scores[i];
+}if (min > scores[i]) {
+min = scores[i];
+}}}}
+if (method === jalview.analysis.AlignmentSorter.FEATURE_SCORE) {
+if (hasScores == 0) {
+return;
+}if (hasScores < seqs.length) {
+for (var i = 0; i < seqs.length; i++) {
+if (!hasScore[i]) {
+scores[i] = (max + 1 + i);
+} else {
+var nf = (feats[i] == null) ? 0 : (feats[i]).length;
+}}
+}jalview.util.QuickSort.sortDouble (scores, seqs);
+} else if (method === jalview.analysis.AlignmentSorter.FEATURE_DENSITY) {
+var fr = 0.9 / (1.0 * seqs.length);
+for (var i = 0; i < seqs.length; i++) {
+var nf;
+scores[i] = (0.05 + fr * i) + (nf = ((feats[i] == null) ? 0.0 : 1.0 * (feats[i]).length));
+}
+jalview.util.QuickSort.sortDouble (scores, seqs);
+} else {
+if (method === jalview.analysis.AlignmentSorter.FEATURE_LABEL) {
+throw  new Error (jalview.util.MessageManager.getString ("error.not_yet_implemented"));
+}}if (jalview.analysis.AlignmentSorter.lastSortByFeatureScore == null || !scoreLabel.toString ().equals (jalview.analysis.AlignmentSorter.lastSortByFeatureScore)) {
+jalview.analysis.AlignmentSorter.sortByFeatureScoreAscending = true;
+} else {
+jalview.analysis.AlignmentSorter.sortByFeatureScoreAscending = !jalview.analysis.AlignmentSorter.sortByFeatureScoreAscending;
+}if (jalview.analysis.AlignmentSorter.sortByFeatureScoreAscending) {
+jalview.analysis.AlignmentSorter.setOrder (alignment, seqs);
+} else {
+jalview.analysis.AlignmentSorter.setReverseOrder (alignment, seqs);
+}jalview.analysis.AlignmentSorter.lastSortByFeatureScore = scoreLabel.toString ();
+}, "~A,~A,~N,~N,jalview.datamodel.AlignmentI,~S");
+Clazz_defineStatics (c$,
+"sortIdAscending", true,
+"lastGroupHash", 0,
+"sortGroupAscending", true,
+"lastOrder", null,
+"sortOrderAscending", true,
+"lastTree", null,
+"sortTreeAscending", true,
+"lastSortByScore", null,
+"sortByScoreAscending", true,
+"lastSortByFeatureScore", null,
+"sortByFeatureScoreAscending", true,
+"sortLengthAscending", false,
+"FEATURE_SCORE", "average_score",
+"FEATURE_LABEL", "text",
+"FEATURE_DENSITY", "density");
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["jalview.datamodel.ASequenceI"], "jalview.datamodel.SequenceI", null, function () {
+Clazz_declareInterface (jalview.datamodel, "SequenceI", jalview.datamodel.ASequenceI);
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_declareInterface (jalview.datamodel, "ASequenceI");
+Clazz_declarePackage ("jalview.util");
+Clazz_load (null, "jalview.util.Comparison", ["java.util.ArrayList"], function () {
+c$ = Clazz_declareType (jalview.util, "Comparison");
+c$.compare = Clazz_defineMethod (c$, "compare", 
+function (ii, jj) {
+return jalview.util.Comparison.compare (ii, jj, 0, ii.getLength () - 1);
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
+c$.compare = Clazz_defineMethod (c$, "compare", 
+function (ii, jj, start, end) {
+var si = ii.getSequenceAsString ();
+var sj = jj.getSequenceAsString ();
+var ilen = si.length - 1;
+var jlen = sj.length - 1;
+while (jalview.util.Comparison.isGap (si.charAt (start + ilen))) {
+ilen--;
+}
+while (jalview.util.Comparison.isGap (sj.charAt (start + jlen))) {
+jlen--;
+}
+var count = 0;
+var match = 0;
+var pid = -1;
+if (ilen > jlen) {
+for (var j = 0; j < jlen; j++) {
+if (si.substring (start + j, start + j + 1).equals (sj.substring (start + j, start + j + 1))) {
+match++;
+}count++;
+}
+pid = match / ilen * 100;
+} else {
+for (var j = 0; j < jlen; j++) {
+if (si.substring (start + j, start + j + 1).equals (sj.substring (start + j, start + j + 1))) {
+match++;
+}count++;
+}
+pid = match / jlen * 100;
+}return pid;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~N,~N");
+c$.PID = Clazz_defineMethod (c$, "PID", 
+function (seq1, seq2) {
+return jalview.util.Comparison.PID (seq1, seq2, 0, seq1.length);
+}, "~S,~S");
+c$.PID = Clazz_defineMethod (c$, "PID", 
+function (seq1, seq2, start, end) {
+return jalview.util.Comparison.PID (seq1, seq2, start, end, true, false);
+}, "~S,~S,~N,~N");
+c$.PID = Clazz_defineMethod (c$, "PID", 
+function (seq1, seq2, start, end, wcGaps, ungappedOnly) {
+var s1len = seq1.length;
+var s2len = seq2.length;
+var len = Math.min (s1len, s2len);
+if (end < len) {
+len = end;
+}if (len < start) {
+start = len - 1;
+}var elen = len - start;
+var bad = 0;
+var chr1;
+var chr2;
+var agap;
+for (var i = start; i < len; i++) {
+chr1 = seq1.charAt (i);
+chr2 = seq2.charAt (i);
+agap = jalview.util.Comparison.isGap (chr1) || jalview.util.Comparison.isGap (chr2);
+if ('a' <= chr1 && chr1 <= 'z') {
+chr1 = String.fromCharCode (chr1.charCodeAt (0) - 32);
+}if ('a' <= chr2 && chr2 <= 'z') {
+chr2 = String.fromCharCode (chr2.charCodeAt (0) - 32);
+}if (chr1 != chr2) {
+if (agap) {
+if (ungappedOnly) {
+elen--;
+} else if (!wcGaps) {
+bad++;
+}} else {
+bad++;
+}}}
+if (elen < 1) {
+return 0;
+}return (100 * (elen - bad)) / elen;
+}, "~S,~S,~N,~N,~B,~B");
+c$.isGap = Clazz_defineMethod (c$, "isGap", 
+function (c) {
+return (c == '-' || c == '.' || c == ' ') ? true : false;
+}, "~S");
+c$.isNucleotide = Clazz_defineMethod (c$, "isNucleotide", 
+function (seqs) {
+if (seqs == null) {
+return false;
+}var ntCount = 0;
+var aaCount = 0;
+for (var seq, $seq = 0, $$seq = seqs; $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {
+if (seq == null) {
+continue;
+}for (var c, $c = 0, $$c = seq.getSequence (); $c < $$c.length && ((c = $$c[$c]) || true); $c++) {
+if ('a' <= c && c <= 'z') {
+c = String.fromCharCode (c.charCodeAt (0) - 32);
+}if (c == 'A' || c == 'G' || c == 'C' || c == 'T' || c == 'U') {
+ntCount++;
+} else if (!jalview.util.Comparison.isGap (c)) {
+aaCount++;
+}}
+}
+if (ntCount * 100 > 85 * (ntCount + aaCount)) {
+return true;
+} else {
+return false;
+}}, "~A");
+c$.isNucleotide2 = Clazz_defineMethod (c$, "isNucleotide2", 
+function (seqs) {
+if (seqs == null) {
+return false;
+}var flattened =  new java.util.ArrayList ();
+for (var ss, $ss = 0, $$ss = seqs; $ss < $$ss.length && ((ss = $$ss[$ss]) || true); $ss++) {
+for (var s, $s = 0, $$s = ss; $s < $$s.length && ((s = $$s[$s]) || true); $s++) {
+flattened.add (s);
+}
+}
+var oneDArray = flattened.toArray ( new Array (flattened.size ()));
+return jalview.util.Comparison.isNucleotide (oneDArray);
+}, "~A");
+Clazz_defineStatics (c$,
+"EIGHTY_FIVE", 85,
+"TO_UPPER_CASE", 32,
+"GAP_SPACE", ' ',
+"GAP_DOT", '.',
+"GAP_DASH", '-');
+c$.GapChars = c$.prototype.GapChars =  String.instantialize ( Clazz_newCharArray (-1, [' ', '.', '-']));
+Clazz_defineStatics (c$,
+"caseShift", 32);
+});
+Clazz_declarePackage ("jalview.util");
+Clazz_load (null, "jalview.util.QuickSort", ["java.lang.Float", "java.util.Arrays"], function () {
+c$ = Clazz_declareType (jalview.util, "QuickSort");
+c$.sortInt = Clazz_defineMethod (c$, "sortInt", 
+function (arr, s) {
+jalview.util.QuickSort.sortInt (arr, 0, arr.length - 1, s);
+}, "~A,~A");
+c$.sortFloatObject = Clazz_defineMethod (c$, "sortFloatObject", 
+function (arr, s) {
+jalview.util.QuickSort.sortFloat (arr, 0, arr.length - 1, s);
+}, "~A,~A");
+c$.sortDouble = Clazz_defineMethod (c$, "sortDouble", 
+function (arr, s) {
+jalview.util.QuickSort.sortDouble (arr, 0, arr.length - 1, s);
+}, "~A,~A");
+c$.sort = Clazz_defineMethod (c$, "sort", 
+function (arr, s) {
+jalview.util.QuickSort.stringSort (arr, 0, arr.length - 1, s);
+}, "~A,~A");
+c$.stringSort = Clazz_defineMethod (c$, "stringSort", 
+ function (arr, p, r, s) {
+var q;
+if (p < r) {
+q = jalview.util.QuickSort.stringPartition (arr, p, r, s);
+jalview.util.QuickSort.stringSort (arr, p, q, s);
+jalview.util.QuickSort.stringSort (arr, q + 1, r, s);
+}}, "~A,~N,~N,~A");
+c$.sortFloat = Clazz_defineMethod (c$, "sortFloat", 
+ function (arr, p, r, s) {
+var q;
+if (p < r) {
+q = jalview.util.QuickSort.partitionFloat (arr, p, r, s);
+jalview.util.QuickSort.sortFloat (arr, p, q, s);
+jalview.util.QuickSort.sortFloat (arr, q + 1, r, s);
+}}, "~A,~N,~N,~A");
+c$.sortInt = Clazz_defineMethod (c$, "sortInt", 
+ function (arr, p, r, s) {
+var q;
+if (p < r) {
+q = jalview.util.QuickSort.partitionInt (arr, p, r, s);
+jalview.util.QuickSort.sortInt (arr, p, q, s);
+jalview.util.QuickSort.sortInt (arr, q + 1, r, s);
+}}, "~A,~N,~N,~A");
+c$.partitionFloat = Clazz_defineMethod (c$, "partitionFloat", 
+ function (arr, p, r, s) {
+var x = arr[p];
+var i = p - 1;
+var j = r + 1;
+while (true) {
+do {
+j = j - 1;
+} while (arr[j] > x);
+do {
+i = i + 1;
+} while (arr[i] < x);
+if (i < j) {
+var tmp = arr[i];
+arr[i] = arr[j];
+arr[j] = tmp;
+var tmp2 = s[i];
+s[i] = s[j];
+s[j] = tmp2;
+} else {
+return j;
+}}
+}, "~A,~N,~N,~A");
+c$.partitionInt = Clazz_defineMethod (c$, "partitionInt", 
+ function (arr, p, r, s) {
+var x = arr[p];
+var i = p - 1;
+var j = r + 1;
+while (true) {
+do {
+j = j - 1;
+} while (arr[j] > x);
+do {
+i = i + 1;
+} while (arr[i] < x);
+if (i < j) {
+var tmp = arr[i];
+arr[i] = arr[j];
+arr[j] = tmp;
+var tmp2 = s[i];
+s[i] = s[j];
+s[j] = tmp2;
+} else {
+return j;
+}}
+}, "~A,~N,~N,~A");
+c$.stringPartition = Clazz_defineMethod (c$, "stringPartition", 
+ function (arr, p, r, s) {
+var x = arr[p];
+var i = p - 1;
+var j = r + 1;
+while (true) {
+do {
+j = j - 1;
+} while (arr[j].compareTo (x) < 0);
+do {
+i = i + 1;
+} while (arr[i].compareTo (x) > 0);
+if (i < j) {
+var tmp = arr[i];
+arr[i] = arr[j];
+arr[j] = tmp;
+var tmp2 = s[i];
+s[i] = s[j];
+s[j] = tmp2;
+} else {
+return j;
+}}
+}, "~A,~N,~N,~A");
+c$.sortFloatChar = Clazz_defineMethod (c$, "sortFloatChar", 
+function (arr, s) {
+var f1 =  Clazz_newFloatArray (arr.length, 0);
+var s1 =  Clazz_newCharArray (s.length, '\0');
+var nextZeroValue = 0;
+var nextNonZeroValue = arr.length - 1;
+for (var i = 0; i < arr.length; i++) {
+var val = arr[i];
+if (val > 0) {
+f1[nextNonZeroValue] = val;
+s1[nextNonZeroValue] = s[i];
+nextNonZeroValue--;
+} else {
+f1[nextZeroValue] = val;
+s1[nextZeroValue] = s[i];
+nextZeroValue++;
+}}
+System.arraycopy (f1, 0, arr, 0, nextZeroValue);
+System.arraycopy (s1, 0, s, 0, nextZeroValue);
+if (nextZeroValue == arr.length) {
+return;
+}var nonZeroFloats = java.util.Arrays.copyOfRange (f1, nextZeroValue, f1.length);
+var nonZeroChars = java.util.Arrays.copyOfRange (s1, nextZeroValue, s1.length);
+jalview.util.QuickSort.externalSortFloat (nonZeroFloats, nonZeroChars);
+System.arraycopy (nonZeroFloats, 0, arr, nextZeroValue, nonZeroFloats.length);
+System.arraycopy (nonZeroChars, 0, s, nextZeroValue, nonZeroChars.length);
+}, "~A,~A");
+c$.externalSortFloat = Clazz_defineMethod (c$, "externalSortFloat", 
+ function (arr, s) {
+var length = arr.length;
+var indices = jalview.util.QuickSort.makeIndexArray (length);
+java.util.Arrays.sort (indices,  new jalview.util.QuickSort.FloatComparator (arr));
+var sortedFloats =  Clazz_newFloatArray (length, 0);
+var sortedChars =  Clazz_newCharArray (s.length, '\0');
+for (var i = 0; i < length; i++) {
+sortedFloats[i] = arr[indices[i]];
+sortedChars[i] = s[indices[i]];
+}
+System.arraycopy (sortedFloats, 0, arr, 0, length);
+System.arraycopy (sortedChars, 0, s, 0, s.length);
+}, "~A,~A");
+c$.makeIndexArray = Clazz_defineMethod (c$, "makeIndexArray", 
+ function (length) {
+var indices =  new Array (length);
+for (var i = 0; i < length; i++) {
+indices[i] = new Integer (i);
+}
+return indices;
+}, "~N");
+c$.sortIntChar = Clazz_defineMethod (c$, "sortIntChar", 
+function (arr, s) {
+var f1 =  Clazz_newIntArray (arr.length, 0);
+var s1 =  Clazz_newCharArray (s.length, '\0');
+var nextZeroValue = 0;
+var nextNonZeroValue = arr.length - 1;
+for (var i = 0; i < arr.length; i++) {
+var val = arr[i];
+if (val > 0) {
+f1[nextNonZeroValue] = val;
+s1[nextNonZeroValue] = s[i];
+nextNonZeroValue--;
+} else {
+f1[nextZeroValue] = val;
+s1[nextZeroValue] = s[i];
+nextZeroValue++;
+}}
+System.arraycopy (f1, 0, arr, 0, nextZeroValue);
+System.arraycopy (s1, 0, s, 0, nextZeroValue);
+if (nextZeroValue == arr.length) {
+return;
+}var nonZeroInts = java.util.Arrays.copyOfRange (f1, nextZeroValue, f1.length);
+var nonZeroChars = java.util.Arrays.copyOfRange (s1, nextZeroValue, s1.length);
+jalview.util.QuickSort.externalSortInt (nonZeroInts, nonZeroChars);
+System.arraycopy (nonZeroInts, 0, arr, nextZeroValue, nonZeroInts.length);
+System.arraycopy (nonZeroChars, 0, s, nextZeroValue, nonZeroChars.length);
+}, "~A,~A");
+c$.externalSortInt = Clazz_defineMethod (c$, "externalSortInt", 
+ function (arr, s) {
+var length = arr.length;
+var indices = jalview.util.QuickSort.makeIndexArray (length);
+java.util.Arrays.sort (indices,  new jalview.util.QuickSort.IntComparator (arr));
+var sortedInts =  Clazz_newIntArray (length, 0);
+var sortedChars =  Clazz_newCharArray (s.length, '\0');
+for (var i = 0; i < length; i++) {
+sortedInts[i] = arr[indices[i]];
+sortedChars[i] = s[indices[i]];
+}
+System.arraycopy (sortedInts, 0, arr, 0, length);
+System.arraycopy (sortedChars, 0, s, 0, s.length);
+}, "~A,~A");
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.values = null;
+Clazz_instantialize (this, arguments);
+}, jalview.util.QuickSort, "FloatComparator", null, java.util.Comparator);
+Clazz_makeConstructor (c$, 
+function (a) {
+this.values = a;
+}, "~A");
+Clazz_overrideMethod (c$, "compare", 
+function (a, b) {
+return Float.compare (this.values[a.intValue ()], this.values[b]);
+}, "Integer,Integer");
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.values = null;
+Clazz_instantialize (this, arguments);
+}, jalview.util.QuickSort, "IntComparator", null, java.util.Comparator);
+Clazz_makeConstructor (c$, 
+function (a) {
+this.values = a;
+}, "~A");
+Clazz_overrideMethod (c$, "compare", 
+function (a, b) {
+return Integer.compare (this.values[a], this.values[b]);
+}, "Integer,Integer");
+c$ = Clazz_p0p ();
+});
+Clazz_declarePackage ("jalview.analysis");
+Clazz_load (["java.lang.Enum", "java.util.HashMap"], "jalview.analysis.AnnotationSorter", ["jalview.analysis.AlignmentUtils", "java.lang.UnsupportedOperationException", "java.util.Arrays"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.alignment = null;
+this.showAutocalcAbove = false;
+this.sequenceIndices = null;
+this.bySequenceAndLabel = null;
+this.byLabelAndSequence = null;
+this.noSort = null;
+Clazz_instantialize (this, arguments);
+}, jalview.analysis, "AnnotationSorter");
+Clazz_prepareFields (c$, function () {
+this.sequenceIndices =  new java.util.HashMap ();
+this.bySequenceAndLabel = ((Clazz_isClassDefined ("jalview.analysis.AnnotationSorter$1") ? 0 : jalview.analysis.AnnotationSorter.$AnnotationSorter$1$ ()), Clazz_innerTypeInstance (jalview.analysis.AnnotationSorter$1, this, null));
+this.byLabelAndSequence = ((Clazz_isClassDefined ("jalview.analysis.AnnotationSorter$2") ? 0 : jalview.analysis.AnnotationSorter.$AnnotationSorter$2$ ()), Clazz_innerTypeInstance (jalview.analysis.AnnotationSorter$2, this, null));
+this.noSort = ((Clazz_isClassDefined ("jalview.analysis.AnnotationSorter$3") ? 0 : jalview.analysis.AnnotationSorter.$AnnotationSorter$3$ ()), Clazz_innerTypeInstance (jalview.analysis.AnnotationSorter$3, this, null));
+});
+Clazz_makeConstructor (c$, 
+function (alignmentI, showAutocalculatedAbove) {
+this.alignment = alignmentI;
+this.showAutocalcAbove = showAutocalculatedAbove;
+}, "jalview.datamodel.AlignmentI,~B");
+Clazz_defineMethod (c$, "sort", 
+function (alignmentAnnotations, order) {
+if (alignmentAnnotations == null) {
+return;
+}this.saveSequenceIndices (alignmentAnnotations);
+var comparator = this.getComparator (order);
+if (alignmentAnnotations != null) {
+{
+java.util.Arrays.sort (alignmentAnnotations, comparator);
+}}}, "~A,jalview.analysis.AnnotationSorter.SequenceAnnotationOrder");
+Clazz_defineMethod (c$, "saveSequenceIndices", 
+ function (alignmentAnnotations) {
+this.sequenceIndices.clear ();
+for (var ann, $ann = 0, $$ann = alignmentAnnotations; $ann < $$ann.length && ((ann = $$ann[$ann]) || true); $ann++) {
+var seq = ann.sequenceRef;
+if (seq != null) {
+var index = jalview.analysis.AlignmentUtils.getSequenceIndex (this.alignment, seq);
+this.sequenceIndices.put (seq, new Integer (index));
+}}
+}, "~A");
+Clazz_defineMethod (c$, "getComparator", 
+ function (order) {
+if (order == null) {
+return this.noSort;
+}switch (order) {
+case jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.NONE:
+return this.noSort;
+case jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.SEQUENCE_AND_LABEL:
+return this.bySequenceAndLabel;
+case jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.LABEL_AND_SEQUENCE:
+return this.byLabelAndSequence;
+default:
+throw  new UnsupportedOperationException (order.toString ());
+}
+}, "jalview.analysis.AnnotationSorter.SequenceAnnotationOrder");
+Clazz_defineMethod (c$, "compareLabels", 
+ function (o1, o2) {
+if (o1 == null || o2 == null) {
+return 0;
+}var label1 = o1.label;
+var label2 = o2.label;
+if (label1 == null && label2 == null) {
+return 0;
+}if (label1 == null) {
+return -1;
+}if (label2 == null) {
+return 1;
+}return label1.toUpperCase ().compareTo (label2.toUpperCase ());
+}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");
+Clazz_defineMethod (c$, "compareSequences", 
+ function (o1, o2) {
+var seq1 = o1.sequenceRef;
+var seq2 = o2.sequenceRef;
+if (seq1 == null && seq2 == null) {
+return 0;
+}if (seq1 == null) {
+return this.showAutocalcAbove ? -1 : 1;
+}if (seq2 == null) {
+return this.showAutocalcAbove ? 1 : -1;
+}var index1 = (this.sequenceIndices.get (seq1)).intValue ();
+var index2 = (this.sequenceIndices.get (seq2)).intValue ();
+if (index1 == index2) {
+return 0;
+}if (index1 == -1) {
+return -1;
+}if (index2 == -1) {
+return 1;
+}return Integer.compare (index1, index2);
+}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");
+c$.$AnnotationSorter$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.analysis, "AnnotationSorter$1", null, java.util.Comparator);
+Clazz_overrideMethod (c$, "compare", 
+function (o1, o2) {
+if (o1 == null && o2 == null) {
+return 0;
+}if (o1 == null) {
+return -1;
+}if (o2 == null) {
+return 1;
+}if (o1.sequenceRef == null && o2.sequenceRef == null) {
+return 0;
+}var sequenceOrder = this.b$["jalview.analysis.AnnotationSorter"].compareSequences (o1, o2);
+return sequenceOrder == 0 ? this.b$["jalview.analysis.AnnotationSorter"].compareLabels (o1, o2) : sequenceOrder;
+}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");
+c$ = Clazz_p0p ();
+};
+c$.$AnnotationSorter$2$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.analysis, "AnnotationSorter$2", null, java.util.Comparator);
+Clazz_overrideMethod (c$, "compare", 
+function (o1, o2) {
+if (o1 == null && o2 == null) {
+return 0;
+}if (o1 == null) {
+return -1;
+}if (o2 == null) {
+return 1;
+}if (o1.sequenceRef == null && o2.sequenceRef == null) {
+return 0;
+}if (o1.sequenceRef == null) {
+return this.b$["jalview.analysis.AnnotationSorter"].showAutocalcAbove ? -1 : 1;
+}if (o2.sequenceRef == null) {
+return this.b$["jalview.analysis.AnnotationSorter"].showAutocalcAbove ? 1 : -1;
+}var labelOrder = this.b$["jalview.analysis.AnnotationSorter"].compareLabels (o1, o2);
+return labelOrder == 0 ? this.b$["jalview.analysis.AnnotationSorter"].compareSequences (o1, o2) : labelOrder;
+}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");
+c$ = Clazz_p0p ();
+};
+c$.$AnnotationSorter$3$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.analysis, "AnnotationSorter$3", null, java.util.Comparator);
+Clazz_overrideMethod (c$, "compare", 
+function (o1, o2) {
+if (o1 != null && o2 != null) {
+if (o1.sequenceRef == null && o2.sequenceRef != null) {
+return this.b$["jalview.analysis.AnnotationSorter"].showAutocalcAbove ? -1 : 1;
+}if (o1.sequenceRef != null && o2.sequenceRef == null) {
+return this.b$["jalview.analysis.AnnotationSorter"].showAutocalcAbove ? 1 : -1;
+}}return 0;
+}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");
+c$ = Clazz_p0p ();
+};
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.description = null;
+Clazz_instantialize (this, arguments);
+}, jalview.analysis.AnnotationSorter, "SequenceAnnotationOrder", Enum);
+Clazz_makeConstructor (c$, 
+ function (a) {
+this.description = a;
+}, "~S");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return this.description;
+});
+c$.forDescription = Clazz_defineMethod (c$, "forDescription", 
+function (a) {
+for (var order, $order = 0, $$order = jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.values (); $order < $$order.length && ((order = $$order[$order]) || true); $order++) {
+if (order.toString ().equals (a)) {
+return order;
+}}
+return null;
+}, "~S");
+Clazz_defineEnumConstant (c$, "SEQUENCE_AND_LABEL", 0, ["Sequence"]);
+Clazz_defineEnumConstant (c$, "LABEL_AND_SEQUENCE", 1, ["Label"]);
+Clazz_defineEnumConstant (c$, "NONE", 2, ["No sort"]);
+c$ = Clazz_p0p ();
+});
+Clazz_declarePackage ("jalview.analysis");
+Clazz_load (null, "jalview.analysis.AlignmentUtils", ["jalview.analysis.CodonComparator", "jalview.datamodel.AlignedCodonFrame", "$.Alignment", "$.AlignmentAnnotation", "$.DBRefEntry", "$.DBRefSource", "$.FeatureProperties", "$.SearchResults", "$.Sequence", "jalview.schemes.ResidueProperties", "jalview.util.DBRefUtils", "$.MapList", "$.MappingUtils", "java.lang.StringBuilder", "java.util.ArrayList", "$.Arrays", "$.HashMap", "$.HashSet", "$.LinkedHashMap", "$.LinkedHashSet", "$.TreeMap"], function () {
+c$ = Clazz_declareType (jalview.analysis, "AlignmentUtils");
+c$.expandContext = Clazz_defineMethod (c$, "expandContext", 
+function (core, flankSize) {
+var sq =  new java.util.ArrayList ();
+var maxoffset = 0;
+for (var s, $s = core.getSequences ().iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {
+var newSeq = s.deriveSequence ();
+var newSeqStart = newSeq.getStart () - 1;
+if (newSeqStart > maxoffset && newSeq.getDatasetSequence ().getStart () < s.getStart ()) {
+maxoffset = newSeqStart;
+}sq.add (newSeq);
+}
+if (flankSize > -1) {
+maxoffset = Math.min (maxoffset, flankSize);
+}for (var s, $s = sq.iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {
+var ds = s;
+while (ds.getDatasetSequence () != null) {
+ds = ds.getDatasetSequence ();
+}
+var s_end = s.findPosition (s.getStart () + s.getLength ());
+var ustream_ds = s.getStart () - ds.getStart ();
+var dstream_ds = ds.getEnd () - s_end;
+var offset = maxoffset - ustream_ds;
+if (flankSize >= 0) {
+if (flankSize < ustream_ds) {
+offset = maxoffset - flankSize;
+ustream_ds = flankSize;
+}if (flankSize <= dstream_ds) {
+dstream_ds = flankSize - 1;
+}}var upstream =  String.instantialize (ds.getSequence (s.getStart () - 1 - ustream_ds, s.getStart () - 1)).toLowerCase ().toCharArray ();
+var downstream =  String.instantialize (ds.getSequence (s_end - 1, s_end + dstream_ds)).toLowerCase ().toCharArray ();
+var coreseq = s.getSequence ();
+var nseq =  Clazz_newCharArray (offset + upstream.length + downstream.length + coreseq.length, '\0');
+var c = core.getGapCharacter ();
+var p = 0;
+for (; p < offset; p++) {
+nseq[p] = c;
+}
+System.arraycopy (upstream, 0, nseq, p, upstream.length);
+System.arraycopy (coreseq, 0, nseq, p + upstream.length, coreseq.length);
+System.arraycopy (downstream, 0, nseq, p + coreseq.length + upstream.length, downstream.length);
+s.setSequence ( String.instantialize (nseq));
+s.setStart (s.getStart () - ustream_ds);
+s.setEnd (s_end + downstream.length);
+}
+var newAl =  new jalview.datamodel.Alignment (sq.toArray ( new Array (0)));
+for (var s, $s = sq.iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {
+if (s.getAnnotation () != null) {
+for (var aa, $aa = 0, $$aa = s.getAnnotation (); $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {
+aa.adjustForAlignment ();
+newAl.addAnnotation (aa);
+}
+}}
+newAl.setDataset (core.getDataset ());
+return newAl;
+}, "jalview.datamodel.AlignmentI,~N");
+c$.getSequenceIndex = Clazz_defineMethod (c$, "getSequenceIndex", 
+function (al, seq) {
+var result = -1;
+var pos = 0;
+for (var alSeq, $alSeq = al.getSequences ().iterator (); $alSeq.hasNext () && ((alSeq = $alSeq.next ()) || true);) {
+if (alSeq === seq) {
+result = pos;
+break;
+}pos++;
+}
+return result;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI");
+c$.getSequencesByName = Clazz_defineMethod (c$, "getSequencesByName", 
+function (al) {
+var theMap =  new java.util.LinkedHashMap ();
+for (var seq, $seq = al.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+var name = seq.getName ();
+if (name != null) {
+var seqs = theMap.get (name);
+if (seqs == null) {
+seqs =  new java.util.ArrayList ();
+theMap.put (name, seqs);
+}seqs.add (seq);
+}}
+return theMap;
+}, "jalview.datamodel.AlignmentI");
+c$.mapProteinToCdna = Clazz_defineMethod (c$, "mapProteinToCdna", 
+function (proteinAlignment, cdnaAlignment) {
+if (proteinAlignment == null || cdnaAlignment == null) {
+return false;
+}var mappedDna =  new java.util.HashSet ();
+var mappedProtein =  new java.util.HashSet ();
+var mappingPerformed = jalview.analysis.AlignmentUtils.mapProteinToCdna (proteinAlignment, cdnaAlignment, mappedDna, mappedProtein, true);
+mappingPerformed = new Boolean (mappingPerformed | jalview.analysis.AlignmentUtils.mapProteinToCdna (proteinAlignment, cdnaAlignment, mappedDna, mappedProtein, false)).valueOf ();
+return mappingPerformed;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");
+c$.mapProteinToCdna = Clazz_defineMethod (c$, "mapProteinToCdna", 
+function (proteinAlignment, cdnaAlignment, mappedDna, mappedProtein, xrefsOnly) {
+var mappingPerformed = false;
+var thisSeqs = proteinAlignment.getSequences ();
+for (var aaSeq, $aaSeq = thisSeqs.iterator (); $aaSeq.hasNext () && ((aaSeq = $aaSeq.next ()) || true);) {
+var proteinMapped = false;
+var acf =  new jalview.datamodel.AlignedCodonFrame ();
+for (var cdnaSeq, $cdnaSeq = cdnaAlignment.getSequences ().iterator (); $cdnaSeq.hasNext () && ((cdnaSeq = $cdnaSeq.next ()) || true);) {
+if (xrefsOnly && !jalview.analysis.AlignmentUtils.haveCrossRef (aaSeq, cdnaSeq)) {
+continue;
+}if (!xrefsOnly && (mappedProtein.contains (aaSeq) || mappedDna.contains (cdnaSeq))) {
+continue;
+}if (!jalview.analysis.AlignmentUtils.mappingExists (proteinAlignment.getCodonFrames (), aaSeq.getDatasetSequence (), cdnaSeq.getDatasetSequence ())) {
+var map = jalview.analysis.AlignmentUtils.mapProteinToCdna (aaSeq, cdnaSeq);
+if (map != null) {
+acf.addMap (cdnaSeq, aaSeq, map);
+mappingPerformed = true;
+proteinMapped = true;
+mappedDna.add (cdnaSeq);
+mappedProtein.add (aaSeq);
+}}}
+if (proteinMapped) {
+proteinAlignment.addCodonFrame (acf);
+}}
+return mappingPerformed;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI,java.util.Set,java.util.Set,~B");
+c$.mappingExists = Clazz_defineMethod (c$, "mappingExists", 
+function (set, aaSeq, cdnaSeq) {
+if (set != null) {
+for (var acf, $acf = set.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+if (cdnaSeq === acf.getDnaForAaSeq (aaSeq)) {
+return true;
+}}
+}return false;
+}, "java.util.Set,jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
+c$.mapProteinToCdna = Clazz_defineMethod (c$, "mapProteinToCdna", 
+function (proteinSeq, cdnaSeq) {
+var proteinDataset = proteinSeq.getDatasetSequence ();
+var aaSeqChars = proteinDataset != null ? proteinDataset.getSequence () : proteinSeq.getSequence ();
+var cdnaDataset = cdnaSeq.getDatasetSequence ();
+var cdnaSeqChars = cdnaDataset != null ? cdnaDataset.getSequence () : cdnaSeq.getSequence ();
+if (aaSeqChars == null || cdnaSeqChars == null) {
+return null;
+}var mappedLength = 3 * aaSeqChars.length;
+var cdnaLength = cdnaSeqChars.length;
+var cdnaStart = 1;
+var cdnaEnd = cdnaLength;
+var proteinStart = 1;
+var proteinEnd = aaSeqChars.length;
+if (cdnaLength != mappedLength && cdnaLength > 2) {
+var lastCodon = String.valueOf (cdnaSeqChars, cdnaLength - 3, 3).toUpperCase ();
+for (var stop, $stop = jalview.schemes.ResidueProperties.STOP.iterator (); $stop.hasNext () && ((stop = $stop.next ()) || true);) {
+if (lastCodon.equals (stop)) {
+cdnaEnd -= 3;
+cdnaLength -= 3;
+break;
+}}
+}if (cdnaLength != mappedLength && cdnaLength > 2 && String.valueOf (cdnaSeqChars, 0, 3).toUpperCase ().equals (jalview.schemes.ResidueProperties.START)) {
+cdnaStart += 3;
+cdnaLength -= 3;
+}if (cdnaLength != mappedLength) {
+return null;
+}if (!jalview.analysis.AlignmentUtils.translatesAs (cdnaSeqChars, cdnaStart - 1, aaSeqChars)) {
+return null;
+}var map =  new jalview.util.MapList ( Clazz_newIntArray (-1, [cdnaStart, cdnaEnd]),  Clazz_newIntArray (-1, [1, proteinEnd]), 3, 1);
+return map;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
+c$.translatesAs = Clazz_defineMethod (c$, "translatesAs", 
+function (cdnaSeqChars, cdnaStart, aaSeqChars) {
+var aaResidue = 0;
+for (var i = cdnaStart; i < cdnaSeqChars.length - 2 && aaResidue < aaSeqChars.length; i += 3, aaResidue++) {
+var codon = String.valueOf (cdnaSeqChars, i, 3);
+var translated = jalview.schemes.ResidueProperties.codonTranslate (codon);
+var aaRes = aaSeqChars[aaResidue];
+if ((translated == null || "STOP".equals (translated)) && aaRes == 'X') {
+continue;
+}if (translated == null || !(aaRes == translated.charAt (0))) {
+return false;
+}}
+return (aaResidue == aaSeqChars.length);
+}, "~A,~N,~A");
+c$.alignSequenceAs = Clazz_defineMethod (c$, "alignSequenceAs", 
+function (seq, al, gap, preserveMappedGaps, preserveUnmappedGaps) {
+var mappings = al.getCodonFrame (seq);
+if (mappings == null || mappings.isEmpty ()) {
+return false;
+}var alignFrom = null;
+var mapping = null;
+for (var mp, $mp = mappings.iterator (); $mp.hasNext () && ((mp = $mp.next ()) || true);) {
+alignFrom = mp.findAlignedSequence (seq.getDatasetSequence (), al);
+if (alignFrom != null) {
+mapping = mp;
+break;
+}}
+if (alignFrom == null) {
+return false;
+}jalview.analysis.AlignmentUtils.alignSequenceAs (seq, alignFrom, mapping, gap, al.getGapCharacter (), preserveMappedGaps, preserveUnmappedGaps);
+return true;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,~S,~B,~B");
+c$.alignSequenceAs = Clazz_defineMethod (c$, "alignSequenceAs", 
+function (alignTo, alignFrom, mapping, myGap, sourceGap, preserveMappedGaps, preserveUnmappedGaps) {
+var thisSeq = alignTo.getSequence ();
+var thatAligned = alignFrom.getSequence ();
+var thisAligned =  new StringBuilder (2 * thisSeq.length);
+var thisSeqPos = 0;
+var sourceDsPos = 0;
+var basesWritten = 0;
+var myGapChar = myGap.charAt (0);
+var ratio = myGap.length;
+var sourceGapMappedLength = 0;
+var inExon = false;
+for (var sourceChar, $sourceChar = 0, $$sourceChar = thatAligned; $sourceChar < $$sourceChar.length && ((sourceChar = $$sourceChar[$sourceChar]) || true); $sourceChar++) {
+if (sourceChar == sourceGap) {
+sourceGapMappedLength += ratio;
+continue;
+}sourceDsPos++;
+var mappedPos = mapping.getMappedRegion (alignTo, alignFrom, sourceDsPos);
+if (mappedPos == null) {
+System.err.println ("Can't align: no codon mapping to residue " + sourceDsPos + "(" + sourceChar + ")");
+return;
+}var mappedCodonStart = mappedPos[0];
+var mappedCodonEnd = mappedPos[mappedPos.length - 1];
+var trailingCopiedGap =  new StringBuilder ();
+var intronLength = 0;
+while (basesWritten < mappedCodonEnd && thisSeqPos < thisSeq.length) {
+var c = thisSeq[thisSeqPos++];
+if (c != myGapChar) {
+basesWritten++;
+if (basesWritten < mappedCodonStart) {
+if (preserveUnmappedGaps && trailingCopiedGap.length () > 0) {
+thisAligned.append (trailingCopiedGap.toString ());
+intronLength += trailingCopiedGap.length ();
+trailingCopiedGap =  new StringBuilder ();
+}intronLength++;
+inExon = false;
+} else {
+var startOfCodon = basesWritten == mappedCodonStart;
+var gapsToAdd = jalview.analysis.AlignmentUtils.calculateGapsToInsert (preserveMappedGaps, preserveUnmappedGaps, sourceGapMappedLength, inExon, trailingCopiedGap.length (), intronLength, startOfCodon);
+for (var i = 0; i < gapsToAdd; i++) {
+thisAligned.append (myGapChar);
+}
+sourceGapMappedLength = 0;
+inExon = true;
+}thisAligned.append (c);
+trailingCopiedGap =  new StringBuilder ();
+} else {
+if (inExon && preserveMappedGaps) {
+trailingCopiedGap.append (myGapChar);
+} else if (!inExon && preserveUnmappedGaps) {
+trailingCopiedGap.append (myGapChar);
+}}}
+}
+while (thisSeqPos < thisSeq.length) {
+var c = thisSeq[thisSeqPos++];
+if (c != myGapChar || preserveUnmappedGaps) {
+thisAligned.append (c);
+}}
+alignTo.setSequence ( String.instantialize (thisAligned));
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,jalview.datamodel.AlignedCodonFrame,~S,~S,~B,~B");
+c$.calculateGapsToInsert = Clazz_defineMethod (c$, "calculateGapsToInsert", 
+function (preserveMappedGaps, preserveUnmappedGaps, sourceGapMappedLength, inExon, trailingGapLength, intronLength, startOfCodon) {
+var gapsToAdd = 0;
+if (startOfCodon) {
+if (inExon && !preserveMappedGaps) {
+trailingGapLength = 0;
+}if (!inExon && !(preserveMappedGaps && preserveUnmappedGaps)) {
+trailingGapLength = 0;
+}if (inExon) {
+gapsToAdd = Math.max (sourceGapMappedLength, trailingGapLength);
+} else {
+if (intronLength + trailingGapLength <= sourceGapMappedLength) {
+gapsToAdd = sourceGapMappedLength - intronLength;
+} else {
+gapsToAdd = Math.min (intronLength + trailingGapLength - sourceGapMappedLength, trailingGapLength);
+}}} else {
+if (!preserveMappedGaps) {
+trailingGapLength = 0;
+}gapsToAdd = Math.max (sourceGapMappedLength, trailingGapLength);
+}return gapsToAdd;
+}, "~B,~B,~N,~B,~N,~N,~B");
+c$.getAlignedTranslation = Clazz_defineMethod (c$, "getAlignedTranslation", 
+function (sequences, gapCharacter, mappings) {
+var alignedSeqs =  new java.util.ArrayList ();
+for (var seq, $seq = sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+var mapped = jalview.analysis.AlignmentUtils.getAlignedTranslation (seq, gapCharacter, mappings);
+alignedSeqs.addAll (mapped);
+}
+return alignedSeqs;
+}, "java.util.List,~S,java.util.Set");
+c$.getAlignedTranslation = Clazz_defineMethod (c$, "getAlignedTranslation", 
+function (seq, gapCharacter, mappings) {
+var result =  new java.util.ArrayList ();
+for (var mapping, $mapping = mappings.iterator (); $mapping.hasNext () && ((mapping = $mapping.next ()) || true);) {
+if (mapping.involvesSequence (seq)) {
+var mapped = jalview.analysis.AlignmentUtils.getAlignedTranslation (seq, gapCharacter, mapping);
+if (mapped != null) {
+result.add (mapped);
+}}}
+return result;
+}, "jalview.datamodel.SequenceI,~S,java.util.Set");
+c$.getAlignedTranslation = Clazz_defineMethod (c$, "getAlignedTranslation", 
+function (seq, gapCharacter, mapping) {
+var gap = String.valueOf (gapCharacter);
+var toDna = false;
+var fromRatio = 1;
+var mapTo = mapping.getDnaForAaSeq (seq);
+if (mapTo != null) {
+toDna = true;
+gap = String.valueOf ( Clazz_newCharArray (-1, [gapCharacter, gapCharacter, gapCharacter]));
+} else {
+mapTo = mapping.getAaForDnaSeq (seq);
+fromRatio = 3;
+}var newseq =  new StringBuilder (seq.getLength () * (toDna ? 3 : 1));
+var residueNo = 0;
+var phrase =  Clazz_newIntArray (fromRatio, 0);
+var phraseOffset = 0;
+var gapWidth = 0;
+var first = true;
+var alignedSeq =  new jalview.datamodel.Sequence ("", "");
+for (var c, $c = 0, $$c = seq.getSequence (); $c < $$c.length && ((c = $$c[$c]) || true); $c++) {
+if (c == gapCharacter) {
+gapWidth++;
+if (gapWidth >= fromRatio) {
+newseq.append (gap);
+gapWidth = 0;
+}} else {
+phrase[phraseOffset++] = residueNo + 1;
+if (phraseOffset == fromRatio) {
+var sr =  new jalview.datamodel.SearchResults ();
+for (var pos, $pos = 0, $$pos = phrase; $pos < $$pos.length && ((pos = $$pos[$pos]) || true); $pos++) {
+mapping.markMappedRegion (seq, pos, sr);
+}
+newseq.append (sr.toString ());
+if (first) {
+first = false;
+var mappedTo = sr.getResultSequence (0);
+alignedSeq.setName (mappedTo.getName ());
+alignedSeq.setDescription (mappedTo.getDescription ());
+alignedSeq.setDatasetSequence (mappedTo);
+}phraseOffset = 0;
+}residueNo++;
+}}
+alignedSeq.setSequence (newseq.toString ());
+return alignedSeq;
+}, "jalview.datamodel.SequenceI,~S,jalview.datamodel.AlignedCodonFrame");
+c$.alignProteinAsDna = Clazz_defineMethod (c$, "alignProteinAsDna", 
+function (protein, dna) {
+var mappings = protein.getCodonFrames ();
+var alignedCodons =  new java.util.TreeMap ( new jalview.analysis.CodonComparator ());
+for (var dnaSeq, $dnaSeq = dna.getSequences ().iterator (); $dnaSeq.hasNext () && ((dnaSeq = $dnaSeq.next ()) || true);) {
+for (var mapping, $mapping = mappings.iterator (); $mapping.hasNext () && ((mapping = $mapping.next ()) || true);) {
+var seqMap = mapping.getMappingForSequence (dnaSeq);
+var prot = mapping.findAlignedSequence (dnaSeq.getDatasetSequence (), protein);
+if (prot != null) {
+jalview.analysis.AlignmentUtils.addCodonPositions (dnaSeq, prot, protein.getGapCharacter (), seqMap, alignedCodons);
+}}
+}
+return jalview.analysis.AlignmentUtils.alignProteinAs (protein, alignedCodons);
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");
+c$.alignProteinAs = Clazz_defineMethod (c$, "alignProteinAs", 
+function (protein, alignedCodons) {
+var alignedWidth = alignedCodons.size ();
+var gaps =  Clazz_newCharArray (alignedWidth, '\0');
+java.util.Arrays.fill (gaps, protein.getGapCharacter ());
+var allGaps = String.valueOf (gaps);
+for (var seq, $seq = protein.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+seq.setSequence (allGaps);
+}
+var column = 0;
+for (var codon, $codon = alignedCodons.keySet ().iterator (); $codon.hasNext () && ((codon = $codon.next ()) || true);) {
+var columnResidues = alignedCodons.get (codon);
+for (var entry, $entry = columnResidues.entrySet ().iterator (); $entry.hasNext () && ((entry = $entry.next ()) || true);) {
+entry.getKey ().getSequence ()[column] = entry.getValue ().charAt (0);
+}
+column++;
+}
+return 0;
+}, "jalview.datamodel.AlignmentI,java.util.Map");
+c$.addCodonPositions = Clazz_defineMethod (c$, "addCodonPositions", 
+function (dna, protein, gapChar, seqMap, alignedCodons) {
+var codons = seqMap.getCodonIterator (dna, gapChar);
+while (codons.hasNext ()) {
+var codon = codons.next ();
+var seqProduct = alignedCodons.get (codon);
+if (seqProduct == null) {
+seqProduct =  new java.util.HashMap ();
+alignedCodons.put (codon, seqProduct);
+}seqProduct.put (protein, codon.product);
+}
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~S,jalview.datamodel.Mapping,java.util.Map");
+c$.isMappable = Clazz_defineMethod (c$, "isMappable", 
+function (al1, al2) {
+if (al1.isNucleotide () == al2.isNucleotide ()) {
+return false;
+}var dna = al1.isNucleotide () ? al1 : al2;
+var protein = dna === al1 ? al2 : al1;
+var mappings = protein.getCodonFrames ();
+for (var dnaSeq, $dnaSeq = dna.getSequences ().iterator (); $dnaSeq.hasNext () && ((dnaSeq = $dnaSeq.next ()) || true);) {
+for (var proteinSeq, $proteinSeq = protein.getSequences ().iterator (); $proteinSeq.hasNext () && ((proteinSeq = $proteinSeq.next ()) || true);) {
+if (jalview.analysis.AlignmentUtils.isMappable (dnaSeq, proteinSeq, mappings)) {
+return true;
+}}
+}
+return false;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");
+c$.isMappable = Clazz_defineMethod (c$, "isMappable", 
+function (dnaSeq, proteinSeq, mappings) {
+var dnaDs = dnaSeq.getDatasetSequence () == null ? dnaSeq : dnaSeq.getDatasetSequence ();
+var proteinDs = proteinSeq.getDatasetSequence () == null ? proteinSeq : proteinSeq.getDatasetSequence ();
+for (var mapping, $mapping = mappings.iterator (); $mapping.hasNext () && ((mapping = $mapping.next ()) || true);) {
+if (proteinDs === mapping.getAaForDnaSeq (dnaDs)) {
+return true;
+}}
+return jalview.analysis.AlignmentUtils.mapProteinToCdna (proteinDs, dnaDs) != null;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,java.util.Set");
+c$.findAddableReferenceAnnotations = Clazz_defineMethod (c$, "findAddableReferenceAnnotations", 
+function (sequenceScope, labelForCalcId, candidates, al) {
+if (sequenceScope == null) {
+return;
+}for (var seq, $seq = sequenceScope.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+var dataset = seq.getDatasetSequence ();
+if (dataset == null) {
+continue;
+}var datasetAnnotations = dataset.getAnnotation ();
+if (datasetAnnotations == null) {
+continue;
+}var result =  new java.util.ArrayList ();
+for (var dsann, $dsann = 0, $$dsann = datasetAnnotations; $dsann < $$dsann.length && ((dsann = $$dsann[$dsann]) || true); $dsann++) {
+var matchedAlignmentAnnotations = al.findAnnotations (seq, dsann.getCalcId (), dsann.label);
+if (!matchedAlignmentAnnotations.iterator ().hasNext ()) {
+result.add (dsann);
+if (labelForCalcId != null) {
+labelForCalcId.put (dsann.getCalcId (), dsann.label);
+}}}
+if (!result.isEmpty ()) {
+candidates.put (seq, result);
+}}
+}, "java.util.List,java.util.Map,java.util.Map,jalview.datamodel.AlignmentI");
+c$.addReferenceAnnotations = Clazz_defineMethod (c$, "addReferenceAnnotations", 
+function (annotations, alignment, selectionGroup) {
+for (var seq, $seq = annotations.keySet ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+for (var ann, $ann = annotations.get (seq).iterator (); $ann.hasNext () && ((ann = $ann.next ()) || true);) {
+var copyAnn =  new jalview.datamodel.AlignmentAnnotation (ann);
+var startRes = 0;
+var endRes = ann.annotations.length;
+if (selectionGroup != null) {
+startRes = selectionGroup.getStartRes ();
+endRes = selectionGroup.getEndRes ();
+}copyAnn.restrict (startRes, endRes);
+if (!seq.hasAnnotation (ann)) {
+seq.addAlignmentAnnotation (copyAnn);
+}copyAnn.adjustForAlignment ();
+alignment.addAnnotation (copyAnn);
+copyAnn.visible = true;
+}
+}
+}, "java.util.Map,jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");
+c$.showOrHideSequenceAnnotations = Clazz_defineMethod (c$, "showOrHideSequenceAnnotations", 
+function (al, types, forSequences, anyType, doShow) {
+for (var aa, $aa = 0, $$aa = al.getAlignmentAnnotation (); $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {
+if (anyType || types.contains (aa.label)) {
+if ((aa.sequenceRef != null) && (forSequences == null || forSequences.contains (aa.sequenceRef))) {
+aa.visible = doShow;
+}}}
+}, "jalview.datamodel.AlignmentI,java.util.Collection,java.util.List,~B,~B");
+c$.haveCrossRef = Clazz_defineMethod (c$, "haveCrossRef", 
+function (seq1, seq2) {
+return jalview.analysis.AlignmentUtils.hasCrossRef (seq1, seq2) || jalview.analysis.AlignmentUtils.hasCrossRef (seq2, seq1);
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
+c$.hasCrossRef = Clazz_defineMethod (c$, "hasCrossRef", 
+function (seq1, seq2) {
+if (seq1 == null || seq2 == null) {
+return false;
+}var name = seq2.getName ();
+var xrefs = seq1.getDBRef ();
+if (xrefs != null) {
+for (var xref, $xref = 0, $$xref = xrefs; $xref < $$xref.length && ((xref = $$xref[$xref]) || true); $xref++) {
+var xrefName = xref.getSource () + "|" + xref.getAccessionId ();
+if (xrefName.equalsIgnoreCase (name)) {
+return true;
+}}
+}return false;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
+c$.makeExonAlignment = Clazz_defineMethod (c$, "makeExonAlignment", 
+function (dna, mappings) {
+var newMappings =  new java.util.LinkedHashSet ();
+var exonSequences =  new java.util.ArrayList ();
+for (var dnaSeq, $dnaSeq = 0, $$dnaSeq = dna; $dnaSeq < $$dnaSeq.length && ((dnaSeq = $$dnaSeq[$dnaSeq]) || true); $dnaSeq++) {
+var ds = dnaSeq.getDatasetSequence ();
+var seqMappings = jalview.util.MappingUtils.findMappingsForSequence (ds, mappings);
+for (var acf, $acf = seqMappings.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+var newMapping =  new jalview.datamodel.AlignedCodonFrame ();
+var mappedExons = jalview.analysis.AlignmentUtils.makeExonSequences (ds, acf, newMapping);
+if (!mappedExons.isEmpty ()) {
+exonSequences.addAll (mappedExons);
+newMappings.add (newMapping);
+}}
+}
+var al =  new jalview.datamodel.Alignment (exonSequences.toArray ( new Array (exonSequences.size ())));
+al.setDataset (null);
+mappings.clear ();
+mappings.addAll (newMappings);
+return al;
+}, "~A,java.util.Set");
+c$.makeExonSequences = Clazz_defineMethod (c$, "makeExonSequences", 
+function (dnaSeq, mapping, newMapping) {
+var exonSequences =  new java.util.ArrayList ();
+var seqMappings = mapping.getMappingsForSequence (dnaSeq);
+var dna = dnaSeq.getSequence ();
+for (var seqMapping, $seqMapping = seqMappings.iterator (); $seqMapping.hasNext () && ((seqMapping = $seqMapping.next ()) || true);) {
+var newSequence =  new StringBuilder (dnaSeq.getLength ());
+var dnaExonRanges = seqMapping.getMap ().getFromRanges ();
+for (var range, $range = dnaExonRanges.iterator (); $range.hasNext () && ((range = $range.next ()) || true);) {
+for (var pos = range[0]; pos <= range[1]; pos++) {
+newSequence.append (dna[pos - 1]);
+}
+}
+var exon =  new jalview.datamodel.Sequence (dnaSeq.getName (), newSequence.toString ());
+var cdsAccId = jalview.datamodel.FeatureProperties.getCodingFeature (jalview.datamodel.DBRefSource.EMBL);
+var cdsRefs = jalview.util.DBRefUtils.selectRefs (seqMapping.getTo ().getDBRef (), jalview.datamodel.DBRefSource.CODINGDBS);
+if (cdsRefs != null) {
+for (var cdsRef, $cdsRef = 0, $$cdsRef = cdsRefs; $cdsRef < $$cdsRef.length && ((cdsRef = $$cdsRef[$cdsRef]) || true); $cdsRef++) {
+exon.addDBRef ( new jalview.datamodel.DBRefEntry (cdsRef));
+cdsAccId = cdsRef.getAccessionId ();
+}
+}exon.setName (exon.getName () + "|" + cdsAccId);
+exon.createDatasetSequence ();
+var exonRange =  new java.util.ArrayList ();
+exonRange.add ( Clazz_newIntArray (-1, [1, newSequence.length ()]));
+var map =  new jalview.util.MapList (exonRange, seqMapping.getMap ().getToRanges (), 3, 1);
+newMapping.addMap (exon.getDatasetSequence (), seqMapping.getTo (), map);
+var cdsToDnaMap =  new jalview.util.MapList (dnaExonRanges, exonRange, 1, 1);
+newMapping.addMap (dnaSeq, exon.getDatasetSequence (), cdsToDnaMap);
+exonSequences.add (exon);
+}
+return exonSequences;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignedCodonFrame,jalview.datamodel.AlignedCodonFrame");
+});
+Clazz_declarePackage ("jalview.analysis");
+c$ = Clazz_declareType (jalview.analysis, "CodonComparator", null, java.util.Comparator);
+Clazz_overrideMethod (c$, "compare", 
+function (ac1, ac2) {
+if (ac1 == null || ac2 == null || ac1.equals (ac2)) {
+return 0;
+}if (ac1.pos1 < ac2.pos1 && ac1.pos3 <= ac2.pos3) {
+return -1;
+}if (ac2.pos1 < ac1.pos1 && ac2.pos3 <= ac1.pos3) {
+return 1;
+}if (ac1.pos3 > ac2.pos3 && ac1.pos1 >= ac2.pos1) {
+return 1;
+}if (ac2.pos3 > ac1.pos3 && ac2.pos1 >= ac1.pos1) {
+return -1;
+}if (ac1.pos1 == ac2.pos1 && ac1.pos3 == ac2.pos3) {
+return Integer.compare (ac1.pos2, ac2.pos2);
+}var compareMiddles = Integer.compare (ac1.pos2, ac2.pos2);
+if (compareMiddles != 0) {
+return compareMiddles;
+}return Integer.compare (ac1.pos1, ac2.pos1);
+}, "jalview.datamodel.AlignedCodon,jalview.datamodel.AlignedCodon");
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (null, "jalview.datamodel.AlignedCodonFrame", ["jalview.datamodel.Mapping", "jalview.util.MappingUtils", "java.util.ArrayList"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.dnaSeqs = null;
+this.dnaToProt = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "AlignedCodonFrame");
+Clazz_makeConstructor (c$, 
+function () {
+});
+Clazz_defineMethod (c$, "addMap", 
+function (dnaseq, aaseq, map) {
+var nlen = 1;
+if (this.dnaSeqs != null) {
+nlen = this.dnaSeqs.length + 1;
+}var ndna =  new Array (nlen);
+var ndtp =  new Array (nlen);
+if (this.dnaSeqs != null) {
+System.arraycopy (this.dnaSeqs, 0, ndna, 0, this.dnaSeqs.length);
+System.arraycopy (this.dnaToProt, 0, ndtp, 0, this.dnaSeqs.length);
+}this.dnaSeqs = ndna;
+this.dnaToProt = ndtp;
+nlen--;
+this.dnaSeqs[nlen] = (dnaseq.getDatasetSequence () == null) ? dnaseq : dnaseq.getDatasetSequence ();
+var mp =  new jalview.datamodel.Mapping (map);
+mp.to = (aaseq.getDatasetSequence () == null) ? aaseq : aaseq.getDatasetSequence ();
+this.dnaToProt[nlen] = mp;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,jalview.util.MapList");
+Clazz_defineMethod (c$, "getdnaSeqs", 
+function () {
+return this.dnaSeqs;
+});
+Clazz_defineMethod (c$, "getAaSeqs", 
+function () {
+if (this.dnaToProt == null) {
+return null;
+}var sqs =  new Array (this.dnaToProt.length);
+for (var sz = 0; sz < this.dnaToProt.length; sz++) {
+sqs[sz] = this.dnaToProt[sz].to;
+}
+return sqs;
+});
+Clazz_defineMethod (c$, "getdnaToProt", 
+function () {
+if (this.dnaToProt == null) {
+return null;
+}var sqs =  new Array (this.dnaToProt.length);
+for (var sz = 0; sz < this.dnaToProt.length; sz++) {
+sqs[sz] = this.dnaToProt[sz].map;
+}
+return sqs;
+});
+Clazz_defineMethod (c$, "getProtMappings", 
+function () {
+return this.dnaToProt;
+});
+Clazz_defineMethod (c$, "getMappingForSequence", 
+function (seq) {
+if (this.dnaSeqs == null) {
+return null;
+}var seqDs = seq.getDatasetSequence ();
+seqDs = seqDs != null ? seqDs : seq;
+for (var ds = 0; ds < this.dnaSeqs.length; ds++) {
+if (this.dnaSeqs[ds] === seqDs || this.dnaToProt[ds].to === seqDs) {
+return this.dnaToProt[ds];
+}}
+return null;
+}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "getAaForDnaSeq", 
+function (dnaSeqRef) {
+if (this.dnaSeqs == null) {
+return null;
+}var dnads = dnaSeqRef.getDatasetSequence ();
+for (var ds = 0; ds < this.dnaSeqs.length; ds++) {
+if (this.dnaSeqs[ds] === dnaSeqRef || this.dnaSeqs[ds] === dnads) {
+return this.dnaToProt[ds].to;
+}}
+return null;
+}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "getDnaForAaSeq", 
+function (aaSeqRef) {
+if (this.dnaToProt == null) {
+return null;
+}var aads = aaSeqRef.getDatasetSequence ();
+for (var as = 0; as < this.dnaToProt.length; as++) {
+if (this.dnaToProt[as].to === aaSeqRef || this.dnaToProt[as].to === aads) {
+return this.dnaSeqs[as];
+}}
+return null;
+}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "involvesSequence", 
+function (seq) {
+return this.getAaForDnaSeq (seq) != null || this.getDnaForAaSeq (seq) != null;
+}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "markMappedRegion", 
+function (seq, index, results) {
+if (this.dnaToProt == null) {
+return;
+}var codon;
+var ds = seq.getDatasetSequence ();
+for (var mi = 0; mi < this.dnaToProt.length; mi++) {
+if (this.dnaSeqs[mi] === seq || this.dnaSeqs[mi] === ds) {
+codon = this.dnaToProt[mi].map.locateInTo (index, index);
+if (codon != null) {
+for (var i = 0; i < codon.length; i += 2) {
+results.addResult (this.dnaToProt[mi].to, codon[i], codon[i + 1]);
+}
+}} else if (this.dnaToProt[mi].to === seq || this.dnaToProt[mi].to === ds) {
+{
+codon = this.dnaToProt[mi].map.locateInFrom (index, index);
+if (codon != null) {
+for (var i = 0; i < codon.length; i += 2) {
+results.addResult (this.dnaSeqs[mi], codon[i], codon[i + 1]);
+}
+}}}}
+}, "jalview.datamodel.SequenceI,~N,jalview.datamodel.SearchResults");
+Clazz_defineMethod (c$, "getDnaPosition", 
+function (seq, aaPos) {
+var ml = null;
+for (var i = 0; i < this.dnaToProt.length; i++) {
+if (this.dnaSeqs[i] === seq) {
+ml = this.getdnaToProt ()[i];
+break;
+}}
+return ml == null ? null : ml.locateInFrom (aaPos, aaPos);
+}, "jalview.datamodel.SequenceI,~N");
+Clazz_defineMethod (c$, "findAlignedSequence", 
+function (seq, al) {
+if (this.dnaToProt != null) {
+for (var i = 0; i < this.dnaToProt.length; i++) {
+if (this.dnaSeqs[i] === seq) {
+for (var sourceAligned, $sourceAligned = al.getSequences ().iterator (); $sourceAligned.hasNext () && ((sourceAligned = $sourceAligned.next ()) || true);) {
+if (this.dnaToProt[i].to === sourceAligned.getDatasetSequence ()) {
+return sourceAligned;
+}}
+}}
+}if (this.dnaToProt != null) {
+for (var i = 0; i < this.dnaToProt.length; i++) {
+if (this.dnaToProt[i].to === seq) {
+for (var sourceAligned, $sourceAligned = al.getSequences ().iterator (); $sourceAligned.hasNext () && ((sourceAligned = $sourceAligned.next ()) || true);) {
+if (this.dnaSeqs[i] === sourceAligned.getDatasetSequence ()) {
+return sourceAligned;
+}}
+}}
+}return null;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI");
+Clazz_defineMethod (c$, "getMappedRegion", 
+function (mappedFrom, mappedTo, pos) {
+var targetDs = mappedFrom.getDatasetSequence () == null ? mappedFrom : mappedFrom.getDatasetSequence ();
+var sourceDs = mappedTo.getDatasetSequence () == null ? mappedTo : mappedTo.getDatasetSequence ();
+if (targetDs == null || sourceDs == null || this.dnaToProt == null) {
+return null;
+}for (var mi = 0; mi < this.dnaToProt.length; mi++) {
+if (this.dnaSeqs[mi] === targetDs && this.dnaToProt[mi].to === sourceDs) {
+var codon = this.dnaToProt[mi].map.locateInFrom (pos, pos);
+if (codon != null) {
+return codon;
+}}}
+return null;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~N");
+Clazz_defineMethod (c$, "getMappedCodon", 
+function (protein, aaPos) {
+if (this.dnaToProt == null) {
+return null;
+}var ml = null;
+var dnaSeq = null;
+for (var i = 0; i < this.dnaToProt.length; i++) {
+if (this.dnaToProt[i].to === protein) {
+ml = this.getdnaToProt ()[i];
+dnaSeq = this.dnaSeqs[i].getSequence ();
+break;
+}}
+if (ml == null) {
+return null;
+}var codonPos = ml.locateInFrom (aaPos, aaPos);
+if (codonPos == null) {
+return null;
+}codonPos = jalview.util.MappingUtils.flattenRanges (codonPos);
+return  Clazz_newCharArray (-1, [dnaSeq[codonPos[0] - 1], dnaSeq[codonPos[1] - 1], dnaSeq[codonPos[2] - 1]]);
+}, "jalview.datamodel.SequenceI,~N");
+Clazz_defineMethod (c$, "getMappingsForSequence", 
+function (seq) {
+var result =  new java.util.ArrayList ();
+if (this.dnaSeqs == null) {
+return result;
+}var related =  new java.util.ArrayList ();
+var seqDs = seq.getDatasetSequence ();
+seqDs = seqDs != null ? seqDs : seq;
+for (var ds = 0; ds < this.dnaSeqs.length; ds++) {
+var mapping = this.dnaToProt[ds];
+if (this.dnaSeqs[ds] === seqDs || mapping.to === seqDs) {
+if (!related.contains (mapping.to)) {
+result.add (mapping);
+related.add (mapping.to);
+}}}
+return result;
+}, "jalview.datamodel.SequenceI");
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["java.util.Iterator"], "jalview.datamodel.Mapping", ["jalview.datamodel.AlignedCodon", "$.IncompleteCodonException", "$.SequenceFeature", "jalview.util.MapList", "java.util.NoSuchElementException", "$.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+if (!Clazz_isClassDefined ("jalview.datamodel.Mapping.AlignedCodonIterator")) {
+jalview.datamodel.Mapping.$Mapping$AlignedCodonIterator$ ();
+}
+this.map = null;
+this.to = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "Mapping");
+Clazz_makeConstructor (c$, 
+function (map) {
+this.map = map;
+}, "jalview.util.MapList");
+Clazz_makeConstructor (c$, 
+function (to, map) {
+this.construct (map);
+this.to = to;
+}, "jalview.datamodel.SequenceI,jalview.util.MapList");
+Clazz_makeConstructor (c$, 
+function (to, exon, is, i, j) {
+this.construct (to,  new jalview.util.MapList (exon, is, i, j));
+}, "jalview.datamodel.SequenceI,~A,~A,~N,~N");
+Clazz_makeConstructor (c$, 
+function (map2) {
+if (map2 !== this && map2 != null) {
+if (map2.map != null) {
+this.map =  new jalview.util.MapList (map2.map);
+}this.to = map2.to;
+}}, "jalview.datamodel.Mapping");
+Clazz_defineMethod (c$, "getMap", 
+function () {
+return this.map;
+});
+Clazz_defineMethod (c$, "setMap", 
+function (map) {
+this.map = map;
+}, "jalview.util.MapList");
+Clazz_overrideMethod (c$, "equals", 
+function (o) {
+if (o == null || !(Clazz_instanceOf (o, jalview.datamodel.Mapping))) {
+return false;
+}var other = o;
+if (other === this) {
+return true;
+}if (other.to !== this.to) {
+return false;
+}if ((this.map != null && other.map == null) || (this.map == null && other.map != null)) {
+return false;
+}if ((this.map == null && other.map == null) || this.map.equals (other.map)) {
+return true;
+}return false;
+}, "~O");
+Clazz_defineMethod (c$, "getPosition", 
+function (mpos) {
+if (this.map != null) {
+var mp = this.map.shiftTo (mpos);
+if (mp != null) {
+return mp[0];
+}}return mpos;
+}, "~N");
+Clazz_defineMethod (c$, "getWord", 
+function (mpos) {
+if (this.map != null) {
+return this.map.getToWord (mpos);
+}return null;
+}, "~N");
+Clazz_defineMethod (c$, "getWidth", 
+function () {
+if (this.map != null) {
+return this.map.getFromRatio ();
+}return 1;
+});
+Clazz_defineMethod (c$, "getMappedWidth", 
+function () {
+if (this.map != null) {
+return this.map.getToRatio ();
+}return 1;
+});
+Clazz_defineMethod (c$, "getMappedPosition", 
+function (pos) {
+if (this.map != null) {
+var mp = this.map.shiftFrom (pos);
+if (mp != null) {
+return mp[0];
+}}return pos;
+}, "~N");
+Clazz_defineMethod (c$, "getMappedWord", 
+function (pos) {
+if (this.map != null) {
+var mp = this.map.shiftFrom (pos);
+if (mp != null) {
+return  Clazz_newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.map.getToRatio () - 1)]);
+}}return null;
+}, "~N");
+Clazz_defineMethod (c$, "locateFeature", 
+function (f) {
+if (true) {
+if (this.map != null) {
+var frange = this.map.locateInFrom (f.getBegin (), f.getEnd ());
+if (frange == null) {
+return null;
+}var vf =  new Array (Clazz_doubleToInt (frange.length / 2));
+for (var i = 0, v = 0; i < frange.length; i += 2, v++) {
+vf[v] =  new jalview.datamodel.SequenceFeature (f);
+vf[v].setBegin (frange[i]);
+vf[v].setEnd (frange[i + 1]);
+if (frange.length > 2) {
+vf[v].setDescription (f.getDescription () + "\nPart " + (v + 1));
+}}
+return vf;
+}}if (false) {
+var word = this.getWord (f.getBegin ());
+if (word[0] < word[1]) {
+f.setBegin (word[0]);
+} else {
+f.setBegin (word[1]);
+}word = this.getWord (f.getEnd ());
+if (word[0] > word[1]) {
+f.setEnd (word[0]);
+} else {
+f.setEnd (word[1]);
+}}return  Clazz_newArray (-1, [f]);
+}, "jalview.datamodel.SequenceFeature");
+Clazz_defineMethod (c$, "locateRange", 
+function (from, to) {
+if (this.map != null) {
+if (from <= to) {
+from = (this.map.getToLowest () < from) ? from : this.map.getToLowest ();
+to = (this.map.getToHighest () > to) ? to : this.map.getToHighest ();
+if (from > to) {
+return null;
+}} else {
+from = (this.map.getToHighest () > from) ? from : this.map.getToHighest ();
+to = (this.map.getToLowest () < to) ? to : this.map.getToLowest ();
+if (from < to) {
+return null;
+}}return this.map.locateInFrom (from, to);
+}return  Clazz_newIntArray (-1, [from, to]);
+}, "~N,~N");
+Clazz_defineMethod (c$, "locateMappedRange", 
+function (from, to) {
+if (this.map != null) {
+if (from <= to) {
+from = (this.map.getFromLowest () < from) ? from : this.map.getFromLowest ();
+to = (this.map.getFromHighest () > to) ? to : this.map.getFromHighest ();
+if (from > to) {
+return null;
+}} else {
+from = (this.map.getFromHighest () > from) ? from : this.map.getFromHighest ();
+to = (this.map.getFromLowest () < to) ? to : this.map.getFromLowest ();
+if (from < to) {
+return null;
+}}return this.map.locateInTo (from, to);
+}return  Clazz_newIntArray (-1, [from, to]);
+}, "~N,~N");
+Clazz_defineMethod (c$, "intersectVisContigs", 
+function (viscontigs) {
+var copy =  new jalview.datamodel.Mapping (this);
+if (this.map != null) {
+var vpos = 0;
+var apos = 0;
+var toRange =  new java.util.Vector ();
+var fromRange =  new java.util.Vector ();
+for (var vc = 0; vc < viscontigs.length; vc += 2) {
+var mpr = this.locateMappedRange (1 + viscontigs[vc], viscontigs[vc + 1] - 1);
+if (mpr != null) {
+for (var m = 0; m < mpr.length; m += 2) {
+toRange.addElement ( Clazz_newIntArray (-1, [mpr[m], mpr[m + 1]]));
+var xpos = this.locateRange (mpr[m], mpr[m + 1]);
+for (var x = 0; x < xpos.length; x += 2) {
+fromRange.addElement ( Clazz_newIntArray (-1, [xpos[x], xpos[x + 1]]));
+}
+}
+}}
+var from =  Clazz_newIntArray (fromRange.size () * 2, 0);
+var to =  Clazz_newIntArray (toRange.size () * 2, 0);
+var r;
+for (var f = 0, fSize = fromRange.size (); f < fSize; f++) {
+r = fromRange.elementAt (f);
+from[f * 2] = r[0];
+from[f * 2 + 1] = r[1];
+}
+for (var f = 0, fSize = toRange.size (); f < fSize; f++) {
+r = toRange.elementAt (f);
+to[f * 2] = r[0];
+to[f * 2 + 1] = r[1];
+}
+copy.setMap ( new jalview.util.MapList (from, to, this.map.getFromRatio (), this.map.getToRatio ()));
+}return copy;
+}, "~A");
+Clazz_defineMethod (c$, "getTo", 
+function () {
+return this.to;
+});
+Clazz_defineMethod (c$, "setTo", 
+function (tto) {
+this.to = tto;
+}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "finalize", 
+function () {
+this.map = null;
+this.to = null;
+Clazz_superCall (this, jalview.datamodel.Mapping, "finalize", []);
+});
+Clazz_defineMethod (c$, "getCodonIterator", 
+function (seq, gapChar) {
+return Clazz_innerTypeInstance (jalview.datamodel.Mapping.AlignedCodonIterator, this, null, seq.getSequence (), gapChar);
+}, "jalview.datamodel.SequenceI,~S");
+c$.$Mapping$AlignedCodonIterator$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.gap = '\0';
+this.alignedSeq = null;
+this.alignedColumn = 0;
+this.alignedBases = 0;
+this.fromRanges = null;
+this.toRanges = null;
+this.currentFromRange = null;
+this.currentToRange = null;
+this.fromPosition = 0;
+this.toPosition = 0;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel.Mapping, "AlignedCodonIterator", null, java.util.Iterator);
+Clazz_makeConstructor (c$, 
+function (a, b) {
+this.alignedSeq = a;
+this.gap = b;
+this.fromRanges = this.b$["jalview.datamodel.Mapping"].map.getFromRanges ().iterator ();
+this.toRanges = this.b$["jalview.datamodel.Mapping"].map.getToRanges ().iterator ();
+if (this.fromRanges.hasNext ()) {
+this.currentFromRange = this.fromRanges.next ();
+this.fromPosition = this.currentFromRange[0];
+}if (this.toRanges.hasNext ()) {
+this.currentToRange = this.toRanges.next ();
+this.toPosition = this.currentToRange[0];
+}}, "~A,~S");
+Clazz_defineMethod (c$, "hasNext", 
+function () {
+if (this.fromRanges.hasNext ()) {
+return true;
+}if (this.currentFromRange == null || this.fromPosition >= this.currentFromRange[1]) {
+return false;
+}return true;
+});
+Clazz_overrideMethod (c$, "next", 
+function () {
+if (!this.hasNext ()) {
+throw  new java.util.NoSuchElementException ();
+}var a = this.getNextCodon ();
+var b = this.getAlignedCodon (a);
+var c = this.getPeptide ();
+return  new jalview.datamodel.AlignedCodon (b[0], b[1], b[2], c);
+});
+Clazz_defineMethod (c$, "getPeptide", 
+ function () {
+if (this.toPosition <= this.currentToRange[1]) {
+var a = this.b$["jalview.datamodel.Mapping"].to.getSequence ()[this.toPosition - 1];
+this.toPosition++;
+return String.valueOf (a);
+}if (!this.toRanges.hasNext ()) {
+throw  new java.util.NoSuchElementException ("Ran out of peptide at position " + this.toPosition);
+}this.currentToRange = this.toRanges.next ();
+this.toPosition = this.currentToRange[0];
+return this.getPeptide ();
+});
+Clazz_defineMethod (c$, "getNextCodon", 
+ function () {
+var a =  Clazz_newIntArray (3, 0);
+var b = 0;
+while (b < 3) {
+if (this.fromPosition <= this.currentFromRange[1]) {
+a[b++] = this.fromPosition++;
+} else {
+if (!this.fromRanges.hasNext ()) {
+throw  new jalview.datamodel.IncompleteCodonException ();
+}this.currentFromRange = this.fromRanges.next ();
+this.fromPosition = this.currentFromRange[0];
+}}
+return a;
+});
+Clazz_defineMethod (c$, "getAlignedCodon", 
+ function (a) {
+var b =  Clazz_newIntArray (a.length, 0);
+for (var c = 0; c < a.length; c++) {
+b[c] = this.getAlignedColumn (a[c]);
+}
+return b;
+}, "~A");
+Clazz_defineMethod (c$, "getAlignedColumn", 
+ function (a) {
+while (this.alignedBases < a && this.alignedColumn < this.alignedSeq.length) {
+if (this.alignedSeq[this.alignedColumn++] != this.gap) {
+this.alignedBases++;
+}}
+return this.alignedColumn - 1;
+}, "~N");
+Clazz_overrideMethod (c$, "remove", 
+function () {
+});
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (null, "jalview.datamodel.AlignedCodon", ["java.lang.IllegalArgumentException", "$.StringBuilder"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.pos1 = 0;
+this.pos2 = 0;
+this.pos3 = 0;
+this.product = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "AlignedCodon");
+Clazz_makeConstructor (c$, 
+function (i, j, k) {
+this.construct (i, j, k, null);
+}, "~N,~N,~N");
+Clazz_makeConstructor (c$, 
+function (i, j, k, prod) {
+this.pos1 = i;
+this.pos2 = j;
+this.pos3 = k;
+this.product = prod;
+}, "~N,~N,~N,~S");
+Clazz_defineMethod (c$, "getBaseColumn", 
+function (base) {
+if (base < 1 || base > 3) {
+throw  new IllegalArgumentException (Integer.toString (base));
+}return base == 1 ? this.pos1 : (base == 2 ? this.pos2 : this.pos3);
+}, "~N");
+Clazz_overrideMethod (c$, "equals", 
+function (o) {
+if (o == null) {
+return true;
+}if (!(Clazz_instanceOf (o, jalview.datamodel.AlignedCodon))) {
+return false;
+}var ac = o;
+return (this.pos1 == ac.pos1 && this.pos2 == ac.pos2 && this.pos3 == ac.pos3);
+}, "~O");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+var sb =  new StringBuilder ();
+sb.append ("[").append (this.pos1).append (", ").append (this.pos2).append (", ").append (this.pos3).append ("]");
+return sb.toString ();
+});
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["java.lang.RuntimeException"], "jalview.datamodel.IncompleteCodonException", null, function () {
+c$ = Clazz_declareType (jalview.datamodel, "IncompleteCodonException", RuntimeException);
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (null, "jalview.datamodel.SequenceFeature", ["java.util.Hashtable", "$.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.begin = 0;
+this.end = 0;
+this.score = 0;
+this.type = null;
+this.description = null;
+this.otherDetails = null;
+this.links = null;
+this.featureGroup = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "SequenceFeature");
+Clazz_makeConstructor (c$, 
+function () {
+});
+Clazz_makeConstructor (c$, 
+function (cpy) {
+if (cpy != null) {
+this.begin = cpy.begin;
+this.end = cpy.end;
+this.score = cpy.score;
+if (cpy.type != null) {
+this.type =  String.instantialize (cpy.type);
+}if (cpy.description != null) {
+this.description =  String.instantialize (cpy.description);
+}if (cpy.featureGroup != null) {
+this.featureGroup =  String.instantialize (cpy.featureGroup);
+}if (cpy.otherDetails != null) {
+try {
+this.otherDetails = cpy.otherDetails.clone ();
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+}if (cpy.links != null && cpy.links.size () > 0) {
+this.links =  new java.util.Vector ();
+for (var i = 0, iSize = cpy.links.size (); i < iSize; i++) {
+this.links.addElement (cpy.links.elementAt (i));
+}
+}}}, "jalview.datamodel.SequenceFeature");
+Clazz_makeConstructor (c$, 
+function (type, desc, status, begin, end, featureGroup) {
+this.type = type;
+this.description = desc;
+this.setValue ("status", status);
+this.begin = begin;
+this.end = end;
+this.featureGroup = featureGroup;
+}, "~S,~S,~S,~N,~N,~S");
+Clazz_makeConstructor (c$, 
+function (type, desc, begin, end, score, featureGroup) {
+this.type = type;
+this.description = desc;
+this.begin = begin;
+this.end = end;
+this.score = score;
+this.featureGroup = featureGroup;
+}, "~S,~S,~N,~N,~N,~S");
+Clazz_defineMethod (c$, "equals", 
+function (sf) {
+if (this.begin != sf.begin || this.end != sf.end || this.score != sf.score) {
+return false;
+}if (!(this.type + this.description + this.featureGroup).equals (sf.type + sf.description + sf.featureGroup)) {
+return false;
+}return true;
+}, "jalview.datamodel.SequenceFeature");
+Clazz_defineMethod (c$, "getBegin", 
+function () {
+return this.begin;
+});
+Clazz_defineMethod (c$, "setBegin", 
+function (start) {
+this.begin = start;
+}, "~N");
+Clazz_defineMethod (c$, "getEnd", 
+function () {
+return this.end;
+});
+Clazz_defineMethod (c$, "setEnd", 
+function (end) {
+this.end = end;
+}, "~N");
+Clazz_defineMethod (c$, "getType", 
+function () {
+return this.type;
+});
+Clazz_defineMethod (c$, "setType", 
+function (type) {
+this.type = type;
+}, "~S");
+Clazz_defineMethod (c$, "getDescription", 
+function () {
+return this.description;
+});
+Clazz_defineMethod (c$, "setDescription", 
+function (desc) {
+this.description = desc;
+}, "~S");
+Clazz_defineMethod (c$, "getFeatureGroup", 
+function () {
+return this.featureGroup;
+});
+Clazz_defineMethod (c$, "setFeatureGroup", 
+function (featureGroup) {
+this.featureGroup = featureGroup;
+}, "~S");
+Clazz_defineMethod (c$, "addLink", 
+function (labelLink) {
+if (this.links == null) {
+this.links =  new java.util.Vector ();
+}this.links.insertElementAt (labelLink, 0);
+}, "~S");
+Clazz_defineMethod (c$, "getScore", 
+function () {
+return this.score;
+});
+Clazz_defineMethod (c$, "setScore", 
+function (value) {
+this.score = value;
+}, "~N");
+Clazz_defineMethod (c$, "getValue", 
+function (key) {
+if (this.otherDetails == null) {
+return null;
+} else {
+return this.otherDetails.get (key);
+}}, "~S");
+Clazz_defineMethod (c$, "setValue", 
+function (key, value) {
+if (value != null) {
+if (this.otherDetails == null) {
+this.otherDetails =  new java.util.Hashtable ();
+}this.otherDetails.put (key, value);
+}}, "~S,~O");
+Clazz_defineMethod (c$, "setStatus", 
+function (status) {
+this.setValue ("status", status);
+}, "~S");
+Clazz_defineMethod (c$, "getStatus", 
+function () {
+if (this.otherDetails != null) {
+var stat = this.otherDetails.get ("status");
+if (stat != null) {
+return  String.instantialize (stat);
+}}return null;
+});
+Clazz_defineMethod (c$, "setPosition", 
+function (pos) {
+this.begin = pos;
+this.end = pos;
+}, "~N");
+Clazz_defineMethod (c$, "getPosition", 
+function () {
+return this.begin;
+});
+Clazz_defineMethod (c$, "getStrand", 
+function () {
+var str;
+if (this.otherDetails == null || (str = this.otherDetails.get ("STRAND").toString ()) == null) {
+return 0;
+}if (str.equals ("-")) {
+return -1;
+}if (str.equals ("+")) {
+return 1;
+}return 0;
+});
+});
+Clazz_declarePackage ("jalview.util");
+Clazz_load (["java.util.ArrayList"], "jalview.util.MapList", ["java.lang.StringBuilder", "java.util.Arrays"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.fromShifts = null;
+this.toShifts = null;
+this.fromRatio = 0;
+this.toRatio = 0;
+this.fromLowest = 0;
+this.fromHighest = 0;
+this.toLowest = 0;
+this.toHighest = 0;
+Clazz_instantialize (this, arguments);
+}, jalview.util, "MapList");
+Clazz_prepareFields (c$, function () {
+this.fromShifts =  new java.util.ArrayList ();
+this.toShifts =  new java.util.ArrayList ();
+});
+Clazz_overrideMethod (c$, "equals", 
+function (o) {
+if (o == null || !(Clazz_instanceOf (o, jalview.util.MapList))) {
+return false;
+}var obj = o;
+if (obj === this) {
+return true;
+}if (obj.fromRatio != this.fromRatio || obj.toRatio != this.toRatio || obj.fromShifts == null || obj.toShifts == null) {
+return false;
+}return java.util.Arrays.deepEquals (this.fromShifts.toArray (), obj.fromShifts.toArray ()) && java.util.Arrays.deepEquals (this.toShifts.toArray (), obj.toShifts.toArray ());
+}, "~O");
+Clazz_defineMethod (c$, "getFromRanges", 
+function () {
+return this.fromShifts;
+});
+Clazz_defineMethod (c$, "getToRanges", 
+function () {
+return this.toShifts;
+});
+c$.getRanges = Clazz_defineMethod (c$, "getRanges", 
+function (shifts) {
+var rnges =  Clazz_newIntArray (2 * shifts.size (), 0);
+var i = 0;
+for (var r, $r = shifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
+rnges[i++] = r[0];
+rnges[i++] = r[1];
+}
+return rnges;
+}, "java.util.List");
+Clazz_defineMethod (c$, "getFromRatio", 
+function () {
+return this.fromRatio;
+});
+Clazz_defineMethod (c$, "getToRatio", 
+function () {
+return this.toRatio;
+});
+Clazz_defineMethod (c$, "getFromLowest", 
+function () {
+return this.fromLowest;
+});
+Clazz_defineMethod (c$, "getFromHighest", 
+function () {
+return this.fromHighest;
+});
+Clazz_defineMethod (c$, "getToLowest", 
+function () {
+return this.toLowest;
+});
+Clazz_defineMethod (c$, "getToHighest", 
+function () {
+return this.toHighest;
+});
+Clazz_makeConstructor (c$, 
+function (from, to, fromRatio, toRatio) {
+this.fromRatio = fromRatio;
+this.toRatio = toRatio;
+this.fromLowest = from[0];
+this.fromHighest = from[1];
+for (var i = 0; i < from.length; i += 2) {
+this.fromLowest = Math.min (this.fromLowest, from[i]);
+this.fromHighest = Math.max (this.fromHighest, from[i + 1]);
+this.fromShifts.add ( Clazz_newIntArray (-1, [from[i], from[i + 1]]));
+}
+this.toLowest = to[0];
+this.toHighest = to[1];
+for (var i = 0; i < to.length; i += 2) {
+this.toLowest = Math.min (this.toLowest, to[i]);
+this.toHighest = Math.max (this.toHighest, to[i + 1]);
+this.toShifts.add ( Clazz_newIntArray (-1, [to[i], to[i + 1]]));
+}
+}, "~A,~A,~N,~N");
+Clazz_makeConstructor (c$, 
+function (map) {
+this.fromLowest = map.fromLowest;
+this.fromHighest = map.fromHighest;
+this.toLowest = map.toLowest;
+this.toHighest = map.toHighest;
+this.fromRatio = map.fromRatio;
+this.toRatio = map.toRatio;
+if (map.fromShifts != null) {
+for (var r, $r = map.fromShifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
+this.fromShifts.add ( Clazz_newIntArray (-1, [r[0], r[1]]));
+}
+}if (map.toShifts != null) {
+for (var r, $r = map.toShifts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
+this.toShifts.add ( Clazz_newIntArray (-1, [r[0], r[1]]));
+}
+}}, "jalview.util.MapList");
+Clazz_makeConstructor (c$, 
+function (fromRange, toRange, fromRatio, toRatio) {
+this.fromShifts = fromRange;
+this.toShifts = toRange;
+this.fromRatio = fromRatio;
+this.toRatio = toRatio;
+this.fromLowest = 2147483647;
+this.fromHighest = 0;
+for (var range, $range = fromRange.iterator (); $range.hasNext () && ((range = $range.next ()) || true);) {
+this.fromLowest = Math.min (this.fromLowest, range[0]);
+this.fromHighest = Math.max (this.fromHighest, range[1]);
+}
+this.toLowest = 2147483647;
+this.toHighest = 0;
+for (var range, $range = toRange.iterator (); $range.hasNext () && ((range = $range.next ()) || true);) {
+this.toLowest = Math.min (this.toLowest, range[0]);
+this.toHighest = Math.max (this.toHighest, range[1]);
+}
+}, "java.util.List,java.util.List,~N,~N");
+Clazz_defineMethod (c$, "makeFromMap", 
+function () {
+return this.posMap (this.fromShifts, this.fromRatio, this.toShifts, this.toRatio);
+});
+Clazz_defineMethod (c$, "makeToMap", 
+function () {
+return this.posMap (this.toShifts, this.toRatio, this.fromShifts, this.fromRatio);
+});
+Clazz_defineMethod (c$, "posMap", 
+ function (shiftTo, ratio, shiftFrom, toRatio) {
+var iv = 0;
+var ivSize = shiftTo.size ();
+if (iv >= ivSize) {
+return null;
+}var intv = shiftTo.get (iv++);
+var from = intv[0];
+var to = intv[1];
+if (from > to) {
+from = intv[1];
+to = intv[0];
+}while (iv < ivSize) {
+intv = shiftTo.get (iv++);
+if (intv[0] < from) {
+from = intv[0];
+}if (intv[1] < from) {
+from = intv[1];
+}if (intv[0] > to) {
+to = intv[0];
+}if (intv[1] > to) {
+to = intv[1];
+}}
+var tF = 0;
+var tT = 0;
+var mp =  Clazz_newIntArray (to - from + 2, 0);
+for (var i = 0; i < mp.length; i++) {
+var m = jalview.util.MapList.shift (i + from, shiftTo, ratio, shiftFrom, toRatio);
+if (m != null) {
+if (i == 0) {
+tF = tT = m[0];
+} else {
+if (m[0] < tF) {
+tF = m[0];
+}if (m[0] > tT) {
+tT = m[0];
+}}}mp[i] = m;
+}
+var map =  Clazz_newArray (-1, [ Clazz_newIntArray (-1, [from, to, tF, tT]),  Clazz_newIntArray (to - from + 2, 0)]);
+map[0][2] = tF;
+map[0][3] = tT;
+for (var i = 0; i < mp.length; i++) {
+if (mp[i] != null) {
+map[1][i] = mp[i][0] - tF;
+} else {
+map[1][i] = -1;
+}}
+return map;
+}, "java.util.List,~N,java.util.List,~N");
+Clazz_defineMethod (c$, "shiftFrom", 
+function (pos) {
+return jalview.util.MapList.shift (pos, this.fromShifts, this.fromRatio, this.toShifts, this.toRatio);
+}, "~N");
+Clazz_defineMethod (c$, "shiftTo", 
+function (pos) {
+return jalview.util.MapList.shift (pos, this.toShifts, this.toRatio, this.fromShifts, this.fromRatio);
+}, "~N");
+c$.shift = Clazz_defineMethod (c$, "shift", 
+function (pos, shiftTo, fromRatio, shiftFrom, toRatio) {
+var fromCount = jalview.util.MapList.countPos (shiftTo, pos);
+if (fromCount == null) {
+return null;
+}var fromRemainder = (fromCount[0] - 1) % fromRatio;
+var toCount = 1 + ((Clazz_doubleToInt ((fromCount[0] - 1) / fromRatio)) * toRatio);
+var toPos = jalview.util.MapList.countToPos (shiftFrom, toCount);
+if (toPos == null) {
+return null;
+}return  Clazz_newIntArray (-1, [toPos[0], fromRemainder, toPos[1]]);
+}, "~N,java.util.List,~N,java.util.List,~N");
+c$.countPos = Clazz_defineMethod (c$, "countPos", 
+function (shiftTo, pos) {
+var count = 0;
+var intv;
+var iv = 0;
+var ivSize = shiftTo.size ();
+while (iv < ivSize) {
+intv = shiftTo.get (iv++);
+if (intv[0] <= intv[1]) {
+if (pos >= intv[0] && pos <= intv[1]) {
+return  Clazz_newIntArray (-1, [count + pos - intv[0] + 1, 1]);
+} else {
+count += intv[1] - intv[0] + 1;
+}} else {
+if (pos >= intv[1] && pos <= intv[0]) {
+return  Clazz_newIntArray (-1, [count + intv[0] - pos + 1, -1]);
+} else {
+count += intv[0] - intv[1] + 1;
+}}}
+return null;
+}, "java.util.List,~N");
+c$.countToPos = Clazz_defineMethod (c$, "countToPos", 
+function (shiftFrom, pos) {
+var count = 0;
+var diff = 0;
+var iv = 0;
+var ivSize = shiftFrom.size ();
+var intv =  Clazz_newIntArray (-1, [0, 0]);
+while (iv < ivSize) {
+intv = shiftFrom.get (iv++);
+diff = intv[1] - intv[0];
+if (diff >= 0) {
+if (pos <= count + 1 + diff) {
+return  Clazz_newIntArray (-1, [pos - count - 1 + intv[0], 1]);
+} else {
+count += 1 + diff;
+}} else {
+if (pos <= count + 1 - diff) {
+return  Clazz_newIntArray (-1, [intv[0] - (pos - count - 1), -1]);
+} else {
+count += 1 - diff;
+}}}
+return null;
+}, "java.util.List,~N");
+Clazz_defineMethod (c$, "locateInFrom", 
+function (start, end) {
+var fromStart = this.shiftTo (start);
+var fromEnd = this.shiftTo (end);
+return jalview.util.MapList.getIntervals (this.fromShifts, fromStart, fromEnd, this.fromRatio);
+}, "~N,~N");
+Clazz_defineMethod (c$, "locateInTo", 
+function (start, end) {
+var toStart = this.shiftFrom (start);
+var toEnd = this.shiftFrom (end);
+return jalview.util.MapList.getIntervals (this.toShifts, toStart, toEnd, this.toRatio);
+}, "~N,~N");
+c$.getIntervals = Clazz_defineMethod (c$, "getIntervals", 
+function (shiftFrom, fromStart, fromEnd, fromRatio2) {
+if (fromStart == null || fromEnd == null) {
+return null;
+}var startpos;
+var endpos;
+startpos = fromStart[0];
+endpos = fromEnd[0];
+var endindx = (fromRatio2 - 1);
+var intv = 0;
+var intvSize = shiftFrom.size ();
+var iv;
+var i = 0;
+var fs = -1;
+var fe_s = -1;
+var fe = -1;
+while (intv < intvSize && (fs == -1 || fe == -1)) {
+iv = shiftFrom.get (intv++);
+if (fe_s > -1) {
+endpos = iv[0];
+endindx--;
+}if (iv[0] <= iv[1]) {
+if (fs == -1 && startpos >= iv[0] && startpos <= iv[1]) {
+fs = i;
+}if (endpos >= iv[0] && endpos <= iv[1]) {
+if (fe_s == -1) {
+fe_s = i;
+}if (fe_s != -1) {
+if (endpos + endindx <= iv[1]) {
+fe = i;
+endpos = endpos + endindx;
+} else {
+endindx -= iv[1] - endpos;
+}}}} else {
+if (fs == -1 && startpos <= iv[0] && startpos >= iv[1]) {
+fs = i;
+}if (endpos <= iv[0] && endpos >= iv[1]) {
+if (fe_s == -1) {
+fe_s = i;
+}if (fe_s != -1) {
+if (endpos - endindx >= iv[1]) {
+fe = i;
+endpos = endpos - endindx;
+} else {
+endindx -= endpos - iv[1];
+}}}}i++;
+}
+if (fs == fe && fe == -1) {
+return null;
+}var ranges =  new java.util.ArrayList ();
+if (fs <= fe) {
+intv = fs;
+i = fs;
+iv = shiftFrom.get (intv++);
+iv =  Clazz_newIntArray (-1, [iv[0], iv[1]]);
+if (i == fs) {
+iv[0] = startpos;
+}while (i != fe) {
+ranges.add (iv);
+iv = shiftFrom.get (intv++);
+iv =  Clazz_newIntArray (-1, [iv[0], iv[1]]);
+i++;
+}
+if (i == fe) {
+iv[1] = endpos;
+}ranges.add (iv);
+} else {
+i = shiftFrom.size () - 1;
+while (i > fs) {
+i--;
+}
+iv = shiftFrom.get (i);
+iv =  Clazz_newIntArray (-1, [iv[1], iv[0]]);
+if (i == fs) {
+iv[0] = startpos;
+}while (--i != fe) {
+ranges.add (iv);
+iv = shiftFrom.get (i);
+iv =  Clazz_newIntArray (-1, [iv[1], iv[0]]);
+}
+if (i == fe) {
+iv[1] = endpos;
+}ranges.add (iv);
+}var range = null;
+if (ranges != null && ranges.size () > 0) {
+range =  Clazz_newIntArray (ranges.size () * 2, 0);
+intv = 0;
+intvSize = ranges.size ();
+i = 0;
+while (intv < intvSize) {
+iv = ranges.get (intv);
+range[i++] = iv[0];
+range[i++] = iv[1];
+ranges.set (intv++, null);
+}
+}return range;
+}, "java.util.List,~A,~A,~N");
+Clazz_defineMethod (c$, "getToPosition", 
+function (mpos) {
+var mp = this.shiftTo (mpos);
+if (mp != null) {
+return mp[0];
+}return mpos;
+}, "~N");
+Clazz_defineMethod (c$, "getToWord", 
+function (mpos) {
+var mp = this.shiftTo (mpos);
+if (mp != null) {
+return  Clazz_newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.getFromRatio () - 1)]);
+}return null;
+}, "~N");
+Clazz_defineMethod (c$, "getMappedPosition", 
+function (pos) {
+var mp = this.shiftFrom (pos);
+if (mp != null) {
+return mp[0];
+}return pos;
+}, "~N");
+Clazz_defineMethod (c$, "getMappedWord", 
+function (pos) {
+var mp = this.shiftFrom (pos);
+if (mp != null) {
+return  Clazz_newIntArray (-1, [mp[0], mp[0] + mp[2] * (this.getToRatio () - 1)]);
+}return null;
+}, "~N");
+Clazz_defineMethod (c$, "getInverse", 
+function () {
+return  new jalview.util.MapList (this.getToRanges (), this.getFromRanges (), this.getToRatio (), this.getFromRatio ());
+});
+Clazz_defineMethod (c$, "containsEither", 
+function (local, map) {
+if (local) {
+return ((this.getFromLowest () >= map.getFromLowest () && this.getFromHighest () <= map.getFromHighest ()) || (this.getFromLowest () <= map.getFromLowest () && this.getFromHighest () >= map.getFromHighest ()));
+} else {
+return ((this.getToLowest () >= map.getToLowest () && this.getToHighest () <= map.getToHighest ()) || (this.getToLowest () <= map.getToLowest () && this.getToHighest () >= map.getToHighest ()));
+}}, "~B,jalview.util.MapList");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+var sb =  new StringBuilder (64);
+sb.append ("From (").append (this.fromRatio).append (":").append (this.toRatio).append (") [");
+for (var shift, $shift = this.fromShifts.iterator (); $shift.hasNext () && ((shift = $shift.next ()) || true);) {
+sb.append (" ").append (java.util.Arrays.toString (shift));
+}
+sb.append (" ] To [");
+for (var shift, $shift = this.toShifts.iterator (); $shift.hasNext () && ((shift = $shift.next ()) || true);) {
+sb.append (" ").append (java.util.Arrays.toString (shift));
+}
+sb.append (" ]");
+return sb.toString ();
+});
+});
+Clazz_declarePackage ("jalview.util");
+Clazz_load (null, "jalview.util.MappingUtils", ["jalview.analysis.AlignmentSorter", "jalview.commands.EditCommand", "$.OrderCommand", "jalview.datamodel.AlignmentOrder", "$.ColumnSelection", "$.SearchResults", "$.Sequence", "$.SequenceGroup", "jalview.util.Comparison", "$.StringUtils", "java.util.ArrayList", "$.Collections", "$.HashMap"], function () {
+c$ = Clazz_declareType (jalview.util, "MappingUtils");
+c$.mapCutOrPaste = Clazz_defineMethod (c$, "mapCutOrPaste", 
+function (edit, undo, targetSeqs, result, mappings) {
+var action = edit.getAction ();
+if (undo) {
+action = action.getUndoAction ();
+}System.err.println ("MappingUtils.mapCutOrPaste not yet implemented");
+}, "jalview.commands.EditCommand.Edit,~B,java.util.List,jalview.commands.EditCommand,java.util.Set");
+c$.mapEditCommand = Clazz_defineMethod (c$, "mapEditCommand", 
+function (command, undo, mapTo, gapChar, mappings) {
+if (!mapTo.isNucleotide ()) {
+return null;
+}var targetCopies =  new java.util.HashMap ();
+for (var seq, $seq = mapTo.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+var ds = seq.getDatasetSequence ();
+if (ds != null) {
+var copy =  new jalview.datamodel.Sequence (seq);
+copy.setDatasetSequence (ds);
+targetCopies.put (ds, copy);
+}}
+var originalSequences = command.priorState (undo);
+var result =  new jalview.commands.EditCommand ();
+var edits = command.getEditIterator (!undo);
+while (edits.hasNext ()) {
+var edit = edits.next ();
+if (edit.getAction () === jalview.commands.EditCommand.Action.CUT || edit.getAction () === jalview.commands.EditCommand.Action.PASTE) {
+jalview.util.MappingUtils.mapCutOrPaste (edit, undo, mapTo.getSequences (), result, mappings);
+} else if (edit.getAction () === jalview.commands.EditCommand.Action.INSERT_GAP || edit.getAction () === jalview.commands.EditCommand.Action.DELETE_GAP) {
+jalview.util.MappingUtils.mapInsertOrDelete (edit, undo, originalSequences, mapTo.getSequences (), targetCopies, gapChar, result, mappings);
+}}
+return result.getSize () > 0 ? result : null;
+}, "jalview.commands.EditCommand,~B,jalview.datamodel.AlignmentI,~S,java.util.Set");
+c$.mapInsertOrDelete = Clazz_defineMethod (c$, "mapInsertOrDelete", 
+function (edit, undo, originalSequences, targetSeqs, targetCopies, gapChar, result, mappings) {
+var action = edit.getAction ();
+if (undo) {
+action = action.getUndoAction ();
+}var count = edit.getNumber ();
+var editPos = edit.getPosition ();
+for (var seq, $seq = 0, $$seq = edit.getSequences (); $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {
+var ds = seq.getDatasetSequence ();
+if (ds == null) {
+continue;
+}var actedOn = originalSequences.get (ds);
+var seqpos = actedOn.findPosition (editPos);
+var sr = jalview.util.MappingUtils.buildSearchResults (seq, seqpos, mappings);
+if (!sr.isEmpty ()) {
+for (var targetSeq, $targetSeq = targetSeqs.iterator (); $targetSeq.hasNext () && ((targetSeq = $targetSeq.next ()) || true);) {
+ds = targetSeq.getDatasetSequence ();
+if (ds == null) {
+continue;
+}var copyTarget = targetCopies.get (ds);
+var match = sr.getResults (copyTarget, 0, copyTarget.getLength ());
+if (match != null) {
+var ratio = 3;
+var mappedCount = count * 3;
+var mappedEditPos = action === jalview.commands.EditCommand.Action.DELETE_GAP ? match[0] - mappedCount : match[0];
+var e = resultClazz_innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, action,  Clazz_newArray (-1, [targetSeq]), mappedEditPos, mappedCount, gapChar);
+result.addEdit (e);
+if (action === jalview.commands.EditCommand.Action.INSERT_GAP) {
+copyTarget.setSequence ( String.instantialize (jalview.util.StringUtils.insertCharAt (copyTarget.getSequence (), mappedEditPos, mappedCount, gapChar)));
+} else if (action === jalview.commands.EditCommand.Action.DELETE_GAP) {
+copyTarget.setSequence ( String.instantialize (jalview.util.StringUtils.deleteChars (copyTarget.getSequence (), mappedEditPos, mappedEditPos + mappedCount)));
+}}}
+}if (action === jalview.commands.EditCommand.Action.INSERT_GAP) {
+actedOn.setSequence ( String.instantialize (jalview.util.StringUtils.insertCharAt (actedOn.getSequence (), editPos, count, gapChar)));
+} else if (action === jalview.commands.EditCommand.Action.DELETE_GAP) {
+actedOn.setSequence ( String.instantialize (jalview.util.StringUtils.deleteChars (actedOn.getSequence (), editPos, editPos + count)));
+}}
+}, "jalview.commands.EditCommand.Edit,~B,java.util.Map,java.util.List,java.util.Map,~S,jalview.commands.EditCommand,java.util.Set");
+c$.buildSearchResults = Clazz_defineMethod (c$, "buildSearchResults", 
+function (seq, index, seqmappings) {
+var results =  new jalview.datamodel.SearchResults ();
+jalview.util.MappingUtils.addSearchResults (results, seq, index, seqmappings);
+return results;
+}, "jalview.datamodel.SequenceI,~N,java.util.Set");
+c$.addSearchResults = Clazz_defineMethod (c$, "addSearchResults", 
+function (results, seq, index, seqmappings) {
+if (index >= seq.getStart () && index <= seq.getEnd ()) {
+for (var acf, $acf = seqmappings.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+acf.markMappedRegion (seq, index, results);
+}
+}}, "jalview.datamodel.SearchResults,jalview.datamodel.SequenceI,~N,java.util.Set");
+c$.mapSequenceGroup = Clazz_defineMethod (c$, "mapSequenceGroup", 
+function (sg, mapFrom, mapTo) {
+var targetIsNucleotide = mapTo.isNucleotide ();
+var protein = targetIsNucleotide ? mapFrom : mapTo;
+var codonFrames = protein.getAlignment ().getCodonFrames ();
+var mappedGroup =  new jalview.datamodel.SequenceGroup (sg);
+mappedGroup.cs = mapTo.getGlobalColourScheme ();
+mappedGroup.clear ();
+var minStartCol = -1;
+var maxEndCol = -1;
+var selectionStartRes = sg.getStartRes ();
+var selectionEndRes = sg.getEndRes ();
+for (var selected, $selected = sg.getSequences ().iterator (); $selected.hasNext () && ((selected = $selected.next ()) || true);) {
+var firstUngappedPos = selectionStartRes;
+while (firstUngappedPos <= selectionEndRes && jalview.util.Comparison.isGap (selected.getCharAt (firstUngappedPos))) {
+firstUngappedPos++;
+}
+if (firstUngappedPos > selectionEndRes) {
+continue;
+}var lastUngappedPos = selectionEndRes;
+while (lastUngappedPos >= selectionStartRes && jalview.util.Comparison.isGap (selected.getCharAt (lastUngappedPos))) {
+lastUngappedPos--;
+}
+var startResiduePos = selected.findPosition (firstUngappedPos);
+var endResiduePos = selected.findPosition (lastUngappedPos);
+for (var acf, $acf = codonFrames.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+var mappedSequence = targetIsNucleotide ? acf.getDnaForAaSeq (selected) : acf.getAaForDnaSeq (selected);
+if (mappedSequence != null) {
+for (var seq, $seq = mapTo.getAlignment ().getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+var mappedStartResidue = 0;
+var mappedEndResidue = 0;
+if (seq.getDatasetSequence () === mappedSequence) {
+var sr = jalview.util.MappingUtils.buildSearchResults (selected, startResiduePos, java.util.Collections.singleton (acf));
+for (var m, $m = sr.getResults ().iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
+mappedStartResidue = m.getStart ();
+mappedEndResidue = m.getEnd ();
+}
+sr = jalview.util.MappingUtils.buildSearchResults (selected, endResiduePos, java.util.Collections.singleton (acf));
+for (var m, $m = sr.getResults ().iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
+mappedStartResidue = Math.min (mappedStartResidue, m.getStart ());
+mappedEndResidue = Math.max (mappedEndResidue, m.getEnd ());
+}
+var mappedStartCol = seq.findIndex (mappedStartResidue) - 1;
+minStartCol = minStartCol == -1 ? mappedStartCol : Math.min (minStartCol, mappedStartCol);
+var mappedEndCol = seq.findIndex (mappedEndResidue) - 1;
+maxEndCol = maxEndCol == -1 ? mappedEndCol : Math.max (maxEndCol, mappedEndCol);
+mappedGroup.addSequence (seq, false);
+break;
+}}
+}}
+}
+mappedGroup.setStartRes (minStartCol < 0 ? 0 : minStartCol);
+mappedGroup.setEndRes (maxEndCol < 0 ? 0 : maxEndCol);
+return mappedGroup;
+}, "jalview.datamodel.SequenceGroup,jalview.api.AlignViewportI,jalview.api.AlignViewportI");
+c$.mapOrderCommand = Clazz_defineMethod (c$, "mapOrderCommand", 
+function (command, undo, mapTo, mappings) {
+var sortOrder = command.getSequenceOrder (undo);
+var mappedOrder =  new java.util.ArrayList ();
+var j = 0;
+var mappingToNucleotide = mapTo.isNucleotide ();
+for (var seq, $seq = 0, $$seq = sortOrder; $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {
+for (var acf, $acf = mappings.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+var mappedSeq = mappingToNucleotide ? acf.getDnaForAaSeq (seq) : acf.getAaForDnaSeq (seq);
+if (mappedSeq != null) {
+for (var seq2, $seq2 = mapTo.getSequences ().iterator (); $seq2.hasNext () && ((seq2 = $seq2.next ()) || true);) {
+if (seq2.getDatasetSequence () === mappedSeq) {
+mappedOrder.add (seq2);
+j++;
+break;
+}}
+}}
+}
+if (j == 0) {
+return null;
+}if (j < mapTo.getHeight ()) {
+for (var seq, $seq = mapTo.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+if (!mappedOrder.contains (seq)) {
+mappedOrder.add (seq);
+}}
+}var mappedOrderArray = mappedOrder.toArray ( new Array (mappedOrder.size ()));
+var oldOrder = mapTo.getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortBy (mapTo,  new jalview.datamodel.AlignmentOrder (mappedOrderArray));
+var result =  new jalview.commands.OrderCommand (command.getDescription (), oldOrder, mapTo);
+return result;
+}, "jalview.commands.OrderCommand,~B,jalview.datamodel.AlignmentI,java.util.Set");
+c$.mapColumnSelection = Clazz_defineMethod (c$, "mapColumnSelection", 
+function (colsel, mapFrom, mapTo) {
+var targetIsNucleotide = mapTo.isNucleotide ();
+var protein = targetIsNucleotide ? mapFrom : mapTo;
+var codonFrames = protein.getAlignment ().getCodonFrames ();
+var mappedColumns =  new jalview.datamodel.ColumnSelection ();
+if (colsel == null) {
+return mappedColumns;
+}var fromGapChar = mapFrom.getAlignment ().getGapCharacter ();
+for (var obj, $obj = colsel.getSelected ().iterator (); $obj.hasNext () && ((obj = $obj.next ()) || true);) {
+var col = (obj).intValue ();
+var mappedToMin = 2147483647;
+var mappedToMax = -2147483648;
+for (var fromSeq, $fromSeq = mapFrom.getAlignment ().getSequences ().iterator (); $fromSeq.hasNext () && ((fromSeq = $fromSeq.next ()) || true);) {
+if (fromSeq.getCharAt (col) == fromGapChar) {
+continue;
+}var residuePos = fromSeq.findPosition (col);
+var sr = jalview.util.MappingUtils.buildSearchResults (fromSeq, residuePos, codonFrames);
+for (var m, $m = sr.getResults ().iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
+var mappedStartResidue = m.getStart ();
+var mappedEndResidue = m.getEnd ();
+var mappedSeq = m.getSequence ();
+for (var toSeq, $toSeq = mapTo.getAlignment ().getSequences ().iterator (); $toSeq.hasNext () && ((toSeq = $toSeq.next ()) || true);) {
+if (toSeq.getDatasetSequence () === mappedSeq) {
+var mappedStartCol = toSeq.findIndex (mappedStartResidue);
+var mappedEndCol = toSeq.findIndex (mappedEndResidue);
+mappedToMin = Math.min (mappedToMin, mappedStartCol);
+mappedToMax = Math.max (mappedToMax, mappedEndCol);
+break;
+}}
+}
+}
+for (var i = mappedToMin; i <= mappedToMax; i++) {
+mappedColumns.addElement (i - 1);
+}
+}
+return mappedColumns;
+}, "jalview.datamodel.ColumnSelection,jalview.api.AlignViewportI,jalview.api.AlignViewportI");
+c$.findCodonFor = Clazz_defineMethod (c$, "findCodonFor", 
+function (seq, col, mappings) {
+var dsPos = seq.findPosition (col);
+for (var mapping, $mapping = mappings.iterator (); $mapping.hasNext () && ((mapping = $mapping.next ()) || true);) {
+if (mapping.involvesSequence (seq)) {
+return mapping.getMappedCodon (seq.getDatasetSequence (), dsPos);
+}}
+return null;
+}, "jalview.datamodel.SequenceI,~N,java.util.Set");
+c$.flattenRanges = Clazz_defineMethod (c$, "flattenRanges", 
+function (ranges) {
+var count = 0;
+for (var i = 0; i < ranges.length - 1; i += 2) {
+count += ranges[i + 1] - ranges[i] + 1;
+}
+var result =  Clazz_newIntArray (count, 0);
+var k = 0;
+for (var i = 0; i < ranges.length - 1; i += 2) {
+for (var j = ranges[i]; j <= ranges[i + 1]; j++) {
+result[k++] = j;
+}
+}
+return result;
+}, "~A");
+c$.findMappingsForSequence = Clazz_defineMethod (c$, "findMappingsForSequence", 
+function (sequence, mappings) {
+var result =  new java.util.ArrayList ();
+if (sequence == null || mappings == null) {
+return result;
+}for (var mapping, $mapping = mappings.iterator (); $mapping.hasNext () && ((mapping = $mapping.next ()) || true);) {
+if (mapping.involvesSequence (sequence)) {
+result.add (mapping);
+}}
+return result;
+}, "jalview.datamodel.SequenceI,java.util.Set");
+});
+Clazz_declarePackage ("jalview.commands");
+Clazz_load (["jalview.commands.CommandI", "java.lang.Enum", "java.util.ArrayList"], "jalview.commands.EditCommand", ["jalview.analysis.AlignSeq", "jalview.datamodel.AlignmentAnnotation", "$.Annotation", "$.Sequence", "$.SequenceFeature", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "$.ReverseListIterator", "$.StringUtils", "java.lang.StringBuffer", "java.util.HashMap", "$.Hashtable"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.edits = null;
+this.description = null;
+if (!Clazz_isClassDefined ("jalview.commands.EditCommand.Edit")) {
+jalview.commands.EditCommand.$EditCommand$Edit$ ();
+}
+Clazz_instantialize (this, arguments);
+}, jalview.commands, "EditCommand", null, jalview.commands.CommandI);
+Clazz_prepareFields (c$, function () {
+this.edits =  new java.util.ArrayList ();
+});
+Clazz_makeConstructor (c$, 
+function () {
+});
+Clazz_makeConstructor (c$, 
+function (description) {
+this.description = description;
+}, "~S");
+Clazz_makeConstructor (c$, 
+function (description, command, seqs, position, number, al) {
+this.description = description;
+if (command === jalview.commands.EditCommand.Action.CUT || command === jalview.commands.EditCommand.Action.PASTE) {
+this.setEdit (Clazz_innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, command, seqs, position, number, al));
+}this.performEdit (0, null);
+}, "~S,jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI");
+Clazz_makeConstructor (c$, 
+function (description, command, replace, seqs, position, number, al) {
+this.description = description;
+if (command === jalview.commands.EditCommand.Action.REPLACE) {
+this.setEdit (Clazz_innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, command, seqs, position, number, al, replace));
+}this.performEdit (0, null);
+}, "~S,jalview.commands.EditCommand.Action,~S,~A,~N,~N,jalview.datamodel.AlignmentI");
+Clazz_defineMethod (c$, "setEdit", 
+function (e) {
+this.edits.clear ();
+this.edits.add (e);
+}, "jalview.commands.EditCommand.Edit");
+Clazz_defineMethod (c$, "addEdit", 
+function (e) {
+if (!jalview.commands.EditCommand.expandEdit (this.edits, e)) {
+this.edits.add (e);
+}}, "jalview.commands.EditCommand.Edit");
+c$.expandEdit = Clazz_defineMethod (c$, "expandEdit", 
+function (edits, e) {
+if (edits == null || edits.isEmpty ()) {
+return false;
+}var lastEdit = edits.get (edits.size () - 1);
+var action = e.command;
+if (lastEdit.command !== action) {
+return false;
+}if (lastEdit.seqs.length != e.seqs.length) {
+return false;
+}for (var i = 0; i < e.seqs.length; i++) {
+if (lastEdit.seqs[i].getDatasetSequence () !== e.seqs[i].getDatasetSequence ()) {
+return false;
+}}
+var contiguous = (action === jalview.commands.EditCommand.Action.INSERT_GAP && e.position == lastEdit.position + lastEdit.number) || (action === jalview.commands.EditCommand.Action.DELETE_GAP && e.position + e.number == lastEdit.position);
+if (contiguous) {
+lastEdit.number += e.number;
+lastEdit.seqs = e.seqs;
+if (action === jalview.commands.EditCommand.Action.DELETE_GAP) {
+lastEdit.position--;
+}return true;
+}return false;
+}, "java.util.List,jalview.commands.EditCommand.Edit");
+Clazz_defineMethod (c$, "clearEdits", 
+function () {
+this.edits.clear ();
+});
+Clazz_defineMethod (c$, "getEdit", 
+function (i) {
+if (i >= 0 && i < this.edits.size ()) {
+return this.edits.get (i);
+}return null;
+}, "~N");
+Clazz_overrideMethod (c$, "getDescription", 
+function () {
+return this.description;
+});
+Clazz_overrideMethod (c$, "getSize", 
+function () {
+return this.edits.size ();
+});
+Clazz_defineMethod (c$, "getAlignment", 
+function () {
+return (this.edits.isEmpty () ? null : this.edits.get (0).al);
+});
+Clazz_defineMethod (c$, "appendEdit", 
+function (command, seqs, position, number, al, performEdit) {
+this.appendEdit (command, seqs, position, number, al, performEdit, null);
+}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI,~B");
+Clazz_defineMethod (c$, "appendEdit", 
+function (command, seqs, position, number, al, performEdit, views) {
+var edit = Clazz_innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, command, seqs, position, number, al.getGapCharacter ());
+if (al.getHeight () == seqs.length) {
+edit.al = al;
+edit.fullAlignmentHeight = true;
+}this.addEdit (edit);
+if (performEdit) {
+jalview.commands.EditCommand.performEdit (edit, views);
+}}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI,~B,~A");
+Clazz_defineMethod (c$, "appendEdit", 
+function (edit, al, performEdit, views) {
+if (al.getHeight () == edit.seqs.length) {
+edit.al = al;
+edit.fullAlignmentHeight = true;
+}this.addEdit (edit);
+if (performEdit) {
+jalview.commands.EditCommand.performEdit (edit, views);
+}}, "jalview.commands.EditCommand.Edit,jalview.datamodel.AlignmentI,~B,~A");
+Clazz_defineMethod (c$, "performEdit", 
+function (commandIndex, views) {
+var iterator = this.edits.listIterator (commandIndex);
+while (iterator.hasNext ()) {
+var edit = iterator.next ();
+jalview.commands.EditCommand.performEdit (edit, views);
+}
+}, "~N,~A");
+c$.performEdit = Clazz_defineMethod (c$, "performEdit", 
+function (edit, views) {
+switch (edit.command) {
+case jalview.commands.EditCommand.Action.INSERT_GAP:
+jalview.commands.EditCommand.insertGap (edit);
+break;
+case jalview.commands.EditCommand.Action.DELETE_GAP:
+jalview.commands.EditCommand.deleteGap (edit);
+break;
+case jalview.commands.EditCommand.Action.CUT:
+jalview.commands.EditCommand.cut (edit, views);
+break;
+case jalview.commands.EditCommand.Action.PASTE:
+jalview.commands.EditCommand.paste (edit, views);
+break;
+case jalview.commands.EditCommand.Action.REPLACE:
+jalview.commands.EditCommand.replace (edit);
+break;
+case jalview.commands.EditCommand.Action.INSERT_NUC:
+break;
+default:
+break;
+}
+}, "jalview.commands.EditCommand.Edit,~A");
+Clazz_overrideMethod (c$, "doCommand", 
+function (views) {
+this.performEdit (0, views);
+}, "~A");
+Clazz_overrideMethod (c$, "undoCommand", 
+function (views) {
+var iterator = this.edits.listIterator (this.edits.size ());
+while (iterator.hasPrevious ()) {
+var e = iterator.previous ();
+switch (e.command) {
+case jalview.commands.EditCommand.Action.INSERT_GAP:
+jalview.commands.EditCommand.deleteGap (e);
+break;
+case jalview.commands.EditCommand.Action.DELETE_GAP:
+jalview.commands.EditCommand.insertGap (e);
+break;
+case jalview.commands.EditCommand.Action.CUT:
+jalview.commands.EditCommand.paste (e, views);
+break;
+case jalview.commands.EditCommand.Action.PASTE:
+jalview.commands.EditCommand.cut (e, views);
+break;
+case jalview.commands.EditCommand.Action.REPLACE:
+jalview.commands.EditCommand.replace (e);
+break;
+case jalview.commands.EditCommand.Action.INSERT_NUC:
+break;
+default:
+break;
+}
+}
+}, "~A");
+c$.insertGap = Clazz_defineMethod (c$, "insertGap", 
+ function (command) {
+for (var s = 0; s < command.seqs.length; s++) {
+command.seqs[s].insertCharAt (command.position, command.number, command.gapChar);
+}
+jalview.commands.EditCommand.adjustAnnotations (command, true, false, null);
+}, "jalview.commands.EditCommand.Edit");
+c$.deleteGap = Clazz_defineMethod (c$, "deleteGap", 
+ function (command) {
+for (var s = 0; s < command.seqs.length; s++) {
+command.seqs[s].deleteChars (command.position, command.position + command.number);
+}
+jalview.commands.EditCommand.adjustAnnotations (command, false, false, null);
+}, "jalview.commands.EditCommand.Edit");
+c$.cut = Clazz_defineMethod (c$, "cut", 
+function (command, views) {
+var seqDeleted = false;
+command.string =  Clazz_newCharArray (command.seqs.length, '\0');
+for (var i = 0; i < command.seqs.length; i++) {
+var sequence = command.seqs[i];
+if (sequence.getLength () > command.position) {
+command.string[i] = sequence.getSequence (command.position, command.position + command.number);
+var oldds = sequence.getDatasetSequence ();
+if (command.oldds != null && command.oldds[i] != null) {
+sequence.setDatasetSequence (null);
+}sequence.deleteChars (command.position, command.position + command.number);
+if (command.oldds != null && command.oldds[i] != null) {
+sequence.setDatasetSequence (command.oldds[i]);
+command.oldds[i] = oldds;
+} else {
+if (oldds !== sequence.getDatasetSequence () || sequence.getSequenceFeatures () != null) {
+if (command.oldds == null) {
+command.oldds =  new Array (command.seqs.length);
+}command.oldds[i] = oldds;
+jalview.commands.EditCommand.adjustFeatures (command, i, sequence.findPosition (command.position), sequence.findPosition (command.position + command.number), false);
+}}}if (sequence.getLength () < 1) {
+command.al.deleteSequence (sequence);
+seqDeleted = true;
+}}
+jalview.commands.EditCommand.adjustAnnotations (command, false, seqDeleted, views);
+}, "jalview.commands.EditCommand.Edit,~A");
+c$.paste = Clazz_defineMethod (c$, "paste", 
+function (command, views) {
+var tmp;
+var newDSNeeded;
+var newDSWasNeeded;
+var newstart;
+var newend;
+var seqWasDeleted = false;
+var start = 0;
+var end = 0;
+for (var i = 0; i < command.seqs.length; i++) {
+newDSNeeded = false;
+newDSWasNeeded = command.oldds != null && command.oldds[i] != null;
+if (command.seqs[i].getLength () < 1) {
+if (command.alIndex[i] < command.al.getHeight ()) {
+var sequences;
+{
+if (!(command.alIndex[i] < 0)) {
+sequences.add (command.alIndex[i], command.seqs[i]);
+}}} else {
+command.al.addSequence (command.seqs[i]);
+}seqWasDeleted = true;
+}newstart = command.seqs[i].getStart ();
+newend = command.seqs[i].getEnd ();
+tmp =  new StringBuffer ();
+tmp.append (command.seqs[i].getSequence ());
+if (command.string != null && command.string[i] != null) {
+if (command.position >= tmp.length ()) {
+var length = command.position - tmp.length ();
+while (length > 0) {
+tmp.append (command.gapChar);
+length--;
+}
+}tmp.insert (command.position, command.string[i]);
+for (var s = 0; s < command.string[i].length; s++) {
+if (jalview.schemes.ResidueProperties.aaIndex[command.string[i][s].charCodeAt (0)] != 23) {
+if (!newDSNeeded) {
+newDSNeeded = true;
+start = command.seqs[i].findPosition (command.position);
+end = command.seqs[i].findPosition (command.position + command.number);
+}if (command.seqs[i].getStart () == start) {
+newstart--;
+} else {
+newend++;
+}}}
+command.string[i] = null;
+}command.seqs[i].setSequence (tmp.toString ());
+command.seqs[i].setStart (newstart);
+command.seqs[i].setEnd (newend);
+if (newDSNeeded) {
+if (command.seqs[i].getDatasetSequence () != null) {
+var ds;
+if (newDSWasNeeded) {
+ds = command.oldds[i];
+} else {
+ds =  new jalview.datamodel.Sequence (command.seqs[i].getName (), jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, command.seqs[i].getSequenceAsString ()), command.seqs[i].getStart (), command.seqs[i].getEnd ());
+ds.setDescription (command.seqs[i].getDescription ());
+}if (command.oldds == null) {
+command.oldds =  new Array (command.seqs.length);
+}command.oldds[i] = command.seqs[i].getDatasetSequence ();
+command.seqs[i].setDatasetSequence (ds);
+}jalview.commands.EditCommand.adjustFeatures (command, i, start, end, true);
+}}
+jalview.commands.EditCommand.adjustAnnotations (command, true, seqWasDeleted, views);
+command.string = null;
+}, "jalview.commands.EditCommand.Edit,~A");
+c$.replace = Clazz_defineMethod (c$, "replace", 
+function (command) {
+var tmp;
+var oldstring;
+var start = command.position;
+var end = command.number;
+command.number = start + command.string[0].length;
+for (var i = 0; i < command.seqs.length; i++) {
+var newDSWasNeeded = command.oldds != null && command.oldds[i] != null;
+oldstring = command.seqs[i].getSequenceAsString ();
+tmp =  new StringBuffer (oldstring.substring (0, start));
+tmp.append (command.string[i]);
+var nogaprep = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars,  String.instantialize (command.string[i]));
+var ipos = command.seqs[i].findPosition (start) - command.seqs[i].getStart ();
+tmp.append (oldstring.substring (end));
+command.seqs[i].setSequence (tmp.toString ());
+command.string[i] = oldstring.substring (start, end).toCharArray ();
+var nogapold = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars,  String.instantialize (command.string[i]));
+if (!nogaprep.toLowerCase ().equals (nogapold.toLowerCase ())) {
+if (newDSWasNeeded) {
+var oldds = command.seqs[i].getDatasetSequence ();
+command.seqs[i].setDatasetSequence (command.oldds[i]);
+command.oldds[i] = oldds;
+} else {
+if (command.oldds == null) {
+command.oldds =  new Array (command.seqs.length);
+}command.oldds[i] = command.seqs[i].getDatasetSequence ();
+var newds =  new jalview.datamodel.Sequence (command.seqs[i].getDatasetSequence ());
+var fullseq;
+var osp = newds.getSequenceAsString ();
+fullseq = osp.substring (0, ipos) + nogaprep + osp.substring (ipos + nogaprep.length);
+newds.setSequence (fullseq.toUpperCase ());
+command.seqs[i].setDatasetSequence (newds);
+}}tmp = null;
+oldstring = null;
+}
+}, "jalview.commands.EditCommand.Edit");
+c$.adjustAnnotations = Clazz_defineMethod (c$, "adjustAnnotations", 
+function (command, insert, modifyVisibility, views) {
+var annotations = null;
+if (modifyVisibility && !insert) {
+command.deletedAnnotationRows =  new java.util.Hashtable ();
+}if (command.fullAlignmentHeight) {
+annotations = command.al.getAlignmentAnnotation ();
+} else {
+var aSize = 0;
+var tmp;
+for (var s = 0; s < command.seqs.length; s++) {
+if (modifyVisibility) {
+if (!insert) {
+tmp = command.seqs[s].getAnnotation ();
+if (tmp != null) {
+var alen = tmp.length;
+for (var aa = 0; aa < tmp.length; aa++) {
+if (!command.al.deleteAnnotation (tmp[aa])) {
+tmp[aa] = null;
+alen--;
+}}
+command.seqs[s].setAlignmentAnnotation (null);
+if (alen != tmp.length) {
+var saved =  new Array (alen);
+for (var aa = 0, aapos = 0; aa < tmp.length; aa++) {
+if (tmp[aa] != null) {
+saved[aapos++] = tmp[aa];
+tmp[aa] = null;
+}}
+tmp = saved;
+command.deletedAnnotationRows.put (command.seqs[s], saved);
+for (var alview = 0; views != null && alview < views.length; alview++) {
+if (views[alview] !== command.al) {
+var toremove = views[alview].getAlignmentAnnotation ();
+if (toremove == null || toremove.length == 0) {
+continue;
+}for (var aa = 0; aa < toremove.length; aa++) {
+if (toremove[aa].sequenceRef === command.seqs[s]) {
+views[alview].deleteAnnotation (toremove[aa]);
+}}
+}}
+} else {
+command.deletedAnnotationRows.put (command.seqs[s], tmp);
+}}} else {
+if (command.deletedAnnotationRows != null && command.deletedAnnotationRows.containsKey (command.seqs[s])) {
+var revealed = command.deletedAnnotationRows.get (command.seqs[s]);
+command.seqs[s].setAlignmentAnnotation (revealed);
+if (revealed != null) {
+for (var aa = 0; aa < revealed.length; aa++) {
+command.al.addAnnotation (revealed[aa]);
+}
+for (var aa = 0; aa < revealed.length; aa++) {
+command.al.setAnnotationIndex (revealed[aa], aa);
+}
+for (var vnum = 0; views != null && vnum < views.length; vnum++) {
+if (views[vnum] !== command.al) {
+var avwidth = views[vnum].getWidth () + 1;
+for (var a = 0; a < revealed.length; a++) {
+var newann =  new jalview.datamodel.AlignmentAnnotation (revealed[a]);
+command.seqs[s].addAlignmentAnnotation (newann);
+newann.padAnnotation (avwidth);
+views[vnum].addAnnotation (newann);
+views[vnum].setAnnotationIndex (newann, a);
+}
+}}
+}}}continue;
+}if (command.seqs[s].getAnnotation () == null) {
+continue;
+}if (aSize == 0) {
+annotations = command.seqs[s].getAnnotation ();
+} else {
+tmp =  new Array (aSize + command.seqs[s].getAnnotation ().length);
+System.arraycopy (annotations, 0, tmp, 0, aSize);
+System.arraycopy (command.seqs[s].getAnnotation (), 0, tmp, aSize, command.seqs[s].getAnnotation ().length);
+annotations = tmp;
+}aSize = annotations.length;
+}
+}if (annotations == null) {
+return;
+}if (!insert) {
+command.deletedAnnotations =  new java.util.Hashtable ();
+}var aSize;
+var temp;
+for (var a = 0; a < annotations.length; a++) {
+if (annotations[a].autoCalculated || annotations[a].annotations == null) {
+continue;
+}var tSize = 0;
+aSize = annotations[a].annotations.length;
+if (insert) {
+temp =  new Array (aSize + command.number);
+if (annotations[a].padGaps) {
+for (var aa = 0; aa < temp.length; aa++) {
+temp[aa] =  new jalview.datamodel.Annotation (command.gapChar + "", null, ' ', 0);
+}
+}} else {
+if (command.position < aSize) {
+if (command.position + command.number >= aSize) {
+tSize = aSize;
+} else {
+tSize = aSize - command.number;
+}} else {
+tSize = aSize;
+}if (tSize < 0) {
+tSize = aSize;
+}temp =  new Array (tSize);
+}if (insert) {
+if (command.position < annotations[a].annotations.length) {
+System.arraycopy (annotations[a].annotations, 0, temp, 0, command.position);
+if (command.deletedAnnotations != null && command.deletedAnnotations.containsKey (annotations[a].annotationId)) {
+var restore = command.deletedAnnotations.get (annotations[a].annotationId);
+System.arraycopy (restore, 0, temp, command.position, command.number);
+}System.arraycopy (annotations[a].annotations, command.position, temp, command.position + command.number, aSize - command.position);
+} else {
+if (command.deletedAnnotations != null && command.deletedAnnotations.containsKey (annotations[a].annotationId)) {
+var restore = command.deletedAnnotations.get (annotations[a].annotationId);
+temp =  new Array (annotations[a].annotations.length + restore.length);
+System.arraycopy (annotations[a].annotations, 0, temp, 0, annotations[a].annotations.length);
+System.arraycopy (restore, 0, temp, annotations[a].annotations.length, restore.length);
+} else {
+temp = annotations[a].annotations;
+}}} else {
+if (tSize != aSize || command.position < 2) {
+var copylen = Math.min (command.position, annotations[a].annotations.length);
+if (copylen > 0) {
+System.arraycopy (annotations[a].annotations, 0, temp, 0, copylen);
+}var deleted =  new Array (command.number);
+if (copylen >= command.position) {
+copylen = Math.min (command.number, annotations[a].annotations.length - command.position);
+if (copylen > 0) {
+System.arraycopy (annotations[a].annotations, command.position, deleted, 0, copylen);
+}}command.deletedAnnotations.put (annotations[a].annotationId, deleted);
+if (annotations[a].annotations.length > command.position + command.number) {
+System.arraycopy (annotations[a].annotations, command.position + command.number, temp, command.position, annotations[a].annotations.length - command.position - command.number);
+}} else {
+var dSize = aSize - command.position;
+if (dSize > 0) {
+var deleted =  new Array (command.number);
+System.arraycopy (annotations[a].annotations, command.position, deleted, 0, dSize);
+command.deletedAnnotations.put (annotations[a].annotationId, deleted);
+tSize = Math.min (annotations[a].annotations.length, command.position);
+temp =  new Array (tSize);
+System.arraycopy (annotations[a].annotations, 0, temp, 0, tSize);
+} else {
+temp = annotations[a].annotations;
+}}}annotations[a].annotations = temp;
+}
+}, "jalview.commands.EditCommand.Edit,~B,~B,~A");
+c$.adjustFeatures = Clazz_defineMethod (c$, "adjustFeatures", 
+function (command, index, i, j, insert) {
+var seq = command.seqs[index];
+var sequence = seq.getDatasetSequence ();
+if (sequence == null) {
+sequence = seq;
+}if (insert) {
+if (command.editedFeatures != null && command.editedFeatures.containsKey (seq)) {
+sequence.setSequenceFeatures (command.editedFeatures.get (seq));
+}return;
+}var sf = sequence.getSequenceFeatures ();
+if (sf == null) {
+return;
+}var oldsf =  new Array (sf.length);
+var cSize = j - i;
+for (var s = 0; s < sf.length; s++) {
+var copy =  new jalview.datamodel.SequenceFeature (sf[s]);
+oldsf[s] = copy;
+if (sf[s].getEnd () < i) {
+continue;
+}if (sf[s].getBegin () > j) {
+sf[s].setBegin (copy.getBegin () - cSize);
+sf[s].setEnd (copy.getEnd () - cSize);
+continue;
+}if (sf[s].getBegin () >= i) {
+sf[s].setBegin (i);
+}if (sf[s].getEnd () < j) {
+sf[s].setEnd (j - 1);
+}sf[s].setEnd (sf[s].getEnd () - (cSize));
+if (sf[s].getBegin () > sf[s].getEnd ()) {
+sequence.deleteFeature (sf[s]);
+}}
+if (command.editedFeatures == null) {
+command.editedFeatures =  new java.util.Hashtable ();
+}command.editedFeatures.put (seq, oldsf);
+}, "jalview.commands.EditCommand.Edit,~N,~N,~N,~B");
+Clazz_defineMethod (c$, "getEdits", 
+function () {
+return this.edits;
+});
+Clazz_defineMethod (c$, "priorState", 
+function (forUndo) {
+var result =  new java.util.HashMap ();
+if (this.getEdits () == null) {
+return result;
+}if (forUndo) {
+for (var e, $e = this.getEdits ().iterator (); $e.hasNext () && ((e = $e.next ()) || true);) {
+for (var seq, $seq = 0, $$seq = e.getSequences (); $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {
+var ds = seq.getDatasetSequence ();
+var preEdit = result.get (ds);
+if (preEdit == null) {
+preEdit =  new jalview.datamodel.Sequence ("", seq.getSequenceAsString ());
+preEdit.setDatasetSequence (ds);
+result.put (ds, preEdit);
+}}
+}
+return result;
+}var edits =  new jalview.util.ReverseListIterator (this.getEdits ());
+while (edits.hasNext ()) {
+var oldEdit = edits.next ();
+var action = oldEdit.getAction ();
+var position = oldEdit.getPosition ();
+var number = oldEdit.getNumber ();
+var gap = oldEdit.getGapCharacter ();
+for (var seq, $seq = 0, $$seq = oldEdit.getSequences (); $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {
+var ds = seq.getDatasetSequence ();
+var preEdit = result.get (ds);
+if (preEdit == null) {
+preEdit =  new jalview.datamodel.Sequence ("", seq.getSequenceAsString ());
+preEdit.setDatasetSequence (ds);
+result.put (ds, preEdit);
+}if (ds != null) {
+if (action === jalview.commands.EditCommand.Action.DELETE_GAP) {
+preEdit.setSequence ( String.instantialize (jalview.util.StringUtils.insertCharAt (preEdit.getSequence (), position, number, gap)));
+} else if (action === jalview.commands.EditCommand.Action.INSERT_GAP) {
+preEdit.setSequence ( String.instantialize (jalview.util.StringUtils.deleteChars (preEdit.getSequence (), position, position + number)));
+} else {
+System.err.println ("Can't undo edit action " + action);
+}}}
+}
+return result;
+}, "~B");
+Clazz_defineMethod (c$, "getEditIterator", 
+function (forwards) {
+if (forwards) {
+return this.getEdits ().iterator ();
+} else {
+return  new jalview.util.ReverseListIterator (this.getEdits ());
+}}, "~B");
+c$.$EditCommand$Edit$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.oldds = null;
+this.fullAlignmentHeight = false;
+this.deletedAnnotationRows = null;
+this.deletedAnnotations = null;
+this.editedFeatures = null;
+this.al = null;
+this.command = null;
+this.string = null;
+this.seqs = null;
+this.alIndex = null;
+this.position = 0;
+this.number = 0;
+this.gapChar = '\0';
+Clazz_instantialize (this, arguments);
+}, jalview.commands.EditCommand, "Edit");
+Clazz_makeConstructor (c$, 
+function (a, b, c, d, e) {
+this.command = a;
+this.seqs = b;
+this.position = c;
+this.number = d;
+this.gapChar = e;
+}, "jalview.commands.EditCommand.Action,~A,~N,~N,~S");
+Clazz_makeConstructor (c$, 
+function (a, b, c, d, e) {
+this.gapChar = e.getGapCharacter ();
+this.command = a;
+this.seqs = b;
+this.position = c;
+this.number = d;
+this.al = e;
+this.alIndex =  Clazz_newIntArray (b.length, 0);
+for (var f = 0; f < b.length; f++) {
+this.alIndex[f] = e.findIndex (b[f]);
+}
+this.fullAlignmentHeight = (e.getHeight () == b.length);
+}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI");
+Clazz_makeConstructor (c$, 
+function (a, b, c, d, e, f) {
+this.command = a;
+this.seqs = b;
+this.position = c;
+this.number = d;
+this.al = e;
+this.gapChar = e.getGapCharacter ();
+this.string =  Clazz_newCharArray (b.length, '\0');
+for (var g = 0; g < b.length; g++) {
+this.string[g] = f.toCharArray ();
+}
+this.fullAlignmentHeight = (e.getHeight () == b.length);
+}, "jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI,~S");
+Clazz_defineMethod (c$, "getSequences", 
+function () {
+return this.seqs;
+});
+Clazz_defineMethod (c$, "getPosition", 
+function () {
+return this.position;
+});
+Clazz_defineMethod (c$, "getAction", 
+function () {
+return this.command;
+});
+Clazz_defineMethod (c$, "getNumber", 
+function () {
+return this.number;
+});
+Clazz_defineMethod (c$, "getGapCharacter", 
+function () {
+return this.gapChar;
+});
+c$ = Clazz_p0p ();
+};
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (jalview.commands.EditCommand, "Action", Enum);
+Clazz_defineMethod (c$, "getUndoAction", 
+function () {
+switch (this) {
+case jalview.commands.EditCommand.Action.INSERT_GAP:
+return jalview.commands.EditCommand.Action.DELETE_GAP;
+case jalview.commands.EditCommand.Action.CUT:
+return jalview.commands.EditCommand.Action.PASTE;
+case jalview.commands.EditCommand.Action.DELETE_GAP:
+return jalview.commands.EditCommand.Action.INSERT_GAP;
+case jalview.commands.EditCommand.Action.INSERT_NUC:
+return null;
+case jalview.commands.EditCommand.Action.PASTE:
+return jalview.commands.EditCommand.Action.CUT;
+case jalview.commands.EditCommand.Action.REPLACE:
+return jalview.commands.EditCommand.Action.REPLACE;
+}
+return null;
+});
+Clazz_defineEnumConstant (c$, "INSERT_GAP", 0, []);
+Clazz_defineEnumConstant (c$, "DELETE_GAP", 1, []);
+Clazz_defineEnumConstant (c$, "CUT", 2, []);
+Clazz_defineEnumConstant (c$, "PASTE", 3, []);
+Clazz_defineEnumConstant (c$, "REPLACE", 4, []);
+Clazz_defineEnumConstant (c$, "INSERT_NUC", 5, []);
+c$ = Clazz_p0p ();
+});
+Clazz_declarePackage ("jalview.commands");
+Clazz_declareInterface (jalview.commands, "CommandI");
+Clazz_declarePackage ("jalview.analysis");
+Clazz_load (["jalview.schemes.ResidueProperties", "java.lang.StringBuffer"], "jalview.analysis.AlignSeq", ["jalview.datamodel.Mapping", "$.Sequence", "jalview.util.Comparison", "$.Format", "$.MapList", "$.MessageManager", "java.awt.Color", "java.lang.Error", "$.StringBuilder", "java.util.ArrayList", "$.Arrays", "$.StringTokenizer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.score = null;
+this.E = null;
+this.F = null;
+this.traceback = null;
+this.seq1 = null;
+this.seq2 = null;
+this.s1 = null;
+this.s2 = null;
+this.s1str = null;
+this.s2str = null;
+this.maxi = 0;
+this.maxj = 0;
+this.aseq1 = null;
+this.aseq2 = null;
+this.astr1 = "";
+this.astr2 = "";
+this.seq1start = 0;
+this.seq1end = 0;
+this.seq2start = 0;
+this.seq2end = 0;
+this.count = 0;
+this.maxscore = 0;
+this.pid = 0;
+this.prev = 0;
+this.gapOpen = 120;
+this.gapExtend = 20;
+this.lookup = null;
+this.intToStr = null;
+this.defInt = 23;
+this.output = null;
+this.type = null;
+this.charToInt = null;
+Clazz_instantialize (this, arguments);
+}, jalview.analysis, "AlignSeq");
+Clazz_prepareFields (c$, function () {
+this.lookup = jalview.schemes.ResidueProperties.getBLOSUM62 ();
+this.intToStr = jalview.analysis.AlignSeq.pep;
+this.output =  new StringBuffer ();
+});
+Clazz_makeConstructor (c$, 
+function (s1, s2, type) {
+this.SeqInit (s1, s1.getSequenceAsString (), s2, s2.getSequenceAsString (), type);
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~S");
+Clazz_makeConstructor (c$, 
+function (s1, string1, s2, string2, type) {
+this.SeqInit (s1, string1.toUpperCase (), s2, string2.toUpperCase (), type);
+}, "jalview.datamodel.SequenceI,~S,jalview.datamodel.SequenceI,~S,~S");
+Clazz_defineMethod (c$, "getMaxScore", 
+function () {
+return this.maxscore;
+});
+Clazz_defineMethod (c$, "getSeq2Start", 
+function () {
+return this.seq2start;
+});
+Clazz_defineMethod (c$, "getSeq2End", 
+function () {
+return this.seq2end;
+});
+Clazz_defineMethod (c$, "getSeq1Start", 
+function () {
+return this.seq1start;
+});
+Clazz_defineMethod (c$, "getSeq1End", 
+function () {
+return this.seq1end;
+});
+Clazz_defineMethod (c$, "getOutput", 
+function () {
+return this.output.toString ();
+});
+Clazz_defineMethod (c$, "getAStr1", 
+function () {
+return this.astr1;
+});
+Clazz_defineMethod (c$, "getAStr2", 
+function () {
+return this.astr2;
+});
+Clazz_defineMethod (c$, "getASeq1", 
+function () {
+return this.aseq1;
+});
+Clazz_defineMethod (c$, "getASeq2", 
+function () {
+return this.aseq2;
+});
+Clazz_defineMethod (c$, "getS1", 
+function () {
+return this.s1;
+});
+Clazz_defineMethod (c$, "getS2", 
+function () {
+return this.s2;
+});
+Clazz_defineMethod (c$, "getAlignedSeq1", 
+function () {
+var alSeq1 =  new jalview.datamodel.Sequence (this.s1.getName (), this.getAStr1 ());
+alSeq1.setStart (this.s1.getStart () + this.getSeq1Start () - 1);
+alSeq1.setEnd (this.s1.getStart () + this.getSeq1End () - 1);
+alSeq1.setDatasetSequence (this.s1.getDatasetSequence () == null ? this.s1 : this.s1.getDatasetSequence ());
+return alSeq1;
+});
+Clazz_defineMethod (c$, "getAlignedSeq2", 
+function () {
+var alSeq2 =  new jalview.datamodel.Sequence (this.s2.getName (), this.getAStr2 ());
+alSeq2.setStart (this.s2.getStart () + this.getSeq2Start () - 1);
+alSeq2.setEnd (this.s2.getStart () + this.getSeq2End () - 1);
+alSeq2.setDatasetSequence (this.s2.getDatasetSequence () == null ? this.s2 : this.s2.getDatasetSequence ());
+return alSeq2;
+});
+Clazz_defineMethod (c$, "SeqInit", 
+function (s1, string1, s2, string2, type) {
+this.s1 = s1;
+this.s2 = s2;
+this.setDefaultParams (type);
+this.SeqInit (string1, string2);
+}, "jalview.datamodel.SequenceI,~S,jalview.datamodel.SequenceI,~S,~S");
+Clazz_defineMethod (c$, "SeqInit", 
+function (s1, string1, s2, string2, scoreMatrix) {
+this.s1 = s1;
+this.s2 = s2;
+this.setType (scoreMatrix.isDNA () ? "dna" : "pep");
+this.lookup = scoreMatrix.getMatrix ();
+}, "jalview.datamodel.SequenceI,~S,jalview.datamodel.SequenceI,~S,jalview.schemes.ScoreMatrix");
+Clazz_defineMethod (c$, "SeqInit", 
+ function (string1, string2) {
+this.s1str = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, string1);
+this.s2str = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, string2);
+if (this.s1str.length == 0 || this.s2str.length == 0) {
+this.output.append ("ALL GAPS: " + (this.s1str.length == 0 ? this.s1.getName () : " ") + (this.s2str.length == 0 ? this.s2.getName () : ""));
+return;
+}this.seq1 =  Clazz_newIntArray (this.s1str.length, 0);
+this.seq2 =  Clazz_newIntArray (this.s2str.length, 0);
+this.score =  Clazz_newIntArray (this.s1str.length, this.s2str.length, 0);
+this.E =  Clazz_newIntArray (this.s1str.length, this.s2str.length, 0);
+this.F =  Clazz_newIntArray (this.s1str.length, this.s2str.length, 0);
+this.traceback =  Clazz_newIntArray (this.s1str.length, this.s2str.length, 0);
+this.seq1 = this.stringToInt (this.s1str, this.type);
+this.seq2 = this.stringToInt (this.s2str, this.type);
+}, "~S,~S");
+Clazz_defineMethod (c$, "setDefaultParams", 
+ function (type) {
+this.setType (type);
+if (type.equals ("pep")) {
+this.lookup = jalview.schemes.ResidueProperties.getDefaultPeptideMatrix ();
+} else if (type.equals ("dna")) {
+this.lookup = jalview.schemes.ResidueProperties.getDefaultDnaMatrix ();
+}}, "~S");
+Clazz_defineMethod (c$, "setType", 
+ function (type2) {
+this.type = type2;
+if (this.type.equals ("pep")) {
+this.intToStr = jalview.analysis.AlignSeq.pep;
+this.charToInt = jalview.schemes.ResidueProperties.aaIndex;
+this.defInt = 23;
+} else if (this.type.equals ("dna")) {
+this.intToStr = jalview.analysis.AlignSeq.dna;
+this.charToInt = jalview.schemes.ResidueProperties.nucleotideIndex;
+this.defInt = 10;
+} else {
+this.output.append ("Wrong type = dna or pep only");
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.unknown_type_dna_or_pep",  Clazz_newArray (-1, [type2])));
+}}, "~S");
+Clazz_defineMethod (c$, "traceAlignment", 
+function () {
+var max = -9999;
+for (var i = 0; i < this.seq1.length; i++) {
+if (this.score[i][this.seq2.length - 1] > max) {
+max = this.score[i][this.seq2.length - 1];
+this.maxi = i;
+this.maxj = this.seq2.length - 1;
+}}
+for (var j = 0; j < this.seq2.length; j++) {
+if (this.score[this.seq1.length - 1][j] > max) {
+max = this.score[this.seq1.length - 1][j];
+this.maxi = this.seq1.length - 1;
+this.maxj = j;
+}}
+var i = this.maxi;
+var j = this.maxj;
+var trace;
+this.maxscore = Clazz_doubleToInt (this.score[i][j] / 10);
+this.seq1end = this.maxi + 1;
+this.seq2end = this.maxj + 1;
+this.aseq1 =  Clazz_newIntArray (this.seq1.length + this.seq2.length, 0);
+this.aseq2 =  Clazz_newIntArray (this.seq1.length + this.seq2.length, 0);
+this.count = (this.seq1.length + this.seq2.length) - 1;
+while ((i > 0) && (j > 0)) {
+if ((this.aseq1[this.count] != this.defInt) && (i >= 0)) {
+this.aseq1[this.count] = this.seq1[i];
+this.astr1 = this.s1str.charAt (i) + this.astr1;
+}if ((this.aseq2[this.count] != this.defInt) && (j > 0)) {
+this.aseq2[this.count] = this.seq2[j];
+this.astr2 = this.s2str.charAt (j) + this.astr2;
+}trace = this.findTrace (i, j);
+if (trace == 0) {
+i--;
+j--;
+} else if (trace == 1) {
+j--;
+this.aseq1[this.count] = this.defInt;
+this.astr1 = "-" + this.astr1.substring (1);
+} else if (trace == -1) {
+i--;
+this.aseq2[this.count] = this.defInt;
+this.astr2 = "-" + this.astr2.substring (1);
+}this.count--;
+}
+this.seq1start = i + 1;
+this.seq2start = j + 1;
+if (this.aseq1[this.count] != this.defInt) {
+this.aseq1[this.count] = this.seq1[i];
+this.astr1 = this.s1str.charAt (i) + this.astr1;
+}if (this.aseq2[this.count] != this.defInt) {
+this.aseq2[this.count] = this.seq2[j];
+this.astr2 = this.s2str.charAt (j) + this.astr2;
+}});
+Clazz_defineMethod (c$, "printAlignment", 
+function (os) {
+var s1id = this.s1.getName ();
+var s2id = this.s2.getName ();
+var maxid = this.s1.getName ().length;
+if (this.s2.getName ().length > maxid) {
+maxid = this.s2.getName ().length;
+}if (maxid > 30) {
+maxid = 30;
+if (this.s1.getName ().length > maxid) {
+s1id = this.s1.getName ().substring (0, 30);
+}if (this.s2.getName ().length > maxid) {
+s2id = this.s2.getName ().substring (0, 30);
+}}var len = 72 - maxid - 1;
+var nochunks = (Clazz_doubleToInt ((this.aseq1.length - this.count) / len)) + 1;
+this.pid = 0;
+this.output.append ("Score = ").append ("" + this.score[this.maxi][this.maxj]).append (jalview.analysis.AlignSeq.NEWLINE);
+this.output.append ("Length of alignment = ").append (String.valueOf (this.aseq1.length - this.count)).append (jalview.analysis.AlignSeq.NEWLINE);
+this.output.append ("Sequence ");
+this.output.append ( new jalview.util.Format ("%" + maxid + "s").form (this.s1.getName ()));
+this.output.append (" :  ").append (String.valueOf (this.s1.getStart ())).append (" - ").append (String.valueOf (this.s1.getEnd ()));
+this.output.append (" (Sequence length = ").append (String.valueOf (this.s1str.length)).append (")").append (jalview.analysis.AlignSeq.NEWLINE);
+this.output.append ("Sequence ");
+this.output.append ( new jalview.util.Format ("%" + maxid + "s").form (this.s2.getName ()));
+this.output.append (" :  ").append (String.valueOf (this.s2.getStart ())).append (" - ").append (String.valueOf (this.s2.getEnd ()));
+this.output.append (" (Sequence length = ").append (String.valueOf (this.s2str.length)).append (")").append (jalview.analysis.AlignSeq.NEWLINE).append (jalview.analysis.AlignSeq.NEWLINE);
+for (var j = 0; j < nochunks; j++) {
+this.output.append ( new jalview.util.Format ("%" + (maxid) + "s").form (s1id)).append (" ");
+for (var i = 0; i < len; i++) {
+if ((i + (j * len)) < this.astr1.length) {
+this.output.append (this.astr1.charAt (i + (j * len)));
+}}
+this.output.append (jalview.analysis.AlignSeq.NEWLINE);
+this.output.append ( new jalview.util.Format ("%" + (maxid) + "s").form (" ")).append (" ");
+for (var i = 0; i < len; i++) {
+if ((i + (j * len)) < this.astr1.length) {
+if (this.astr1.charAt (i + (j * len)) == this.astr2.charAt (i + (j * len)) && !jalview.util.Comparison.isGap (this.astr1.charAt (i + (j * len)))) {
+this.pid++;
+this.output.append ("|");
+} else if (this.type.equals ("pep")) {
+if (jalview.schemes.ResidueProperties.getPAM250 (this.astr1.charAt (i + (j * len)), this.astr2.charAt (i + (j * len))) > 0) {
+this.output.append (".");
+} else {
+this.output.append (" ");
+}} else {
+this.output.append (" ");
+}}}
+this.output = this.output.append (jalview.analysis.AlignSeq.NEWLINE);
+this.output = this.output.append ( new jalview.util.Format ("%" + (maxid) + "s").form (s2id)).append (" ");
+for (var i = 0; i < len; i++) {
+if ((i + (j * len)) < this.astr2.length) {
+this.output.append (this.astr2.charAt (i + (j * len)));
+}}
+this.output.append (jalview.analysis.AlignSeq.NEWLINE).append (jalview.analysis.AlignSeq.NEWLINE);
+}
+this.pid = this.pid / (this.aseq1.length - this.count) * 100;
+this.output = this.output.append ( new jalview.util.Format ("Percentage ID = %2.2f\n\n").formDouble (this.pid));
+try {
+os.print (this.output.toString ());
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}, "java.io.PrintStream");
+Clazz_defineMethod (c$, "printScoreMatrix", 
+function (mat) {
+var n = this.seq1.length;
+var m = this.seq2.length;
+for (var i = 0; i < n; i++) {
+if (i == 0) {
+jalview.util.Format.print (System.out, "%8s", this.s2str.substring (0, 1));
+for (var jj = 1; jj < m; jj++) {
+jalview.util.Format.print (System.out, "%5s", this.s2str.substring (jj, jj + 1));
+}
+System.out.println ();
+}for (var j = 0; j < m; j++) {
+if (j == 0) {
+jalview.util.Format.print (System.out, "%3s", this.s1str.substring (i, i + 1));
+}jalview.util.Format.printLong (System.out, "%3d ", Clazz_doubleToInt (mat[i][j] / 10));
+}
+System.out.println ();
+}
+}, "~A");
+Clazz_defineMethod (c$, "findTrace", 
+function (i, j) {
+var t = 0;
+var max = this.score[i - 1][j - 1] + (this.lookup[this.seq1[i]][this.seq2[j]] * 10);
+if (this.F[i][j] > max) {
+max = this.F[i][j];
+t = -1;
+} else if (this.F[i][j] == max) {
+if (this.prev == -1) {
+max = this.F[i][j];
+t = -1;
+}}if (this.E[i][j] >= max) {
+max = this.E[i][j];
+t = 1;
+} else if (this.E[i][j] == max) {
+if (this.prev == 1) {
+max = this.E[i][j];
+t = 1;
+}}this.prev = t;
+return t;
+}, "~N,~N");
+Clazz_defineMethod (c$, "calcScoreMatrix", 
+function () {
+var n = this.seq1.length;
+var m = this.seq2.length;
+this.score[0][0] = this.lookup[this.seq1[0]][this.seq2[0]] * 10;
+this.E[0][0] = -this.gapExtend;
+this.F[0][0] = 0;
+for (var j = 1; j < m; j++) {
+this.E[0][j] = this.max (this.score[0][j - 1] - this.gapOpen, this.E[0][j - 1] - this.gapExtend);
+this.F[0][j] = -this.gapExtend;
+this.score[0][j] = this.max (this.lookup[this.seq1[0]][this.seq2[j]] * 10, -this.gapOpen, -this.gapExtend);
+this.traceback[0][j] = 1;
+}
+for (var i = 1; i < n; i++) {
+this.E[i][0] = -this.gapOpen;
+this.F[i][0] = this.max (this.score[i - 1][0] - this.gapOpen, this.F[i - 1][0] - this.gapExtend);
+this.score[i][0] = this.max (this.lookup[this.seq1[i]][this.seq2[0]] * 10, this.E[i][0], this.F[i][0]);
+this.traceback[i][0] = -1;
+}
+for (var i = 1; i < n; i++) {
+for (var j = 1; j < m; j++) {
+this.E[i][j] = this.max (this.score[i][j - 1] - this.gapOpen, this.E[i][j - 1] - this.gapExtend);
+this.F[i][j] = this.max (this.score[i - 1][j] - this.gapOpen, this.F[i - 1][j] - this.gapExtend);
+this.score[i][j] = this.max (this.score[i - 1][j - 1] + (this.lookup[this.seq1[i]][this.seq2[j]] * 10), this.E[i][j], this.F[i][j]);
+this.traceback[i][j] = this.findTrace (i, j);
+}
+}
+});
+c$.extractGaps = Clazz_defineMethod (c$, "extractGaps", 
+function (gapChars, seq) {
+if (gapChars == null || seq == null) {
+return null;
+}var str =  new java.util.StringTokenizer (seq, gapChars);
+var newString =  new StringBuilder (seq.length);
+while (str.hasMoreTokens ()) {
+newString.append (str.nextToken ());
+}
+return newString.toString ();
+}, "~S,~S");
+Clazz_defineMethod (c$, "max", 
+function (i1, i2, i3) {
+var max = i1;
+if (i2 > i1) {
+max = i2;
+}if (i3 > max) {
+max = i3;
+}return max;
+}, "~N,~N,~N");
+Clazz_defineMethod (c$, "max", 
+function (i1, i2) {
+var max = i1;
+if (i2 > i1) {
+max = i2;
+}return max;
+}, "~N,~N");
+Clazz_defineMethod (c$, "stringToInt", 
+function (s, type) {
+var seq1 =  Clazz_newIntArray (s.length, 0);
+for (var i = 0; i < s.length; i++) {
+var c = s.charAt (i);
+if ('a' <= c && c <= 'z') {
+c = String.fromCharCode (c.charCodeAt (0) - (32));
+}try {
+seq1[i] = this.charToInt[c.charCodeAt (0)];
+if (seq1[i] < 0 || seq1[i] > this.defInt) {
+seq1[i] = this.defInt;
+}} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+seq1[i] = this.defInt;
+} else {
+throw e;
+}
+}
+}
+return seq1;
+}, "~S,~S");
+c$.displayMatrix = Clazz_defineMethod (c$, "displayMatrix", 
+function (g, mat, n, m, psize) {
+var max = -1000;
+var min = 1000;
+for (var i = 0; i < n; i++) {
+for (var j = 0; j < m; j++) {
+if (mat[i][j] >= max) {
+max = mat[i][j];
+}if (mat[i][j] <= min) {
+min = mat[i][j];
+}}
+}
+System.out.println (max + " " + min);
+for (var i = 0; i < n; i++) {
+for (var j = 0; j < m; j++) {
+var x = psize * i;
+var y = psize * j;
+var score = (mat[i][j] - min) / (max - min);
+g.setColor ( new java.awt.Color (score, 0, 0));
+g.fillRect (x, y, psize, psize);
+}
+}
+}, "java.awt.Graphics,~A,~N,~N,~N");
+c$.doGlobalNWAlignment = Clazz_defineMethod (c$, "doGlobalNWAlignment", 
+function (s1, s2, type) {
+var as =  new jalview.analysis.AlignSeq (s1, s2, type);
+as.calcScoreMatrix ();
+as.traceAlignment ();
+return as;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~S");
+Clazz_defineMethod (c$, "getMappingFromS1", 
+function (allowmismatch) {
+var as1 =  new java.util.ArrayList ();
+var as2 =  new java.util.ArrayList ();
+var pdbpos = this.s2.getStart () + this.getSeq2Start () - 2;
+var alignpos = this.s1.getStart () + this.getSeq1Start () - 2;
+var lp2 = pdbpos - 3;
+var lp1 = alignpos - 3;
+var lastmatch = false;
+for (var i = 0; i < this.astr1.length; i++) {
+var c1 = this.astr1.charAt (i);
+var c2 = this.astr2.charAt (i);
+if (c1 != '-') {
+alignpos++;
+}if (c2 != '-') {
+pdbpos++;
+}if (allowmismatch || c1 == c2) {
+if (lp1 + 1 != alignpos || lp2 + 1 != pdbpos) {
+as1.add (Integer.$valueOf (alignpos));
+as2.add (Integer.$valueOf (pdbpos));
+}lastmatch = true;
+lp1 = alignpos;
+lp2 = pdbpos;
+} else {
+if (lastmatch) {
+as1.add (Integer.$valueOf (lp1));
+as2.add (Integer.$valueOf (lp2));
+}lastmatch = false;
+}}
+var mapseq1 =  Clazz_newIntArray (as1.size () + (lastmatch ? 1 : 0), 0);
+var mapseq2 =  Clazz_newIntArray (as2.size () + (lastmatch ? 1 : 0), 0);
+var i = 0;
+for (var ip, $ip = as1.iterator (); $ip.hasNext () && ((ip = $ip.next ()) || true);) {
+mapseq1[i++] = (ip).intValue ();
+}
+;i = 0;
+for (var ip, $ip = as2.iterator (); $ip.hasNext () && ((ip = $ip.next ()) || true);) {
+mapseq2[i++] = (ip).intValue ();
+}
+;if (lastmatch) {
+mapseq1[mapseq1.length - 1] = alignpos;
+mapseq2[mapseq2.length - 1] = pdbpos;
+}var map =  new jalview.util.MapList (mapseq1, mapseq2, 1, 1);
+var mapping =  new jalview.datamodel.Mapping (map);
+mapping.setTo (this.s2);
+return mapping;
+}, "~B");
+c$.replaceMatchingSeqsWith = Clazz_defineMethod (c$, "replaceMatchingSeqsWith", 
+function (seqs, annotations, ochains, al, dnaOrProtein, removeOldAnnots) {
+var orig =  new java.util.ArrayList ();
+var repl =  new java.util.ArrayList ();
+var aligs =  new java.util.ArrayList ();
+if (al != null && al.getHeight () > 0) {
+var matches =  new java.util.ArrayList ();
+var aligns =  new java.util.ArrayList ();
+for (var sq, $sq = ochains.iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+var bestm = null;
+var bestaseq = null;
+var bestscore = 0;
+for (var msq, $msq = al.getSequences ().iterator (); $msq.hasNext () && ((msq = $msq.next ()) || true);) {
+var aseq = jalview.analysis.AlignSeq.doGlobalNWAlignment (msq, sq, dnaOrProtein);
+if (bestm == null || aseq.getMaxScore () > bestscore) {
+bestscore = aseq.getMaxScore ();
+bestaseq = aseq;
+bestm = msq;
+}}
+System.out.println ("Best Score for " + (matches.size () + 1) + " :" + bestscore);
+matches.add (bestm);
+aligns.add (bestaseq);
+al.deleteSequence (bestm);
+}
+for (var p = 0, pSize = seqs.size (); p < pSize; p++) {
+var sq;
+var sp = seqs.get (p);
+var q;
+if ((q = ochains.indexOf (sp)) > -1) {
+seqs.set (p, sq = matches.get (q));
+orig.add (sp);
+repl.add (sq);
+sq.setName (sp.getName ());
+sq.setDescription (sp.getDescription ());
+var sp2sq;
+sq.transferAnnotation (sp, sp2sq = aligns.get (q).getMappingFromS1 (false));
+aligs.add (aligns.get (q));
+var inspos = -1;
+for (var ap = 0; ap < annotations.size (); ) {
+if (annotations.get (ap).sequenceRef === sp) {
+if (inspos == -1) {
+inspos = ap;
+}if (removeOldAnnots) {
+annotations.remove (ap);
+} else {
+var alan = annotations.remove (ap);
+alan.liftOver (sq, sp2sq);
+alan.setSequenceRef (sq);
+sq.addAlignmentAnnotation (alan);
+}} else {
+ap++;
+}}
+if (sq.getAnnotation () != null && sq.getAnnotation ().length > 0) {
+annotations.addAll (inspos == -1 ? annotations.size () : inspos, java.util.Arrays.asList (sq.getAnnotation ()));
+}}}
+}return java.util.Arrays.asList ([orig, repl, aligs]);
+}, "java.util.List,java.util.List,java.util.List,jalview.datamodel.AlignmentI,~S,~B");
+c$.computeRedundancyMatrix = Clazz_defineMethod (c$, "computeRedundancyMatrix", 
+function (originalSequences, omitHidden, start, end, ungapped) {
+var height = originalSequences.length;
+var redundancy =  Clazz_newFloatArray (height, 0);
+var lngth =  Clazz_newIntArray (height, 0);
+for (var i = 0; i < height; i++) {
+redundancy[i] = 0;
+lngth[i] = -1;
+}
+var pid;
+var seqi;
+var seqj;
+for (var i = 0; i < height; i++) {
+for (var j = 0; j < i; j++) {
+if (i == j) {
+continue;
+}if (omitHidden == null) {
+seqi = originalSequences[i].getSequenceAsString (start, end);
+seqj = originalSequences[j].getSequenceAsString (start, end);
+} else {
+seqi = omitHidden[i];
+seqj = omitHidden[j];
+}if (lngth[i] == -1) {
+var ug = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, seqi);
+lngth[i] = ug.length;
+if (ungapped) {
+seqi = ug;
+}}if (lngth[j] == -1) {
+var ug = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, seqj);
+lngth[j] = ug.length;
+if (ungapped) {
+seqj = ug;
+}}pid = jalview.util.Comparison.PID (seqi, seqj);
+if (lngth[j] < lngth[i]) {
+redundancy[j] = Math.max (pid, redundancy[j]);
+} else {
+redundancy[i] = Math.max (pid, redundancy[i]);
+}}
+}
+return redundancy;
+}, "~A,~A,~N,~N,~B");
+Clazz_defineStatics (c$,
+"PEP", "pep",
+"DNA", "dna");
+c$.NEWLINE = c$.prototype.NEWLINE = System.lineSeparator ();
+Clazz_defineStatics (c$,
+"dna",  Clazz_newArray (-1, ["A", "C", "G", "T", "-"]),
+"pep",  Clazz_newArray (-1, ["A", "R", "N", "D", "C", "Q", "E", "G", "H", "I", "L", "K", "M", "F", "P", "S", "T", "W", "Y", "V", "B", "Z", "X", "-"]));
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.analysis.scoremodels.FeatureScoreModel", "$.PIDScoreModel", "jalview.schemes.ScoreMatrix", "java.awt.Color", "java.util.ArrayList", "$.HashMap", "$.Hashtable", "$.Vector"], "jalview.schemes.ResidueProperties", ["java.lang.StringBuffer"], function () {
+c$ = Clazz_declareType (jalview.schemes, "ResidueProperties");
+c$.buildAmbiguityCodonSet = Clazz_defineMethod (c$, "buildAmbiguityCodonSet", 
+function () {
+if (jalview.schemes.ResidueProperties._ambiguityCodes.size () > 0) {
+System.err.println ("Ignoring multiple calls to buildAmbiguityCodonSet");
+return;
+}for (var acode, $acode = jalview.schemes.ResidueProperties.ambiguityCodes.entrySet ().iterator (); $acode.hasNext () && ((acode = $acode.next ()) || true);) {
+for (var r, $r = 0, $$r = acode.getValue (); $r < $$r.length && ((r = $$r[$r]) || true); $r++) {
+var codesfor = jalview.schemes.ResidueProperties._ambiguityCodes.get (r);
+if (codesfor == null) {
+jalview.schemes.ResidueProperties._ambiguityCodes.put (r, codesfor =  new java.util.ArrayList ());
+}if (!codesfor.contains (acode.getKey ())) {
+codesfor.add (acode.getKey ());
+} else {
+System.err.println ("Inconsistency in the IUBMB ambiguity code nomenclature table: collision for " + acode.getKey () + " in residue " + r);
+}}
+}
+var unambcodons = jalview.schemes.ResidueProperties.codonHash2.keySet ().toArray ( new Array (jalview.schemes.ResidueProperties.codonHash2.size ()));
+for (var codon, $codon = 0, $$codon = unambcodons; $codon < $$codon.length && ((codon = $$codon[$codon]) || true); $codon++) {
+var residue = jalview.schemes.ResidueProperties.codonHash2.get (codon);
+var acodon =  new Array (codon.length);
+for (var i = 0, iSize = codon.length; i < iSize; i++) {
+var _ac = "" + codon.charAt (i);
+var acodes = jalview.schemes.ResidueProperties._ambiguityCodes.get (_ac);
+if (acodes != null) {
+acodon[i] = acodes.toArray ( new Array (acodes.size ()));
+} else {
+acodon[i] =  Clazz_newArray (-1, []);
+}}
+var tpos =  Clazz_newIntArray (codon.length, 0);
+var cpos =  Clazz_newIntArray (codon.length, 0);
+for (var i = 0; i < tpos.length; i++) {
+tpos[i] = -1;
+}
+tpos[acodon.length - 1] = 0;
+var ipos;
+var j;
+while (tpos[0] < acodon[0].length) {
+var allres =  Clazz_newCharArray (tpos.length, '\0');
+var _acodon = "";
+var _anuc;
+for (ipos = 0; ipos < tpos.length; ipos++) {
+if (acodon[ipos].length == 0 || tpos[ipos] < 0) {
+_acodon += codon.charAt (ipos);
+allres[ipos] =  Clazz_newCharArray (-1, [codon.charAt (ipos)]);
+} else {
+_acodon += acodon[ipos][tpos[ipos]];
+var altbase = jalview.schemes.ResidueProperties.ambiguityCodes.get (acodon[ipos][tpos[ipos]]);
+allres[ipos] =  Clazz_newCharArray (altbase.length, '\0');
+j = 0;
+for (var ab, $ab = 0, $$ab = altbase; $ab < $$ab.length && ((ab = $$ab[$ab]) || true); $ab++) {
+allres[ipos][j++] = ab.charAt (0);
+}
+}}
+for (ipos = 0; ipos < cpos.length; ipos++) {
+cpos[ipos] = 0;
+}
+var valid = true;
+do {
+var _codon = "";
+for (j = 0; j < cpos.length; j++) {
+_codon += allres[j][cpos[j]];
+}
+var tr = jalview.schemes.ResidueProperties.codonHash2.get (_codon);
+if (valid = (tr != null && tr.equals (residue))) {
+ipos = acodon.length - 1;
+while (++cpos[ipos] >= allres[ipos].length && ipos > 0) {
+cpos[ipos] = 0;
+ipos--;
+}
+}} while (valid && cpos[0] < allres[0].length);
+if (valid) {
+jalview.schemes.ResidueProperties.codonHash2.put (_acodon, residue);
+} else {
+}ipos = acodon.length - 1;
+while (++tpos[ipos] >= acodon[ipos].length && ipos > 0) {
+tpos[ipos] = -1;
+ipos--;
+}
+}
+}
+});
+c$.getHydmax = Clazz_defineMethod (c$, "getHydmax", 
+function () {
+return 4.5;
+});
+c$.getHydmin = Clazz_defineMethod (c$, "getHydmin", 
+function () {
+return -3.9;
+});
+c$.getHyd = Clazz_defineMethod (c$, "getHyd", 
+function () {
+return jalview.schemes.ResidueProperties.hyd;
+});
+c$.getAA3Hash = Clazz_defineMethod (c$, "getAA3Hash", 
+function () {
+return jalview.schemes.ResidueProperties.aa3Hash;
+});
+c$.getDNA = Clazz_defineMethod (c$, "getDNA", 
+function () {
+return jalview.schemes.ResidueProperties.DNA;
+});
+c$.getBLOSUM62 = Clazz_defineMethod (c$, "getBLOSUM62", 
+function () {
+return jalview.schemes.ResidueProperties.BLOSUM62;
+});
+c$.getPAM250 = Clazz_defineMethod (c$, "getPAM250", 
+function (A1, A2) {
+return jalview.schemes.ResidueProperties.getPAM250 (A1.charAt (0), A2.charAt (0));
+}, "~S,~S");
+c$.getBLOSUM62 = Clazz_defineMethod (c$, "getBLOSUM62", 
+function (c1, c2) {
+var pog = 0;
+try {
+var a = jalview.schemes.ResidueProperties.aaIndex[c1.charCodeAt (0)];
+var b = jalview.schemes.ResidueProperties.aaIndex[c2.charCodeAt (0)];
+pog = jalview.schemes.ResidueProperties.BLOSUM62[a][b];
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+return pog;
+}, "~S,~S");
+c$.getCodons = Clazz_defineMethod (c$, "getCodons", 
+function (res) {
+if (jalview.schemes.ResidueProperties.codonHash.containsKey (res)) {
+return jalview.schemes.ResidueProperties.codonHash.get (res);
+}return null;
+}, "~S");
+c$.codonTranslate = Clazz_defineMethod (c$, "codonTranslate", 
+function (lccodon) {
+if (false) {
+return jalview.schemes.ResidueProperties._codonTranslate (lccodon);
+}var cdn = jalview.schemes.ResidueProperties.codonHash2.get (lccodon.toUpperCase ());
+if (cdn != null && cdn.equals ("*")) {
+return "STOP";
+}return cdn;
+}, "~S");
+c$._codonTranslate = Clazz_defineMethod (c$, "_codonTranslate", 
+function (lccodon) {
+var codon = lccodon.toUpperCase ();
+if (codon.indexOf ('X') > -1 || codon.indexOf ('N') > -1) {
+return "X";
+}for (var key, $key = jalview.schemes.ResidueProperties.codonHash.keySet ().iterator (); $key.hasNext () && ((key = $key.next ()) || true);) {
+if (jalview.schemes.ResidueProperties.codonHash.get (key).contains (codon)) {
+return key;
+}}
+return null;
+}, "~S");
+c$.getDefaultPeptideMatrix = Clazz_defineMethod (c$, "getDefaultPeptideMatrix", 
+function () {
+return jalview.schemes.ResidueProperties.getBLOSUM62 ();
+});
+c$.getDefaultDnaMatrix = Clazz_defineMethod (c$, "getDefaultDnaMatrix", 
+function () {
+return jalview.schemes.ResidueProperties.getDNA ();
+});
+c$.getScoreMatrix = Clazz_defineMethod (c$, "getScoreMatrix", 
+function (pwtype) {
+var val = jalview.schemes.ResidueProperties.scoreMatrices.get (pwtype);
+if (val != null && Clazz_instanceOf (val, jalview.schemes.ScoreMatrix)) {
+return val;
+}return null;
+}, "~S");
+c$.getScoreModel = Clazz_defineMethod (c$, "getScoreModel", 
+function (pwtype) {
+return jalview.schemes.ResidueProperties.scoreMatrices.get (pwtype);
+}, "~S");
+c$.getPAM250 = Clazz_defineMethod (c$, "getPAM250", 
+function (c, d) {
+var a = jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt (0)];
+var b = jalview.schemes.ResidueProperties.aaIndex[d.charCodeAt (0)];
+var pog = jalview.schemes.ResidueProperties.PAM250[a][b];
+return pog;
+}, "~S,~S");
+c$.getDssp3state = Clazz_defineMethod (c$, "getDssp3state", 
+function (ssstring) {
+if (ssstring == null) {
+return null;
+}var ss =  new StringBuffer ();
+for (var i = 0; i < ssstring.length; i++) {
+var ssc = ssstring.substring (i, i + 1);
+if (jalview.schemes.ResidueProperties.toDssp3State.containsKey (ssc)) {
+ss.append (jalview.schemes.ResidueProperties.toDssp3State.get (ssc));
+} else {
+ss.append (" ");
+}}
+return ss.toString ();
+}, "~S");
+c$.getRNASecStrucState = Clazz_defineMethod (c$, "getRNASecStrucState", 
+function (ssstring) {
+if (ssstring == null) {
+return null;
+}var ss =  new StringBuffer ();
+for (var i = 0; i < ssstring.length; i++) {
+var ssc = ssstring.substring (i, i + 1);
+if (jalview.schemes.ResidueProperties.toRNAssState.containsKey (ssc)) {
+ss.append (ssc);
+} else {
+ss.append (" ");
+}}
+return ss.toString ();
+}, "~S");
+c$.isCloseParenRNA = Clazz_defineMethod (c$, "isCloseParenRNA", 
+function (dc) {
+return jalview.schemes.ResidueProperties.RNAcloseParen[dc.charCodeAt (0)];
+}, "~S");
+c$.getResidues = Clazz_defineMethod (c$, "getResidues", 
+function (nucleotide, includeAmbiguous) {
+var result =  new java.util.ArrayList ();
+if (nucleotide) {
+for (var nuc, $nuc = jalview.schemes.ResidueProperties.nucleotideName.keySet ().iterator (); $nuc.hasNext () && ((nuc = $nuc.next ()) || true);) {
+var val = jalview.schemes.ResidueProperties.nucleotideIndex[nuc.charCodeAt (0)];
+if ((!includeAmbiguous && val > 4) || (val >= 10)) {
+continue;
+}nuc = nuc.toUpperCase ();
+if (!result.contains (nuc)) {
+result.add (nuc);
+}}
+} else {
+for (var res, $res = jalview.schemes.ResidueProperties.aa3Hash.keySet ().iterator (); $res.hasNext () && ((res = $res.next ()) || true);) {
+var index = jalview.schemes.ResidueProperties.aa3Hash.get (res).intValue ();
+if ((!includeAmbiguous && index >= 20) || index >= 23) {
+continue;
+}res = res.toUpperCase ();
+if (!result.contains (res)) {
+result.add (res);
+}}
+}return result;
+}, "~B,~B");
+c$.scoreMatrices = c$.prototype.scoreMatrices =  new java.util.Hashtable ();
+Clazz_defineStatics (c$,
+"aaIndex", null,
+"nucleotideIndex", null,
+"purinepyrimidineIndex", null);
+c$.aa3Hash = c$.prototype.aa3Hash =  new java.util.HashMap ();
+c$.aa2Triplet = c$.prototype.aa2Triplet =  new java.util.HashMap ();
+c$.nucleotideName = c$.prototype.nucleotideName =  new java.util.HashMap ();
+{
+jalview.schemes.ResidueProperties.aaIndex =  Clazz_newIntArray (255, 0);
+for (var i = 0; i < 255; i++) {
+jalview.schemes.ResidueProperties.aaIndex[i] = 23;
+}
+jalview.schemes.ResidueProperties.aaIndex['A'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.aaIndex['R'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.aaIndex['N'.charCodeAt (0)] = 2;
+jalview.schemes.ResidueProperties.aaIndex['D'.charCodeAt (0)] = 3;
+jalview.schemes.ResidueProperties.aaIndex['C'.charCodeAt (0)] = 4;
+jalview.schemes.ResidueProperties.aaIndex['Q'.charCodeAt (0)] = 5;
+jalview.schemes.ResidueProperties.aaIndex['E'.charCodeAt (0)] = 6;
+jalview.schemes.ResidueProperties.aaIndex['G'.charCodeAt (0)] = 7;
+jalview.schemes.ResidueProperties.aaIndex['H'.charCodeAt (0)] = 8;
+jalview.schemes.ResidueProperties.aaIndex['I'.charCodeAt (0)] = 9;
+jalview.schemes.ResidueProperties.aaIndex['L'.charCodeAt (0)] = 10;
+jalview.schemes.ResidueProperties.aaIndex['K'.charCodeAt (0)] = 11;
+jalview.schemes.ResidueProperties.aaIndex['M'.charCodeAt (0)] = 12;
+jalview.schemes.ResidueProperties.aaIndex['F'.charCodeAt (0)] = 13;
+jalview.schemes.ResidueProperties.aaIndex['P'.charCodeAt (0)] = 14;
+jalview.schemes.ResidueProperties.aaIndex['S'.charCodeAt (0)] = 15;
+jalview.schemes.ResidueProperties.aaIndex['T'.charCodeAt (0)] = 16;
+jalview.schemes.ResidueProperties.aaIndex['W'.charCodeAt (0)] = 17;
+jalview.schemes.ResidueProperties.aaIndex['Y'.charCodeAt (0)] = 18;
+jalview.schemes.ResidueProperties.aaIndex['V'.charCodeAt (0)] = 19;
+jalview.schemes.ResidueProperties.aaIndex['B'.charCodeAt (0)] = 20;
+jalview.schemes.ResidueProperties.aaIndex['Z'.charCodeAt (0)] = 21;
+jalview.schemes.ResidueProperties.aaIndex['X'.charCodeAt (0)] = 22;
+jalview.schemes.ResidueProperties.aaIndex['U'.charCodeAt (0)] = 22;
+jalview.schemes.ResidueProperties.aaIndex['a'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.aaIndex['r'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.aaIndex['n'.charCodeAt (0)] = 2;
+jalview.schemes.ResidueProperties.aaIndex['d'.charCodeAt (0)] = 3;
+jalview.schemes.ResidueProperties.aaIndex['c'.charCodeAt (0)] = 4;
+jalview.schemes.ResidueProperties.aaIndex['q'.charCodeAt (0)] = 5;
+jalview.schemes.ResidueProperties.aaIndex['e'.charCodeAt (0)] = 6;
+jalview.schemes.ResidueProperties.aaIndex['g'.charCodeAt (0)] = 7;
+jalview.schemes.ResidueProperties.aaIndex['h'.charCodeAt (0)] = 8;
+jalview.schemes.ResidueProperties.aaIndex['i'.charCodeAt (0)] = 9;
+jalview.schemes.ResidueProperties.aaIndex['l'.charCodeAt (0)] = 10;
+jalview.schemes.ResidueProperties.aaIndex['k'.charCodeAt (0)] = 11;
+jalview.schemes.ResidueProperties.aaIndex['m'.charCodeAt (0)] = 12;
+jalview.schemes.ResidueProperties.aaIndex['f'.charCodeAt (0)] = 13;
+jalview.schemes.ResidueProperties.aaIndex['p'.charCodeAt (0)] = 14;
+jalview.schemes.ResidueProperties.aaIndex['s'.charCodeAt (0)] = 15;
+jalview.schemes.ResidueProperties.aaIndex['t'.charCodeAt (0)] = 16;
+jalview.schemes.ResidueProperties.aaIndex['w'.charCodeAt (0)] = 17;
+jalview.schemes.ResidueProperties.aaIndex['y'.charCodeAt (0)] = 18;
+jalview.schemes.ResidueProperties.aaIndex['v'.charCodeAt (0)] = 19;
+jalview.schemes.ResidueProperties.aaIndex['b'.charCodeAt (0)] = 20;
+jalview.schemes.ResidueProperties.aaIndex['z'.charCodeAt (0)] = 21;
+jalview.schemes.ResidueProperties.aaIndex['x'.charCodeAt (0)] = 22;
+jalview.schemes.ResidueProperties.aaIndex['u'.charCodeAt (0)] = 22;
+}Clazz_defineStatics (c$,
+"maxProteinIndex", 23,
+"maxNucleotideIndex", 10);
+{
+jalview.schemes.ResidueProperties.nucleotideIndex =  Clazz_newIntArray (255, 0);
+for (var i = 0; i < 255; i++) {
+jalview.schemes.ResidueProperties.nucleotideIndex[i] = 10;
+}
+jalview.schemes.ResidueProperties.nucleotideIndex['A'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.nucleotideIndex['a'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.nucleotideIndex['C'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.nucleotideIndex['c'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.nucleotideIndex['G'.charCodeAt (0)] = 2;
+jalview.schemes.ResidueProperties.nucleotideIndex['g'.charCodeAt (0)] = 2;
+jalview.schemes.ResidueProperties.nucleotideIndex['T'.charCodeAt (0)] = 3;
+jalview.schemes.ResidueProperties.nucleotideIndex['t'.charCodeAt (0)] = 3;
+jalview.schemes.ResidueProperties.nucleotideIndex['U'.charCodeAt (0)] = 4;
+jalview.schemes.ResidueProperties.nucleotideIndex['u'.charCodeAt (0)] = 4;
+jalview.schemes.ResidueProperties.nucleotideIndex['I'.charCodeAt (0)] = 5;
+jalview.schemes.ResidueProperties.nucleotideIndex['i'.charCodeAt (0)] = 5;
+jalview.schemes.ResidueProperties.nucleotideIndex['X'.charCodeAt (0)] = 6;
+jalview.schemes.ResidueProperties.nucleotideIndex['x'.charCodeAt (0)] = 6;
+jalview.schemes.ResidueProperties.nucleotideIndex['R'.charCodeAt (0)] = 7;
+jalview.schemes.ResidueProperties.nucleotideIndex['r'.charCodeAt (0)] = 7;
+jalview.schemes.ResidueProperties.nucleotideIndex['Y'.charCodeAt (0)] = 8;
+jalview.schemes.ResidueProperties.nucleotideIndex['y'.charCodeAt (0)] = 8;
+jalview.schemes.ResidueProperties.nucleotideIndex['N'.charCodeAt (0)] = 9;
+jalview.schemes.ResidueProperties.nucleotideIndex['n'.charCodeAt (0)] = 9;
+jalview.schemes.ResidueProperties.nucleotideName.put ("A", "Adenine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("a", "Adenine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("G", "Guanine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("g", "Guanine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("C", "Cytosine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("c", "Cytosine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("T", "Thymine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("t", "Thymine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("U", "Uracil");
+jalview.schemes.ResidueProperties.nucleotideName.put ("u", "Uracil");
+jalview.schemes.ResidueProperties.nucleotideName.put ("I", "Inosine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("i", "Inosine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("X", "Xanthine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("x", "Xanthine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("R", "Unknown Purine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("r", "Unknown Purine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("Y", "Unknown Pyrimidine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("y", "Unknown Pyrimidine");
+jalview.schemes.ResidueProperties.nucleotideName.put ("N", "Unknown");
+jalview.schemes.ResidueProperties.nucleotideName.put ("n", "Unknown");
+jalview.schemes.ResidueProperties.nucleotideName.put ("W", "Weak nucleotide (A or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("w", "Weak nucleotide (A or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("S", "Strong nucleotide (G or C)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("s", "Strong nucleotide (G or C)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("M", "Amino (A or C)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("m", "Amino (A or C)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("K", "Keto (G or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("k", "Keto (G or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("B", "Not A (G or C or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("b", "Not A (G or C or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("H", "Not G (A or C or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("h", "Not G (A or C or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("D", "Not C (A or G or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("d", "Not C (A or G or T)");
+jalview.schemes.ResidueProperties.nucleotideName.put ("V", "Not T (A or G or C");
+jalview.schemes.ResidueProperties.nucleotideName.put ("v", "Not T (A or G or C");
+}{
+jalview.schemes.ResidueProperties.purinepyrimidineIndex =  Clazz_newIntArray (255, 0);
+for (var i = 0; i < 255; i++) {
+jalview.schemes.ResidueProperties.purinepyrimidineIndex[i] = 3;
+}
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['A'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['a'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['C'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['c'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['G'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['g'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['T'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['t'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['U'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['u'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['I'.charCodeAt (0)] = 2;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['i'.charCodeAt (0)] = 2;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['X'.charCodeAt (0)] = 2;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['x'.charCodeAt (0)] = 2;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['R'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['r'.charCodeAt (0)] = 0;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['Y'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['y'.charCodeAt (0)] = 1;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['N'.charCodeAt (0)] = 2;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex['n'.charCodeAt (0)] = 2;
+}{
+jalview.schemes.ResidueProperties.aa3Hash.put ("ALA",  new Integer (0));
+jalview.schemes.ResidueProperties.aa3Hash.put ("ARG",  new Integer (1));
+jalview.schemes.ResidueProperties.aa3Hash.put ("ASN",  new Integer (2));
+jalview.schemes.ResidueProperties.aa3Hash.put ("ASP",  new Integer (3));
+jalview.schemes.ResidueProperties.aa3Hash.put ("CYS",  new Integer (4));
+jalview.schemes.ResidueProperties.aa3Hash.put ("GLN",  new Integer (5));
+jalview.schemes.ResidueProperties.aa3Hash.put ("GLU",  new Integer (6));
+jalview.schemes.ResidueProperties.aa3Hash.put ("GLY",  new Integer (7));
+jalview.schemes.ResidueProperties.aa3Hash.put ("HIS",  new Integer (8));
+jalview.schemes.ResidueProperties.aa3Hash.put ("ILE",  new Integer (9));
+jalview.schemes.ResidueProperties.aa3Hash.put ("LEU",  new Integer (10));
+jalview.schemes.ResidueProperties.aa3Hash.put ("LYS",  new Integer (11));
+jalview.schemes.ResidueProperties.aa3Hash.put ("MET",  new Integer (12));
+jalview.schemes.ResidueProperties.aa3Hash.put ("PHE",  new Integer (13));
+jalview.schemes.ResidueProperties.aa3Hash.put ("PRO",  new Integer (14));
+jalview.schemes.ResidueProperties.aa3Hash.put ("SER",  new Integer (15));
+jalview.schemes.ResidueProperties.aa3Hash.put ("THR",  new Integer (16));
+jalview.schemes.ResidueProperties.aa3Hash.put ("TRP",  new Integer (17));
+jalview.schemes.ResidueProperties.aa3Hash.put ("TYR",  new Integer (18));
+jalview.schemes.ResidueProperties.aa3Hash.put ("VAL",  new Integer (19));
+jalview.schemes.ResidueProperties.aa3Hash.put ("ASX",  new Integer (20));
+jalview.schemes.ResidueProperties.aa3Hash.put ("GLX",  new Integer (21));
+jalview.schemes.ResidueProperties.aa3Hash.put ("XAA",  new Integer (22));
+jalview.schemes.ResidueProperties.aa3Hash.put ("-",  new Integer (23));
+jalview.schemes.ResidueProperties.aa3Hash.put ("*",  new Integer (23));
+jalview.schemes.ResidueProperties.aa3Hash.put (".",  new Integer (23));
+jalview.schemes.ResidueProperties.aa3Hash.put (" ",  new Integer (23));
+jalview.schemes.ResidueProperties.aa3Hash.put ("Gap",  new Integer (23));
+}{
+jalview.schemes.ResidueProperties.aa2Triplet.put ("A", "ALA");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("a", "ALA");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("R", "ARG");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("r", "ARG");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("N", "ASN");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("n", "ASN");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("D", "ASP");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("d", "ASP");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("C", "CYS");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("c", "CYS");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("Q", "GLN");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("q", "GLN");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("E", "GLU");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("e", "GLU");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("G", "GLY");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("g", "GLY");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("H", "HIS");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("h", "HIS");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("I", "ILE");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("i", "ILE");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("L", "LEU");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("l", "LEU");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("K", "LYS");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("k", "LYS");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("M", "MET");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("m", "MET");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("F", "PHE");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("f", "PHE");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("P", "PRO");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("p", "PRO");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("S", "SER");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("s", "SER");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("T", "THR");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("t", "THR");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("W", "TRP");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("w", "TRP");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("Y", "TYR");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("y", "TYR");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("V", "VAL");
+jalview.schemes.ResidueProperties.aa2Triplet.put ("v", "VAL");
+}Clazz_defineStatics (c$,
+"aa",  Clazz_newArray (-1, ["A", "R", "N", "D", "C", "Q", "E", "G", "H", "I", "L", "K", "M", "F", "P", "S", "T", "W", "Y", "V", "B", "Z", "X", "_", "*", ".", " "]));
+c$.midBlue = c$.prototype.midBlue =  new java.awt.Color (100, 100, 255);
+c$.scaleColours = c$.prototype.scaleColours =  new java.util.Vector ();
+{
+jalview.schemes.ResidueProperties.scaleColours.addElement ( new java.awt.Color (114, 0, 147));
+jalview.schemes.ResidueProperties.scaleColours.addElement ( new java.awt.Color (156, 0, 98));
+jalview.schemes.ResidueProperties.scaleColours.addElement ( new java.awt.Color (190, 0, 0));
+jalview.schemes.ResidueProperties.scaleColours.addElement (java.awt.Color.red);
+jalview.schemes.ResidueProperties.scaleColours.addElement ( new java.awt.Color (255, 125, 0));
+jalview.schemes.ResidueProperties.scaleColours.addElement (java.awt.Color.orange);
+jalview.schemes.ResidueProperties.scaleColours.addElement ( new java.awt.Color (255, 194, 85));
+jalview.schemes.ResidueProperties.scaleColours.addElement (java.awt.Color.yellow);
+jalview.schemes.ResidueProperties.scaleColours.addElement ( new java.awt.Color (255, 255, 181));
+jalview.schemes.ResidueProperties.scaleColours.addElement (java.awt.Color.white);
+}c$.taylor = c$.prototype.taylor =  Clazz_newArray (-1, [ new java.awt.Color (204, 255, 0),  new java.awt.Color (0, 0, 255),  new java.awt.Color (204, 0, 255),  new java.awt.Color (255, 0, 0),  new java.awt.Color (255, 255, 0),  new java.awt.Color (255, 0, 204),  new java.awt.Color (255, 0, 102),  new java.awt.Color (255, 153, 0),  new java.awt.Color (0, 102, 255),  new java.awt.Color (102, 255, 0),  new java.awt.Color (51, 255, 0),  new java.awt.Color (102, 0, 255),  new java.awt.Color (0, 255, 0),  new java.awt.Color (0, 255, 102),  new java.awt.Color (255, 204, 0),  new java.awt.Color (255, 51, 0),  new java.awt.Color (255, 102, 0),  new java.awt.Color (0, 204, 255),  new java.awt.Color (0, 255, 204),  new java.awt.Color (153, 255, 0), java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white]);
+c$.nucleotide = c$.prototype.nucleotide =  Clazz_newArray (-1, [ new java.awt.Color (100, 247, 63),  new java.awt.Color (255, 179, 64),  new java.awt.Color (235, 65, 60),  new java.awt.Color (60, 136, 238),  new java.awt.Color (60, 136, 238), java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white]);
+c$.purinepyrimidine = c$.prototype.purinepyrimidine =  Clazz_newArray (-1, [ new java.awt.Color (255, 131, 250),  new java.awt.Color (64, 224, 208), java.awt.Color.white, java.awt.Color.white]);
+c$.zappo = c$.prototype.zappo =  Clazz_newArray (-1, [java.awt.Color.pink, jalview.schemes.ResidueProperties.midBlue, java.awt.Color.green, java.awt.Color.red, java.awt.Color.yellow, java.awt.Color.green, java.awt.Color.red, java.awt.Color.magenta, jalview.schemes.ResidueProperties.midBlue, java.awt.Color.pink, java.awt.Color.pink, jalview.schemes.ResidueProperties.midBlue, java.awt.Color.pink, java.awt.Color.orange, java.awt.Color.magenta, java.awt.Color.green, java.awt.Color.green, java.awt.Color.orange, java.awt.Color.orange, java.awt.Color.pink, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white, java.awt.Color.white]);
+Clazz_defineStatics (c$,
+"hyd2",  Clazz_newDoubleArray (-1, [0.62, 0.29, -0.9, -0.74, 1.19, 0.48, -0.4, 1.38, -1.5, 1.06, 0.64, -0.78, 0.12, -0.85, -2.53, -0.18, -0.05, 1.08, 0.81, 0.0, 0.26, 0.0, 0.0]),
+"helix",  Clazz_newDoubleArray (-1, [1.42, 0.98, 0.67, 1.01, 0.70, 1.11, 1.51, 0.57, 1.00, 1.08, 1.21, 1.16, 1.45, 1.13, 0.57, 0.77, 0.83, 1.08, 0.69, 1.06, 0.84, 1.31, 1.00, 0.0]),
+"helixmin", 0.57,
+"helixmax", 1.51,
+"strand",  Clazz_newDoubleArray (-1, [0.83, 0.93, 0.89, 0.54, 1.19, 1.10, 0.37, 0.75, 0.87, 1.60, 1.30, 0.74, 1.05, 1.38, 0.55, 0.75, 1.19, 1.37, 1.47, 1.70, 0.72, 0.74, 1.0, 0.0]),
+"strandmin", 0.37,
+"strandmax", 1.7,
+"turn",  Clazz_newDoubleArray (-1, [0.66, 0.95, 1.56, 1.46, 1.19, 0.98, 0.74, 1.56, 0.95, 0.47, 0.59, 1.01, 0.60, 0.60, 1.52, 1.43, 0.96, 0.96, 1.14, 0.50, 1.51, 0.86, 1.00, 0, 0]),
+"turnmin", 0.47,
+"turnmax", 1.56,
+"buried",  Clazz_newDoubleArray (-1, [1.7, 0.1, 0.4, 0.4, 4.6, 0.3, 0.3, 1.8, 0.8, 3.1, 2.4, 0.05, 1.9, 2.2, 0.6, 0.8, 0.7, 1.6, 0.5, 2.9, 0.4, 0.3, 1.358, 0.00]),
+"buriedmin", 0.05,
+"buriedmax", 4.6,
+"hyd",  Clazz_newDoubleArray (-1, [1.8, -4.5, -3.5, -3.5, 2.5, -3.5, -3.5, -0.4, -3.2, 4.5, 3.8, -3.9, 1.9, 2.8, -1.6, -0.8, -0.7, -0.9, -1.3, 4.2, -3.5, -3.5, -0.49, 0.0]),
+"hydmax", 4.5,
+"hydmin", -3.9,
+"BLOSUM62",  Clazz_newArray (-1, [ Clazz_newIntArray (-1, [4, -1, -2, -2, 0, -1, -1, 0, -2, -1, -1, -1, -1, -2, -1, 1, 0, -3, -2, 0, -2, -1, 0, -4]),  Clazz_newIntArray (-1, [-1, 5, 0, -2, -3, 1, 0, -2, 0, -3, -2, 2, -1, -3, -2, -1, -1, -3, -2, -3, -1, 0, -1, -4]),  Clazz_newIntArray (-1, [-2, 0, 6, 1, -3, 0, 0, 0, 1, -3, -3, 0, -2, -3, -2, 1, 0, -4, -2, -3, 3, 0, -1, -4]),  Clazz_newIntArray (-1, [-2, -2, 1, 6, -3, 0, 2, -1, -1, -3, -4, -1, -3, -3, -1, 0, -1, -4, -3, -3, 4, 1, -1, -4]),  Clazz_newIntArray (-1, [0, 3, -3, -3, 9, -3, -4, -3, -3, -1, -1, -3, -1, -2, -3, -1, -1, -2, -2, -1, -3, -3, -2, -4]),  Clazz_newIntArray (-1, [-1, 1, 0, 0, -3, 5, 2, -2, 0, -3, -2, 1, 0, -3, -1, 0, -1, -2, -1, -2, 0, 3, -1, -4]),  Clazz_newIntArray (-1, [-1, 0, 0, 2, -4, 2, 5, -2, 0, -3, -3, 1, -2, -3, -1, 0, -1, -3, -2, -2, 1, 4, -1, -4]),  Clazz_newIntArray (-1, [0, -2, 0, -1, -3, -2, -2, 6, -2, -4, -4, -2, -3, -3, -2, 0, -2, -2, -3, -3, -1, -2, -1, -4]),  Clazz_newIntArray (-1, [-2, 0, 1, -1, -3, 0, 0, -2, 8, -3, -3, -1, -2, -1, -2, -1, -2, -2, 2, -3, 0, 0, -1, -4]),  Clazz_newIntArray (-1, [-1, -3, -3, -3, -1, -3, -3, -4, -3, 4, 2, -3, 1, 0, -3, -2, -1, -3, -1, 3, -3, -3, -1, -4]),  Clazz_newIntArray (-1, [-1, -2, -3, -4, -1, -2, -3, -4, -3, 2, 4, -2, 2, 0, -3, -2, -1, -2, -1, 1, -4, -3, -1, -4]),  Clazz_newIntArray (-1, [-1, 2, 0, -1, -3, 1, 1, -2, -1, -3, -2, 5, -1, -3, -1, 0, -1, -3, -2, -2, 0, 1, -1, -4]),  Clazz_newIntArray (-1, [-1, -1, -2, -3, -1, 0, -2, -3, -2, 1, 2, -1, 5, 0, -2, -1, -1, -1, -1, 1, -3, -1, -1, -4]),  Clazz_newIntArray (-1, [-2, -3, -3, -3, -2, -3, -3, -3, -1, 0, 0, -3, 0, 6, -4, -2, -2, 1, 3, -1, -3, -3, -1, -4]),  Clazz_newIntArray (-1, [-1, -2, -2, -1, -3, -1, -1, -2, -2, -3, -3, -1, -2, -4, 7, -1, -1, -4, -3, -2, -2, -1, -2, -4]),  Clazz_newIntArray (-1, [1, -1, 1, 0, -1, 0, 0, 0, -1, -2, -2, 0, -1, -2, -1, 4, 1, -3, -2, -2, 0, 0, 0, -4]),  Clazz_newIntArray (-1, [0, -1, 0, -1, -1, -1, -1, -2, -2, -1, -1, -1, -1, -2, -1, 1, 5, -2, -2, 0, -1, -1, 0, -4]),  Clazz_newIntArray (-1, [-3, -3, -4, -4, -2, -2, -3, -2, -2, -3, -2, -3, -1, 1, -4, -3, -2, 11, 2, -3, -4, -3, -2, -4]),  Clazz_newIntArray (-1, [-2, -2, -2, -3, -2, -1, -2, -3, 2, -1, -1, -2, -1, 3, -3, -2, -2, 2, 7, -1, -3, -2, -1, -4]),  Clazz_newIntArray (-1, [0, -3, -3, -3, -1, -2, -2, -3, -3, 3, 1, -2, 1, -1, -2, -2, 0, -3, -1, 4, -3, -2, -1, -4]),  Clazz_newIntArray (-1, [-2, -1, 3, 4, -3, 0, 1, -1, 0, -3, -4, 0, -3, -3, -2, 0, -1, -4, -3, -3, 4, 1, -1, -4]),  Clazz_newIntArray (-1, [-1, 0, 0, 1, -3, 3, 4, -2, 0, -3, -3, 1, -1, -3, -1, 0, -1, -3, -2, -2, 1, 4, -1, -4]),  Clazz_newIntArray (-1, [0, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, 0, 0, -2, -1, -1, -1, -1, -1, -4]),  Clazz_newIntArray (-1, [-4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, -4, 1])]),
+"PAM250",  Clazz_newArray (-1, [ Clazz_newIntArray (-1, [2, -2, 0, 0, -2, 0, 0, 1, -1, -1, -2, -1, -1, -3, 1, 1, 1, -6, -3, 0, 0, 0, 0, -8]),  Clazz_newIntArray (-1, [-2, 6, 0, -1, -4, 1, -1, -3, 2, -2, -3, 3, 0, -4, 0, 0, -1, 2, -4, -2, -1, 0, -1, -8]),  Clazz_newIntArray (-1, [0, 0, 2, 2, -4, 1, 1, 0, 2, -2, -3, 1, -2, -3, 0, 1, 0, -4, -2, -2, 2, 1, 0, -8]),  Clazz_newIntArray (-1, [0, -1, 2, 4, -5, 2, 3, 1, 1, -2, -4, 0, -3, -6, -1, 0, 0, -7, -4, -2, 3, 3, -1, -8]),  Clazz_newIntArray (-1, [-2, -4, -4, -5, 12, -5, -5, -3, -3, -2, -6, -5, -5, -4, -3, 0, -2, -8, 0, -2, -4, -5, -3, -8]),  Clazz_newIntArray (-1, [0, 1, 1, 2, -5, 4, 2, -1, 3, -2, -2, 1, -1, -5, 0, -1, -1, -5, -4, -2, 1, 3, -1, -8]),  Clazz_newIntArray (-1, [0, -1, 1, 3, -5, 2, 4, 0, 1, -2, -3, 0, -2, -5, -1, 0, 0, -7, -4, -2, 3, 3, -1, -8]),  Clazz_newIntArray (-1, [1, -3, 0, 1, -3, -1, 0, 5, -2, -3, -4, -2, -3, -5, 0, 1, 0, -7, -5, -1, 0, 0, -1, -8]),  Clazz_newIntArray (-1, [-1, 2, 2, 1, -3, 3, 1, -2, 6, -2, -2, 0, -2, -2, 0, -1, -1, -3, 0, -2, 1, 2, -1, -8]),  Clazz_newIntArray (-1, [-1, -2, -2, -2, -2, -2, -2, -3, -2, 5, 2, -2, 2, 1, -2, -1, 0, -5, -1, 4, -2, -2, -1, -8]),  Clazz_newIntArray (-1, [-2, -3, -3, -4, -6, -2, -3, -4, -2, 2, 6, -3, 4, 2, -3, -3, -2, -2, -1, 2, -3, -3, -1, -8]),  Clazz_newIntArray (-1, [-1, 3, 1, 0, -5, 1, 0, -2, 0, -2, -3, 5, 0, -5, -1, 0, 0, -3, -4, -2, 1, 0, -1, -8]),  Clazz_newIntArray (-1, [-1, 0, -2, -3, -5, -1, -2, -3, -2, 2, 4, 0, 6, 0, -2, -2, -1, -4, -2, 2, -2, -2, -1, -8]),  Clazz_newIntArray (-1, [-3, -4, -3, -6, -4, -5, -5, -5, -2, 1, 2, -5, 0, 9, -5, -3, -3, 0, 7, -1, -4, -5, -2, -8]),  Clazz_newIntArray (-1, [1, 0, 0, -1, -3, 0, -1, 0, 0, -2, -3, -1, -2, -5, 6, 1, 0, -6, -5, -1, -1, 0, -1, -8]),  Clazz_newIntArray (-1, [1, 0, 1, 0, 0, -1, 0, 1, -1, -1, -3, 0, -2, -3, 1, 2, 1, -2, -3, -1, 0, 0, 0, -8]),  Clazz_newIntArray (-1, [1, -1, 0, 0, -2, -1, 0, 0, -1, 0, -2, 0, -1, -3, 0, 1, 3, -5, -3, 0, 0, -1, 0, -8]),  Clazz_newIntArray (-1, [-6, 2, -4, -7, -8, -5, -7, -7, -3, -5, -2, -3, -4, 0, -6, -2, -5, 17, 0, -6, -5, -6, -4, -8]),  Clazz_newIntArray (-1, [-3, -4, -2, -4, 0, -4, -4, -5, 0, -1, -1, -4, -2, 7, -5, -3, -3, 0, 10, -2, -3, -4, -2, -8]),  Clazz_newIntArray (-1, [0, -2, -2, -2, -2, -2, -2, -1, -2, 4, 2, -2, 2, -1, -1, -1, 0, -6, -2, 4, -2, -2, -1, -8]),  Clazz_newIntArray (-1, [0, -1, 2, 3, -4, 1, 3, 0, 1, -2, -3, 1, -2, -4, -1, 0, 0, -5, -3, -2, 3, 2, -1, -8]),  Clazz_newIntArray (-1, [0, 0, 1, 3, -5, 3, 3, 0, 2, -2, -3, 0, -2, -5, 0, 0, -1, -6, -4, -2, 2, 3, -1, -8]),  Clazz_newIntArray (-1, [0, -1, 0, -1, -3, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, 0, 0, -4, -2, -1, -1, -1, -1, -8]),  Clazz_newIntArray (-1, [-8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, 1])]));
+c$.ssHash = c$.prototype.ssHash =  new java.util.Hashtable ();
+{
+jalview.schemes.ResidueProperties.ssHash.put ("H", java.awt.Color.magenta);
+jalview.schemes.ResidueProperties.ssHash.put ("E", java.awt.Color.yellow);
+jalview.schemes.ResidueProperties.ssHash.put ("-", java.awt.Color.white);
+jalview.schemes.ResidueProperties.ssHash.put (".", java.awt.Color.white);
+jalview.schemes.ResidueProperties.ssHash.put ("S", java.awt.Color.cyan);
+jalview.schemes.ResidueProperties.ssHash.put ("T", java.awt.Color.blue);
+jalview.schemes.ResidueProperties.ssHash.put ("G", java.awt.Color.pink);
+jalview.schemes.ResidueProperties.ssHash.put ("I", java.awt.Color.pink);
+jalview.schemes.ResidueProperties.ssHash.put ("B", java.awt.Color.yellow);
+}Clazz_defineStatics (c$,
+"DNA",  Clazz_newArray (-1, [ Clazz_newIntArray (-1, [10, -8, -8, -8, -8, 1, 1, 1, -8, 1, 1]),  Clazz_newIntArray (-1, [-8, 10, -8, -8, -8, 1, 1, -8, 1, 1, 1]),  Clazz_newIntArray (-1, [-8, -8, 10, -8, -8, 1, 1, 1, -8, 1, 1]),  Clazz_newIntArray (-1, [-8, -8, -8, 10, 10, 1, 1, -8, 1, 1, 1]),  Clazz_newIntArray (-1, [-8, -8, -8, 10, 10, 1, 1, -8, 1, 1, 1]),  Clazz_newIntArray (-1, [1, 1, 1, 1, 1, 10, 0, 0, 0, 1, 1]),  Clazz_newIntArray (-1, [1, 1, 1, 1, 1, 0, 10, 0, 0, 1, 1]),  Clazz_newIntArray (-1, [1, -8, 1, -8, -8, 0, 0, 10, -8, 1, 1]),  Clazz_newIntArray (-1, [-8, 1, -8, 1, 1, 0, 0, -8, 10, 1, 1]),  Clazz_newIntArray (-1, [1, 1, 1, 1, 1, 1, 1, 1, 1, 10, 1]),  Clazz_newIntArray (-1, [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])]));
+{
+jalview.schemes.ResidueProperties.scoreMatrices.put ("BLOSUM62",  new jalview.schemes.ScoreMatrix ("BLOSUM62", jalview.schemes.ResidueProperties.BLOSUM62, 0));
+jalview.schemes.ResidueProperties.scoreMatrices.put ("PAM250",  new jalview.schemes.ScoreMatrix ("PAM250", jalview.schemes.ResidueProperties.PAM250, 0));
+jalview.schemes.ResidueProperties.scoreMatrices.put ("DNA",  new jalview.schemes.ScoreMatrix ("DNA", jalview.schemes.ResidueProperties.DNA, 1));
+}c$.pidColours = c$.prototype.pidColours =  Clazz_newArray (-1, [jalview.schemes.ResidueProperties.midBlue,  new java.awt.Color (153, 153, 255),  new java.awt.Color (204, 204, 255)]);
+Clazz_defineStatics (c$,
+"pidThresholds",  Clazz_newFloatArray (-1, [80, 60, 40]));
+c$.codonHash = c$.prototype.codonHash =  new java.util.HashMap ();
+c$.Lys = c$.prototype.Lys =  new java.util.ArrayList ();
+c$.Asn = c$.prototype.Asn =  new java.util.ArrayList ();
+c$.Gln = c$.prototype.Gln =  new java.util.ArrayList ();
+c$.His = c$.prototype.His =  new java.util.ArrayList ();
+c$.Glu = c$.prototype.Glu =  new java.util.ArrayList ();
+c$.Asp = c$.prototype.Asp =  new java.util.ArrayList ();
+c$.Tyr = c$.prototype.Tyr =  new java.util.ArrayList ();
+c$.Thr = c$.prototype.Thr =  new java.util.ArrayList ();
+c$.Pro = c$.prototype.Pro =  new java.util.ArrayList ();
+c$.Ala = c$.prototype.Ala =  new java.util.ArrayList ();
+c$.Ser = c$.prototype.Ser =  new java.util.ArrayList ();
+c$.Arg = c$.prototype.Arg =  new java.util.ArrayList ();
+c$.Gly = c$.prototype.Gly =  new java.util.ArrayList ();
+c$.Trp = c$.prototype.Trp =  new java.util.ArrayList ();
+c$.Cys = c$.prototype.Cys =  new java.util.ArrayList ();
+c$.Ile = c$.prototype.Ile =  new java.util.ArrayList ();
+c$.Met = c$.prototype.Met =  new java.util.ArrayList ();
+c$.Leu = c$.prototype.Leu =  new java.util.ArrayList ();
+c$.Val = c$.prototype.Val =  new java.util.ArrayList ();
+c$.Phe = c$.prototype.Phe =  new java.util.ArrayList ();
+c$.STOP = c$.prototype.STOP =  new java.util.ArrayList ();
+Clazz_defineStatics (c$,
+"START", "ATG");
+{
+jalview.schemes.ResidueProperties.codonHash.put ("K", jalview.schemes.ResidueProperties.Lys);
+jalview.schemes.ResidueProperties.codonHash.put ("N", jalview.schemes.ResidueProperties.Asn);
+jalview.schemes.ResidueProperties.codonHash.put ("Q", jalview.schemes.ResidueProperties.Gln);
+jalview.schemes.ResidueProperties.codonHash.put ("H", jalview.schemes.ResidueProperties.His);
+jalview.schemes.ResidueProperties.codonHash.put ("E", jalview.schemes.ResidueProperties.Glu);
+jalview.schemes.ResidueProperties.codonHash.put ("D", jalview.schemes.ResidueProperties.Asp);
+jalview.schemes.ResidueProperties.codonHash.put ("Y", jalview.schemes.ResidueProperties.Tyr);
+jalview.schemes.ResidueProperties.codonHash.put ("T", jalview.schemes.ResidueProperties.Thr);
+jalview.schemes.ResidueProperties.codonHash.put ("P", jalview.schemes.ResidueProperties.Pro);
+jalview.schemes.ResidueProperties.codonHash.put ("A", jalview.schemes.ResidueProperties.Ala);
+jalview.schemes.ResidueProperties.codonHash.put ("S", jalview.schemes.ResidueProperties.Ser);
+jalview.schemes.ResidueProperties.codonHash.put ("R", jalview.schemes.ResidueProperties.Arg);
+jalview.schemes.ResidueProperties.codonHash.put ("G", jalview.schemes.ResidueProperties.Gly);
+jalview.schemes.ResidueProperties.codonHash.put ("W", jalview.schemes.ResidueProperties.Trp);
+jalview.schemes.ResidueProperties.codonHash.put ("C", jalview.schemes.ResidueProperties.Cys);
+jalview.schemes.ResidueProperties.codonHash.put ("I", jalview.schemes.ResidueProperties.Ile);
+jalview.schemes.ResidueProperties.codonHash.put ("M", jalview.schemes.ResidueProperties.Met);
+jalview.schemes.ResidueProperties.codonHash.put ("L", jalview.schemes.ResidueProperties.Leu);
+jalview.schemes.ResidueProperties.codonHash.put ("V", jalview.schemes.ResidueProperties.Val);
+jalview.schemes.ResidueProperties.codonHash.put ("F", jalview.schemes.ResidueProperties.Phe);
+jalview.schemes.ResidueProperties.codonHash.put ("STOP", jalview.schemes.ResidueProperties.STOP);
+}c$.ambiguityCodes = c$.prototype.ambiguityCodes =  new java.util.Hashtable ();
+c$.codonHash2 = c$.prototype.codonHash2 =  new java.util.Hashtable ();
+c$._ambiguityCodes = c$.prototype._ambiguityCodes =  new java.util.Hashtable ();
+{
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("R",  Clazz_newArray (-1, ["A", "G"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("Y",  Clazz_newArray (-1, ["T", "C"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("W",  Clazz_newArray (-1, ["A", "T"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("S",  Clazz_newArray (-1, ["G", "C"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("M",  Clazz_newArray (-1, ["A", "C"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("K",  Clazz_newArray (-1, ["G", "T"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("H",  Clazz_newArray (-1, ["A", "T", "C"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("B",  Clazz_newArray (-1, ["G", "T", "C"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("V",  Clazz_newArray (-1, ["G", "A", "C"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("D",  Clazz_newArray (-1, ["G", "A", "T"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put ("N",  Clazz_newArray (-1, ["G", "A", "T", "C"]));
+jalview.schemes.ResidueProperties.codonHash2.put ("AAA", "K");
+jalview.schemes.ResidueProperties.codonHash2.put ("AAG", "K");
+jalview.schemes.ResidueProperties.codonHash2.put ("AAC", "N");
+jalview.schemes.ResidueProperties.codonHash2.put ("AAT", "N");
+jalview.schemes.ResidueProperties.codonHash2.put ("CAA", "Q");
+jalview.schemes.ResidueProperties.codonHash2.put ("CAG", "Q");
+jalview.schemes.ResidueProperties.codonHash2.put ("CAC", "H");
+jalview.schemes.ResidueProperties.codonHash2.put ("CAT", "H");
+jalview.schemes.ResidueProperties.codonHash2.put ("GAA", "E");
+jalview.schemes.ResidueProperties.codonHash2.put ("GAG", "E");
+jalview.schemes.ResidueProperties.codonHash2.put ("GAC", "D");
+jalview.schemes.ResidueProperties.codonHash2.put ("GAT", "D");
+jalview.schemes.ResidueProperties.codonHash2.put ("TAC", "Y");
+jalview.schemes.ResidueProperties.codonHash2.put ("TAT", "Y");
+jalview.schemes.ResidueProperties.codonHash2.put ("ACA", "T");
+jalview.schemes.ResidueProperties.codonHash2.put ("ACC", "T");
+jalview.schemes.ResidueProperties.codonHash2.put ("ACT", "T");
+jalview.schemes.ResidueProperties.codonHash2.put ("ACG", "T");
+jalview.schemes.ResidueProperties.codonHash2.put ("CCA", "P");
+jalview.schemes.ResidueProperties.codonHash2.put ("CCG", "P");
+jalview.schemes.ResidueProperties.codonHash2.put ("CCC", "P");
+jalview.schemes.ResidueProperties.codonHash2.put ("CCT", "P");
+jalview.schemes.ResidueProperties.codonHash2.put ("GCA", "A");
+jalview.schemes.ResidueProperties.codonHash2.put ("GCG", "A");
+jalview.schemes.ResidueProperties.codonHash2.put ("GCC", "A");
+jalview.schemes.ResidueProperties.codonHash2.put ("GCT", "A");
+jalview.schemes.ResidueProperties.codonHash2.put ("TCA", "S");
+jalview.schemes.ResidueProperties.codonHash2.put ("TCG", "S");
+jalview.schemes.ResidueProperties.codonHash2.put ("TCC", "S");
+jalview.schemes.ResidueProperties.codonHash2.put ("TCT", "S");
+jalview.schemes.ResidueProperties.codonHash2.put ("AGC", "S");
+jalview.schemes.ResidueProperties.codonHash2.put ("AGT", "S");
+jalview.schemes.ResidueProperties.codonHash2.put ("AGA", "R");
+jalview.schemes.ResidueProperties.codonHash2.put ("AGG", "R");
+jalview.schemes.ResidueProperties.codonHash2.put ("CGA", "R");
+jalview.schemes.ResidueProperties.codonHash2.put ("CGG", "R");
+jalview.schemes.ResidueProperties.codonHash2.put ("CGC", "R");
+jalview.schemes.ResidueProperties.codonHash2.put ("CGT", "R");
+jalview.schemes.ResidueProperties.codonHash2.put ("GGA", "G");
+jalview.schemes.ResidueProperties.codonHash2.put ("GGG", "G");
+jalview.schemes.ResidueProperties.codonHash2.put ("GGC", "G");
+jalview.schemes.ResidueProperties.codonHash2.put ("GGT", "G");
+jalview.schemes.ResidueProperties.codonHash2.put ("TGA", "*");
+jalview.schemes.ResidueProperties.codonHash2.put ("TAA", "*");
+jalview.schemes.ResidueProperties.codonHash2.put ("TAG", "*");
+jalview.schemes.ResidueProperties.codonHash2.put ("TGG", "W");
+jalview.schemes.ResidueProperties.codonHash2.put ("TGC", "C");
+jalview.schemes.ResidueProperties.codonHash2.put ("TGT", "C");
+jalview.schemes.ResidueProperties.codonHash2.put ("ATA", "I");
+jalview.schemes.ResidueProperties.codonHash2.put ("ATC", "I");
+jalview.schemes.ResidueProperties.codonHash2.put ("ATT", "I");
+jalview.schemes.ResidueProperties.codonHash2.put ("ATG", "M");
+jalview.schemes.ResidueProperties.codonHash2.put ("CTA", "L");
+jalview.schemes.ResidueProperties.codonHash2.put ("CTG", "L");
+jalview.schemes.ResidueProperties.codonHash2.put ("CTC", "L");
+jalview.schemes.ResidueProperties.codonHash2.put ("CTT", "L");
+jalview.schemes.ResidueProperties.codonHash2.put ("TTA", "L");
+jalview.schemes.ResidueProperties.codonHash2.put ("TTG", "L");
+jalview.schemes.ResidueProperties.codonHash2.put ("GTA", "V");
+jalview.schemes.ResidueProperties.codonHash2.put ("GTG", "V");
+jalview.schemes.ResidueProperties.codonHash2.put ("GTC", "V");
+jalview.schemes.ResidueProperties.codonHash2.put ("GTT", "V");
+jalview.schemes.ResidueProperties.codonHash2.put ("TTC", "F");
+jalview.schemes.ResidueProperties.codonHash2.put ("TTT", "F");
+jalview.schemes.ResidueProperties.buildAmbiguityCodonSet ();
+}{
+jalview.schemes.ResidueProperties.Lys.add ("AAA");
+jalview.schemes.ResidueProperties.Lys.add ("AAG");
+jalview.schemes.ResidueProperties.Asn.add ("AAC");
+jalview.schemes.ResidueProperties.Asn.add ("AAT");
+jalview.schemes.ResidueProperties.Gln.add ("CAA");
+jalview.schemes.ResidueProperties.Gln.add ("CAG");
+jalview.schemes.ResidueProperties.His.add ("CAC");
+jalview.schemes.ResidueProperties.His.add ("CAT");
+jalview.schemes.ResidueProperties.Glu.add ("GAA");
+jalview.schemes.ResidueProperties.Glu.add ("GAG");
+jalview.schemes.ResidueProperties.Asp.add ("GAC");
+jalview.schemes.ResidueProperties.Asp.add ("GAT");
+jalview.schemes.ResidueProperties.Tyr.add ("TAC");
+jalview.schemes.ResidueProperties.Tyr.add ("TAT");
+jalview.schemes.ResidueProperties.Thr.add ("ACA");
+jalview.schemes.ResidueProperties.Thr.add ("ACG");
+jalview.schemes.ResidueProperties.Thr.add ("ACC");
+jalview.schemes.ResidueProperties.Thr.add ("ACT");
+jalview.schemes.ResidueProperties.Pro.add ("CCA");
+jalview.schemes.ResidueProperties.Pro.add ("CCG");
+jalview.schemes.ResidueProperties.Pro.add ("CCC");
+jalview.schemes.ResidueProperties.Pro.add ("CCT");
+jalview.schemes.ResidueProperties.Ala.add ("GCA");
+jalview.schemes.ResidueProperties.Ala.add ("GCG");
+jalview.schemes.ResidueProperties.Ala.add ("GCC");
+jalview.schemes.ResidueProperties.Ala.add ("GCT");
+jalview.schemes.ResidueProperties.Ser.add ("TCA");
+jalview.schemes.ResidueProperties.Ser.add ("TCG");
+jalview.schemes.ResidueProperties.Ser.add ("TCC");
+jalview.schemes.ResidueProperties.Ser.add ("TCT");
+jalview.schemes.ResidueProperties.Ser.add ("AGC");
+jalview.schemes.ResidueProperties.Ser.add ("AGT");
+jalview.schemes.ResidueProperties.Arg.add ("AGA");
+jalview.schemes.ResidueProperties.Arg.add ("AGG");
+jalview.schemes.ResidueProperties.Arg.add ("CGA");
+jalview.schemes.ResidueProperties.Arg.add ("CGG");
+jalview.schemes.ResidueProperties.Arg.add ("CGC");
+jalview.schemes.ResidueProperties.Arg.add ("CGT");
+jalview.schemes.ResidueProperties.Gly.add ("GGA");
+jalview.schemes.ResidueProperties.Gly.add ("GGG");
+jalview.schemes.ResidueProperties.Gly.add ("GGC");
+jalview.schemes.ResidueProperties.Gly.add ("GGT");
+jalview.schemes.ResidueProperties.STOP.add ("TGA");
+jalview.schemes.ResidueProperties.STOP.add ("TAA");
+jalview.schemes.ResidueProperties.STOP.add ("TAG");
+jalview.schemes.ResidueProperties.Trp.add ("TGG");
+jalview.schemes.ResidueProperties.Cys.add ("TGC");
+jalview.schemes.ResidueProperties.Cys.add ("TGT");
+jalview.schemes.ResidueProperties.Ile.add ("ATA");
+jalview.schemes.ResidueProperties.Ile.add ("ATC");
+jalview.schemes.ResidueProperties.Ile.add ("ATT");
+jalview.schemes.ResidueProperties.Met.add ("ATG");
+jalview.schemes.ResidueProperties.Leu.add ("CTA");
+jalview.schemes.ResidueProperties.Leu.add ("CTG");
+jalview.schemes.ResidueProperties.Leu.add ("CTC");
+jalview.schemes.ResidueProperties.Leu.add ("CTT");
+jalview.schemes.ResidueProperties.Leu.add ("TTA");
+jalview.schemes.ResidueProperties.Leu.add ("TTG");
+jalview.schemes.ResidueProperties.Val.add ("GTA");
+jalview.schemes.ResidueProperties.Val.add ("GTG");
+jalview.schemes.ResidueProperties.Val.add ("GTC");
+jalview.schemes.ResidueProperties.Val.add ("GTT");
+jalview.schemes.ResidueProperties.Phe.add ("TTC");
+jalview.schemes.ResidueProperties.Phe.add ("TTT");
+}c$.propHash = c$.prototype.propHash =  new java.util.Hashtable ();
+c$.hydrophobic = c$.prototype.hydrophobic =  new java.util.Hashtable ();
+c$.polar = c$.prototype.polar =  new java.util.Hashtable ();
+c$.small = c$.prototype.small =  new java.util.Hashtable ();
+c$.positive = c$.prototype.positive =  new java.util.Hashtable ();
+c$.negative = c$.prototype.negative =  new java.util.Hashtable ();
+c$.charged = c$.prototype.charged =  new java.util.Hashtable ();
+c$.aromatic = c$.prototype.aromatic =  new java.util.Hashtable ();
+c$.aliphatic = c$.prototype.aliphatic =  new java.util.Hashtable ();
+c$.tiny = c$.prototype.tiny =  new java.util.Hashtable ();
+c$.proline = c$.prototype.proline =  new java.util.Hashtable ();
+{
+jalview.schemes.ResidueProperties.hydrophobic.put ("I",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("L",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("V",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("C",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("A",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("G",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("M",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("F",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("Y",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("W",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("H",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("K",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("X",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("*",  new Integer (1));
+jalview.schemes.ResidueProperties.hydrophobic.put ("R",  new Integer (0));
+jalview.schemes.ResidueProperties.hydrophobic.put ("E",  new Integer (0));
+jalview.schemes.ResidueProperties.hydrophobic.put ("Q",  new Integer (0));
+jalview.schemes.ResidueProperties.hydrophobic.put ("D",  new Integer (0));
+jalview.schemes.ResidueProperties.hydrophobic.put ("N",  new Integer (0));
+jalview.schemes.ResidueProperties.hydrophobic.put ("S",  new Integer (0));
+jalview.schemes.ResidueProperties.hydrophobic.put ("T",  new Integer (0));
+jalview.schemes.ResidueProperties.hydrophobic.put ("P",  new Integer (0));
+}{
+jalview.schemes.ResidueProperties.polar.put ("Y",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("W",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("H",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("K",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("R",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("E",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("Q",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("D",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("N",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("S",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("T",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("X",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("*",  new Integer (1));
+jalview.schemes.ResidueProperties.polar.put ("I",  new Integer (0));
+jalview.schemes.ResidueProperties.polar.put ("L",  new Integer (0));
+jalview.schemes.ResidueProperties.polar.put ("V",  new Integer (0));
+jalview.schemes.ResidueProperties.polar.put ("C",  new Integer (0));
+jalview.schemes.ResidueProperties.polar.put ("A",  new Integer (0));
+jalview.schemes.ResidueProperties.polar.put ("G",  new Integer (0));
+jalview.schemes.ResidueProperties.polar.put ("M",  new Integer (0));
+jalview.schemes.ResidueProperties.polar.put ("F",  new Integer (0));
+jalview.schemes.ResidueProperties.polar.put ("P",  new Integer (0));
+}{
+jalview.schemes.ResidueProperties.small.put ("I",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("L",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("V",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("C",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("A",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("G",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("M",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("F",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("Y",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("W",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("H",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("K",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("R",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("E",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("Q",  new Integer (0));
+jalview.schemes.ResidueProperties.small.put ("D",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("N",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("S",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("T",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("P",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.small.put ("*",  new Integer (1));
+}{
+jalview.schemes.ResidueProperties.positive.put ("I",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("L",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("V",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("C",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("A",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("G",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("M",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("F",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("Y",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("W",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("H",  new Integer (1));
+jalview.schemes.ResidueProperties.positive.put ("K",  new Integer (1));
+jalview.schemes.ResidueProperties.positive.put ("R",  new Integer (1));
+jalview.schemes.ResidueProperties.positive.put ("E",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("Q",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("D",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("N",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("S",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("T",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("P",  new Integer (0));
+jalview.schemes.ResidueProperties.positive.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.positive.put ("*",  new Integer (1));
+}{
+jalview.schemes.ResidueProperties.negative.put ("I",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("L",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("V",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("C",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("A",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("G",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("M",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("F",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("Y",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("W",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("H",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("K",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("R",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("E",  new Integer (1));
+jalview.schemes.ResidueProperties.negative.put ("Q",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("D",  new Integer (1));
+jalview.schemes.ResidueProperties.negative.put ("N",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("S",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("T",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("P",  new Integer (0));
+jalview.schemes.ResidueProperties.negative.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.negative.put ("*",  new Integer (1));
+}{
+jalview.schemes.ResidueProperties.charged.put ("I",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("L",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("V",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("C",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("A",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("G",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("M",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("F",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("Y",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("W",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("H",  new Integer (1));
+jalview.schemes.ResidueProperties.charged.put ("K",  new Integer (1));
+jalview.schemes.ResidueProperties.charged.put ("R",  new Integer (1));
+jalview.schemes.ResidueProperties.charged.put ("E",  new Integer (1));
+jalview.schemes.ResidueProperties.charged.put ("Q",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("D",  new Integer (1));
+jalview.schemes.ResidueProperties.charged.put ("N",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("S",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("T",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("P",  new Integer (0));
+jalview.schemes.ResidueProperties.charged.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.charged.put ("*",  new Integer (1));
+}{
+jalview.schemes.ResidueProperties.aromatic.put ("I",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("L",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("V",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("C",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("A",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("G",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("M",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("F",  new Integer (1));
+jalview.schemes.ResidueProperties.aromatic.put ("Y",  new Integer (1));
+jalview.schemes.ResidueProperties.aromatic.put ("W",  new Integer (1));
+jalview.schemes.ResidueProperties.aromatic.put ("H",  new Integer (1));
+jalview.schemes.ResidueProperties.aromatic.put ("K",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("R",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("E",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("Q",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("D",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("N",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("S",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("T",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("P",  new Integer (0));
+jalview.schemes.ResidueProperties.aromatic.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.aromatic.put ("*",  new Integer (1));
+}{
+jalview.schemes.ResidueProperties.aliphatic.put ("I",  new Integer (1));
+jalview.schemes.ResidueProperties.aliphatic.put ("L",  new Integer (1));
+jalview.schemes.ResidueProperties.aliphatic.put ("V",  new Integer (1));
+jalview.schemes.ResidueProperties.aliphatic.put ("C",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("A",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("G",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("M",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("F",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("Y",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("W",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("H",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("K",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("R",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("E",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("Q",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("D",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("N",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("S",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("T",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("P",  new Integer (0));
+jalview.schemes.ResidueProperties.aliphatic.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.aliphatic.put ("*",  new Integer (1));
+}{
+jalview.schemes.ResidueProperties.tiny.put ("I",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("L",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("V",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("C",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("A",  new Integer (1));
+jalview.schemes.ResidueProperties.tiny.put ("G",  new Integer (1));
+jalview.schemes.ResidueProperties.tiny.put ("M",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("F",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("Y",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("W",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("H",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("K",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("R",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("E",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("Q",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("D",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("N",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("S",  new Integer (1));
+jalview.schemes.ResidueProperties.tiny.put ("T",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("P",  new Integer (0));
+jalview.schemes.ResidueProperties.tiny.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.tiny.put ("*",  new Integer (1));
+}{
+jalview.schemes.ResidueProperties.proline.put ("I",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("L",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("V",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("C",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("A",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("G",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("M",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("F",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("Y",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("W",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("H",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("K",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("R",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("E",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("Q",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("D",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("N",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("S",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("T",  new Integer (0));
+jalview.schemes.ResidueProperties.proline.put ("P",  new Integer (1));
+jalview.schemes.ResidueProperties.proline.put ("-",  new Integer (1));
+jalview.schemes.ResidueProperties.proline.put ("*",  new Integer (1));
+}{
+jalview.schemes.ResidueProperties.propHash.put ("hydrophobic", jalview.schemes.ResidueProperties.hydrophobic);
+jalview.schemes.ResidueProperties.propHash.put ("small", jalview.schemes.ResidueProperties.small);
+jalview.schemes.ResidueProperties.propHash.put ("positive", jalview.schemes.ResidueProperties.positive);
+jalview.schemes.ResidueProperties.propHash.put ("negative", jalview.schemes.ResidueProperties.negative);
+jalview.schemes.ResidueProperties.propHash.put ("charged", jalview.schemes.ResidueProperties.charged);
+jalview.schemes.ResidueProperties.propHash.put ("aromatic", jalview.schemes.ResidueProperties.aromatic);
+jalview.schemes.ResidueProperties.propHash.put ("aliphatic", jalview.schemes.ResidueProperties.aliphatic);
+jalview.schemes.ResidueProperties.propHash.put ("tiny", jalview.schemes.ResidueProperties.tiny);
+jalview.schemes.ResidueProperties.propHash.put ("proline", jalview.schemes.ResidueProperties.proline);
+jalview.schemes.ResidueProperties.propHash.put ("polar", jalview.schemes.ResidueProperties.polar);
+}{
+var propMatrixF =  Clazz_newIntArray (23, 23, 0);
+var propMatrixPos =  Clazz_newIntArray (23, 23, 0);
+var propMatrixEpos =  Clazz_newIntArray (23, 23, 0);
+for (var i = 0; i < 23; i++) {
+var maxF = 0;
+var maxP = 0;
+var maxEP = 0;
+var ic = "";
+if (jalview.schemes.ResidueProperties.aa.length > i) {
+ic += jalview.schemes.ResidueProperties.aa[i];
+} else {
+ic = "-";
+}for (var j = i + 1; j < 23; j++) {
+var jc = "";
+if (jalview.schemes.ResidueProperties.aa.length > j) {
+jc += jalview.schemes.ResidueProperties.aa[j];
+} else {
+jc = "-";
+}propMatrixF[i][j] = 0;
+propMatrixPos[i][j] = 0;
+propMatrixEpos[i][j] = 0;
+for (var en = jalview.schemes.ResidueProperties.propHash.keys (); en.hasMoreElements (); ) {
+var ph = en.nextElement ();
+var pph = jalview.schemes.ResidueProperties.propHash.get (ph);
+if (pph.get (ic) != null && pph.get (jc) != null) {
+var icp = pph.get (ic).intValue ();
+var jcp = pph.get (jc).intValue ();
+propMatrixPos[i][j] += icp == jcp && icp > 0 ? 2 : 0;
+propMatrixPos[j][i] += icp == jcp && icp > 0 ? 2 : 0;
+propMatrixF[i][j] += icp == jcp ? 2 : 0;
+propMatrixF[j][i] += icp == jcp ? 2 : 0;
+propMatrixEpos[i][j] += icp == jcp ? (1 + icp * 2) : 0;
+propMatrixEpos[j][i] += icp == jcp ? (1 + icp * 2) : 0;
+}}
+if (maxF < propMatrixF[i][j]) {
+maxF = propMatrixF[i][j];
+}if (maxP < propMatrixPos[i][j]) {
+maxP = propMatrixPos[i][j];
+}if (maxEP < propMatrixEpos[i][j]) {
+maxEP = propMatrixEpos[i][j];
+}}
+propMatrixF[i][i] = maxF;
+propMatrixPos[i][i] = maxP;
+propMatrixEpos[i][i] = maxEP;
+}
+jalview.schemes.ResidueProperties.scoreMatrices.put ("PID",  new jalview.analysis.scoremodels.PIDScoreModel ());
+jalview.schemes.ResidueProperties.scoreMatrices.put ("Displayed Features",  new jalview.analysis.scoremodels.FeatureScoreModel ());
+}Clazz_defineStatics (c$,
+"toDssp3State", null);
+{
+jalview.schemes.ResidueProperties.toDssp3State =  new java.util.Hashtable ();
+jalview.schemes.ResidueProperties.toDssp3State.put ("H", "H");
+jalview.schemes.ResidueProperties.toDssp3State.put ("E", "E");
+jalview.schemes.ResidueProperties.toDssp3State.put ("C", " ");
+jalview.schemes.ResidueProperties.toDssp3State.put (" ", " ");
+jalview.schemes.ResidueProperties.toDssp3State.put ("T", " ");
+jalview.schemes.ResidueProperties.toDssp3State.put ("B", "E");
+jalview.schemes.ResidueProperties.toDssp3State.put ("G", "H");
+jalview.schemes.ResidueProperties.toDssp3State.put ("I", "H");
+jalview.schemes.ResidueProperties.toDssp3State.put ("X", " ");
+}Clazz_defineStatics (c$,
+"toRNAssState", null,
+"RNAcloseParen",  Clazz_newBooleanArray (255, false));
+{
+jalview.schemes.ResidueProperties.toRNAssState =  new java.util.Hashtable ();
+jalview.schemes.ResidueProperties.toRNAssState.put (")", "(");
+jalview.schemes.ResidueProperties.toRNAssState.put ("(", "(");
+jalview.schemes.ResidueProperties.toRNAssState.put ("]", "[");
+jalview.schemes.ResidueProperties.toRNAssState.put ("[", "[");
+jalview.schemes.ResidueProperties.toRNAssState.put ("{", "{");
+jalview.schemes.ResidueProperties.toRNAssState.put ("}", "{");
+jalview.schemes.ResidueProperties.toRNAssState.put (">", ">");
+jalview.schemes.ResidueProperties.toRNAssState.put ("<", ">");
+jalview.schemes.ResidueProperties.toRNAssState.put ("A", "A");
+jalview.schemes.ResidueProperties.toRNAssState.put ("a", "A");
+jalview.schemes.ResidueProperties.toRNAssState.put ("B", "B");
+jalview.schemes.ResidueProperties.toRNAssState.put ("b", "B");
+jalview.schemes.ResidueProperties.toRNAssState.put ("C", "C");
+jalview.schemes.ResidueProperties.toRNAssState.put ("c", "C");
+jalview.schemes.ResidueProperties.toRNAssState.put ("D", "D");
+jalview.schemes.ResidueProperties.toRNAssState.put ("d", "D");
+jalview.schemes.ResidueProperties.toRNAssState.put ("E", "E");
+jalview.schemes.ResidueProperties.toRNAssState.put ("e", "E");
+jalview.schemes.ResidueProperties.toRNAssState.put ("F", "F");
+jalview.schemes.ResidueProperties.toRNAssState.put ("f", "F");
+jalview.schemes.ResidueProperties.toRNAssState.put ("G", "G");
+jalview.schemes.ResidueProperties.toRNAssState.put ("g", "G");
+jalview.schemes.ResidueProperties.toRNAssState.put ("H", "H");
+jalview.schemes.ResidueProperties.toRNAssState.put ("h", "H");
+jalview.schemes.ResidueProperties.toRNAssState.put ("I", "I");
+jalview.schemes.ResidueProperties.toRNAssState.put ("i", "I");
+jalview.schemes.ResidueProperties.toRNAssState.put ("J", "J");
+jalview.schemes.ResidueProperties.toRNAssState.put ("j", "J");
+jalview.schemes.ResidueProperties.toRNAssState.put ("K", "K");
+jalview.schemes.ResidueProperties.toRNAssState.put ("k", "K");
+jalview.schemes.ResidueProperties.toRNAssState.put ("L", "L");
+jalview.schemes.ResidueProperties.toRNAssState.put ("l", "L");
+jalview.schemes.ResidueProperties.toRNAssState.put ("M", "M");
+jalview.schemes.ResidueProperties.toRNAssState.put ("m", "M");
+jalview.schemes.ResidueProperties.toRNAssState.put ("N", "N");
+jalview.schemes.ResidueProperties.toRNAssState.put ("n", "N");
+jalview.schemes.ResidueProperties.toRNAssState.put ("O", "O");
+jalview.schemes.ResidueProperties.toRNAssState.put ("o", "O");
+jalview.schemes.ResidueProperties.toRNAssState.put ("P", "P");
+jalview.schemes.ResidueProperties.toRNAssState.put ("p", "P");
+jalview.schemes.ResidueProperties.toRNAssState.put ("Q", "Q");
+jalview.schemes.ResidueProperties.toRNAssState.put ("q", "Q");
+jalview.schemes.ResidueProperties.toRNAssState.put ("R", "R");
+jalview.schemes.ResidueProperties.toRNAssState.put ("r", "R");
+jalview.schemes.ResidueProperties.toRNAssState.put ("S", "S");
+jalview.schemes.ResidueProperties.toRNAssState.put ("s", "S");
+jalview.schemes.ResidueProperties.toRNAssState.put ("T", "T");
+jalview.schemes.ResidueProperties.toRNAssState.put ("t", "T");
+jalview.schemes.ResidueProperties.toRNAssState.put ("U", "U");
+jalview.schemes.ResidueProperties.toRNAssState.put ("u", "U");
+jalview.schemes.ResidueProperties.toRNAssState.put ("V", "V");
+jalview.schemes.ResidueProperties.toRNAssState.put ("v", "V");
+jalview.schemes.ResidueProperties.toRNAssState.put ("W", "W");
+jalview.schemes.ResidueProperties.toRNAssState.put ("w", "W");
+jalview.schemes.ResidueProperties.toRNAssState.put ("X", "X");
+jalview.schemes.ResidueProperties.toRNAssState.put ("x", "X");
+jalview.schemes.ResidueProperties.toRNAssState.put ("Y", "Y");
+jalview.schemes.ResidueProperties.toRNAssState.put ("y", "Y");
+jalview.schemes.ResidueProperties.toRNAssState.put ("Z", "Z");
+jalview.schemes.ResidueProperties.toRNAssState.put ("z", "Z");
+for (var p = 0; p < jalview.schemes.ResidueProperties.RNAcloseParen.length; p++) {
+jalview.schemes.ResidueProperties.RNAcloseParen[p] = false;
+}
+for (var k, $k = jalview.schemes.ResidueProperties.toRNAssState.keySet ().iterator (); $k.hasNext () && ((k = $k.next ()) || true);) {
+jalview.schemes.ResidueProperties.RNAcloseParen[k.charCodeAt (0)] = k.charAt (0) != jalview.schemes.ResidueProperties.toRNAssState.get (k).charAt (0);
+}
+}});
+Clazz_declarePackage ("jalview.analysis.scoremodels");
+Clazz_load (["jalview.api.analysis.ScoreModelI", "$.ViewBasedAnalysisI"], "jalview.analysis.scoremodels.FeatureScoreModel", ["jalview.util.Comparison", "java.util.ArrayList", "$.Arrays", "$.Hashtable"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.fr = null;
+Clazz_instantialize (this, arguments);
+}, jalview.analysis.scoremodels, "FeatureScoreModel", null, [jalview.api.analysis.ScoreModelI, jalview.api.analysis.ViewBasedAnalysisI]);
+Clazz_overrideMethod (c$, "configureFromAlignmentView", 
+function (view) {
+this.fr = view.cloneFeatureRenderer ();
+return true;
+}, "jalview.api.AlignmentViewPanel");
+Clazz_overrideMethod (c$, "findDistances", 
+function (seqData) {
+var nofeats = 0;
+var dft = java.util.Arrays.asList (this.fr.getDisplayedFeatureTypes ());
+if (dft != null) {
+nofeats = dft.size ();
+}var sequenceString = seqData.getVisibleAlignment (jalview.util.Comparison.GapChars.charAt (0)).getSequencesArray ();
+var noseqs = sequenceString.length;
+var cpwidth = seqData.getWidth ();
+var distance =  Clazz_newFloatArray (noseqs, noseqs, 0);
+if (nofeats == 0) {
+for (var d, $d = 0, $$d = distance; $d < $$d.length && ((d = $$d[$d]) || true); $d++) {
+for (var i = 0; i < d.length; d[i++] = 0) {
+;}
+}
+return distance;
+}var max = 0;
+for (var cpos = 0; cpos < cpwidth; cpos++) {
+var sfap =  new java.util.ArrayList ();
+for (var i = 0; i < noseqs; i++) {
+var types =  new java.util.Hashtable ();
+var sfs = this.fr.findFeaturesAtRes (sequenceString[i], sequenceString[i].findPosition (cpos));
+for (var sf, $sf = sfs.iterator (); $sf.hasNext () && ((sf = $sf.next ()) || true);) {
+types.put (sf.getType (), sf);
+}
+sfap.add (types);
+}
+for (var i = 0; i < (noseqs - 1); i++) {
+if (cpos == 0) {
+distance[i][i] = 0;
+}for (var j = i + 1; j < noseqs; j++) {
+var sfcommon = 0;
+var fi = sfap.get (i);
+var fk;
+var fj = sfap.get (j);
+if (fi.size () > fj.size ()) {
+fk = fj;
+} else {
+fk = fi;
+fi = fj;
+}for (var k, $k = fi.keySet ().iterator (); $k.hasNext () && ((k = $k.next ()) || true);) {
+var sfj = fk.get (k);
+if (sfj != null) {
+sfcommon++;
+}}
+distance[i][j] += (fi.size () + fk.size () - 2 * sfcommon);
+distance[j][i] += distance[i][j];
+}
+}
+}
+for (var i = 0; i < noseqs; i++) {
+for (var j = i + 1; j < noseqs; j++) {
+distance[i][j] /= cpwidth;
+distance[j][i] = distance[i][j];
+}
+}
+return distance;
+}, "jalview.datamodel.AlignmentView");
+Clazz_overrideMethod (c$, "getName", 
+function () {
+return "Sequence Feature Similarity";
+});
+Clazz_overrideMethod (c$, "isDNA", 
+function () {
+return true;
+});
+Clazz_overrideMethod (c$, "isProtein", 
+function () {
+return true;
+});
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return "Score between sequences based on hamming distance between binary vectors marking features displayed at each column";
+});
+});
+Clazz_declarePackage ("jalview.api.analysis");
+Clazz_declareInterface (jalview.api.analysis, "ScoreModelI");
+Clazz_declarePackage ("jalview.api.analysis");
+Clazz_declareInterface (jalview.api.analysis, "ViewBasedAnalysisI");
+Clazz_declarePackage ("jalview.analysis.scoremodels");
+Clazz_load (["jalview.api.analysis.ScoreModelI"], "jalview.analysis.scoremodels.PIDScoreModel", ["jalview.util.Comparison"], function () {
+c$ = Clazz_declareType (jalview.analysis.scoremodels, "PIDScoreModel", null, jalview.api.analysis.ScoreModelI);
+Clazz_overrideMethod (c$, "findDistances", 
+function (seqData) {
+var sequenceString = seqData.getSequenceStrings (jalview.util.Comparison.GapChars.charAt (0));
+var noseqs = sequenceString.length;
+var distance =  Clazz_newFloatArray (noseqs, noseqs, 0);
+for (var i = 0; i < (noseqs - 1); i++) {
+for (var j = i; j < noseqs; j++) {
+if (j == i) {
+distance[i][i] = 0;
+} else {
+distance[i][j] = 100 - jalview.util.Comparison.PID (sequenceString[i], sequenceString[j]);
+distance[j][i] = distance[i][j];
+}}
+}
+return distance;
+}, "jalview.datamodel.AlignmentView");
+Clazz_overrideMethod (c$, "getName", 
+function () {
+return "PID";
+});
+Clazz_overrideMethod (c$, "isDNA", 
+function () {
+return true;
+});
+Clazz_overrideMethod (c$, "isProtein", 
+function () {
+return true;
+});
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.analysis.scoremodels.PairwiseSeqScoreModel", "jalview.api.analysis.ScoreModelI"], "jalview.schemes.ScoreMatrix", ["jalview.schemes.ResidueProperties", "java.lang.StringBuffer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.name = null;
+this.matrix = null;
+this.type = 0;
+Clazz_instantialize (this, arguments);
+}, jalview.schemes, "ScoreMatrix", jalview.analysis.scoremodels.PairwiseSeqScoreModel, jalview.api.analysis.ScoreModelI);
+Clazz_overrideMethod (c$, "getName", 
+function () {
+return this.name;
+});
+Clazz_makeConstructor (c$, 
+function (name, matrix, type) {
+Clazz_superConstructor (this, jalview.schemes.ScoreMatrix, []);
+this.matrix = matrix;
+this.type = type;
+this.name = name;
+}, "~S,~A,~N");
+Clazz_overrideMethod (c$, "isDNA", 
+function () {
+return this.type == 1;
+});
+Clazz_overrideMethod (c$, "isProtein", 
+function () {
+return this.type == 0;
+});
+Clazz_overrideMethod (c$, "getMatrix", 
+function () {
+return this.matrix;
+});
+Clazz_defineMethod (c$, "getPairwiseScore", 
+function (A1, A2) {
+return this.getPairwiseScore (A1.charAt (0), A2.charAt (0));
+}, "~S,~S");
+Clazz_defineMethod (c$, "getPairwiseScore", 
+function (c, d) {
+var pog = 0;
+try {
+var a = (this.type == 0) ? jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt (0)] : jalview.schemes.ResidueProperties.nucleotideIndex[c.charCodeAt (0)];
+var b = (this.type == 0) ? jalview.schemes.ResidueProperties.aaIndex[d.charCodeAt (0)] : jalview.schemes.ResidueProperties.nucleotideIndex[d.charCodeAt (0)];
+pog = this.matrix[a][b];
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+return pog;
+}, "~S,~S");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return this.outputMatrix (false);
+});
+Clazz_defineMethod (c$, "outputMatrix", 
+function (html) {
+var sb =  new StringBuffer ();
+var symbols = (this.type == 0) ? jalview.schemes.ResidueProperties.aaIndex : jalview.schemes.ResidueProperties.nucleotideIndex;
+var symMax = (this.type == 0) ? 23 : 10;
+var header = true;
+if (html) {
+sb.append ("<table border=\"1\">");
+}for (var sym = 'A'; sym <= 'Z'; sym = String.fromCharCode (sym.charCodeAt (0) + 1)) {
+if (symbols[sym.charCodeAt (0)] >= 0 && symbols[sym.charCodeAt (0)] < symMax) {
+if (header) {
+sb.append (html ? "<tr><td></td>" : "");
+for (var sym2 = 'A'; sym2 <= 'Z'; sym2 = String.fromCharCode (sym2.charCodeAt (0) + 1)) {
+if (symbols[sym2.charCodeAt (0)] >= 0 && symbols[sym2.charCodeAt (0)] < symMax) {
+sb.append ((html ? "<td>&nbsp;" : "\t") + sym2 + (html ? "&nbsp;</td>" : ""));
+}}
+header = false;
+sb.append (html ? "</tr>\n" : "\n");
+}if (html) {
+sb.append ("<tr>");
+}sb.append ((html ? "<td>" : "") + sym + (html ? "</td>" : ""));
+for (var sym2 = 'A'; sym2 <= 'Z'; sym2 = String.fromCharCode (sym2.charCodeAt (0) + 1)) {
+if (symbols[sym2.charCodeAt (0)] >= 0 && symbols[sym2.charCodeAt (0)] < symMax) {
+sb.append ((html ? "<td>" : "\t") + this.matrix[symbols[sym.charCodeAt (0)]][symbols[sym2.charCodeAt (0)]] + (html ? "</td>" : ""));
+}}
+sb.append (html ? "</tr>\n" : "\n");
+}}
+if (html) {
+sb.append ("</table>");
+}return sb.toString ();
+}, "~B");
+});
+Clazz_declarePackage ("jalview.analysis.scoremodels");
+Clazz_load (["jalview.api.analysis.ScoreModelI"], "jalview.analysis.scoremodels.PairwiseSeqScoreModel", ["jalview.util.Comparison"], function () {
+c$ = Clazz_declareType (jalview.analysis.scoremodels, "PairwiseSeqScoreModel", null, jalview.api.analysis.ScoreModelI);
+Clazz_overrideMethod (c$, "findDistances", 
+function (seqData) {
+var sequenceString = seqData.getSequenceStrings (jalview.util.Comparison.GapChars.charAt (0));
+var noseqs = sequenceString.length;
+var distance =  Clazz_newFloatArray (noseqs, noseqs, 0);
+var maxscore = 0;
+var end = sequenceString[0].length;
+for (var i = 0; i < (noseqs - 1); i++) {
+for (var j = i; j < noseqs; j++) {
+var score = 0;
+for (var k = 0; k < end; k++) {
+try {
+score += this.getPairwiseScore (sequenceString[i].charAt (k), sequenceString[j].charAt (k));
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+System.err.println ("err creating " + this.getName () + " tree");
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}
+distance[i][j] = score;
+if (score > maxscore) {
+maxscore = score;
+}}
+}
+for (var i = 0; i < (noseqs - 1); i++) {
+for (var j = i; j < noseqs; j++) {
+distance[i][j] = maxscore - distance[i][j];
+distance[j][i] = distance[i][j];
+}
+}
+return distance;
+}, "jalview.datamodel.AlignmentView");
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["jalview.datamodel.ASequence", "$.SequenceI", "jalview.jsdev.RegExp"], "jalview.datamodel.Sequence", ["jalview.analysis.AlignSeq", "jalview.datamodel.AlignmentAnnotation", "$.DBRefEntry", "$.DBRefSource", "$.PDBEntry", "$.SequenceFeature", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "$.StringUtils", "java.lang.StringBuffer", "java.util.ArrayList", "$.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.datasetSequence = null;
+this.name = null;
+this.sequence = null;
+this.description = null;
+this.start = 0;
+this.end = 0;
+this.pdbIds = null;
+this.vamsasId = null;
+this.dbrefs = null;
+this.rna = null;
+this.annotation = null;
+this.index = -1;
+this.sequenceFeatures = null;
+this.limitrx = null;
+this.endrx = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "Sequence", jalview.datamodel.ASequence, jalview.datamodel.SequenceI);
+Clazz_prepareFields (c$, function () {
+this.limitrx = jalview.jsdev.RegExp.newRegex (["[/][0-9]{1,}[-][0-9]{1,}$"]);
+this.endrx = jalview.jsdev.RegExp.newRegex (["[0-9]{1,}$"]);
+});
+Clazz_makeConstructor (c$, 
+function (name, sequence, start, end) {
+Clazz_superConstructor (this, jalview.datamodel.Sequence, []);
+this.initSeqAndName (name, sequence.toCharArray (), start, end);
+}, "~S,~S,~N,~N");
+Clazz_makeConstructor (c$, 
+function (name, sequence, start, end) {
+Clazz_superConstructor (this, jalview.datamodel.Sequence, []);
+this.initSeqAndName (name, sequence, start, end);
+}, "~S,~A,~N,~N");
+Clazz_defineMethod (c$, "initSeqAndName", 
+function (name2, sequence2, start2, end2) {
+this.name = name2;
+this.sequence = sequence2;
+this.start = start2;
+this.end = end2;
+this.parseId ();
+this.checkValidRange ();
+}, "~S,~A,~N,~N");
+Clazz_defineMethod (c$, "parseId", 
+function () {
+if (this.name == null) {
+System.err.println ("POSSIBLE IMPLEMENTATION ERROR: null sequence name passed to constructor.");
+this.name = "";
+}if (this.limitrx.search (this.name)) {
+this.name = this.limitrx.left ();
+this.endrx.search (this.limitrx.stringMatched ());
+this.setStart (Integer.parseInt (this.limitrx.stringMatched ().substring (1, this.endrx.matchedFrom () - 1)));
+this.setEnd (Integer.parseInt (this.endrx.stringMatched ()));
+}});
+Clazz_defineMethod (c$, "checkValidRange", 
+function () {
+{
+var endRes = 0;
+for (var j = 0; j < this.sequence.length; j++) {
+if (!jalview.util.Comparison.isGap (this.sequence[j])) {
+endRes++;
+}}
+if (endRes > 0) {
+endRes += this.start - 1;
+}if (this.end < endRes) {
+this.end = endRes;
+}}});
+Clazz_makeConstructor (c$, 
+function (name, sequence) {
+this.construct (name, sequence, 1, -1);
+}, "~S,~S");
+Clazz_makeConstructor (c$, 
+function (seq) {
+this.construct (seq, seq.getAnnotation ());
+}, "jalview.datamodel.SequenceI");
+Clazz_makeConstructor (c$, 
+function (seq, alAnnotation) {
+Clazz_superConstructor (this, jalview.datamodel.Sequence, []);
+this.initSeqFrom (seq, alAnnotation);
+}, "jalview.datamodel.SequenceI,~A");
+Clazz_defineMethod (c$, "initSeqFrom", 
+function (seq, alAnnotation) {
+this.initSeqAndName (seq.getName (), seq.getSequence (), seq.getStart (), seq.getEnd ());
+this.description = seq.getDescription ();
+if (seq.getSequenceFeatures () != null) {
+var sf = seq.getSequenceFeatures ();
+for (var i = 0; i < sf.length; i++) {
+this.addSequenceFeature ( new jalview.datamodel.SequenceFeature (sf[i]));
+}
+}this.setDatasetSequence (seq.getDatasetSequence ());
+if (this.datasetSequence == null && seq.getDBRef () != null) {
+var dbr = seq.getDBRef ();
+for (var i = 0; i < dbr.length; i++) {
+this.addDBRef ( new jalview.datamodel.DBRefEntry (dbr[i]));
+}
+}if (seq.getAnnotation () != null) {
+var sqann = seq.getAnnotation ();
+for (var i = 0; i < sqann.length; i++) {
+if (sqann[i] == null) {
+continue;
+}var found = (alAnnotation == null);
+if (!found) {
+for (var apos = 0; !found && apos < alAnnotation.length; apos++) {
+found = (alAnnotation[apos] === sqann[i]);
+}
+}if (found) {
+var newann =  new jalview.datamodel.AlignmentAnnotation (sqann[i]);
+this.addAlignmentAnnotation (newann);
+}}
+}if (seq.getPDBId () != null) {
+var ids = seq.getPDBId ();
+var e = ids.elements ();
+while (e.hasMoreElements ()) {
+this.addPDBId ( new jalview.datamodel.PDBEntry (e.nextElement ()));
+}
+}}, "jalview.datamodel.SequenceI,~A");
+Clazz_defineMethod (c$, "setSequenceFeatures", 
+function (features) {
+this.sequenceFeatures = features;
+}, "~A");
+Clazz_overrideMethod (c$, "addSequenceFeature", 
+function (sf) {
+if (this.sequenceFeatures == null) {
+this.sequenceFeatures =  new Array (0);
+}for (var i = 0; i < this.sequenceFeatures.length; i++) {
+if (this.sequenceFeatures[i].equals (sf)) {
+return;
+}}
+var temp =  new Array (this.sequenceFeatures.length + 1);
+System.arraycopy (this.sequenceFeatures, 0, temp, 0, this.sequenceFeatures.length);
+temp[this.sequenceFeatures.length] = sf;
+this.sequenceFeatures = temp;
+}, "jalview.datamodel.SequenceFeature");
+Clazz_overrideMethod (c$, "deleteFeature", 
+function (sf) {
+if (this.sequenceFeatures == null) {
+return;
+}var index = 0;
+for (index = 0; index < this.sequenceFeatures.length; index++) {
+if (this.sequenceFeatures[index].equals (sf)) {
+break;
+}}
+if (index == this.sequenceFeatures.length) {
+return;
+}var sfLength = this.sequenceFeatures.length;
+if (sfLength < 2) {
+this.sequenceFeatures = null;
+} else {
+var temp =  new Array (sfLength - 1);
+System.arraycopy (this.sequenceFeatures, 0, temp, 0, index);
+if (index < sfLength) {
+System.arraycopy (this.sequenceFeatures, index + 1, temp, index, this.sequenceFeatures.length - index - 1);
+}this.sequenceFeatures = temp;
+}}, "jalview.datamodel.SequenceFeature");
+Clazz_defineMethod (c$, "getSequenceFeatures", 
+function () {
+var features = this.sequenceFeatures;
+var seq = this;
+var count = 0;
+while (features == null && seq.getDatasetSequence () != null && count++ < 10) {
+seq = seq.getDatasetSequence ();
+features = (seq).sequenceFeatures;
+}
+return features;
+});
+Clazz_overrideMethod (c$, "addPDBId", 
+function (entry) {
+if (this.pdbIds == null) {
+this.pdbIds =  new java.util.Vector ();
+}if (this.pdbIds.contains (entry)) {
+jalview.datamodel.Sequence.updatePDBEntry (this.pdbIds.get (this.pdbIds.indexOf (entry)), entry);
+} else {
+this.pdbIds.addElement (entry);
+}}, "jalview.datamodel.PDBEntry");
+c$.updatePDBEntry = Clazz_defineMethod (c$, "updatePDBEntry", 
+ function (oldEntry, newEntry) {
+if (newEntry.getFile () != null) {
+oldEntry.setFile (newEntry.getFile ());
+}}, "jalview.datamodel.PDBEntry,jalview.datamodel.PDBEntry");
+Clazz_defineMethod (c$, "setPDBId", 
+function (id) {
+this.pdbIds = id;
+}, "java.util.Vector");
+Clazz_defineMethod (c$, "getPDBId", 
+function () {
+return this.pdbIds;
+});
+Clazz_overrideMethod (c$, "getDisplayId", 
+function (jvsuffix) {
+var result =  new StringBuffer (this.name);
+if (jvsuffix) {
+result.append ("/" + this.start + "-" + this.end);
+}return result.toString ();
+}, "~B");
+Clazz_overrideMethod (c$, "setName", 
+function (name) {
+this.name = name;
+this.parseId ();
+}, "~S");
+Clazz_defineMethod (c$, "getName", 
+function () {
+return this.name;
+});
+Clazz_overrideMethod (c$, "setStart", 
+function (start) {
+this.start = start;
+}, "~N");
+Clazz_defineMethod (c$, "getStart", 
+function () {
+return this.start;
+});
+Clazz_overrideMethod (c$, "setEnd", 
+function (end) {
+this.end = end;
+}, "~N");
+Clazz_defineMethod (c$, "getEnd", 
+function () {
+return this.end;
+});
+Clazz_overrideMethod (c$, "getLength", 
+function () {
+return this.sequence.length;
+});
+Clazz_defineMethod (c$, "setSequence", 
+function (seq) {
+this.sequence = seq.toCharArray ();
+this.checkValidRange ();
+}, "~S");
+Clazz_defineMethod (c$, "getSequenceAsString", 
+function () {
+return  String.instantialize (this.sequence);
+});
+Clazz_defineMethod (c$, "getSequenceAsString", 
+function (start, end) {
+return  String.instantialize (this.getSequence (start, end));
+}, "~N,~N");
+Clazz_defineMethod (c$, "getSequence", 
+function () {
+return this.sequence;
+});
+Clazz_defineMethod (c$, "getSequence", 
+function (start, end) {
+if (start < 0) {
+start = 0;
+}if (start >= this.sequence.length) {
+return  Clazz_newCharArray (0, '\0');
+}if (end >= this.sequence.length) {
+end = this.sequence.length;
+}var reply =  Clazz_newCharArray (end - start, '\0');
+System.arraycopy (this.sequence, start, reply, 0, end - start);
+return reply;
+}, "~N,~N");
+Clazz_overrideMethod (c$, "getSubSequence", 
+function (start, end) {
+if (start < 0) {
+start = 0;
+}var seq = this.getSequence (start, end);
+if (seq.length == 0) {
+return null;
+}var nstart = this.findPosition (start);
+var nend = this.findPosition (end) - 1;
+var nseq =  new jalview.datamodel.Sequence (this.getName (), seq, nstart, nend);
+nseq.setDescription (this.description);
+if (this.datasetSequence != null) {
+nseq.setDatasetSequence (this.datasetSequence);
+} else {
+nseq.setDatasetSequence (this);
+}return nseq;
+}, "~N,~N");
+Clazz_overrideMethod (c$, "getCharAt", 
+function (i) {
+if (i < this.sequence.length) {
+return this.sequence[i];
+} else {
+return ' ';
+}}, "~N");
+Clazz_defineMethod (c$, "setDescription", 
+function (desc) {
+this.description = desc;
+}, "~S");
+Clazz_defineMethod (c$, "getDescription", 
+function () {
+return this.description;
+});
+Clazz_overrideMethod (c$, "findIndex", 
+function (pos) {
+var j = this.start;
+var i = 0;
+while ((i < this.sequence.length) && (j <= this.end) && (j <= pos)) {
+if (!jalview.util.Comparison.isGap (this.sequence[i])) {
+j++;
+}i++;
+}
+if ((j == this.end) && (j < pos)) {
+return this.end + 1;
+} else {
+return i;
+}}, "~N");
+Clazz_overrideMethod (c$, "findPosition", 
+function (i) {
+var j = 0;
+var pos = this.start;
+var seqlen = this.sequence.length;
+while ((j < i) && (j < seqlen)) {
+if (!jalview.util.Comparison.isGap (this.sequence[j])) {
+pos++;
+}j++;
+}
+return pos;
+}, "~N");
+Clazz_overrideMethod (c$, "gapMap", 
+function () {
+var seq = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars,  String.instantialize (this.sequence));
+var map =  Clazz_newIntArray (seq.length, 0);
+var j = 0;
+var p = 0;
+while (j < this.sequence.length) {
+if (!jalview.util.Comparison.isGap (this.sequence[j])) {
+map[p++] = j;
+}j++;
+}
+return map;
+});
+Clazz_overrideMethod (c$, "findPositionMap", 
+function () {
+var map =  Clazz_newIntArray (this.sequence.length, 0);
+var j = 0;
+var pos = this.start;
+var seqlen = this.sequence.length;
+while ((j < seqlen)) {
+map[j] = pos;
+if (!jalview.util.Comparison.isGap (this.sequence[j])) {
+pos++;
+}j++;
+}
+return map;
+});
+Clazz_overrideMethod (c$, "getInsertions", 
+function () {
+var map =  new java.util.ArrayList ();
+var lastj = -1;
+var j = 0;
+var pos = this.start;
+var seqlen = this.sequence.length;
+while ((j < seqlen)) {
+if (jalview.util.Comparison.isGap (this.sequence[j])) {
+if (lastj == -1) {
+lastj = j;
+}} else {
+if (lastj != -1) {
+map.add ( Clazz_newIntArray (-1, [lastj, j - 1]));
+lastj = -1;
+}}j++;
+}
+if (lastj != -1) {
+map.add ( Clazz_newIntArray (-1, [lastj, j - 1]));
+lastj = -1;
+}return map;
+});
+Clazz_overrideMethod (c$, "deleteChars", 
+function (i, j) {
+var newstart = this.start;
+var newend = this.end;
+if (i >= this.sequence.length || i < 0) {
+return;
+}var tmp = jalview.util.StringUtils.deleteChars (this.sequence, i, j);
+var createNewDs = false;
+var eindex = -1;
+var sindex = -1;
+var ecalc = false;
+var scalc = false;
+for (var s = i; s < j; s++) {
+if (jalview.schemes.ResidueProperties.aaIndex[this.sequence[s].charCodeAt (0)] != 23) {
+if (createNewDs) {
+newend--;
+} else {
+if (!scalc) {
+sindex = this.findIndex (this.start) - 1;
+scalc = true;
+}if (sindex == s) {
+newstart = this.findPosition (j);
+break;
+} else {
+if (!ecalc) {
+eindex = this.findIndex (this.end) - 1;
+ecalc = true;
+}if (eindex < j) {
+newend = this.findPosition (i - 1);
+break;
+} else {
+createNewDs = true;
+newend--;
+}}}}}
+if (createNewDs && this.datasetSequence != null) {
+var ds =  new jalview.datamodel.Sequence (this.datasetSequence);
+ds.deleteChars (i, j);
+this.datasetSequence = ds;
+}this.start = newstart;
+this.end = newend;
+this.sequence = tmp;
+}, "~N,~N");
+Clazz_defineMethod (c$, "insertCharAt", 
+function (i, length, c) {
+var tmp =  Clazz_newCharArray (this.sequence.length + length, '\0');
+if (i >= this.sequence.length) {
+System.arraycopy (this.sequence, 0, tmp, 0, this.sequence.length);
+i = this.sequence.length;
+} else {
+System.arraycopy (this.sequence, 0, tmp, 0, i);
+}var index = i;
+while (length > 0) {
+tmp[index++] = c;
+length--;
+}
+if (i < this.sequence.length) {
+System.arraycopy (this.sequence, i, tmp, index, this.sequence.length - i);
+}this.sequence = tmp;
+}, "~N,~N,~S");
+Clazz_defineMethod (c$, "insertCharAt", 
+function (i, c) {
+this.insertCharAt (i, 1, c);
+}, "~N,~S");
+Clazz_overrideMethod (c$, "getVamsasId", 
+function () {
+return this.vamsasId;
+});
+Clazz_overrideMethod (c$, "setVamsasId", 
+function (id) {
+this.vamsasId = id;
+}, "~S");
+Clazz_defineMethod (c$, "setDBRef", 
+function (dbref) {
+this.dbrefs = dbref;
+}, "~A");
+Clazz_defineMethod (c$, "getDBRef", 
+function () {
+if (this.dbrefs == null && this.datasetSequence != null && this !== this.datasetSequence) {
+return this.datasetSequence.getDBRef ();
+}return this.dbrefs;
+});
+Clazz_overrideMethod (c$, "addDBRef", 
+function (entry) {
+if (this.dbrefs == null) {
+this.dbrefs =  new Array (0);
+}var i;
+var iSize = this.dbrefs.length;
+for (i = 0; i < iSize; i++) {
+if (this.dbrefs[i].equalRef (entry)) {
+if (entry.getMap () != null) {
+if (this.dbrefs[i].getMap () == null) {
+this.dbrefs[i] = entry;
+}}return;
+}}
+var temp =  new Array (iSize + 1);
+System.arraycopy (this.dbrefs, 0, temp, 0, iSize);
+temp[temp.length - 1] = entry;
+this.dbrefs = temp;
+}, "jalview.datamodel.DBRefEntry");
+Clazz_defineMethod (c$, "setDatasetSequence", 
+function (seq) {
+this.datasetSequence = seq;
+}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "getDatasetSequence", 
+function () {
+return this.datasetSequence;
+});
+Clazz_defineMethod (c$, "getAnnotation", 
+function () {
+return this.annotation == null ? null : this.annotation.toArray ( new Array (this.annotation.size ()));
+});
+Clazz_overrideMethod (c$, "hasAnnotation", 
+function (ann) {
+return this.annotation == null ? false : this.annotation.contains (ann);
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz_defineMethod (c$, "addAlignmentAnnotation", 
+function (annotation) {
+if (this.annotation == null) {
+this.annotation =  new java.util.Vector ();
+}if (!this.annotation.contains (annotation)) {
+this.annotation.addElement (annotation);
+}annotation.setSequenceRef (this);
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz_overrideMethod (c$, "removeAlignmentAnnotation", 
+function (annotation) {
+if (this.annotation != null) {
+this.annotation.removeElement (annotation);
+if (this.annotation.size () == 0) {
+this.annotation = null;
+}}}, "jalview.datamodel.AlignmentAnnotation");
+Clazz_defineMethod (c$, "isValidDatasetSequence", 
+ function () {
+if (this.datasetSequence != null) {
+return false;
+}for (var i = 0; i < this.sequence.length; i++) {
+if (jalview.util.Comparison.isGap (this.sequence[i])) {
+return false;
+}}
+return true;
+});
+Clazz_overrideMethod (c$, "deriveSequence", 
+function () {
+var seq =  new jalview.datamodel.Sequence (this);
+if (this.datasetSequence != null) {
+seq.setDatasetSequence (this.datasetSequence);
+} else {
+if (this.isValidDatasetSequence ()) {
+seq.setDatasetSequence (this);
+} else {
+var ds = seq;
+ds.setSequence (jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars,  String.instantialize (this.sequence)));
+this.setDatasetSequence (ds);
+ds.setSequenceFeatures (this.getSequenceFeatures ());
+seq = this;
+}}return seq;
+});
+Clazz_overrideMethod (c$, "createDatasetSequence", 
+function () {
+if (this.datasetSequence == null) {
+this.datasetSequence =  new jalview.datamodel.Sequence (this.getName (), jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, this.getSequenceAsString ()), this.getStart (), this.getEnd ());
+this.datasetSequence.setSequenceFeatures (this.getSequenceFeatures ());
+this.datasetSequence.setDescription (this.getDescription ());
+this.setSequenceFeatures (null);
+this.datasetSequence.setDBRef (this.getDBRef ());
+this.setDBRef (null);
+this.datasetSequence.setPDBId (this.getPDBId ());
+this.setPDBId (null);
+this.datasetSequence.updatePDBIds ();
+if (this.annotation != null) {
+for (var aa, $aa = this.annotation.iterator (); $aa.hasNext () && ((aa = $aa.next ()) || true);) {
+var _aa =  new jalview.datamodel.AlignmentAnnotation (aa);
+_aa.sequenceRef = this.datasetSequence;
+_aa.adjustForAlignment ();
+this.datasetSequence.addAlignmentAnnotation (_aa);
+}
+}}return this.datasetSequence;
+});
+Clazz_overrideMethod (c$, "setAlignmentAnnotation", 
+function (annotations) {
+if (this.annotation != null) {
+this.annotation.removeAllElements ();
+}if (annotations != null) {
+for (var i = 0; i < annotations.length; i++) {
+if (annotations[i] != null) {
+this.addAlignmentAnnotation (annotations[i]);
+}}
+}}, "~A");
+Clazz_defineMethod (c$, "getAnnotation", 
+function (label) {
+if (this.annotation == null || this.annotation.size () == 0) {
+return null;
+}var subset =  new java.util.Vector ();
+var e = this.annotation.elements ();
+while (e.hasMoreElements ()) {
+var ann = e.nextElement ();
+if (ann.label != null && ann.label.equals (label)) {
+subset.addElement (ann);
+}}
+if (subset.size () == 0) {
+return null;
+}var anns =  new Array (subset.size ());
+var i = 0;
+e = subset.elements ();
+while (e.hasMoreElements ()) {
+anns[i++] = e.nextElement ();
+}
+subset.removeAllElements ();
+return anns;
+}, "~S");
+Clazz_defineMethod (c$, "updatePDBIds", 
+function () {
+if (this.datasetSequence != null) {
+return this.datasetSequence.updatePDBIds ();
+}if (this.dbrefs == null || this.dbrefs.length == 0) {
+return false;
+}var newpdb =  new java.util.Vector ();
+for (var i = 0; i < this.dbrefs.length; i++) {
+if (jalview.datamodel.DBRefSource.PDB.equals (this.dbrefs[i].getSource ())) {
+var pdbe =  new jalview.datamodel.PDBEntry ();
+pdbe.setId (this.dbrefs[i].getAccessionId ());
+if (this.pdbIds == null || this.pdbIds.size () == 0) {
+newpdb.addElement (pdbe);
+} else {
+var en = this.pdbIds.elements ();
+var matched = false;
+while (!matched && en.hasMoreElements ()) {
+var anentry = en.nextElement ();
+if (anentry.getId ().equals (pdbe.getId ())) {
+matched = true;
+}}
+if (!matched) {
+newpdb.addElement (pdbe);
+}}}}
+if (newpdb.size () > 0) {
+var en = newpdb.elements ();
+while (en.hasMoreElements ()) {
+this.addPDBId (en.nextElement ());
+}
+return true;
+}return false;
+});
+Clazz_defineMethod (c$, "transferAnnotation", 
+function (entry, mp) {
+if (this.datasetSequence != null) {
+this.datasetSequence.transferAnnotation (entry, mp);
+return;
+}if (entry.getDatasetSequence () != null) {
+this.transferAnnotation (entry.getDatasetSequence (), mp);
+return;
+}if (entry.getSequenceFeatures () != null) {
+var sfs = entry.getSequenceFeatures ();
+for (var si = 0; si < sfs.length; si++) {
+var sf = (mp != null) ? mp.locateFeature (sfs[si]) :  Clazz_newArray (-1, [ new jalview.datamodel.SequenceFeature (sfs[si])]);
+if (sf != null && sf.length > 0) {
+for (var sfi = 0; sfi < sf.length; sfi++) {
+this.addSequenceFeature (sf[sfi]);
+}
+}}
+}if (entry.getPDBId () != null) {
+var e = entry.getPDBId ().elements ();
+while (e.hasMoreElements ()) {
+var pdb = e.nextElement ();
+this.addPDBId (pdb);
+}
+}var entryRefs = entry.getDBRef ();
+if (entryRefs != null) {
+for (var r = 0; r < entryRefs.length; r++) {
+var newref =  new jalview.datamodel.DBRefEntry (entryRefs[r]);
+if (newref.getMap () != null && mp != null) {
+}this.addDBRef (newref);
+}
+}}, "jalview.datamodel.SequenceI,jalview.datamodel.Mapping");
+Clazz_overrideMethod (c$, "getIndex", 
+function () {
+return this.index;
+});
+Clazz_overrideMethod (c$, "setIndex", 
+function (value) {
+this.index = value;
+}, "~N");
+Clazz_overrideMethod (c$, "setRNA", 
+function (r) {
+this.rna = r;
+}, "jalview.jsdev.api.VarnaRNA");
+Clazz_overrideMethod (c$, "getRNA", 
+function () {
+return this.rna;
+});
+Clazz_overrideMethod (c$, "getAlignmentAnnotations", 
+function (calcId, label) {
+var result =  new java.util.ArrayList ();
+if (this.annotation != null) {
+for (var ann, $ann = this.annotation.iterator (); $ann.hasNext () && ((ann = $ann.next ()) || true);) {
+if (ann.calcId != null && ann.calcId.equals (calcId) && ann.label != null && ann.label.equals (label)) {
+result.add (ann);
+}}
+}return result;
+}, "~S,~S");
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["jalview.datamodel.ASequenceI"], "jalview.datamodel.ASequence", null, function () {
+c$ = Clazz_declareType (jalview.datamodel, "ASequence", null, jalview.datamodel.ASequenceI);
+});
+Clazz_declarePackage ("jalview.jsdev");
+Clazz_load (null, "jalview.jsdev.RegExp", ["com.stevesoft.pat.Regex"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.rg = null;
+Clazz_instantialize (this, arguments);
+}, jalview.jsdev, "RegExp");
+c$.newRegex = Clazz_defineMethod (c$, "newRegex", 
+function (params) {
+return  new com.stevesoft.pat.Regex (params.length < 1 ? null : params[0], params.length < 2 ? "" : params[1]);
+}, "~A");
+c$.perlCode = Clazz_defineMethod (c$, "perlCode", 
+function (s) {
+return com.stevesoft.pat.Regex.perlCode (s);
+}, "~S");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.RegRes", "$.UniValidator", "jalview.jsdev.api.RegExpInterface", "com.stevesoft.pat.NoPattern", "$.Pthings", "$.patInt", "java.util.Hashtable"], ["com.stevesoft.pat.UnicodeW", "$.UnicodeCurrency", "$.UnicodeAlpha", "$.UnicodeUpper", "$.NUnicodeCurrency", "$.NUnicodeW", "$.NUnicodeAlpha", "$.UnicodeMath", "$.UnicodeWhite", "$.UnicodeDigit", "$.NUnicodeMath", "$.Regex", "$.NUnicodeDigit", "$.NUnicodeWhite", "$.NUnicodePunct", "$.UnicodePunct", "$.UnicodeLower"], ["com.stevesoft.pat.Any", "$.BackG", "$.BackMatch", "$.Backup", "$.Boundary", "$.Bracket", "$.CaseMgr", "$.Ctrl", "$.Custom", "$.CustomEndpoint", "$.DotMulti", "$.End", "$.FastMulti", "$.Group", "$.MessageManager", "$.Multi", "$.NullPattern", "$.Or", "$.OrMark", "$.Prop", "$.Range", "$.RegOpt", "$.RegSyntax", "$.RegSyntaxError", "$.ReplaceRule", "$.Replacer", "$.Rthings", "$.Skip", "$.Skipped", "$.Start", "$.StrPos", "$.lookAhead", "$.oneChar", "$.parsePerl", "$.patInf", "com.stevesoft.pat.wrap.StringWrap", "java.lang.NullPointerException", "$.StringBuffer", "java.util.BitSet"], function () {
+c$ = Clazz_declareType (com.stevesoft.pat, "UnicodePunct", com.stevesoft.pat.UniValidator);
+Clazz_overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && com.stevesoft.pat.Prop.isPunct (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz_declareType (com.stevesoft.pat, "UnicodeWhite", com.stevesoft.pat.UniValidator);
+Clazz_overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && com.stevesoft.pat.Prop.isWhite (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz_declareType (com.stevesoft.pat, "NUnicodePunct", com.stevesoft.pat.UniValidator);
+Clazz_overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && !com.stevesoft.pat.Prop.isPunct (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz_declareType (com.stevesoft.pat, "NUnicodeWhite", com.stevesoft.pat.UniValidator);
+Clazz_overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && !com.stevesoft.pat.Prop.isWhite (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz_declareType (com.stevesoft.pat, "UnicodeW", com.stevesoft.pat.UniValidator);
+Clazz_overrideMethod (c$, "validate", 
+function (s, from, to) {
+if (from >= s.length ()) {
+return -1;
+}var c = s.charAt (from);
+return (com.stevesoft.pat.Prop.isAlphabetic (c) || com.stevesoft.pat.Prop.isDecimalDigit (c) || c == '_') ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz_declareType (com.stevesoft.pat, "NUnicodeW", com.stevesoft.pat.UniValidator);
+Clazz_overrideMethod (c$, "validate", 
+function (s, from, to) {
+if (from >= s.length ()) {
+return -1;
+}var c = s.charAt (from);
+return !(com.stevesoft.pat.Prop.isAlphabetic (c) || com.stevesoft.pat.Prop.isDecimalDigit (c) || c == '_') ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz_declareType (com.stevesoft.pat, "UnicodeDigit", com.stevesoft.pat.UniValidator);
+Clazz_overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && com.stevesoft.pat.Prop.isDecimalDigit (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz_declareType (com.stevesoft.pat, "NUnicodeDigit", com.stevesoft.pat.UniValidator);
+Clazz_overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && !com.stevesoft.pat.Prop.isDecimalDigit (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz_declareType (com.stevesoft.pat, "UnicodeMath", com.stevesoft.pat.UniValidator);
+Clazz_overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && com.stevesoft.pat.Prop.isMath (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz_declareType (com.stevesoft.pat, "NUnicodeMath", com.stevesoft.pat.UniValidator);
+Clazz_overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && !com.stevesoft.pat.Prop.isMath (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz_declareType (com.stevesoft.pat, "UnicodeCurrency", com.stevesoft.pat.UniValidator);
+Clazz_overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && com.stevesoft.pat.Prop.isCurrency (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz_declareType (com.stevesoft.pat, "NUnicodeCurrency", com.stevesoft.pat.UniValidator);
+Clazz_overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && !com.stevesoft.pat.Prop.isCurrency (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz_declareType (com.stevesoft.pat, "UnicodeAlpha", com.stevesoft.pat.UniValidator);
+Clazz_overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && com.stevesoft.pat.Prop.isAlphabetic (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz_declareType (com.stevesoft.pat, "NUnicodeAlpha", com.stevesoft.pat.UniValidator);
+Clazz_overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && !com.stevesoft.pat.Prop.isAlphabetic (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$ = Clazz_declareType (com.stevesoft.pat, "UnicodeUpper", com.stevesoft.pat.UniValidator);
+Clazz_overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && this.isUpper (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+Clazz_defineMethod (c$, "isUpper", 
+function (c) {
+return c == com.stevesoft.pat.CaseMgr.toUpperCaseC (c) && c != com.stevesoft.pat.CaseMgr.toLowerCaseC (c);
+}, "~S");
+c$ = Clazz_declareType (com.stevesoft.pat, "UnicodeLower", com.stevesoft.pat.UniValidator);
+Clazz_overrideMethod (c$, "validate", 
+function (s, from, to) {
+return from < s.length () && this.isLower (s.charAt (from)) ? to : -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+Clazz_defineMethod (c$, "isLower", 
+function (c) {
+return c != com.stevesoft.pat.CaseMgr.toUpperCaseC (c) && c == com.stevesoft.pat.CaseMgr.toLowerCaseC (c);
+}, "~S");
+c$ = Clazz_decorateAsClass (function () {
+this.thePattern = null;
+this.minMatch = null;
+this.rep = null;
+this.dontMatchInQuotes = false;
+this.ignoreCase = false;
+this.repr = null;
+this.esc = '\\';
+this.pt = null;
+this.gFlags = null;
+this.gFlagto = 0;
+this.gFlag = false;
+this.sFlag = false;
+this.mFlag = false;
+this.p = null;
+this.or = null;
+this.skipper = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Regex", com.stevesoft.pat.RegRes, [jalview.jsdev.api.RegExpInterface, Cloneable]);
+Clazz_prepareFields (c$, function () {
+this.thePattern = com.stevesoft.pat.Regex.none;
+this.minMatch =  new com.stevesoft.pat.patInt (0);
+this.pt =  new com.stevesoft.pat.Pthings ();
+});
+Clazz_makeConstructor (c$, 
+function (s, strRp) {
+Clazz_superConstructor (this, com.stevesoft.pat.Regex, []);
+try {
+if (s != null) this.compile (s);
+if (strRp.length > 0) this.rep = com.stevesoft.pat.ReplaceRule.perlCode (strRp);
+} catch (rs) {
+if (Clazz_exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+} else {
+throw rs;
+}
+}
+}, "~S,~S");
+Clazz_overrideMethod (c$, "clone", 
+function () {
+return  new com.stevesoft.pat.Regex (null, "").cloneFrom (this);
+});
+Clazz_defineMethod (c$, "cloneFrom", 
+function (r) {
+this.copyOutOf (r);
+this.dontMatchInQuotes = r.dontMatchInQuotes;
+this.esc = r.esc;
+this.ignoreCase = r.ignoreCase;
+this.gFlag = r.gFlag;
+if (r.rep == null) {
+this.rep = null;
+} else {
+this.rep = r.rep.clone ();
+}this.thePattern = r.thePattern.clone ( new java.util.Hashtable ());
+this.minMatch = r.minMatch;
+this.skipper = r.skipper;
+return this;
+}, "com.stevesoft.pat.Regex");
+Clazz_defineMethod (c$, "setDontMatchInQuotes", 
+function (b) {
+this.dontMatchInQuotes = b;
+}, "~B");
+Clazz_defineMethod (c$, "getDontMatchInQuotes", 
+function () {
+return this.dontMatchInQuotes;
+});
+Clazz_overrideMethod (c$, "setIgnoreCase", 
+function (b) {
+this.ignoreCase = b;
+}, "~B");
+Clazz_defineMethod (c$, "getIgnoreCase", 
+function () {
+return this.ignoreCase;
+});
+c$.setDefaultMFlag = Clazz_defineMethod (c$, "setDefaultMFlag", 
+function (mFlag) {
+com.stevesoft.pat.Regex.defaultMFlag = mFlag;
+}, "~B");
+c$.getDefaultMFlag = Clazz_defineMethod (c$, "getDefaultMFlag", 
+function () {
+return com.stevesoft.pat.Regex.defaultMFlag;
+});
+Clazz_defineMethod (c$, "setReplaceRuleStr", 
+function (rp) {
+this.rep = com.stevesoft.pat.ReplaceRule.perlCode (rp);
+this.repr = null;
+}, "~S");
+Clazz_defineMethod (c$, "setReplaceRule", 
+function (rp) {
+this.rep = rp;
+}, "com.stevesoft.pat.ReplaceRule");
+c$.isDefined = Clazz_defineMethod (c$, "isDefined", 
+function (nm) {
+return com.stevesoft.pat.Regex.validators.get (nm) != null;
+}, "~S");
+c$.undefine = Clazz_defineMethod (c$, "undefine", 
+function (nm) {
+com.stevesoft.pat.Regex.validators.remove (nm);
+}, "~S");
+c$.defineV = Clazz_defineMethod (c$, "defineV", 
+function (nm, pat, v) {
+v.pattern = pat;
+com.stevesoft.pat.Regex.validators.put (nm, v);
+}, "~S,~S,com.stevesoft.pat.Validator");
+c$.define = Clazz_defineMethod (c$, "define", 
+function (nm, pat) {
+com.stevesoft.pat.Regex.validators.put (nm, pat);
+}, "~S,~S");
+Clazz_defineMethod (c$, "getReplaceRule", 
+function () {
+return this.rep;
+});
+Clazz_defineMethod (c$, "_getReplacer", 
+function () {
+return this.repr == null ? this.repr =  new com.stevesoft.pat.Replacer () : this.repr;
+});
+Clazz_defineMethod (c$, "getReplacer", 
+function () {
+if (this.repr == null) {
+this.repr =  new com.stevesoft.pat.Replacer ();
+}this.repr.rh.me = this;
+this.repr.rh.prev = null;
+return this.repr;
+});
+Clazz_defineMethod (c$, "replaceFirst", 
+function (s) {
+return this._getReplacer ().replaceFirstRegion (s, this, 0, s.length).toString ();
+}, "~S");
+Clazz_defineMethod (c$, "replaceFirstFrom", 
+function (s, pos) {
+return this._getReplacer ().replaceFirstRegion (s, this, pos, s.length).toString ();
+}, "~S,~N");
+Clazz_defineMethod (c$, "replaceFirstRegion", 
+function (s, start, end) {
+return this._getReplacer ().replaceFirstRegion (s, this, start, end).toString ();
+}, "~S,~N,~N");
+Clazz_overrideMethod (c$, "replaceAll", 
+function (s) {
+return this._getReplacer ().replaceAllRegion (s, this, 0, s.length).toString ();
+}, "~S");
+Clazz_defineMethod (c$, "replaceAllLike", 
+function (s) {
+return this._getReplacer ().replaceAllRegion (s, this, 0, s.length ());
+}, "com.stevesoft.pat.StringLike");
+Clazz_defineMethod (c$, "replaceAllFrom", 
+function (s, pos) {
+return this._getReplacer ().replaceAllRegion (s, this, pos, s.length).toString ();
+}, "~S,~N");
+Clazz_defineMethod (c$, "replaceAllRegion", 
+function (s, start, end) {
+return this._getReplacer ().replaceAllRegion (s, this, start, end).toString ();
+}, "~S,~N,~N");
+Clazz_defineMethod (c$, "compile", 
+function (prepat) {
+var postpat = com.stevesoft.pat.parsePerl.codify (prepat, true);
+var pat = postpat == null ? prepat : postpat;
+this.minMatch = null;
+this.ignoreCase = false;
+this.dontMatchInQuotes = false;
+var mk =  new com.stevesoft.pat.Rthings (this);
+var offset = mk.val;
+var newpat = pat;
+this.thePattern = com.stevesoft.pat.Regex.none;
+this.p = null;
+this.or = null;
+this.minMatch =  new com.stevesoft.pat.patInt (0);
+var sp =  new com.stevesoft.pat.StrPos (pat, 0);
+if (sp.incMatch ("(?e=")) {
+var newEsc = sp.c;
+sp.inc ();
+if (sp.match (')')) {
+newpat = com.stevesoft.pat.Regex.reEscape (pat.substring (6), newEsc, '\\');
+}} else if (this.esc != '\\') {
+newpat = com.stevesoft.pat.Regex.reEscape (pat, this.esc, '\\');
+}this.thePattern = this._compile (newpat, mk);
+this.numSubs_ = mk.val - offset;
+mk.set (this);
+}, "~S");
+Clazz_defineMethod (c$, "equals", 
+function (o) {
+if (Clazz_instanceOf (o, com.stevesoft.pat.Regex)) {
+if (this.toString ().equals (o.toString ())) {
+return Clazz_superCall (this, com.stevesoft.pat.Regex, "equals", [o]);
+} else {
+return false;
+}} else {
+return Clazz_superCall (this, com.stevesoft.pat.Regex, "equals", [o]);
+}}, "~O");
+Clazz_defineMethod (c$, "prep", 
+function (s) {
+this.pt.lastPos = this.matchedTo ();
+if (this.pt.lastPos < 0) {
+this.pt.lastPos = 0;
+}if ((s == null ? null : s.unwrap ()) !== (this.src == null ? null : s.unwrap ())) {
+this.pt.lastPos = 0;
+}this.src = s;
+this.pt.dotDoesntMatchCR = com.stevesoft.pat.Regex.dotDoesntMatchCR && (!this.sFlag);
+this.pt.mFlag = ( new Boolean (this.mFlag | com.stevesoft.pat.Regex.defaultMFlag).valueOf ());
+this.pt.ignoreCase = this.ignoreCase;
+this.pt.no_check = false;
+if (this.pt.marks != null) {
+for (var i = 0; i < this.pt.marks.length; i++) {
+this.pt.marks[i] = -1;
+}
+}this.pt.marks = null;
+this.pt.nMarks = this.numSubs_;
+this.pt.src = s;
+if (this.dontMatchInQuotes) {
+com.stevesoft.pat.Regex.setCbits (s, this.pt);
+} else {
+this.pt.cbits = null;
+}return this.pt;
+}, "com.stevesoft.pat.StringLike");
+Clazz_defineMethod (c$, "matchAt", 
+function (s, start_pos) {
+return this._search (s, start_pos, start_pos);
+}, "~S,~N");
+Clazz_defineMethod (c$, "matchAtLike", 
+function (s, start_pos) {
+return this._searchLike (s, start_pos, start_pos);
+}, "com.stevesoft.pat.StringLike,~N");
+Clazz_overrideMethod (c$, "search", 
+function (s) {
+if (s == null) {
+throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_given_to_regex_search"));
+}return this._search (s, 0, s.length);
+}, "~S");
+Clazz_defineMethod (c$, "searchLike", 
+function (sl) {
+if (sl == null) {
+throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_like_given_to_regex_search"));
+}return this._searchLike (sl, 0, sl.length ());
+}, "com.stevesoft.pat.StringLike");
+Clazz_defineMethod (c$, "reverseSearch", 
+function (s) {
+if (s == null) {
+throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_given_to_regex_reverse_search"));
+}return this._reverseSearch (s, 0, s.length);
+}, "~S");
+Clazz_defineMethod (c$, "reverseSearchLike", 
+function (sl) {
+if (sl == null) {
+throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_like_given_to_regex_reverse_search"));
+}return this._reverseSearchLike (sl, 0, sl.length ());
+}, "com.stevesoft.pat.StringLike");
+Clazz_overrideMethod (c$, "searchFrom", 
+function (s, start) {
+if (s == null) {
+throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_like_given_to_regex_search_from"));
+}return this._search (s, start, s.length);
+}, "~S,~N");
+Clazz_defineMethod (c$, "searchFromLike", 
+function (s, start) {
+if (s == null) {
+throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_like_given_to_regex_search_from"));
+}return this._searchLike (s, start, s.length ());
+}, "com.stevesoft.pat.StringLike,~N");
+Clazz_defineMethod (c$, "searchRegion", 
+function (s, start, end) {
+if (s == null) {
+throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.null_string_like_given_to_regex_search_region"));
+}return this._search (s, start, end);
+}, "~S,~N,~N");
+Clazz_defineMethod (c$, "setGFlag", 
+function (b) {
+this.gFlag = b;
+}, "~B");
+Clazz_defineMethod (c$, "getGFlag", 
+function () {
+return this.gFlag;
+});
+Clazz_defineMethod (c$, "getSFlag", 
+function () {
+return this.sFlag;
+});
+Clazz_defineMethod (c$, "getMFlag", 
+function () {
+return this.mFlag;
+});
+Clazz_defineMethod (c$, "_search", 
+function (s, start, end) {
+return this._searchLike ( new com.stevesoft.pat.wrap.StringWrap (s), start, end);
+}, "~S,~N,~N");
+Clazz_defineMethod (c$, "_searchLike", 
+function (s, start, end) {
+if (this.gFlag && this.gFlagto > 0 && this.gFlags != null && s.unwrap () === this.gFlags.unwrap ()) {
+start = this.gFlagto;
+}this.gFlags = null;
+var pt = this.prep (s);
+var up = (this.minMatch == null ? end : end - this.minMatch.i);
+if (up < start && end >= start) {
+up = start;
+}if (this.skipper == null) {
+for (var i = start; i <= up; i++) {
+this.charsMatched_ = this.thePattern.matchAt (s, i, pt);
+if (this.charsMatched_ >= 0) {
+this.matchFrom_ = this.thePattern.mfrom;
+this.marks = pt.marks;
+this.gFlagto = this.matchFrom_ + this.charsMatched_;
+this.gFlags = s;
+return this.didMatch_ = true;
+}}
+} else {
+pt.no_check = true;
+for (var i = start; i <= up; i++) {
+i = this.skipper.find (this.src, i, up);
+if (i < 0) {
+this.charsMatched_ = this.matchFrom_ = -1;
+return this.didMatch_ = false;
+}this.charsMatched_ = this.thePattern.matchAt (s, i, pt);
+if (this.charsMatched_ >= 0) {
+this.matchFrom_ = this.thePattern.mfrom;
+this.marks = pt.marks;
+this.gFlagto = this.matchFrom_ + this.charsMatched_;
+this.gFlags = s;
+return this.didMatch_ = true;
+}}
+}return this.didMatch_ = false;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+Clazz_defineMethod (c$, "_reverseSearch", 
+function (s, start, end) {
+return this._reverseSearchLike ( new com.stevesoft.pat.wrap.StringWrap (s), start, end);
+}, "~S,~N,~N");
+Clazz_defineMethod (c$, "_reverseSearchLike", 
+function (s, start, end) {
+if (this.gFlag && this.gFlagto > 0 && s.unwrap () === this.gFlags.unwrap ()) {
+end = this.gFlagto;
+}this.gFlags = null;
+var pt = this.prep (s);
+for (var i = end; i >= start; i--) {
+this.charsMatched_ = this.thePattern.matchAt (s, i, pt);
+if (this.charsMatched_ >= 0) {
+this.matchFrom_ = this.thePattern.mfrom;
+this.marks = pt.marks;
+this.gFlagto = this.matchFrom_ - 1;
+this.gFlags = s;
+return this.didMatch_ = true;
+}}
+return this.didMatch_ = false;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$.setCbits = Clazz_defineMethod (c$, "setCbits", 
+function (s, pt) {
+if (s === com.stevesoft.pat.Regex.lasts) {
+pt.cbits = com.stevesoft.pat.Regex.lastbs;
+return;
+}var bs =  new java.util.BitSet (s.length ());
+var qc = ' ';
+var setBit = false;
+for (var i = 0; i < s.length (); i++) {
+if (setBit) {
+bs.set (i);
+}var c = s.charAt (i);
+if (!setBit && c == '"') {
+qc = c;
+setBit = true;
+bs.set (i);
+} else if (!setBit && c == '\'') {
+qc = c;
+setBit = true;
+bs.set (i);
+} else if (setBit && c == qc) {
+setBit = false;
+} else if (setBit && c == '\\' && i + 1 < s.length ()) {
+i++;
+if (setBit) {
+bs.set (i);
+}}}
+pt.cbits = com.stevesoft.pat.Regex.lastbs = bs;
+com.stevesoft.pat.Regex.lasts = s;
+}, "com.stevesoft.pat.StringLike,com.stevesoft.pat.Pthings");
+Clazz_defineMethod (c$, "add", 
+function (p2) {
+if (this.p == null) {
+this.p = p2;
+} else {
+this.p.add (p2);
+p2 = this.p;
+}}, "com.stevesoft.pat.Pattern");
+Clazz_defineMethod (c$, "compileSP", 
+function (sp, mk) {
+if (sp.match ('[')) {
+sp.inc ();
+this.add (this.matchBracket (sp));
+} else if (sp.match ('|')) {
+if (this.or == null) {
+this.or =  new com.stevesoft.pat.Or ();
+}if (this.p == null) {
+this.p =  new com.stevesoft.pat.NullPattern ();
+}this.or.addOr (this.p);
+this.p = null;
+} else if (sp.incMatch ("(?<")) {
+var i = sp.getPatInt ();
+if (i == null) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("No int after (?<");
+}this.add ( new com.stevesoft.pat.Backup (i.intValue ()));
+if (!sp.match (')')) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("No ) after (?<");
+}} else if (sp.incMatch ("(?>")) {
+var i = sp.getPatInt ();
+if (i == null) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("No int after (?>");
+}this.add ( new com.stevesoft.pat.Backup (-i.intValue ()));
+if (!sp.match (')')) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("No ) after (?<");
+}} else if (sp.incMatch ("(?@")) {
+var op = sp.c;
+sp.inc ();
+var cl = sp.c;
+sp.inc ();
+if (!sp.match (')')) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("(?@ does not have closing paren");
+}this.add ( new com.stevesoft.pat.Group (op, cl));
+} else if (sp.incMatch ("(?#")) {
+while (!sp.match (')')) {
+sp.inc ();
+}
+} else if (sp.dontMatch && sp.c == 'w') {
+var b =  new com.stevesoft.pat.Bracket (false);
+b.addOr ( new com.stevesoft.pat.Range ('a', 'z'));
+b.addOr ( new com.stevesoft.pat.Range ('A', 'Z'));
+b.addOr ( new com.stevesoft.pat.Range ('0', '9'));
+b.addOr ( new com.stevesoft.pat.oneChar ('_'));
+this.add (b);
+} else if (sp.dontMatch && sp.c == 'G') {
+this.add ( new com.stevesoft.pat.BackG ());
+} else if (sp.dontMatch && sp.c == 's') {
+var b =  new com.stevesoft.pat.Bracket (false);
+b.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (32)));
+b.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (8), String.fromCharCode (10)));
+b.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (13)));
+this.add (b);
+} else if (sp.dontMatch && sp.c == 'd') {
+var digit =  new com.stevesoft.pat.Range ('0', '9');
+digit.printBrackets = true;
+this.add (digit);
+} else if (sp.dontMatch && sp.c == 'W') {
+var b =  new com.stevesoft.pat.Bracket (true);
+b.addOr ( new com.stevesoft.pat.Range ('a', 'z'));
+b.addOr ( new com.stevesoft.pat.Range ('A', 'Z'));
+b.addOr ( new com.stevesoft.pat.Range ('0', '9'));
+b.addOr ( new com.stevesoft.pat.oneChar ('_'));
+this.add (b);
+} else if (sp.dontMatch && sp.c == 'S') {
+var b =  new com.stevesoft.pat.Bracket (true);
+b.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (32)));
+b.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (8), String.fromCharCode (10)));
+b.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (13)));
+this.add (b);
+} else if (sp.dontMatch && sp.c == 'D') {
+var b =  new com.stevesoft.pat.Bracket (true);
+b.addOr ( new com.stevesoft.pat.Range ('0', '9'));
+this.add (b);
+} else if (sp.dontMatch && sp.c == 'B') {
+var r =  new com.stevesoft.pat.Regex (null, "");
+r._compile ("(?!\\b)", mk);
+this.add (r.thePattern);
+} else if (this.isOctalString (sp)) {
+var d = sp.c.charCodeAt (0) - 48;
+sp.inc ();
+d = 8 * d + sp.c.charCodeAt (0) - 48;
+var sp2 =  new com.stevesoft.pat.StrPos (sp);
+sp2.inc ();
+if (this.isOctalDigit (sp2, false)) {
+sp.inc ();
+d = 8 * d + sp.c.charCodeAt (0) - 48;
+}this.add ( new com.stevesoft.pat.oneChar (String.fromCharCode (d)));
+} else if (sp.dontMatch && sp.c >= '1' && sp.c <= '9') {
+var iv = sp.c.charCodeAt (0) - 48;
+var s2 =  new com.stevesoft.pat.StrPos (sp);
+s2.inc ();
+if (!s2.dontMatch && s2.c >= '0' && s2.c <= '9') {
+iv = 10 * iv + (s2.c.charCodeAt (0) - 48);
+sp.inc ();
+}this.add ( new com.stevesoft.pat.BackMatch (iv));
+} else if (sp.dontMatch && sp.c == 'b') {
+this.add ( new com.stevesoft.pat.Boundary ());
+} else if (sp.match ('\b')) {
+this.add ( new com.stevesoft.pat.Boundary ());
+} else if (sp.match ('$')) {
+this.add ( new com.stevesoft.pat.End (true));
+} else if (sp.dontMatch && sp.c == 'Z') {
+this.add ( new com.stevesoft.pat.End (false));
+} else if (sp.match ('.')) {
+this.add ( new com.stevesoft.pat.Any ());
+} else if (sp.incMatch ("(??")) {
+var sb =  new StringBuffer ();
+var sb2 =  new StringBuffer ();
+while (!sp.match (')') && !sp.match (':')) {
+sb.append (sp.c);
+sp.inc ();
+}
+if (sp.incMatch (":")) {
+while (!sp.match (')')) {
+sb2.append (sp.c);
+sp.inc ();
+}
+}var sbs = sb.toString ();
+if (Clazz_instanceOf (com.stevesoft.pat.Regex.validators.get (sbs), String)) {
+var pat = com.stevesoft.pat.Regex.validators.get (sbs);
+var r =  new com.stevesoft.pat.Regex (null, "");
+var rth =  new com.stevesoft.pat.Rthings (this);
+rth.noBackRefs = true;
+r._compile (pat, rth);
+this.add (r.thePattern);
+} else {
+var cm =  new com.stevesoft.pat.Custom (sb.toString ());
+if (cm.v != null) {
+var v2 = cm.v.arg (sb2.toString ());
+if (v2 != null) {
+v2.argsave = sb2.toString ();
+var p = cm.v.pattern;
+cm.v = v2;
+v2.pattern = p;
+}var r =  new com.stevesoft.pat.Regex (null, "");
+var rth =  new com.stevesoft.pat.Rthings (this);
+rth.noBackRefs = true;
+r._compile (cm.v.pattern, rth);
+cm.sub = r.thePattern;
+cm.sub.add ( new com.stevesoft.pat.CustomEndpoint (cm));
+cm.sub.setParent (cm);
+this.add (cm);
+}}} else if (sp.match ('(')) {
+mk.parenLevel++;
+var r =  new com.stevesoft.pat.Regex (null, "");
+sp.inc ();
+if (sp.incMatch ("?:")) {
+r.or =  new com.stevesoft.pat.Or ();
+} else if (sp.incMatch ("?=")) {
+r.or =  new com.stevesoft.pat.lookAhead (false);
+} else if (sp.incMatch ("?!")) {
+r.or =  new com.stevesoft.pat.lookAhead (true);
+} else if (sp.match ('?')) {
+sp.inc ();
+do {
+if (sp.c == 'i') {
+mk.ignoreCase = true;
+}if (sp.c == 'Q') {
+mk.dontMatchInQuotes = true;
+}if (sp.c == 'o') {
+mk.optimizeMe = true;
+}if (sp.c == 'g') {
+mk.gFlag = true;
+}if (sp.c == 's') {
+mk.sFlag = true;
+}if (sp.c == 'm') {
+mk.mFlag = true;
+}sp.inc ();
+} while (!sp.match (')') && !sp.$eos);
+r = null;
+mk.parenLevel--;
+if (sp.$eos) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Unclosed ()");
+}} else {
+r.or = mk.noBackRefs ?  new com.stevesoft.pat.Or () :  new com.stevesoft.pat.OrMark (mk.val++);
+}if (r != null) {
+this.add (r._compileSP (sp, mk));
+}} else if (sp.match ('^')) {
+this.add ( new com.stevesoft.pat.Start (true));
+} else if (sp.dontMatch && sp.c == 'A') {
+this.add ( new com.stevesoft.pat.Start (false));
+} else if (sp.match ('*')) {
+this.addMulti ( new com.stevesoft.pat.patInt (0),  new com.stevesoft.pat.patInf ());
+} else if (sp.match ('+')) {
+this.addMulti ( new com.stevesoft.pat.patInt (1),  new com.stevesoft.pat.patInf ());
+} else if (sp.match ('?')) {
+this.addMulti ( new com.stevesoft.pat.patInt (0),  new com.stevesoft.pat.patInt (1));
+} else if (sp.match ('{')) {
+var bad = false;
+var sp2 =  new com.stevesoft.pat.StrPos (sp);
+sp.inc ();
+var i1 = sp.getPatInt ();
+var i2 = null;
+if (sp.match ('}')) {
+i2 = i1;
+} else {
+if (!sp.match (',')) {
+bad = true;
+}sp.inc ();
+if (sp.match ('}')) {
+i2 =  new com.stevesoft.pat.patInf ();
+} else {
+i2 = sp.getPatInt ();
+}}if (i1 == null || i2 == null) {
+bad = true;
+}if (bad) {
+sp.dup (sp2);
+this.add ( new com.stevesoft.pat.oneChar (sp.c));
+} else {
+this.addMulti (i1, i2);
+}} else if (sp.escMatch ('x') && this.next2Hex (sp)) {
+sp.inc ();
+var d = this.getHexDigit (sp);
+sp.inc ();
+d = 16 * d + this.getHexDigit (sp);
+this.add ( new com.stevesoft.pat.oneChar (String.fromCharCode (d)));
+} else if (sp.escMatch ('c')) {
+sp.inc ();
+if (sp.c.charCodeAt (0) < com.stevesoft.pat.Ctrl.cmap.length) {
+this.add ( new com.stevesoft.pat.oneChar (com.stevesoft.pat.Ctrl.cmap[sp.c.charCodeAt (0)]));
+} else {
+this.add ( new com.stevesoft.pat.oneChar (sp.c));
+}} else if (sp.escMatch ('f')) {
+this.add ( new com.stevesoft.pat.oneChar (String.fromCharCode (12)));
+} else if (sp.escMatch ('a')) {
+this.add ( new com.stevesoft.pat.oneChar (String.fromCharCode (7)));
+} else if (sp.escMatch ('t')) {
+this.add ( new com.stevesoft.pat.oneChar ('\t'));
+} else if (sp.escMatch ('n')) {
+this.add ( new com.stevesoft.pat.oneChar ('\n'));
+} else if (sp.escMatch ('r')) {
+this.add ( new com.stevesoft.pat.oneChar ('\r'));
+} else if (sp.escMatch ('b')) {
+this.add ( new com.stevesoft.pat.oneChar ('\b'));
+} else if (sp.escMatch ('e')) {
+this.add ( new com.stevesoft.pat.oneChar (String.fromCharCode (27)));
+} else {
+this.add ( new com.stevesoft.pat.oneChar (sp.c));
+if (sp.match (')')) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Unmatched right paren in pattern");
+}}}, "com.stevesoft.pat.StrPos,com.stevesoft.pat.Rthings");
+Clazz_defineMethod (c$, "_compile", 
+ function (pat, mk) {
+this.minMatch = null;
+this.sFlag = this.mFlag = this.ignoreCase = this.gFlag = false;
+var sp =  new com.stevesoft.pat.StrPos (pat, 0);
+this.thePattern = this._compileSP (sp, mk);
+this.pt.marks = null;
+return this.thePattern;
+}, "~S,com.stevesoft.pat.Rthings");
+Clazz_defineMethod (c$, "_compileSP", 
+function (sp, mk) {
+while (!(sp.$eos || (this.or != null && sp.match (')')))) {
+this.compileSP (sp, mk);
+sp.inc ();
+}
+if (sp.match (')')) {
+mk.parenLevel--;
+} else if (sp.$eos && mk.parenLevel != 0) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Unclosed Parenthesis! lvl=" + mk.parenLevel);
+}if (this.or != null) {
+if (this.p == null) {
+this.p =  new com.stevesoft.pat.NullPattern ();
+}this.or.addOr (this.p);
+return this.or;
+}return this.p == null ?  new com.stevesoft.pat.NullPattern () : this.p;
+}, "com.stevesoft.pat.StrPos,com.stevesoft.pat.Rthings");
+Clazz_defineMethod (c$, "addMulti", 
+function (i1, i2) {
+var last;
+var last2;
+for (last = this.p; last != null && last.next != null; last = last.next) {
+;}
+if (last == null || last === this.p) {
+last2 = null;
+} else {
+for (last2 = this.p; last2.next !== last; last2 = last2.next) {
+;}
+}if (Clazz_instanceOf (last, com.stevesoft.pat.Multi) && i1.intValue () == 0 && i2.intValue () == 1) {
+(last).matchFewest = true;
+} else if (Clazz_instanceOf (last, com.stevesoft.pat.FastMulti) && i1.intValue () == 0 && i2.intValue () == 1) {
+(last).matchFewest = true;
+} else if (Clazz_instanceOf (last, com.stevesoft.pat.DotMulti) && i1.intValue () == 0 && i2.intValue () == 1) {
+(last).matchFewest = true;
+} else if (Clazz_instanceOf (last, com.stevesoft.pat.Multi) || Clazz_instanceOf (last, com.stevesoft.pat.DotMulti) || Clazz_instanceOf (last, com.stevesoft.pat.FastMulti)) {
+throw  new com.stevesoft.pat.RegSyntax ("Syntax error.");
+} else if (last2 == null) {
+this.p = com.stevesoft.pat.Regex.mkMulti (i1, i2, this.p);
+} else {
+last2.next = com.stevesoft.pat.Regex.mkMulti (i1, i2, last);
+}}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt");
+c$.mkMulti = Clazz_defineMethod (c$, "mkMulti", 
+function (lo, hi, p) {
+if (Clazz_instanceOf (p, com.stevesoft.pat.Any) && p.next == null) {
+return  new com.stevesoft.pat.DotMulti (lo, hi);
+}return com.stevesoft.pat.RegOpt.safe4fm (p) ?  new com.stevesoft.pat.FastMulti (lo, hi, p) :  new com.stevesoft.pat.Multi (lo, hi, p);
+}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");
+Clazz_defineMethod (c$, "matchBracket", 
+function (sp) {
+var ret;
+if (sp.match ('^')) {
+ret =  new com.stevesoft.pat.Bracket (true);
+sp.inc ();
+} else {
+ret =  new com.stevesoft.pat.Bracket (false);
+}if (sp.match (']')) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Unmatched []");
+}while (!sp.$eos && !sp.match (']')) {
+var s1 =  new com.stevesoft.pat.StrPos (sp);
+s1.inc ();
+var s1_ =  new com.stevesoft.pat.StrPos (s1);
+s1_.inc ();
+if (s1.match ('-') && !s1_.match (']')) {
+var s2 =  new com.stevesoft.pat.StrPos (s1);
+s2.inc ();
+if (!s2.$eos) {
+ret.addOr ( new com.stevesoft.pat.Range (sp.c, s2.c));
+}sp.inc ();
+sp.inc ();
+} else if (sp.escMatch ('Q')) {
+sp.inc ();
+while (!sp.escMatch ('E')) {
+ret.addOr ( new com.stevesoft.pat.oneChar (sp.c));
+sp.inc ();
+}
+} else if (sp.escMatch ('d')) {
+ret.addOr ( new com.stevesoft.pat.Range ('0', '9'));
+} else if (sp.escMatch ('s')) {
+ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (32)));
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (8), String.fromCharCode (10)));
+ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (13)));
+} else if (sp.escMatch ('w')) {
+ret.addOr ( new com.stevesoft.pat.Range ('a', 'z'));
+ret.addOr ( new com.stevesoft.pat.Range ('A', 'Z'));
+ret.addOr ( new com.stevesoft.pat.Range ('0', '9'));
+ret.addOr ( new com.stevesoft.pat.oneChar ('_'));
+} else if (sp.escMatch ('D')) {
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (0), String.fromCharCode (47)));
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (58), String.fromCharCode (65535)));
+} else if (sp.escMatch ('S')) {
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (0), String.fromCharCode (7)));
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (11), String.fromCharCode (12)));
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (14), String.fromCharCode (31)));
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (33), String.fromCharCode (65535)));
+} else if (sp.escMatch ('W')) {
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (0), String.fromCharCode (64)));
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (91), String.fromCharCode (94)));
+ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (96)));
+ret.addOr ( new com.stevesoft.pat.Range (String.fromCharCode (123), String.fromCharCode (65535)));
+} else if (sp.escMatch ('x') && this.next2Hex (sp)) {
+sp.inc ();
+var d = this.getHexDigit (sp);
+sp.inc ();
+d = 16 * d + this.getHexDigit (sp);
+ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (d)));
+} else if (sp.escMatch ('a')) {
+ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (7)));
+} else if (sp.escMatch ('f')) {
+ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (12)));
+} else if (sp.escMatch ('e')) {
+ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (27)));
+} else if (sp.escMatch ('n')) {
+ret.addOr ( new com.stevesoft.pat.oneChar ('\n'));
+} else if (sp.escMatch ('t')) {
+ret.addOr ( new com.stevesoft.pat.oneChar ('\t'));
+} else if (sp.escMatch ('r')) {
+ret.addOr ( new com.stevesoft.pat.oneChar ('\r'));
+} else if (sp.escMatch ('c')) {
+sp.inc ();
+if (sp.c.charCodeAt (0) < com.stevesoft.pat.Ctrl.cmap.length) {
+ret.addOr ( new com.stevesoft.pat.oneChar (com.stevesoft.pat.Ctrl.cmap[sp.c.charCodeAt (0)]));
+} else {
+ret.addOr ( new com.stevesoft.pat.oneChar (sp.c));
+}} else if (this.isOctalString (sp)) {
+var d = sp.c.charCodeAt (0) - 48;
+sp.inc ();
+d = 8 * d + sp.c.charCodeAt (0) - 48;
+var sp2 =  new com.stevesoft.pat.StrPos (sp);
+sp2.inc ();
+if (this.isOctalDigit (sp2, false)) {
+sp.inc ();
+d = 8 * d + sp.c.charCodeAt (0) - 48;
+}ret.addOr ( new com.stevesoft.pat.oneChar (String.fromCharCode (d)));
+} else {
+ret.addOr ( new com.stevesoft.pat.oneChar (sp.c));
+}sp.inc ();
+}
+return ret;
+}, "com.stevesoft.pat.StrPos");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+{
+var sb =  new StringBuffer ();
+if (this.esc != '\\') {
+sb.append ("(?e=");
+sb.append (this.esc);
+sb.append (")");
+}if (this.gFlag || this.mFlag || !com.stevesoft.pat.Regex.dotDoesntMatchCR || this.sFlag || this.ignoreCase || this.dontMatchInQuotes || this.optimized ()) {
+sb.append ("(?");
+if (this.ignoreCase) {
+sb.append ("i");
+}if (this.mFlag) {
+sb.append ("m");
+}if (this.sFlag || !com.stevesoft.pat.Regex.dotDoesntMatchCR) {
+sb.append ("s");
+}if (this.dontMatchInQuotes) {
+sb.append ("Q");
+}if (this.optimized ()) {
+sb.append ("o");
+}if (this.gFlag) {
+sb.append ("g");
+}sb.append (")");
+}var patstr = this.thePattern.toString ();
+if (this.esc != '\\') {
+patstr = com.stevesoft.pat.Regex.reEscape (patstr, '\\', this.esc);
+}sb.append (patstr);
+return sb.toString ();
+}});
+c$.reEscape = Clazz_defineMethod (c$, "reEscape", 
+function (s, oldEsc, newEsc) {
+if (oldEsc == newEsc) {
+return s;
+}var i;
+var sb =  new StringBuffer ();
+for (i = 0; i < s.length; i++) {
+if (s.charAt (i) == oldEsc && i + 1 < s.length) {
+if (s.charAt (i + 1) == oldEsc) {
+sb.append (oldEsc);
+} else {
+sb.append (newEsc);
+sb.append (s.charAt (i + 1));
+}i++;
+} else if (s.charAt (i) == newEsc) {
+sb.append (newEsc);
+sb.append (newEsc);
+} else {
+sb.append (s.charAt (i));
+}}
+return sb.toString ();
+}, "~S,~S,~S");
+Clazz_defineMethod (c$, "accept", 
+function (dir, s) {
+return this.search (s);
+}, "java.io.File,~S");
+c$.version = Clazz_defineMethod (c$, "version", 
+function () {
+return "lgpl release 1.5.3";
+});
+Clazz_defineMethod (c$, "optimize", 
+function () {
+if (this.optimized () || this.thePattern == null) {
+return;
+}this.minMatch =  new com.stevesoft.pat.patInt (0);
+this.thePattern = com.stevesoft.pat.RegOpt.opt (this.thePattern, this.ignoreCase, this.dontMatchInQuotes);
+this.skipper = com.stevesoft.pat.Skip.findSkipRegex (this);
+return;
+});
+Clazz_defineMethod (c$, "optimized", 
+function () {
+return this.minMatch != null;
+});
+c$.perlCode = Clazz_defineMethod (c$, "perlCode", 
+function (s) {
+return com.stevesoft.pat.parsePerl.parse (s);
+}, "~S");
+Clazz_defineMethod (c$, "isLiteral", 
+function () {
+var x = this.thePattern;
+while (x != null) {
+if (Clazz_instanceOf (x, com.stevesoft.pat.oneChar)) {
+;} else if (Clazz_instanceOf (x, com.stevesoft.pat.Skipped)) {
+;} else {
+return false;
+}x = x.next;
+}
+return true;
+});
+Clazz_defineMethod (c$, "countMinChars", 
+function () {
+return this.thePattern.countMinChars ();
+});
+Clazz_defineMethod (c$, "countMaxChars", 
+function () {
+return this.thePattern.countMaxChars ();
+});
+Clazz_defineMethod (c$, "isHexDigit", 
+function (sp) {
+var r = !sp.$eos && !sp.dontMatch && ((sp.c >= '0' && sp.c <= '9') || (sp.c >= 'a' && sp.c <= 'f') || (sp.c >= 'A' && sp.c <= 'F'));
+return r;
+}, "com.stevesoft.pat.StrPos");
+Clazz_defineMethod (c$, "isOctalDigit", 
+function (sp, first) {
+var r = !sp.$eos && !( new Boolean (first ^ sp.dontMatch).valueOf ()) && sp.c >= '0' && sp.c <= '7';
+return r;
+}, "com.stevesoft.pat.StrPos,~B");
+Clazz_defineMethod (c$, "getHexDigit", 
+function (sp) {
+if (sp.c >= '0' && sp.c <= '9') {
+return sp.c.charCodeAt (0) - 48;
+}if (sp.c >= 'a' && sp.c <= 'f') {
+return sp.c.charCodeAt (0) - 97 + 10;
+}return sp.c.charCodeAt (0) - 65 + 10;
+}, "com.stevesoft.pat.StrPos");
+Clazz_defineMethod (c$, "next2Hex", 
+function (sp) {
+var sp2 =  new com.stevesoft.pat.StrPos (sp);
+sp2.inc ();
+if (!this.isHexDigit (sp2)) {
+return false;
+}sp2.inc ();
+if (!this.isHexDigit (sp2)) {
+return false;
+}return true;
+}, "com.stevesoft.pat.StrPos");
+Clazz_defineMethod (c$, "isOctalString", 
+function (sp) {
+if (!this.isOctalDigit (sp, true)) {
+return false;
+}var sp2 =  new com.stevesoft.pat.StrPos (sp);
+sp2.inc ();
+if (!this.isOctalDigit (sp2, false)) {
+return false;
+}return true;
+}, "com.stevesoft.pat.StrPos");
+Clazz_defineStatics (c$,
+"BackRefOffset", 1);
+c$.none = c$.prototype.none =  new com.stevesoft.pat.NoPattern ();
+c$.validators = c$.prototype.validators =  new java.util.Hashtable ();
+{
+com.stevesoft.pat.Regex.defineV ("p", "(?>1)",  new com.stevesoft.pat.UnicodePunct ());
+com.stevesoft.pat.Regex.defineV ("P", "(?>1)",  new com.stevesoft.pat.NUnicodePunct ());
+com.stevesoft.pat.Regex.defineV ("s", "(?>1)",  new com.stevesoft.pat.UnicodeWhite ());
+com.stevesoft.pat.Regex.defineV ("S", "(?>1)",  new com.stevesoft.pat.NUnicodeWhite ());
+com.stevesoft.pat.Regex.defineV ("w", "(?>1)",  new com.stevesoft.pat.UnicodeW ());
+com.stevesoft.pat.Regex.defineV ("W", "(?>1)",  new com.stevesoft.pat.NUnicodeW ());
+com.stevesoft.pat.Regex.defineV ("d", "(?>1)",  new com.stevesoft.pat.UnicodeDigit ());
+com.stevesoft.pat.Regex.defineV ("D", "(?>1)",  new com.stevesoft.pat.NUnicodeDigit ());
+com.stevesoft.pat.Regex.defineV ("m", "(?>1)",  new com.stevesoft.pat.UnicodeMath ());
+com.stevesoft.pat.Regex.defineV ("M", "(?>1)",  new com.stevesoft.pat.NUnicodeMath ());
+com.stevesoft.pat.Regex.defineV ("c", "(?>1)",  new com.stevesoft.pat.UnicodeCurrency ());
+com.stevesoft.pat.Regex.defineV ("C", "(?>1)",  new com.stevesoft.pat.NUnicodeCurrency ());
+com.stevesoft.pat.Regex.defineV ("a", "(?>1)",  new com.stevesoft.pat.UnicodeAlpha ());
+com.stevesoft.pat.Regex.defineV ("A", "(?>1)",  new com.stevesoft.pat.NUnicodeAlpha ());
+com.stevesoft.pat.Regex.defineV ("uc", "(?>1)",  new com.stevesoft.pat.UnicodeUpper ());
+com.stevesoft.pat.Regex.defineV ("lc", "(?>1)",  new com.stevesoft.pat.UnicodeLower ());
+}Clazz_defineStatics (c$,
+"defaultMFlag", false,
+"dotDoesntMatchCR", true,
+"lasts", null,
+"lastbs", null,
+"back_slash", '\\');
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (null, "com.stevesoft.pat.RegRes", ["java.lang.StringBuffer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.marks = null;
+this.didMatch_ = false;
+this.src = null;
+this.charsMatched_ = 0;
+this.matchFrom_ = 0;
+this.numSubs_ = 0;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "RegRes");
+Clazz_defineMethod (c$, "getString", 
+function () {
+return this.src.toString ();
+});
+Clazz_defineMethod (c$, "getStringLike", 
+function () {
+return this.src;
+});
+Clazz_overrideMethod (c$, "toString", 
+function () {
+var sb =  new StringBuffer ();
+sb.append ("match=" + this.matchedFrom () + ":" + this.charsMatched ());
+if (!this.didMatch ()) {
+return sb.toString ();
+}for (var i = 0; i < this.numSubs (); i++) {
+var n = i + 1;
+sb.append (" sub(" + n + ")=" + this.matchedFromI (n) + ":" + this.charsMatchedI (n));
+}
+return sb.toString ();
+});
+Clazz_defineMethod (c$, "copyOutOf", 
+function (r) {
+if (r.marks == null) {
+this.marks = null;
+} else {
+try {
+this.marks =  Clazz_newIntArray (r.marks.length, 0);
+for (var i = 0; i < this.marks.length; i++) {
+this.marks[i] = r.marks[i];
+}
+} catch (t) {
+}
+}this.didMatch_ = r.didMatch_;
+this.src = r.src;
+this.charsMatched_ = r.charsMatched_;
+this.matchFrom_ = r.matchFrom_;
+this.numSubs_ = r.numSubs_;
+}, "com.stevesoft.pat.RegRes");
+Clazz_defineMethod (c$, "equals", 
+function (r) {
+if (this.charsMatched_ != r.charsMatched_ || this.matchFrom_ != r.matchFrom_ || this.didMatch_ != r.didMatch_ || this.numSubs_ != r.numSubs_ || !this.src.unwrap ().equals (r.src.unwrap ())) {
+return false;
+}if (this.marks == null && r.marks != null) {
+return false;
+}if (this.marks != null && r.marks == null) {
+return false;
+}for (var i = 1; i <= this.numSubs_; i++) {
+if (this.matchedFromI (i) != r.matchedFromI (i)) {
+return false;
+} else if (this.charsMatchedI (i) != r.charsMatchedI (i)) {
+return false;
+}}
+return true;
+}, "com.stevesoft.pat.RegRes");
+Clazz_defineMethod (c$, "stringMatched", 
+function () {
+var mf = this.matchedFrom ();
+var cm = this.charsMatched ();
+return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf, mf + cm);
+});
+Clazz_defineMethod (c$, "matchedFromI", 
+function (i) {
+if (this.marks == null || i > this.numSubs_) {
+return -1;
+}return this.marks[i];
+}, "~N");
+Clazz_defineMethod (c$, "charsMatchedI", 
+function (i) {
+if (this.marks == null || i > this.numSubs_ || !this.didMatch_) {
+return -1;
+}var mf = this.matchedFromI (i);
+return mf < 0 ? -1 : this.marks[i + this.numSubs_] - this.matchedFromI (i);
+}, "~N");
+Clazz_defineMethod (c$, "matchedToI", 
+function (i) {
+if (this.marks == null || i > this.numSubs_ || !this.didMatch_) {
+return -1;
+}return this.marks[i + this.numSubs_];
+}, "~N");
+Clazz_defineMethod (c$, "stringMatchedI", 
+function (i) {
+var mf = this.matchedFromI (i);
+var cm = this.charsMatchedI (i);
+return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf, mf + cm);
+}, "~N");
+Clazz_defineMethod (c$, "left", 
+function () {
+var mf = this.matchedFrom ();
+return !this.didMatch_ || (mf < 0) ? null : this.src.substring (0, mf);
+});
+Clazz_defineMethod (c$, "leftI", 
+function (i) {
+var mf = this.matchedFromI (i);
+return !this.didMatch_ || (mf < 0) ? null : this.src.substring (0, mf);
+}, "~N");
+Clazz_defineMethod (c$, "right", 
+function () {
+var mf = this.matchedFrom ();
+var cm = this.charsMatched ();
+return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf + cm, this.src.length ());
+});
+Clazz_defineMethod (c$, "rightI", 
+function (i) {
+var mf = this.matchedFromI (i);
+var cm = this.charsMatchedI (i);
+return !this.didMatch_ || mf < 0 || cm < 0 ? null : this.src.substring (mf + cm, this.src.length ());
+}, "~N");
+Clazz_defineMethod (c$, "matchedFrom", 
+function () {
+return !this.didMatch_ ? -1 : this.matchFrom_;
+});
+Clazz_defineMethod (c$, "charsMatched", 
+function () {
+return !this.didMatch_ || this.matchFrom_ < 0 ? -1 : this.charsMatched_;
+});
+Clazz_defineMethod (c$, "matchedTo", 
+function () {
+return !this.didMatch_ ? -1 : this.matchFrom_ + this.charsMatched_;
+});
+Clazz_defineMethod (c$, "numSubs", 
+function () {
+return this.numSubs_;
+});
+Clazz_defineMethod (c$, "didMatch", 
+function () {
+return this.didMatch_;
+});
+Clazz_defineMethod (c$, "matchFrom", 
+function () {
+return this.matchedFrom ();
+});
+Clazz_defineMethod (c$, "substring", 
+function () {
+return this.stringMatched ();
+});
+Clazz_defineMethod (c$, "matchFromI", 
+function (i) {
+return this.matchedFromI (i);
+}, "~N");
+Clazz_defineMethod (c$, "substringI", 
+function (i) {
+return this.stringMatchedI (i);
+}, "~N");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Validator"], "com.stevesoft.pat.UniValidator", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz_declareType (com.stevesoft.pat, "UniValidator", com.stevesoft.pat.Validator);
+Clazz_overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz_overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (null, "com.stevesoft.pat.Validator", ["com.stevesoft.pat.patInf", "$.patInt"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.argsave = null;
+this.pattern = ".";
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Validator");
+Clazz_defineMethod (c$, "validate", 
+function (src, start, end) {
+return end;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+Clazz_defineMethod (c$, "arg", 
+function (s) {
+return null;
+}, "~S");
+Clazz_defineMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (0);
+});
+Clazz_defineMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInf ();
+});
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.patInt"], "com.stevesoft.pat.patInf", null, function () {
+c$ = Clazz_declareType (com.stevesoft.pat, "patInf", com.stevesoft.pat.patInt);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, com.stevesoft.pat.patInf, []);
+this.inf = true;
+});
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+c$ = Clazz_decorateAsClass (function () {
+this.i = 0;
+this.inf = false;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "patInt");
+Clazz_makeConstructor (c$, 
+function () {
+this.i = 0;
+this.inf = false;
+});
+Clazz_makeConstructor (c$, 
+function (init) {
+this.i = init;
+this.inf = false;
+}, "~N");
+Clazz_makeConstructor (c$, 
+function (p) {
+this.i = p.i;
+this.inf = p.inf;
+}, "com.stevesoft.pat.patInt");
+Clazz_defineMethod (c$, "setInf", 
+function (b) {
+this.inf = b;
+if (b) {
+this.i = 2147483647;
+}}, "~B");
+Clazz_defineMethod (c$, "inc", 
+function () {
+if (!this.inf) {
+this.i++;
+}});
+Clazz_defineMethod (c$, "dec", 
+function () {
+if (!this.inf) {
+this.i--;
+}});
+Clazz_defineMethod (c$, "lessEq", 
+function (j) {
+return !this.inf && (j.inf || this.i <= j.i);
+}, "com.stevesoft.pat.patInt");
+Clazz_defineMethod (c$, "equals", 
+function (j) {
+return !j.inf && !this.inf && this.i == j.i;
+}, "com.stevesoft.pat.patInt");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+if (this.inf) {
+return "";
+} else {
+return "" + this.i;
+}});
+Clazz_defineMethod (c$, "pluseq", 
+function (p) {
+if (this.inf || p.inf) {
+this.setInf (true);
+} else {
+this.i += p.i;
+}return this;
+}, "com.stevesoft.pat.patInt");
+Clazz_defineMethod (c$, "mul", 
+function (p) {
+if (this.inf || p.inf) {
+return  new com.stevesoft.pat.patInf ();
+}return  new com.stevesoft.pat.patInt (this.i * p.i);
+}, "com.stevesoft.pat.patInt");
+Clazz_defineMethod (c$, "mineq", 
+function (p) {
+if (p.inf) {
+return this;
+}if (this.inf) {
+this.i = p.i;
+} else if (p.i < this.i) {
+this.i = p.i;
+}this.setInf (false);
+return this;
+}, "com.stevesoft.pat.patInt");
+Clazz_defineMethod (c$, "maxeq", 
+function (p) {
+if (this.inf || p.inf) {
+this.setInf (true);
+return this;
+}if (p.i > this.i) {
+this.i = p.i;
+}return this;
+}, "com.stevesoft.pat.patInt");
+Clazz_defineMethod (c$, "finite", 
+function () {
+return !this.inf;
+});
+Clazz_defineMethod (c$, "intValue", 
+function () {
+return this.inf ? 2147483647 : this.i;
+});
+Clazz_declarePackage ("jalview.jsdev.api");
+Clazz_declareInterface (jalview.jsdev.api, "RegExpInterface");
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.NoPattern", null, function () {
+c$ = Clazz_declareType (com.stevesoft.pat, "NoPattern", com.stevesoft.pat.Pattern);
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return "(?e=#)[^#d#D]";
+});
+Clazz_overrideMethod (c$, "matchInternal", 
+function (i, p) {
+return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.NoPattern ();
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (null, "com.stevesoft.pat.Pattern", ["com.stevesoft.pat.MessageManager", "$.patInf", "$.patInt", "java.lang.Error", "$.StringBuffer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.next = null;
+this.parent = null;
+this.mfrom = 0;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Pattern");
+Clazz_defineMethod (c$, "getNext", 
+function () {
+return this.next != null ? this.next : (this.parent == null ? null : this.parent.getNext ());
+});
+Clazz_defineMethod (c$, "setParent", 
+function (p) {
+if (this.next != null) {
+this.next.setParent (p);
+} else {
+this.parent = p;
+}}, "com.stevesoft.pat.Pattern");
+Clazz_defineMethod (c$, "nextMatch", 
+function (i, pt) {
+var p = this.getNext ();
+return p == null ? i : p.matchInternal (i, pt);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_defineMethod (c$, "nextString", 
+function () {
+if (this.next == null) {
+return "";
+}return this.next.toString ();
+});
+c$.inString = Clazz_defineMethod (c$, "inString", 
+function (c, s) {
+var i;
+for (i = 0; i < s.length; i++) {
+if (s.charAt (i) == c) {
+return true;
+}}
+return false;
+}, "~S,~S");
+c$.protect = Clazz_defineMethod (c$, "protect", 
+function (s, PROTECT_THESE, esc) {
+var i;
+var sb =  new StringBuffer ();
+var p = PROTECT_THESE + esc;
+for (i = 0; i < s.length; i++) {
+var c = s.charAt (i);
+if (com.stevesoft.pat.Pattern.inString (c, p)) {
+sb.append (esc);
+}sb.append (c);
+}
+return sb.toString ();
+}, "~S,~S,~S");
+Clazz_defineMethod (c$, "match", 
+function (s, pt) {
+return this.matchAt (s, 0, pt);
+}, "com.stevesoft.pat.StringLike,com.stevesoft.pat.Pthings");
+Clazz_defineMethod (c$, "matchAt", 
+function (s, i, pt) {
+pt.src = s;
+var r = this.matchInternal (i, pt);
+if (r < 0) {
+return -1;
+}this.mfrom = r < i ? r + 1 : i;
+return r < i ? i - r - 1 : r - i;
+}, "com.stevesoft.pat.StringLike,~N,com.stevesoft.pat.Pthings");
+Clazz_defineMethod (c$, "Masked", 
+function (i, pt) {
+return pt.cbits == null ? false : pt.cbits.get (i);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_defineMethod (c$, "add", 
+function (p) {
+if (this.next == null) {
+if (p == null) {
+return this;
+}this.next = p;
+p.parent = this.parent;
+this.parent = null;
+} else {
+this.next.add (p);
+}return this;
+}, "com.stevesoft.pat.Pattern");
+Clazz_defineMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (0);
+});
+Clazz_defineMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInf ();
+});
+Clazz_defineMethod (c$, "countMinChars", 
+function () {
+var p = this;
+var sum =  new com.stevesoft.pat.patInt (0);
+while (p != null) {
+sum.pluseq (p.minChars ());
+p = p.next;
+}
+return sum;
+});
+Clazz_defineMethod (c$, "countMaxChars", 
+function () {
+var p = this;
+var sum =  new com.stevesoft.pat.patInt (0);
+while (p != null) {
+sum.pluseq (p.maxChars ());
+p = p.next;
+}
+return sum;
+});
+Clazz_defineMethod (c$, "testMatch", 
+function (p, pos, pt) {
+var tab = null;
+if (pt.marks != null) {
+try {
+tab =  Clazz_newIntArray (pt.marks.length, 0);
+for (var i = 0; i < tab.length; i++) {
+tab[i] = pt.marks[i];
+}
+} catch (t) {
+}
+}var ret = p.matchInternal (pos, pt);
+if (ret < 0) {
+pt.marks = tab;
+}return ret;
+}, "com.stevesoft.pat.Pattern,~N,com.stevesoft.pat.Pthings");
+Clazz_defineMethod (c$, "clone1", 
+function (h) {
+throw  new Error (com.stevesoft.pat.MessageManager.formatMessage ("error.no_such_method_as_clone1_for",  Clazz_newArray (-1, [this.getClass ().getName ()])));
+}, "java.util.Hashtable");
+Clazz_defineMethod (c$, "clone", 
+function (h) {
+var p = h.get (this);
+if (p != null) {
+return p;
+}p = this.clone1 (h);
+if (p == null) {
+throw  new Error (com.stevesoft.pat.MessageManager.getString ("error.null_from_clone1"));
+}h.put (this, p);
+h.put (p, p);
+if (this.next != null) {
+p.next = this.next.clone (h);
+}if (this.parent != null) {
+p.parent = this.parent.clone (h);
+}return p;
+}, "java.util.Hashtable");
+Clazz_overrideMethod (c$, "equals", 
+function (o) {
+return o === this;
+}, "~O");
+Clazz_defineStatics (c$,
+"ESC", '\\',
+"PROTECT_THESE", "[]{}(),$,-\"^.");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+c$ = Clazz_declareType (com.stevesoft.pat, "MessageManager");
+c$.getString = Clazz_defineMethod (c$, "getString", 
+function (string) {
+return string;
+}, "~S");
+c$.formatMessage = Clazz_defineMethod (c$, "formatMessage", 
+function (s, fields) {
+for (var i = 0; i < fields.length; i++) s += " " + fields[i];
+
+return s;
+}, "~S,~A");
+Clazz_declarePackage ("com.stevesoft.pat");
+c$ = Clazz_decorateAsClass (function () {
+this.src = null;
+this.ignoreCase = false;
+this.mFlag = false;
+this.cbits = null;
+this.marks = null;
+this.nMarks = 0;
+this.dotDoesntMatchCR = false;
+this.no_check = false;
+this.lastPos = 0;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Pthings");
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Any", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz_declareType (com.stevesoft.pat, "Any", com.stevesoft.pat.Pattern);
+Clazz_overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (pos < pt.src.length ()) {
+if (pt.dotDoesntMatchCR) {
+if (pt.src.charAt (pos) != '\n') {
+return this.nextMatch (pos + 1, pt);
+}} else {
+return this.nextMatch (pos + 1, pt);
+}}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return "." + this.nextString ();
+});
+Clazz_overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz_overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.Any ();
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.BackG", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.c = '\0';
+this.altc = '\0';
+this.altc2 = '\0';
+this.mask = 0;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "BackG", com.stevesoft.pat.Pattern);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, com.stevesoft.pat.BackG, []);
+});
+Clazz_overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+return pos == pt.lastPos ? this.nextMatch (pos, pt) : -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return "\\G" + this.nextString ();
+});
+Clazz_overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz_overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.BackG ();
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.BackMatch", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.id = 0;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "BackMatch", com.stevesoft.pat.Pattern);
+Clazz_makeConstructor (c$, 
+function (id) {
+Clazz_superConstructor (this, com.stevesoft.pat.BackMatch, []);
+this.id = id;
+}, "~N");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return "\\" + (this.id) + this.nextString ();
+});
+Clazz_overrideMethod (c$, "matchInternal", 
+function (pos, p) {
+var i1 = p.marks[this.id];
+var i2 = p.marks[this.id + p.nMarks];
+var imax = i2 - i1;
+if (i1 < 0 || imax < 0 || pos + imax > p.src.length ()) {
+return -1;
+}var ns = p.src.length () - pos;
+if (imax < ns) {
+ns = imax;
+}for (var i = 0; i < ns; i++) {
+if (p.src.charAt (i + i1) != p.src.charAt (pos + i)) {
+return -1;
+}}
+return this.nextMatch (pos + imax, p);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.BackMatch (this.id);
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Backup", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.bk = 0;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Backup", com.stevesoft.pat.Pattern);
+Clazz_makeConstructor (c$, 
+function (ii) {
+Clazz_superConstructor (this, com.stevesoft.pat.Backup, []);
+this.bk = ii;
+}, "~N");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return "(?" + (this.bk < 0 ? ">" + (-this.bk) : "<" + this.bk) + ")" + this.nextString ();
+});
+Clazz_overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (pos < this.bk) {
+return -1;
+}return this.nextMatch (pos - this.bk, pt);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (-this.bk);
+});
+Clazz_overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (-this.bk);
+});
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.Backup (this.bk);
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Boundary", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz_declareType (com.stevesoft.pat, "Boundary", com.stevesoft.pat.Pattern);
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return "\\b" + this.nextString ();
+});
+Clazz_defineMethod (c$, "isAChar", 
+function (c) {
+if (c >= 'a' && c <= 'z') {
+return true;
+}if (c >= 'A' && c <= 'Z') {
+return true;
+}if (c >= '0' && c <= '9') {
+return true;
+}if (c == '_') {
+return true;
+}return false;
+}, "~S");
+Clazz_defineMethod (c$, "matchLeft", 
+function (pos, pt) {
+if (pos <= 0) {
+return true;
+}if (this.isAChar (pt.src.charAt (pos)) && this.isAChar (pt.src.charAt (pos - 1))) {
+return false;
+}return true;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_defineMethod (c$, "matchRight", 
+function (pos, pt) {
+if (pos < 0) {
+return false;
+}if (pos + 1 >= pt.src.length ()) {
+return true;
+}if (this.isAChar (pt.src.charAt (pos)) && this.isAChar (pt.src.charAt (pos + 1))) {
+return false;
+}return true;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (this.matchRight (pos - 1, pt) || this.matchLeft (pos, pt)) {
+return this.nextMatch (pos, pt);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (0);
+});
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.Boundary ();
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Or"], "com.stevesoft.pat.Bracket", ["com.stevesoft.pat.patInt", "java.util.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.neg = false;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Bracket", com.stevesoft.pat.Or);
+Clazz_makeConstructor (c$, 
+function (n) {
+Clazz_superConstructor (this, com.stevesoft.pat.Bracket, []);
+this.neg = n;
+}, "~B");
+Clazz_overrideMethod (c$, "leftForm", 
+function () {
+if (this.neg) {
+return "[^";
+} else {
+return "[";
+}});
+Clazz_overrideMethod (c$, "rightForm", 
+function () {
+return "]";
+});
+Clazz_overrideMethod (c$, "sepForm", 
+function () {
+return "";
+});
+Clazz_defineMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (pos >= pt.src.length ()) {
+return -1;
+}var r = Clazz_superCall (this, com.stevesoft.pat.Bracket, "matchInternal", [pos, pt]);
+if ((this.neg && r < 0) || (!this.neg && r >= 0)) {
+return this.nextMatch (pos + 1, pt);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz_overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz_overrideMethod (c$, "addOr", 
+function (p) {
+this.pv = null;
+this.v.addElement (p);
+p.setParent (null);
+return this;
+}, "com.stevesoft.pat.Pattern");
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+var b =  new com.stevesoft.pat.Bracket (this.neg);
+b.v =  new java.util.Vector ();
+for (var i = 0; i < this.v.size (); i++) {
+b.v.addElement ((this.v.elementAt (i)).clone1 (h));
+}
+return b;
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Or", ["com.stevesoft.pat.patInt", "java.lang.StringBuffer", "java.util.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.v = null;
+this.pv = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Or", com.stevesoft.pat.Pattern);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, com.stevesoft.pat.Or, []);
+this.v =  new java.util.Vector ();
+});
+Clazz_defineMethod (c$, "leftForm", 
+function () {
+return "(?:";
+});
+Clazz_defineMethod (c$, "rightForm", 
+function () {
+return ")";
+});
+Clazz_defineMethod (c$, "sepForm", 
+function () {
+return "|";
+});
+Clazz_defineMethod (c$, "addOr", 
+function (p) {
+this.pv = null;
+this.v.addElement (p);
+p.setParent (this);
+return this;
+}, "com.stevesoft.pat.Pattern");
+Clazz_defineMethod (c$, "toString", 
+function () {
+var i;
+var sb =  new StringBuffer ();
+sb.append (this.leftForm ());
+if (this.v.size () > 0) {
+sb.append ((this.v.elementAt (0)).toString ());
+}for (i = 1; i < this.v.size (); i++) {
+sb.append (this.sepForm ());
+sb.append ((this.v.elementAt (i)).toString ());
+}
+sb.append (this.rightForm ());
+sb.append (this.nextString ());
+return sb.toString ();
+});
+Clazz_defineMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (this.pv == null) {
+this.pv =  new Array (this.v.size ());
+this.v.copyInto (this.pv);
+}for (var i = 0; i < this.v.size (); i++) {
+var p = this.pv[i];
+var r = p.matchInternal (pos, pt);
+if (r >= 0) {
+return r;
+}}
+return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "minChars", 
+function () {
+if (this.v.size () == 0) {
+return  new com.stevesoft.pat.patInt (0);
+}var m = (this.v.elementAt (0)).countMinChars ();
+for (var i = 1; i < this.v.size (); i++) {
+var p = this.v.elementAt (i);
+m.mineq (p.countMinChars ());
+}
+return m;
+});
+Clazz_overrideMethod (c$, "maxChars", 
+function () {
+if (this.v.size () == 0) {
+return  new com.stevesoft.pat.patInt (0);
+}var m = (this.v.elementAt (0)).countMaxChars ();
+for (var i = 1; i < this.v.size (); i++) {
+var p = this.v.elementAt (i);
+m.maxeq (p.countMaxChars ());
+}
+return m;
+});
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+var o =  new com.stevesoft.pat.Or ();
+h.put (this, o);
+h.put (o, o);
+for (var i = 0; i < this.v.size (); i++) {
+o.v.addElement ((this.v.elementAt (i)).clone (h));
+}
+return o;
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (null, "com.stevesoft.pat.CaseMgr", ["java.lang.Character"], function () {
+c$ = Clazz_declareType (com.stevesoft.pat, "CaseMgr");
+c$.toUpperCaseC = Clazz_defineMethod (c$, "toUpperCaseC", 
+function (c) {
+return Character.toUpperCase (c);
+}, "~S");
+c$.toLowerCaseC = Clazz_defineMethod (c$, "toLowerCaseC", 
+function (c) {
+return Character.toLowerCase (c);
+}, "~S");
+c$.toUpperCase = Clazz_defineMethod (c$, "toUpperCase", 
+function (s) {
+return s.toUpperCase ();
+}, "~S");
+c$.toLowerCase = Clazz_defineMethod (c$, "toLowerCase", 
+function (s) {
+return s.toLowerCase ();
+}, "~S");
+c$.toTitleCaseC = Clazz_defineMethod (c$, "toTitleCaseC", 
+function (c) {
+return Character.toUpperCase (c);
+}, "~S");
+c$.regionMatchesLike = Clazz_defineMethod (c$, "regionMatchesLike", 
+function (s1, ign, i1, s2, i2, i3) {
+var itot = i2 + i3;
+if (itot > s2.length () || i1 + i3 > s1.length ()) {
+return false;
+}if (!ign) {
+for (var i = i2; i < itot; i++) {
+if (s2.charAt (i) != s1.charAt (i1++)) {
+return false;
+}}
+} else {
+for (var i = i2; i < itot; i++) {
+if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {
+return false;
+}}
+}return true;
+}, "com.stevesoft.pat.StringLike,~B,~N,com.stevesoft.pat.StringLike,~N,~N");
+c$.regionMatches = Clazz_defineMethod (c$, "regionMatches", 
+function (s1, ign, i1, s2, i2, i3) {
+var itot = i2 + i3;
+if (itot > s2.length () || i1 + i3 > s1.length) {
+return false;
+}if (!ign) {
+for (var i = i2; i < itot; i++) {
+if (s2.charAt (i) != s1.charAt (i1++)) {
+return false;
+}}
+} else {
+for (var i = i2; i < itot; i++) {
+if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {
+return false;
+}}
+}return true;
+}, "~S,~B,~N,com.stevesoft.pat.StringLike,~N,~N");
+c$.regionMatchesLike2 = Clazz_defineMethod (c$, "regionMatchesLike2", 
+function (s1, ign, i1, s2, i2, i3) {
+var itot = i2 + i3;
+if (itot > s2.length || i1 + i3 > s1.length ()) {
+return false;
+}if (!ign) {
+for (var i = i2; i < itot; i++) {
+if (s2.charAt (i) != s1.charAt (i1++)) {
+return false;
+}}
+} else {
+for (var i = i2; i < itot; i++) {
+if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {
+return false;
+}}
+}return true;
+}, "com.stevesoft.pat.StringLike,~B,~N,~S,~N,~N");
+c$.regionMatches2 = Clazz_defineMethod (c$, "regionMatches2", 
+function (s1, ign, i1, s2, i2, i3) {
+var itot = i2 + i3;
+if (itot > s2.length || i1 + i3 > s1.length) {
+return false;
+}if (!ign) {
+for (var i = i2; i < itot; i++) {
+if (s2.charAt (i) != s1.charAt (i1++)) {
+return false;
+}}
+} else {
+for (var i = i2; i < itot; i++) {
+if (com.stevesoft.pat.CaseMgr.toLowerCaseC (s2.charAt (i)) != com.stevesoft.pat.CaseMgr.toLowerCaseC (s1.charAt (i1++))) {
+return false;
+}}
+}return true;
+}, "~S,~B,~N,~S,~N,~N");
+Clazz_defineStatics (c$,
+"java_1_0", false);
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+c$ = Clazz_declareType (com.stevesoft.pat, "Ctrl");
+Clazz_defineStatics (c$,
+"cmap",  Clazz_newCharArray (-1, [String.fromCharCode (64), 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', String.fromCharCode (91), String.fromCharCode (92), String.fromCharCode (93), String.fromCharCode (94), String.fromCharCode (95), String.fromCharCode (96), 'a', 'a', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', String.fromCharCode (123), String.fromCharCode (124), String.fromCharCode (125), String.fromCharCode (126), String.fromCharCode (127), String.fromCharCode (0), String.fromCharCode (1), String.fromCharCode (2), String.fromCharCode (3), String.fromCharCode (4), String.fromCharCode (5), String.fromCharCode (6), String.fromCharCode (7), String.fromCharCode (8), String.fromCharCode (9), String.fromCharCode (10), String.fromCharCode (11), String.fromCharCode (12), String.fromCharCode (13), String.fromCharCode (14), String.fromCharCode (15), String.fromCharCode (16), String.fromCharCode (17), String.fromCharCode (18), String.fromCharCode (19), String.fromCharCode (20), String.fromCharCode (21), String.fromCharCode (22), String.fromCharCode (23), String.fromCharCode (24), String.fromCharCode (25), String.fromCharCode (26), String.fromCharCode (27), String.fromCharCode (27), String.fromCharCode (29), String.fromCharCode (30), String.fromCharCode (31), String.fromCharCode (32), String.fromCharCode (1), String.fromCharCode (2), String.fromCharCode (3), String.fromCharCode (4), String.fromCharCode (5), String.fromCharCode (6), String.fromCharCode (7), String.fromCharCode (8), String.fromCharCode (9), String.fromCharCode (10), String.fromCharCode (11), String.fromCharCode (12), String.fromCharCode (13), String.fromCharCode (14), String.fromCharCode (15), String.fromCharCode (16), String.fromCharCode (17), String.fromCharCode (18), String.fromCharCode (19), String.fromCharCode (20), String.fromCharCode (21), String.fromCharCode (22), String.fromCharCode (23), String.fromCharCode (24), String.fromCharCode (25), String.fromCharCode (26), String.fromCharCode (59), String.fromCharCode (60), String.fromCharCode (61), String.fromCharCode (62), String.fromCharCode (63), String.fromCharCode (192), String.fromCharCode (193), String.fromCharCode (194), String.fromCharCode (195), String.fromCharCode (196), String.fromCharCode (197), String.fromCharCode (198), String.fromCharCode (199), String.fromCharCode (200), String.fromCharCode (201), String.fromCharCode (202), String.fromCharCode (203), String.fromCharCode (204), String.fromCharCode (205), String.fromCharCode (206), String.fromCharCode (207), String.fromCharCode (208), String.fromCharCode (209), String.fromCharCode (210), String.fromCharCode (211), String.fromCharCode (212), String.fromCharCode (213), String.fromCharCode (214), String.fromCharCode (215), String.fromCharCode (216), String.fromCharCode (217), String.fromCharCode (218), String.fromCharCode (219), String.fromCharCode (220), String.fromCharCode (221), String.fromCharCode (222), String.fromCharCode (223), String.fromCharCode (224), String.fromCharCode (225), String.fromCharCode (226), String.fromCharCode (227), String.fromCharCode (228), String.fromCharCode (229), String.fromCharCode (230), String.fromCharCode (231), String.fromCharCode (232), String.fromCharCode (233), String.fromCharCode (234), String.fromCharCode (235), String.fromCharCode (236), String.fromCharCode (237), String.fromCharCode (238), String.fromCharCode (239), String.fromCharCode (240), String.fromCharCode (241), String.fromCharCode (242), String.fromCharCode (243), String.fromCharCode (244), String.fromCharCode (245), String.fromCharCode (246), String.fromCharCode (247), String.fromCharCode (248), String.fromCharCode (249), String.fromCharCode (250), String.fromCharCode (251), String.fromCharCode (252), String.fromCharCode (253), String.fromCharCode (254), String.fromCharCode (255), String.fromCharCode (128), String.fromCharCode (129), String.fromCharCode (130), String.fromCharCode (131), String.fromCharCode (132), String.fromCharCode (133), String.fromCharCode (134), String.fromCharCode (135), String.fromCharCode (136), String.fromCharCode (137), String.fromCharCode (138), String.fromCharCode (139), String.fromCharCode (140), String.fromCharCode (141), String.fromCharCode (142), String.fromCharCode (143), String.fromCharCode (144), String.fromCharCode (145), String.fromCharCode (146), String.fromCharCode (147), String.fromCharCode (148), String.fromCharCode (149), String.fromCharCode (150), String.fromCharCode (151), String.fromCharCode (152), String.fromCharCode (153), String.fromCharCode (154), String.fromCharCode (155), String.fromCharCode (156), String.fromCharCode (157), String.fromCharCode (158), String.fromCharCode (159), String.fromCharCode (160), String.fromCharCode (161), String.fromCharCode (162), String.fromCharCode (163), String.fromCharCode (164), String.fromCharCode (165), String.fromCharCode (166), String.fromCharCode (167), String.fromCharCode (168), String.fromCharCode (169), String.fromCharCode (170), String.fromCharCode (171), String.fromCharCode (172), String.fromCharCode (173), String.fromCharCode (174), String.fromCharCode (175), String.fromCharCode (176), String.fromCharCode (177), String.fromCharCode (178), String.fromCharCode (179), String.fromCharCode (180), String.fromCharCode (181), String.fromCharCode (182), String.fromCharCode (183), String.fromCharCode (184), String.fromCharCode (185), String.fromCharCode (186), String.fromCharCode (187), String.fromCharCode (188), String.fromCharCode (189), String.fromCharCode (190), String.fromCharCode (191)]));
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.Custom", ["com.stevesoft.pat.Regex"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.select = null;
+this.v = null;
+this.start = 0;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Custom", com.stevesoft.pat.PatternSub);
+Clazz_makeConstructor (c$, 
+function (s) {
+Clazz_superConstructor (this, com.stevesoft.pat.Custom, []);
+this.select = s;
+this.v = com.stevesoft.pat.Regex.validators.get (s);
+}, "~S");
+Clazz_defineMethod (c$, "matchInternal", 
+function (pos, pt) {
+this.start = pos;
+return this.sub.matchInternal (pos, pt);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+var a = this.v.argsave == null ? "" : ":" + this.v.argsave;
+return "(??" + this.select + a + ")" + this.nextString ();
+});
+Clazz_overrideMethod (c$, "minChars", 
+function () {
+return this.v.minChars ();
+});
+Clazz_overrideMethod (c$, "maxChars", 
+function () {
+return this.v.maxChars ();
+});
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+var c =  new com.stevesoft.pat.Custom (this.select);
+h.put (c, c);
+h.put (this, c);
+c.sub = this.sub.clone (h);
+return c;
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.PatternSub", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.sub = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "PatternSub", com.stevesoft.pat.Pattern);
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.CustomEndpoint", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.c = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "CustomEndpoint", com.stevesoft.pat.Pattern);
+Clazz_makeConstructor (c$, 
+function (cm) {
+Clazz_superConstructor (this, com.stevesoft.pat.CustomEndpoint, []);
+this.c = cm;
+}, "com.stevesoft.pat.Custom");
+Clazz_overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+var npos = this.c.v.validate (pt.src, this.c.start, pos);
+if (npos >= 0) {
+return this.nextMatch (npos, pt);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return "";
+});
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.CustomEndpoint (this.c.clone (h));
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.DotMulti", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.fewestMatches = null;
+this.mostMatches = null;
+this.matchFewest = false;
+this.src = null;
+this.srclength = 0;
+this.dotDoesntMatchCR = true;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "DotMulti", com.stevesoft.pat.PatternSub);
+Clazz_overrideMethod (c$, "minChars", 
+function () {
+return this.fewestMatches;
+});
+Clazz_overrideMethod (c$, "maxChars", 
+function () {
+return this.mostMatches;
+});
+Clazz_makeConstructor (c$, 
+function (a, b) {
+Clazz_superConstructor (this, com.stevesoft.pat.DotMulti, []);
+this.fewestMatches = a;
+this.mostMatches = b;
+}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return ".{" + this.fewestMatches + "," + this.mostMatches + "}" + (this.matchFewest ? "?" : "") + "(?# <= dot multi)" + this.nextString ();
+});
+Clazz_defineMethod (c$, "submatchInternal", 
+function (pos, pt) {
+if (pos < this.srclength) {
+if (this.dotDoesntMatchCR) {
+if (this.src.charAt (pos) != '\n') {
+return 1 + pos;
+}} else {
+return 1 + pos;
+}}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+var m = -1;
+var i = pos;
+this.src = pt.src;
+this.srclength = this.src.length ();
+this.dotDoesntMatchCR = pt.dotDoesntMatchCR;
+if (this.matchFewest) {
+var nMatches = 0;
+while (this.fewestMatches.intValue () > nMatches) {
+i = this.submatchInternal (i, pt);
+if (i < 0) {
+return -1;
+}nMatches++;
+}
+if (i < 0) {
+return -1;
+}var ii = this.nextMatch (i, pt);
+if (ii >= 0) {
+return ii;
+}if (!this.mostMatches.finite ()) {
+while (i >= 0) {
+i = this.submatchInternal (i, pt);
+if (i < 0) {
+return -1;
+}ii = this.nextMatch (i, pt);
+if (ii >= 0) {
+return ii;
+}}
+} else {
+while (i > 0) {
+i = this.submatchInternal (i, pt);
+if (i < 0) {
+return -1;
+}nMatches++;
+if (nMatches > this.mostMatches.intValue ()) {
+return -1;
+}ii = this.nextMatch (i, pt);
+if (ii >= 0) {
+return ii;
+}}
+}return -1;
+}var nMatches = 0;
+while (this.fewestMatches.intValue () > nMatches) {
+i = this.submatchInternal (i, pt);
+if (i >= 0) {
+nMatches++;
+} else {
+return -1;
+}}
+m = i;
+if (this.mostMatches.finite ()) {
+while (nMatches < this.mostMatches.intValue ()) {
+i = this.submatchInternal (i, pt);
+if (i >= 0) {
+m = i;
+nMatches++;
+} else {
+break;
+}}
+} else {
+while (true) {
+i = this.submatchInternal (i, pt);
+if (i >= 0) {
+m = i;
+nMatches++;
+} else {
+break;
+}}
+}while (m >= pos) {
+var r = this.nextMatch (m, pt);
+if (r >= 0) {
+return r;
+}m -= 1;
+nMatches--;
+if (nMatches < this.fewestMatches.intValue ()) {
+return -1;
+}}
+return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+var dm =  new com.stevesoft.pat.DotMulti (this.fewestMatches, this.mostMatches);
+dm.matchFewest = this.matchFewest;
+return dm;
+}, "java.util.Hashtable");
+Clazz_defineStatics (c$,
+"step", 1,
+"idcount", 1);
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.End", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.retIsEnd = false;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "End", com.stevesoft.pat.Pattern);
+Clazz_makeConstructor (c$, 
+function (b) {
+Clazz_superConstructor (this, com.stevesoft.pat.End, []);
+this.retIsEnd = b;
+}, "~B");
+Clazz_overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (this.retIsEnd && pt.mFlag && pos < pt.src.length ()) {
+if (pt.src.charAt (pos) == '\n') {
+return this.nextMatch (pos, pt);
+}}if (pt.src.length () == pos) {
+return this.nextMatch (pos, pt);
+} else if (pos < pt.src.length ()) {
+pt.src.charAt (pos);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+if (this.retIsEnd) {
+return "$";
+} else {
+return "\\Z";
+}});
+Clazz_overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.End (this.retIsEnd);
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.FastMulti", ["com.stevesoft.pat.RegSyntaxError", "$.patInt"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.fewestMatches = null;
+this.mostMatches = null;
+this.matchFewest = false;
+this.step = -1;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "FastMulti", com.stevesoft.pat.PatternSub);
+Clazz_overrideMethod (c$, "minChars", 
+function () {
+return this.sub.countMinChars ().mul (this.fewestMatches);
+});
+Clazz_overrideMethod (c$, "maxChars", 
+function () {
+return this.sub.countMaxChars ().mul (this.mostMatches);
+});
+Clazz_makeConstructor (c$, 
+function (a, b, p) {
+Clazz_superConstructor (this, com.stevesoft.pat.FastMulti, []);
+if (p == null) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Null length pattern followed by *, +, or other Multi.");
+}this.fewestMatches = a;
+this.mostMatches = b;
+this.sub = p;
+this.step = p.countMinChars ().intValue ();
+this.sub.setParent (null);
+}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");
+Clazz_defineMethod (c$, "toString", 
+function () {
+return this.sub.toString () + "{" + this.fewestMatches + "," + this.mostMatches + "}" + (this.matchFewest ? "?" : "") + "(?# <= fast multi)" + this.nextString ();
+});
+Clazz_defineMethod (c$, "matchInternal", 
+function (pos, pt) {
+var m = -1;
+var i = pos;
+var endstr = pt.src.length () - this.step;
+var matches =  new com.stevesoft.pat.patInt (0);
+if (this.matchFewest) {
+if (this.fewestMatches.lessEq (matches)) {
+var ii = this.nextMatch (i, pt);
+if (ii >= 0) {
+return ii;
+}}while (i >= 0 && i <= endstr) {
+i = this.sub.matchInternal (i, pt);
+if (i >= 0) {
+matches.inc ();
+if (this.fewestMatches.lessEq (matches)) {
+var ii = this.nextMatch (i, pt);
+if (ii >= 0) {
+return ii;
+}}if (matches.equals (this.mostMatches)) {
+return -1;
+}}}
+return -1;
+}var nMatches = 0;
+while (this.fewestMatches.intValue () > nMatches) {
+i = this.sub.matchInternal (i, pt);
+if (i >= 0) {
+nMatches++;
+} else {
+return -1;
+}}
+m = i;
+if (this.mostMatches.finite ()) {
+while (nMatches < this.mostMatches.intValue ()) {
+i = this.sub.matchInternal (i, pt);
+if (i >= 0) {
+m = i;
+nMatches++;
+} else {
+break;
+}}
+} else {
+while (true) {
+i = this.sub.matchInternal (i, pt);
+if (i >= 0) {
+m = i;
+nMatches++;
+} else {
+break;
+}}
+}while (m >= pos) {
+var r = this.nextMatch (m, pt);
+if (r >= 0) {
+return r;
+}m -= this.step;
+nMatches--;
+if (nMatches < this.fewestMatches.intValue ()) {
+return -1;
+}}
+return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+try {
+var fm =  new com.stevesoft.pat.FastMulti (this.fewestMatches, this.mostMatches, this.sub.clone (h));
+fm.matchFewest = this.matchFewest;
+return fm;
+} catch (rs) {
+if (Clazz_exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+return null;
+} else {
+throw rs;
+}
+}
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["java.lang.Error"], "com.stevesoft.pat.RegSyntaxError", ["com.stevesoft.pat.RegSyntax"], function () {
+c$ = Clazz_declareType (com.stevesoft.pat, "RegSyntaxError", Error);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, com.stevesoft.pat.RegSyntaxError, []);
+});
+c$.endItAll = Clazz_defineMethod (c$, "endItAll", 
+function (s) {
+if (com.stevesoft.pat.RegSyntaxError.RegSyntaxErrorEnabled) {
+throw  new com.stevesoft.pat.RegSyntaxError (s);
+}throw  new com.stevesoft.pat.RegSyntax (s);
+}, "~S");
+Clazz_defineStatics (c$,
+"RegSyntaxErrorEnabled", false);
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["java.lang.Exception"], "com.stevesoft.pat.RegSyntax", null, function () {
+c$ = Clazz_declareType (com.stevesoft.pat, "RegSyntax", Exception);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, com.stevesoft.pat.RegSyntax, []);
+});
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Group", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.op = '\0';
+this.cl = '\0';
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Group", com.stevesoft.pat.Pattern);
+Clazz_makeConstructor (c$, 
+function (opi, cli) {
+Clazz_superConstructor (this, com.stevesoft.pat.Group, []);
+this.op = opi;
+this.cl = cli;
+}, "~S,~S");
+Clazz_overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+var i;
+var count = 1;
+if (pos < pt.src.length ()) {
+if (!this.Masked (pos, pt) && pt.src.charAt (pos) != this.op) {
+return -1;
+}}for (i = pos + 1; i < pt.src.length (); i++) {
+var c = pt.src.charAt (i);
+var b = !this.Masked (i, pt);
+if (b && c == '\\') {
+i++;
+} else {
+if (b && c == this.cl) {
+count--;
+}if (count == 0) {
+return this.nextMatch (i + 1, pt);
+}if (b && c == this.op) {
+count++;
+}}}
+return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return "(?@" + this.op + this.cl + ")" + this.nextString ();
+});
+Clazz_overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (2);
+});
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.Group (this.op, this.cl);
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.Multi", ["com.stevesoft.pat.Multi_stage2"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.a = null;
+this.b = null;
+this.p = null;
+this.st2 = null;
+this.matchFewest = false;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Multi", com.stevesoft.pat.PatternSub);
+Clazz_overrideMethod (c$, "minChars", 
+function () {
+return this.a.mul (this.p.countMinChars ());
+});
+Clazz_overrideMethod (c$, "maxChars", 
+function () {
+return this.b.mul (this.p.countMaxChars ());
+});
+Clazz_makeConstructor (c$, 
+function (a, b, p) {
+Clazz_superConstructor (this, com.stevesoft.pat.Multi, []);
+this.a = a;
+this.b = b;
+this.p = p;
+this.st2 =  new com.stevesoft.pat.Multi_stage2 (a, b, p);
+this.st2.parent = this;
+this.sub = this.st2.sub;
+}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+this.st2.matchFewest = this.matchFewest;
+return this.st2.toString ();
+});
+Clazz_overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+try {
+this.st2 =  new com.stevesoft.pat.Multi_stage2 (this.a, this.b, this.p);
+} catch (r__) {
+if (Clazz_exceptionOf (r__, com.stevesoft.pat.RegSyntax)) {
+} else {
+throw r__;
+}
+}
+this.st2.matchFewest = this.matchFewest;
+this.st2.parent = this;
+return this.st2.matchInternal (pos, pt);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+try {
+var m =  new com.stevesoft.pat.Multi (this.a, this.b, (this.p).clone (h));
+m.matchFewest = this.matchFewest;
+return m;
+} catch (rs) {
+if (Clazz_exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+return null;
+} else {
+throw rs;
+}
+}
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.PatternSub"], "com.stevesoft.pat.Multi_stage2", ["com.stevesoft.pat.RegSyntaxError", "$.patInt"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.nextRet = null;
+this.count = null;
+this.matchMin = null;
+this.matchMax = null;
+this.matchFewest = false;
+this.pos_old = -1;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Multi_stage2", com.stevesoft.pat.PatternSub);
+Clazz_defineMethod (c$, "toString", 
+function () {
+var ret = "";
+ret += this.sub.toString ();
+ret += "{" + this.matchMin + "," + this.matchMax + "}";
+if (this.matchFewest) {
+ret += "?";
+}ret += this.parent.nextString ();
+return ret;
+});
+Clazz_makeConstructor (c$, 
+function (a, b, p) {
+Clazz_superConstructor (this, com.stevesoft.pat.Multi_stage2, []);
+if (p == null) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Multiple match of Null pattern requested.");
+}this.sub = p;
+this.nextRet = this;
+this.sub.setParent (this);
+this.matchMin = a;
+this.matchMax = b;
+this.count =  new com.stevesoft.pat.patInt (0);
+if (!a.lessEq (b)) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Bad Multi Args: " + a + ">" + b);
+}var i =  new com.stevesoft.pat.patInt (-1);
+if (a.lessEq (i)) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Bad Multi Args: " + a + "< 0");
+}}, "com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");
+Clazz_defineMethod (c$, "getNext", 
+function () {
+return this.nextRet;
+});
+Clazz_overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+this.sub.setParent (this);
+var canUse = -1;
+if (this.pos_old >= 0 && pos == this.pos_old) {
+return -1;
+}this.pos_old = pos;
+if (this.matchMin.lessEq (this.count)) {
+canUse = pos;
+}if (!this.count.lessEq (this.matchMax) || pos > pt.src.length ()) {
+return -1;
+}if ((this.matchFewest || this.count.equals (this.matchMax)) && canUse >= 0) {
+var n = Clazz_superCall (this, com.stevesoft.pat.Multi_stage2, "getNext", []);
+if (n == null) {
+return canUse;
+}var ret = this.testMatch (n, pos, pt);
+if (ret >= 0) {
+return ret;
+} else {
+canUse = -1;
+}}this.count.inc ();
+try {
+if (this.count.lessEq (this.matchMax)) {
+var r = this.testMatch (this.sub, pos, pt);
+if (r >= 0) {
+return r;
+}}} finally {
+this.count.dec ();
+}
+if (!this.matchFewest && canUse >= 0) {
+var n = Clazz_superCall (this, com.stevesoft.pat.Multi_stage2, "getNext", []);
+if (n == null) {
+return canUse;
+}var ret = this.testMatch (n, pos, pt);
+return ret;
+} else {
+return canUse;
+}}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+try {
+var m =  new com.stevesoft.pat.Multi_stage2 (this.matchMin, this.matchMax, this.sub.clone (h));
+m.matchFewest = this.matchFewest;
+return m;
+} catch (rs) {
+if (Clazz_exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+return null;
+} else {
+throw rs;
+}
+}
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.NullPattern", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz_declareType (com.stevesoft.pat, "NullPattern", com.stevesoft.pat.Pattern);
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return this.nextString ();
+});
+Clazz_overrideMethod (c$, "matchInternal", 
+function (p, pt) {
+return this.nextMatch (p, pt);
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (0);
+});
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.NullPattern ();
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Or", "$.SubMark"], "com.stevesoft.pat.OrMark", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.sm = null;
+this.id = 0;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "OrMark", com.stevesoft.pat.Or);
+Clazz_prepareFields (c$, function () {
+this.sm =  new com.stevesoft.pat.SubMark ();
+});
+Clazz_makeConstructor (c$, 
+function (i) {
+Clazz_superConstructor (this, com.stevesoft.pat.OrMark, []);
+this.sm.om = this;
+this.id = i;
+}, "~N");
+Clazz_overrideMethod (c$, "leftForm", 
+function () {
+return "(";
+});
+Clazz_defineMethod (c$, "getNext", 
+function () {
+return this.sm;
+});
+Clazz_defineMethod (c$, "matchInternal", 
+function (pos, pt) {
+this.sm.next = Clazz_superCall (this, com.stevesoft.pat.OrMark, "getNext", []);
+if (pt.marks == null) {
+var n2 = 2 * pt.nMarks + 2;
+pt.marks =  Clazz_newIntArray (n2, 0);
+for (var i = 0; i < n2; i++) {
+pt.marks[i] = -1;
+}
+}pt.marks[this.id] = pos;
+var ret = Clazz_superCall (this, com.stevesoft.pat.OrMark, "matchInternal", [pos, pt]);
+if (ret < 0) {
+pt.marks[this.id] = -1;
+} else if (pt.marks[this.id] > pt.marks[this.id + pt.nMarks]) {
+var swap = pt.marks[this.id];
+pt.marks[this.id] = pt.marks[this.id + pt.nMarks] + 1;
+pt.marks[this.id + pt.nMarks] = swap + 1;
+}return ret;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+var om =  new com.stevesoft.pat.OrMark (this.id);
+h.put (om, om);
+h.put (this, om);
+for (var i = 0; i < this.v.size (); i++) {
+om.v.addElement ((this.v.elementAt (i)).clone (h));
+}
+return om;
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.SubMark", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.end_pos = 0;
+this.start_pos = 0;
+this.om = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "SubMark", com.stevesoft.pat.Pattern);
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return "";
+});
+Clazz_overrideMethod (c$, "matchInternal", 
+function (i, pt) {
+pt.marks[this.om.id + pt.nMarks] = i;
+var ret = this.nextMatch (i, pt);
+if (ret < 0) {
+pt.marks[this.om.id + pt.nMarks] = -1;
+}return ret;
+}, "~N,com.stevesoft.pat.Pthings");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (null, "com.stevesoft.pat.Prop", ["com.stevesoft.pat.Bits"], function () {
+c$ = Clazz_declareType (com.stevesoft.pat, "Prop");
+c$.isDecimalDigit = Clazz_defineMethod (c$, "isDecimalDigit", 
+function (c) {
+if (com.stevesoft.pat.Bits.decimal_digit == null) {
+com.stevesoft.pat.Bits.decimal_digit_f ();
+}return com.stevesoft.pat.Bits.decimal_digit.get (c.charCodeAt (0));
+}, "~S");
+c$.isAlphabetic = Clazz_defineMethod (c$, "isAlphabetic", 
+function (c) {
+if (com.stevesoft.pat.Bits.letter == null) {
+com.stevesoft.pat.Bits.letter_f ();
+}return com.stevesoft.pat.Bits.letter.get (c.charCodeAt (0));
+}, "~S");
+c$.isMath = Clazz_defineMethod (c$, "isMath", 
+function (c) {
+if (com.stevesoft.pat.Bits.math == null) {
+com.stevesoft.pat.Bits.math_f ();
+}return com.stevesoft.pat.Bits.math.get (c.charCodeAt (0));
+}, "~S");
+c$.isCurrency = Clazz_defineMethod (c$, "isCurrency", 
+function (c) {
+if (com.stevesoft.pat.Bits.currency == null) {
+com.stevesoft.pat.Bits.currency_f ();
+}return com.stevesoft.pat.Bits.currency.get (c.charCodeAt (0));
+}, "~S");
+c$.isWhite = Clazz_defineMethod (c$, "isWhite", 
+function (c) {
+if (com.stevesoft.pat.Bits.white == null) {
+com.stevesoft.pat.Bits.white_f ();
+}return com.stevesoft.pat.Bits.white.get (c.charCodeAt (0));
+}, "~S");
+c$.isPunct = Clazz_defineMethod (c$, "isPunct", 
+function (c) {
+if (com.stevesoft.pat.Bits.punct == null) {
+com.stevesoft.pat.Bits.punct_f ();
+}return com.stevesoft.pat.Bits.punct.get (c.charCodeAt (0));
+}, "~S");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+c$ = Clazz_decorateAsClass (function () {
+this.carray = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Bits");
+Clazz_makeConstructor (c$, 
+function (carray) {
+this.carray = carray;
+}, "~A");
+Clazz_defineMethod (c$, "get", 
+function (i) {
+return ((this.carray[i >> 4]).charCodeAt (0) & (1 << (i & 15))) != 0;
+}, "~N");
+Clazz_defineMethod (c$, "set", 
+function (i, b) {
+if (b) {
+this.carray[i >> 4] = String.fromCharCode ((this.carray[i >> 4]).charCodeAt (0) | ((String.fromCharCode (1)).charCodeAt (0) << (i & 15)));
+} else {
+this.carray[i >> 4] = String.fromCharCode ((this.carray[i >> 4]).charCodeAt (0) & (String.fromCharCode (~(1 << (i & 15)))).charCodeAt (0));
+}}, "~N,~B");
+c$.upper_f = Clazz_defineMethod (c$, "upper_f", 
+function () {
+var data =  Clazz_newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.upper =  new com.stevesoft.pat.Bits (data);
+data[4] = String.fromCharCode (0xfffe);
+data[5] = String.fromCharCode (0x07ff);
+data[12] = String.fromCharCode (0xffff);
+data[13] = String.fromCharCode (0x7f7f);
+data[16] = String.fromCharCode (0x5555);
+data[17] = String.fromCharCode (0x5555);
+data[18] = String.fromCharCode (0x5555);
+data[19] = String.fromCharCode (0xaa55);
+data[20] = String.fromCharCode (0x54aa);
+data[21] = String.fromCharCode (0x5555);
+data[22] = String.fromCharCode (0x5555);
+data[23] = String.fromCharCode (0x2b55);
+data[24] = String.fromCharCode (0xced6);
+data[25] = String.fromCharCode (0xb1db);
+data[26] = String.fromCharCode (0xd2d5);
+data[27] = String.fromCharCode (0x11ae);
+data[28] = String.fromCharCode (0xa490);
+data[29] = String.fromCharCode (0x4aaa);
+data[30] = String.fromCharCode (0x5555);
+data[31] = String.fromCharCode (0x5412);
+data[32] = String.fromCharCode (0x5555);
+data[33] = 'U';
+data[56] = String.fromCharCode (0xd740);
+data[57] = String.fromCharCode (0xfffe);
+data[58] = String.fromCharCode (0x0ffb);
+data[61] = String.fromCharCode (0x541c);
+data[62] = String.fromCharCode (0x5555);
+data[64] = String.fromCharCode (0xdffe);
+data[65] = String.fromCharCode (0xffff);
+data[66] = String.fromCharCode (0xffff);
+data[70] = String.fromCharCode (0x5555);
+data[71] = String.fromCharCode (0x5555);
+data[72] = String.fromCharCode (0x0001);
+data[73] = String.fromCharCode (0x5555);
+data[74] = String.fromCharCode (0x5555);
+data[75] = String.fromCharCode (0x5555);
+data[76] = String.fromCharCode (0x088a);
+data[77] = String.fromCharCode (0x5555);
+data[78] = String.fromCharCode (0x4555);
+data[79] = String.fromCharCode (0x0115);
+data[83] = String.fromCharCode (0xfffe);
+data[84] = String.fromCharCode (0xffff);
+data[85] = String.fromCharCode (0x007f);
+data[266] = String.fromCharCode (0xffff);
+data[267] = String.fromCharCode (0xffff);
+data[268] = String.fromCharCode (0x003f);
+data[480] = String.fromCharCode (0x5555);
+data[481] = String.fromCharCode (0x5555);
+data[482] = String.fromCharCode (0x5555);
+data[483] = String.fromCharCode (0x5555);
+data[484] = String.fromCharCode (0x5555);
+data[485] = String.fromCharCode (0x5555);
+data[486] = String.fromCharCode (0x5555);
+data[487] = String.fromCharCode (0x5555);
+data[488] = String.fromCharCode (0x5555);
+data[489] = String.fromCharCode (0x0015);
+data[490] = String.fromCharCode (0x5555);
+data[491] = String.fromCharCode (0x5555);
+data[492] = String.fromCharCode (0x5555);
+data[493] = String.fromCharCode (0x5555);
+data[494] = String.fromCharCode (0x5555);
+data[495] = String.fromCharCode (0x0155);
+data[496] = String.fromCharCode (0xff00);
+data[497] = String.fromCharCode (0x3f00);
+data[498] = String.fromCharCode (0xff00);
+data[499] = String.fromCharCode (0xff00);
+data[500] = String.fromCharCode (0x3f00);
+data[501] = String.fromCharCode (0xaa00);
+data[502] = String.fromCharCode (0xff00);
+data[504] = String.fromCharCode (0xff00);
+data[505] = String.fromCharCode (0xff00);
+data[506] = String.fromCharCode (0xff00);
+data[507] = String.fromCharCode (0x5f00);
+data[508] = String.fromCharCode (0x1f00);
+data[509] = String.fromCharCode (0x0f00);
+data[510] = String.fromCharCode (0x1f00);
+data[511] = String.fromCharCode (0x1f00);
+data[528] = String.fromCharCode (0x3884);
+data[529] = String.fromCharCode (0x3f27);
+data[530] = String.fromCharCode (0x3d50);
+data[531] = String.fromCharCode (0x000b);
+data[4082] = String.fromCharCode (0xfffe);
+data[4083] = String.fromCharCode (0x07ff);
+data[4100] = String.fromCharCode (0xfffe);
+data[4101] = String.fromCharCode (0x07ff);
+data[4108] = String.fromCharCode (0xffff);
+data[4109] = String.fromCharCode (0x7f7f);
+data[4112] = String.fromCharCode (0x5555);
+data[4113] = String.fromCharCode (0x5555);
+data[4114] = String.fromCharCode (0x5555);
+data[4115] = String.fromCharCode (0xaa55);
+data[4116] = String.fromCharCode (0x54aa);
+data[4117] = String.fromCharCode (0x5555);
+data[4118] = String.fromCharCode (0x5555);
+data[4119] = String.fromCharCode (0x2b55);
+data[4120] = String.fromCharCode (0xced6);
+data[4121] = String.fromCharCode (0xb1db);
+data[4122] = String.fromCharCode (0xd2d5);
+data[4123] = String.fromCharCode (0x11ae);
+data[4124] = String.fromCharCode (0xa490);
+data[4125] = String.fromCharCode (0x4aaa);
+data[4126] = String.fromCharCode (0x5555);
+data[4127] = String.fromCharCode (0x5412);
+data[4128] = String.fromCharCode (0x5555);
+data[4129] = 'U';
+data[4152] = String.fromCharCode (0xd740);
+data[4153] = String.fromCharCode (0xfffe);
+data[4154] = String.fromCharCode (0x0ffb);
+data[4157] = String.fromCharCode (0x541c);
+data[4158] = 'U';
+});
+c$.lower_f = Clazz_defineMethod (c$, "lower_f", 
+function () {
+var data =  Clazz_newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.lower =  new com.stevesoft.pat.Bits (data);
+data[6] = String.fromCharCode (0xfffe);
+data[7] = String.fromCharCode (0x07ff);
+data[10] = String.fromCharCode (0x0400);
+data[11] = String.fromCharCode (0x0420);
+data[13] = String.fromCharCode (0x8000);
+data[14] = String.fromCharCode (0xffff);
+data[15] = String.fromCharCode (0xff7f);
+data[16] = String.fromCharCode (0xaaaa);
+data[17] = String.fromCharCode (0xaaaa);
+data[18] = String.fromCharCode (0xaaaa);
+data[19] = String.fromCharCode (0x55aa);
+data[20] = String.fromCharCode (0xab55);
+data[21] = String.fromCharCode (0xaaaa);
+data[22] = String.fromCharCode (0xaaaa);
+data[23] = String.fromCharCode (0xd4aa);
+data[24] = String.fromCharCode (0x3129);
+data[25] = String.fromCharCode (0x4e24);
+data[26] = String.fromCharCode (0x292a);
+data[27] = String.fromCharCode (0x2651);
+data[28] = String.fromCharCode (0x5240);
+data[29] = String.fromCharCode (0xb555);
+data[30] = String.fromCharCode (0xaaaa);
+data[31] = String.fromCharCode (0xa829);
+data[32] = String.fromCharCode (0xaaaa);
+data[33] = String.fromCharCode (0x00aa);
+data[37] = String.fromCharCode (0xffff);
+data[38] = String.fromCharCode (0xffff);
+data[39] = String.fromCharCode (0xffff);
+data[40] = String.fromCharCode (0xffff);
+data[41] = String.fromCharCode (0xffff);
+data[42] = String.fromCharCode (0x01ff);
+data[57] = String.fromCharCode (0x0001);
+data[58] = String.fromCharCode (0xf000);
+data[59] = String.fromCharCode (0xffff);
+data[60] = String.fromCharCode (0x7fff);
+data[61] = 'c';
+data[62] = String.fromCharCode (0xaaa8);
+data[63] = String.fromCharCode (0x0007);
+data[67] = String.fromCharCode (0xffff);
+data[68] = String.fromCharCode (0xffff);
+data[69] = String.fromCharCode (0xdffe);
+data[70] = String.fromCharCode (0xaaaa);
+data[71] = String.fromCharCode (0xaaaa);
+data[72] = String.fromCharCode (0x0002);
+data[73] = String.fromCharCode (0xaaaa);
+data[74] = String.fromCharCode (0xaaaa);
+data[75] = String.fromCharCode (0xaaaa);
+data[76] = String.fromCharCode (0x1114);
+data[77] = String.fromCharCode (0xaaaa);
+data[78] = String.fromCharCode (0x8aaa);
+data[79] = String.fromCharCode (0x022a);
+data[86] = String.fromCharCode (0xfffe);
+data[87] = String.fromCharCode (0xffff);
+data[88] = String.fromCharCode (0x00ff);
+data[269] = String.fromCharCode (0xffff);
+data[270] = String.fromCharCode (0xffff);
+data[271] = String.fromCharCode (0x007f);
+data[480] = String.fromCharCode (0xaaaa);
+data[481] = String.fromCharCode (0xaaaa);
+data[482] = String.fromCharCode (0xaaaa);
+data[483] = String.fromCharCode (0xaaaa);
+data[484] = String.fromCharCode (0xaaaa);
+data[485] = String.fromCharCode (0xaaaa);
+data[486] = String.fromCharCode (0xaaaa);
+data[487] = String.fromCharCode (0xaaaa);
+data[488] = String.fromCharCode (0xaaaa);
+data[489] = String.fromCharCode (0x0fea);
+data[490] = String.fromCharCode (0xaaaa);
+data[491] = String.fromCharCode (0xaaaa);
+data[492] = String.fromCharCode (0xaaaa);
+data[493] = String.fromCharCode (0xaaaa);
+data[494] = String.fromCharCode (0xaaaa);
+data[495] = String.fromCharCode (0x02aa);
+data[496] = String.fromCharCode (0x00ff);
+data[497] = String.fromCharCode (0x003f);
+data[498] = String.fromCharCode (0x00ff);
+data[499] = String.fromCharCode (0x00ff);
+data[500] = String.fromCharCode (0x003f);
+data[501] = String.fromCharCode (0x00ff);
+data[502] = String.fromCharCode (0x00ff);
+data[503] = String.fromCharCode (0x3fff);
+data[504] = String.fromCharCode (0x00ff);
+data[505] = String.fromCharCode (0x00ff);
+data[506] = String.fromCharCode (0x00ff);
+data[507] = String.fromCharCode (0x00df);
+data[508] = String.fromCharCode (0x00dc);
+data[509] = String.fromCharCode (0x00cf);
+data[510] = String.fromCharCode (0x00ff);
+data[511] = String.fromCharCode (0x00dc);
+data[519] = String.fromCharCode (0x8000);
+data[528] = String.fromCharCode (0xc400);
+data[529] = String.fromCharCode (0x0008);
+data[530] = String.fromCharCode (0xc000);
+data[531] = String.fromCharCode (0x0010);
+data[4016] = String.fromCharCode (0x007f);
+data[4017] = String.fromCharCode (0x00f8);
+data[4084] = String.fromCharCode (0xfffe);
+data[4085] = String.fromCharCode (0x07ff);
+data[4102] = String.fromCharCode (0xfffe);
+data[4103] = String.fromCharCode (0x07ff);
+data[4106] = String.fromCharCode (0x0400);
+data[4107] = String.fromCharCode (0x0420);
+data[4109] = String.fromCharCode (0x8000);
+data[4110] = String.fromCharCode (0xffff);
+data[4111] = String.fromCharCode (0xff7f);
+data[4112] = String.fromCharCode (0xaaaa);
+data[4113] = String.fromCharCode (0xaaaa);
+data[4114] = String.fromCharCode (0xaaaa);
+data[4115] = String.fromCharCode (0x55aa);
+data[4116] = String.fromCharCode (0xab55);
+data[4117] = String.fromCharCode (0xaaaa);
+data[4118] = String.fromCharCode (0xaaaa);
+data[4119] = String.fromCharCode (0xd4aa);
+data[4120] = String.fromCharCode (0x3129);
+data[4121] = String.fromCharCode (0x4e24);
+data[4122] = String.fromCharCode (0x292a);
+data[4123] = String.fromCharCode (0x2651);
+data[4124] = String.fromCharCode (0x5240);
+data[4125] = String.fromCharCode (0xb555);
+data[4126] = String.fromCharCode (0xaaaa);
+data[4127] = String.fromCharCode (0xa829);
+data[4128] = String.fromCharCode (0xaaaa);
+data[4129] = String.fromCharCode (0x00aa);
+data[4133] = String.fromCharCode (0xffff);
+data[4134] = String.fromCharCode (0xffff);
+data[4135] = String.fromCharCode (0xffff);
+data[4136] = String.fromCharCode (0xffff);
+data[4137] = String.fromCharCode (0xffff);
+data[4138] = String.fromCharCode (0x01ff);
+data[4153] = String.fromCharCode (0x0001);
+data[4154] = String.fromCharCode (0xf000);
+data[4155] = String.fromCharCode (0xffff);
+data[4156] = String.fromCharCode (0x7fff);
+data[4157] = 'c';
+data[4158] = String.fromCharCode (0x00a8);
+});
+c$.title_f = Clazz_defineMethod (c$, "title_f", 
+function () {
+var data =  Clazz_newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.title =  new com.stevesoft.pat.Bits (data);
+data[6] = String.fromCharCode (0xfffe);
+data[7] = String.fromCharCode (0x07ff);
+data[10] = String.fromCharCode (0x0400);
+data[11] = String.fromCharCode (0x0420);
+data[13] = String.fromCharCode (0x8000);
+data[14] = String.fromCharCode (0xffff);
+data[15] = String.fromCharCode (0xff7f);
+data[16] = String.fromCharCode (0xaaaa);
+data[17] = String.fromCharCode (0xaaaa);
+data[18] = String.fromCharCode (0xaaaa);
+data[19] = String.fromCharCode (0x55aa);
+data[20] = String.fromCharCode (0xab55);
+data[21] = String.fromCharCode (0xaaaa);
+data[22] = String.fromCharCode (0xaaaa);
+data[23] = String.fromCharCode (0xd4aa);
+data[24] = String.fromCharCode (0x3129);
+data[25] = String.fromCharCode (0x4e24);
+data[26] = String.fromCharCode (0x292a);
+data[27] = String.fromCharCode (0x2651);
+data[28] = String.fromCharCode (0x5240);
+data[29] = String.fromCharCode (0xb555);
+data[30] = String.fromCharCode (0xaaaa);
+data[31] = String.fromCharCode (0xa829);
+data[32] = String.fromCharCode (0xaaaa);
+data[33] = String.fromCharCode (0x00aa);
+data[37] = String.fromCharCode (0xffff);
+data[38] = String.fromCharCode (0xffff);
+data[39] = String.fromCharCode (0xffff);
+data[40] = String.fromCharCode (0xffff);
+data[41] = String.fromCharCode (0xffff);
+data[42] = String.fromCharCode (0x01ff);
+data[57] = String.fromCharCode (0x0001);
+data[58] = String.fromCharCode (0xf000);
+data[59] = String.fromCharCode (0xffff);
+data[60] = String.fromCharCode (0x7fff);
+data[61] = 'c';
+data[62] = String.fromCharCode (0xaaa8);
+data[63] = String.fromCharCode (0x0007);
+data[67] = String.fromCharCode (0xffff);
+data[68] = String.fromCharCode (0xffff);
+data[69] = String.fromCharCode (0xdffe);
+data[70] = String.fromCharCode (0xaaaa);
+data[71] = String.fromCharCode (0xaaaa);
+data[72] = String.fromCharCode (0x0002);
+data[73] = String.fromCharCode (0xaaaa);
+data[74] = String.fromCharCode (0xaaaa);
+data[75] = String.fromCharCode (0xaaaa);
+data[76] = String.fromCharCode (0x1114);
+data[77] = String.fromCharCode (0xaaaa);
+data[78] = String.fromCharCode (0x8aaa);
+data[79] = String.fromCharCode (0x022a);
+data[86] = String.fromCharCode (0xfffe);
+data[87] = String.fromCharCode (0xffff);
+data[88] = String.fromCharCode (0x00ff);
+data[269] = String.fromCharCode (0xffff);
+data[270] = String.fromCharCode (0xffff);
+data[271] = String.fromCharCode (0x007f);
+data[480] = String.fromCharCode (0xaaaa);
+data[481] = String.fromCharCode (0xaaaa);
+data[482] = String.fromCharCode (0xaaaa);
+data[483] = String.fromCharCode (0xaaaa);
+data[484] = String.fromCharCode (0xaaaa);
+data[485] = String.fromCharCode (0xaaaa);
+data[486] = String.fromCharCode (0xaaaa);
+data[487] = String.fromCharCode (0xaaaa);
+data[488] = String.fromCharCode (0xaaaa);
+data[489] = String.fromCharCode (0x0fea);
+data[490] = String.fromCharCode (0xaaaa);
+data[491] = String.fromCharCode (0xaaaa);
+data[492] = String.fromCharCode (0xaaaa);
+data[493] = String.fromCharCode (0xaaaa);
+data[494] = String.fromCharCode (0xaaaa);
+data[495] = String.fromCharCode (0x02aa);
+data[496] = String.fromCharCode (0x00ff);
+data[497] = String.fromCharCode (0x003f);
+data[498] = String.fromCharCode (0x00ff);
+data[499] = String.fromCharCode (0x00ff);
+data[500] = String.fromCharCode (0x003f);
+data[501] = String.fromCharCode (0x00ff);
+data[502] = String.fromCharCode (0x00ff);
+data[503] = String.fromCharCode (0x3fff);
+data[504] = String.fromCharCode (0x00ff);
+data[505] = String.fromCharCode (0x00ff);
+data[506] = String.fromCharCode (0x00ff);
+data[507] = String.fromCharCode (0x00df);
+data[508] = String.fromCharCode (0x00dc);
+data[509] = String.fromCharCode (0x00cf);
+data[510] = String.fromCharCode (0x00ff);
+data[511] = String.fromCharCode (0x00dc);
+data[519] = String.fromCharCode (0x8000);
+data[528] = String.fromCharCode (0xc400);
+data[529] = String.fromCharCode (0x0008);
+data[530] = String.fromCharCode (0xc000);
+data[531] = String.fromCharCode (0x0010);
+data[4016] = String.fromCharCode (0x007f);
+data[4017] = String.fromCharCode (0x00f8);
+data[4084] = String.fromCharCode (0xfffe);
+data[4085] = String.fromCharCode (0x07ff);
+data[4102] = String.fromCharCode (0xfffe);
+data[4103] = String.fromCharCode (0x07ff);
+data[4106] = String.fromCharCode (0x0400);
+data[4107] = String.fromCharCode (0x0420);
+data[4109] = String.fromCharCode (0x8000);
+data[4110] = String.fromCharCode (0xffff);
+data[4111] = String.fromCharCode (0xff7f);
+data[4112] = String.fromCharCode (0xaaaa);
+data[4113] = String.fromCharCode (0xaaaa);
+data[4114] = String.fromCharCode (0xaaaa);
+data[4115] = String.fromCharCode (0x55aa);
+data[4116] = String.fromCharCode (0xab55);
+data[4117] = String.fromCharCode (0xaaaa);
+data[4118] = String.fromCharCode (0xaaaa);
+data[4119] = String.fromCharCode (0xd4aa);
+data[4120] = String.fromCharCode (0x3129);
+data[4121] = String.fromCharCode (0x4e24);
+data[4122] = String.fromCharCode (0x292a);
+data[4123] = String.fromCharCode (0x2651);
+data[4124] = String.fromCharCode (0x5240);
+data[4125] = String.fromCharCode (0xb555);
+data[4126] = String.fromCharCode (0xaaaa);
+data[4127] = String.fromCharCode (0xa829);
+data[4128] = String.fromCharCode (0xaaaa);
+data[4129] = String.fromCharCode (0x00aa);
+data[4133] = String.fromCharCode (0xffff);
+data[4134] = String.fromCharCode (0xffff);
+data[4135] = String.fromCharCode (0xffff);
+data[4136] = String.fromCharCode (0xffff);
+data[4137] = String.fromCharCode (0xffff);
+data[4138] = String.fromCharCode (0x01ff);
+data[4153] = String.fromCharCode (0x0001);
+data[4154] = String.fromCharCode (0xf000);
+data[4155] = String.fromCharCode (0xffff);
+data[4156] = String.fromCharCode (0x7fff);
+data[4157] = 'c';
+data[4158] = String.fromCharCode (0x00a8);
+});
+c$.currency_f = Clazz_defineMethod (c$, "currency_f", 
+function () {
+var data =  Clazz_newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.currency =  new com.stevesoft.pat.Bits (data);
+data[2] = String.fromCharCode (0x0010);
+data[10] = String.fromCharCode (0x003c);
+data[159] = String.fromCharCode (0x000c);
+data[227] = String.fromCharCode (0x8000);
+data[522] = String.fromCharCode (0x1fff);
+data[4070] = String.fromCharCode (0x0200);
+data[4080] = String.fromCharCode (0x0010);
+data[4094] = 'c';
+data[4098] = String.fromCharCode (0x0010);
+data[4106] = String.fromCharCode (0x003c);
+});
+c$.decimal_digit_f = Clazz_defineMethod (c$, "decimal_digit_f", 
+function () {
+var data =  Clazz_newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.decimal_digit =  new com.stevesoft.pat.Bits (data);
+data[3] = String.fromCharCode (0x03ff);
+data[102] = String.fromCharCode (0x03ff);
+data[111] = String.fromCharCode (0x03ff);
+data[150] = String.fromCharCode (0xffc0);
+data[158] = String.fromCharCode (0xffc0);
+data[166] = String.fromCharCode (0xffc0);
+data[174] = String.fromCharCode (0xffc0);
+data[182] = String.fromCharCode (0xffc0);
+data[190] = String.fromCharCode (0xff80);
+data[198] = String.fromCharCode (0xffc0);
+data[206] = String.fromCharCode (0xffc0);
+data[214] = String.fromCharCode (0xffc0);
+data[229] = String.fromCharCode (0x03ff);
+data[237] = String.fromCharCode (0x03ff);
+data[242] = String.fromCharCode (0x03ff);
+data[4081] = String.fromCharCode (0x03ff);
+data[4099] = String.fromCharCode (0x03ff);
+});
+c$.math_f = Clazz_defineMethod (c$, "math_f", 
+function () {
+var data =  Clazz_newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.math =  new com.stevesoft.pat.Bits (data);
+data[2] = String.fromCharCode (0x0800);
+data[3] = String.fromCharCode (0x7000);
+data[7] = String.fromCharCode (0x5000);
+data[10] = String.fromCharCode (0x1000);
+data[11] = String.fromCharCode (0x0002);
+data[13] = String.fromCharCode (0x0080);
+data[15] = String.fromCharCode (0x0080);
+data[516] = String.fromCharCode (0x0010);
+data[519] = String.fromCharCode (0x1c00);
+data[520] = String.fromCharCode (0x1c00);
+data[537] = String.fromCharCode (0x001f);
+data[541] = String.fromCharCode (0x0014);
+data[544] = String.fromCharCode (0xffff);
+data[545] = String.fromCharCode (0xffff);
+data[546] = String.fromCharCode (0xffff);
+data[547] = String.fromCharCode (0xffff);
+data[548] = String.fromCharCode (0xffff);
+data[549] = String.fromCharCode (0xffff);
+data[550] = String.fromCharCode (0xffff);
+data[551] = String.fromCharCode (0xffff);
+data[552] = String.fromCharCode (0xffff);
+data[553] = String.fromCharCode (0xffff);
+data[554] = String.fromCharCode (0xffff);
+data[555] = String.fromCharCode (0xffff);
+data[556] = String.fromCharCode (0xffff);
+data[557] = String.fromCharCode (0xffff);
+data[558] = String.fromCharCode (0xffff);
+data[559] = String.fromCharCode (0x0003);
+data[560] = String.fromCharCode (0x0f00);
+data[562] = String.fromCharCode (0x0003);
+data[4018] = String.fromCharCode (0x0200);
+data[4070] = 't';
+data[4080] = String.fromCharCode (0x0800);
+data[4081] = String.fromCharCode (0x7000);
+data[4085] = String.fromCharCode (0x5000);
+data[4094] = String.fromCharCode (0x1f04);
+data[4098] = String.fromCharCode (0x0800);
+data[4099] = String.fromCharCode (0x7000);
+data[4103] = String.fromCharCode (0x5000);
+data[4106] = String.fromCharCode (0x1000);
+data[4107] = String.fromCharCode (0x0002);
+data[4109] = String.fromCharCode (0x0080);
+data[4111] = String.fromCharCode (0x0080);
+});
+c$.letter_f = Clazz_defineMethod (c$, "letter_f", 
+function () {
+var data =  Clazz_newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.letter =  new com.stevesoft.pat.Bits (data);
+data[4] = String.fromCharCode (0xfffe);
+data[5] = String.fromCharCode (0x07ff);
+data[6] = String.fromCharCode (0xfffe);
+data[7] = String.fromCharCode (0x07ff);
+data[10] = String.fromCharCode (0x0400);
+data[11] = String.fromCharCode (0x0420);
+data[12] = String.fromCharCode (0xffff);
+data[13] = String.fromCharCode (0xff7f);
+data[14] = String.fromCharCode (0xffff);
+data[15] = String.fromCharCode (0xff7f);
+data[16] = String.fromCharCode (0xffff);
+data[17] = String.fromCharCode (0xffff);
+data[18] = String.fromCharCode (0xffff);
+data[19] = String.fromCharCode (0xffff);
+data[20] = String.fromCharCode (0xffff);
+data[21] = String.fromCharCode (0xffff);
+data[22] = String.fromCharCode (0xffff);
+data[23] = String.fromCharCode (0xffff);
+data[24] = String.fromCharCode (0xffff);
+data[25] = String.fromCharCode (0xffff);
+data[26] = String.fromCharCode (0xffff);
+data[27] = String.fromCharCode (0xffff);
+data[28] = String.fromCharCode (0xffff);
+data[29] = String.fromCharCode (0xffff);
+data[30] = String.fromCharCode (0xffff);
+data[31] = String.fromCharCode (0xfc3f);
+data[32] = String.fromCharCode (0xffff);
+data[33] = String.fromCharCode (0x00ff);
+data[37] = String.fromCharCode (0xffff);
+data[38] = String.fromCharCode (0xffff);
+data[39] = String.fromCharCode (0xffff);
+data[40] = String.fromCharCode (0xffff);
+data[41] = String.fromCharCode (0xffff);
+data[42] = String.fromCharCode (0x01ff);
+data[43] = String.fromCharCode (0xf9ff);
+data[44] = String.fromCharCode (0x0003);
+data[45] = String.fromCharCode (0x0003);
+data[46] = String.fromCharCode (0x001f);
+data[55] = String.fromCharCode (0x0400);
+data[56] = String.fromCharCode (0xd740);
+data[57] = String.fromCharCode (0xffff);
+data[58] = String.fromCharCode (0xfffb);
+data[59] = String.fromCharCode (0xffff);
+data[60] = String.fromCharCode (0x7fff);
+data[61] = String.fromCharCode (0x547f);
+data[62] = String.fromCharCode (0xfffd);
+data[63] = String.fromCharCode (0x000f);
+data[64] = String.fromCharCode (0xdffe);
+data[65] = String.fromCharCode (0xffff);
+data[66] = String.fromCharCode (0xffff);
+data[67] = String.fromCharCode (0xffff);
+data[68] = String.fromCharCode (0xffff);
+data[69] = String.fromCharCode (0xdffe);
+data[70] = String.fromCharCode (0xffff);
+data[71] = String.fromCharCode (0xffff);
+data[72] = String.fromCharCode (0x0003);
+data[73] = String.fromCharCode (0xffff);
+data[74] = String.fromCharCode (0xffff);
+data[75] = String.fromCharCode (0xffff);
+data[76] = String.fromCharCode (0x199f);
+data[77] = String.fromCharCode (0xffff);
+data[78] = String.fromCharCode (0xcfff);
+data[79] = String.fromCharCode (0x033f);
+data[83] = String.fromCharCode (0xfffe);
+data[84] = String.fromCharCode (0xffff);
+data[85] = String.fromCharCode (0x027f);
+data[86] = String.fromCharCode (0xfffe);
+data[87] = String.fromCharCode (0xffff);
+data[88] = String.fromCharCode (0x00ff);
+data[93] = String.fromCharCode (0xffff);
+data[94] = String.fromCharCode (0x07ff);
+data[95] = String.fromCharCode (0x0007);
+data[98] = String.fromCharCode (0xfffe);
+data[99] = String.fromCharCode (0x07ff);
+data[100] = String.fromCharCode (0x07ff);
+data[103] = String.fromCharCode (0xfffe);
+data[104] = String.fromCharCode (0xffff);
+data[105] = String.fromCharCode (0xffff);
+data[106] = String.fromCharCode (0xffff);
+data[107] = String.fromCharCode (0x7cff);
+data[108] = String.fromCharCode (0x7fff);
+data[109] = String.fromCharCode (0x002f);
+data[110] = String.fromCharCode (0x0060);
+data[144] = String.fromCharCode (0xffe0);
+data[145] = String.fromCharCode (0xffff);
+data[146] = String.fromCharCode (0xffff);
+data[147] = String.fromCharCode (0x23ff);
+data[149] = String.fromCharCode (0xff00);
+data[150] = String.fromCharCode (0x0003);
+data[152] = String.fromCharCode (0x9fe0);
+data[153] = String.fromCharCode (0xfff9);
+data[154] = String.fromCharCode (0xfdff);
+data[155] = String.fromCharCode (0x03c5);
+data[157] = String.fromCharCode (0xb000);
+data[158] = String.fromCharCode (0x0003);
+data[159] = String.fromCharCode (0x0003);
+data[160] = String.fromCharCode (0x87e0);
+data[161] = String.fromCharCode (0xfff9);
+data[162] = String.fromCharCode (0xfdff);
+data[163] = String.fromCharCode (0x036d);
+data[165] = String.fromCharCode (0x5e00);
+data[167] = String.fromCharCode (0x001c);
+data[168] = String.fromCharCode (0xafe0);
+data[169] = String.fromCharCode (0xfffb);
+data[170] = String.fromCharCode (0xfdff);
+data[171] = String.fromCharCode (0x23ed);
+data[174] = String.fromCharCode (0x0001);
+data[176] = String.fromCharCode (0x9fe0);
+data[177] = String.fromCharCode (0xfff9);
+data[178] = String.fromCharCode (0xfdff);
+data[179] = String.fromCharCode (0x23cd);
+data[181] = String.fromCharCode (0xb000);
+data[182] = String.fromCharCode (0x0003);
+data[184] = String.fromCharCode (0xc7e0);
+data[185] = String.fromCharCode (0xd63d);
+data[186] = String.fromCharCode (0xc718);
+data[187] = String.fromCharCode (0x03bf);
+data[192] = String.fromCharCode (0xdfe0);
+data[193] = String.fromCharCode (0xfffd);
+data[194] = String.fromCharCode (0xfdff);
+data[195] = String.fromCharCode (0x03ef);
+data[198] = String.fromCharCode (0x0003);
+data[200] = String.fromCharCode (0xdfe0);
+data[201] = String.fromCharCode (0xfffd);
+data[202] = String.fromCharCode (0xfdff);
+data[203] = String.fromCharCode (0x03ef);
+data[205] = String.fromCharCode (0x4000);
+data[206] = String.fromCharCode (0x0003);
+data[208] = String.fromCharCode (0xdfe0);
+data[209] = String.fromCharCode (0xfffd);
+data[210] = String.fromCharCode (0xfdff);
+data[211] = String.fromCharCode (0x03ff);
+data[214] = String.fromCharCode (0x0003);
+data[224] = String.fromCharCode (0xfffe);
+data[225] = String.fromCharCode (0xffff);
+data[226] = String.fromCharCode (0x7fff);
+data[227] = String.fromCharCode (0x000d);
+data[228] = String.fromCharCode (0x007f);
+data[232] = String.fromCharCode (0x2596);
+data[233] = String.fromCharCode (0xfef0);
+data[234] = String.fromCharCode (0x6cae);
+data[235] = String.fromCharCode (0x200d);
+data[236] = String.fromCharCode (0x005f);
+data[237] = String.fromCharCode (0x3000);
+data[244] = String.fromCharCode (0xfeff);
+data[245] = String.fromCharCode (0xffff);
+data[246] = String.fromCharCode (0x03ff);
+data[266] = String.fromCharCode (0xffff);
+data[267] = String.fromCharCode (0xffff);
+data[268] = String.fromCharCode (0x003f);
+data[269] = String.fromCharCode (0xffff);
+data[270] = String.fromCharCode (0xffff);
+data[271] = String.fromCharCode (0x007f);
+data[272] = String.fromCharCode (0xffff);
+data[273] = String.fromCharCode (0xffff);
+data[274] = String.fromCharCode (0xffff);
+data[275] = String.fromCharCode (0xffff);
+data[276] = String.fromCharCode (0xffff);
+data[277] = String.fromCharCode (0x83ff);
+data[278] = String.fromCharCode (0xffff);
+data[279] = String.fromCharCode (0xffff);
+data[280] = String.fromCharCode (0xffff);
+data[281] = String.fromCharCode (0xffff);
+data[282] = String.fromCharCode (0xff07);
+data[283] = String.fromCharCode (0xffff);
+data[284] = String.fromCharCode (0xffff);
+data[285] = String.fromCharCode (0xffff);
+data[286] = String.fromCharCode (0xffff);
+data[287] = String.fromCharCode (0x03ff);
+data[480] = String.fromCharCode (0xffff);
+data[481] = String.fromCharCode (0xffff);
+data[482] = String.fromCharCode (0xffff);
+data[483] = String.fromCharCode (0xffff);
+data[484] = String.fromCharCode (0xffff);
+data[485] = String.fromCharCode (0xffff);
+data[486] = String.fromCharCode (0xffff);
+data[487] = String.fromCharCode (0xffff);
+data[488] = String.fromCharCode (0xffff);
+data[489] = String.fromCharCode (0x0fff);
+data[490] = String.fromCharCode (0xffff);
+data[491] = String.fromCharCode (0xffff);
+data[492] = String.fromCharCode (0xffff);
+data[493] = String.fromCharCode (0xffff);
+data[494] = String.fromCharCode (0xffff);
+data[495] = String.fromCharCode (0x03ff);
+data[496] = String.fromCharCode (0xffff);
+data[497] = String.fromCharCode (0x3f3f);
+data[498] = String.fromCharCode (0xffff);
+data[499] = String.fromCharCode (0xffff);
+data[500] = String.fromCharCode (0x3f3f);
+data[501] = String.fromCharCode (0xaaff);
+data[502] = String.fromCharCode (0xffff);
+data[503] = String.fromCharCode (0x3fff);
+data[504] = String.fromCharCode (0xffff);
+data[505] = String.fromCharCode (0xffff);
+data[506] = String.fromCharCode (0xffff);
+data[507] = String.fromCharCode (0x5fdf);
+data[508] = String.fromCharCode (0x1fdc);
+data[509] = String.fromCharCode (0x0fcf);
+data[510] = String.fromCharCode (0x1fff);
+data[511] = String.fromCharCode (0x1fdc);
+data[519] = String.fromCharCode (0x8000);
+data[528] = String.fromCharCode (0xfc84);
+data[529] = String.fromCharCode (0x3f2f);
+data[530] = String.fromCharCode (0xfd50);
+data[531] = String.fromCharCode (0x01fb);
+data[768] = String.fromCharCode (0x0020);
+data[771] = String.fromCharCode (0x003e);
+data[772] = String.fromCharCode (0xfffe);
+data[773] = String.fromCharCode (0xffff);
+data[774] = String.fromCharCode (0xffff);
+data[775] = String.fromCharCode (0xffff);
+data[776] = String.fromCharCode (0xffff);
+data[777] = String.fromCharCode (0x781f);
+data[778] = String.fromCharCode (0xfffe);
+data[779] = String.fromCharCode (0xffff);
+data[780] = String.fromCharCode (0xffff);
+data[781] = String.fromCharCode (0xffff);
+data[782] = String.fromCharCode (0xffff);
+data[783] = String.fromCharCode (0x77ff);
+data[784] = String.fromCharCode (0xffe0);
+data[785] = String.fromCharCode (0xffff);
+data[786] = String.fromCharCode (0x1fff);
+data[787] = String.fromCharCode (0xfffe);
+data[788] = String.fromCharCode (0xffff);
+data[789] = String.fromCharCode (0xffff);
+data[790] = String.fromCharCode (0xffff);
+data[791] = String.fromCharCode (0xffff);
+data[792] = String.fromCharCode (0x7fff);
+data[1248] = String.fromCharCode (0xffff);
+data[1249] = String.fromCharCode (0xffff);
+data[1250] = String.fromCharCode (0xffff);
+data[1251] = String.fromCharCode (0xffff);
+data[1252] = String.fromCharCode (0xffff);
+data[1253] = String.fromCharCode (0xffff);
+data[1254] = String.fromCharCode (0xffff);
+data[1255] = String.fromCharCode (0xffff);
+data[1256] = String.fromCharCode (0xffff);
+data[1257] = String.fromCharCode (0xffff);
+data[1258] = String.fromCharCode (0xffff);
+data[1259] = String.fromCharCode (0xffff);
+data[1260] = String.fromCharCode (0xffff);
+data[1261] = String.fromCharCode (0xffff);
+data[1262] = String.fromCharCode (0xffff);
+data[1263] = String.fromCharCode (0xffff);
+data[1264] = String.fromCharCode (0xffff);
+data[1265] = String.fromCharCode (0xffff);
+data[1266] = String.fromCharCode (0xffff);
+data[1267] = String.fromCharCode (0xffff);
+data[1268] = String.fromCharCode (0xffff);
+data[1269] = String.fromCharCode (0xffff);
+data[1270] = String.fromCharCode (0xffff);
+data[1271] = String.fromCharCode (0xffff);
+data[1272] = String.fromCharCode (0xffff);
+data[1273] = String.fromCharCode (0xffff);
+data[1274] = String.fromCharCode (0xffff);
+data[1275] = String.fromCharCode (0xffff);
+data[1276] = String.fromCharCode (0xffff);
+data[1277] = String.fromCharCode (0xffff);
+data[1278] = String.fromCharCode (0xffff);
+data[1279] = String.fromCharCode (0xffff);
+data[1280] = String.fromCharCode (0xffff);
+data[1281] = String.fromCharCode (0xffff);
+data[1282] = String.fromCharCode (0xffff);
+data[1283] = String.fromCharCode (0xffff);
+data[1284] = String.fromCharCode (0xffff);
+data[1285] = String.fromCharCode (0xffff);
+data[1286] = String.fromCharCode (0xffff);
+data[1287] = String.fromCharCode (0xffff);
+data[1288] = String.fromCharCode (0xffff);
+data[1289] = String.fromCharCode (0xffff);
+data[1290] = String.fromCharCode (0xffff);
+data[1291] = String.fromCharCode (0xffff);
+data[1292] = String.fromCharCode (0xffff);
+data[1293] = String.fromCharCode (0xffff);
+data[1294] = String.fromCharCode (0xffff);
+data[1295] = String.fromCharCode (0xffff);
+data[1296] = String.fromCharCode (0xffff);
+data[1297] = String.fromCharCode (0xffff);
+data[1298] = String.fromCharCode (0xffff);
+data[1299] = String.fromCharCode (0xffff);
+data[1300] = String.fromCharCode (0xffff);
+data[1301] = String.fromCharCode (0xffff);
+data[1302] = String.fromCharCode (0xffff);
+data[1303] = String.fromCharCode (0xffff);
+data[1304] = String.fromCharCode (0xffff);
+data[1305] = String.fromCharCode (0xffff);
+data[1306] = String.fromCharCode (0xffff);
+data[1307] = String.fromCharCode (0xffff);
+data[1308] = String.fromCharCode (0xffff);
+data[1309] = String.fromCharCode (0xffff);
+data[1310] = String.fromCharCode (0xffff);
+data[1311] = String.fromCharCode (0xffff);
+data[1312] = String.fromCharCode (0xffff);
+data[1313] = String.fromCharCode (0xffff);
+data[1314] = String.fromCharCode (0xffff);
+data[1315] = String.fromCharCode (0xffff);
+data[1316] = String.fromCharCode (0xffff);
+data[1317] = String.fromCharCode (0xffff);
+data[1318] = String.fromCharCode (0xffff);
+data[1319] = String.fromCharCode (0xffff);
+data[1320] = String.fromCharCode (0xffff);
+data[1321] = String.fromCharCode (0xffff);
+data[1322] = String.fromCharCode (0xffff);
+data[1323] = String.fromCharCode (0xffff);
+data[1324] = String.fromCharCode (0xffff);
+data[1325] = String.fromCharCode (0xffff);
+data[1326] = String.fromCharCode (0xffff);
+data[1327] = String.fromCharCode (0xffff);
+data[1328] = String.fromCharCode (0xffff);
+data[1329] = String.fromCharCode (0xffff);
+data[1330] = String.fromCharCode (0xffff);
+data[1331] = String.fromCharCode (0xffff);
+data[1332] = String.fromCharCode (0xffff);
+data[1333] = String.fromCharCode (0xffff);
+data[1334] = String.fromCharCode (0xffff);
+data[1335] = String.fromCharCode (0xffff);
+data[1336] = String.fromCharCode (0xffff);
+data[1337] = String.fromCharCode (0xffff);
+data[1338] = String.fromCharCode (0xffff);
+data[1339] = String.fromCharCode (0xffff);
+data[1340] = String.fromCharCode (0xffff);
+data[1341] = String.fromCharCode (0xffff);
+data[1342] = String.fromCharCode (0xffff);
+data[1343] = String.fromCharCode (0xffff);
+data[1344] = String.fromCharCode (0xffff);
+data[1345] = String.fromCharCode (0xffff);
+data[1346] = String.fromCharCode (0xffff);
+data[1347] = String.fromCharCode (0xffff);
+data[1348] = String.fromCharCode (0xffff);
+data[1349] = String.fromCharCode (0xffff);
+data[1350] = String.fromCharCode (0xffff);
+data[1351] = String.fromCharCode (0xffff);
+data[1352] = String.fromCharCode (0xffff);
+data[1353] = String.fromCharCode (0xffff);
+data[1354] = String.fromCharCode (0xffff);
+data[1355] = String.fromCharCode (0xffff);
+data[1356] = String.fromCharCode (0xffff);
+data[1357] = String.fromCharCode (0xffff);
+data[1358] = String.fromCharCode (0xffff);
+data[1359] = String.fromCharCode (0xffff);
+data[1360] = String.fromCharCode (0xffff);
+data[1361] = String.fromCharCode (0xffff);
+data[1362] = String.fromCharCode (0xffff);
+data[1363] = String.fromCharCode (0xffff);
+data[1364] = String.fromCharCode (0xffff);
+data[1365] = String.fromCharCode (0xffff);
+data[1366] = String.fromCharCode (0xffff);
+data[1367] = String.fromCharCode (0xffff);
+data[1368] = String.fromCharCode (0xffff);
+data[1369] = String.fromCharCode (0xffff);
+data[1370] = String.fromCharCode (0xffff);
+data[1371] = String.fromCharCode (0xffff);
+data[1372] = String.fromCharCode (0xffff);
+data[1373] = String.fromCharCode (0xffff);
+data[1374] = String.fromCharCode (0xffff);
+data[1375] = String.fromCharCode (0xffff);
+data[1376] = String.fromCharCode (0xffff);
+data[1377] = String.fromCharCode (0xffff);
+data[1378] = String.fromCharCode (0xffff);
+data[1379] = String.fromCharCode (0xffff);
+data[1380] = String.fromCharCode (0xffff);
+data[1381] = String.fromCharCode (0xffff);
+data[1382] = String.fromCharCode (0xffff);
+data[1383] = String.fromCharCode (0xffff);
+data[1384] = String.fromCharCode (0xffff);
+data[1385] = String.fromCharCode (0xffff);
+data[1386] = String.fromCharCode (0xffff);
+data[1387] = String.fromCharCode (0xffff);
+data[1388] = String.fromCharCode (0xffff);
+data[1389] = String.fromCharCode (0xffff);
+data[1390] = String.fromCharCode (0xffff);
+data[1391] = String.fromCharCode (0xffff);
+data[1392] = String.fromCharCode (0xffff);
+data[1393] = String.fromCharCode (0xffff);
+data[1394] = String.fromCharCode (0xffff);
+data[1395] = String.fromCharCode (0xffff);
+data[1396] = String.fromCharCode (0xffff);
+data[1397] = String.fromCharCode (0xffff);
+data[1398] = String.fromCharCode (0xffff);
+data[1399] = String.fromCharCode (0xffff);
+data[1400] = String.fromCharCode (0xffff);
+data[1401] = String.fromCharCode (0xffff);
+data[1402] = String.fromCharCode (0xffff);
+data[1403] = String.fromCharCode (0xffff);
+data[1404] = String.fromCharCode (0xffff);
+data[1405] = String.fromCharCode (0xffff);
+data[1406] = String.fromCharCode (0xffff);
+data[1407] = String.fromCharCode (0xffff);
+data[1408] = String.fromCharCode (0xffff);
+data[1409] = String.fromCharCode (0xffff);
+data[1410] = String.fromCharCode (0xffff);
+data[1411] = String.fromCharCode (0xffff);
+data[1412] = String.fromCharCode (0xffff);
+data[1413] = String.fromCharCode (0xffff);
+data[1414] = String.fromCharCode (0xffff);
+data[1415] = String.fromCharCode (0xffff);
+data[1416] = String.fromCharCode (0xffff);
+data[1417] = String.fromCharCode (0xffff);
+data[1418] = String.fromCharCode (0xffff);
+data[1419] = String.fromCharCode (0xffff);
+data[1420] = String.fromCharCode (0xffff);
+data[1421] = String.fromCharCode (0xffff);
+data[1422] = String.fromCharCode (0xffff);
+data[1423] = String.fromCharCode (0xffff);
+data[1424] = String.fromCharCode (0xffff);
+data[1425] = String.fromCharCode (0xffff);
+data[1426] = String.fromCharCode (0xffff);
+data[1427] = String.fromCharCode (0xffff);
+data[1428] = String.fromCharCode (0xffff);
+data[1429] = String.fromCharCode (0xffff);
+data[1430] = String.fromCharCode (0xffff);
+data[1431] = String.fromCharCode (0xffff);
+data[1432] = String.fromCharCode (0xffff);
+data[1433] = String.fromCharCode (0xffff);
+data[1434] = String.fromCharCode (0xffff);
+data[1435] = String.fromCharCode (0xffff);
+data[1436] = String.fromCharCode (0xffff);
+data[1437] = String.fromCharCode (0xffff);
+data[1438] = String.fromCharCode (0xffff);
+data[1439] = String.fromCharCode (0xffff);
+data[1440] = String.fromCharCode (0xffff);
+data[1441] = String.fromCharCode (0xffff);
+data[1442] = String.fromCharCode (0xffff);
+data[1443] = String.fromCharCode (0xffff);
+data[1444] = String.fromCharCode (0xffff);
+data[1445] = String.fromCharCode (0xffff);
+data[1446] = String.fromCharCode (0xffff);
+data[1447] = String.fromCharCode (0xffff);
+data[1448] = String.fromCharCode (0xffff);
+data[1449] = String.fromCharCode (0xffff);
+data[1450] = String.fromCharCode (0xffff);
+data[1451] = String.fromCharCode (0xffff);
+data[1452] = String.fromCharCode (0xffff);
+data[1453] = String.fromCharCode (0xffff);
+data[1454] = String.fromCharCode (0xffff);
+data[1455] = String.fromCharCode (0xffff);
+data[1456] = String.fromCharCode (0xffff);
+data[1457] = String.fromCharCode (0xffff);
+data[1458] = String.fromCharCode (0xffff);
+data[1459] = String.fromCharCode (0xffff);
+data[1460] = String.fromCharCode (0xffff);
+data[1461] = String.fromCharCode (0xffff);
+data[1462] = String.fromCharCode (0xffff);
+data[1463] = String.fromCharCode (0xffff);
+data[1464] = String.fromCharCode (0xffff);
+data[1465] = String.fromCharCode (0xffff);
+data[1466] = String.fromCharCode (0xffff);
+data[1467] = String.fromCharCode (0xffff);
+data[1468] = String.fromCharCode (0xffff);
+data[1469] = String.fromCharCode (0xffff);
+data[1470] = String.fromCharCode (0xffff);
+data[1471] = String.fromCharCode (0xffff);
+data[1472] = String.fromCharCode (0xffff);
+data[1473] = String.fromCharCode (0xffff);
+data[1474] = String.fromCharCode (0xffff);
+data[1475] = String.fromCharCode (0xffff);
+data[1476] = String.fromCharCode (0xffff);
+data[1477] = String.fromCharCode (0xffff);
+data[1478] = String.fromCharCode (0xffff);
+data[1479] = String.fromCharCode (0xffff);
+data[1480] = String.fromCharCode (0xffff);
+data[1481] = String.fromCharCode (0xffff);
+data[1482] = String.fromCharCode (0xffff);
+data[1483] = String.fromCharCode (0xffff);
+data[1484] = String.fromCharCode (0xffff);
+data[1485] = String.fromCharCode (0xffff);
+data[1486] = String.fromCharCode (0xffff);
+data[1487] = String.fromCharCode (0xffff);
+data[1488] = String.fromCharCode (0xffff);
+data[1489] = String.fromCharCode (0xffff);
+data[1490] = String.fromCharCode (0xffff);
+data[1491] = String.fromCharCode (0xffff);
+data[1492] = String.fromCharCode (0xffff);
+data[1493] = String.fromCharCode (0xffff);
+data[1494] = String.fromCharCode (0xffff);
+data[1495] = String.fromCharCode (0xffff);
+data[1496] = String.fromCharCode (0xffff);
+data[1497] = String.fromCharCode (0xffff);
+data[1498] = String.fromCharCode (0xffff);
+data[1499] = String.fromCharCode (0xffff);
+data[1500] = String.fromCharCode (0xffff);
+data[1501] = String.fromCharCode (0xffff);
+data[1502] = String.fromCharCode (0xffff);
+data[1503] = String.fromCharCode (0xffff);
+data[1504] = String.fromCharCode (0xffff);
+data[1505] = String.fromCharCode (0xffff);
+data[1506] = String.fromCharCode (0xffff);
+data[1507] = String.fromCharCode (0xffff);
+data[1508] = String.fromCharCode (0xffff);
+data[1509] = String.fromCharCode (0xffff);
+data[1510] = String.fromCharCode (0xffff);
+data[1511] = String.fromCharCode (0xffff);
+data[1512] = String.fromCharCode (0xffff);
+data[1513] = String.fromCharCode (0xffff);
+data[1514] = String.fromCharCode (0xffff);
+data[1515] = String.fromCharCode (0xffff);
+data[1516] = String.fromCharCode (0xffff);
+data[1517] = String.fromCharCode (0xffff);
+data[1518] = String.fromCharCode (0xffff);
+data[1519] = String.fromCharCode (0xffff);
+data[1520] = String.fromCharCode (0xffff);
+data[1521] = String.fromCharCode (0xffff);
+data[1522] = String.fromCharCode (0xffff);
+data[1523] = String.fromCharCode (0xffff);
+data[1524] = String.fromCharCode (0xffff);
+data[1525] = String.fromCharCode (0xffff);
+data[1526] = String.fromCharCode (0xffff);
+data[1527] = String.fromCharCode (0xffff);
+data[1528] = String.fromCharCode (0xffff);
+data[1529] = String.fromCharCode (0xffff);
+data[1530] = String.fromCharCode (0xffff);
+data[1531] = String.fromCharCode (0xffff);
+data[1532] = String.fromCharCode (0xffff);
+data[1533] = String.fromCharCode (0xffff);
+data[1534] = String.fromCharCode (0xffff);
+data[1535] = String.fromCharCode (0xffff);
+data[1536] = String.fromCharCode (0xffff);
+data[1537] = String.fromCharCode (0xffff);
+data[1538] = String.fromCharCode (0xffff);
+data[1539] = String.fromCharCode (0xffff);
+data[1540] = String.fromCharCode (0xffff);
+data[1541] = String.fromCharCode (0xffff);
+data[1542] = String.fromCharCode (0xffff);
+data[1543] = String.fromCharCode (0xffff);
+data[1544] = String.fromCharCode (0xffff);
+data[1545] = String.fromCharCode (0xffff);
+data[1546] = String.fromCharCode (0xffff);
+data[1547] = String.fromCharCode (0xffff);
+data[1548] = String.fromCharCode (0xffff);
+data[1549] = String.fromCharCode (0xffff);
+data[1550] = String.fromCharCode (0xffff);
+data[1551] = String.fromCharCode (0xffff);
+data[1552] = String.fromCharCode (0xffff);
+data[1553] = String.fromCharCode (0xffff);
+data[1554] = String.fromCharCode (0xffff);
+data[1555] = String.fromCharCode (0xffff);
+data[1556] = String.fromCharCode (0xffff);
+data[1557] = String.fromCharCode (0xffff);
+data[1558] = String.fromCharCode (0xffff);
+data[1559] = String.fromCharCode (0xffff);
+data[1560] = String.fromCharCode (0xffff);
+data[1561] = String.fromCharCode (0xffff);
+data[1562] = String.fromCharCode (0xffff);
+data[1563] = String.fromCharCode (0xffff);
+data[1564] = String.fromCharCode (0xffff);
+data[1565] = String.fromCharCode (0xffff);
+data[1566] = String.fromCharCode (0xffff);
+data[1567] = String.fromCharCode (0xffff);
+data[1568] = String.fromCharCode (0xffff);
+data[1569] = String.fromCharCode (0xffff);
+data[1570] = String.fromCharCode (0xffff);
+data[1571] = String.fromCharCode (0xffff);
+data[1572] = String.fromCharCode (0xffff);
+data[1573] = String.fromCharCode (0xffff);
+data[1574] = String.fromCharCode (0xffff);
+data[1575] = String.fromCharCode (0xffff);
+data[1576] = String.fromCharCode (0xffff);
+data[1577] = String.fromCharCode (0xffff);
+data[1578] = String.fromCharCode (0xffff);
+data[1579] = String.fromCharCode (0xffff);
+data[1580] = String.fromCharCode (0xffff);
+data[1581] = String.fromCharCode (0xffff);
+data[1582] = String.fromCharCode (0xffff);
+data[1583] = String.fromCharCode (0xffff);
+data[1584] = String.fromCharCode (0xffff);
+data[1585] = String.fromCharCode (0xffff);
+data[1586] = String.fromCharCode (0xffff);
+data[1587] = String.fromCharCode (0xffff);
+data[1588] = String.fromCharCode (0xffff);
+data[1589] = String.fromCharCode (0xffff);
+data[1590] = String.fromCharCode (0xffff);
+data[1591] = String.fromCharCode (0xffff);
+data[1592] = String.fromCharCode (0xffff);
+data[1593] = String.fromCharCode (0xffff);
+data[1594] = String.fromCharCode (0xffff);
+data[1595] = String.fromCharCode (0xffff);
+data[1596] = String.fromCharCode (0xffff);
+data[1597] = String.fromCharCode (0xffff);
+data[1598] = String.fromCharCode (0xffff);
+data[1599] = String.fromCharCode (0xffff);
+data[1600] = String.fromCharCode (0xffff);
+data[1601] = String.fromCharCode (0xffff);
+data[1602] = String.fromCharCode (0xffff);
+data[1603] = String.fromCharCode (0xffff);
+data[1604] = String.fromCharCode (0xffff);
+data[1605] = String.fromCharCode (0xffff);
+data[1606] = String.fromCharCode (0xffff);
+data[1607] = String.fromCharCode (0xffff);
+data[1608] = String.fromCharCode (0xffff);
+data[1609] = String.fromCharCode (0xffff);
+data[1610] = String.fromCharCode (0xffff);
+data[1611] = String.fromCharCode (0xffff);
+data[1612] = String.fromCharCode (0xffff);
+data[1613] = String.fromCharCode (0xffff);
+data[1614] = String.fromCharCode (0xffff);
+data[1615] = String.fromCharCode (0xffff);
+data[1616] = String.fromCharCode (0xffff);
+data[1617] = String.fromCharCode (0xffff);
+data[1618] = String.fromCharCode (0xffff);
+data[1619] = String.fromCharCode (0xffff);
+data[1620] = String.fromCharCode (0xffff);
+data[1621] = String.fromCharCode (0xffff);
+data[1622] = String.fromCharCode (0xffff);
+data[1623] = String.fromCharCode (0xffff);
+data[1624] = String.fromCharCode (0xffff);
+data[1625] = String.fromCharCode (0xffff);
+data[1626] = String.fromCharCode (0xffff);
+data[1627] = String.fromCharCode (0xffff);
+data[1628] = String.fromCharCode (0xffff);
+data[1629] = String.fromCharCode (0xffff);
+data[1630] = String.fromCharCode (0xffff);
+data[1631] = String.fromCharCode (0xffff);
+data[1632] = String.fromCharCode (0xffff);
+data[1633] = String.fromCharCode (0xffff);
+data[1634] = String.fromCharCode (0xffff);
+data[1635] = String.fromCharCode (0xffff);
+data[1636] = String.fromCharCode (0xffff);
+data[1637] = String.fromCharCode (0xffff);
+data[1638] = String.fromCharCode (0xffff);
+data[1639] = String.fromCharCode (0xffff);
+data[1640] = String.fromCharCode (0xffff);
+data[1641] = String.fromCharCode (0xffff);
+data[1642] = String.fromCharCode (0xffff);
+data[1643] = String.fromCharCode (0xffff);
+data[1644] = String.fromCharCode (0xffff);
+data[1645] = String.fromCharCode (0xffff);
+data[1646] = String.fromCharCode (0xffff);
+data[1647] = String.fromCharCode (0xffff);
+data[1648] = String.fromCharCode (0xffff);
+data[1649] = String.fromCharCode (0xffff);
+data[1650] = String.fromCharCode (0xffff);
+data[1651] = String.fromCharCode (0xffff);
+data[1652] = String.fromCharCode (0xffff);
+data[1653] = String.fromCharCode (0xffff);
+data[1654] = String.fromCharCode (0xffff);
+data[1655] = String.fromCharCode (0xffff);
+data[1656] = String.fromCharCode (0xffff);
+data[1657] = String.fromCharCode (0xffff);
+data[1658] = String.fromCharCode (0xffff);
+data[1659] = String.fromCharCode (0xffff);
+data[1660] = String.fromCharCode (0xffff);
+data[1661] = String.fromCharCode (0xffff);
+data[1662] = String.fromCharCode (0xffff);
+data[1663] = String.fromCharCode (0xffff);
+data[1664] = String.fromCharCode (0xffff);
+data[1665] = String.fromCharCode (0xffff);
+data[1666] = String.fromCharCode (0xffff);
+data[1667] = String.fromCharCode (0xffff);
+data[1668] = String.fromCharCode (0xffff);
+data[1669] = String.fromCharCode (0xffff);
+data[1670] = String.fromCharCode (0xffff);
+data[1671] = String.fromCharCode (0xffff);
+data[1672] = String.fromCharCode (0xffff);
+data[1673] = String.fromCharCode (0xffff);
+data[1674] = String.fromCharCode (0xffff);
+data[1675] = String.fromCharCode (0xffff);
+data[1676] = String.fromCharCode (0xffff);
+data[1677] = String.fromCharCode (0xffff);
+data[1678] = String.fromCharCode (0xffff);
+data[1679] = String.fromCharCode (0xffff);
+data[1680] = String.fromCharCode (0xffff);
+data[1681] = String.fromCharCode (0xffff);
+data[1682] = String.fromCharCode (0xffff);
+data[1683] = String.fromCharCode (0xffff);
+data[1684] = String.fromCharCode (0xffff);
+data[1685] = String.fromCharCode (0xffff);
+data[1686] = String.fromCharCode (0xffff);
+data[1687] = String.fromCharCode (0xffff);
+data[1688] = String.fromCharCode (0xffff);
+data[1689] = String.fromCharCode (0xffff);
+data[1690] = String.fromCharCode (0xffff);
+data[1691] = String.fromCharCode (0xffff);
+data[1692] = String.fromCharCode (0xffff);
+data[1693] = String.fromCharCode (0xffff);
+data[1694] = String.fromCharCode (0xffff);
+data[1695] = String.fromCharCode (0xffff);
+data[1696] = String.fromCharCode (0xffff);
+data[1697] = String.fromCharCode (0xffff);
+data[1698] = String.fromCharCode (0xffff);
+data[1699] = String.fromCharCode (0xffff);
+data[1700] = String.fromCharCode (0xffff);
+data[1701] = String.fromCharCode (0xffff);
+data[1702] = String.fromCharCode (0xffff);
+data[1703] = String.fromCharCode (0xffff);
+data[1704] = String.fromCharCode (0xffff);
+data[1705] = String.fromCharCode (0xffff);
+data[1706] = String.fromCharCode (0xffff);
+data[1707] = String.fromCharCode (0xffff);
+data[1708] = String.fromCharCode (0xffff);
+data[1709] = String.fromCharCode (0xffff);
+data[1710] = String.fromCharCode (0xffff);
+data[1711] = String.fromCharCode (0xffff);
+data[1712] = String.fromCharCode (0xffff);
+data[1713] = String.fromCharCode (0xffff);
+data[1714] = String.fromCharCode (0xffff);
+data[1715] = String.fromCharCode (0xffff);
+data[1716] = String.fromCharCode (0xffff);
+data[1717] = String.fromCharCode (0xffff);
+data[1718] = String.fromCharCode (0xffff);
+data[1719] = String.fromCharCode (0xffff);
+data[1720] = String.fromCharCode (0xffff);
+data[1721] = String.fromCharCode (0xffff);
+data[1722] = String.fromCharCode (0xffff);
+data[1723] = String.fromCharCode (0xffff);
+data[1724] = String.fromCharCode (0xffff);
+data[1725] = String.fromCharCode (0xffff);
+data[1726] = String.fromCharCode (0xffff);
+data[1727] = String.fromCharCode (0xffff);
+data[1728] = String.fromCharCode (0xffff);
+data[1729] = String.fromCharCode (0xffff);
+data[1730] = String.fromCharCode (0xffff);
+data[1731] = String.fromCharCode (0xffff);
+data[1732] = String.fromCharCode (0xffff);
+data[1733] = String.fromCharCode (0xffff);
+data[1734] = String.fromCharCode (0xffff);
+data[1735] = String.fromCharCode (0xffff);
+data[1736] = String.fromCharCode (0xffff);
+data[1737] = String.fromCharCode (0xffff);
+data[1738] = String.fromCharCode (0xffff);
+data[1739] = String.fromCharCode (0xffff);
+data[1740] = String.fromCharCode (0xffff);
+data[1741] = String.fromCharCode (0xffff);
+data[1742] = String.fromCharCode (0xffff);
+data[1743] = String.fromCharCode (0xffff);
+data[1744] = String.fromCharCode (0xffff);
+data[1745] = String.fromCharCode (0xffff);
+data[1746] = String.fromCharCode (0xffff);
+data[1747] = String.fromCharCode (0xffff);
+data[1748] = String.fromCharCode (0xffff);
+data[1749] = String.fromCharCode (0xffff);
+data[1750] = String.fromCharCode (0xffff);
+data[1751] = String.fromCharCode (0xffff);
+data[1752] = String.fromCharCode (0xffff);
+data[1753] = String.fromCharCode (0xffff);
+data[1754] = String.fromCharCode (0xffff);
+data[1755] = String.fromCharCode (0xffff);
+data[1756] = String.fromCharCode (0xffff);
+data[1757] = String.fromCharCode (0xffff);
+data[1758] = String.fromCharCode (0xffff);
+data[1759] = String.fromCharCode (0xffff);
+data[1760] = String.fromCharCode (0xffff);
+data[1761] = String.fromCharCode (0xffff);
+data[1762] = String.fromCharCode (0xffff);
+data[1763] = String.fromCharCode (0xffff);
+data[1764] = String.fromCharCode (0xffff);
+data[1765] = String.fromCharCode (0xffff);
+data[1766] = String.fromCharCode (0xffff);
+data[1767] = String.fromCharCode (0xffff);
+data[1768] = String.fromCharCode (0xffff);
+data[1769] = String.fromCharCode (0xffff);
+data[1770] = String.fromCharCode (0xffff);
+data[1771] = String.fromCharCode (0xffff);
+data[1772] = String.fromCharCode (0xffff);
+data[1773] = String.fromCharCode (0xffff);
+data[1774] = String.fromCharCode (0xffff);
+data[1775] = String.fromCharCode (0xffff);
+data[1776] = String.fromCharCode (0xffff);
+data[1777] = String.fromCharCode (0xffff);
+data[1778] = String.fromCharCode (0xffff);
+data[1779] = String.fromCharCode (0xffff);
+data[1780] = String.fromCharCode (0xffff);
+data[1781] = String.fromCharCode (0xffff);
+data[1782] = String.fromCharCode (0xffff);
+data[1783] = String.fromCharCode (0xffff);
+data[1784] = String.fromCharCode (0xffff);
+data[1785] = String.fromCharCode (0xffff);
+data[1786] = String.fromCharCode (0xffff);
+data[1787] = String.fromCharCode (0xffff);
+data[1788] = String.fromCharCode (0xffff);
+data[1789] = String.fromCharCode (0xffff);
+data[1790] = String.fromCharCode (0xffff);
+data[1791] = String.fromCharCode (0xffff);
+data[1792] = String.fromCharCode (0xffff);
+data[1793] = String.fromCharCode (0xffff);
+data[1794] = String.fromCharCode (0xffff);
+data[1795] = String.fromCharCode (0xffff);
+data[1796] = String.fromCharCode (0xffff);
+data[1797] = String.fromCharCode (0xffff);
+data[1798] = String.fromCharCode (0xffff);
+data[1799] = String.fromCharCode (0xffff);
+data[1800] = String.fromCharCode (0xffff);
+data[1801] = String.fromCharCode (0xffff);
+data[1802] = String.fromCharCode (0xffff);
+data[1803] = String.fromCharCode (0xffff);
+data[1804] = String.fromCharCode (0xffff);
+data[1805] = String.fromCharCode (0xffff);
+data[1806] = String.fromCharCode (0xffff);
+data[1807] = String.fromCharCode (0xffff);
+data[1808] = String.fromCharCode (0xffff);
+data[1809] = String.fromCharCode (0xffff);
+data[1810] = String.fromCharCode (0xffff);
+data[1811] = String.fromCharCode (0xffff);
+data[1812] = String.fromCharCode (0xffff);
+data[1813] = String.fromCharCode (0xffff);
+data[1814] = String.fromCharCode (0xffff);
+data[1815] = String.fromCharCode (0xffff);
+data[1816] = String.fromCharCode (0xffff);
+data[1817] = String.fromCharCode (0xffff);
+data[1818] = String.fromCharCode (0xffff);
+data[1819] = String.fromCharCode (0xffff);
+data[1820] = String.fromCharCode (0xffff);
+data[1821] = String.fromCharCode (0xffff);
+data[1822] = String.fromCharCode (0xffff);
+data[1823] = String.fromCharCode (0xffff);
+data[1824] = String.fromCharCode (0xffff);
+data[1825] = String.fromCharCode (0xffff);
+data[1826] = String.fromCharCode (0xffff);
+data[1827] = String.fromCharCode (0xffff);
+data[1828] = String.fromCharCode (0xffff);
+data[1829] = String.fromCharCode (0xffff);
+data[1830] = String.fromCharCode (0xffff);
+data[1831] = String.fromCharCode (0xffff);
+data[1832] = String.fromCharCode (0xffff);
+data[1833] = String.fromCharCode (0xffff);
+data[1834] = String.fromCharCode (0xffff);
+data[1835] = String.fromCharCode (0xffff);
+data[1836] = String.fromCharCode (0xffff);
+data[1837] = String.fromCharCode (0xffff);
+data[1838] = String.fromCharCode (0xffff);
+data[1839] = String.fromCharCode (0xffff);
+data[1840] = String.fromCharCode (0xffff);
+data[1841] = String.fromCharCode (0xffff);
+data[1842] = String.fromCharCode (0xffff);
+data[1843] = String.fromCharCode (0xffff);
+data[1844] = String.fromCharCode (0xffff);
+data[1845] = String.fromCharCode (0xffff);
+data[1846] = String.fromCharCode (0xffff);
+data[1847] = String.fromCharCode (0xffff);
+data[1848] = String.fromCharCode (0xffff);
+data[1849] = String.fromCharCode (0xffff);
+data[1850] = String.fromCharCode (0xffff);
+data[1851] = String.fromCharCode (0xffff);
+data[1852] = String.fromCharCode (0xffff);
+data[1853] = String.fromCharCode (0xffff);
+data[1854] = String.fromCharCode (0xffff);
+data[1855] = String.fromCharCode (0xffff);
+data[1856] = String.fromCharCode (0xffff);
+data[1857] = String.fromCharCode (0xffff);
+data[1858] = String.fromCharCode (0xffff);
+data[1859] = String.fromCharCode (0xffff);
+data[1860] = String.fromCharCode (0xffff);
+data[1861] = String.fromCharCode (0xffff);
+data[1862] = String.fromCharCode (0xffff);
+data[1863] = String.fromCharCode (0xffff);
+data[1864] = String.fromCharCode (0xffff);
+data[1865] = String.fromCharCode (0xffff);
+data[1866] = String.fromCharCode (0xffff);
+data[1867] = String.fromCharCode (0xffff);
+data[1868] = String.fromCharCode (0xffff);
+data[1869] = String.fromCharCode (0xffff);
+data[1870] = String.fromCharCode (0xffff);
+data[1871] = String.fromCharCode (0xffff);
+data[1872] = String.fromCharCode (0xffff);
+data[1873] = String.fromCharCode (0xffff);
+data[1874] = String.fromCharCode (0xffff);
+data[1875] = String.fromCharCode (0xffff);
+data[1876] = String.fromCharCode (0xffff);
+data[1877] = String.fromCharCode (0xffff);
+data[1878] = String.fromCharCode (0xffff);
+data[1879] = String.fromCharCode (0xffff);
+data[1880] = String.fromCharCode (0xffff);
+data[1881] = String.fromCharCode (0xffff);
+data[1882] = String.fromCharCode (0xffff);
+data[1883] = String.fromCharCode (0xffff);
+data[1884] = String.fromCharCode (0xffff);
+data[1885] = String.fromCharCode (0xffff);
+data[1886] = String.fromCharCode (0xffff);
+data[1887] = String.fromCharCode (0xffff);
+data[1888] = String.fromCharCode (0xffff);
+data[1889] = String.fromCharCode (0xffff);
+data[1890] = String.fromCharCode (0xffff);
+data[1891] = String.fromCharCode (0xffff);
+data[1892] = String.fromCharCode (0xffff);
+data[1893] = String.fromCharCode (0xffff);
+data[1894] = String.fromCharCode (0xffff);
+data[1895] = String.fromCharCode (0xffff);
+data[1896] = String.fromCharCode (0xffff);
+data[1897] = String.fromCharCode (0xffff);
+data[1898] = String.fromCharCode (0xffff);
+data[1899] = String.fromCharCode (0xffff);
+data[1900] = String.fromCharCode (0xffff);
+data[1901] = String.fromCharCode (0xffff);
+data[1902] = String.fromCharCode (0xffff);
+data[1903] = String.fromCharCode (0xffff);
+data[1904] = String.fromCharCode (0xffff);
+data[1905] = String.fromCharCode (0xffff);
+data[1906] = String.fromCharCode (0xffff);
+data[1907] = String.fromCharCode (0xffff);
+data[1908] = String.fromCharCode (0xffff);
+data[1909] = String.fromCharCode (0xffff);
+data[1910] = String.fromCharCode (0xffff);
+data[1911] = String.fromCharCode (0xffff);
+data[1912] = String.fromCharCode (0xffff);
+data[1913] = String.fromCharCode (0xffff);
+data[1914] = String.fromCharCode (0xffff);
+data[1915] = String.fromCharCode (0xffff);
+data[1916] = String.fromCharCode (0xffff);
+data[1917] = String.fromCharCode (0xffff);
+data[1918] = String.fromCharCode (0xffff);
+data[1919] = String.fromCharCode (0xffff);
+data[1920] = String.fromCharCode (0xffff);
+data[1921] = String.fromCharCode (0xffff);
+data[1922] = String.fromCharCode (0xffff);
+data[1923] = String.fromCharCode (0xffff);
+data[1924] = String.fromCharCode (0xffff);
+data[1925] = String.fromCharCode (0xffff);
+data[1926] = String.fromCharCode (0xffff);
+data[1927] = String.fromCharCode (0xffff);
+data[1928] = String.fromCharCode (0xffff);
+data[1929] = String.fromCharCode (0xffff);
+data[1930] = String.fromCharCode (0xffff);
+data[1931] = String.fromCharCode (0xffff);
+data[1932] = String.fromCharCode (0xffff);
+data[1933] = String.fromCharCode (0xffff);
+data[1934] = String.fromCharCode (0xffff);
+data[1935] = String.fromCharCode (0xffff);
+data[1936] = String.fromCharCode (0xffff);
+data[1937] = String.fromCharCode (0xffff);
+data[1938] = String.fromCharCode (0xffff);
+data[1939] = String.fromCharCode (0xffff);
+data[1940] = String.fromCharCode (0xffff);
+data[1941] = String.fromCharCode (0xffff);
+data[1942] = String.fromCharCode (0xffff);
+data[1943] = String.fromCharCode (0xffff);
+data[1944] = String.fromCharCode (0xffff);
+data[1945] = String.fromCharCode (0xffff);
+data[1946] = String.fromCharCode (0xffff);
+data[1947] = String.fromCharCode (0xffff);
+data[1948] = String.fromCharCode (0xffff);
+data[1949] = String.fromCharCode (0xffff);
+data[1950] = String.fromCharCode (0xffff);
+data[1951] = String.fromCharCode (0xffff);
+data[1952] = String.fromCharCode (0xffff);
+data[1953] = String.fromCharCode (0xffff);
+data[1954] = String.fromCharCode (0xffff);
+data[1955] = String.fromCharCode (0xffff);
+data[1956] = String.fromCharCode (0xffff);
+data[1957] = String.fromCharCode (0xffff);
+data[1958] = String.fromCharCode (0xffff);
+data[1959] = String.fromCharCode (0xffff);
+data[1960] = String.fromCharCode (0xffff);
+data[1961] = String.fromCharCode (0xffff);
+data[1962] = String.fromCharCode (0xffff);
+data[1963] = String.fromCharCode (0xffff);
+data[1964] = String.fromCharCode (0xffff);
+data[1965] = String.fromCharCode (0xffff);
+data[1966] = String.fromCharCode (0xffff);
+data[1967] = String.fromCharCode (0xffff);
+data[1968] = String.fromCharCode (0xffff);
+data[1969] = String.fromCharCode (0xffff);
+data[1970] = String.fromCharCode (0xffff);
+data[1971] = String.fromCharCode (0xffff);
+data[1972] = String.fromCharCode (0xffff);
+data[1973] = String.fromCharCode (0xffff);
+data[1974] = String.fromCharCode (0xffff);
+data[1975] = String.fromCharCode (0xffff);
+data[1976] = String.fromCharCode (0xffff);
+data[1977] = String.fromCharCode (0xffff);
+data[1978] = String.fromCharCode (0xffff);
+data[1979] = String.fromCharCode (0xffff);
+data[1980] = String.fromCharCode (0xffff);
+data[1981] = String.fromCharCode (0xffff);
+data[1982] = String.fromCharCode (0xffff);
+data[1983] = String.fromCharCode (0xffff);
+data[1984] = String.fromCharCode (0xffff);
+data[1985] = String.fromCharCode (0xffff);
+data[1986] = String.fromCharCode (0xffff);
+data[1987] = String.fromCharCode (0xffff);
+data[1988] = String.fromCharCode (0xffff);
+data[1989] = String.fromCharCode (0xffff);
+data[1990] = String.fromCharCode (0xffff);
+data[1991] = String.fromCharCode (0xffff);
+data[1992] = String.fromCharCode (0xffff);
+data[1993] = String.fromCharCode (0xffff);
+data[1994] = String.fromCharCode (0xffff);
+data[1995] = String.fromCharCode (0xffff);
+data[1996] = String.fromCharCode (0xffff);
+data[1997] = String.fromCharCode (0xffff);
+data[1998] = String.fromCharCode (0xffff);
+data[1999] = String.fromCharCode (0xffff);
+data[2000] = String.fromCharCode (0xffff);
+data[2001] = String.fromCharCode (0xffff);
+data[2002] = String.fromCharCode (0xffff);
+data[2003] = String.fromCharCode (0xffff);
+data[2004] = String.fromCharCode (0xffff);
+data[2005] = String.fromCharCode (0xffff);
+data[2006] = String.fromCharCode (0xffff);
+data[2007] = String.fromCharCode (0xffff);
+data[2008] = String.fromCharCode (0xffff);
+data[2009] = String.fromCharCode (0xffff);
+data[2010] = String.fromCharCode (0xffff);
+data[2011] = String.fromCharCode (0xffff);
+data[2012] = String.fromCharCode (0xffff);
+data[2013] = String.fromCharCode (0xffff);
+data[2014] = String.fromCharCode (0xffff);
+data[2015] = String.fromCharCode (0xffff);
+data[2016] = String.fromCharCode (0xffff);
+data[2017] = String.fromCharCode (0xffff);
+data[2018] = String.fromCharCode (0xffff);
+data[2019] = String.fromCharCode (0xffff);
+data[2020] = String.fromCharCode (0xffff);
+data[2021] = String.fromCharCode (0xffff);
+data[2022] = String.fromCharCode (0xffff);
+data[2023] = String.fromCharCode (0xffff);
+data[2024] = String.fromCharCode (0xffff);
+data[2025] = String.fromCharCode (0xffff);
+data[2026] = String.fromCharCode (0xffff);
+data[2027] = String.fromCharCode (0xffff);
+data[2028] = String.fromCharCode (0xffff);
+data[2029] = String.fromCharCode (0xffff);
+data[2030] = String.fromCharCode (0xffff);
+data[2031] = String.fromCharCode (0xffff);
+data[2032] = String.fromCharCode (0xffff);
+data[2033] = String.fromCharCode (0xffff);
+data[2034] = String.fromCharCode (0xffff);
+data[2035] = String.fromCharCode (0xffff);
+data[2036] = String.fromCharCode (0xffff);
+data[2037] = String.fromCharCode (0xffff);
+data[2038] = String.fromCharCode (0xffff);
+data[2039] = String.fromCharCode (0xffff);
+data[2040] = String.fromCharCode (0xffff);
+data[2041] = String.fromCharCode (0xffff);
+data[2042] = String.fromCharCode (0xffff);
+data[2043] = String.fromCharCode (0xffff);
+data[2044] = String.fromCharCode (0xffff);
+data[2045] = String.fromCharCode (0xffff);
+data[2046] = String.fromCharCode (0xffff);
+data[2047] = String.fromCharCode (0xffff);
+data[2048] = String.fromCharCode (0xffff);
+data[2049] = String.fromCharCode (0xffff);
+data[2050] = String.fromCharCode (0xffff);
+data[2051] = String.fromCharCode (0xffff);
+data[2052] = String.fromCharCode (0xffff);
+data[2053] = String.fromCharCode (0xffff);
+data[2054] = String.fromCharCode (0xffff);
+data[2055] = String.fromCharCode (0xffff);
+data[2056] = String.fromCharCode (0xffff);
+data[2057] = String.fromCharCode (0xffff);
+data[2058] = String.fromCharCode (0xffff);
+data[2059] = String.fromCharCode (0xffff);
+data[2060] = String.fromCharCode (0xffff);
+data[2061] = String.fromCharCode (0xffff);
+data[2062] = String.fromCharCode (0xffff);
+data[2063] = String.fromCharCode (0xffff);
+data[2064] = String.fromCharCode (0xffff);
+data[2065] = String.fromCharCode (0xffff);
+data[2066] = String.fromCharCode (0xffff);
+data[2067] = String.fromCharCode (0xffff);
+data[2068] = String.fromCharCode (0xffff);
+data[2069] = String.fromCharCode (0xffff);
+data[2070] = String.fromCharCode (0xffff);
+data[2071] = String.fromCharCode (0xffff);
+data[2072] = String.fromCharCode (0xffff);
+data[2073] = String.fromCharCode (0xffff);
+data[2074] = String.fromCharCode (0xffff);
+data[2075] = String.fromCharCode (0xffff);
+data[2076] = String.fromCharCode (0xffff);
+data[2077] = String.fromCharCode (0xffff);
+data[2078] = String.fromCharCode (0xffff);
+data[2079] = String.fromCharCode (0xffff);
+data[2080] = String.fromCharCode (0xffff);
+data[2081] = String.fromCharCode (0xffff);
+data[2082] = String.fromCharCode (0xffff);
+data[2083] = String.fromCharCode (0xffff);
+data[2084] = String.fromCharCode (0xffff);
+data[2085] = String.fromCharCode (0xffff);
+data[2086] = String.fromCharCode (0xffff);
+data[2087] = String.fromCharCode (0xffff);
+data[2088] = String.fromCharCode (0xffff);
+data[2089] = String.fromCharCode (0xffff);
+data[2090] = String.fromCharCode (0xffff);
+data[2091] = String.fromCharCode (0xffff);
+data[2092] = String.fromCharCode (0xffff);
+data[2093] = String.fromCharCode (0xffff);
+data[2094] = String.fromCharCode (0xffff);
+data[2095] = String.fromCharCode (0xffff);
+data[2096] = String.fromCharCode (0xffff);
+data[2097] = String.fromCharCode (0xffff);
+data[2098] = String.fromCharCode (0xffff);
+data[2099] = String.fromCharCode (0xffff);
+data[2100] = String.fromCharCode (0xffff);
+data[2101] = String.fromCharCode (0xffff);
+data[2102] = String.fromCharCode (0xffff);
+data[2103] = String.fromCharCode (0xffff);
+data[2104] = String.fromCharCode (0xffff);
+data[2105] = String.fromCharCode (0xffff);
+data[2106] = String.fromCharCode (0xffff);
+data[2107] = String.fromCharCode (0xffff);
+data[2108] = String.fromCharCode (0xffff);
+data[2109] = String.fromCharCode (0xffff);
+data[2110] = String.fromCharCode (0xffff);
+data[2111] = String.fromCharCode (0xffff);
+data[2112] = String.fromCharCode (0xffff);
+data[2113] = String.fromCharCode (0xffff);
+data[2114] = String.fromCharCode (0xffff);
+data[2115] = String.fromCharCode (0xffff);
+data[2116] = String.fromCharCode (0xffff);
+data[2117] = String.fromCharCode (0xffff);
+data[2118] = String.fromCharCode (0xffff);
+data[2119] = String.fromCharCode (0xffff);
+data[2120] = String.fromCharCode (0xffff);
+data[2121] = String.fromCharCode (0xffff);
+data[2122] = String.fromCharCode (0xffff);
+data[2123] = String.fromCharCode (0xffff);
+data[2124] = String.fromCharCode (0xffff);
+data[2125] = String.fromCharCode (0xffff);
+data[2126] = String.fromCharCode (0xffff);
+data[2127] = String.fromCharCode (0xffff);
+data[2128] = String.fromCharCode (0xffff);
+data[2129] = String.fromCharCode (0xffff);
+data[2130] = String.fromCharCode (0xffff);
+data[2131] = String.fromCharCode (0xffff);
+data[2132] = String.fromCharCode (0xffff);
+data[2133] = String.fromCharCode (0xffff);
+data[2134] = String.fromCharCode (0xffff);
+data[2135] = String.fromCharCode (0xffff);
+data[2136] = String.fromCharCode (0xffff);
+data[2137] = String.fromCharCode (0xffff);
+data[2138] = String.fromCharCode (0xffff);
+data[2139] = String.fromCharCode (0xffff);
+data[2140] = String.fromCharCode (0xffff);
+data[2141] = String.fromCharCode (0xffff);
+data[2142] = String.fromCharCode (0xffff);
+data[2143] = String.fromCharCode (0xffff);
+data[2144] = String.fromCharCode (0xffff);
+data[2145] = String.fromCharCode (0xffff);
+data[2146] = String.fromCharCode (0xffff);
+data[2147] = String.fromCharCode (0xffff);
+data[2148] = String.fromCharCode (0xffff);
+data[2149] = String.fromCharCode (0xffff);
+data[2150] = String.fromCharCode (0xffff);
+data[2151] = String.fromCharCode (0xffff);
+data[2152] = String.fromCharCode (0xffff);
+data[2153] = String.fromCharCode (0xffff);
+data[2154] = String.fromCharCode (0xffff);
+data[2155] = String.fromCharCode (0xffff);
+data[2156] = String.fromCharCode (0xffff);
+data[2157] = String.fromCharCode (0xffff);
+data[2158] = String.fromCharCode (0xffff);
+data[2159] = String.fromCharCode (0xffff);
+data[2160] = String.fromCharCode (0xffff);
+data[2161] = String.fromCharCode (0xffff);
+data[2162] = String.fromCharCode (0xffff);
+data[2163] = String.fromCharCode (0xffff);
+data[2164] = String.fromCharCode (0xffff);
+data[2165] = String.fromCharCode (0xffff);
+data[2166] = String.fromCharCode (0xffff);
+data[2167] = String.fromCharCode (0xffff);
+data[2168] = String.fromCharCode (0xffff);
+data[2169] = String.fromCharCode (0xffff);
+data[2170] = String.fromCharCode (0xffff);
+data[2171] = String.fromCharCode (0xffff);
+data[2172] = String.fromCharCode (0xffff);
+data[2173] = String.fromCharCode (0xffff);
+data[2174] = String.fromCharCode (0xffff);
+data[2175] = String.fromCharCode (0xffff);
+data[2176] = String.fromCharCode (0xffff);
+data[2177] = String.fromCharCode (0xffff);
+data[2178] = String.fromCharCode (0xffff);
+data[2179] = String.fromCharCode (0xffff);
+data[2180] = String.fromCharCode (0xffff);
+data[2181] = String.fromCharCode (0xffff);
+data[2182] = String.fromCharCode (0xffff);
+data[2183] = String.fromCharCode (0xffff);
+data[2184] = String.fromCharCode (0xffff);
+data[2185] = String.fromCharCode (0xffff);
+data[2186] = String.fromCharCode (0xffff);
+data[2187] = String.fromCharCode (0xffff);
+data[2188] = String.fromCharCode (0xffff);
+data[2189] = String.fromCharCode (0xffff);
+data[2190] = String.fromCharCode (0xffff);
+data[2191] = String.fromCharCode (0xffff);
+data[2192] = String.fromCharCode (0xffff);
+data[2193] = String.fromCharCode (0xffff);
+data[2194] = String.fromCharCode (0xffff);
+data[2195] = String.fromCharCode (0xffff);
+data[2196] = String.fromCharCode (0xffff);
+data[2197] = String.fromCharCode (0xffff);
+data[2198] = String.fromCharCode (0xffff);
+data[2199] = String.fromCharCode (0xffff);
+data[2200] = String.fromCharCode (0xffff);
+data[2201] = String.fromCharCode (0xffff);
+data[2202] = String.fromCharCode (0xffff);
+data[2203] = String.fromCharCode (0xffff);
+data[2204] = String.fromCharCode (0xffff);
+data[2205] = String.fromCharCode (0xffff);
+data[2206] = String.fromCharCode (0xffff);
+data[2207] = String.fromCharCode (0xffff);
+data[2208] = String.fromCharCode (0xffff);
+data[2209] = String.fromCharCode (0xffff);
+data[2210] = String.fromCharCode (0xffff);
+data[2211] = String.fromCharCode (0xffff);
+data[2212] = String.fromCharCode (0xffff);
+data[2213] = String.fromCharCode (0xffff);
+data[2214] = String.fromCharCode (0xffff);
+data[2215] = String.fromCharCode (0xffff);
+data[2216] = String.fromCharCode (0xffff);
+data[2217] = String.fromCharCode (0xffff);
+data[2218] = String.fromCharCode (0xffff);
+data[2219] = String.fromCharCode (0xffff);
+data[2220] = String.fromCharCode (0xffff);
+data[2221] = String.fromCharCode (0xffff);
+data[2222] = String.fromCharCode (0xffff);
+data[2223] = String.fromCharCode (0xffff);
+data[2224] = String.fromCharCode (0xffff);
+data[2225] = String.fromCharCode (0xffff);
+data[2226] = String.fromCharCode (0xffff);
+data[2227] = String.fromCharCode (0xffff);
+data[2228] = String.fromCharCode (0xffff);
+data[2229] = String.fromCharCode (0xffff);
+data[2230] = String.fromCharCode (0xffff);
+data[2231] = String.fromCharCode (0xffff);
+data[2232] = String.fromCharCode (0xffff);
+data[2233] = String.fromCharCode (0xffff);
+data[2234] = String.fromCharCode (0xffff);
+data[2235] = String.fromCharCode (0xffff);
+data[2236] = String.fromCharCode (0xffff);
+data[2237] = String.fromCharCode (0xffff);
+data[2238] = String.fromCharCode (0xffff);
+data[2239] = String.fromCharCode (0xffff);
+data[2240] = String.fromCharCode (0xffff);
+data[2241] = String.fromCharCode (0xffff);
+data[2242] = String.fromCharCode (0xffff);
+data[2243] = String.fromCharCode (0xffff);
+data[2244] = String.fromCharCode (0xffff);
+data[2245] = String.fromCharCode (0xffff);
+data[2246] = String.fromCharCode (0xffff);
+data[2247] = String.fromCharCode (0xffff);
+data[2248] = String.fromCharCode (0xffff);
+data[2249] = String.fromCharCode (0xffff);
+data[2250] = String.fromCharCode (0xffff);
+data[2251] = String.fromCharCode (0xffff);
+data[2252] = String.fromCharCode (0xffff);
+data[2253] = String.fromCharCode (0xffff);
+data[2254] = String.fromCharCode (0xffff);
+data[2255] = String.fromCharCode (0xffff);
+data[2256] = String.fromCharCode (0xffff);
+data[2257] = String.fromCharCode (0xffff);
+data[2258] = String.fromCharCode (0xffff);
+data[2259] = String.fromCharCode (0xffff);
+data[2260] = String.fromCharCode (0xffff);
+data[2261] = String.fromCharCode (0xffff);
+data[2262] = String.fromCharCode (0xffff);
+data[2263] = String.fromCharCode (0xffff);
+data[2264] = String.fromCharCode (0xffff);
+data[2265] = String.fromCharCode (0xffff);
+data[2266] = String.fromCharCode (0xffff);
+data[2267] = String.fromCharCode (0xffff);
+data[2268] = String.fromCharCode (0xffff);
+data[2269] = String.fromCharCode (0xffff);
+data[2270] = String.fromCharCode (0xffff);
+data[2271] = String.fromCharCode (0xffff);
+data[2272] = String.fromCharCode (0xffff);
+data[2273] = String.fromCharCode (0xffff);
+data[2274] = String.fromCharCode (0xffff);
+data[2275] = String.fromCharCode (0xffff);
+data[2276] = String.fromCharCode (0xffff);
+data[2277] = String.fromCharCode (0xffff);
+data[2278] = String.fromCharCode (0xffff);
+data[2279] = String.fromCharCode (0xffff);
+data[2280] = String.fromCharCode (0xffff);
+data[2281] = String.fromCharCode (0xffff);
+data[2282] = String.fromCharCode (0xffff);
+data[2283] = String.fromCharCode (0xffff);
+data[2284] = String.fromCharCode (0xffff);
+data[2285] = String.fromCharCode (0xffff);
+data[2286] = String.fromCharCode (0xffff);
+data[2287] = String.fromCharCode (0xffff);
+data[2288] = String.fromCharCode (0xffff);
+data[2289] = String.fromCharCode (0xffff);
+data[2290] = String.fromCharCode (0xffff);
+data[2291] = String.fromCharCode (0xffff);
+data[2292] = String.fromCharCode (0xffff);
+data[2293] = String.fromCharCode (0xffff);
+data[2294] = String.fromCharCode (0xffff);
+data[2295] = String.fromCharCode (0xffff);
+data[2296] = String.fromCharCode (0xffff);
+data[2297] = String.fromCharCode (0xffff);
+data[2298] = String.fromCharCode (0xffff);
+data[2299] = String.fromCharCode (0xffff);
+data[2300] = String.fromCharCode (0xffff);
+data[2301] = String.fromCharCode (0xffff);
+data[2302] = String.fromCharCode (0xffff);
+data[2303] = String.fromCharCode (0xffff);
+data[2304] = String.fromCharCode (0xffff);
+data[2305] = String.fromCharCode (0xffff);
+data[2306] = String.fromCharCode (0xffff);
+data[2307] = String.fromCharCode (0xffff);
+data[2308] = String.fromCharCode (0xffff);
+data[2309] = String.fromCharCode (0xffff);
+data[2310] = String.fromCharCode (0xffff);
+data[2311] = String.fromCharCode (0xffff);
+data[2312] = String.fromCharCode (0xffff);
+data[2313] = String.fromCharCode (0xffff);
+data[2314] = String.fromCharCode (0xffff);
+data[2315] = String.fromCharCode (0xffff);
+data[2316] = String.fromCharCode (0xffff);
+data[2317] = String.fromCharCode (0xffff);
+data[2318] = String.fromCharCode (0xffff);
+data[2319] = String.fromCharCode (0xffff);
+data[2320] = String.fromCharCode (0xffff);
+data[2321] = String.fromCharCode (0xffff);
+data[2322] = String.fromCharCode (0xffff);
+data[2323] = String.fromCharCode (0xffff);
+data[2324] = String.fromCharCode (0xffff);
+data[2325] = String.fromCharCode (0xffff);
+data[2326] = String.fromCharCode (0xffff);
+data[2327] = String.fromCharCode (0xffff);
+data[2328] = String.fromCharCode (0xffff);
+data[2329] = String.fromCharCode (0xffff);
+data[2330] = String.fromCharCode (0xffff);
+data[2331] = String.fromCharCode (0xffff);
+data[2332] = String.fromCharCode (0xffff);
+data[2333] = String.fromCharCode (0xffff);
+data[2334] = String.fromCharCode (0xffff);
+data[2335] = String.fromCharCode (0xffff);
+data[2336] = String.fromCharCode (0xffff);
+data[2337] = String.fromCharCode (0xffff);
+data[2338] = String.fromCharCode (0xffff);
+data[2339] = String.fromCharCode (0xffff);
+data[2340] = String.fromCharCode (0xffff);
+data[2341] = String.fromCharCode (0xffff);
+data[2342] = String.fromCharCode (0xffff);
+data[2343] = String.fromCharCode (0xffff);
+data[2344] = String.fromCharCode (0xffff);
+data[2345] = String.fromCharCode (0xffff);
+data[2346] = String.fromCharCode (0xffff);
+data[2347] = String.fromCharCode (0xffff);
+data[2348] = String.fromCharCode (0xffff);
+data[2349] = String.fromCharCode (0xffff);
+data[2350] = String.fromCharCode (0xffff);
+data[2351] = String.fromCharCode (0xffff);
+data[2352] = String.fromCharCode (0xffff);
+data[2353] = String.fromCharCode (0xffff);
+data[2354] = String.fromCharCode (0xffff);
+data[2355] = String.fromCharCode (0xffff);
+data[2356] = String.fromCharCode (0xffff);
+data[2357] = String.fromCharCode (0xffff);
+data[2358] = String.fromCharCode (0xffff);
+data[2359] = String.fromCharCode (0xffff);
+data[2360] = String.fromCharCode (0xffff);
+data[2361] = String.fromCharCode (0xffff);
+data[2362] = String.fromCharCode (0xffff);
+data[2363] = String.fromCharCode (0xffff);
+data[2364] = String.fromCharCode (0xffff);
+data[2365] = String.fromCharCode (0xffff);
+data[2366] = String.fromCharCode (0xffff);
+data[2367] = String.fromCharCode (0xffff);
+data[2368] = String.fromCharCode (0xffff);
+data[2369] = String.fromCharCode (0xffff);
+data[2370] = String.fromCharCode (0xffff);
+data[2371] = String.fromCharCode (0xffff);
+data[2372] = String.fromCharCode (0xffff);
+data[2373] = String.fromCharCode (0xffff);
+data[2374] = String.fromCharCode (0xffff);
+data[2375] = String.fromCharCode (0xffff);
+data[2376] = String.fromCharCode (0xffff);
+data[2377] = String.fromCharCode (0xffff);
+data[2378] = String.fromCharCode (0xffff);
+data[2379] = String.fromCharCode (0xffff);
+data[2380] = String.fromCharCode (0xffff);
+data[2381] = String.fromCharCode (0xffff);
+data[2382] = String.fromCharCode (0xffff);
+data[2383] = String.fromCharCode (0xffff);
+data[2384] = String.fromCharCode (0xffff);
+data[2385] = String.fromCharCode (0xffff);
+data[2386] = String.fromCharCode (0xffff);
+data[2387] = String.fromCharCode (0xffff);
+data[2388] = String.fromCharCode (0xffff);
+data[2389] = String.fromCharCode (0xffff);
+data[2390] = String.fromCharCode (0xffff);
+data[2391] = String.fromCharCode (0xffff);
+data[2392] = String.fromCharCode (0xffff);
+data[2393] = String.fromCharCode (0xffff);
+data[2394] = String.fromCharCode (0xffff);
+data[2395] = String.fromCharCode (0xffff);
+data[2396] = String.fromCharCode (0xffff);
+data[2397] = String.fromCharCode (0xffff);
+data[2398] = String.fromCharCode (0xffff);
+data[2399] = String.fromCharCode (0xffff);
+data[2400] = String.fromCharCode (0xffff);
+data[2401] = String.fromCharCode (0xffff);
+data[2402] = String.fromCharCode (0xffff);
+data[2403] = String.fromCharCode (0xffff);
+data[2404] = String.fromCharCode (0xffff);
+data[2405] = String.fromCharCode (0xffff);
+data[2406] = String.fromCharCode (0xffff);
+data[2407] = String.fromCharCode (0xffff);
+data[2408] = String.fromCharCode (0xffff);
+data[2409] = String.fromCharCode (0xffff);
+data[2410] = String.fromCharCode (0xffff);
+data[2411] = String.fromCharCode (0xffff);
+data[2412] = String.fromCharCode (0xffff);
+data[2413] = String.fromCharCode (0xffff);
+data[2414] = String.fromCharCode (0xffff);
+data[2415] = String.fromCharCode (0xffff);
+data[2416] = String.fromCharCode (0xffff);
+data[2417] = String.fromCharCode (0xffff);
+data[2418] = String.fromCharCode (0xffff);
+data[2419] = String.fromCharCode (0xffff);
+data[2420] = String.fromCharCode (0xffff);
+data[2421] = String.fromCharCode (0xffff);
+data[2422] = String.fromCharCode (0xffff);
+data[2423] = String.fromCharCode (0xffff);
+data[2424] = String.fromCharCode (0xffff);
+data[2425] = String.fromCharCode (0xffff);
+data[2426] = String.fromCharCode (0xffff);
+data[2427] = String.fromCharCode (0xffff);
+data[2428] = String.fromCharCode (0xffff);
+data[2429] = String.fromCharCode (0xffff);
+data[2430] = String.fromCharCode (0xffff);
+data[2431] = String.fromCharCode (0xffff);
+data[2432] = String.fromCharCode (0xffff);
+data[2433] = String.fromCharCode (0xffff);
+data[2434] = String.fromCharCode (0xffff);
+data[2435] = String.fromCharCode (0xffff);
+data[2436] = String.fromCharCode (0xffff);
+data[2437] = String.fromCharCode (0xffff);
+data[2438] = String.fromCharCode (0xffff);
+data[2439] = String.fromCharCode (0xffff);
+data[2440] = String.fromCharCode (0xffff);
+data[2441] = String.fromCharCode (0xffff);
+data[2442] = String.fromCharCode (0xffff);
+data[2443] = String.fromCharCode (0xffff);
+data[2444] = String.fromCharCode (0xffff);
+data[2445] = String.fromCharCode (0xffff);
+data[2446] = String.fromCharCode (0xffff);
+data[2447] = String.fromCharCode (0xffff);
+data[2448] = String.fromCharCode (0xffff);
+data[2449] = String.fromCharCode (0xffff);
+data[2450] = String.fromCharCode (0xffff);
+data[2451] = String.fromCharCode (0xffff);
+data[2452] = String.fromCharCode (0xffff);
+data[2453] = String.fromCharCode (0xffff);
+data[2454] = String.fromCharCode (0xffff);
+data[2455] = String.fromCharCode (0xffff);
+data[2456] = String.fromCharCode (0xffff);
+data[2457] = String.fromCharCode (0xffff);
+data[2458] = String.fromCharCode (0xffff);
+data[2459] = String.fromCharCode (0xffff);
+data[2460] = String.fromCharCode (0xffff);
+data[2461] = String.fromCharCode (0xffff);
+data[2462] = String.fromCharCode (0xffff);
+data[2463] = String.fromCharCode (0xffff);
+data[2464] = String.fromCharCode (0xffff);
+data[2465] = String.fromCharCode (0xffff);
+data[2466] = String.fromCharCode (0xffff);
+data[2467] = String.fromCharCode (0xffff);
+data[2468] = String.fromCharCode (0xffff);
+data[2469] = String.fromCharCode (0xffff);
+data[2470] = String.fromCharCode (0xffff);
+data[2471] = String.fromCharCode (0xffff);
+data[2472] = String.fromCharCode (0xffff);
+data[2473] = String.fromCharCode (0xffff);
+data[2474] = String.fromCharCode (0xffff);
+data[2475] = String.fromCharCode (0xffff);
+data[2476] = String.fromCharCode (0xffff);
+data[2477] = String.fromCharCode (0xffff);
+data[2478] = String.fromCharCode (0xffff);
+data[2479] = String.fromCharCode (0xffff);
+data[2480] = String.fromCharCode (0xffff);
+data[2481] = String.fromCharCode (0xffff);
+data[2482] = String.fromCharCode (0xffff);
+data[2483] = String.fromCharCode (0xffff);
+data[2484] = String.fromCharCode (0xffff);
+data[2485] = String.fromCharCode (0xffff);
+data[2486] = String.fromCharCode (0xffff);
+data[2487] = String.fromCharCode (0xffff);
+data[2488] = String.fromCharCode (0xffff);
+data[2489] = String.fromCharCode (0xffff);
+data[2490] = String.fromCharCode (0xffff);
+data[2491] = String.fromCharCode (0xffff);
+data[2492] = String.fromCharCode (0xffff);
+data[2493] = String.fromCharCode (0xffff);
+data[2494] = String.fromCharCode (0xffff);
+data[2495] = String.fromCharCode (0xffff);
+data[2496] = String.fromCharCode (0xffff);
+data[2497] = String.fromCharCode (0xffff);
+data[2498] = String.fromCharCode (0xffff);
+data[2499] = String.fromCharCode (0xffff);
+data[2500] = String.fromCharCode (0xffff);
+data[2501] = String.fromCharCode (0xffff);
+data[2502] = String.fromCharCode (0xffff);
+data[2503] = String.fromCharCode (0xffff);
+data[2504] = String.fromCharCode (0xffff);
+data[2505] = String.fromCharCode (0xffff);
+data[2506] = String.fromCharCode (0xffff);
+data[2507] = String.fromCharCode (0xffff);
+data[2508] = String.fromCharCode (0xffff);
+data[2509] = String.fromCharCode (0xffff);
+data[2510] = String.fromCharCode (0xffff);
+data[2511] = String.fromCharCode (0xffff);
+data[2512] = String.fromCharCode (0xffff);
+data[2513] = String.fromCharCode (0xffff);
+data[2514] = String.fromCharCode (0xffff);
+data[2515] = String.fromCharCode (0xffff);
+data[2516] = String.fromCharCode (0xffff);
+data[2517] = String.fromCharCode (0xffff);
+data[2518] = String.fromCharCode (0xffff);
+data[2519] = String.fromCharCode (0xffff);
+data[2520] = String.fromCharCode (0xffff);
+data[2521] = String.fromCharCode (0xffff);
+data[2522] = String.fromCharCode (0xffff);
+data[2523] = String.fromCharCode (0xffff);
+data[2524] = String.fromCharCode (0xffff);
+data[2525] = String.fromCharCode (0xffff);
+data[2526] = String.fromCharCode (0xffff);
+data[2527] = String.fromCharCode (0xffff);
+data[2528] = String.fromCharCode (0xffff);
+data[2529] = String.fromCharCode (0xffff);
+data[2530] = String.fromCharCode (0xffff);
+data[2531] = String.fromCharCode (0xffff);
+data[2532] = String.fromCharCode (0xffff);
+data[2533] = String.fromCharCode (0xffff);
+data[2534] = String.fromCharCode (0xffff);
+data[2535] = String.fromCharCode (0xffff);
+data[2536] = String.fromCharCode (0xffff);
+data[2537] = String.fromCharCode (0xffff);
+data[2538] = String.fromCharCode (0xffff);
+data[2539] = String.fromCharCode (0xffff);
+data[2540] = String.fromCharCode (0xffff);
+data[2541] = String.fromCharCode (0xffff);
+data[2542] = String.fromCharCode (0xffff);
+data[2543] = String.fromCharCode (0xffff);
+data[2544] = String.fromCharCode (0xffff);
+data[2545] = String.fromCharCode (0xffff);
+data[2546] = String.fromCharCode (0xffff);
+data[2547] = String.fromCharCode (0xffff);
+data[2548] = String.fromCharCode (0xffff);
+data[2549] = String.fromCharCode (0xffff);
+data[2550] = String.fromCharCode (0xffff);
+data[2551] = String.fromCharCode (0xffff);
+data[2552] = String.fromCharCode (0xffff);
+data[2553] = String.fromCharCode (0xffff);
+data[2554] = String.fromCharCode (0x003f);
+data[2752] = String.fromCharCode (0xffff);
+data[2753] = String.fromCharCode (0xffff);
+data[2754] = String.fromCharCode (0xffff);
+data[2755] = String.fromCharCode (0xffff);
+data[2756] = String.fromCharCode (0xffff);
+data[2757] = String.fromCharCode (0xffff);
+data[2758] = String.fromCharCode (0xffff);
+data[2759] = String.fromCharCode (0xffff);
+data[2760] = String.fromCharCode (0xffff);
+data[2761] = String.fromCharCode (0xffff);
+data[2762] = String.fromCharCode (0xffff);
+data[2763] = String.fromCharCode (0xffff);
+data[2764] = String.fromCharCode (0xffff);
+data[2765] = String.fromCharCode (0xffff);
+data[2766] = String.fromCharCode (0xffff);
+data[2767] = String.fromCharCode (0xffff);
+data[2768] = String.fromCharCode (0xffff);
+data[2769] = String.fromCharCode (0xffff);
+data[2770] = String.fromCharCode (0xffff);
+data[2771] = String.fromCharCode (0xffff);
+data[2772] = String.fromCharCode (0xffff);
+data[2773] = String.fromCharCode (0xffff);
+data[2774] = String.fromCharCode (0xffff);
+data[2775] = String.fromCharCode (0xffff);
+data[2776] = String.fromCharCode (0xffff);
+data[2777] = String.fromCharCode (0xffff);
+data[2778] = String.fromCharCode (0xffff);
+data[2779] = String.fromCharCode (0xffff);
+data[2780] = String.fromCharCode (0xffff);
+data[2781] = String.fromCharCode (0xffff);
+data[2782] = String.fromCharCode (0xffff);
+data[2783] = String.fromCharCode (0xffff);
+data[2784] = String.fromCharCode (0xffff);
+data[2785] = String.fromCharCode (0xffff);
+data[2786] = String.fromCharCode (0xffff);
+data[2787] = String.fromCharCode (0xffff);
+data[2788] = String.fromCharCode (0xffff);
+data[2789] = String.fromCharCode (0xffff);
+data[2790] = String.fromCharCode (0xffff);
+data[2791] = String.fromCharCode (0xffff);
+data[2792] = String.fromCharCode (0xffff);
+data[2793] = String.fromCharCode (0xffff);
+data[2794] = String.fromCharCode (0xffff);
+data[2795] = String.fromCharCode (0xffff);
+data[2796] = String.fromCharCode (0xffff);
+data[2797] = String.fromCharCode (0xffff);
+data[2798] = String.fromCharCode (0xffff);
+data[2799] = String.fromCharCode (0xffff);
+data[2800] = String.fromCharCode (0xffff);
+data[2801] = String.fromCharCode (0xffff);
+data[2802] = String.fromCharCode (0xffff);
+data[2803] = String.fromCharCode (0xffff);
+data[2804] = String.fromCharCode (0xffff);
+data[2805] = String.fromCharCode (0xffff);
+data[2806] = String.fromCharCode (0xffff);
+data[2807] = String.fromCharCode (0xffff);
+data[2808] = String.fromCharCode (0xffff);
+data[2809] = String.fromCharCode (0xffff);
+data[2810] = String.fromCharCode (0xffff);
+data[2811] = String.fromCharCode (0xffff);
+data[2812] = String.fromCharCode (0xffff);
+data[2813] = String.fromCharCode (0xffff);
+data[2814] = String.fromCharCode (0xffff);
+data[2815] = String.fromCharCode (0xffff);
+data[2816] = String.fromCharCode (0xffff);
+data[2817] = String.fromCharCode (0xffff);
+data[2818] = String.fromCharCode (0xffff);
+data[2819] = String.fromCharCode (0xffff);
+data[2820] = String.fromCharCode (0xffff);
+data[2821] = String.fromCharCode (0xffff);
+data[2822] = String.fromCharCode (0xffff);
+data[2823] = String.fromCharCode (0xffff);
+data[2824] = String.fromCharCode (0xffff);
+data[2825] = String.fromCharCode (0xffff);
+data[2826] = String.fromCharCode (0xffff);
+data[2827] = String.fromCharCode (0xffff);
+data[2828] = String.fromCharCode (0xffff);
+data[2829] = String.fromCharCode (0xffff);
+data[2830] = String.fromCharCode (0xffff);
+data[2831] = String.fromCharCode (0xffff);
+data[2832] = String.fromCharCode (0xffff);
+data[2833] = String.fromCharCode (0xffff);
+data[2834] = String.fromCharCode (0xffff);
+data[2835] = String.fromCharCode (0xffff);
+data[2836] = String.fromCharCode (0xffff);
+data[2837] = String.fromCharCode (0xffff);
+data[2838] = String.fromCharCode (0xffff);
+data[2839] = String.fromCharCode (0xffff);
+data[2840] = String.fromCharCode (0xffff);
+data[2841] = String.fromCharCode (0xffff);
+data[2842] = String.fromCharCode (0xffff);
+data[2843] = String.fromCharCode (0xffff);
+data[2844] = String.fromCharCode (0xffff);
+data[2845] = String.fromCharCode (0xffff);
+data[2846] = String.fromCharCode (0xffff);
+data[2847] = String.fromCharCode (0xffff);
+data[2848] = String.fromCharCode (0xffff);
+data[2849] = String.fromCharCode (0xffff);
+data[2850] = String.fromCharCode (0xffff);
+data[2851] = String.fromCharCode (0xffff);
+data[2852] = String.fromCharCode (0xffff);
+data[2853] = String.fromCharCode (0xffff);
+data[2854] = String.fromCharCode (0xffff);
+data[2855] = String.fromCharCode (0xffff);
+data[2856] = String.fromCharCode (0xffff);
+data[2857] = String.fromCharCode (0xffff);
+data[2858] = String.fromCharCode (0xffff);
+data[2859] = String.fromCharCode (0xffff);
+data[2860] = String.fromCharCode (0xffff);
+data[2861] = String.fromCharCode (0xffff);
+data[2862] = String.fromCharCode (0xffff);
+data[2863] = String.fromCharCode (0xffff);
+data[2864] = String.fromCharCode (0xffff);
+data[2865] = String.fromCharCode (0xffff);
+data[2866] = String.fromCharCode (0xffff);
+data[2867] = String.fromCharCode (0xffff);
+data[2868] = String.fromCharCode (0xffff);
+data[2869] = String.fromCharCode (0xffff);
+data[2870] = String.fromCharCode (0xffff);
+data[2871] = String.fromCharCode (0xffff);
+data[2872] = String.fromCharCode (0xffff);
+data[2873] = String.fromCharCode (0xffff);
+data[2874] = String.fromCharCode (0xffff);
+data[2875] = String.fromCharCode (0xffff);
+data[2876] = String.fromCharCode (0xffff);
+data[2877] = String.fromCharCode (0xffff);
+data[2878] = String.fromCharCode (0xffff);
+data[2879] = String.fromCharCode (0xffff);
+data[2880] = String.fromCharCode (0xffff);
+data[2881] = String.fromCharCode (0xffff);
+data[2882] = String.fromCharCode (0xffff);
+data[2883] = String.fromCharCode (0xffff);
+data[2884] = String.fromCharCode (0xffff);
+data[2885] = String.fromCharCode (0xffff);
+data[2886] = String.fromCharCode (0xffff);
+data[2887] = String.fromCharCode (0xffff);
+data[2888] = String.fromCharCode (0xffff);
+data[2889] = String.fromCharCode (0xffff);
+data[2890] = String.fromCharCode (0xffff);
+data[2891] = String.fromCharCode (0xffff);
+data[2892] = String.fromCharCode (0xffff);
+data[2893] = String.fromCharCode (0xffff);
+data[2894] = String.fromCharCode (0xffff);
+data[2895] = String.fromCharCode (0xffff);
+data[2896] = String.fromCharCode (0xffff);
+data[2897] = String.fromCharCode (0xffff);
+data[2898] = String.fromCharCode (0xffff);
+data[2899] = String.fromCharCode (0xffff);
+data[2900] = String.fromCharCode (0xffff);
+data[2901] = String.fromCharCode (0xffff);
+data[2902] = String.fromCharCode (0xffff);
+data[2903] = String.fromCharCode (0xffff);
+data[2904] = String.fromCharCode (0xffff);
+data[2905] = String.fromCharCode (0xffff);
+data[2906] = String.fromCharCode (0xffff);
+data[2907] = String.fromCharCode (0xffff);
+data[2908] = String.fromCharCode (0xffff);
+data[2909] = String.fromCharCode (0xffff);
+data[2910] = String.fromCharCode (0xffff);
+data[2911] = String.fromCharCode (0xffff);
+data[2912] = String.fromCharCode (0xffff);
+data[2913] = String.fromCharCode (0xffff);
+data[2914] = String.fromCharCode (0xffff);
+data[2915] = String.fromCharCode (0xffff);
+data[2916] = String.fromCharCode (0xffff);
+data[2917] = String.fromCharCode (0xffff);
+data[2918] = String.fromCharCode (0xffff);
+data[2919] = String.fromCharCode (0xffff);
+data[2920] = String.fromCharCode (0xffff);
+data[2921] = String.fromCharCode (0xffff);
+data[2922] = String.fromCharCode (0xffff);
+data[2923] = String.fromCharCode (0xffff);
+data[2924] = String.fromCharCode (0xffff);
+data[2925] = String.fromCharCode (0xffff);
+data[2926] = String.fromCharCode (0xffff);
+data[2927] = String.fromCharCode (0xffff);
+data[2928] = String.fromCharCode (0xffff);
+data[2929] = String.fromCharCode (0xffff);
+data[2930] = String.fromCharCode (0xffff);
+data[2931] = String.fromCharCode (0xffff);
+data[2932] = String.fromCharCode (0xffff);
+data[2933] = String.fromCharCode (0xffff);
+data[2934] = String.fromCharCode (0xffff);
+data[2935] = String.fromCharCode (0xffff);
+data[2936] = String.fromCharCode (0xffff);
+data[2937] = String.fromCharCode (0xffff);
+data[2938] = String.fromCharCode (0xffff);
+data[2939] = String.fromCharCode (0xffff);
+data[2940] = String.fromCharCode (0xffff);
+data[2941] = String.fromCharCode (0xffff);
+data[2942] = String.fromCharCode (0xffff);
+data[2943] = String.fromCharCode (0xffff);
+data[2944] = String.fromCharCode (0xffff);
+data[2945] = String.fromCharCode (0xffff);
+data[2946] = String.fromCharCode (0xffff);
+data[2947] = String.fromCharCode (0xffff);
+data[2948] = String.fromCharCode (0xffff);
+data[2949] = String.fromCharCode (0xffff);
+data[2950] = String.fromCharCode (0xffff);
+data[2951] = String.fromCharCode (0xffff);
+data[2952] = String.fromCharCode (0xffff);
+data[2953] = String.fromCharCode (0xffff);
+data[2954] = String.fromCharCode (0xffff);
+data[2955] = String.fromCharCode (0xffff);
+data[2956] = String.fromCharCode (0xffff);
+data[2957] = String.fromCharCode (0xffff);
+data[2958] = String.fromCharCode (0xffff);
+data[2959] = String.fromCharCode (0xffff);
+data[2960] = String.fromCharCode (0xffff);
+data[2961] = String.fromCharCode (0xffff);
+data[2962] = String.fromCharCode (0xffff);
+data[2963] = String.fromCharCode (0xffff);
+data[2964] = String.fromCharCode (0xffff);
+data[2965] = String.fromCharCode (0xffff);
+data[2966] = String.fromCharCode (0xffff);
+data[2967] = String.fromCharCode (0xffff);
+data[2968] = String.fromCharCode (0xffff);
+data[2969] = String.fromCharCode (0xffff);
+data[2970] = String.fromCharCode (0xffff);
+data[2971] = String.fromCharCode (0xffff);
+data[2972] = String.fromCharCode (0xffff);
+data[2973] = String.fromCharCode (0xffff);
+data[2974] = String.fromCharCode (0xffff);
+data[2975] = String.fromCharCode (0xffff);
+data[2976] = String.fromCharCode (0xffff);
+data[2977] = String.fromCharCode (0xffff);
+data[2978] = String.fromCharCode (0xffff);
+data[2979] = String.fromCharCode (0xffff);
+data[2980] = String.fromCharCode (0xffff);
+data[2981] = String.fromCharCode (0xffff);
+data[2982] = String.fromCharCode (0xffff);
+data[2983] = String.fromCharCode (0xffff);
+data[2984] = String.fromCharCode (0xffff);
+data[2985] = String.fromCharCode (0xffff);
+data[2986] = String.fromCharCode (0xffff);
+data[2987] = String.fromCharCode (0xffff);
+data[2988] = String.fromCharCode (0xffff);
+data[2989] = String.fromCharCode (0xffff);
+data[2990] = String.fromCharCode (0xffff);
+data[2991] = String.fromCharCode (0xffff);
+data[2992] = String.fromCharCode (0xffff);
+data[2993] = String.fromCharCode (0xffff);
+data[2994] = String.fromCharCode (0xffff);
+data[2995] = String.fromCharCode (0xffff);
+data[2996] = String.fromCharCode (0xffff);
+data[2997] = String.fromCharCode (0xffff);
+data[2998] = String.fromCharCode (0xffff);
+data[2999] = String.fromCharCode (0xffff);
+data[3000] = String.fromCharCode (0xffff);
+data[3001] = String.fromCharCode (0xffff);
+data[3002] = String.fromCharCode (0xffff);
+data[3003] = String.fromCharCode (0xffff);
+data[3004] = String.fromCharCode (0xffff);
+data[3005] = String.fromCharCode (0xffff);
+data[3006] = String.fromCharCode (0xffff);
+data[3007] = String.fromCharCode (0xffff);
+data[3008] = String.fromCharCode (0xffff);
+data[3009] = String.fromCharCode (0xffff);
+data[3010] = String.fromCharCode (0xffff);
+data[3011] = String.fromCharCode (0xffff);
+data[3012] = String.fromCharCode (0xffff);
+data[3013] = String.fromCharCode (0xffff);
+data[3014] = String.fromCharCode (0xffff);
+data[3015] = String.fromCharCode (0xffff);
+data[3016] = String.fromCharCode (0xffff);
+data[3017] = String.fromCharCode (0xffff);
+data[3018] = String.fromCharCode (0xffff);
+data[3019] = String.fromCharCode (0xffff);
+data[3020] = String.fromCharCode (0xffff);
+data[3021] = String.fromCharCode (0xffff);
+data[3022] = String.fromCharCode (0xffff);
+data[3023] = String.fromCharCode (0xffff);
+data[3024] = String.fromCharCode (0xffff);
+data[3025] = String.fromCharCode (0xffff);
+data[3026] = String.fromCharCode (0xffff);
+data[3027] = String.fromCharCode (0xffff);
+data[3028] = String.fromCharCode (0xffff);
+data[3029] = String.fromCharCode (0xffff);
+data[3030] = String.fromCharCode (0xffff);
+data[3031] = String.fromCharCode (0xffff);
+data[3032] = String.fromCharCode (0xffff);
+data[3033] = String.fromCharCode (0xffff);
+data[3034] = String.fromCharCode (0xffff);
+data[3035] = String.fromCharCode (0xffff);
+data[3036] = String.fromCharCode (0xffff);
+data[3037] = String.fromCharCode (0xffff);
+data[3038] = String.fromCharCode (0xffff);
+data[3039] = String.fromCharCode (0xffff);
+data[3040] = String.fromCharCode (0xffff);
+data[3041] = String.fromCharCode (0xffff);
+data[3042] = String.fromCharCode (0xffff);
+data[3043] = String.fromCharCode (0xffff);
+data[3044] = String.fromCharCode (0xffff);
+data[3045] = String.fromCharCode (0xffff);
+data[3046] = String.fromCharCode (0xffff);
+data[3047] = String.fromCharCode (0xffff);
+data[3048] = String.fromCharCode (0xffff);
+data[3049] = String.fromCharCode (0xffff);
+data[3050] = String.fromCharCode (0xffff);
+data[3051] = String.fromCharCode (0xffff);
+data[3052] = String.fromCharCode (0xffff);
+data[3053] = String.fromCharCode (0xffff);
+data[3054] = String.fromCharCode (0xffff);
+data[3055] = String.fromCharCode (0xffff);
+data[3056] = String.fromCharCode (0xffff);
+data[3057] = String.fromCharCode (0xffff);
+data[3058] = String.fromCharCode (0xffff);
+data[3059] = String.fromCharCode (0xffff);
+data[3060] = String.fromCharCode (0xffff);
+data[3061] = String.fromCharCode (0xffff);
+data[3062] = String.fromCharCode (0xffff);
+data[3063] = String.fromCharCode (0xffff);
+data[3064] = String.fromCharCode (0xffff);
+data[3065] = String.fromCharCode (0xffff);
+data[3066] = String.fromCharCode (0xffff);
+data[3067] = String.fromCharCode (0xffff);
+data[3068] = String.fromCharCode (0xffff);
+data[3069] = String.fromCharCode (0xffff);
+data[3070] = String.fromCharCode (0xffff);
+data[3071] = String.fromCharCode (0xffff);
+data[3072] = String.fromCharCode (0xffff);
+data[3073] = String.fromCharCode (0xffff);
+data[3074] = String.fromCharCode (0xffff);
+data[3075] = String.fromCharCode (0xffff);
+data[3076] = String.fromCharCode (0xffff);
+data[3077] = String.fromCharCode (0xffff);
+data[3078] = String.fromCharCode (0xffff);
+data[3079] = String.fromCharCode (0xffff);
+data[3080] = String.fromCharCode (0xffff);
+data[3081] = String.fromCharCode (0xffff);
+data[3082] = String.fromCharCode (0xffff);
+data[3083] = String.fromCharCode (0xffff);
+data[3084] = String.fromCharCode (0xffff);
+data[3085] = String.fromCharCode (0xffff);
+data[3086] = String.fromCharCode (0xffff);
+data[3087] = String.fromCharCode (0xffff);
+data[3088] = String.fromCharCode (0xffff);
+data[3089] = String.fromCharCode (0xffff);
+data[3090] = String.fromCharCode (0xffff);
+data[3091] = String.fromCharCode (0xffff);
+data[3092] = String.fromCharCode (0xffff);
+data[3093] = String.fromCharCode (0xffff);
+data[3094] = String.fromCharCode (0xffff);
+data[3095] = String.fromCharCode (0xffff);
+data[3096] = String.fromCharCode (0xffff);
+data[3097] = String.fromCharCode (0xffff);
+data[3098] = String.fromCharCode (0xffff);
+data[3099] = String.fromCharCode (0xffff);
+data[3100] = String.fromCharCode (0xffff);
+data[3101] = String.fromCharCode (0xffff);
+data[3102] = String.fromCharCode (0xffff);
+data[3103] = String.fromCharCode (0xffff);
+data[3104] = String.fromCharCode (0xffff);
+data[3105] = String.fromCharCode (0xffff);
+data[3106] = String.fromCharCode (0xffff);
+data[3107] = String.fromCharCode (0xffff);
+data[3108] = String.fromCharCode (0xffff);
+data[3109] = String.fromCharCode (0xffff);
+data[3110] = String.fromCharCode (0xffff);
+data[3111] = String.fromCharCode (0xffff);
+data[3112] = String.fromCharCode (0xffff);
+data[3113] = String.fromCharCode (0xffff);
+data[3114] = String.fromCharCode (0xffff);
+data[3115] = String.fromCharCode (0xffff);
+data[3116] = String.fromCharCode (0xffff);
+data[3117] = String.fromCharCode (0xffff);
+data[3118] = String.fromCharCode (0xffff);
+data[3119] = String.fromCharCode (0xffff);
+data[3120] = String.fromCharCode (0xffff);
+data[3121] = String.fromCharCode (0xffff);
+data[3122] = String.fromCharCode (0xffff);
+data[3123] = String.fromCharCode (0xffff);
+data[3124] = String.fromCharCode (0xffff);
+data[3125] = String.fromCharCode (0xffff);
+data[3126] = String.fromCharCode (0xffff);
+data[3127] = String.fromCharCode (0xffff);
+data[3128] = String.fromCharCode (0xffff);
+data[3129] = String.fromCharCode (0xffff);
+data[3130] = String.fromCharCode (0xffff);
+data[3131] = String.fromCharCode (0xffff);
+data[3132] = String.fromCharCode (0xffff);
+data[3133] = String.fromCharCode (0xffff);
+data[3134] = String.fromCharCode (0xffff);
+data[3135] = String.fromCharCode (0xffff);
+data[3136] = String.fromCharCode (0xffff);
+data[3137] = String.fromCharCode (0xffff);
+data[3138] = String.fromCharCode (0xffff);
+data[3139] = String.fromCharCode (0xffff);
+data[3140] = String.fromCharCode (0xffff);
+data[3141] = String.fromCharCode (0xffff);
+data[3142] = String.fromCharCode (0xffff);
+data[3143] = String.fromCharCode (0xffff);
+data[3144] = String.fromCharCode (0xffff);
+data[3145] = String.fromCharCode (0xffff);
+data[3146] = String.fromCharCode (0xffff);
+data[3147] = String.fromCharCode (0xffff);
+data[3148] = String.fromCharCode (0xffff);
+data[3149] = String.fromCharCode (0xffff);
+data[3150] = String.fromCharCode (0xffff);
+data[3151] = String.fromCharCode (0xffff);
+data[3152] = String.fromCharCode (0xffff);
+data[3153] = String.fromCharCode (0xffff);
+data[3154] = String.fromCharCode (0xffff);
+data[3155] = String.fromCharCode (0xffff);
+data[3156] = String.fromCharCode (0xffff);
+data[3157] = String.fromCharCode (0xffff);
+data[3158] = String.fromCharCode (0xffff);
+data[3159] = String.fromCharCode (0xffff);
+data[3160] = String.fromCharCode (0xffff);
+data[3161] = String.fromCharCode (0xffff);
+data[3162] = String.fromCharCode (0xffff);
+data[3163] = String.fromCharCode (0xffff);
+data[3164] = String.fromCharCode (0xffff);
+data[3165] = String.fromCharCode (0xffff);
+data[3166] = String.fromCharCode (0xffff);
+data[3167] = String.fromCharCode (0xffff);
+data[3168] = String.fromCharCode (0xffff);
+data[3169] = String.fromCharCode (0xffff);
+data[3170] = String.fromCharCode (0xffff);
+data[3171] = String.fromCharCode (0xffff);
+data[3172] = String.fromCharCode (0xffff);
+data[3173] = String.fromCharCode (0xffff);
+data[3174] = String.fromCharCode (0xffff);
+data[3175] = String.fromCharCode (0xffff);
+data[3176] = String.fromCharCode (0xffff);
+data[3177] = String.fromCharCode (0xffff);
+data[3178] = String.fromCharCode (0xffff);
+data[3179] = String.fromCharCode (0xffff);
+data[3180] = String.fromCharCode (0xffff);
+data[3181] = String.fromCharCode (0xffff);
+data[3182] = String.fromCharCode (0xffff);
+data[3183] = String.fromCharCode (0xffff);
+data[3184] = String.fromCharCode (0xffff);
+data[3185] = String.fromCharCode (0xffff);
+data[3186] = String.fromCharCode (0xffff);
+data[3187] = String.fromCharCode (0xffff);
+data[3188] = String.fromCharCode (0xffff);
+data[3189] = String.fromCharCode (0xffff);
+data[3190] = String.fromCharCode (0xffff);
+data[3191] = String.fromCharCode (0xffff);
+data[3192] = String.fromCharCode (0xffff);
+data[3193] = String.fromCharCode (0xffff);
+data[3194] = String.fromCharCode (0xffff);
+data[3195] = String.fromCharCode (0xffff);
+data[3196] = String.fromCharCode (0xffff);
+data[3197] = String.fromCharCode (0xffff);
+data[3198] = String.fromCharCode (0xffff);
+data[3199] = String.fromCharCode (0xffff);
+data[3200] = String.fromCharCode (0xffff);
+data[3201] = String.fromCharCode (0xffff);
+data[3202] = String.fromCharCode (0xffff);
+data[3203] = String.fromCharCode (0xffff);
+data[3204] = String.fromCharCode (0xffff);
+data[3205] = String.fromCharCode (0xffff);
+data[3206] = String.fromCharCode (0xffff);
+data[3207] = String.fromCharCode (0xffff);
+data[3208] = String.fromCharCode (0xffff);
+data[3209] = String.fromCharCode (0xffff);
+data[3210] = String.fromCharCode (0xffff);
+data[3211] = String.fromCharCode (0xffff);
+data[3212] = String.fromCharCode (0xffff);
+data[3213] = String.fromCharCode (0xffff);
+data[3214] = String.fromCharCode (0xffff);
+data[3215] = String.fromCharCode (0xffff);
+data[3216] = String.fromCharCode (0xffff);
+data[3217] = String.fromCharCode (0xffff);
+data[3218] = String.fromCharCode (0xffff);
+data[3219] = String.fromCharCode (0xffff);
+data[3220] = String.fromCharCode (0xffff);
+data[3221] = String.fromCharCode (0xffff);
+data[3222] = String.fromCharCode (0xffff);
+data[3223] = String.fromCharCode (0xffff);
+data[3224] = String.fromCharCode (0xffff);
+data[3225] = String.fromCharCode (0xffff);
+data[3226] = String.fromCharCode (0xffff);
+data[3227] = String.fromCharCode (0xffff);
+data[3228] = String.fromCharCode (0xffff);
+data[3229] = String.fromCharCode (0xffff);
+data[3230] = String.fromCharCode (0xffff);
+data[3231] = String.fromCharCode (0xffff);
+data[3232] = String.fromCharCode (0xffff);
+data[3233] = String.fromCharCode (0xffff);
+data[3234] = String.fromCharCode (0xffff);
+data[3235] = String.fromCharCode (0xffff);
+data[3236] = String.fromCharCode (0xffff);
+data[3237] = String.fromCharCode (0xffff);
+data[3238] = String.fromCharCode (0xffff);
+data[3239] = String.fromCharCode (0xffff);
+data[3240] = String.fromCharCode (0xffff);
+data[3241] = String.fromCharCode (0xffff);
+data[3242] = String.fromCharCode (0xffff);
+data[3243] = String.fromCharCode (0xffff);
+data[3244] = String.fromCharCode (0xffff);
+data[3245] = String.fromCharCode (0xffff);
+data[3246] = String.fromCharCode (0xffff);
+data[3247] = String.fromCharCode (0xffff);
+data[3248] = String.fromCharCode (0xffff);
+data[3249] = String.fromCharCode (0xffff);
+data[3250] = String.fromCharCode (0xffff);
+data[3251] = String.fromCharCode (0xffff);
+data[3252] = String.fromCharCode (0xffff);
+data[3253] = String.fromCharCode (0xffff);
+data[3254] = String.fromCharCode (0xffff);
+data[3255] = String.fromCharCode (0xffff);
+data[3256] = String.fromCharCode (0xffff);
+data[3257] = String.fromCharCode (0xffff);
+data[3258] = String.fromCharCode (0xffff);
+data[3259] = String.fromCharCode (0xffff);
+data[3260] = String.fromCharCode (0xffff);
+data[3261] = String.fromCharCode (0xffff);
+data[3262] = String.fromCharCode (0xffff);
+data[3263] = String.fromCharCode (0xffff);
+data[3264] = String.fromCharCode (0xffff);
+data[3265] = String.fromCharCode (0xffff);
+data[3266] = String.fromCharCode (0xffff);
+data[3267] = String.fromCharCode (0xffff);
+data[3268] = String.fromCharCode (0xffff);
+data[3269] = String.fromCharCode (0xffff);
+data[3270] = String.fromCharCode (0xffff);
+data[3271] = String.fromCharCode (0xffff);
+data[3272] = String.fromCharCode (0xffff);
+data[3273] = String.fromCharCode (0xffff);
+data[3274] = String.fromCharCode (0xffff);
+data[3275] = String.fromCharCode (0xffff);
+data[3276] = String.fromCharCode (0xffff);
+data[3277] = String.fromCharCode (0xffff);
+data[3278] = String.fromCharCode (0xffff);
+data[3279] = String.fromCharCode (0xffff);
+data[3280] = String.fromCharCode (0xffff);
+data[3281] = String.fromCharCode (0xffff);
+data[3282] = String.fromCharCode (0xffff);
+data[3283] = String.fromCharCode (0xffff);
+data[3284] = String.fromCharCode (0xffff);
+data[3285] = String.fromCharCode (0xffff);
+data[3286] = String.fromCharCode (0xffff);
+data[3287] = String.fromCharCode (0xffff);
+data[3288] = String.fromCharCode (0xffff);
+data[3289] = String.fromCharCode (0xffff);
+data[3290] = String.fromCharCode (0xffff);
+data[3291] = String.fromCharCode (0xffff);
+data[3292] = String.fromCharCode (0xffff);
+data[3293] = String.fromCharCode (0xffff);
+data[3294] = String.fromCharCode (0xffff);
+data[3295] = String.fromCharCode (0xffff);
+data[3296] = String.fromCharCode (0xffff);
+data[3297] = String.fromCharCode (0xffff);
+data[3298] = String.fromCharCode (0xffff);
+data[3299] = String.fromCharCode (0xffff);
+data[3300] = String.fromCharCode (0xffff);
+data[3301] = String.fromCharCode (0xffff);
+data[3302] = String.fromCharCode (0xffff);
+data[3303] = String.fromCharCode (0xffff);
+data[3304] = String.fromCharCode (0xffff);
+data[3305] = String.fromCharCode (0xffff);
+data[3306] = String.fromCharCode (0xffff);
+data[3307] = String.fromCharCode (0xffff);
+data[3308] = String.fromCharCode (0xffff);
+data[3309] = String.fromCharCode (0xffff);
+data[3310] = String.fromCharCode (0xffff);
+data[3311] = String.fromCharCode (0xffff);
+data[3312] = String.fromCharCode (0xffff);
+data[3313] = String.fromCharCode (0xffff);
+data[3314] = String.fromCharCode (0xffff);
+data[3315] = String.fromCharCode (0xffff);
+data[3316] = String.fromCharCode (0xffff);
+data[3317] = String.fromCharCode (0xffff);
+data[3318] = String.fromCharCode (0xffff);
+data[3319] = String.fromCharCode (0xffff);
+data[3320] = String.fromCharCode (0xffff);
+data[3321] = String.fromCharCode (0xffff);
+data[3322] = String.fromCharCode (0xffff);
+data[3323] = String.fromCharCode (0xffff);
+data[3324] = String.fromCharCode (0xffff);
+data[3325] = String.fromCharCode (0xffff);
+data[3326] = String.fromCharCode (0xffff);
+data[3327] = String.fromCharCode (0xffff);
+data[3328] = String.fromCharCode (0xffff);
+data[3329] = String.fromCharCode (0xffff);
+data[3330] = String.fromCharCode (0xffff);
+data[3331] = String.fromCharCode (0xffff);
+data[3332] = String.fromCharCode (0xffff);
+data[3333] = String.fromCharCode (0xffff);
+data[3334] = String.fromCharCode (0xffff);
+data[3335] = String.fromCharCode (0xffff);
+data[3336] = String.fromCharCode (0xffff);
+data[3337] = String.fromCharCode (0xffff);
+data[3338] = String.fromCharCode (0xffff);
+data[3339] = String.fromCharCode (0xffff);
+data[3340] = String.fromCharCode (0xffff);
+data[3341] = String.fromCharCode (0xffff);
+data[3342] = String.fromCharCode (0xffff);
+data[3343] = String.fromCharCode (0xffff);
+data[3344] = String.fromCharCode (0xffff);
+data[3345] = String.fromCharCode (0xffff);
+data[3346] = String.fromCharCode (0xffff);
+data[3347] = String.fromCharCode (0xffff);
+data[3348] = String.fromCharCode (0xffff);
+data[3349] = String.fromCharCode (0xffff);
+data[3350] = String.fromCharCode (0xffff);
+data[3351] = String.fromCharCode (0xffff);
+data[3352] = String.fromCharCode (0xffff);
+data[3353] = String.fromCharCode (0xffff);
+data[3354] = String.fromCharCode (0xffff);
+data[3355] = String.fromCharCode (0xffff);
+data[3356] = String.fromCharCode (0xffff);
+data[3357] = String.fromCharCode (0xffff);
+data[3358] = String.fromCharCode (0xffff);
+data[3359] = String.fromCharCode (0xffff);
+data[3360] = String.fromCharCode (0xffff);
+data[3361] = String.fromCharCode (0xffff);
+data[3362] = String.fromCharCode (0xffff);
+data[3363] = String.fromCharCode (0xffff);
+data[3364] = String.fromCharCode (0xffff);
+data[3365] = String.fromCharCode (0xffff);
+data[3366] = String.fromCharCode (0xffff);
+data[3367] = String.fromCharCode (0xffff);
+data[3368] = String.fromCharCode (0xffff);
+data[3369] = String.fromCharCode (0xffff);
+data[3370] = String.fromCharCode (0xffff);
+data[3371] = String.fromCharCode (0xffff);
+data[3372] = String.fromCharCode (0xffff);
+data[3373] = String.fromCharCode (0xffff);
+data[3374] = String.fromCharCode (0xffff);
+data[3375] = String.fromCharCode (0xffff);
+data[3376] = String.fromCharCode (0xffff);
+data[3377] = String.fromCharCode (0xffff);
+data[3378] = String.fromCharCode (0xffff);
+data[3379] = String.fromCharCode (0xffff);
+data[3380] = String.fromCharCode (0xffff);
+data[3381] = String.fromCharCode (0xffff);
+data[3382] = String.fromCharCode (0xffff);
+data[3383] = String.fromCharCode (0xffff);
+data[3384] = String.fromCharCode (0xffff);
+data[3385] = String.fromCharCode (0xffff);
+data[3386] = String.fromCharCode (0xffff);
+data[3387] = String.fromCharCode (0xffff);
+data[3388] = String.fromCharCode (0xffff);
+data[3389] = String.fromCharCode (0xffff);
+data[3390] = String.fromCharCode (0xffff);
+data[3391] = String.fromCharCode (0xffff);
+data[3392] = String.fromCharCode (0xffff);
+data[3393] = String.fromCharCode (0xffff);
+data[3394] = String.fromCharCode (0xffff);
+data[3395] = String.fromCharCode (0xffff);
+data[3396] = String.fromCharCode (0xffff);
+data[3397] = String.fromCharCode (0xffff);
+data[3398] = String.fromCharCode (0xffff);
+data[3399] = String.fromCharCode (0xffff);
+data[3400] = String.fromCharCode (0xffff);
+data[3401] = String.fromCharCode (0xffff);
+data[3402] = String.fromCharCode (0xffff);
+data[3403] = String.fromCharCode (0xffff);
+data[3404] = String.fromCharCode (0xffff);
+data[3405] = String.fromCharCode (0xffff);
+data[3406] = String.fromCharCode (0xffff);
+data[3407] = String.fromCharCode (0xffff);
+data[3408] = String.fromCharCode (0xffff);
+data[3409] = String.fromCharCode (0xffff);
+data[3410] = String.fromCharCode (0xffff);
+data[3411] = String.fromCharCode (0xffff);
+data[3412] = String.fromCharCode (0xffff);
+data[3413] = String.fromCharCode (0xffff);
+data[3414] = String.fromCharCode (0xffff);
+data[3415] = String.fromCharCode (0xffff);
+data[3416] = String.fromCharCode (0xffff);
+data[3417] = String.fromCharCode (0xffff);
+data[3418] = String.fromCharCode (0xffff);
+data[3419] = String.fromCharCode (0xffff);
+data[3420] = String.fromCharCode (0xffff);
+data[3421] = String.fromCharCode (0xffff);
+data[3422] = String.fromCharCode (0xffff);
+data[3423] = String.fromCharCode (0xffff);
+data[3424] = String.fromCharCode (0xffff);
+data[3425] = String.fromCharCode (0xffff);
+data[3426] = String.fromCharCode (0xffff);
+data[3427] = String.fromCharCode (0xffff);
+data[3428] = String.fromCharCode (0xffff);
+data[3429] = String.fromCharCode (0xffff);
+data[3430] = String.fromCharCode (0xffff);
+data[3431] = String.fromCharCode (0xffff);
+data[3432] = String.fromCharCode (0xffff);
+data[3433] = String.fromCharCode (0xffff);
+data[3434] = String.fromCharCode (0xffff);
+data[3435] = String.fromCharCode (0xffff);
+data[3436] = String.fromCharCode (0xffff);
+data[3437] = String.fromCharCode (0xffff);
+data[3438] = String.fromCharCode (0xffff);
+data[3439] = String.fromCharCode (0xffff);
+data[3440] = String.fromCharCode (0xffff);
+data[3441] = String.fromCharCode (0xffff);
+data[3442] = String.fromCharCode (0xffff);
+data[3443] = String.fromCharCode (0xffff);
+data[3444] = String.fromCharCode (0xffff);
+data[3445] = String.fromCharCode (0xffff);
+data[3446] = String.fromCharCode (0xffff);
+data[3447] = String.fromCharCode (0xffff);
+data[3448] = String.fromCharCode (0xffff);
+data[3449] = String.fromCharCode (0xffff);
+data[3450] = String.fromCharCode (0x000f);
+data[3984] = String.fromCharCode (0xffff);
+data[3985] = String.fromCharCode (0xffff);
+data[3986] = String.fromCharCode (0xffff);
+data[3987] = String.fromCharCode (0xffff);
+data[3988] = String.fromCharCode (0xffff);
+data[3989] = String.fromCharCode (0xffff);
+data[3990] = String.fromCharCode (0xffff);
+data[3991] = String.fromCharCode (0xffff);
+data[3992] = String.fromCharCode (0xffff);
+data[3993] = String.fromCharCode (0xffff);
+data[3994] = String.fromCharCode (0xffff);
+data[3995] = String.fromCharCode (0xffff);
+data[3996] = String.fromCharCode (0xffff);
+data[3997] = String.fromCharCode (0xffff);
+data[3998] = String.fromCharCode (0xffff);
+data[3999] = String.fromCharCode (0xffff);
+data[4000] = String.fromCharCode (0xffff);
+data[4001] = String.fromCharCode (0xffff);
+data[4002] = String.fromCharCode (0x3fff);
+data[4016] = String.fromCharCode (0x007f);
+data[4017] = String.fromCharCode (0x80f8);
+data[4018] = String.fromCharCode (0xfdff);
+data[4019] = String.fromCharCode (0x5f7f);
+data[4020] = String.fromCharCode (0xffdb);
+data[4021] = String.fromCharCode (0xffff);
+data[4022] = String.fromCharCode (0xffff);
+data[4023] = String.fromCharCode (0xffff);
+data[4024] = String.fromCharCode (0xffff);
+data[4025] = String.fromCharCode (0xffff);
+data[4026] = String.fromCharCode (0xffff);
+data[4027] = String.fromCharCode (0x0003);
+data[4029] = String.fromCharCode (0xfff8);
+data[4030] = String.fromCharCode (0xffff);
+data[4031] = String.fromCharCode (0xffff);
+data[4032] = String.fromCharCode (0xffff);
+data[4033] = String.fromCharCode (0xffff);
+data[4034] = String.fromCharCode (0xffff);
+data[4035] = String.fromCharCode (0xffff);
+data[4036] = String.fromCharCode (0xffff);
+data[4037] = String.fromCharCode (0xffff);
+data[4038] = String.fromCharCode (0xffff);
+data[4039] = String.fromCharCode (0xffff);
+data[4040] = String.fromCharCode (0xffff);
+data[4041] = String.fromCharCode (0xffff);
+data[4042] = String.fromCharCode (0xffff);
+data[4043] = String.fromCharCode (0xffff);
+data[4044] = String.fromCharCode (0xffff);
+data[4045] = String.fromCharCode (0xffff);
+data[4046] = String.fromCharCode (0xffff);
+data[4047] = String.fromCharCode (0xffff);
+data[4048] = String.fromCharCode (0xffff);
+data[4049] = String.fromCharCode (0xffff);
+data[4050] = String.fromCharCode (0xffff);
+data[4051] = String.fromCharCode (0x3fff);
+data[4053] = String.fromCharCode (0xffff);
+data[4054] = String.fromCharCode (0xffff);
+data[4055] = String.fromCharCode (0xffff);
+data[4056] = String.fromCharCode (0xffff);
+data[4057] = String.fromCharCode (0xfffc);
+data[4058] = String.fromCharCode (0xffff);
+data[4059] = String.fromCharCode (0xffff);
+data[4060] = String.fromCharCode (0x00ff);
+data[4063] = String.fromCharCode (0x0fff);
+data[4071] = String.fromCharCode (0xffd7);
+data[4072] = String.fromCharCode (0xffff);
+data[4073] = String.fromCharCode (0xffff);
+data[4074] = String.fromCharCode (0xffff);
+data[4075] = String.fromCharCode (0xffff);
+data[4076] = String.fromCharCode (0xffff);
+data[4077] = String.fromCharCode (0xffff);
+data[4078] = String.fromCharCode (0xffff);
+data[4079] = String.fromCharCode (0x1fff);
+data[4082] = String.fromCharCode (0xfffe);
+data[4083] = String.fromCharCode (0x07ff);
+data[4084] = String.fromCharCode (0xfffe);
+data[4085] = String.fromCharCode (0x07ff);
+data[4086] = String.fromCharCode (0xffc0);
+data[4087] = String.fromCharCode (0xffff);
+data[4088] = String.fromCharCode (0xffff);
+data[4089] = String.fromCharCode (0xffff);
+data[4090] = String.fromCharCode (0xffff);
+data[4091] = String.fromCharCode (0x7fff);
+data[4092] = String.fromCharCode (0xfcfc);
+data[4093] = String.fromCharCode (0x1cfc);
+data[4100] = String.fromCharCode (0xfffe);
+data[4101] = String.fromCharCode (0x07ff);
+data[4102] = String.fromCharCode (0xfffe);
+data[4103] = String.fromCharCode (0x07ff);
+data[4106] = String.fromCharCode (0x0400);
+data[4107] = String.fromCharCode (0x0420);
+data[4108] = String.fromCharCode (0xffff);
+data[4109] = String.fromCharCode (0xff7f);
+data[4110] = String.fromCharCode (0xffff);
+data[4111] = String.fromCharCode (0xff7f);
+data[4112] = String.fromCharCode (0xffff);
+data[4113] = String.fromCharCode (0xffff);
+data[4114] = String.fromCharCode (0xffff);
+data[4115] = String.fromCharCode (0xffff);
+data[4116] = String.fromCharCode (0xffff);
+data[4117] = String.fromCharCode (0xffff);
+data[4118] = String.fromCharCode (0xffff);
+data[4119] = String.fromCharCode (0xffff);
+data[4120] = String.fromCharCode (0xffff);
+data[4121] = String.fromCharCode (0xffff);
+data[4122] = String.fromCharCode (0xffff);
+data[4123] = String.fromCharCode (0xffff);
+data[4124] = String.fromCharCode (0xffff);
+data[4125] = String.fromCharCode (0xffff);
+data[4126] = String.fromCharCode (0xffff);
+data[4127] = String.fromCharCode (0xfc3f);
+data[4128] = String.fromCharCode (0xffff);
+data[4129] = String.fromCharCode (0x00ff);
+data[4133] = String.fromCharCode (0xffff);
+data[4134] = String.fromCharCode (0xffff);
+data[4135] = String.fromCharCode (0xffff);
+data[4136] = String.fromCharCode (0xffff);
+data[4137] = String.fromCharCode (0xffff);
+data[4138] = String.fromCharCode (0x01ff);
+data[4139] = String.fromCharCode (0xf9ff);
+data[4140] = String.fromCharCode (0x0003);
+data[4141] = String.fromCharCode (0x0003);
+data[4142] = String.fromCharCode (0x001f);
+data[4151] = String.fromCharCode (0x0400);
+data[4152] = String.fromCharCode (0xd740);
+data[4153] = String.fromCharCode (0xffff);
+data[4154] = String.fromCharCode (0xfffb);
+data[4155] = String.fromCharCode (0xffff);
+data[4156] = String.fromCharCode (0x7fff);
+data[4157] = String.fromCharCode (0x547f);
+data[4158] = String.fromCharCode (0x00fd);
+});
+c$.white_f = Clazz_defineMethod (c$, "white_f", 
+function () {
+var data =  Clazz_newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.white =  new com.stevesoft.pat.Bits (data);
+data[0] = String.fromCharCode (0x3e00);
+data[1] = String.fromCharCode (0xf000);
+data[2] = String.fromCharCode (0x0001);
+data[512] = String.fromCharCode (0x0fff);
+data[514] = String.fromCharCode (0x0300);
+data[768] = String.fromCharCode (0x0001);
+data[4096] = String.fromCharCode (0x3e00);
+data[4097] = String.fromCharCode (0xf000);
+data[4098] = String.fromCharCode (0x0001);
+});
+c$.punct_f = Clazz_defineMethod (c$, "punct_f", 
+function () {
+var data =  Clazz_newCharArray (4159, '\0');
+com.stevesoft.pat.Bits.punct =  new com.stevesoft.pat.Bits (data);
+data[2] = String.fromCharCode (0xf7ee);
+data[3] = String.fromCharCode (0x8c00);
+data[4] = String.fromCharCode (0x0001);
+data[5] = String.fromCharCode (0xb800);
+data[7] = String.fromCharCode (0x2800);
+data[10] = String.fromCharCode (0x2802);
+data[11] = String.fromCharCode (0x8880);
+data[55] = String.fromCharCode (0x4030);
+data[56] = String.fromCharCode (0x0080);
+data[85] = String.fromCharCode (0xfc00);
+data[88] = String.fromCharCode (0x0200);
+data[91] = String.fromCharCode (0x4000);
+data[92] = String.fromCharCode (0x0009);
+data[95] = String.fromCharCode (0x0018);
+data[96] = String.fromCharCode (0x1000);
+data[97] = String.fromCharCode (0x8800);
+data[102] = String.fromCharCode (0x3c00);
+data[109] = String.fromCharCode (0x0010);
+data[150] = '0';
+data[151] = String.fromCharCode (0x0001);
+data[226] = String.fromCharCode (0x8000);
+data[229] = String.fromCharCode (0x0c00);
+data[234] = String.fromCharCode (0x8000);
+data[240] = String.fromCharCode (0xfff0);
+data[241] = String.fromCharCode (0x0007);
+data[243] = String.fromCharCode (0x3c00);
+data[248] = String.fromCharCode (0x0020);
+data[271] = String.fromCharCode (0x0800);
+data[513] = String.fromCharCode (0xffff);
+data[514] = String.fromCharCode (0x00ff);
+data[515] = String.fromCharCode (0xffff);
+data[516] = 'o';
+data[519] = String.fromCharCode (0x6000);
+data[520] = String.fromCharCode (0x6000);
+data[562] = String.fromCharCode (0x0600);
+data[768] = String.fromCharCode (0xff4e);
+data[769] = String.fromCharCode (0xfff3);
+data[771] = String.fromCharCode (0x0001);
+data[783] = String.fromCharCode (0x0800);
+data[4051] = String.fromCharCode (0xc000);
+data[4067] = String.fromCharCode (0xffff);
+data[4068] = String.fromCharCode (0xfe1f);
+data[4069] = String.fromCharCode (0xfff7);
+data[4070] = String.fromCharCode (0x0d0b);
+data[4080] = String.fromCharCode (0xf7ee);
+data[4081] = String.fromCharCode (0x8c00);
+data[4082] = String.fromCharCode (0x0001);
+data[4083] = String.fromCharCode (0xb800);
+data[4085] = String.fromCharCode (0x2800);
+data[4086] = String.fromCharCode (0x003e);
+data[4098] = String.fromCharCode (0xf7ee);
+data[4099] = String.fromCharCode (0x8c00);
+data[4100] = String.fromCharCode (0x0001);
+data[4101] = String.fromCharCode (0xb800);
+data[4103] = String.fromCharCode (0x2800);
+data[4106] = String.fromCharCode (0x2802);
+data[4107] = String.fromCharCode (0x8880);
+data[4151] = String.fromCharCode (0x4030);
+data[4152] = String.fromCharCode (0x0080);
+});
+Clazz_defineStatics (c$,
+"upper", null,
+"lower", null,
+"title", null,
+"currency", null,
+"decimal_digit", null,
+"math", null,
+"letter", null,
+"white", null,
+"punct", null);
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern", "$.RegSyntax"], ["com.stevesoft.pat.BadRangeArgs", "$.Range"], ["com.stevesoft.pat.RegSyntaxError", "$.oneChar", "$.patInt"], function () {
+c$ = Clazz_declareType (com.stevesoft.pat, "BadRangeArgs", com.stevesoft.pat.RegSyntax);
+c$ = Clazz_decorateAsClass (function () {
+this.lo = '\0';
+this.hi = '\0';
+this.altlo = '\0';
+this.althi = '\0';
+this.printBrackets = false;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Range", com.stevesoft.pat.Pattern);
+Clazz_overrideMethod (c$, "toString", 
+function () {
+var s = com.stevesoft.pat.Pattern.protect ("" + this.lo, "[]{}(),$,-\"^.", '\\') + "-" + com.stevesoft.pat.Pattern.protect ("" + this.hi, "[]{}(),$,-\"^.", '\\');
+if (!this.printBrackets) {
+return s;
+}return "[" + s + "]";
+});
+Clazz_makeConstructor (c$, 
+function (loi, hii) {
+Clazz_superConstructor (this, com.stevesoft.pat.Range, []);
+this.lo = loi;
+this.hi = hii;
+var o = null;
+if (this.lo >= this.hi) {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Badly formed []'s : " + this.lo + " >= " + this.hi);
+}o =  new com.stevesoft.pat.oneChar (this.lo);
+this.altlo = o.altc;
+o =  new com.stevesoft.pat.oneChar (this.hi);
+this.althi = o.altc;
+}, "~S,~S");
+Clazz_overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (pos >= pt.src.length ()) {
+return -1;
+}if (this.Masked (pos, pt)) {
+return -1;
+}var c = pt.src.charAt (pos);
+if (this.lo <= c && c <= this.hi || (pt.ignoreCase && (this.altlo <= c && c <= this.althi))) {
+return this.nextMatch (pos + 1, pt);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz_overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+try {
+var r =  new com.stevesoft.pat.Range (this.lo, this.hi);
+r.printBrackets = this.printBrackets;
+return r;
+} catch (rs) {
+if (Clazz_exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+return null;
+} else {
+throw rs;
+}
+}
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.oneChar", ["com.stevesoft.pat.CaseMgr", "$.patInt"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.c = '\0';
+this.altc = '\0';
+this.altc2 = '\0';
+this.mask = 0;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "oneChar", com.stevesoft.pat.Pattern);
+Clazz_makeConstructor (c$, 
+function (ci) {
+Clazz_superConstructor (this, com.stevesoft.pat.oneChar, []);
+this.c = ci;
+var cu;
+var cl;
+var ct;
+cu = com.stevesoft.pat.CaseMgr.toUpperCaseC (this.c);
+cl = com.stevesoft.pat.CaseMgr.toLowerCaseC (this.c);
+ct = com.stevesoft.pat.CaseMgr.toTitleCaseC (this.c);
+if (this.c == cu) {
+this.altc = cl;
+this.altc2 = ct;
+} else if (this.c == cl) {
+this.altc = cu;
+this.altc2 = ct;
+} else {
+this.altc = cl;
+this.altc2 = cu;
+}this.mask = this.c.charCodeAt (0) & this.altc.charCodeAt (0) & this.altc2.charCodeAt (0);
+}, "~S");
+Clazz_overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+var p;
+var ret = -1;
+if (pos < pt.src.length () && !this.Masked (pos, pt) && ((p = pt.src.charAt (pos)) == this.c || (pt.ignoreCase && (p == this.altc || p == this.altc2)))) {
+ret = this.nextMatch (pos + 1, pt);
+}return ret;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return com.stevesoft.pat.Pattern.protect ("" + this.c, "[]{}(),$,-\"^.", '\\') + this.nextString ();
+});
+Clazz_overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz_overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (1);
+});
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.oneChar (this.c);
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern", "$.oneChar", "java.util.Hashtable", "$.Vector"], ["com.stevesoft.pat.Branch", "$.RegOpt", "$.FastChar"], ["com.stevesoft.pat.Any", "$.Bracket", "$.Custom", "$.FastBracket", "$.FastMulti", "$.Multi", "$.NullPattern", "$.Or", "$.Range", "$.UniValidator", "$.patInt", "java.lang.Character", "$.StringBuffer"], function () {
+c$ = Clazz_declareType (com.stevesoft.pat, "FastChar", com.stevesoft.pat.oneChar);
+Clazz_overrideMethod (c$, "matchInternal", 
+function (p, pt) {
+return (p < pt.src.length () && pt.src.charAt (p) == this.c) ? this.nextMatch (p + 1, pt) : -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.FastChar (this.c);
+}, "java.util.Hashtable");
+c$ = Clazz_decorateAsClass (function () {
+this.h = null;
+this.keys = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Branch", com.stevesoft.pat.Pattern);
+Clazz_prepareFields (c$, function () {
+this.h =  new java.util.Hashtable ();
+this.keys =  new java.util.Vector ();
+});
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, com.stevesoft.pat.Branch, []);
+});
+Clazz_overrideMethod (c$, "clone1", 
+function (x) {
+var b =  new com.stevesoft.pat.Branch ();
+b.keys = this.keys.clone ();
+x.put (this, b);
+x.put (b, b);
+for (var i = 0; i < this.keys.size (); i++) {
+var p = this.h.get (this.keys.elementAt (i));
+b.h.put (this.keys.elementAt (i), p.clone (x));
+}
+return b;
+}, "java.util.Hashtable");
+Clazz_defineMethod (c$, "reduce", 
+function (ignoreCase, dontMinQ) {
+if (this.h.size () == 1) {
+var e = this.h.keys ();
+var c = e.nextElement ();
+var oc;
+if (ignoreCase || dontMinQ) {
+oc =  new com.stevesoft.pat.oneChar (c.charValue ());
+} else {
+oc =  new com.stevesoft.pat.FastChar (c.charValue ());
+}oc.next = this.h.get (c);
+oc.add (this.next);
+return oc;
+} else if (this.h.size () == 0) {
+return null;
+}return this;
+}, "~B,~B");
+Clazz_defineMethod (c$, "maxChars", 
+function () {
+var e = this.h.keys ();
+var count =  new com.stevesoft.pat.patInt (0);
+while (e.hasMoreElements ()) {
+var key = e.nextElement ();
+var pa = this.h.get (key);
+var pi = pa.maxChars ();
+pi.inc ();
+count.maxeq (pi);
+}
+return count;
+});
+Clazz_defineMethod (c$, "minChars", 
+function () {
+var e = this.h.keys ();
+var count =  new com.stevesoft.pat.patInt (0);
+while (e.hasMoreElements ()) {
+var key = e.nextElement ();
+var pa = this.h.get (key);
+var pi = pa.minChars ();
+pi.inc ();
+count.mineq (pi);
+}
+return count;
+});
+Clazz_defineMethod (c$, "addc", 
+function (o, ignoreCase, dontMinQ) {
+var n = o.next;
+if (n == null) {
+n =  new com.stevesoft.pat.NullPattern ();
+} else {
+n = com.stevesoft.pat.RegOpt.opt (n, ignoreCase, dontMinQ);
+}n.setParent (this);
+this.set ( new Character (o.c), n, ignoreCase, dontMinQ);
+if (ignoreCase) {
+if (o.c != o.altc) {
+this.set ( new Character (o.altc), n, ignoreCase, dontMinQ);
+}if (o.c != o.altc2 && o.altc != o.altc2) {
+this.set ( new Character (o.altc2), n, ignoreCase, dontMinQ);
+}}}, "com.stevesoft.pat.oneChar,~B,~B");
+Clazz_defineMethod (c$, "set", 
+function (c, n, igc, dontMinQ) {
+var p = this.h.get (c);
+this.next = null;
+if (p == null) {
+if (Clazz_instanceOf (n, com.stevesoft.pat.Or)) {
+var np =  new com.stevesoft.pat.NullPattern ();
+np.add (n);
+this.h.put (c, np);
+} else {
+this.h.put (c, n);
+}this.keys.addElement (c);
+} else if (Clazz_instanceOf (p, com.stevesoft.pat.Or)) {
+(p).addOr (n);
+} else if (Clazz_instanceOf (p, com.stevesoft.pat.oneChar) && Clazz_instanceOf (n, com.stevesoft.pat.oneChar) && (p).c != (n).c) {
+var b =  new com.stevesoft.pat.Branch ();
+b.addc (p, igc, dontMinQ);
+b.addc (n, igc, dontMinQ);
+this.h.put (c, b);
+b.setParent (this);
+} else if (Clazz_instanceOf (p, com.stevesoft.pat.Branch) && Clazz_instanceOf (n, com.stevesoft.pat.oneChar)) {
+(p).addc (n, igc, dontMinQ);
+n.setParent (p);
+} else {
+var o =  new com.stevesoft.pat.Or ();
+o.setParent (this);
+if (Clazz_instanceOf (p, com.stevesoft.pat.NullPattern) && p.parent == null && p.next != null) {
+o.addOr (p.next);
+} else {
+o.addOr (p);
+}o.addOr (n);
+var optpat = com.stevesoft.pat.RegOpt.opt (o, igc, dontMinQ);
+this.h.put (c, optpat);
+optpat.setParent (this);
+}}, "Character,com.stevesoft.pat.Pattern,~B,~B");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+var sb =  new StringBuffer ();
+sb.append ("(?:(?#branch)");
+for (var i = 0; i < this.keys.size (); i++) {
+var c = this.keys.elementAt (i);
+sb.append (c);
+sb.append (this.h.get (c));
+if (i + 1 < this.keys.size ()) {
+sb.append ("|");
+}}
+sb.append (")");
+sb.append (this.nextString ());
+return sb.toString ();
+});
+Clazz_defineMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (pos >= pt.src.length ()) {
+return -1;
+}var n = this.h.get ( new Character (pt.src.charAt (pos)));
+if (n == null) {
+return -1;
+}if (pt.cbits != null && pt.cbits.get (pos)) {
+return -1;
+}return n.matchInternal (pos + 1, pt);
+}, "~N,com.stevesoft.pat.Pthings");
+c$ = Clazz_declareType (com.stevesoft.pat, "RegOpt");
+c$.opt = Clazz_defineMethod (c$, "opt", 
+function (p, ignoreCase, dontMinQ) {
+if (p == null) {
+return p;
+}if (Clazz_instanceOf (p, com.stevesoft.pat.Bracket)) {
+var b = p;
+p = com.stevesoft.pat.FastBracket.process (b, ignoreCase);
+p.next = b.next;
+p.parent = b.parent;
+} else if (Clazz_instanceOf (p, com.stevesoft.pat.oneChar) && !ignoreCase && !dontMinQ) {
+var o = p;
+p =  new com.stevesoft.pat.FastChar (o.c);
+p.next = o.next;
+p.parent = o.parent;
+} else if (Clazz_instanceOf (p, com.stevesoft.pat.Or) && (p).leftForm ().equals ("(?:") && (p).v.size () == 1) {
+var o = p;
+p = o.v.elementAt (0);
+p.setParent (null);
+p = com.stevesoft.pat.RegOpt.opt (p, ignoreCase, dontMinQ);
+p.add (o.next);
+} else if (Clazz_instanceOf (p, com.stevesoft.pat.Or)) {
+var o = p;
+o.pv = null;
+var v = o.v;
+o.v =  new java.util.Vector ();
+var b =  new com.stevesoft.pat.Branch ();
+b.parent = o.parent;
+for (var i = 0; i < v.size (); i++) {
+var pp = v.elementAt (i);
+if (Clazz_instanceOf (pp, com.stevesoft.pat.oneChar) && (b.h.size () >= 1 || (i + 1 < v.size () && Clazz_instanceOf (v.elementAt (i + 1), com.stevesoft.pat.oneChar)))) {
+b.addc (pp, ignoreCase, dontMinQ);
+} else {
+if (b.keys.size () > 0) {
+var p2 = b.reduce (ignoreCase, dontMinQ);
+if (p2 != null) {
+o.addOr (p2);
+b =  new com.stevesoft.pat.Branch ();
+b.parent = o.parent;
+}}o.addOr (com.stevesoft.pat.RegOpt.opt (pp, ignoreCase, dontMinQ));
+}}
+if (b.keys.size () > 0) {
+var p2 = b.reduce (ignoreCase, dontMinQ);
+if (p2 != null) {
+o.addOr (p2);
+}}if (o.v.size () == 1 && o.leftForm ().equals ("(?:")) {
+p = o.v.elementAt (0);
+p.setParent (null);
+p = com.stevesoft.pat.RegOpt.opt (p, ignoreCase, dontMinQ);
+p.add (o.next);
+}} else if (Clazz_instanceOf (p, com.stevesoft.pat.FastMulti)) {
+var ps = p;
+ps.sub = com.stevesoft.pat.RegOpt.opt (ps.sub, ignoreCase, dontMinQ);
+} else if (Clazz_instanceOf (p, com.stevesoft.pat.Multi) && com.stevesoft.pat.RegOpt.safe4fm ((p).sub)) {
+var m = p;
+var fm = null;
+try {
+fm =  new com.stevesoft.pat.FastMulti (m.a, m.b, com.stevesoft.pat.RegOpt.opt (m.sub, ignoreCase, dontMinQ));
+} catch (rs) {
+if (Clazz_exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+} else {
+throw rs;
+}
+}
+fm.parent = m.parent;
+fm.matchFewest = m.matchFewest;
+fm.next = m.next;
+p = fm;
+}if (p.next != null) {
+p.next = com.stevesoft.pat.RegOpt.opt (p.next, ignoreCase, dontMinQ);
+}return p;
+}, "com.stevesoft.pat.Pattern,~B,~B");
+c$.safe4fm = Clazz_defineMethod (c$, "safe4fm", 
+function (x) {
+while (x != null) {
+if (Clazz_instanceOf (x, com.stevesoft.pat.Bracket)) {
+;} else if (Clazz_instanceOf (x, com.stevesoft.pat.Range)) {
+;} else if (Clazz_instanceOf (x, com.stevesoft.pat.oneChar)) {
+;} else if (Clazz_instanceOf (x, com.stevesoft.pat.Any)) {
+;} else if (Clazz_instanceOf (x, com.stevesoft.pat.Custom) && Clazz_instanceOf ((x).v, com.stevesoft.pat.UniValidator)) {
+;} else if (Clazz_instanceOf (x, com.stevesoft.pat.Or)) {
+var o = x;
+if (!o.leftForm ().equals ("(?:")) {
+return false;
+}var lo = o.countMinChars ();
+var hi = o.countMaxChars ();
+if (!lo.equals (hi)) {
+return false;
+}for (var i = 0; i < o.v.size (); i++) {
+if (!com.stevesoft.pat.RegOpt.safe4fm (o.v.elementAt (i))) {
+return false;
+}}
+} else {
+return false;
+}x = x.next;
+}
+return true;
+}, "com.stevesoft.pat.Pattern");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Bracket"], "com.stevesoft.pat.FastBracket", ["com.stevesoft.pat.Range", "$.oneChar", "java.util.BitSet", "$.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.$min = 0;
+this.$max = 0;
+this.bs = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "FastBracket", com.stevesoft.pat.Bracket);
+c$.process = Clazz_defineMethod (c$, "process", 
+function (b, ignc) {
+var v = b.v;
+b.pv = null;
+try {
+var nv = v;
+if (ignc) {
+nv =  new java.util.Vector ();
+for (var i = 0; i < v.size (); i++) {
+var p = v.elementAt (i);
+nv.addElement (p);
+if (Clazz_instanceOf (p, com.stevesoft.pat.oneChar)) {
+var oc = p;
+nv.addElement ( new com.stevesoft.pat.oneChar (oc.altc));
+} else if (Clazz_instanceOf (p, com.stevesoft.pat.Range)) {
+var ra = p;
+nv.addElement ( new com.stevesoft.pat.Range (ra.altlo, ra.althi));
+}}
+}v = nv;
+for (var i = 0; i < v.size () - 1; i++) {
+for (var j = 0; j < v.size () - 1; j++) {
+var c1 = com.stevesoft.pat.FastBracket.getl (v.elementAt (j));
+var c2 = com.stevesoft.pat.FastBracket.getl (v.elementAt (j + 1));
+if (c2 < c1) {
+var o = v.elementAt (j);
+v.setElementAt (v.elementAt (j + 1), j);
+v.setElementAt (o, j + 1);
+}}
+}
+nv =  new java.util.Vector ();
+var p = v.elementAt (0);
+nv.addElement (p);
+for (var i = 1; i < v.size (); i++) {
+if ((com.stevesoft.pat.FastBracket.geth (p)).charCodeAt (0) + 1 >= (com.stevesoft.pat.FastBracket.getl (v.elementAt (i))).charCodeAt (0)) {
+var p2 = v.elementAt (i);
+var lo = com.stevesoft.pat.FastBracket.min (com.stevesoft.pat.FastBracket.getl (p), com.stevesoft.pat.FastBracket.getl (p2));
+var hi = com.stevesoft.pat.FastBracket.max (com.stevesoft.pat.FastBracket.geth (p), com.stevesoft.pat.FastBracket.geth (p2));
+nv.setElementAt (p = com.stevesoft.pat.FastBracket.mkelem (lo, hi), nv.size () - 1);
+} else {
+p = v.elementAt (i);
+nv.addElement (p);
+}}
+b.v = v = nv;
+} catch (e) {
+if (Clazz_exceptionOf (e, com.stevesoft.pat.RegSyntax)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+var negv = com.stevesoft.pat.FastBracket.neg (v);
+if (v.size () == 1) {
+return b;
+}if (negv.size () == 1) {
+b.v = negv;
+b.neg = !b.neg;
+return b;
+}var fb = com.stevesoft.pat.FastBracket.newbrack (v, b.neg);
+if (fb == null) {
+fb = com.stevesoft.pat.FastBracket.newbrack (negv, !b.neg);
+}if (fb != null) {
+fb.parent = b.parent;
+fb.next = b.next;
+return fb;
+}return b;
+}, "com.stevesoft.pat.Bracket,~B");
+c$.newbrack = Clazz_defineMethod (c$, "newbrack", 
+function (v, neg) {
+var fb =  new com.stevesoft.pat.FastBracket (neg);
+fb.v = v;
+if (v.size () == 0) {
+return null;
+}fb.$min = (com.stevesoft.pat.FastBracket.getl (v.elementAt (0))).charCodeAt (0);
+fb.$max = (com.stevesoft.pat.FastBracket.geth (v.elementAt (v.size () - 1))).charCodeAt (0);
+if (fb.$max - fb.$min <= 256) {
+fb.bs =  new java.util.BitSet (fb.$max - fb.$min + 1);
+for (var i = 0; i < v.size (); i++) {
+var o = v.elementAt (i);
+var min0 = (com.stevesoft.pat.FastBracket.getl (o)).charCodeAt (0) - fb.$min;
+var max0 = (com.stevesoft.pat.FastBracket.geth (o)).charCodeAt (0) - fb.$min;
+for (var j = min0; j <= max0; j++) {
+fb.bs.set (j);
+}
+}
+return fb;
+}return null;
+}, "java.util.Vector,~B");
+c$.neg = Clazz_defineMethod (c$, "neg", 
+function (v) {
+try {
+var nv =  new java.util.Vector ();
+if (v.size () == 0) {
+nv.addElement ( new com.stevesoft.pat.Range (String.fromCharCode (0), String.fromCharCode (65535)));
+return nv;
+}var p0 = (com.stevesoft.pat.FastBracket.getl (v.elementAt (0))).charCodeAt (0);
+if (p0 != 0) {
+nv.addElement (com.stevesoft.pat.FastBracket.mkelem (String.fromCharCode (0), String.fromCharCode (p0 - 1)));
+}for (var i = 0; i < v.size () - 1; i++) {
+var hi = (com.stevesoft.pat.FastBracket.getl (v.elementAt (i + 1))).charCodeAt (0) - 1;
+var lo = (com.stevesoft.pat.FastBracket.geth (v.elementAt (i))).charCodeAt (0) + 1;
+nv.addElement (com.stevesoft.pat.FastBracket.mkelem (String.fromCharCode (lo), String.fromCharCode (hi)));
+}
+var pN = (com.stevesoft.pat.FastBracket.geth (v.lastElement ())).charCodeAt (0);
+if (pN != 65535) {
+nv.addElement (com.stevesoft.pat.FastBracket.mkelem (String.fromCharCode (pN + 1), String.fromCharCode (65535)));
+}return nv;
+} catch (rs) {
+if (Clazz_exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+return null;
+} else {
+throw rs;
+}
+}
+}, "java.util.Vector");
+c$.mkelem = Clazz_defineMethod (c$, "mkelem", 
+function (lo, hi) {
+return lo == hi ? ( new com.stevesoft.pat.oneChar (lo)) : ( new com.stevesoft.pat.Range (lo, hi));
+}, "~S,~S");
+c$.min = Clazz_defineMethod (c$, "min", 
+function (a, b) {
+return a < b ? a : b;
+}, "~S,~S");
+c$.max = Clazz_defineMethod (c$, "max", 
+function (a, b) {
+return a > b ? a : b;
+}, "~S,~S");
+c$.getl = Clazz_defineMethod (c$, "getl", 
+function (o) {
+var p = o;
+if (Clazz_instanceOf (p, com.stevesoft.pat.Range)) {
+return (p).lo;
+}return (p).c;
+}, "~O");
+c$.geth = Clazz_defineMethod (c$, "geth", 
+function (o) {
+var p = o;
+if (Clazz_instanceOf (p, com.stevesoft.pat.Range)) {
+return (p).hi;
+}return (p).c;
+}, "~O");
+Clazz_overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (pos >= pt.src.length () || this.Masked (pos, pt)) {
+return -1;
+}var c = pt.src.charAt (pos);
+return ( new Boolean (this.neg ^ (c.charCodeAt (0) >= this.$min && c.charCodeAt (0) <= this.$max && this.bs.get (c.charCodeAt (0) - this.$min))).valueOf ()) ? this.nextMatch (pos + 1, pt) : -1;
+}, "~N,com.stevesoft.pat.Pthings");
+});
+\feffClazz_load (null, "java.util.BitSet", ["java.lang.IndexOutOfBoundsException", "$.NegativeArraySizeException", "$.StringBuffer", "java.util.Arrays"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.bits = null;
+Clazz_instantialize (this, arguments);
+}, java.util, "BitSet", null, [Cloneable, java.io.Serializable]);
+Clazz_makeConstructor (c$, 
+function () {
+this.construct (32);
+});
+Clazz_makeConstructor (c$, 
+function (nbits) {
+if (nbits < 0) throw  new NegativeArraySizeException ();
+var length = nbits >>> 5;
+if ((nbits & 4) != 0) ++length;
+this.bits =  Clazz_newArray (length, 0);
+}, "~N");
+Clazz_defineMethod (c$, "and", 
+function (bs) {
+var max = Math.min (this.bits.length, bs.bits.length);
+var i;
+for (i = 0; i < max; ++i) this.bits[i] &= bs.bits[i];
+
+while (i < this.bits.length) this.bits[i++] = 0;
+
+}, "java.util.BitSet");
+Clazz_defineMethod (c$, "andNot", 
+function (bs) {
+var i = Math.min (this.bits.length, bs.bits.length);
+while (--i >= 0) {
+this.bits[i] &= ~bs.bits[i];
+}
+}, "java.util.BitSet");
+Clazz_defineMethod (c$, "cardinality", 
+function () {
+var card = 0;
+for (var i = this.bits.length - 1; i >= 0; i--) {
+var a = this.bits[i];
+if (a == 0) continue ;if (a == -1) {
+card += 32;
+continue ;}a = ((a >> 1) & 0x55555555) + (a & 0x55555555);
+a = ((a >> 2) & 0x33333333) + (a & 0x33333333);
+a = ((a >> 4) & 0x0f0f0f0f) + (a & 0x0f0f0f0f);
+a = ((a >> 8) & 0x00ff00ff) + (a & 0x00ff00ff);
+card += ((a >> 16) & 0x0000ffff) + (a & 0x0000ffff);
+}
+return card;
+});
+Clazz_defineMethod (c$, "clear", 
+function () {
+java.util.Arrays.fill (this.bits, 0);
+});
+Clazz_defineMethod (c$, "clear", 
+function (pos) {
+var offset = pos >> 5;
+this.ensure (offset);
+this.bits[offset] &= ~(1 << pos);
+}, "~N");
+Clazz_defineMethod (c$, "clear", 
+function (from, to) {
+if (from < 0 || from > to) throw  new IndexOutOfBoundsException ();
+if (from == to) return ;
+var lo_offset = from >>> 5;
+var hi_offset = to >>> 5;
+this.ensure (hi_offset);
+if (lo_offset == hi_offset) {
+this.bits[hi_offset] &= ((1 << from) - 1) | (-1 << to);
+return ;
+}this.bits[lo_offset] &= (1 << from) - 1;
+this.bits[hi_offset] &= -1 << to;
+for (var i = lo_offset + 1; i < hi_offset; i++) this.bits[i] = 0;
+
+}, "~N,~N");
+Clazz_defineMethod (c$, "clone", 
+function () {
+try {
+var bs = Clazz_superCall (this, java.util.BitSet, "clone", []);
+bs.bits = this.bits.clone ();
+return bs;
+} catch (e) {
+if (Clazz_exceptionOf (e, CloneNotSupportedException)) {
+return null;
+} else {
+throw e;
+}
+}
+});
+Clazz_overrideMethod(c$, "equals", 
+function (obj) {
+if (!(Clazz_instanceOf (obj, java.util.BitSet))) return false;
+var bs = obj;
+var max = Math.min (this.bits.length, bs.bits.length);
+var i;
+for (i = 0; i < max; ++i) if (this.bits[i] != bs.bits[i]) return false;
+
+for (var j = i; j < this.bits.length; ++j) if (this.bits[j] != 0) return false;
+
+for (var j = i; j < bs.bits.length; ++j) if (bs.bits[j] != 0) return false;
+
+return true;
+}, "~O");
+Clazz_defineMethod (c$, "flip", 
+function (index) {
+var offset = index >> 5;
+this.ensure (offset);
+this.bits[offset] ^= 1 << index;
+}, "~N");
+Clazz_defineMethod (c$, "flip", 
+function (from, to) {
+if (from < 0 || from > to) throw  new IndexOutOfBoundsException ();
+if (from == to) return ;
+var lo_offset = from >>> 5;
+var hi_offset = to >>> 5;
+this.ensure (hi_offset);
+if (lo_offset == hi_offset) {
+this.bits[hi_offset] ^= (-1 << from) & ((1 << to) - 1);
+return ;
+}this.bits[lo_offset] ^= -1 << from;
+this.bits[hi_offset] ^= (1 << to) - 1;
+for (var i = lo_offset + 1; i < hi_offset; i++) this.bits[i] ^= -1;
+
+}, "~N,~N");
+Clazz_defineMethod (c$, "get", 
+function (pos) {
+var offset = pos >> 5;
+if (offset >= this.bits.length) return false;
+return (this.bits[offset] & (1 << pos)) != 0;
+}, "~N");
+Clazz_defineMethod (c$, "get", 
+function (from, to) {
+if (from < 0 || from > to) throw  new IndexOutOfBoundsException ();
+var bs =  new java.util.BitSet (to - from);
+var lo_offset = from >>> 5;
+if (lo_offset >= this.bits.length) return bs;
+var lo_bit = from & 4;
+var hi_offset = to >>> 5;
+if (lo_bit == 0) {
+var len = Math.min (hi_offset - lo_offset + 1, this.bits.length - lo_offset);
+System.arraycopy (this.bits, lo_offset, bs.bits, 0, len);
+if (hi_offset < this.bits.length) bs.bits[hi_offset - lo_offset] &= (1 << to) - 1;
+return bs;
+}var len = Math.min (hi_offset, this.bits.length - 1);
+var reverse = ~lo_bit;
+var i;
+for (i = 0; lo_offset < len; lo_offset++, i++) bs.bits[i] = ((this.bits[lo_offset] >>> lo_bit) | (this.bits[lo_offset + 1] << reverse));
+
+if ((to & 4) > lo_bit) bs.bits[i++] = this.bits[lo_offset] >>> lo_bit;
+if (hi_offset < this.bits.length) bs.bits[i - 1] &= (1 << (to - from)) - 1;
+return bs;
+}, "~N,~N");
+Clazz_overrideMethod(c$, "hashCode", 
+function () {
+var h = 1234;
+for (var i = this.bits.length; i > 0; ) h ^= i * this.bits[--i];
+
+return h;
+});
+Clazz_defineMethod (c$, "intersects", 
+function (set) {
+var i = Math.min (this.bits.length, set.bits.length);
+while (--i >= 0) if ((this.bits[i] & set.bits[i]) != 0) return true;
+
+return false;
+}, "java.util.BitSet");
+Clazz_defineMethod (c$, "isEmpty", 
+function () {
+for (var i = this.bits.length - 1; i >= 0; i--) if (this.bits[i] != 0) return false;
+
+return true;
+});
+Clazz_defineMethod (c$, "length", 
+function () {
+var i;
+for (i = this.bits.length - 1; i >= 0 && this.bits[i] == 0; --i) ;
+if (i < 0) return 0;
+var b = this.bits[i];
+var len = (i + 1) * 32;
+while ((b & 0x80000000) == 0) {
+--len;
+b <<= 1;
+}
+return len;
+});
+Clazz_defineMethod (c$, "nextClearBit", 
+function (from) {
+var offset = from >> 5;
+var mask = 1 << from;
+while (offset < this.bits.length) {
+var h = this.bits[offset];
+do {
+if ((h & mask) == 0) return from;
+mask <<= 1;
+from++;
+} while (mask != 0);
+mask = 1;
+offset++;
+}
+return from;
+}, "~N");
+Clazz_defineMethod (c$, "nextSetBit", 
+function (from) {
+var offset = from >> 5;
+var mask = 1 << from;
+while (offset < this.bits.length) {
+var h = this.bits[offset];
+do {
+if ((h & mask) != 0) return from;
+mask <<= 1;
+from++;
+} while (mask != 0);
+mask = 1;
+offset++;
+}
+return -1;
+}, "~N");
+Clazz_defineMethod (c$, "or", 
+function (bs) {
+this.ensure (bs.bits.length - 1);
+for (var i = bs.bits.length - 1; i >= 0; i--) this.bits[i] |= bs.bits[i];
+
+}, "java.util.BitSet");
+Clazz_defineMethod (c$, "set", 
+function (pos) {
+var offset = pos >> 5;
+this.ensure (offset);
+this.bits[offset] |= 1 << pos;
+}, "~N");
+Clazz_defineMethod (c$, "set", 
+function (index, value) {
+if (value) this.set (index);
+ else this.clear (index);
+}, "~N,~B");
+Clazz_defineMethod (c$, "set", 
+function (from, to) {
+if (from < 0 || from > to) throw  new IndexOutOfBoundsException ();
+if (from == to) return ;
+var lo_offset = from >>> 5;
+var hi_offset = to >>> 5;
+this.ensure (hi_offset);
+if (lo_offset == hi_offset) {
+this.bits[hi_offset] |= (-1 << from) & ((1 << to) - 1);
+return ;
+}this.bits[lo_offset] |= -1 << from;
+this.bits[hi_offset] |= (1 << to) - 1;
+for (var i = lo_offset + 1; i < hi_offset; i++) this.bits[i] = -1;
+
+}, "~N,~N");
+Clazz_defineMethod (c$, "set", 
+function (from, to, value) {
+if (value) this.set (from, to);
+ else this.clear (from, to);
+}, "~N,~N,~B");
+Clazz_defineMethod (c$, "size", 
+function () {
+return this.bits.length * 32;
+});
+Clazz_overrideMethod(c$, "toString", 
+function () {
+var r =  new StringBuffer ("{");
+var first = true;
+for (var i = 0; i < this.bits.length; ++i) {
+var bit = 1;
+var word = this.bits[i];
+if (word == 0) continue ;for (var j = 0; j < 32; ++j) {
+if ((word & bit) != 0) {
+if (!first) r.append (", ");
+r.append (32 * i + j);
+first = false;
+}bit <<= 1;
+}
+}
+return r.append ("}").toString ();
+});
+Clazz_defineMethod (c$, "xor", 
+function (bs) {
+this.ensure (bs.bits.length - 1);
+for (var i = bs.bits.length - 1; i >= 0; i--) this.bits[i] ^= bs.bits[i];
+
+}, "java.util.BitSet");
+Clazz_defineMethod (c$, "ensure", 
+ function (lastElt) {
+if (lastElt >= this.bits.length) {
+var nd =  Clazz_newArray (lastElt + 1, 0);
+System.arraycopy (this.bits, 0, nd, 0, this.bits.length);
+this.bits = nd;
+}}, "~N");
+Clazz_defineStatics (c$,
+"INT_MASK", 0x4);
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["java.util.Hashtable"], "com.stevesoft.pat.ReplaceRule", ["com.stevesoft.pat.Ctrl", "$.Regex", "$.Transformer", "java.lang.StringBuffer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.next = null;
+this.name = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "ReplaceRule");
+Clazz_prepareFields (c$, function () {
+this.name = this.getClass ().getName ();
+});
+Clazz_defineMethod (c$, "clone1", 
+function () {
+return  new com.stevesoft.pat.RuleHolder (this);
+});
+Clazz_overrideMethod (c$, "clone", 
+function () {
+var x = this.clone1 ();
+var xsav = x;
+var y = this;
+while (y.next != null) {
+x.next = y.next.clone1 ();
+x.name = y.name;
+x = x.next;
+y = y.next;
+}
+return xsav;
+});
+c$.add = Clazz_defineMethod (c$, "add", 
+function (head, adding) {
+if (head == null) {
+return head = adding;
+}head.addRule (adding);
+return head;
+}, "com.stevesoft.pat.ReplaceRule,com.stevesoft.pat.ReplaceRule");
+Clazz_defineMethod (c$, "add", 
+function (adding) {
+return com.stevesoft.pat.ReplaceRule.add (this, adding);
+}, "com.stevesoft.pat.ReplaceRule");
+Clazz_defineMethod (c$, "addRule", 
+function (r) {
+if (this.next == null) {
+this.next = r;
+} else {
+this.next.addRule (r);
+}}, "com.stevesoft.pat.ReplaceRule");
+c$.getv = Clazz_defineMethod (c$, "getv", 
+ function () {
+if (com.stevesoft.pat.ReplaceRule.getvar != null) {
+return com.stevesoft.pat.ReplaceRule.getvar.clone ();
+}com.stevesoft.pat.ReplaceRule.getvar =  new com.stevesoft.pat.Regex ("(?:\\\\(\\d+)|\\$(?:(\\d+)|(\\w+)|([&\'`])|\\{(?:(\\d+)|([^\n}\\\\]+))})|\\\\([nrbtaef])|\\\\c([\u0000-\uffff])|\\\\x([A-Fa-f0-9]{2})|\\\\([\u0000-\uffff]))", "");
+com.stevesoft.pat.ReplaceRule.getvar.optimize ();
+return com.stevesoft.pat.ReplaceRule.getvar;
+});
+c$.perlCode = Clazz_defineMethod (c$, "perlCode", 
+function (s) {
+try {
+var mf = 0;
+var mt = 0;
+var gv = com.stevesoft.pat.ReplaceRule.getv ();
+var head = null;
+var tmp = null;
+while (gv.searchFrom (s, mt)) {
+var off = com.stevesoft.pat.Regex.BackRefOffset - 1;
+mf = gv.matchedFrom ();
+if (mf > mt) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule (s.substring (mt, mf)));
+}var $var = null;
+if (($var = gv.stringMatchedI (1 + off)) != null || ($var = gv.stringMatchedI (2 + off)) != null || ($var = gv.stringMatchedI (5 + off)) != null) {
+var d = 0;
+for (var i = 0; i < $var.length; i++) {
+d = 8 * d + ($var.charCodeAt (i) - 48);
+}
+if ($var.length == 1) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.BackRefRule (d));
+} else {
+head =  new com.stevesoft.pat.StringRule ("" + String.fromCharCode (d));
+}} else if (($var = gv.stringMatchedI (10 + off)) != null) {
+if ("QELlUu".indexOf ($var) >= 0) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.CodeRule ($var.charAt (0)));
+} else {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ($var));
+}} else if (($var = gv.stringMatchedI (3 + off)) != null || ($var = gv.stringMatchedI (4 + off)) != null || ($var = gv.stringMatchedI (6 + off)) != null) {
+var arg = "";
+var pc;
+if ((pc = $var.indexOf (':')) > 0) {
+arg = $var.substring (pc + 1);
+$var = $var.substring (0, pc);
+}if ($var.equals ("&") || $var.equals ("MATCH")) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.AmpersandRule ());
+} else if ($var.equals ("`") || $var.equals ("PREMATCH")) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.LeftRule ());
+} else if ($var.equals ("'") || $var.equals ("POSTMATCH")) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.RightRule ());
+} else if ($var.equals ("WANT_MORE_TEXT")) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.WantMoreTextReplaceRule ());
+} else if ($var.equals ("POP")) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.PopRule ());
+} else if ($var.startsWith ("+") && (tmp = com.stevesoft.pat.ReplaceRule.defs.get ($var.substring (1))) != null) {
+if (Clazz_instanceOf (tmp, com.stevesoft.pat.Regex)) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.PushRule ($var.substring (1), tmp));
+} else if (Clazz_instanceOf (tmp, com.stevesoft.pat.Transformer)) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.PushRule ($var.substring (1), tmp));
+} else {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("${" + $var + "}"));
+}} else if ($var.startsWith ("=") && (tmp = com.stevesoft.pat.ReplaceRule.defs.get ($var.substring (1))) != null) {
+if (Clazz_instanceOf (tmp, com.stevesoft.pat.Regex)) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.ChangeRule ($var.substring (1), tmp));
+} else if (Clazz_instanceOf (tmp, com.stevesoft.pat.Transformer)) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.ChangeRule ($var.substring (1), tmp));
+} else {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("${" + $var + "}"));
+}} else if ((tmp = com.stevesoft.pat.ReplaceRule.defs.get ($var)) != null) {
+if (Clazz_instanceOf (tmp, com.stevesoft.pat.ReplaceRule)) {
+var alt = (tmp).arg (arg);
+if (alt == null) {
+alt = (tmp);
+}head = com.stevesoft.pat.ReplaceRule.add (head, (alt.clone ()));
+}} else {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("${" + $var + "}"));
+}} else if (($var = gv.stringMatchedI (7 + off)) != null) {
+var c = $var.charAt (0);
+if (c == 'n') {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\n"));
+} else if (c == 't') {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\t"));
+} else if (c == 'r') {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\r"));
+} else if (c == 'b') {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\r"));
+} else if (c == 'a') {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\u0007"));
+} else if (c == 'e') {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\u001b"));
+} else if (c == 'f') {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("\f"));
+}} else if (($var = gv.stringMatchedI (8 + off)) != null) {
+var c = $var.charAt (0);
+if (c.charCodeAt (0) < com.stevesoft.pat.Ctrl.cmap.length) {
+c = com.stevesoft.pat.Ctrl.cmap[c.charCodeAt (0)];
+}head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("" + c));
+} else if (($var = gv.stringMatchedI (9 + off)) != null) {
+var d = 16 * com.stevesoft.pat.ReplaceRule.getHexDigit ($var.charAt (0)) + com.stevesoft.pat.ReplaceRule.getHexDigit ($var.charAt (1));
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule ("" + String.fromCharCode (d)));
+}mt = gv.matchedTo ();
+}
+if (mt <= s.length) {
+head = com.stevesoft.pat.ReplaceRule.add (head,  new com.stevesoft.pat.StringRule (s.substring (mt)));
+}return head;
+} finally {
+}
+}, "~S");
+c$.isDefined = Clazz_defineMethod (c$, "isDefined", 
+function (s) {
+return com.stevesoft.pat.ReplaceRule.defs.get (s) != null;
+}, "~S");
+c$.define = Clazz_defineMethod (c$, "define", 
+function (s, r) {
+com.stevesoft.pat.ReplaceRule.defs.put (s, r);
+}, "~S,com.stevesoft.pat.Regex");
+c$.define = Clazz_defineMethod (c$, "define", 
+function (s, r) {
+com.stevesoft.pat.ReplaceRule.defs.put (s, r);
+r.name = s;
+}, "~S,com.stevesoft.pat.ReplaceRule");
+c$.define = Clazz_defineMethod (c$, "define", 
+function (s, t) {
+com.stevesoft.pat.ReplaceRule.defs.put (s, t);
+}, "~S,com.stevesoft.pat.Transformer");
+c$.undefine = Clazz_defineMethod (c$, "undefine", 
+function (s) {
+com.stevesoft.pat.ReplaceRule.defs.remove (s);
+}, "~S");
+Clazz_defineMethod (c$, "toString1", 
+function () {
+return "${" + this.name + "}";
+});
+Clazz_overrideMethod (c$, "toString", 
+function () {
+var sb =  new StringBuffer ();
+sb.append (this.toString1 ());
+var rr = this.next;
+while (rr != null) {
+sb.append (rr.toString1 ());
+rr = rr.next;
+}
+return sb.toString ();
+});
+Clazz_defineMethod (c$, "arg", 
+function (s) {
+return null;
+}, "~S");
+c$.getHexDigit = Clazz_defineMethod (c$, "getHexDigit", 
+function (c) {
+if (c >= '0' && c <= '9') {
+return c.charCodeAt (0) - 48;
+}if (c >= 'a' && c <= 'f') {
+return c.charCodeAt (0) - 97 + 10;
+}return c.charCodeAt (0) - 65 + 10;
+}, "~S");
+Clazz_defineStatics (c$,
+"getvar", null);
+c$.defs = c$.prototype.defs =  new java.util.Hashtable ();
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.ReplaceRule", "$.Replacer"], ["com.stevesoft.pat.Transformer", "$.TransRepRule"], ["com.stevesoft.pat.MessageManager", "$.Regex", "$.TransPat", "com.stevesoft.pat.wrap.StringWrap", "java.lang.ArrayIndexOutOfBoundsException", "$.NullPointerException"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.t = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "TransRepRule", com.stevesoft.pat.ReplaceRule);
+Clazz_makeConstructor (c$, 
+function (t) {
+Clazz_superConstructor (this, com.stevesoft.pat.TransRepRule, []);
+this.t = t;
+}, "com.stevesoft.pat.Transformer");
+Clazz_overrideMethod (c$, "toString1", 
+function () {
+return "";
+});
+Clazz_overrideMethod (c$, "clone1", 
+function () {
+return  new com.stevesoft.pat.TransRepRule (this.t);
+});
+Clazz_overrideMethod (c$, "apply", 
+function (sb, rr) {
+this.next = this.t.tp.ra[this.t.tp.pn].getReplaceRule ();
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+c$ = Clazz_decorateAsClass (function () {
+this.tp = null;
+this.rp = null;
+this.auto_optimize = false;
+this.repr = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Transformer");
+Clazz_prepareFields (c$, function () {
+this.repr =  new com.stevesoft.pat.Replacer ();
+});
+Clazz_defineMethod (c$, "getReplacer", 
+function () {
+return this.rp.getReplacer ();
+});
+Clazz_makeConstructor (c$, 
+function (auto) {
+this.rp =  new com.stevesoft.pat.Regex (null, "");
+this.auto_optimize = auto;
+this.tp =  new com.stevesoft.pat.TransPat ();
+this.rp.setReplaceRule ( new com.stevesoft.pat.TransRepRule (this));
+this.rp.thePattern = this.tp;
+}, "~B");
+Clazz_defineMethod (c$, "add", 
+function (r) {
+if (this.auto_optimize) {
+r.optimize ();
+}this.tp.ra[this.tp.ra_len++] = r;
+if (this.tp.ra.length == this.tp.ra_len) {
+var ra2 =  new Array (this.tp.ra_len + 10);
+for (var i = 0; i < this.tp.ra_len; i++) {
+ra2[i] = this.tp.ra[i];
+}
+this.tp.ra = ra2;
+}this.rp.numSubs_ = r.numSubs_ > this.rp.numSubs_ ? r.numSubs_ : this.rp.numSubs_;
+}, "com.stevesoft.pat.Regex");
+Clazz_defineMethod (c$, "patterns", 
+function () {
+return this.tp.ra_len;
+});
+Clazz_defineMethod (c$, "getRegexAt", 
+function (i) {
+if (i >= this.tp.ra_len) {
+throw  new ArrayIndexOutOfBoundsException ("i=" + i + ">=" + this.patterns ());
+}if (i < 0) {
+throw  new ArrayIndexOutOfBoundsException ("i=" + i + "< 0");
+}return this.tp.ra[i];
+}, "~N");
+Clazz_defineMethod (c$, "setRegexAt", 
+function (rx, i) {
+if (i >= this.tp.ra_len) {
+throw  new ArrayIndexOutOfBoundsException ("i=" + i + ">=" + this.patterns ());
+}if (i < 0) {
+throw  new ArrayIndexOutOfBoundsException ("i=" + i + "< 0");
+}this.tp.ra[i] = rx;
+}, "com.stevesoft.pat.Regex,~N");
+Clazz_defineMethod (c$, "add", 
+function (rs) {
+var r = com.stevesoft.pat.Regex.perlCode (rs);
+if (r == null) {
+throw  new NullPointerException (com.stevesoft.pat.MessageManager.formatMessage ("exception.bad_pattern_to_regex_perl_code",  Clazz_newArray (-1, [rs])));
+}this.add (r);
+}, "~S");
+Clazz_defineMethod (c$, "add", 
+function (array) {
+for (var i = 0; i < array.length; i++) {
+this.add (array[i]);
+}
+}, "~A");
+Clazz_defineMethod (c$, "replaceAll", 
+function (s) {
+return this.dorep (s, 0, s.length);
+}, "~S");
+Clazz_defineMethod (c$, "replaceAll", 
+function (s) {
+return this.dorep (s, 0, s.length ());
+}, "com.stevesoft.pat.StringLike");
+Clazz_defineMethod (c$, "replaceAllFrom", 
+function (s, start) {
+return this.dorep (s, start, s.length);
+}, "~S,~N");
+Clazz_defineMethod (c$, "replaceAllRegion", 
+function (s, start, end) {
+return this.dorep (s, start, end);
+}, "~S,~N,~N");
+Clazz_defineMethod (c$, "dorep", 
+function (s, start, end) {
+var tfmd = this.repr.replaceAllRegion (s, this.rp, start, end);
+this.tp.lastMatchedTo = this.repr.$lastMatchedTo;
+return tfmd;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+Clazz_defineMethod (c$, "dorep", 
+function (s, start, end) {
+return this.dorep ( new com.stevesoft.pat.wrap.StringWrap (s), start, end).toString ();
+}, "~S,~N,~N");
+Clazz_defineMethod (c$, "replaceFirst", 
+function (s) {
+return this.dorep (s, 0, s.length);
+}, "~S");
+Clazz_defineMethod (c$, "replaceFirstFrom", 
+function (s, start) {
+return this.dorep (s, start, s.length);
+}, "~S,~N");
+Clazz_defineMethod (c$, "replaceFirstRegion", 
+function (s, start, end) {
+return this.dorep (s, start, end);
+}, "~S,~N,~N");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (null, ["com.stevesoft.pat.RegHolder", "$.Replacer", "$.CodeVal"], ["com.stevesoft.pat.AmpersandRule", "$.ChangeRule", "$.MessageManager", "$.PopRule", "$.PushRule", "$.RuleHolder", "$.SpecialRule", "$.StringBufferLike", "$.WantMoreTextReplaceRule", "com.stevesoft.pat.wrap.StringWrap", "java.lang.NullPointerException"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.me = null;
+this.prev = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "RegHolder");
+c$ = Clazz_decorateAsClass (function () {
+this.pos = 0;
+this.code = '\0';
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "CodeVal");
+Clazz_makeConstructor (c$, 
+function (p, c) {
+this.pos = p;
+this.code = c;
+}, "~N,~S");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return "(" + this.pos + "," + this.code + ")";
+});
+c$ = Clazz_decorateAsClass (function () {
+this.first = false;
+this.rh = null;
+this.sb = null;
+this.src = null;
+this.pos = 0;
+this.want_more_text = false;
+this.want_more_text_enable = false;
+this.$lastMatchedTo = 0;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Replacer");
+Clazz_prepareFields (c$, function () {
+this.rh =  new com.stevesoft.pat.RegHolder ();
+});
+Clazz_makeConstructor (c$, 
+function () {
+});
+Clazz_defineMethod (c$, "replaceFirstRegion", 
+function (s, r, start, end) {
+return this.replaceFirstRegion ( new com.stevesoft.pat.wrap.StringWrap (s), r, start, end);
+}, "~S,com.stevesoft.pat.Regex,~N,~N");
+Clazz_defineMethod (c$, "replaceFirstRegion", 
+function (s, r, start, end) {
+this.first = true;
+this.rh.me = r;
+this.rh.prev = null;
+return this.dorep (s, start, end);
+}, "com.stevesoft.pat.StringLike,com.stevesoft.pat.Regex,~N,~N");
+Clazz_defineMethod (c$, "replaceFirst", 
+function (s) {
+return this.replaceFirstRegion (s, 0, s.length ());
+}, "com.stevesoft.pat.StringLike");
+Clazz_defineMethod (c$, "replaceFirstFrom", 
+function (s, start) {
+return this.replaceFirstRegion (s, start, s.length ());
+}, "com.stevesoft.pat.StringLike,~N");
+Clazz_defineMethod (c$, "replaceFirstRegion", 
+function (s, start, end) {
+this.first = true;
+return this.dorep (s, start, end);
+}, "com.stevesoft.pat.StringLike,~N,~N");
+Clazz_defineMethod (c$, "replaceAllRegion", 
+function (s, r, start, end) {
+return this.replaceAllRegion ( new com.stevesoft.pat.wrap.StringWrap (s), r, start, end);
+}, "~S,com.stevesoft.pat.Regex,~N,~N");
+Clazz_defineMethod (c$, "replaceAllRegion", 
+function (s, r, start, end) {
+this.first = false;
+this.rh.me = r;
+this.rh.prev = null;
+return this.dorep (s, start, end);
+}, "com.stevesoft.pat.StringLike,com.stevesoft.pat.Regex,~N,~N");
+Clazz_defineMethod (c$, "replaceAll", 
+function (s) {
+return this.replaceAllRegion (s, 0, s.length ());
+}, "com.stevesoft.pat.StringLike");
+Clazz_defineMethod (c$, "replaceAllFrom", 
+function (s, start) {
+return this.replaceAllRegion (s, start, s.length ());
+}, "com.stevesoft.pat.StringLike,~N");
+Clazz_defineMethod (c$, "replaceAllRegion", 
+function (s, start, end) {
+this.first = false;
+return this.dorep (s, start, end);
+}, "com.stevesoft.pat.StringLike,~N,~N");
+Clazz_defineMethod (c$, "replaceAll", 
+function (s) {
+return this.replaceAllRegion ( new com.stevesoft.pat.wrap.StringWrap (s), 0, s.length).toString ();
+}, "~S");
+Clazz_defineMethod (c$, "replaceAllFrom", 
+function (s, start) {
+return this.replaceAllRegion ( new com.stevesoft.pat.wrap.StringWrap (s), start, s.length).toString ();
+}, "~S,~N");
+Clazz_defineMethod (c$, "replaceAllRegion", 
+function (s, start, end) {
+this.first = false;
+return this.dorep ( new com.stevesoft.pat.wrap.StringWrap (s), start, end).toString ();
+}, "~S,~N,~N");
+Clazz_defineMethod (c$, "isSpecial", 
+function (x) {
+while (x != null) {
+if (Clazz_instanceOf (x, com.stevesoft.pat.SpecialRule) || (Clazz_instanceOf (x, com.stevesoft.pat.RuleHolder) && Clazz_instanceOf ((x).held, com.stevesoft.pat.SpecialRule))) {
+return true;
+}x = x.next;
+}
+return false;
+}, "com.stevesoft.pat.ReplaceRule");
+Clazz_defineMethod (c$, "apply1", 
+function (rr) {
+rr.charsMatched_++;
+this.apply (rr, null);
+rr.charsMatched_--;
+}, "com.stevesoft.pat.RegRes");
+Clazz_defineMethod (c$, "dorep", 
+function (s, start, end) {
+var ret = s;
+this.want_more_text = false;
+this.$lastMatchedTo = 0;
+if (this.rh.me == null) {
+throw  new NullPointerException (com.stevesoft.pat.MessageManager.getString ("exception.replace_null_regex_pointer"));
+}if (this.rh.me._searchLike (s, start, end)) {
+var rmn = this.rh.me.matchedTo ();
+if (this.rh.me.charsMatched () == 0 && !this.isSpecial (this.rh.me.getReplaceRule ())) {
+this.apply1 (this.rh.me);
+rmn++;
+}this.apply (this.rh.me);
+if (!this.first) {
+for (var i = rmn; !this.want_more_text && this.rh.me._searchLike (s, i, end); i = rmn) {
+rmn = this.rh.me.matchedTo ();
+if (this.rh.me.charsMatched () == 0) {
+if (!this.isSpecial (this.rh.me.getReplaceRule ())) {
+this.apply1 (this.rh.me);
+}rmn++;
+}this.apply (this.rh.me);
+}
+}ret = this.finish ();
+ret = ret == null ? s : ret;
+}return ret;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+Clazz_defineMethod (c$, "apply", 
+function (r, rp) {
+if (rp == null || (rp.next == null && Clazz_instanceOf (rp, com.stevesoft.pat.AmpersandRule))) {
+return;
+}if (r.didMatch ()) {
+if (this.src == null) {
+this.src = r.getStringLike ();
+}if (this.sb == null) {
+this.sb =  new com.stevesoft.pat.StringBufferLike (this.src.newStringBufferLike ());
+}var rmf = r.matchedFrom ();
+for (var ii = this.pos; ii < rmf; ii++) {
+this.sb.appendC (this.src.charAt (ii));
+}
+for (var x = rp; x != null; x = x.next) {
+x.apply (this.sb, r);
+if (Clazz_instanceOf (x, com.stevesoft.pat.SpecialRule)) {
+if (Clazz_instanceOf (x, com.stevesoft.pat.WantMoreTextReplaceRule) && this.want_more_text_enable) {
+this.want_more_text = true;
+} else if (Clazz_instanceOf (x, com.stevesoft.pat.PushRule)) {
+var rh2 =  new com.stevesoft.pat.RegHolder ();
+rh2.me = (x).NewRule;
+rh2.prev = this.rh;
+this.rh = rh2;
+} else if (Clazz_instanceOf (x, com.stevesoft.pat.PopRule)) {
+if (this.rh.prev != null) {
+this.rh = this.rh.prev;
+}} else if (Clazz_instanceOf (x, com.stevesoft.pat.ChangeRule)) {
+this.rh.me = (x).NewRule;
+}}}
+if (!this.want_more_text) {
+this.pos = r.matchedTo ();
+}}}, "com.stevesoft.pat.RegRes,com.stevesoft.pat.ReplaceRule");
+Clazz_defineMethod (c$, "WantMoreText", 
+function () {
+return this.want_more_text;
+});
+Clazz_defineMethod (c$, "apply", 
+function (r) {
+this.apply (r, r.getReplaceRule ());
+}, "com.stevesoft.pat.Regex");
+Clazz_defineMethod (c$, "finish", 
+function () {
+if (this.src == null) {
+return null;
+}var s_end = this.src.length ();
+for (var ii = this.pos; ii < s_end; ii++) {
+this.sb.appendC (this.src.charAt (ii));
+}
+this.src = null;
+this.$lastMatchedTo = this.pos;
+this.pos = 0;
+var retstr = this.sb.toStringLike ();
+this.sb = null;
+return retstr;
+});
+Clazz_overrideMethod (c$, "clone", 
+function () {
+var r =  new com.stevesoft.pat.Replacer ();
+r.first = this.first;
+r.src = this.src;
+r.sb = this.sb;
+r.pos = this.pos;
+r.$lastMatchedTo = this.$lastMatchedTo;
+r.want_more_text = this.want_more_text;
+r.want_more_text_enable = this.want_more_text_enable;
+r.rh.me = this.rh.me;
+r.rh.prev = this.rh.prev;
+return r;
+});
+Clazz_defineMethod (c$, "lastMatchedTo", 
+function () {
+return this.$lastMatchedTo;
+});
+Clazz_defineMethod (c$, "getRegex", 
+function () {
+return this.rh.me;
+});
+Clazz_defineMethod (c$, "setSource", 
+function (sl) {
+this.src = sl;
+}, "com.stevesoft.pat.StringLike");
+Clazz_defineMethod (c$, "setBuffer", 
+function (sbl) {
+this.sb = sbl;
+}, "com.stevesoft.pat.StringBufferLike");
+Clazz_defineMethod (c$, "setPos", 
+function (pos) {
+this.pos = pos;
+}, "~N");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.AmpersandRule", null, function () {
+c$ = Clazz_declareType (com.stevesoft.pat, "AmpersandRule", com.stevesoft.pat.ReplaceRule);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, com.stevesoft.pat.AmpersandRule, []);
+});
+Clazz_overrideMethod (c$, "apply", 
+function (sb, res) {
+sb.append (res.stringMatched ());
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+Clazz_overrideMethod (c$, "toString1", 
+function () {
+return "$&";
+});
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.ChangeRule", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.NewRule = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "ChangeRule", com.stevesoft.pat.SpecialRule);
+Clazz_makeConstructor (c$, 
+function (c) {
+Clazz_superConstructor (this, com.stevesoft.pat.ChangeRule, []);
+this.NewRule = c.NewRule;
+}, "com.stevesoft.pat.ChangeRule");
+Clazz_makeConstructor (c$, 
+function (nm, rr) {
+Clazz_superConstructor (this, com.stevesoft.pat.ChangeRule, []);
+this.name = nm;
+this.NewRule = rr;
+}, "~S,com.stevesoft.pat.Regex");
+Clazz_makeConstructor (c$, 
+function (nm, tr) {
+Clazz_superConstructor (this, com.stevesoft.pat.ChangeRule, []);
+this.name = nm;
+this.NewRule = tr.rp;
+}, "~S,com.stevesoft.pat.Transformer");
+Clazz_overrideMethod (c$, "clone1", 
+function () {
+return  new com.stevesoft.pat.ChangeRule (this);
+});
+Clazz_overrideMethod (c$, "toString1", 
+function () {
+return "${=" + this.name + "}";
+});
+Clazz_overrideMethod (c$, "apply", 
+function (sb, rr) {
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.SpecialRule", null, function () {
+c$ = Clazz_declareType (com.stevesoft.pat, "SpecialRule", com.stevesoft.pat.ReplaceRule);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, com.stevesoft.pat.SpecialRule, []);
+});
+Clazz_overrideMethod (c$, "apply", 
+function (sb, rr) {
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.PopRule", null, function () {
+c$ = Clazz_declareType (com.stevesoft.pat, "PopRule", com.stevesoft.pat.SpecialRule);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, com.stevesoft.pat.PopRule, []);
+});
+Clazz_overrideMethod (c$, "toString1", 
+function () {
+return "${POP}";
+});
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.PushRule", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.NewRule = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "PushRule", com.stevesoft.pat.SpecialRule);
+Clazz_makeConstructor (c$, 
+function (p) {
+Clazz_superConstructor (this, com.stevesoft.pat.PushRule, []);
+this.NewRule = p.NewRule;
+}, "com.stevesoft.pat.PushRule");
+Clazz_makeConstructor (c$, 
+function (nm, rr) {
+Clazz_superConstructor (this, com.stevesoft.pat.PushRule, []);
+this.name = nm;
+this.NewRule = rr;
+}, "~S,com.stevesoft.pat.Regex");
+Clazz_makeConstructor (c$, 
+function (nm, tr) {
+Clazz_superConstructor (this, com.stevesoft.pat.PushRule, []);
+this.name = nm;
+this.NewRule = tr.rp;
+}, "~S,com.stevesoft.pat.Transformer");
+Clazz_overrideMethod (c$, "clone1", 
+function () {
+return  new com.stevesoft.pat.PushRule (this);
+});
+Clazz_defineMethod (c$, "String1", 
+function () {
+return "${+" + this.name + "}";
+});
+Clazz_overrideMethod (c$, "apply", 
+function (sbl, rr) {
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.RuleHolder", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.held = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "RuleHolder", com.stevesoft.pat.ReplaceRule);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, com.stevesoft.pat.RuleHolder, []);
+});
+Clazz_makeConstructor (c$, 
+function (h) {
+Clazz_superConstructor (this, com.stevesoft.pat.RuleHolder, []);
+this.held = h;
+}, "com.stevesoft.pat.ReplaceRule");
+Clazz_overrideMethod (c$, "clone1", 
+function () {
+return  new com.stevesoft.pat.RuleHolder (this.held);
+});
+Clazz_defineMethod (c$, "toString1", 
+function () {
+return this.held.toString1 ();
+});
+Clazz_defineMethod (c$, "apply", 
+function (sb, rr) {
+this.held.apply (sb, rr);
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+Clazz_defineMethod (c$, "arg", 
+function (s) {
+return  new com.stevesoft.pat.RuleHolder (this.held.arg (s));
+}, "~S");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.BasicStringBufferLike"], "com.stevesoft.pat.StringBufferLike", ["com.stevesoft.pat.CaseMgr"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.sbl = null;
+this.mode = 'E';
+this.altMode = ' ';
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "StringBufferLike", null, com.stevesoft.pat.BasicStringBufferLike);
+Clazz_makeConstructor (c$, 
+function (sbl) {
+this.sbl = sbl;
+}, "com.stevesoft.pat.BasicStringBufferLike");
+Clazz_defineMethod (c$, "toStringLike", 
+function () {
+return this.sbl.toStringLike ();
+});
+Clazz_defineMethod (c$, "toString", 
+function () {
+return this.sbl.toString ();
+});
+Clazz_defineMethod (c$, "appendC", 
+function (c) {
+switch (this.mode) {
+case 'u':
+this.mode = this.altMode;
+this.altMode = ' ';
+case 'U':
+this.sbl.appendC (com.stevesoft.pat.CaseMgr.toUpperCaseC (c));
+break;
+case 'l':
+this.mode = this.altMode;
+this.altMode = ' ';
+case 'L':
+this.sbl.appendC (com.stevesoft.pat.CaseMgr.toLowerCaseC (c));
+break;
+case 'Q':
+if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9')) {
+;} else {
+this.sbl.appendC ('\\');
+}default:
+this.sbl.appendC (c);
+break;
+}
+}, "~S");
+Clazz_overrideMethod (c$, "append", 
+function (s) {
+for (var i = 0; i < s.length; i++) {
+this.appendC (s.charAt (i));
+}
+}, "~S");
+Clazz_defineMethod (c$, "setMode", 
+function (c) {
+if (c == 'u' || c == 'l') {
+if (this.altMode == ' ') {
+this.altMode = this.mode;
+}}this.mode = c;
+}, "~S");
+Clazz_defineMethod (c$, "unwrap", 
+function () {
+return this.sbl.unwrap ();
+});
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_declareInterface (com.stevesoft.pat, "BasicStringBufferLike");
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.SpecialRule"], "com.stevesoft.pat.WantMoreTextReplaceRule", null, function () {
+c$ = Clazz_declareType (com.stevesoft.pat, "WantMoreTextReplaceRule", com.stevesoft.pat.SpecialRule);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, com.stevesoft.pat.WantMoreTextReplaceRule, []);
+});
+Clazz_overrideMethod (c$, "apply", 
+function (sb, res) {
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+Clazz_overrideMethod (c$, "toString1", 
+function () {
+return "${WANT_MORE_TEXT}";
+});
+});
+Clazz_declarePackage ("com.stevesoft.pat.wrap");
+Clazz_load (["com.stevesoft.pat.StringLike"], "com.stevesoft.pat.wrap.StringWrap", ["com.stevesoft.pat.wrap.StringBufferWrap"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.s = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat.wrap, "StringWrap", null, com.stevesoft.pat.StringLike);
+Clazz_makeConstructor (c$, 
+function (s) {
+this.s = s;
+}, "~S");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return this.s;
+});
+Clazz_overrideMethod (c$, "charAt", 
+function (i) {
+return this.s.charAt (i);
+}, "~N");
+Clazz_overrideMethod (c$, "length", 
+function () {
+return this.s.length;
+});
+Clazz_overrideMethod (c$, "substring", 
+function (i1, i2) {
+return this.s.substring (i1, i2);
+}, "~N,~N");
+Clazz_overrideMethod (c$, "unwrap", 
+function () {
+return this.s;
+});
+Clazz_overrideMethod (c$, "newStringBufferLike", 
+function () {
+return  new com.stevesoft.pat.wrap.StringBufferWrap ();
+});
+Clazz_overrideMethod (c$, "indexOf", 
+function (c) {
+return this.s.indexOf (c);
+}, "~S");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_declareInterface (com.stevesoft.pat, "StringLike");
+Clazz_declarePackage ("com.stevesoft.pat.wrap");
+Clazz_load (["com.stevesoft.pat.BasicStringBufferLike", "java.lang.StringBuffer"], "com.stevesoft.pat.wrap.StringBufferWrap", ["com.stevesoft.pat.wrap.StringWrap"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.sb = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat.wrap, "StringBufferWrap", null, com.stevesoft.pat.BasicStringBufferLike);
+Clazz_prepareFields (c$, function () {
+this.sb =  new StringBuffer ();
+});
+Clazz_overrideMethod (c$, "appendC", 
+function (c) {
+this.sb.append (c);
+}, "~S");
+Clazz_overrideMethod (c$, "append", 
+function (s) {
+this.sb.append (s);
+}, "~S");
+Clazz_defineMethod (c$, "length", 
+function () {
+return this.sb.length ();
+});
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return this.sb.toString ();
+});
+Clazz_overrideMethod (c$, "toStringLike", 
+function () {
+return  new com.stevesoft.pat.wrap.StringWrap (this.sb.toString ());
+});
+Clazz_overrideMethod (c$, "unwrap", 
+function () {
+return this.sb;
+});
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.TransPat", ["com.stevesoft.pat.Regex"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.ra = null;
+this.ra_len = 0;
+this.pn = -1;
+this.lastMatchedTo = -1;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "TransPat", com.stevesoft.pat.Pattern);
+Clazz_prepareFields (c$, function () {
+this.ra =  new Array (10);
+});
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return "(?#TransPat)";
+});
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, com.stevesoft.pat.TransPat, []);
+});
+Clazz_defineMethod (c$, "matchInternal", 
+function (pos, pt) {
+for (var i = 0; i < this.ra_len; i++) {
+pt.ignoreCase = this.ra[i].ignoreCase;
+pt.mFlag = this.ra[i].mFlag;
+pt.dotDoesntMatchCR = com.stevesoft.pat.Regex.dotDoesntMatchCR;
+var r = this.ra[i].thePattern.matchInternal (pos, pt);
+if (r >= 0) {
+this.pn = i;
+return r;
+}}
+this.pn = -1;
+return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Regex"], "com.stevesoft.pat.Rthings", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.val = 0;
+this.ignoreCase = false;
+this.dontMatchInQuotes = false;
+this.optimizeMe = false;
+this.noBackRefs = false;
+this.parenLevel = 0;
+this.gFlag = false;
+this.mFlag = false;
+this.sFlag = false;
+this.p = null;
+this.o = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Rthings");
+Clazz_prepareFields (c$, function () {
+this.val = com.stevesoft.pat.Regex.BackRefOffset;
+});
+Clazz_makeConstructor (c$, 
+function (r) {
+this.ignoreCase = r.ignoreCase;
+this.dontMatchInQuotes = r.dontMatchInQuotes;
+}, "com.stevesoft.pat.Regex");
+Clazz_defineMethod (c$, "set", 
+function (r) {
+r.gFlag = this.gFlag;
+r.mFlag = this.mFlag;
+r.sFlag = this.sFlag;
+r.ignoreCase = this.ignoreCase;
+r.dontMatchInQuotes = this.dontMatchInQuotes;
+if (this.optimizeMe) {
+r.optimize ();
+}}, "com.stevesoft.pat.Regex");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (null, "com.stevesoft.pat.Skip", ["com.stevesoft.pat.CaseMgr", "$.Or", "$.Skipped", "$.oneChar", "java.lang.StringBuffer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.src = null;
+this.c = 0;
+this.mask = 0;
+this.$offset = 0;
+this.ign = false;
+this.m1 = false;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Skip");
+c$.mkmask = Clazz_defineMethod (c$, "mkmask", 
+function (c) {
+var x = String.fromCharCode (c);
+return ~((com.stevesoft.pat.CaseMgr.toUpperCaseC (x)).charCodeAt (0) | (com.stevesoft.pat.CaseMgr.toLowerCaseC (x)).charCodeAt (0) | (com.stevesoft.pat.CaseMgr.toTitleCaseC (x)).charCodeAt (0));
+}, "~N");
+c$.string = Clazz_defineMethod (c$, "string", 
+function (r) {
+return r.skipper == null ? null : r.skipper.src;
+}, "com.stevesoft.pat.Regex");
+c$.offset = Clazz_defineMethod (c$, "offset", 
+function (r) {
+return r.skipper == null ? -1 : r.skipper.$offset;
+}, "com.stevesoft.pat.Regex");
+Clazz_makeConstructor (c$, 
+function (s, ign, o) {
+this.src = s;
+this.c = s.charCodeAt (0);
+if (ign) {
+this.mask = com.stevesoft.pat.Skip.mkmask (this.c);
+} else {
+this.mask = 0;
+}this.$offset = o;
+this.ign = ign;
+this.m1 = (s.length == 1);
+}, "~S,~B,~N");
+Clazz_defineMethod (c$, "find", 
+function (s) {
+return this.find (s, 0, s.length ());
+}, "com.stevesoft.pat.StringLike");
+c$.min = Clazz_defineMethod (c$, "min", 
+function (a, b) {
+return a < b ? a : b;
+}, "~N,~N");
+Clazz_defineMethod (c$, "find", 
+function (s, start, end) {
+if (start > end) {
+return -1;
+}start += this.$offset;
+var vend = com.stevesoft.pat.Skip.min (s.length () - 1, end + this.$offset);
+if (this.mask != this.c) {
+for (var i = start; i <= vend; i++) {
+if (0 == (s.charCodeAt (i) & this.mask)) {
+if (this.m1 || com.stevesoft.pat.CaseMgr.regionMatchesLike2 (s, this.ign, i, this.src, 0, this.src.length)) {
+return i - this.$offset;
+}}}
+} else {
+for (var i = start; i <= vend; i++) {
+if (this.c == s.charCodeAt (i)) {
+if (this.m1 || com.stevesoft.pat.CaseMgr.regionMatchesLike2 (s, this.ign, i, this.src, 0, this.src.length)) {
+return i - this.$offset;
+}}}
+}return -1;
+}, "com.stevesoft.pat.StringLike,~N,~N");
+c$.findSkipRegex = Clazz_defineMethod (c$, "findSkipRegex", 
+function (r) {
+return com.stevesoft.pat.Skip.findSkip (r.thePattern, r.ignoreCase, !r.dontMatchInQuotes);
+}, "com.stevesoft.pat.Regex");
+c$.findSkip = Clazz_defineMethod (c$, "findSkip", 
+function (p, ignoreCase, trnc) {
+var sb =  new StringBuffer ();
+var subsk = null;
+var offset = 0;
+var skipc = -1;
+var skipoff = 0;
+for (; p != null; p = p.next) {
+if (Clazz_instanceOf (p, com.stevesoft.pat.oneChar)) {
+skipc = ((p).c).charCodeAt (0);
+skipoff = offset;
+}if (Clazz_instanceOf (p, com.stevesoft.pat.oneChar) && Clazz_instanceOf (p.next, com.stevesoft.pat.oneChar)) {
+var psav = p;
+sb.append ((p).c);
+while (Clazz_instanceOf (p.next, com.stevesoft.pat.oneChar)) {
+sb.append ((p.next).c);
+p = p.next;
+}
+var st = sb.toString ();
+var sk = null;
+if (st.length > 2) {
+sk =  new com.stevesoft.pat.SkipBMH (st, ignoreCase, offset);
+} else {
+sk =  new com.stevesoft.pat.Skip2 (st, ignoreCase, offset);
+}if (trnc && st.length > 2) {
+psav.next =  new com.stevesoft.pat.Skipped (st.substring (1));
+psav.next.next = p.next;
+psav.next.parent = p.parent;
+}return sk;
+} else if (Clazz_instanceOf (p, com.stevesoft.pat.Or) && (p).v.size () == 1 && !(p).leftForm ().equals ("(?!") && null != (subsk = com.stevesoft.pat.Skip.findSkip ((p).v.elementAt (0), ignoreCase, trnc))) {
+subsk.$offset += offset;
+return subsk;
+} else if (p.minChars ().equals (p.maxChars ())) {
+offset += p.minChars ().intValue ();
+} else {
+return skipc < 0 ? null :  new com.stevesoft.pat.Skip ("" + String.fromCharCode (skipc), ignoreCase, skipoff);
+}}
+return null;
+}, "com.stevesoft.pat.Pattern,~B,~B");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Skipped", ["com.stevesoft.pat.CaseMgr", "$.patInt"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.s = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Skipped", com.stevesoft.pat.Pattern);
+Clazz_makeConstructor (c$, 
+function (s) {
+Clazz_superConstructor (this, com.stevesoft.pat.Skipped, []);
+this.s = s;
+}, "~S");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return this.s + this.nextString ();
+});
+Clazz_overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (pt.no_check || com.stevesoft.pat.CaseMgr.regionMatches (this.s, pt.ignoreCase, 0, pt.src, pos, this.s.length)) {
+return this.nextMatch (pos + this.s.length, pt);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (this.s.length);
+});
+Clazz_overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (this.s.length);
+});
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.Skipped (this.s);
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Pattern"], "com.stevesoft.pat.Start", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.retIsStart = false;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "Start", com.stevesoft.pat.Pattern);
+Clazz_makeConstructor (c$, 
+function (b) {
+Clazz_superConstructor (this, com.stevesoft.pat.Start, []);
+this.retIsStart = b;
+}, "~B");
+Clazz_overrideMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (this.retIsStart && pt.mFlag && pos > 0 && pt.src.charAt (pos - 1) == '\n') {
+return this.nextMatch (pos, pt);
+}if (pos == 0) {
+return this.nextMatch (pos, pt);
+}return -1;
+}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+if (this.retIsStart) {
+return "^" + this.nextString ();
+} else {
+return "\\A" + this.nextString ();
+}});
+Clazz_overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (0);
+});
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+return  new com.stevesoft.pat.Start (this.retIsStart);
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (null, "com.stevesoft.pat.StrPos", ["com.stevesoft.pat.patInf", "$.patInt"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.s = null;
+this.$pos = 0;
+this.esc = '\\';
+this.c = '\0';
+this.dontMatch = false;
+this.$eos = false;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "StrPos");
+Clazz_defineMethod (c$, "pos", 
+function () {
+return this.$pos;
+});
+Clazz_defineMethod (c$, "thisChar", 
+function () {
+return this.c;
+});
+Clazz_defineMethod (c$, "eos", 
+function () {
+return this.$eos;
+});
+Clazz_makeConstructor (c$, 
+function (sp) {
+this.dup (sp);
+}, "com.stevesoft.pat.StrPos");
+Clazz_defineMethod (c$, "dup", 
+function (sp) {
+this.s = sp.s;
+this.$pos = sp.$pos;
+this.c = sp.c;
+this.dontMatch = sp.dontMatch;
+this.$eos = sp.$eos;
+}, "com.stevesoft.pat.StrPos");
+Clazz_makeConstructor (c$, 
+function (s, pos) {
+this.s = s;
+this.$pos = pos - 1;
+this.inc ();
+}, "~S,~N");
+Clazz_defineMethod (c$, "inc", 
+function () {
+this.$pos++;
+if (this.$pos >= this.s.length) {
+this.$eos = true;
+return this;
+}this.$eos = false;
+this.c = this.s.charAt (this.$pos);
+if (this.c == this.esc && this.$pos + 1 < this.s.length) {
+this.$pos++;
+this.c = this.s.charAt (this.$pos);
+if (this.c != this.esc) {
+this.dontMatch = true;
+} else {
+this.dontMatch = false;
+}} else {
+this.dontMatch = false;
+}return this;
+});
+Clazz_defineMethod (c$, "match", 
+function (ch) {
+if (this.dontMatch || this.$eos) {
+return false;
+}return this.c == ch;
+}, "~S");
+Clazz_defineMethod (c$, "escMatch", 
+function (ch) {
+if (!this.dontMatch || this.$eos) {
+return false;
+}return this.c == ch;
+}, "~S");
+Clazz_defineMethod (c$, "escaped", 
+function () {
+return this.dontMatch;
+});
+Clazz_defineMethod (c$, "incMatch", 
+function (st) {
+var sp =  new com.stevesoft.pat.StrPos (this);
+var i;
+for (i = 0; i < st.length; i++) {
+if (!sp.match (st.charAt (i))) {
+return false;
+}sp.inc ();
+}
+this.dup (sp);
+return true;
+}, "~S");
+Clazz_defineMethod (c$, "getPatInt", 
+function () {
+if (this.incMatch ("inf")) {
+return  new com.stevesoft.pat.patInf ();
+}var i;
+var cnt = 0;
+var sp =  new com.stevesoft.pat.StrPos (this);
+for (i = 0; !sp.$eos && sp.c >= '0' && sp.c <= '9'; i++) {
+cnt = 10 * cnt + sp.c.charCodeAt (0) - 48;
+sp.inc ();
+}
+if (i == 0) {
+return null;
+}this.dup (sp);
+return  new com.stevesoft.pat.patInt (cnt);
+});
+Clazz_defineMethod (c$, "getString", 
+function () {
+return this.s;
+});
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.Or"], "com.stevesoft.pat.lookAhead", ["com.stevesoft.pat.patInt"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.reverse = false;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "lookAhead", com.stevesoft.pat.Or);
+Clazz_makeConstructor (c$, 
+function (b) {
+Clazz_superConstructor (this, com.stevesoft.pat.lookAhead, []);
+this.reverse = b;
+}, "~B");
+Clazz_defineMethod (c$, "getNext", 
+function () {
+return null;
+});
+Clazz_overrideMethod (c$, "nextMatch", 
+function (pos, pt) {
+var p = Clazz_superCall (this, com.stevesoft.pat.lookAhead, "getNext", []);
+if (p != null) {
+return p.matchInternal (pos, pt);
+} else {
+return pos;
+}}, "~N,com.stevesoft.pat.Pthings");
+Clazz_defineMethod (c$, "matchInternal", 
+function (pos, pt) {
+if (Clazz_superCall (this, com.stevesoft.pat.lookAhead, "matchInternal", [pos, pt]) >= 0) {
+if (this.reverse) {
+return -1;
+} else {
+return this.nextMatch (pos, pt);
+}} else {
+if (this.reverse) {
+return this.nextMatch (pos, pt);
+} else {
+return -1;
+}}}, "~N,com.stevesoft.pat.Pthings");
+Clazz_overrideMethod (c$, "leftForm", 
+function () {
+if (this.reverse) {
+return "(?!";
+} else {
+return "(?=";
+}});
+Clazz_overrideMethod (c$, "minChars", 
+function () {
+return  new com.stevesoft.pat.patInt (0);
+});
+Clazz_overrideMethod (c$, "maxChars", 
+function () {
+return  new com.stevesoft.pat.patInt (0);
+});
+Clazz_overrideMethod (c$, "clone1", 
+function (h) {
+var la =  new com.stevesoft.pat.lookAhead (this.reverse);
+h.put (this, la);
+h.put (la, la);
+for (var i = 0; i < this.v.size (); i++) {
+la.v.addElement ((this.v.elementAt (i)).clone (h));
+}
+return la;
+}, "java.util.Hashtable");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (null, "com.stevesoft.pat.parsePerl", ["com.stevesoft.pat.CaseMgr", "$.Prop", "$.RegSyntaxError", "$.Regex", "$.ReplaceRule", "$.StringRule", "java.lang.StringBuffer"], function () {
+c$ = Clazz_declareType (com.stevesoft.pat, "parsePerl");
+c$.close = Clazz_defineMethod (c$, "close", 
+function (c) {
+if (c == '<') {
+return '>';
+}if (c == '[') {
+return ']';
+}if (c == '(') {
+return ')';
+}if (c == '{') {
+return '}';
+}return c;
+}, "~S");
+c$.codify = Clazz_defineMethod (c$, "codify", 
+function (s, keepbs) {
+return com.stevesoft.pat.parsePerl.codifyRange (s, 0, s.length, keepbs);
+}, "~S,~B");
+c$.codifyRange = Clazz_defineMethod (c$, "codifyRange", 
+function (s, i0, iN, keepbs) {
+var sb =  new StringBuffer ();
+var ucmode = false;
+var lcmode = false;
+var litmode = false;
+var uc1 = false;
+var lc1 = false;
+var modified = false;
+for (var i = i0; i < iN; i++) {
+var c = s.charAt (i);
+var mf = true;
+var app = true;
+if (c == '\\') {
+app = false;
+i++;
+if (i < s.length) {
+var c2 = s.charAt (i);
+switch (c2) {
+case 'Q':
+litmode = true;
+break;
+case 'U':
+ucmode = true;
+break;
+case 'L':
+lcmode = true;
+break;
+case 'u':
+uc1 = true;
+break;
+case 'l':
+lc1 = true;
+break;
+case 'E':
+uc1 = lc1 = ucmode = lcmode = litmode = false;
+break;
+default:
+if (keepbs) {
+sb.append ('\\');
+}c = c2;
+if (keepbs) {
+mf = false;
+}app = true;
+break;
+}
+modified = new Boolean (modified | mf).valueOf ();
+}}if (app) {
+if (lc1) {
+c = com.stevesoft.pat.parsePerl.lc (c);
+lc1 = false;
+} else if (uc1) {
+c = com.stevesoft.pat.parsePerl.uc (c);
+uc1 = false;
+} else if (ucmode) {
+c = com.stevesoft.pat.parsePerl.uc (c);
+} else if (lcmode) {
+c = com.stevesoft.pat.parsePerl.lc (c);
+}if (litmode && com.stevesoft.pat.parsePerl.needbs (c)) {
+sb.append ('\\');
+}sb.append (c);
+}}
+return modified ? sb.toString () : s;
+}, "~S,~N,~N,~B");
+c$.uc = Clazz_defineMethod (c$, "uc", 
+function (c) {
+return com.stevesoft.pat.CaseMgr.toUpperCaseC (c);
+}, "~S");
+c$.lc = Clazz_defineMethod (c$, "lc", 
+function (c) {
+return com.stevesoft.pat.CaseMgr.toLowerCaseC (c);
+}, "~S");
+c$.needbs = Clazz_defineMethod (c$, "needbs", 
+function (c) {
+if (c >= 'a' && c <= 'z') {
+return false;
+}if (c >= 'A' && c <= 'Z') {
+return false;
+}if (c >= '0' && c <= '9') {
+return false;
+}if (c == '_') {
+return false;
+}return true;
+}, "~S");
+c$.parse = Clazz_defineMethod (c$, "parse", 
+function (s) {
+var igncase = false;
+var optim = false;
+var gFlag = false;
+var sFlag = false;
+var mFlag = false;
+var xFlag = false;
+var s1 =  new StringBuffer ();
+var s2 =  new StringBuffer ();
+var i = 0;
+var count = 0;
+var mode;
+var delim = '/';
+var cdelim = '/';
+if (s.length >= 3 && s.charAt (0) == 's') {
+mode = 's';
+delim = s.charAt (1);
+cdelim = com.stevesoft.pat.parsePerl.close (delim);
+i = 2;
+} else if (s.length >= 2 && s.charAt (0) == 'm') {
+mode = 'm';
+delim = s.charAt (1);
+cdelim = com.stevesoft.pat.parsePerl.close (delim);
+i = 2;
+} else if (s.length >= 1 && s.charAt (0) == '/') {
+mode = 'm';
+i = 1;
+} else {
+try {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Regex.perlCode should be of the form s/// or m// or //");
+} catch (rs) {
+if (Clazz_exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+} else {
+throw rs;
+}
+}
+return null;
+}for (; i < s.length; i++) {
+if (s.charAt (i) == '\\') {
+s1.append ('\\');
+i++;
+} else if (s.charAt (i) == cdelim && count == 0) {
+i++;
+break;
+} else if (s.charAt (i) == delim && cdelim != delim) {
+count++;
+} else if (s.charAt (i) == cdelim && cdelim != delim) {
+count--;
+}s1.append (s.charAt (i));
+}
+if (mode == 's' && cdelim != delim) {
+while (i < s.length && com.stevesoft.pat.Prop.isWhite (s.charAt (i))) {
+i++;
+}
+if (i >= s.length) {
+try {
+com.stevesoft.pat.RegSyntaxError.endItAll ("" + mode + delim + " needs " + cdelim);
+} catch (rs) {
+if (Clazz_exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+} else {
+throw rs;
+}
+}
+return null;
+}cdelim = com.stevesoft.pat.parsePerl.close (delim = s.charAt (i));
+i++;
+}count = 0;
+if (mode == 's') {
+for (; i < s.length; i++) {
+if (s.charAt (i) == '\\') {
+s2.append ('\\');
+i++;
+} else if (s.charAt (i) == cdelim && count == 0) {
+i++;
+break;
+} else if (s.charAt (i) == delim && cdelim != delim) {
+count++;
+} else if (s.charAt (i) == cdelim && cdelim != delim) {
+count--;
+}s2.append (s.charAt (i));
+}
+}for (; i < s.length; i++) {
+var c = s.charAt (i);
+switch (c) {
+case 'x':
+xFlag = true;
+break;
+case 'i':
+igncase = true;
+break;
+case 'o':
+optim = true;
+break;
+case 's':
+sFlag = true;
+break;
+case 'm':
+mFlag = true;
+break;
+case 'g':
+gFlag = true;
+break;
+default:
+try {
+com.stevesoft.pat.RegSyntaxError.endItAll ("Illegal flag to pattern: " + c);
+} catch (rs) {
+if (Clazz_exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+} else {
+throw rs;
+}
+}
+return null;
+}
+}
+var r =  new com.stevesoft.pat.Regex (null, "");
+try {
+var pat = s1.toString ();
+var reprul = s2.toString ();
+if (xFlag) {
+pat = com.stevesoft.pat.parsePerl.strip (pat);
+reprul = com.stevesoft.pat.parsePerl.strip (reprul);
+}r.compile (pat);
+r.ignoreCase = new Boolean (r.ignoreCase | igncase).valueOf ();
+r.gFlag = new Boolean (r.gFlag | gFlag).valueOf ();
+r.sFlag = new Boolean (r.sFlag | sFlag).valueOf ();
+r.mFlag = new Boolean (r.mFlag | mFlag).valueOf ();
+if (optim) {
+r.optimize ();
+}if (delim == '\'') {
+r.setReplaceRule ( new com.stevesoft.pat.StringRule (reprul));
+} else {
+r.setReplaceRule (com.stevesoft.pat.ReplaceRule.perlCode (reprul));
+}} catch (rs) {
+if (Clazz_exceptionOf (rs, com.stevesoft.pat.RegSyntax)) {
+r = null;
+} else {
+throw rs;
+}
+}
+return r;
+}, "~S");
+c$.strip = Clazz_defineMethod (c$, "strip", 
+function (s) {
+var sb =  new StringBuffer ();
+for (var i = 0; i < s.length; i++) {
+var c = s.charAt (i);
+if (com.stevesoft.pat.Prop.isWhite (c)) {
+;} else if (c == '#') {
+i++;
+while (i < s.length) {
+if (s.charAt (i) == '\n') {
+break;
+}i++;
+}
+} else if (c == '\\') {
+sb.append (c);
+sb.append (s.charAt (++i));
+} else {
+sb.append (c);
+}}
+return sb.toString ();
+}, "~S");
+});
+Clazz_declarePackage ("com.stevesoft.pat");
+Clazz_load (["com.stevesoft.pat.ReplaceRule"], "com.stevesoft.pat.StringRule", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.s = null;
+Clazz_instantialize (this, arguments);
+}, com.stevesoft.pat, "StringRule", com.stevesoft.pat.ReplaceRule);
+Clazz_makeConstructor (c$, 
+function (s) {
+Clazz_superConstructor (this, com.stevesoft.pat.StringRule, []);
+this.s = s;
+}, "~S");
+Clazz_overrideMethod (c$, "apply", 
+function (sb, res) {
+sb.append (this.s);
+}, "com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+Clazz_overrideMethod (c$, "toString1", 
+function () {
+return this.s;
+});
+Clazz_overrideMethod (c$, "clone1", 
+function () {
+return  new com.stevesoft.pat.StringRule (this.s);
+});
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["java.util.HashMap"], "jalview.datamodel.AlignmentAnnotation", ["jalview.analysis.Rna", "jalview.datamodel.Annotation", "$.GraphLine", "jalview.schemes.ResidueProperties", "java.lang.Double", "$.Error", "$.Long", "$.StringBuffer", "$.StringBuilder", "java.util.Collections"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.autoCalculated = false;
+this.annotationId = null;
+this.sequenceRef = null;
+this.label = null;
+this.description = null;
+this.annotations = null;
+this.bps = null;
+this._rnasecstr = null;
+this.invalidrnastruc = -2;
+this.sequenceMapping = null;
+this.graphMin = 0;
+this.graphMax = 0;
+this.score = NaN;
+this.$hasScore = false;
+this.threshold = null;
+this.editable = false;
+this.hasIcons = false;
+this.hasText = false;
+this.visible = true;
+this.graphGroup = -1;
+this.height = 0;
+this.graph = 0;
+this.graphHeight = 40;
+this.padGaps = false;
+this.belowAlignment = true;
+this.groupRef = null;
+this.showAllColLabels = false;
+this.scaleColLabel = false;
+this.centreColLabels = false;
+this.isrna = false;
+if (!Clazz_isClassDefined ("jalview.datamodel.AlignmentAnnotation.AnnotCharSequence")) {
+jalview.datamodel.AlignmentAnnotation.$AlignmentAnnotation$AnnotCharSequence$ ();
+}
+this._lastrnaannot = -1;
+this.calcId = "";
+this.properties = null;
+this._linecolour = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "AlignmentAnnotation");
+Clazz_prepareFields (c$, function () {
+this.properties =  new java.util.HashMap ();
+});
+Clazz_defineMethod (c$, "_updateRnaSecStr", 
+ function (RNAannot) {
+try {
+this._rnasecstr = jalview.analysis.Rna.GetBasePairs (RNAannot);
+this.bps = jalview.analysis.Rna.GetModeleBP (RNAannot);
+this.invalidrnastruc = -1;
+} catch (px) {
+if (Clazz_exceptionOf (px, jalview.analysis.WUSSParseException)) {
+this.invalidrnastruc = px.getProblemPos ();
+} else {
+throw px;
+}
+}
+if (this.invalidrnastruc > -1) {
+return;
+}jalview.analysis.Rna.HelixMap (this._rnasecstr);
+if (this._rnasecstr != null && this._rnasecstr.length > 0) {
+this.isrna = true;
+this.showAllColLabels = true;
+this.scaleColLabel = true;
+this._markRnaHelices ();
+}}, "CharSequence");
+Clazz_defineMethod (c$, "_markRnaHelices", 
+ function () {
+var mxval = 0;
+for (var x = 0; x < this._rnasecstr.length; x++) {
+var val = 0;
+try {
+val = (Integer.$valueOf (this._rnasecstr[x].getFeatureGroup ())).intValue ();
+if (mxval < val) {
+mxval = val;
+}} catch (q) {
+if (Clazz_exceptionOf (q, NumberFormatException)) {
+} else {
+throw q;
+}
+}
+;this.annotations[this._rnasecstr[x].getBegin ()].value = val;
+this.annotations[this._rnasecstr[x].getEnd ()].value = val;
+}
+this.setScore (mxval);
+});
+Clazz_defineMethod (c$, "finalize", 
+function () {
+this.sequenceRef = null;
+this.groupRef = null;
+Clazz_superCall (this, jalview.datamodel.AlignmentAnnotation, "finalize", []);
+});
+c$.getGraphValueFromString = Clazz_defineMethod (c$, "getGraphValueFromString", 
+function (string) {
+if (string.equalsIgnoreCase ("BAR_GRAPH")) {
+return 1;
+} else if (string.equalsIgnoreCase ("LINE_GRAPH")) {
+return 2;
+} else {
+return 0;
+}}, "~S");
+Clazz_defineMethod (c$, "ConcenStru", 
+function (RNAannot) {
+this.bps = jalview.analysis.Rna.GetModeleBP (RNAannot);
+}, "CharSequence");
+Clazz_makeConstructor (c$, 
+function (label, description, annotations) {
+this.setAnnotationId ();
+this.editable = true;
+this.label = label;
+this.description = description;
+this.annotations = annotations;
+this.validateRangeAndDisplay ();
+}, "~S,~S,~A");
+Clazz_defineMethod (c$, "areLabelsSecondaryStructure", 
+function () {
+var nonSSLabel = false;
+this.isrna = false;
+var rnastring =  new StringBuffer ();
+var firstChar = String.fromCharCode (0);
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] == null) {
+continue;
+}if (this.annotations[i].secondaryStructure == 'H' || this.annotations[i].secondaryStructure == 'E') {
+this.hasIcons = new Boolean (this.hasIcons | true).valueOf ();
+} else {
+if (this.annotations[i].secondaryStructure == '(' || this.annotations[i].secondaryStructure == '[' || this.annotations[i].secondaryStructure == '<' || this.annotations[i].secondaryStructure == '{' || this.annotations[i].secondaryStructure == 'A' || this.annotations[i].secondaryStructure == 'B' || this.annotations[i].secondaryStructure == 'C' || this.annotations[i].secondaryStructure == 'D' || this.annotations[i].secondaryStructure == 'E' || this.annotations[i].secondaryStructure == 'F' || this.annotations[i].secondaryStructure == 'G' || this.annotations[i].secondaryStructure == 'H' || this.annotations[i].secondaryStructure == 'I' || this.annotations[i].secondaryStructure == 'J' || this.annotations[i].secondaryStructure == 'K' || this.annotations[i].secondaryStructure == 'L' || this.annotations[i].secondaryStructure == 'M' || this.annotations[i].secondaryStructure == 'N' || this.annotations[i].secondaryStructure == 'O' || this.annotations[i].secondaryStructure == 'P' || this.annotations[i].secondaryStructure == 'Q' || this.annotations[i].secondaryStructure == 'R' || this.annotations[i].secondaryStructure == 'S' || this.annotations[i].secondaryStructure == 'T' || this.annotations[i].secondaryStructure == 'U' || this.annotations[i].secondaryStructure == 'V' || this.annotations[i].secondaryStructure == 'W' || this.annotations[i].secondaryStructure == 'X' || this.annotations[i].secondaryStructure == 'Y' || this.annotations[i].secondaryStructure == 'Z') {
+this.hasIcons = new Boolean (this.hasIcons | true).valueOf ();
+this.isrna = new Boolean (this.isrna | true).valueOf ();
+}}if (this.annotations[i].displayCharacter == null || this.annotations[i].displayCharacter.length == 0) {
+rnastring.append ('.');
+continue;
+}if (this.annotations[i].displayCharacter.length == 1) {
+firstChar = this.annotations[i].displayCharacter.charAt (0);
+if (this.annotations[i].secondaryStructure != ' ' && !this.hasIcons && firstChar != ' ' && firstChar != '$' && firstChar.charCodeAt (0) != 0xCE && firstChar != '(' && firstChar != '[' && firstChar != '>' && firstChar != '{' && firstChar != 'A' && firstChar != 'B' && firstChar != 'C' && firstChar != 'D' && firstChar != 'E' && firstChar != 'F' && firstChar != 'G' && firstChar != 'H' && firstChar != 'I' && firstChar != 'J' && firstChar != 'K' && firstChar != 'L' && firstChar != 'M' && firstChar != 'N' && firstChar != 'O' && firstChar != 'P' && firstChar != 'Q' && firstChar != 'R' && firstChar != 'S' && firstChar != 'T' && firstChar != 'U' && firstChar != 'V' && firstChar != 'W' && firstChar != 'X' && firstChar != 'Y' && firstChar != 'Z' && firstChar != '-' && firstChar.charCodeAt (0) < jalview.schemes.ResidueProperties.aaIndex.length) {
+if (jalview.schemes.ResidueProperties.aaIndex[firstChar.charCodeAt (0)] < 23) {
+nonSSLabel = true;
+}}} else {
+rnastring.append (this.annotations[i].displayCharacter.charAt (1));
+}if (this.annotations[i].displayCharacter.length > 0) {
+this.hasText = true;
+}}
+if (nonSSLabel) {
+this.hasIcons = false;
+for (var j = 0; j < this.annotations.length; j++) {
+if (this.annotations[j] != null && this.annotations[j].secondaryStructure != ' ') {
+this.annotations[j].displayCharacter = String.valueOf (this.annotations[j].secondaryStructure);
+this.annotations[j].secondaryStructure = ' ';
+}}
+} else {
+if (this.isrna) {
+this._updateRnaSecStr (Clazz_innerTypeInstance (jalview.datamodel.AlignmentAnnotation.AnnotCharSequence, this, null));
+}}});
+Clazz_defineMethod (c$, "getRNAStruc", 
+function () {
+if (this.isrna) {
+var rnastruc = Clazz_innerTypeInstance (jalview.datamodel.AlignmentAnnotation.AnnotCharSequence, this, null).toString ();
+if (this._lastrnaannot != rnastruc.hashCode ()) {
+this._lastrnaannot = rnastruc.hashCode ();
+this._updateRnaSecStr (rnastruc);
+}return rnastruc;
+}return null;
+});
+Clazz_makeConstructor (c$, 
+function (label, description, annotations, min, max, graphType) {
+this.setAnnotationId ();
+this.editable = graphType == 0;
+this.label = label;
+this.description = description;
+this.annotations = annotations;
+this.graph = graphType;
+this.graphMin = min;
+this.graphMax = max;
+this.validateRangeAndDisplay ();
+}, "~S,~S,~A,~N,~N,~N");
+Clazz_defineMethod (c$, "validateRangeAndDisplay", 
+function () {
+if (this.annotations == null) {
+this.visible = false;
+return;
+}var graphType = this.graph;
+var min = this.graphMin;
+var max = this.graphMax;
+var drawValues = true;
+this._linecolour = null;
+if (min == max) {
+min = 999999999;
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] == null) {
+continue;
+}if (drawValues && this.annotations[i].displayCharacter != null && this.annotations[i].displayCharacter.length > 1) {
+drawValues = false;
+}if (this.annotations[i].value > max) {
+max = this.annotations[i].value;
+}if (this.annotations[i].value < min) {
+min = this.annotations[i].value;
+}if (this._linecolour == null && this.annotations[i].colour != null) {
+this._linecolour = this.annotations[i].colour;
+}}
+if (min > 0) {
+min = 0;
+} else {
+if (max < 0) {
+max = 0;
+}}}this.graphMin = min;
+this.graphMax = max;
+this.areLabelsSecondaryStructure ();
+if (!drawValues && graphType != 0) {
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] != null) {
+this.annotations[i].displayCharacter = "";
+}}
+}});
+Clazz_makeConstructor (c$, 
+function (annotation) {
+this.setAnnotationId ();
+this.label =  String.instantialize (annotation.label);
+if (annotation.description != null) {
+this.description =  String.instantialize (annotation.description);
+}this.graphMin = annotation.graphMin;
+this.graphMax = annotation.graphMax;
+this.graph = annotation.graph;
+this.graphHeight = annotation.graphHeight;
+this.graphGroup = annotation.graphGroup;
+this.groupRef = annotation.groupRef;
+this.editable = annotation.editable;
+this.autoCalculated = annotation.autoCalculated;
+this.hasIcons = annotation.hasIcons;
+this.hasText = annotation.hasText;
+this.height = annotation.height;
+this.label = annotation.label;
+this.padGaps = annotation.padGaps;
+this.visible = annotation.visible;
+this.centreColLabels = annotation.centreColLabels;
+this.scaleColLabel = annotation.scaleColLabel;
+this.showAllColLabels = annotation.showAllColLabels;
+this.calcId = annotation.calcId;
+if (annotation.properties != null) {
+this.properties =  new java.util.HashMap ();
+for (var val, $val = annotation.properties.entrySet ().iterator (); $val.hasNext () && ((val = $val.next ()) || true);) {
+this.properties.put (val.getKey (), val.getValue ());
+}
+}if (this.$hasScore = annotation.$hasScore) {
+this.score = annotation.score;
+}if (annotation.threshold != null) {
+this.threshold =  new jalview.datamodel.GraphLine (annotation.threshold);
+}var ann = annotation.annotations;
+if (annotation.annotations != null) {
+this.annotations =  new Array (ann.length);
+for (var i = 0; i < ann.length; i++) {
+if (ann[i] != null) {
+this.annotations[i] =  new jalview.datamodel.Annotation (ann[i]);
+if (this._linecolour != null) {
+this._linecolour = this.annotations[i].colour;
+}}}
+}if (annotation.sequenceRef != null) {
+this.sequenceRef = annotation.sequenceRef;
+if (annotation.sequenceMapping != null) {
+var p = null;
+this.sequenceMapping =  new java.util.HashMap ();
+var pos = annotation.sequenceMapping.keySet ().iterator ();
+while (pos.hasNext ()) {
+p = pos.next ();
+var a = annotation.sequenceMapping.get (p);
+if (a == null) {
+continue;
+}if (ann != null) {
+for (var i = 0; i < ann.length; i++) {
+if (ann[i] === a) {
+this.sequenceMapping.put (p, this.annotations[i]);
+}}
+}}
+} else {
+this.sequenceMapping = null;
+}}{
+}this.validateRangeAndDisplay ();
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz_defineMethod (c$, "restrict", 
+function (startRes, endRes) {
+if (this.annotations == null) {
+return;
+}if (startRes < 0) {
+startRes = 0;
+}if (startRes >= this.annotations.length) {
+startRes = this.annotations.length - 1;
+}if (endRes >= this.annotations.length) {
+endRes = this.annotations.length - 1;
+}if (this.annotations == null) {
+return;
+}var temp =  new Array (endRes - startRes + 1);
+if (startRes < this.annotations.length) {
+System.arraycopy (this.annotations, startRes, temp, 0, endRes - startRes + 1);
+}if (this.sequenceRef != null) {
+var spos = this.sequenceRef.findPosition (startRes);
+var epos = this.sequenceRef.findPosition (endRes);
+if (this.sequenceMapping != null) {
+var newmapping =  new java.util.HashMap ();
+var e = this.sequenceMapping.keySet ().iterator ();
+while (e.hasNext ()) {
+var pos = e.next ();
+if (pos.intValue () >= spos && pos.intValue () <= epos) {
+newmapping.put (pos, this.sequenceMapping.get (pos));
+}}
+this.sequenceMapping.clear ();
+this.sequenceMapping = newmapping;
+}}this.annotations = temp;
+}, "~N,~N");
+Clazz_defineMethod (c$, "padAnnotation", 
+function (length) {
+if (this.annotations == null) {
+return true;
+}if (this.annotations.length < length) {
+var na =  new Array (length);
+System.arraycopy (this.annotations, 0, na, 0, this.annotations.length);
+this.annotations = na;
+return true;
+}return this.annotations.length > length;
+}, "~N");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+var buffer =  new StringBuilder (256);
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] != null) {
+if (this.graph != 0) {
+buffer.append (this.annotations[i].value);
+} else if (this.hasIcons) {
+buffer.append (this.annotations[i].secondaryStructure);
+} else {
+buffer.append (this.annotations[i].displayCharacter);
+}}buffer.append (", ");
+}
+if (this.label.indexOf ("Consensus") == 0) {
+buffer.append ("\n");
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] != null) {
+buffer.append (this.annotations[i].description);
+}buffer.append (", ");
+}
+}return buffer.toString ();
+});
+Clazz_defineMethod (c$, "setThreshold", 
+function (line) {
+this.threshold = line;
+}, "jalview.datamodel.GraphLine");
+Clazz_defineMethod (c$, "getThreshold", 
+function () {
+return this.threshold;
+});
+Clazz_defineMethod (c$, "createSequenceMapping", 
+function (seqRef, startRes, alreadyMapped) {
+if (seqRef == null) {
+return;
+}this.sequenceRef = seqRef;
+if (this.annotations == null) {
+return;
+}this.sequenceMapping =  new java.util.HashMap ();
+var seqPos;
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] != null) {
+if (alreadyMapped) {
+seqPos = seqRef.findPosition (i);
+} else {
+seqPos = i + startRes;
+}this.sequenceMapping.put ( new Integer (seqPos), this.annotations[i]);
+}}
+}, "jalview.datamodel.SequenceI,~N,~B");
+Clazz_defineMethod (c$, "adjustForAlignment", 
+function () {
+if (this.sequenceRef == null) {
+return;
+}if (this.annotations == null) {
+return;
+}var a = 0;
+var aSize = this.sequenceRef.getLength ();
+if (aSize == 0) {
+return;
+}var position;
+var temp =  new Array (aSize);
+var index;
+for (a = this.sequenceRef.getStart (); a <= this.sequenceRef.getEnd (); a++) {
+index =  new Integer (a);
+if (this.sequenceMapping.containsKey (index)) {
+position = this.sequenceRef.findIndex (a) - 1;
+temp[position] = this.sequenceMapping.get (index);
+}}
+this.annotations = temp;
+});
+Clazz_defineMethod (c$, "compactAnnotationArray", 
+function () {
+var i = 0;
+var iSize = this.annotations.length;
+while (i < iSize) {
+if (this.annotations[i] == null) {
+if (i + 1 < iSize) {
+System.arraycopy (this.annotations, i + 1, this.annotations, i, iSize - i - 1);
+}iSize--;
+} else {
+i++;
+}}
+var ann = this.annotations;
+this.annotations =  new Array (i);
+System.arraycopy (ann, 0, this.annotations, 0, i);
+ann = null;
+return iSize;
+});
+Clazz_defineMethod (c$, "setSequenceRef", 
+function (sequenceI) {
+if (sequenceI != null) {
+if (this.sequenceRef != null) {
+var rIsDs = this.sequenceRef.getDatasetSequence () == null;
+var tIsDs = sequenceI.getDatasetSequence () == null;
+if (this.sequenceRef !== sequenceI && (rIsDs && !tIsDs && this.sequenceRef !== sequenceI.getDatasetSequence ()) && (!rIsDs && tIsDs && this.sequenceRef.getDatasetSequence () !== sequenceI) && (!rIsDs && !tIsDs && this.sequenceRef.getDatasetSequence () !== sequenceI.getDatasetSequence ()) && !this.sequenceRef.equals (sequenceI)) {
+this.sequenceRef = null;
+if (this.sequenceMapping != null) {
+this.sequenceMapping = null;
+}this.createSequenceMapping (sequenceI, 1, true);
+this.adjustForAlignment ();
+} else {
+this.sequenceRef = sequenceI;
+}} else {
+this.createSequenceMapping (sequenceI, 1, true);
+this.adjustForAlignment ();
+}} else {
+this.sequenceMapping = null;
+this.sequenceRef = null;
+}}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "getScore", 
+function () {
+return this.score;
+});
+Clazz_defineMethod (c$, "setScore", 
+function (score) {
+this.$hasScore = true;
+this.score = score;
+}, "~N");
+Clazz_defineMethod (c$, "hasScore", 
+function () {
+return this.$hasScore || !Double.isNaN (this.score);
+});
+Clazz_makeConstructor (c$, 
+function (label, description, score) {
+this.construct (label, description, null);
+this.setScore (score);
+}, "~S,~S,~N");
+Clazz_makeConstructor (c$, 
+function (alignmentAnnotation, colSel) {
+this.construct (alignmentAnnotation);
+if (this.annotations == null) {
+return;
+}colSel.makeVisibleAnnotation (this);
+}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.ColumnSelection");
+Clazz_defineMethod (c$, "setPadGaps", 
+function (padgaps, gapchar) {
+this.padGaps = padgaps;
+if (padgaps) {
+this.hasText = true;
+for (var i = 0; i < this.annotations.length; i++) {
+if (this.annotations[i] == null) {
+this.annotations[i] =  new jalview.datamodel.Annotation (String.valueOf (gapchar), null, ' ', 0, null);
+} else if (this.annotations[i].displayCharacter == null || this.annotations[i].displayCharacter.equals (" ")) {
+this.annotations[i].displayCharacter = String.valueOf (gapchar);
+}}
+}}, "~B,~S");
+Clazz_defineMethod (c$, "getDescription", 
+function (seqname) {
+if (seqname && this.sequenceRef != null) {
+var i = this.description.toLowerCase ().indexOf ("<html>");
+if (i > -1) {
+return "<html>" + this.sequenceRef.getName () + " : " + this.description.substring (i + 6);
+}return this.sequenceRef.getName () + " : " + this.description;
+}return this.description;
+}, "~B");
+Clazz_defineMethod (c$, "isValidStruc", 
+function () {
+return this.invalidrnastruc == -1;
+});
+Clazz_defineMethod (c$, "getInvalidStrucPos", 
+function () {
+return this.invalidrnastruc;
+});
+Clazz_defineMethod (c$, "getCalcId", 
+function () {
+return this.calcId;
+});
+Clazz_defineMethod (c$, "setCalcId", 
+function (calcId) {
+this.calcId = calcId;
+}, "~S");
+Clazz_defineMethod (c$, "isRNA", 
+function () {
+return this.isrna;
+});
+Clazz_defineMethod (c$, "liftOver", 
+function (sq, sp2sq) {
+if (sp2sq.getMappedWidth () != sp2sq.getWidth ()) {
+throw  new Error ("liftOver currently not implemented for transfer of annotation between different types of seqeunce");
+}var mapIsTo = (sp2sq != null) ? (sp2sq.getTo () === sq || sp2sq.getTo () === sq.getDatasetSequence ()) : false;
+var mapForsq =  new java.util.HashMap ();
+if (this.sequenceMapping != null) {
+if (sp2sq != null) {
+for (var ie, $ie = this.sequenceMapping.entrySet ().iterator (); $ie.hasNext () && ((ie = $ie.next ()) || true);) {
+var mpos = Integer.$valueOf (mapIsTo ? sp2sq.getMappedPosition ((ie.getKey ()).intValue ()) : sp2sq.getPosition ((ie.getKey ()).intValue ()));
+if ((mpos).intValue () >= sq.getStart () && (mpos).intValue () <= sq.getEnd ()) {
+mapForsq.put (mpos, ie.getValue ());
+}}
+this.sequenceMapping = mapForsq;
+this.sequenceRef = sq;
+this.adjustForAlignment ();
+} else {
+}}}, "jalview.datamodel.SequenceI,jalview.datamodel.Mapping");
+Clazz_defineMethod (c$, "remap", 
+function (newref, mapping, from, to, idxoffset) {
+if (mapping != null) {
+var old = this.sequenceMapping;
+var remap =  new java.util.HashMap ();
+var index = -1;
+for (var mp, $mp = 0, $$mp = mapping; $mp < $$mp.length && ((mp = $$mp[$mp]) || true); $mp++) {
+if (index++ < 0) {
+continue;
+}var ann = null;
+if (from == -1) {
+ann = this.sequenceMapping.get (Integer.$valueOf (idxoffset + index));
+} else {
+if (mp != null && mp.length > from) {
+ann = this.sequenceMapping.get (Integer.$valueOf (mp[from]));
+}}if (ann != null) {
+if (to == -1) {
+remap.put (Integer.$valueOf (idxoffset + index), ann);
+} else {
+if (to > -1 && to < mp.length) {
+remap.put (Integer.$valueOf (mp[to]), ann);
+}}}}
+this.sequenceMapping = remap;
+old.clear ();
+if (newref != null) {
+this.sequenceRef = newref;
+}this.adjustForAlignment ();
+}}, "jalview.datamodel.SequenceI,~A,~N,~N,~N");
+Clazz_defineMethod (c$, "getProperty", 
+function (property) {
+if (this.properties == null) {
+return null;
+}return this.properties.get (property);
+}, "~S");
+Clazz_defineMethod (c$, "setProperty", 
+function (property, value) {
+if (this.properties == null) {
+this.properties =  new java.util.HashMap ();
+}this.properties.put (property, value);
+}, "~S,~S");
+Clazz_defineMethod (c$, "hasProperties", 
+function () {
+return this.properties != null && this.properties.size () > 0;
+});
+Clazz_defineMethod (c$, "getProperties", 
+function () {
+if (this.properties == null) {
+return java.util.Collections.emptyList ();
+}return this.properties.keySet ();
+});
+Clazz_defineMethod (c$, "getAnnotationForPosition", 
+function (position) {
+return this.sequenceMapping == null ? null : this.sequenceMapping.get (new Integer (position));
+}, "~N");
+Clazz_defineMethod (c$, "setAnnotationId", 
+function () {
+this.annotationId = "ann" + Long.toString (jalview.datamodel.AlignmentAnnotation.nextId ());
+});
+c$.nextId = Clazz_defineMethod (c$, "nextId", 
+function () {
+return jalview.datamodel.AlignmentAnnotation.counter++;
+});
+c$.$AlignmentAnnotation$AnnotCharSequence$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.offset = 0;
+this.max = 0;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel.AlignmentAnnotation, "AnnotCharSequence", null, CharSequence);
+Clazz_makeConstructor (c$, 
+function () {
+this.construct (0, this.b$["jalview.datamodel.AlignmentAnnotation"].annotations.length);
+});
+Clazz_makeConstructor (c$, 
+function (a, b) {
+this.offset = a;
+this.max = b;
+}, "~N,~N");
+Clazz_overrideMethod (c$, "subSequence", 
+function (a, b) {
+return Clazz_innerTypeInstance (jalview.datamodel.AlignmentAnnotation.AnnotCharSequence, this, null, this.offset + a, this.offset + b);
+}, "~N,~N");
+Clazz_overrideMethod (c$, "length", 
+function () {
+return this.max - this.offset;
+});
+Clazz_overrideMethod (c$, "charAt", 
+function (a) {
+return ((a + this.offset < 0) || (a + this.offset) >= this.max || this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset] == null || (this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].secondaryStructure <= ' ') ? ' ' : this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].displayCharacter == null || this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].displayCharacter.length == 0 ? this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].secondaryStructure : this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a + this.offset].displayCharacter.charAt (0));
+}, "~N");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+var a =  Clazz_newCharArray (this.max - this.offset, '\0');
+var b = this.b$["jalview.datamodel.AlignmentAnnotation"].annotations.length;
+for (var c = this.offset; c < b; c++) {
+a[c] = (this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c] == null || ((this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].secondaryStructure).charCodeAt (0) <= 32)) ? ' ' : (this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].displayCharacter == null || this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].displayCharacter.length == 0 ? this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].secondaryStructure : this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].displayCharacter.charAt (0));
+}
+return  String.instantialize (a);
+});
+c$ = Clazz_p0p ();
+};
+Clazz_defineStatics (c$,
+"ANNOTATION_ID_PREFIX", "ann",
+"SEQUENCE_PROFILE", 0,
+"STRUCTURE_PROFILE", 1,
+"CDNA_PROFILE", 2,
+"counter", 0,
+"NO_GRAPH", 0,
+"BAR_GRAPH", 1,
+"LINE_GRAPH", 2);
+});
+Clazz_declarePackage ("jalview.analysis");
+Clazz_load (["java.util.Arrays", "$.HashSet", "$.Hashtable"], "jalview.analysis.Rna", ["jalview.analysis.SecStrConsensus", "$.WUSSParseException", "jalview.datamodel.SequenceFeature", "jalview.util.MessageManager", "java.lang.StringBuffer", "java.util.ArrayList", "$.Stack", "$.Vector"], function () {
+c$ = Clazz_declareType (jalview.analysis, "Rna");
+c$.isOpeningParenthesis = Clazz_defineMethod (c$, "isOpeningParenthesis", 
+ function (c) {
+return jalview.analysis.Rna.openingParsSet.contains (new Character (c).charCodeAt (0));
+}, "~S");
+c$.isClosingParenthesis = Clazz_defineMethod (c$, "isClosingParenthesis", 
+ function (c) {
+return jalview.analysis.Rna.closingParsSet.contains (new Character (c).charCodeAt (0));
+}, "~S");
+c$.matchingOpeningParenthesis = Clazz_defineMethod (c$, "matchingOpeningParenthesis", 
+ function (closingParenthesis) {
+if (!jalview.analysis.Rna.isClosingParenthesis (closingParenthesis)) {
+throw  new jalview.analysis.WUSSParseException (jalview.util.MessageManager.formatMessage ("exception.querying_matching_opening_parenthesis_for_non_closing_parenthesis",  Clazz_newArray (-1, [ new StringBuffer (closingParenthesis.charCodeAt (0)).toString ()])), -1);
+}return String.fromCharCode (jalview.analysis.Rna.closingToOpening.get (new Character (closingParenthesis).charCodeAt (0)));
+}, "~S");
+c$.GetSimpleBPs = Clazz_defineMethod (c$, "GetSimpleBPs", 
+function (line) {
+var stacks =  new java.util.Hashtable ();
+var pairs =  new java.util.Vector ();
+var i = 0;
+while (i < line.length) {
+var base = line.charAt (i);
+if (jalview.analysis.Rna.isOpeningParenthesis (base)) {
+if (!stacks.containsKey (new Character (base).charCodeAt (0))) {
+stacks.put (new Character (base).charCodeAt (0),  new java.util.Stack ());
+}stacks.get (new Character (base).charCodeAt (0)).push (new Integer (i));
+} else if (jalview.analysis.Rna.isClosingParenthesis (base)) {
+var opening = jalview.analysis.Rna.matchingOpeningParenthesis (base);
+if (!stacks.containsKey (new Character (opening).charCodeAt (0))) {
+throw  new jalview.analysis.WUSSParseException (jalview.util.MessageManager.formatMessage ("exception.mismatched_unseen_closing_char",  Clazz_newArray (-1, [ new StringBuffer (base.charCodeAt (0)).toString ()])), i);
+}var stack = stacks.get (new Character (opening).charCodeAt (0));
+if (stack.isEmpty ()) {
+throw  new jalview.analysis.WUSSParseException (jalview.util.MessageManager.formatMessage ("exception.mismatched_closing_char",  Clazz_newArray (-1, [ new StringBuffer (base.charCodeAt (0)).toString ()])), i);
+}var temp = (stack.pop ()).intValue ();
+pairs.add ( new jalview.analysis.SecStrConsensus.SimpleBP (temp, i));
+}i++;
+}
+for (var opening, $opening = stacks.keySet ().iterator (); $opening.hasNext () && ((opening = $opening.next ()) || true);) {
+var stack = stacks.get (new Character (opening).charCodeAt (0));
+if (!stack.empty ()) {
+throw  new jalview.analysis.WUSSParseException (jalview.util.MessageManager.formatMessage ("exception.mismatched_opening_char",  Clazz_newArray (-1, [ new StringBuffer (opening.charCodeAt (0)).toString (), Integer.$valueOf ((stack.pop ()).intValue ()).toString ()])), i);
+}}
+return pairs;
+}, "CharSequence");
+c$.GetBasePairs = Clazz_defineMethod (c$, "GetBasePairs", 
+function (line) {
+var bps = jalview.analysis.Rna.GetSimpleBPs (line);
+var outPairs =  new Array (bps.size ());
+for (var p = 0; p < bps.size (); p++) {
+var bp = bps.elementAt (p);
+outPairs[p] =  new jalview.datamodel.SequenceFeature ("RNA helix", "", "", bp.getBP5 (), bp.getBP3 (), "");
+}
+return outPairs;
+}, "CharSequence");
+c$.GetModeleBP = Clazz_defineMethod (c$, "GetModeleBP", 
+function (line) {
+var bps = jalview.analysis.Rna.GetSimpleBPs (line);
+return  new java.util.ArrayList (bps);
+}, "CharSequence");
+c$.HelixMap = Clazz_defineMethod (c$, "HelixMap", 
+function (pairs) {
+var helix = 0;
+var lastopen = 0;
+var lastclose = 9999999;
+var i = pairs.length;
+var open;
+var close;
+var j;
+var helices =  new java.util.Hashtable ();
+for (i = 0; i < pairs.length; i++) {
+open = pairs[i].getBegin ();
+close = pairs[i].getEnd ();
+if (open > lastclose) {
+helix++;
+}j = pairs.length - 1;
+while (j >= 0) {
+var popen = pairs[j].getBegin ();
+if ((popen < lastopen) && (popen > open)) {
+if (helices.containsValue (new Integer (popen)) && (((helices.get (new Integer (popen)))).intValue () === helix)) {
+continue;
+} else {
+helix++;
+break;
+}}j -= 1;
+}
+helices.put (new Integer (open), new Integer (helix));
+helices.put (new Integer (close), new Integer (helix));
+pairs[i].setFeatureGroup (Integer.toString (helix));
+lastopen = open;
+lastclose = close;
+}
+}, "~A");
+c$.pairHash = c$.prototype.pairHash =  new java.util.Hashtable ();
+Clazz_defineStatics (c$,
+"openingPars",  Clazz_newArray (-1, [new Character ('('), new Character ('['), new Character ('{'), new Character ('<'), new Character ('A'), new Character ('B'), new Character ('C'), new Character ('D'), new Character ('E'), new Character ('F'), new Character ('G'), new Character ('H'), new Character ('I'), new Character ('J'), new Character ('K'), new Character ('L'), new Character ('M'), new Character ('N'), new Character ('O'), new Character ('P'), new Character ('Q'), new Character ('R'), new Character ('S'), new Character ('T'), new Character ('U'), new Character ('V'), new Character ('W'), new Character ('X'), new Character ('Y'), new Character ('Z')]),
+"closingPars",  Clazz_newArray (-1, [new Character (')'), new Character (']'), new Character ('}'), new Character ('>'), new Character ('a'), new Character ('b'), new Character ('c'), new Character ('d'), new Character ('e'), new Character ('f'), new Character ('g'), new Character ('h'), new Character ('i'), new Character ('j'), new Character ('k'), new Character ('l'), new Character ('m'), new Character ('n'), new Character ('o'), new Character ('p'), new Character ('q'), new Character ('r'), new Character ('s'), new Character ('t'), new Character ('u'), new Character ('v'), new Character ('w'), new Character ('x'), new Character ('y'), new Character ('z')]));
+c$.openingParsSet = c$.prototype.openingParsSet =  new java.util.HashSet (java.util.Arrays.asList (jalview.analysis.Rna.openingPars));
+c$.closingParsSet = c$.prototype.closingParsSet =  new java.util.HashSet (java.util.Arrays.asList (jalview.analysis.Rna.closingPars));
+c$.closingToOpening = c$.prototype.closingToOpening =  new java.util.Hashtable ();
+{
+for (var i = 0; i < jalview.analysis.Rna.openingPars.length; i++) {
+jalview.analysis.Rna.closingToOpening.put (jalview.analysis.Rna.closingPars[i], jalview.analysis.Rna.openingPars[i]);
+}
+}});
+Clazz_declarePackage ("jalview.analysis");
+Clazz_load (null, "jalview.analysis.SecStrConsensus", ["java.util.ArrayList", "$.Hashtable"], function () {
+c$ = Clazz_declareType (jalview.analysis, "SecStrConsensus");
+c$.extractConsensus = Clazz_defineMethod (c$, "extractConsensus", 
+function (bps) {
+var maxlength = 0;
+for (var strs, $strs = bps.iterator (); $strs.hasNext () && ((strs = $strs.next ()) || true);) {
+for (var bp, $bp = strs.iterator (); $bp.hasNext () && ((bp = $bp.next ()) || true);) {
+maxlength = Math.max (1 + Math.max (bp.bp5, bp.bp3), maxlength);
+}
+}
+var seq =  new java.util.ArrayList ();
+for (var i = 0; i < maxlength; i++) {
+seq.add ( new java.util.Hashtable ());
+}
+for (var strs, $strs = bps.iterator (); $strs.hasNext () && ((strs = $strs.next ()) || true);) {
+for (var bp, $bp = strs.iterator (); $bp.hasNext () && ((bp = $bp.next ()) || true);) {
+var i = bp.bp5;
+var j = bp.bp3;
+var h = seq.get (i);
+if (!h.containsKey (new Integer (j))) {
+h.put (new Integer (j), new Double (0.0));
+}h.put (new Integer (j), new Double ((h.get (new Integer (j))).doubleValue () + 1.));
+}
+}
+var mat = jalview.analysis.SecStrConsensus.fillMatrix (seq);
+var res = jalview.analysis.SecStrConsensus.backtrack (mat, seq);
+var finalres =  Clazz_newIntArray (seq.size (), 0);
+for (var i = 0; i < seq.size (); i++) {
+finalres[i] = -1;
+}
+for (var bp, $bp = res.iterator (); $bp.hasNext () && ((bp = $bp.next ()) || true);) {
+finalres[bp.bp5] = bp.bp3;
+finalres[bp.bp3] = bp.bp5;
+}
+return finalres;
+}, "java.util.ArrayList");
+c$.canBasePair = Clazz_defineMethod (c$, "canBasePair", 
+ function (seq, i, k) {
+return seq.get (i).containsKey (new Integer (k));
+}, "java.util.ArrayList,~N,~N");
+c$.basePairScore = Clazz_defineMethod (c$, "basePairScore", 
+ function (seq, i, k) {
+return seq.get (i).get (new Integer (k));
+}, "java.util.ArrayList,~N,~N");
+c$.fillMatrix = Clazz_defineMethod (c$, "fillMatrix", 
+ function (seq) {
+var n = seq.size ();
+var tab =  Clazz_newDoubleArray (n, n, 0);
+for (var m = 1; m <= n; m++) {
+for (var i = 0; i < n - m + 1; i++) {
+var j = i + m - 1;
+tab[i][j] = 0;
+if (i < j) {
+tab[i][j] = Math.max (tab[i][j], tab[i + 1][j]);
+for (var k = i + 1; k <= j; k++) {
+if (jalview.analysis.SecStrConsensus.canBasePair (seq, i, k)) {
+var fact1 = 0;
+if (k > i + 1) {
+fact1 = tab[i + 1][k - 1];
+}var fact2 = 0;
+if (k < j) {
+fact2 = tab[k + 1][j];
+}tab[i][j] = Math.max (tab[i][j], jalview.analysis.SecStrConsensus.basePairScore (seq, i, k) + fact1 + fact2);
+}}
+}}
+}
+return tab;
+}, "java.util.ArrayList");
+c$.backtrack = Clazz_defineMethod (c$, "backtrack", 
+ function (tab, seq) {
+return jalview.analysis.SecStrConsensus.backtrack (tab, seq, 0, seq.size () - 1);
+}, "~A,java.util.ArrayList");
+c$.backtrack = Clazz_defineMethod (c$, "backtrack", 
+ function (tab, seq, i, j) {
+var result =  new java.util.ArrayList ();
+if (i < j) {
+var indices =  new java.util.ArrayList ();
+indices.add (new Integer (-1));
+for (var k = i + 1; k <= j; k++) {
+indices.add (new Integer (k));
+}
+for (var k, $k = indices.iterator (); $k.hasNext () && ((k = $k.next ()) || true);) {
+if (k == -1) {
+if (tab[i][j] == tab[i + 1][j]) {
+result = jalview.analysis.SecStrConsensus.backtrack (tab, seq, i + 1, j);
+}} else {
+if (jalview.analysis.SecStrConsensus.canBasePair (seq, i, k)) {
+var fact1 = 0;
+if (k > i + 1) {
+fact1 = tab[i + 1][k - 1];
+}var fact2 = 0;
+if (k < j) {
+fact2 = tab[k + 1][j];
+}if (tab[i][j] == jalview.analysis.SecStrConsensus.basePairScore (seq, i, k) + fact1 + fact2) {
+result = jalview.analysis.SecStrConsensus.backtrack (tab, seq, i + 1, k - 1);
+result.addAll (jalview.analysis.SecStrConsensus.backtrack (tab, seq, k + 1, j));
+result.add ( new jalview.analysis.SecStrConsensus.SimpleBP (i, k));
+}}}}
+} else if (i == j) {
+} else {
+}return result;
+}, "~A,java.util.ArrayList,~N,~N");
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+this.bp5 = 0;
+this.bp3 = 0;
+Clazz_instantialize (this, arguments);
+}, jalview.analysis.SecStrConsensus, "SimpleBP");
+Clazz_makeConstructor (c$, 
+function () {
+});
+Clazz_makeConstructor (c$, 
+function (a, b) {
+this.bp5 = a;
+this.bp3 = b;
+}, "~N,~N");
+Clazz_defineMethod (c$, "setBP5", 
+function (a) {
+this.bp5 = a;
+}, "~N");
+Clazz_defineMethod (c$, "setBP3", 
+function (a) {
+this.bp3 = a;
+}, "~N");
+Clazz_defineMethod (c$, "getBP5", 
+function () {
+return this.bp5;
+});
+Clazz_defineMethod (c$, "getBP3", 
+function () {
+return this.bp3;
+});
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return "(" + this.bp5 + "," + this.bp3 + ")";
+});
+c$ = Clazz_p0p ();
+});
+Clazz_declarePackage ("jalview.analysis");
+Clazz_load (["java.lang.Exception"], "jalview.analysis.WUSSParseException", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.problemPos = 0;
+Clazz_instantialize (this, arguments);
+}, jalview.analysis, "WUSSParseException", Exception);
+Clazz_makeConstructor (c$, 
+function (problemPos) {
+this.construct ("Invalid WUSS Notation", problemPos);
+}, "~N");
+Clazz_makeConstructor (c$, 
+function (message, problemPos) {
+Clazz_superConstructor (this, jalview.analysis.WUSSParseException, [message + " at or near position " + problemPos]);
+this.problemPos = problemPos;
+}, "~S,~N");
+Clazz_defineMethod (c$, "getProblemPos", 
+function () {
+return this.problemPos;
+});
+});
+Clazz_load(["java.util.Vector"],"java.util.Stack",["java.util.EmptyStackException"],function(){
+c$=Clazz_declareType(java.util,"Stack",java.util.Vector);
+Clazz_defineMethod(c$,"empty",
+function(){
+return this.elementCount==0;
+});
+Clazz_defineMethod(c$,"peek",
+function(){
+try{
+return this.elementData[this.elementCount-1];
+}catch(e){
+if(Clazz_instanceOf(e,IndexOutOfBoundsException)){
+throw new java.util.EmptyStackException();
+}else{
+throw e;
+}
+}
+});
+Clazz_defineMethod(c$,"pop",
+function(){
+try{
+var index=this.elementCount-1;
+var obj=this.elementData[index];
+this.removeElementAt(index);
+return obj;
+}catch(e){
+if(Clazz_instanceOf(e,IndexOutOfBoundsException)){
+throw new java.util.EmptyStackException();
+}else{
+throw e;
+}
+}
+});
+Clazz_defineMethod(c$,"push",
+function(object){
+this.addElement(object);
+return object;
+},"~O");
+Clazz_defineMethod(c$,"search",
+function(o){
+var index=this.lastIndexOf(o);
+if(index>=0)return(this.elementCount-index);
+return-1;
+},"~O");
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (null, "jalview.datamodel.Annotation", ["java.lang.Float", "$.StringBuffer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.displayCharacter = "";
+this.description = "";
+this.secondaryStructure = ' ';
+this.value = 0;
+this.colour = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "Annotation");
+Clazz_makeConstructor (c$, 
+function (displayChar, desc, ss, val) {
+this.displayCharacter = displayChar;
+this.description = desc;
+this.secondaryStructure = ss;
+this.value = val;
+}, "~S,~S,~S,~N");
+Clazz_makeConstructor (c$, 
+function (displayChar, desc, ss, val, colour) {
+this.construct (displayChar, desc, ss, val);
+this.colour = colour;
+}, "~S,~S,~S,~N,java.awt.Color");
+Clazz_makeConstructor (c$, 
+function (that) {
+if (that == null || this === that) {
+return;
+}if (that.displayCharacter != null) this.displayCharacter =  String.instantialize (that.displayCharacter);
+if (that.description != null) this.description =  String.instantialize (that.description);
+this.secondaryStructure = that.secondaryStructure;
+this.value = that.value;
+this.colour = that.colour;
+}, "jalview.datamodel.Annotation");
+Clazz_makeConstructor (c$, 
+function (val) {
+this.construct (null, null, ' ', val, null);
+}, "~N");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+var sb =  new StringBuffer ();
+if (this.displayCharacter != null) {
+sb.append ("\'");
+sb.append (this.displayCharacter);
+sb.append ("\'");
+}{
+sb.append (",");
+}if (this.secondaryStructure.charCodeAt (0) != 0 && !("" + this.displayCharacter).equals ("" + this.secondaryStructure)) {
+sb.append ("\'");
+sb.append (this.secondaryStructure);
+sb.append ("\'");
+}{
+sb.append (",");
+}if (this.description != null && this.description.length > 0) {
+sb.append ("\"");
+sb.append (this.description);
+sb.append ("\"");
+}{
+sb.append (",");
+}if (!Float.isNaN (this.value)) {
+sb.append (this.value);
+}if (this.colour != null) {
+if (sb.length () > 0) {
+sb.append (",");
+}sb.append ("[");
+sb.append ("" + this.colour.getRed ());
+sb.append (",");
+sb.append ("" + this.colour.getGreen ());
+sb.append (",");
+sb.append ("" + this.colour.getBlue ());
+sb.append ("]");
+}return sb.toString ();
+});
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["java.awt.Color"], "jalview.datamodel.GraphLine", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.value = 0;
+this.label = "";
+this.colour = null;
+this.displayed = true;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "GraphLine");
+Clazz_prepareFields (c$, function () {
+this.colour = java.awt.Color.black;
+});
+Clazz_makeConstructor (c$, 
+function (value, label, col) {
+this.value = value;
+if (label != null) {
+this.label = label;
+}if (col != null) {
+this.colour = col;
+}}, "~N,~S,java.awt.Color");
+Clazz_makeConstructor (c$, 
+function (from) {
+if (from != null) {
+this.value = from.value;
+this.label =  String.instantialize (from.label);
+this.colour = from.colour;
+this.displayed = from.displayed;
+}}, "jalview.datamodel.GraphLine");
+Clazz_overrideMethod (c$, "equals", 
+function (obj) {
+if (obj != null && Clazz_instanceOf (obj, jalview.datamodel.GraphLine)) {
+var other = obj;
+return this.displayed == other.displayed && this.value == other.value && (this.colour != null ? (other.colour != null && other.colour.equals (this.colour)) : other.colour == null) && (this.label != null ? (other.label != null && other.label.equals (this.label)) : other.label == null);
+}return false;
+}, "~O");
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (null, "jalview.datamodel.DBRefEntry", ["jalview.datamodel.Mapping"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.source = "";
+this.version = "";
+this.accessionId = "";
+this.map = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "DBRefEntry");
+Clazz_makeConstructor (c$, 
+function () {
+});
+Clazz_makeConstructor (c$, 
+function (source, version, accessionId) {
+this.construct (source, version, accessionId, null);
+}, "~S,~S,~S");
+Clazz_makeConstructor (c$, 
+function (source, version, accessionId, map) {
+this.source = source.toUpperCase ();
+this.version = version;
+this.accessionId = accessionId;
+this.map = map;
+}, "~S,~S,~S,jalview.datamodel.Mapping");
+Clazz_makeConstructor (c$, 
+function (entry) {
+this.construct ((entry.source == null ? "" :  String.instantialize (entry.source)), (entry.version == null ? "" :  String.instantialize (entry.version)), (entry.accessionId == null ? "" :  String.instantialize (entry.accessionId)), (entry.map == null ? null :  new jalview.datamodel.Mapping (entry.map)));
+}, "jalview.datamodel.DBRefEntry");
+Clazz_overrideMethod (c$, "equals", 
+function (o) {
+if (o == null || !(Clazz_instanceOf (o, jalview.datamodel.DBRefEntry))) {
+return false;
+}var entry = o;
+if (entry === this) {
+return true;
+}if (this.equalRef (entry) && ((this.map == null && entry.map == null) || (this.map != null && entry.map != null && this.map.equals (entry.map)))) {
+return true;
+}return false;
+}, "~O");
+Clazz_defineMethod (c$, "equalRef", 
+function (entry) {
+if (entry == null) {
+return false;
+}if (entry === this) {
+return true;
+}if ((this.source != null && entry.source != null && this.source.equalsIgnoreCase (entry.source)) && (this.accessionId != null && entry.accessionId != null && this.accessionId.equalsIgnoreCase (entry.accessionId)) && (this.version != null && entry.version != null && this.version.equalsIgnoreCase (entry.version))) {
+return true;
+}return false;
+}, "jalview.datamodel.DBRefEntry");
+Clazz_defineMethod (c$, "getSource", 
+function () {
+return this.source;
+});
+Clazz_defineMethod (c$, "getVersion", 
+function () {
+return this.version;
+});
+Clazz_defineMethod (c$, "getAccessionId", 
+function () {
+return this.accessionId;
+});
+Clazz_defineMethod (c$, "setAccessionId", 
+function (accessionId) {
+this.accessionId = accessionId;
+}, "~S");
+Clazz_defineMethod (c$, "setSource", 
+function (source) {
+this.source = source;
+}, "~S");
+Clazz_defineMethod (c$, "setVersion", 
+function (version) {
+this.version = version;
+}, "~S");
+Clazz_defineMethod (c$, "getMap", 
+function () {
+return this.map;
+});
+Clazz_defineMethod (c$, "setMap", 
+function (map) {
+this.map = map;
+}, "jalview.datamodel.Mapping");
+Clazz_defineMethod (c$, "hasMap", 
+function () {
+return this.map != null;
+});
+Clazz_defineMethod (c$, "getSrcAccString", 
+function () {
+return ((this.source != null) ? this.source : "") + ":" + ((this.accessionId != null) ? this.accessionId : "");
+});
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return this.getSrcAccString ();
+});
+});
+Clazz_declarePackage ("jalview.datamodel");
+c$ = Clazz_declareType (jalview.datamodel, "DBRefSource");
+Clazz_defineStatics (c$,
+"UNIPROT", "UNIPROT");
+c$.UP_NAME = c$.prototype.UP_NAME = "UNIPROT_NAME".toUpperCase ();
+c$.UNIPROTKB = c$.prototype.UNIPROTKB = "UniProtKB/TrEMBL".toUpperCase ();
+c$.EMBLCDSProduct = c$.prototype.EMBLCDSProduct = "EMBLCDSProtein".toUpperCase ();
+Clazz_defineStatics (c$,
+"PDB", "PDB",
+"EMBL", "EMBL",
+"EMBLCDS", "EMBLCDS",
+"PFAM", "PFAM",
+"RFAM", "RFAM");
+c$.GENEDB = c$.prototype.GENEDB = "GeneDB".toUpperCase ();
+c$.DNACODINGDBS = c$.prototype.DNACODINGDBS =  Clazz_newArray (-1, [jalview.datamodel.DBRefSource.EMBL, jalview.datamodel.DBRefSource.EMBLCDS, jalview.datamodel.DBRefSource.GENEDB]);
+c$.CODINGDBS = c$.prototype.CODINGDBS =  Clazz_newArray (-1, [jalview.datamodel.DBRefSource.EMBLCDS, jalview.datamodel.DBRefSource.GENEDB]);
+c$.PROTEINDBS = c$.prototype.PROTEINDBS =  Clazz_newArray (-1, [jalview.datamodel.DBRefSource.UNIPROT, jalview.datamodel.DBRefSource.PDB, jalview.datamodel.DBRefSource.UNIPROTKB, jalview.datamodel.DBRefSource.EMBLCDSProduct]);
+c$.PROTEINSEQ = c$.prototype.PROTEINSEQ =  Clazz_newArray (-1, [jalview.datamodel.DBRefSource.UNIPROT, jalview.datamodel.DBRefSource.UNIPROTKB, jalview.datamodel.DBRefSource.EMBLCDSProduct]);
+c$.PROTEINSTR = c$.prototype.PROTEINSTR =  Clazz_newArray (-1, [jalview.datamodel.DBRefSource.PDB]);
+c$.DOMAINDBS = c$.prototype.DOMAINDBS =  Clazz_newArray (-1, [jalview.datamodel.DBRefSource.PFAM, jalview.datamodel.DBRefSource.RFAM]);
+Clazz_defineStatics (c$,
+"SEQDB", "SQ",
+"DNASEQDB", "NASQ",
+"PROTSEQDB", "PROTSQ",
+"CODINGSEQDB", "CODING",
+"DNACODINGSEQDB", "XONCODING",
+"DOMAINDB", "DOMAIN",
+"MULTIACC", "MULTIACC",
+"ALIGNMENTDB", "ALIGNMENTS");
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["java.lang.Enum"], "jalview.datamodel.PDBEntry", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.file = null;
+this.type = null;
+this.id = null;
+this.chainCode = null;
+this.properties = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "PDBEntry");
+Clazz_overrideMethod (c$, "equals", 
+function (obj) {
+if (obj == null || !(Clazz_instanceOf (obj, jalview.datamodel.PDBEntry))) {
+return false;
+}if (obj === this) {
+return true;
+}var o = obj;
+return (this.type === o.type || (this.type != null && o.type != null && o.type.equals (this.type))) && (this.id === o.id || (this.id != null && o.id != null && o.id.equalsIgnoreCase (this.id))) && (this.chainCode === o.chainCode || (this.chainCode != null && o.chainCode != null && o.chainCode.equalsIgnoreCase (this.chainCode))) && (this.properties === o.properties || (this.properties != null && o.properties != null && this.properties.equals (o.properties)));
+}, "~O");
+Clazz_makeConstructor (c$, 
+function () {
+});
+Clazz_makeConstructor (c$, 
+function (pdbId, chain, type, filePath) {
+this.id = pdbId;
+this.chainCode = chain;
+this.type = type == null ? null : type.toString ();
+this.file = filePath;
+}, "~S,~S,jalview.datamodel.PDBEntry.Type,~S");
+Clazz_makeConstructor (c$, 
+function (entry) {
+this.file = entry.file;
+this.type = entry.type;
+this.id = entry.id;
+this.chainCode = entry.chainCode;
+if (entry.properties != null) {
+this.properties = entry.properties.clone ();
+}}, "jalview.datamodel.PDBEntry");
+Clazz_defineMethod (c$, "setFile", 
+function (file) {
+this.file = file;
+}, "~S");
+Clazz_defineMethod (c$, "getFile", 
+function () {
+return this.file;
+});
+Clazz_defineMethod (c$, "setType", 
+function (t) {
+this.type = t;
+}, "~S");
+Clazz_defineMethod (c$, "setType", 
+function (type) {
+this.type = type == null ? null : type.toString ();
+}, "jalview.datamodel.PDBEntry.Type");
+Clazz_defineMethod (c$, "getType", 
+function () {
+return this.type;
+});
+Clazz_defineMethod (c$, "setId", 
+function (id) {
+this.id = id;
+}, "~S");
+Clazz_defineMethod (c$, "getId", 
+function () {
+return this.id;
+});
+Clazz_defineMethod (c$, "setProperty", 
+function (property) {
+this.properties = property;
+}, "java.util.Hashtable");
+Clazz_defineMethod (c$, "getProperty", 
+function () {
+return this.properties;
+});
+Clazz_defineMethod (c$, "getChainCode", 
+function () {
+return this.chainCode;
+});
+Clazz_defineMethod (c$, "setChainCode", 
+function (chainCode) {
+this.chainCode = chainCode;
+}, "~S");
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (jalview.datamodel.PDBEntry, "Type", Enum);
+Clazz_defineEnumConstant (c$, "PDB", 0, []);
+Clazz_defineEnumConstant (c$, "FILE", 1, []);
+c$ = Clazz_p0p ();
+});
+Clazz_declarePackage ("jalview.util");
+Clazz_load (["java.util.regex.Pattern"], "jalview.util.StringUtils", ["java.lang.StringBuffer", "java.util.ArrayList"], function () {
+c$ = Clazz_declareType (jalview.util, "StringUtils");
+c$.insertCharAt = Clazz_defineMethod (c$, "insertCharAt", 
+function ($in, position, count, ch) {
+var tmp =  Clazz_newCharArray ($in.length + count, '\0');
+if (position >= $in.length) {
+System.arraycopy ($in, 0, tmp, 0, $in.length);
+position = $in.length;
+} else {
+System.arraycopy ($in, 0, tmp, 0, position);
+}var index = position;
+while (count > 0) {
+tmp[index++] = ch;
+count--;
+}
+if (position < $in.length) {
+System.arraycopy ($in, position, tmp, index, $in.length - position);
+}return tmp;
+}, "~A,~N,~N,~S");
+c$.deleteChars = Clazz_defineMethod (c$, "deleteChars", 
+function ($in, from, to) {
+if (from >= $in.length || from < 0) {
+return $in;
+}var tmp;
+if (to >= $in.length) {
+tmp =  Clazz_newCharArray (from, '\0');
+System.arraycopy ($in, 0, tmp, 0, from);
+to = $in.length;
+} else {
+tmp =  Clazz_newCharArray ($in.length - to + from, '\0');
+System.arraycopy ($in, 0, tmp, 0, from);
+System.arraycopy ($in, to, tmp, from, $in.length - to);
+}return tmp;
+}, "~A,~N,~N");
+c$.getLastToken = Clazz_defineMethod (c$, "getLastToken", 
+function (input, token) {
+if (input == null) {
+return null;
+}if (token == null) {
+return input;
+}var st = input.$plit (token);
+return st[st.length - 1];
+}, "~S,~S");
+c$.separatorListToArray = Clazz_defineMethod (c$, "separatorListToArray", 
+function (input, delimiter) {
+var seplen = delimiter.length;
+if (input == null || input.equals ("") || input.equals (delimiter)) {
+return null;
+}var jv =  new java.util.ArrayList ();
+var cp = 0;
+var pos;
+var escape;
+var wasescaped = false;
+var wasquoted = false;
+var lstitem = null;
+while ((pos = input.indexOf (delimiter, cp)) >= cp) {
+escape = (pos > 0 && input.charAt (pos - 1) == '\\') ? -1 : 0;
+if (wasescaped || wasquoted) {
+jv.set (jv.size () - 1, lstitem = lstitem + delimiter + input.substring (cp, pos + escape));
+} else {
+jv.add (lstitem = input.substring (cp, pos + escape));
+}cp = pos + seplen;
+wasescaped = escape == -1;
+wasquoted = jalview.util.StringUtils.DELIMITERS_PATTERN.matcher (lstitem).matches ();
+}
+if (cp < input.length) {
+var c = input.substring (cp);
+if (wasescaped || wasquoted) {
+jv.set (jv.size () - 1, lstitem + delimiter + c);
+} else {
+if (!c.equals (delimiter)) {
+jv.add (c);
+}}}if (jv.size () > 0) {
+var v = jv.toArray ( new Array (jv.size ()));
+jv.clear ();
+if (false) {
+System.err.println ("Array from '" + delimiter + "' separated List:\n" + v.length);
+for (var i = 0; i < v.length; i++) {
+System.err.println ("item " + i + " '" + v[i] + "'");
+}
+}return v;
+}if (false) {
+System.err.println ("Empty Array from '" + delimiter + "' separated List");
+}return null;
+}, "~S,~S");
+c$.arrayToSeparatorList = Clazz_defineMethod (c$, "arrayToSeparatorList", 
+function (list, separator) {
+var v =  new StringBuffer ();
+if (list != null && list.length > 0) {
+for (var i = 0, iSize = list.length; i < iSize; i++) {
+if (list[i] != null) {
+if (v.length () > 0) {
+v.append (separator);
+}v.append (list[i]);
+}}
+if (false) {
+System.err.println ("Returning '" + separator + "' separated List:\n");
+System.err.println (v);
+}return v.toString ();
+}if (false) {
+System.err.println ("Returning empty '" + separator + "' separated List\n");
+}return "" + separator;
+}, "~A,~S");
+c$.DELIMITERS_PATTERN = c$.prototype.DELIMITERS_PATTERN = java.util.regex.Pattern.compile (".*='[^']*(?!')");
+Clazz_defineStatics (c$,
+"DEBUG", false);
+});
+Clazz_declarePackage("java.util.regex");
+Clazz_load(null,"java.util.regex.Pattern",["java.lang.IllegalArgumentException","$.StringBuffer","java.util.regex.Matcher"],function(){
+c$=Clazz_decorateAsClass(function(){
+this.$flags=0;
+this.regexp=null;
+Clazz_instantialize(this,arguments);
+},java.util.regex,"Pattern",null,java.io.Serializable);
+Clazz_defineMethod(c$,"matcher",
+function(cs){
+return new java.util.regex.Matcher(this,cs);
+},"CharSequence");
+Clazz_defineMethod(c$,"split",
+function(input,limit){
+var res=new Array(0);
+var mat=this.matcher(input);
+var index=0;
+var curPos=0;
+if(input.length()==0){
+return[""];
+}else{
+while(mat.find()&&(index+1<limit||limit<=0)){
+res[res.length]=input.subSequence(curPos,mat.start()).toString();
+curPos=mat.end();
+index++;
+}
+res[res.length]=input.subSequence(curPos,input.length()).toString();
+index++;
+if(limit==0){
+while(--index>=0&&res[index].toString().length==0){
+res.length--;
+}
+}}return res;
+},"CharSequence,~N");
+Clazz_defineMethod(c$,"split",
+function(input){
+return this.split(input,0);
+},"CharSequence");
+Clazz_defineMethod(c$,"pattern",
+function(){
+{
+return this.regexp.source;
+}return null;
+});
+Clazz_defineMethod(c$,"toString",
+function(){
+return this.pattern();
+});
+Clazz_defineMethod(c$,"flags",
+function(){
+return this.$flags;
+});
+c$.compile=Clazz_defineMethod(c$,"compile",
+function(regex,flags){
+if((flags!=0)&&((flags|239)!=239)){
+throw new IllegalArgumentException("Illegal flags");
+}var flagStr="g";
+if((flags&8)!=0){
+flagStr+="m";
+}if((flags&2)!=0){
+flagStr+="i";
+}var pattern=new java.util.regex.Pattern();
+{
+pattern.regexp=new RegExp(regex,flagStr);
+}return pattern;
+},"~S,~N");
+c$.compile=Clazz_defineMethod(c$,"compile",
+function(pattern){
+return java.util.regex.Pattern.compile(pattern,0);
+},"~S");
+c$.matches=Clazz_defineMethod(c$,"matches",
+function(regex,input){
+return java.util.regex.Pattern.compile(regex).matcher(input).matches();
+},"~S,CharSequence");
+c$.quote=Clazz_defineMethod(c$,"quote",
+function(s){
+var sb=new StringBuffer().append("\\Q");
+var apos=0;
+var k;
+while((k=s.indexOf("\\E",apos))>=0){
+sb.append(s.substring(apos,k+2)).append("\\\\E\\Q");
+apos=k+2;
+}
+return sb.append(s.substring(apos)).append("\\E").toString();
+},"~S");
+Clazz_makeConstructor(c$,
+($fz=function(){
+},$fz.isPrivate=true,$fz));
+Clazz_defineStatics(c$,
+"UNIX_LINES",1,
+"CASE_INSENSITIVE",2,
+"COMMENTS",4,
+"MULTILINE",8,
+"LITERAL",16,
+"DOTALL",32,
+"UNICODE_CASE",64,
+"CANON_EQ",128,
+"flagsBitMask",239);
+});
+Clazz_declarePackage("java.util.regex");
+Clazz_load(["java.util.regex.MatchResult"],"java.util.regex.Matcher",["java.lang.IllegalArgumentException","$.IndexOutOfBoundsException","$.NullPointerException","$.StringBuffer"],function(){
+c$=Clazz_decorateAsClass(function(){
+this.pat=null;
+this.string=null;
+this.leftBound=-1;
+this.rightBound=-1;
+this.appendPos=0;
+this.replacement=null;
+this.processedRepl=null;
+this.replacementParts=null;
+this.results=null;
+Clazz_instantialize(this,arguments);
+},java.util.regex,"Matcher",null,java.util.regex.MatchResult);
+Clazz_defineMethod(c$,"appendReplacement",
+function(sb,replacement){
+this.processedRepl=this.processReplacement(replacement);
+sb.append(this.string.subSequence(this.appendPos,this.start()));
+sb.append(this.processedRepl);
+this.appendPos=this.end();
+return this;
+},"StringBuffer,~S");
+Clazz_defineMethod(c$,"processReplacement",
+($fz=function(replacement){
+if(this.replacement!=null&&this.replacement.equals(replacement)){
+if(this.replacementParts==null){
+return this.processedRepl;
+}else{
+var sb=new StringBuffer();
+for(var i=0;i<this.replacementParts.length;i++){
+sb.append(this.replacementParts[i]);
+}
+return sb.toString();
+}}else{
+this.replacement=replacement;
+var repl=replacement.toCharArray();
+var res=new StringBuffer();
+this.replacementParts=null;
+var index=0;
+var replacementPos=0;
+var nextBackSlashed=false;
+while(index<repl.length){
+if((repl[index]).charCodeAt(0)==('\\').charCodeAt(0)&&!nextBackSlashed){
+nextBackSlashed=true;
+index++;
+}if(nextBackSlashed){
+res.append(repl[index]);
+nextBackSlashed=false;
+}else{
+if((repl[index]).charCodeAt(0)==('$').charCodeAt(0)){
+if(this.replacementParts==null){
+this.replacementParts=new Array(0);
+}try{
+var gr=Integer.parseInt(String.instantialize(repl,++index,1));
+if(replacementPos!=res.length()){
+this.replacementParts[this.replacementParts.length]=res.subSequence(replacementPos,res.length());
+replacementPos=res.length();
+}this.replacementParts[this.replacementParts.length]=((Clazz_isClassDefined("java.util.regex.Matcher$1")?0:java.util.regex.Matcher.$Matcher$1$()),Clazz_innerTypeInstance(java.util.regex.Matcher$1,this,null));
+var group=this.group(gr);
+replacementPos+=group.length;
+res.append(group);
+}catch(e$$){
+if(Clazz_instanceOf(e$$,IndexOutOfBoundsException)){
+var iob=e$$;
+{
+throw iob;
+}
+}else if(Clazz_instanceOf(e$$,Exception)){
+var e=e$$;
+{
+throw new IllegalArgumentException("Illegal regular expression format");
+}
+}else{
+throw e$$;
+}
+}
+}else{
+res.append(repl[index]);
+}}index++;
+}
+if(this.replacementParts!=null&&replacementPos!=res.length()){
+this.replacementParts[this.replacementParts.length]=res.subSequence(replacementPos,res.length());
+}return res.toString();
+}},$fz.isPrivate=true,$fz),"~S");
+Clazz_defineMethod(c$,"reset",
+function(newSequence){
+if(newSequence==null){
+throw new NullPointerException("Empty new sequence!");
+}this.string=newSequence;
+return this.reset();
+},"CharSequence");
+Clazz_defineMethod(c$,"reset",
+function(){
+this.leftBound=0;
+this.rightBound=this.string.length();
+this.appendPos=0;
+this.replacement=null;
+{
+var flags=""+(this.pat.regexp.ignoreCase?"i":"")
++(this.pat.regexp.global?"g":"")
++(this.pat.regexp.multiline?"m":"");
+this.pat.regexp=new RegExp(this.pat.regexp.source,flags);
+}return this;
+});
+Clazz_defineMethod(c$,"region",
+function(leftBound,rightBound){
+if(leftBound>rightBound||leftBound<0||rightBound<0||leftBound>this.string.length()||rightBound>this.string.length()){
+throw new IndexOutOfBoundsException(leftBound+" is out of bound of "+rightBound);
+}this.leftBound=leftBound;
+this.rightBound=rightBound;
+this.results=null;
+this.appendPos=0;
+this.replacement=null;
+return this;
+},"~N,~N");
+Clazz_defineMethod(c$,"appendTail",
+function(sb){
+return sb.append(this.string.subSequence(this.appendPos,this.string.length()));
+},"StringBuffer");
+Clazz_defineMethod(c$,"replaceFirst",
+function(replacement){
+this.reset();
+if(this.find()){
+var sb=new StringBuffer();
+this.appendReplacement(sb,replacement);
+return this.appendTail(sb).toString();
+}return this.string.toString();
+},"~S");
+Clazz_defineMethod(c$,"replaceAll",
+function(replacement){
+var sb=new StringBuffer();
+this.reset();
+while(this.find()){
+this.appendReplacement(sb,replacement);
+}
+return this.appendTail(sb).toString();
+},"~S");
+Clazz_defineMethod(c$,"pattern",
+function(){
+return this.pat;
+});
+Clazz_defineMethod(c$,"group",
+function(groupIndex){
+if(this.results==null||groupIndex<0||groupIndex>this.results.length){
+return null;
+}return this.results[groupIndex];
+},"~N");
+Clazz_defineMethod(c$,"group",
+function(){
+return this.group(0);
+});
+Clazz_defineMethod(c$,"find",
+function(startIndex){
+var stringLength=this.string.length();
+if(startIndex<0||startIndex>stringLength)throw new IndexOutOfBoundsException("Out of bound "+startIndex);
+startIndex=this.findAt(startIndex);
+return false;
+},"~N");
+Clazz_defineMethod(c$,"findAt",
+($fz=function(startIndex){
+return-1;
+},$fz.isPrivate=true,$fz),"~N");
+Clazz_defineMethod(c$,"find",
+function(){
+{
+this.results=this.pat.regexp.exec(this.string.subSequence(this.leftBound,this.rightBound));
+}return(this.results!=null);
+});
+Clazz_defineMethod(c$,"start",
+function(groupIndex){
+var beginningIndex=0;
+{
+beginningIndex=this.pat.regexp.lastIndex;
+}beginningIndex-=this.results[0].length;
+return beginningIndex;
+},"~N");
+Clazz_defineMethod(c$,"end",
+function(groupIndex){
+{
+return this.pat.regexp.lastIndex;
+}return-1;
+},"~N");
+Clazz_defineMethod(c$,"matches",
+function(){
+return this.find();
+});
+c$.quoteReplacement=Clazz_defineMethod(c$,"quoteReplacement",
+function(string){
+if(string.indexOf('\\') < 0 && string.indexOf ('$')<0)return string;
+var res=new StringBuffer(string.length*2);
+var ch;
+var len=string.length;
+for(var i=0;i<len;i++){
+switch(ch=string.charAt(i)){
+case'$':
+res.append('\\');
+res.append('$');
+break;
+case'\\':
+res.append('\\');
+res.append('\\');
+break;
+default:
+res.append(ch);
+}
+}
+return res.toString();
+},"~S");
+Clazz_defineMethod(c$,"lookingAt",
+function(){
+return false;
+});
+Clazz_defineMethod(c$,"start",
+function(){
+return this.start(0);
+});
+Clazz_overrideMethod(c$,"groupCount",
+function(){
+return this.results==null?0:this.results.length;
+});
+Clazz_defineMethod(c$,"end",
+function(){
+return this.end(0);
+});
+Clazz_defineMethod(c$,"toMatchResult",
+function(){
+return this;
+});
+Clazz_defineMethod(c$,"useAnchoringBounds",
+function(value){
+return this;
+},"~B");
+Clazz_defineMethod(c$,"hasAnchoringBounds",
+function(){
+return false;
+});
+Clazz_defineMethod(c$,"useTransparentBounds",
+function(value){
+return this;
+},"~B");
+Clazz_defineMethod(c$,"hasTransparentBounds",
+function(){
+return false;
+});
+Clazz_defineMethod(c$,"regionStart",
+function(){
+return this.leftBound;
+});
+Clazz_defineMethod(c$,"regionEnd",
+function(){
+return this.rightBound;
+});
+Clazz_defineMethod(c$,"requireEnd",
+function(){
+return false;
+});
+Clazz_defineMethod(c$,"hitEnd",
+function(){
+return false;
+});
+Clazz_defineMethod(c$,"usePattern",
+function(pat){
+if(pat==null){
+throw new IllegalArgumentException("Empty pattern!");
+}this.pat=pat;
+this.results=null;
+return this;
+},"java.util.regex.Pattern");
+Clazz_makeConstructor(c$,
+function(pat,cs){
+this.pat=pat;
+this.string=cs;
+this.leftBound=0;
+this.rightBound=this.string.toString().length;
+},"java.util.regex.Pattern,CharSequence");
+c$.$Matcher$1$=function(){
+Clazz_pu$h(self.c$);
+c$=Clazz_decorateAsClass(function(){
+Clazz_prepareCallback(this,arguments);
+this.grN=0;
+Clazz_instantialize(this,arguments);
+},java.util.regex,"Matcher$1");
+Clazz_prepareFields(c$,function(){
+this.grN=gr;
+});
+Clazz_overrideMethod(c$,"toString",
+function(){
+return this.b$["java.util.regex.Matcher"].group(this.grN);
+});
+c$=Clazz_p0p();
+};
+Clazz_defineStatics(c$,
+"MODE_FIND",1,
+"MODE_MATCH",2);
+});
+Clazz_declarePackage("java.util.regex");
+Clazz_declareInterface(java.util.regex,"MatchResult");
+Clazz_declarePackage ("jalview.util");
+Clazz_load (null, "jalview.util.Format", ["java.lang.Character", "$.IllegalArgumentException", "$.StringBuffer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.width = 0;
+this.precision = 0;
+this.pre = null;
+this.post = null;
+this.leading_zeroes = false;
+this.show_plus = false;
+this.alternate = false;
+this.show_space = false;
+this.left_align = false;
+this.fmt = '\0';
+this.formatString = null;
+Clazz_instantialize (this, arguments);
+}, jalview.util, "Format");
+Clazz_makeConstructor (c$, 
+function (s) {
+this.formatString = s;
+this.width = 0;
+this.precision = -1;
+this.pre = "";
+this.post = "";
+this.leading_zeroes = false;
+this.show_plus = false;
+this.alternate = false;
+this.show_space = false;
+this.left_align = false;
+this.fmt = ' ';
+var length = s.length;
+var parse_state = 0;
+var i = 0;
+while (parse_state == 0) {
+if (i >= length) {
+parse_state = 5;
+} else if (s.charAt (i) == '%') {
+if (i < (length - 1)) {
+if (s.charAt (i + 1) == '%') {
+this.pre = this.pre + '%';
+i++;
+} else {
+parse_state = 1;
+}} else {
+throw  new IllegalArgumentException ();
+}} else {
+this.pre = this.pre + s.charAt (i);
+}i++;
+}
+while (parse_state == 1) {
+if (i >= length) {
+parse_state = 5;
+} else if (s.charAt (i) == ' ') {
+this.show_space = true;
+} else if (s.charAt (i) == '-') {
+this.left_align = true;
+} else if (s.charAt (i) == '+') {
+this.show_plus = true;
+} else if (s.charAt (i) == '0') {
+this.leading_zeroes = true;
+} else if (s.charAt (i) == '#') {
+this.alternate = true;
+} else {
+parse_state = 2;
+i--;
+}i++;
+}
+while (parse_state == 2) {
+if (i >= length) {
+parse_state = 5;
+} else if (('0' <= s.charAt (i)) && (s.charAt (i) <= '9')) {
+this.width = ((this.width * 10) + s.charCodeAt (i)) - 48;
+i++;
+} else if (s.charAt (i) == '.') {
+parse_state = 3;
+this.precision = 0;
+i++;
+} else {
+parse_state = 4;
+}}
+while (parse_state == 3) {
+if (i >= length) {
+parse_state = 5;
+} else if (('0' <= s.charAt (i)) && (s.charAt (i) <= '9')) {
+this.precision = ((this.precision * 10) + s.charCodeAt (i)) - 48;
+i++;
+} else {
+parse_state = 4;
+}}
+if (parse_state == 4) {
+if (i >= length) {
+parse_state = 5;
+} else {
+this.fmt = s.charAt (i);
+}i++;
+}if (i < length) {
+this.post = s.substring (i, length);
+}}, "~S");
+c$.getHexString = Clazz_defineMethod (c$, "getHexString", 
+function (color) {
+var r;
+var g;
+var b;
+r = Integer.toHexString (color.getRed ());
+if (r.length < 2) {
+r = "0" + r;
+}g = Integer.toHexString (color.getGreen ());
+if (g.length < 2) {
+g = "0" + g;
+}b = Integer.toHexString (color.getBlue ());
+if (b.length < 2) {
+b = "0" + b;
+}return r + g + b;
+}, "java.awt.Color");
+c$.printDouble = Clazz_defineMethod (c$, "printDouble", 
+function (s, fmt, x) {
+s.print ( new jalview.util.Format (fmt).formDouble (x));
+}, "java.io.PrintStream,~S,~N");
+c$.printLong = Clazz_defineMethod (c$, "printLong", 
+function (s, fmt, x) {
+s.print ( new jalview.util.Format (fmt).formLong (x));
+}, "java.io.PrintStream,~S,~N");
+c$.printChar = Clazz_defineMethod (c$, "printChar", 
+function (s, fmt, x) {
+s.print ( new jalview.util.Format (fmt).formChar (x));
+}, "java.io.PrintStream,~S,~S");
+c$.print = Clazz_defineMethod (c$, "print", 
+function (s, fmt, x) {
+s.print ( new jalview.util.Format (fmt).form (x));
+}, "java.io.PrintStream,~S,~S");
+c$.atoi = Clazz_defineMethod (c$, "atoi", 
+function (s) {
+return jalview.util.Format.atol (s);
+}, "~S");
+c$.atol = Clazz_defineMethod (c$, "atol", 
+function (s) {
+var i = 0;
+while ((i < s.length) && Character.isWhitespace (s.charAt (i))) {
+i++;
+}
+if ((i < s.length) && (s.charAt (i) == '0')) {
+if (((i + 1) < s.length) && ((s.charAt (i + 1) == 'x') || (s.charAt (i + 1) == 'X'))) {
+return jalview.util.Format.parseLong (s.substring (i + 2), 16);
+} else {
+return jalview.util.Format.parseLong (s, 8);
+}} else {
+return jalview.util.Format.parseLong (s, 10);
+}}, "~S");
+c$.parseLong = Clazz_defineMethod (c$, "parseLong", 
+ function (s, base) {
+var i = 0;
+var sign = 1;
+var r = 0;
+while ((i < s.length) && Character.isWhitespace (s.charAt (i))) {
+i++;
+}
+if ((i < s.length) && (s.charAt (i) == '-')) {
+sign = -1;
+i++;
+} else if ((i < s.length) && (s.charAt (i) == '+')) {
+i++;
+}while (i < s.length) {
+var ch = s.charAt (i);
+if (('0' <= ch) && (ch.charCodeAt (0) < (48 + base))) {
+r = ((r * base) + ch.charCodeAt (0)) - 48;
+} else if (('A' <= ch) && (ch.charCodeAt (0) < ((65 + base) - 10))) {
+r = ((r * base) + ch.charCodeAt (0)) - 65 + 10;
+} else if (('a' <= ch) && (ch.charCodeAt (0) < ((97 + base) - 10))) {
+r = ((r * base) + ch.charCodeAt (0)) - 97 + 10;
+} else {
+return r * sign;
+}i++;
+}
+return r * sign;
+}, "~S,~N");
+c$.atof = Clazz_defineMethod (c$, "atof", 
+function (s) {
+var i = 0;
+var sign = 1;
+var r = 0;
+var p = 1;
+var state = 0;
+while ((i < s.length) && Character.isWhitespace (s.charAt (i))) {
+i++;
+}
+if ((i < s.length) && (s.charAt (i) == '-')) {
+sign = -1;
+i++;
+} else if ((i < s.length) && (s.charAt (i) == '+')) {
+i++;
+}while (i < s.length) {
+var ch = s.charAt (i);
+if (('0' <= ch) && (ch <= '9')) {
+if (state == 0) {
+r = ((r * 10) + ch.charCodeAt (0)) - 48;
+} else if (state == 1) {
+p = p / 10;
+r = r + (p * (ch.charCodeAt (0) - 48));
+}} else if (ch == '.') {
+if (state == 0) {
+state = 1;
+} else {
+return sign * r;
+}} else if ((ch == 'e') || (ch == 'E')) {
+var e = jalview.util.Format.parseLong (s.substring (i + 1), 10);
+return sign * r * Math.pow (10, e);
+} else {
+return sign * r;
+}i++;
+}
+return sign * r;
+}, "~S");
+Clazz_defineMethod (c$, "formDouble", 
+function (x) {
+var r;
+if (this.precision < 0) {
+this.precision = 6;
+}var s = 1;
+if (x < 0) {
+x = -x;
+s = -1;
+}if (this.fmt == 'f') {
+r = this.fixed_format (x);
+} else if ((this.fmt == 'e') || (this.fmt == 'E') || (this.fmt == 'g') || (this.fmt == 'G')) {
+r = this.exp_format (x);
+} else {
+throw  new IllegalArgumentException ();
+}return this.pad (this.sign (s, r));
+}, "~N");
+Clazz_defineMethod (c$, "formLong", 
+function (x) {
+var r;
+var s = 0;
+if ((this.fmt == 'd') || (this.fmt == 'i')) {
+if (x < 0) {
+r = ("" + x).substring (1);
+s = -1;
+} else {
+r = "" + x;
+s = 1;
+}} else if (this.fmt == 'o') {
+r = jalview.util.Format.convert (x, 3, 7, "01234567");
+} else if (this.fmt == 'x') {
+r = jalview.util.Format.convert (x, 4, 15, "0123456789abcdef");
+} else if (this.fmt == 'X') {
+r = jalview.util.Format.convert (x, 4, 15, "0123456789ABCDEF");
+} else {
+throw  new IllegalArgumentException ();
+}return this.pad (this.sign (s, r));
+}, "~N");
+Clazz_defineMethod (c$, "formChar", 
+function (c) {
+if (this.fmt != 'c') {
+throw  new IllegalArgumentException ();
+}var r = "" + c;
+return this.pad (r);
+}, "~S");
+Clazz_defineMethod (c$, "form", 
+function (s) {
+if (this.fmt != 's') {
+throw  new IllegalArgumentException ();
+}if (this.precision >= 0) {
+s = s.substring (0, this.precision);
+}return this.pad (s);
+}, "~S");
+c$.repeat = Clazz_defineMethod (c$, "repeat", 
+ function (c, n) {
+if (n <= 0) {
+return "";
+}var s =  new StringBuffer (n);
+for (var i = 0; i < n; i++) {
+s.append (c);
+}
+return s.toString ();
+}, "~S,~N");
+c$.convert = Clazz_defineMethod (c$, "convert", 
+ function (x, n, m, d) {
+if (x == 0) {
+return "0";
+}var r = "";
+while (x != 0) {
+r = d.charAt ((x & m)) + r;
+x = x >>> n;
+}
+return r;
+}, "~N,~N,~N,~S");
+Clazz_defineMethod (c$, "pad", 
+ function (r) {
+var p = jalview.util.Format.repeat (' ', this.width - r.length);
+if (this.left_align) {
+return this.pre + r + p + this.post;
+} else {
+return this.pre + p + r + this.post;
+}}, "~S");
+Clazz_defineMethod (c$, "sign", 
+ function (s, r) {
+var p = "";
+if (s < 0) {
+p = "-";
+} else if (s > 0) {
+if (this.show_plus) {
+p = "+";
+} else if (this.show_space) {
+p = " ";
+}} else {
+if ((this.fmt == 'o') && this.alternate && (r.length > 0) && (r.charAt (0) != '0')) {
+p = "0";
+} else if ((this.fmt == 'x') && this.alternate) {
+p = "0x";
+} else if ((this.fmt == 'X') && this.alternate) {
+p = "0X";
+}}var w = 0;
+if (this.leading_zeroes) {
+w = this.width;
+} else if (((this.fmt == 'd') || (this.fmt == 'i') || (this.fmt == 'x') || (this.fmt == 'X') || (this.fmt == 'o')) && (this.precision > 0)) {
+w = this.precision;
+}return p + jalview.util.Format.repeat ('0', w - p.length - r.length) + r;
+}, "~N,~S");
+Clazz_defineMethod (c$, "fixed_format", 
+ function (d) {
+var removeTrailing = ((this.fmt == 'G') || (this.fmt == 'g')) && !this.alternate;
+if (d > 0x7FFFFFFFFFFFFFFF) {
+return this.exp_format (d);
+}if (this.precision == 0) {
+return Clazz_doubleToLong (d + 0.5) + (removeTrailing ? "" : ".");
+}var whole = Clazz_doubleToLong (d);
+var fr = d - whole;
+if ((fr >= 1) || (fr < 0)) {
+return this.exp_format (d);
+}var factor = 1;
+var leading_zeroes = "";
+for (var i = 1; (i <= this.precision) && (factor <= 0x7FFFFFFFFFFFFFFF); i++) {
+factor *= 10;
+leading_zeroes = leading_zeroes + "0";
+}
+var l = Clazz_doubleToLong ((factor * fr) + 0.5);
+if (l >= factor) {
+l = 0;
+whole++;
+}var z = leading_zeroes + l;
+z = "." + z.substring (z.length - this.precision, z.length);
+if (removeTrailing) {
+var t = z.length - 1;
+while ((t >= 0) && (z.charAt (t) == '0')) {
+t--;
+}
+if ((t >= 0) && (z.charAt (t) == '.')) {
+t--;
+}z = z.substring (0, t + 1);
+}return whole + z;
+}, "~N");
+Clazz_defineMethod (c$, "exp_format", 
+ function (d) {
+var f = "";
+var e = 0;
+var dd = d;
+var factor = 1;
+if (d != 0) {
+while (dd > 10) {
+e++;
+factor /= 10;
+dd = dd / 10;
+}
+while (dd < 1) {
+e--;
+factor *= 10;
+dd = dd * 10;
+}
+}if (((this.fmt == 'g') || (this.fmt == 'G')) && (e >= -4) && (e < this.precision)) {
+return this.fixed_format (d);
+}d = d * factor;
+f = f + this.fixed_format (d);
+if ((this.fmt == 'e') || (this.fmt == 'g')) {
+f = f + "e";
+} else {
+f = f + "E";
+}var p = "000";
+if (e >= 0) {
+f = f + "+";
+p = p + e;
+} else {
+f = f + "-";
+p = p + (-e);
+}return f + p.substring (p.length - 3, p.length);
+}, "~N");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return this.formatString;
+});
+});
+Clazz_declarePackage ("jalview.util");
+Clazz_load (["java.util.Iterator"], "jalview.util.ReverseListIterator", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.iterator = null;
+Clazz_instantialize (this, arguments);
+}, jalview.util, "ReverseListIterator", null, java.util.Iterator);
+Clazz_makeConstructor (c$, 
+function (stuff) {
+this.iterator = stuff.listIterator (stuff.size ());
+}, "java.util.List");
+Clazz_overrideMethod (c$, "hasNext", 
+function () {
+return this.iterator.hasPrevious ();
+});
+Clazz_overrideMethod (c$, "next", 
+function () {
+return this.iterator.previous ();
+});
+Clazz_overrideMethod (c$, "remove", 
+function () {
+this.iterator.remove ();
+});
+});
+Clazz_declarePackage ("jalview.commands");
+Clazz_load (["jalview.commands.CommandI"], "jalview.commands.OrderCommand", ["jalview.analysis.AlignmentSorter"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.description = null;
+this.seqs = null;
+this.seqs2 = null;
+this.al = null;
+Clazz_instantialize (this, arguments);
+}, jalview.commands, "OrderCommand", null, jalview.commands.CommandI);
+Clazz_makeConstructor (c$, 
+function (description, seqs, al) {
+this.description = description;
+this.seqs = seqs;
+this.seqs2 = al.getSequencesArray ();
+this.al = al;
+this.doCommand (null);
+}, "~S,~A,jalview.datamodel.AlignmentI");
+Clazz_overrideMethod (c$, "getDescription", 
+function () {
+return this.description;
+});
+Clazz_overrideMethod (c$, "getSize", 
+function () {
+return 1;
+});
+Clazz_overrideMethod (c$, "doCommand", 
+function (views) {
+jalview.analysis.AlignmentSorter.setOrder (this.al, this.seqs2);
+}, "~A");
+Clazz_overrideMethod (c$, "undoCommand", 
+function (views) {
+jalview.analysis.AlignmentSorter.setOrder (this.al, this.seqs);
+}, "~A");
+Clazz_defineMethod (c$, "getSequenceOrder", 
+function (undo) {
+return undo ? this.seqs : this.seqs2;
+}, "~B");
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (null, "jalview.datamodel.AlignmentOrder", ["java.lang.Error", "java.util.ArrayList", "$.Arrays"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.Type = 0;
+this.Name = null;
+this.Order = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "AlignmentOrder");
+Clazz_makeConstructor (c$, 
+function () {
+});
+Clazz_makeConstructor (c$, 
+function (anOrder) {
+this.Order = anOrder;
+}, "java.util.List");
+Clazz_makeConstructor (c$, 
+function (orderFrom) {
+this.Order =  new java.util.ArrayList ();
+for (var seq, $seq = orderFrom.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+this.Order.add (seq);
+}
+}, "jalview.datamodel.AlignmentI");
+Clazz_makeConstructor (c$, 
+function (orderFrom) {
+this.Order =  new java.util.ArrayList (java.util.Arrays.asList (orderFrom));
+}, "~A");
+Clazz_defineMethod (c$, "setType", 
+function (Type) {
+this.Type = Type;
+}, "~N");
+Clazz_defineMethod (c$, "getType", 
+function () {
+return this.Type;
+});
+Clazz_defineMethod (c$, "setName", 
+function (Name) {
+this.Name = Name;
+}, "~S");
+Clazz_defineMethod (c$, "getName", 
+function () {
+return this.Name;
+});
+Clazz_defineMethod (c$, "setOrder", 
+function (Order) {
+this.Order = Order;
+}, "java.util.List");
+Clazz_defineMethod (c$, "getOrder", 
+function () {
+return this.Order;
+});
+Clazz_defineMethod (c$, "updateSequence", 
+function (oldref, newref) {
+var found = this.Order.indexOf (oldref);
+if (found > -1) {
+this.Order.set (found, newref);
+}return found > -1;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "equals", 
+function (o) {
+if (o == null || !(Clazz_instanceOf (o, jalview.datamodel.AlignmentOrder))) {
+return false;
+}return this.equals (o, true);
+}, "~O");
+Clazz_defineMethod (c$, "equals", 
+function (o, identity) {
+if (o !== this) {
+if (o == null) {
+return false;
+}if (this.Order != null && o.Order != null && this.Order.size () == o.Order.size ()) {
+if (!identity) {
+throw  new Error ("Weak sequenceI equivalence not yet implemented.");
+} else {
+for (var i = 0, j = o.Order.size (); i < j; i++) {
+if (this.Order.get (i) !== o.Order.get (i)) {
+return false;
+}}
+}} else {
+return false;
+}}return true;
+}, "jalview.datamodel.AlignmentOrder,~B");
+Clazz_defineMethod (c$, "isConsistent", 
+function (o) {
+return this.isConsistent (o, true);
+}, "jalview.datamodel.AlignmentOrder");
+Clazz_defineMethod (c$, "isConsistent", 
+function (o, identity) {
+if (o !== this) {
+if (o == null) {
+return false;
+}if (this.Order != null && o.Order != null) {
+var c;
+var s;
+if (o.Order.size () > this.Order.size ()) {
+c = o.Order;
+s = this.Order;
+} else {
+c = this.Order;
+s = o.Order;
+}if (!identity) {
+throw  new Error ("Weak sequenceI equivalence not yet implemented.");
+} else {
+var last = -1;
+for (var i = 0, j = s.size (); i < j; i++) {
+var pos = c.indexOf (s.get (i));
+if (pos > last) {
+last = pos;
+} else {
+return false;
+}}
+}} else {
+return false;
+}}return true;
+}, "jalview.datamodel.AlignmentOrder,~B");
+Clazz_defineStatics (c$,
+"FILE", 0,
+"MSA", 1,
+"USER", 2);
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["java.util.Vector"], "jalview.datamodel.ColumnSelection", ["jalview.util.ShiftList", "jalview.viewmodel.annotationfilter.AnnotationFilterParameter", "java.lang.StringBuffer", "java.util.ArrayList", "$.Collections"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.selected = null;
+this.hiddenColumns = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "ColumnSelection");
+Clazz_prepareFields (c$, function () {
+this.selected =  new java.util.Vector ();
+});
+Clazz_defineMethod (c$, "addElement", 
+function (col) {
+var column =  new Integer (col);
+if (!this.selected.contains (column)) {
+this.selected.addElement (column);
+}}, "~N");
+Clazz_defineMethod (c$, "clear", 
+function () {
+this.selected.removeAllElements ();
+});
+Clazz_defineMethod (c$, "removeElement", 
+function (col) {
+var colInt =  new Integer (col);
+if (this.selected.contains (colInt)) {
+this.selected.removeElement (colInt);
+}}, "~N");
+Clazz_defineMethod (c$, "removeElements", 
+function (start, end) {
+var colInt;
+for (var i = start; i < end; i++) {
+colInt =  new Integer (i);
+if (this.selected.contains (colInt)) {
+this.selected.removeElement (colInt);
+}}
+}, "~N,~N");
+Clazz_defineMethod (c$, "getSelected", 
+function () {
+return this.selected;
+});
+Clazz_defineMethod (c$, "contains", 
+function (col) {
+return this.selected.contains ( new Integer (col));
+}, "~N");
+Clazz_defineMethod (c$, "columnAt", 
+function (i) {
+return this.selected.elementAt (i).intValue ();
+}, "~N");
+Clazz_defineMethod (c$, "size", 
+function () {
+return this.selected.size ();
+});
+Clazz_defineMethod (c$, "getMax", 
+function () {
+var max = -1;
+for (var i = 0; i < this.selected.size (); i++) {
+if (this.columnAt (i) > max) {
+max = this.columnAt (i);
+}}
+return max;
+});
+Clazz_defineMethod (c$, "getMin", 
+function () {
+var min = 1000000000;
+for (var i = 0; i < this.selected.size (); i++) {
+if (this.columnAt (i) < min) {
+min = this.columnAt (i);
+}}
+return min;
+});
+Clazz_defineMethod (c$, "compensateForEdit", 
+function (start, change) {
+var deletedHiddenColumns = null;
+for (var i = 0; i < this.size (); i++) {
+var temp = this.columnAt (i);
+if (temp >= start) {
+this.selected.setElementAt ( new Integer (temp - change), i);
+}}
+if (this.hiddenColumns != null) {
+deletedHiddenColumns =  new java.util.ArrayList ();
+var hSize = this.hiddenColumns.size ();
+for (var i = 0; i < hSize; i++) {
+var region = this.hiddenColumns.elementAt (i);
+if (region[0] > start && start + change > region[1]) {
+deletedHiddenColumns.add (region);
+this.hiddenColumns.removeElementAt (i);
+i--;
+hSize--;
+continue;
+}if (region[0] > start) {
+region[0] -= change;
+region[1] -= change;
+}if (region[0] < 0) {
+region[0] = 0;
+}}
+this.revealHiddenColumns (0);
+}return deletedHiddenColumns;
+}, "~N,~N");
+Clazz_defineMethod (c$, "compensateForDelEdits", 
+ function (start, change) {
+for (var i = 0; i < this.size (); i++) {
+var temp = this.columnAt (i);
+if (temp >= start) {
+this.selected.setElementAt ( new Integer (temp - change), i);
+}}
+if (this.hiddenColumns != null) {
+for (var i = 0; i < this.hiddenColumns.size (); i++) {
+var region = this.hiddenColumns.elementAt (i);
+if (region[0] >= start) {
+region[0] -= change;
+}if (region[1] >= start) {
+region[1] -= change;
+}if (region[1] < region[0]) {
+this.hiddenColumns.removeElementAt (i--);
+}if (region[0] < 0) {
+region[0] = 0;
+}if (region[1] < 0) {
+region[1] = 0;
+}}
+}}, "~N,~N");
+Clazz_defineMethod (c$, "compensateForEdits", 
+function (shiftrecord) {
+if (shiftrecord != null) {
+var shifts = shiftrecord.getShifts ();
+if (shifts != null && shifts.size () > 0) {
+var shifted = 0;
+for (var i = 0, j = shifts.size (); i < j; i++) {
+var sh = shifts.get (i);
+this.compensateForDelEdits (shifted + sh[0], sh[1]);
+shifted -= sh[1];
+}
+}return shiftrecord.getInverse ();
+}return null;
+}, "jalview.util.ShiftList");
+Clazz_defineMethod (c$, "pruneIntervalVector", 
+ function (shifts, intervals) {
+var pruned = false;
+var i = 0;
+var j = intervals.size () - 1;
+var s = 0;
+var t = shifts.size () - 1;
+var hr = intervals.elementAt (i);
+var sr = shifts.get (s);
+while (i <= j && s <= t) {
+var trailinghn = hr[1] >= sr[0];
+if (!trailinghn) {
+if (i < j) {
+hr = intervals.elementAt (++i);
+} else {
+i++;
+}continue;
+}var endshift = sr[0] + sr[1];
+if (endshift < hr[0] || endshift < sr[0]) {
+if (s < t) {
+sr = shifts.get (++s);
+} else {
+s++;
+}continue;
+}var leadinghn = hr[0] >= sr[0];
+var leadinghc = hr[0] < endshift;
+var trailinghc = hr[1] < endshift;
+if (leadinghn) {
+if (trailinghc) {
+intervals.removeElementAt (i);
+pruned = true;
+j--;
+if (i <= j) {
+hr = intervals.elementAt (i);
+}continue;
+}if (leadinghc) {
+hr[0] = endshift;
+leadinghn = !leadinghn;
+pruned = true;
+}}if (!leadinghn) {
+if (trailinghc) {
+if (trailinghn) {
+hr[1] = sr[0] - 1;
+pruned = true;
+}} else {
+if (s < t) {
+sr = shifts.get (++s);
+} else {
+s++;
+}continue;
+}}}
+return pruned;
+}, "java.util.List,java.util.Vector");
+Clazz_defineMethod (c$, "pruneColumnList", 
+ function (shifts, list) {
+var s = 0;
+var t = shifts.size ();
+var sr = shifts.get (s++);
+var pruned = false;
+var i = 0;
+var j = list.size ();
+while (i < j && s <= t) {
+var c = list.elementAt (i++).intValue ();
+if (sr[0] <= c) {
+if (sr[1] + sr[0] >= c) {
+list.removeElementAt (--i);
+j--;
+} else {
+if (s < t) {
+sr = shifts.get (s);
+}s++;
+}}}
+return pruned;
+}, "java.util.List,java.util.Vector");
+Clazz_defineMethod (c$, "pruneDeletions", 
+function (deletions) {
+if (deletions != null) {
+var shifts = deletions.getShifts ();
+if (shifts != null && shifts.size () > 0) {
+if (this.hiddenColumns != null) {
+this.pruneIntervalVector (shifts, this.hiddenColumns);
+if (this.hiddenColumns != null && this.hiddenColumns.size () == 0) {
+this.hiddenColumns = null;
+}}if (this.selected != null && this.selected.size () > 0) {
+this.pruneColumnList (shifts, this.selected);
+if (this.selected != null && this.selected.size () == 0) {
+this.selected = null;
+}}this.compensateForEdits (deletions);
+}}}, "jalview.util.ShiftList");
+Clazz_defineMethod (c$, "getHiddenColumns", 
+function () {
+return this.hiddenColumns == null ? java.util.Collections.emptyList () : this.hiddenColumns;
+});
+Clazz_defineMethod (c$, "adjustForHiddenColumns", 
+function (column) {
+var result = column;
+if (this.hiddenColumns != null) {
+for (var i = 0; i < this.hiddenColumns.size (); i++) {
+var region = this.hiddenColumns.elementAt (i);
+if (result >= region[0]) {
+result += region[1] - region[0] + 1;
+}}
+}return result;
+}, "~N");
+Clazz_defineMethod (c$, "findColumnPosition", 
+function (hiddenColumn) {
+var result = hiddenColumn;
+if (this.hiddenColumns != null) {
+var index = 0;
+var region;
+do {
+region = this.hiddenColumns.elementAt (index++);
+if (hiddenColumn > region[1]) {
+result -= region[1] + 1 - region[0];
+}} while ((hiddenColumn > region[1]) && (index < this.hiddenColumns.size ()));
+if (hiddenColumn > region[0] && hiddenColumn < region[1]) {
+return region[0] + hiddenColumn - result;
+}}return result;
+}, "~N");
+Clazz_defineMethod (c$, "findHiddenRegionPosition", 
+function (hiddenRegion) {
+var result = 0;
+if (this.hiddenColumns != null) {
+var index = 0;
+var gaps = 0;
+do {
+var region = this.hiddenColumns.elementAt (index);
+if (hiddenRegion == 0) {
+return region[0];
+}gaps += region[1] + 1 - region[0];
+result = region[1] + 1;
+index++;
+} while (index < hiddenRegion + 1);
+result -= gaps;
+}return result;
+}, "~N");
+Clazz_defineMethod (c$, "getHiddenBoundaryRight", 
+function (alPos) {
+if (this.hiddenColumns != null) {
+var index = 0;
+do {
+var region = this.hiddenColumns.elementAt (index);
+if (alPos < region[0]) {
+return region[0];
+}index++;
+} while (index < this.hiddenColumns.size ());
+}return alPos;
+}, "~N");
+Clazz_defineMethod (c$, "getHiddenBoundaryLeft", 
+function (alPos) {
+if (this.hiddenColumns != null) {
+var index = this.hiddenColumns.size () - 1;
+do {
+var region = this.hiddenColumns.elementAt (index);
+if (alPos > region[1]) {
+return region[1];
+}index--;
+} while (index > -1);
+}return alPos;
+}, "~N");
+Clazz_defineMethod (c$, "hideSelectedColumns", 
+function () {
+while (this.size () > 0) {
+var column = this.getSelected ().firstElement ().intValue ();
+this.hideColumns (column);
+}
+});
+Clazz_defineMethod (c$, "hideColumns", 
+function (start, end) {
+if (this.hiddenColumns == null) {
+this.hiddenColumns =  new java.util.Vector ();
+}var added = false;
+var overlap = false;
+for (var i = 0; i < this.hiddenColumns.size (); i++) {
+var region = this.hiddenColumns.elementAt (i);
+if (start <= region[1] && end >= region[0]) {
+this.hiddenColumns.removeElementAt (i);
+overlap = true;
+break;
+} else if (end < region[0] && start < region[0]) {
+this.hiddenColumns.insertElementAt ( Clazz_newIntArray (-1, [start, end]), i);
+added = true;
+break;
+}}
+if (overlap) {
+this.hideColumns (start, end);
+} else if (!added) {
+this.hiddenColumns.addElement ( Clazz_newIntArray (-1, [start, end]));
+}}, "~N,~N");
+Clazz_defineMethod (c$, "hideColumns", 
+function (col) {
+var min = col;
+var max = col + 1;
+while (this.contains (min)) {
+this.removeElement (min);
+min--;
+}
+while (this.contains (max)) {
+this.removeElement (max);
+max++;
+}
+min++;
+max--;
+if (min > max) {
+min = max;
+}this.hideColumns (min, max);
+}, "~N");
+Clazz_defineMethod (c$, "revealAllHiddenColumns", 
+function () {
+if (this.hiddenColumns != null) {
+for (var i = 0; i < this.hiddenColumns.size (); i++) {
+var region = this.hiddenColumns.elementAt (i);
+for (var j = region[0]; j < region[1] + 1; j++) {
+this.addElement (j);
+}
+}
+}this.hiddenColumns = null;
+});
+Clazz_defineMethod (c$, "revealHiddenColumns", 
+function (res) {
+for (var i = 0; i < this.hiddenColumns.size (); i++) {
+var region = this.hiddenColumns.elementAt (i);
+if (res == region[0]) {
+for (var j = region[0]; j < region[1] + 1; j++) {
+this.addElement (j);
+}
+this.hiddenColumns.removeElement (region);
+break;
+}}
+if (this.hiddenColumns.size () == 0) {
+this.hiddenColumns = null;
+}}, "~N");
+Clazz_defineMethod (c$, "isVisible", 
+function (column) {
+if (this.hiddenColumns != null) {
+for (var i = 0; i < this.hiddenColumns.size (); i++) {
+var region = this.hiddenColumns.elementAt (i);
+if (column >= region[0] && column <= region[1]) {
+return false;
+}}
+}return true;
+}, "~N");
+Clazz_makeConstructor (c$, 
+function (copy) {
+if (copy != null) {
+if (copy.selected != null) {
+this.selected =  new java.util.Vector ();
+for (var i = 0, j = copy.selected.size (); i < j; i++) {
+this.selected.addElement (copy.selected.elementAt (i));
+}
+}if (copy.hiddenColumns != null) {
+this.hiddenColumns =  new java.util.Vector (copy.hiddenColumns.size ());
+for (var i = 0, j = copy.hiddenColumns.size (); i < j; i++) {
+var rh;
+var cp;
+rh = copy.hiddenColumns.elementAt (i);
+if (rh != null) {
+cp =  Clazz_newIntArray (rh.length, 0);
+System.arraycopy (rh, 0, cp, 0, rh.length);
+this.hiddenColumns.addElement (cp);
+}}
+}}}, "jalview.datamodel.ColumnSelection");
+Clazz_makeConstructor (c$, 
+function () {
+});
+Clazz_defineMethod (c$, "getVisibleSequenceStrings", 
+function (start, end, seqs) {
+var i;
+var iSize = seqs.length;
+var selection =  new Array (iSize);
+if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
+for (i = 0; i < iSize; i++) {
+var visibleSeq =  new StringBuffer ();
+var regions = this.getHiddenColumns ();
+var blockStart = start;
+var blockEnd = end;
+var region;
+var hideStart;
+var hideEnd;
+for (var j = 0; j < regions.size (); j++) {
+region = regions.get (j);
+hideStart = region[0];
+hideEnd = region[1];
+if (hideStart < start) {
+continue;
+}blockStart = Math.min (blockStart, hideEnd + 1);
+blockEnd = Math.min (blockEnd, hideStart);
+if (blockStart > blockEnd) {
+break;
+}visibleSeq.append (seqs[i].getSequence (blockStart, blockEnd));
+blockStart = hideEnd + 1;
+blockEnd = end;
+}
+if (end > blockStart) {
+visibleSeq.append (seqs[i].getSequence (blockStart, end));
+}selection[i] = visibleSeq.toString ();
+}
+} else {
+for (i = 0; i < iSize; i++) {
+selection[i] = seqs[i].getSequenceAsString (start, end);
+}
+}return selection;
+}, "~N,~N,~A");
+Clazz_defineMethod (c$, "getVisibleContigs", 
+function (start, end) {
+if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
+var visiblecontigs =  new java.util.ArrayList ();
+var regions = this.getHiddenColumns ();
+var vstart = start;
+var region;
+var hideStart;
+var hideEnd;
+for (var j = 0; vstart < end && j < regions.size (); j++) {
+region = regions.get (j);
+hideStart = region[0];
+hideEnd = region[1];
+if (hideEnd < vstart) {
+continue;
+}if (hideStart > vstart) {
+visiblecontigs.add ( Clazz_newIntArray (-1, [vstart, hideStart - 1]));
+}vstart = hideEnd + 1;
+}
+if (vstart < end) {
+visiblecontigs.add ( Clazz_newIntArray (-1, [vstart, end - 1]));
+}var vcontigs =  Clazz_newIntArray (visiblecontigs.size () * 2, 0);
+for (var i = 0, j = visiblecontigs.size (); i < j; i++) {
+var vc = visiblecontigs.get (i);
+visiblecontigs.set (i, null);
+vcontigs[i * 2] = vc[0];
+vcontigs[i * 2 + 1] = vc[1];
+}
+visiblecontigs.clear ();
+return vcontigs;
+} else {
+return  Clazz_newIntArray (-1, [start, end - 1]);
+}}, "~N,~N");
+Clazz_defineMethod (c$, "makeVisibleAnnotation", 
+function (alignmentAnnotation) {
+this.makeVisibleAnnotation (-1, -1, alignmentAnnotation);
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz_defineMethod (c$, "makeVisibleAnnotation", 
+function (start, end, alignmentAnnotation) {
+if (alignmentAnnotation.annotations == null) {
+return;
+}if (start == end && end == -1) {
+start = 0;
+end = alignmentAnnotation.annotations.length;
+}if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
+var annels =  new java.util.Vector ();
+var els = null;
+var regions = this.getHiddenColumns ();
+var blockStart = start;
+var blockEnd = end;
+var region;
+var hideStart;
+var hideEnd;
+var w = 0;
+for (var j = 0; j < regions.size (); j++) {
+region = regions.get (j);
+hideStart = region[0];
+hideEnd = region[1];
+if (hideStart < start) {
+continue;
+}blockStart = Math.min (blockStart, hideEnd + 1);
+blockEnd = Math.min (blockEnd, hideStart);
+if (blockStart > blockEnd) {
+break;
+}annels.addElement (els =  new Array (blockEnd - blockStart));
+System.arraycopy (alignmentAnnotation.annotations, blockStart, els, 0, els.length);
+w += els.length;
+blockStart = hideEnd + 1;
+blockEnd = end;
+}
+if (end > blockStart) {
+annels.addElement (els =  new Array (end - blockStart + 1));
+if ((els.length + blockStart) <= alignmentAnnotation.annotations.length) {
+System.arraycopy (alignmentAnnotation.annotations, blockStart, els, 0, els.length);
+} else {
+System.arraycopy (alignmentAnnotation.annotations, blockStart, els, 0, (alignmentAnnotation.annotations.length - blockStart));
+}w += els.length;
+}if (w == 0) {
+return;
+}alignmentAnnotation.annotations =  new Array (w);
+w = 0;
+for (var chnk, $chnk = annels.iterator (); $chnk.hasNext () && ((chnk = $chnk.next ()) || true);) {
+System.arraycopy (chnk, 0, alignmentAnnotation.annotations, w, chnk.length);
+w += chnk.length;
+}
+} else {
+alignmentAnnotation.restrict (start, end);
+}}, "~N,~N,jalview.datamodel.AlignmentAnnotation");
+Clazz_defineMethod (c$, "invertColumnSelection", 
+function (first, width) {
+var hasHidden = this.hiddenColumns != null && this.hiddenColumns.size () > 0;
+for (var i = first; i < width; i++) {
+if (this.contains (i)) {
+this.removeElement (i);
+} else {
+if (!hasHidden || this.isVisible (i)) {
+this.addElement (i);
+}}}
+}, "~N,~N");
+Clazz_defineMethod (c$, "addElementsFrom", 
+function (colsel) {
+if (colsel != null && colsel.size () > 0) {
+for (var col, $col = colsel.getSelected ().iterator (); $col.hasNext () && ((col = $col.next ()) || true);) {
+if (this.hiddenColumns != null && this.isVisible (col.intValue ())) {
+if (!this.selected.contains (col)) {
+this.selected.addElement (col);
+}}}
+}}, "jalview.datamodel.ColumnSelection");
+Clazz_defineMethod (c$, "setElementsFrom", 
+function (colsel) {
+this.selected =  new java.util.Vector ();
+if (colsel.selected != null && colsel.selected.size () > 0) {
+if (this.hiddenColumns != null && this.hiddenColumns.size () > 0) {
+this.addElementsFrom (colsel);
+} else {
+for (var col, $col = colsel.getSelected ().iterator (); $col.hasNext () && ((col = $col.next ()) || true);) {
+this.addElement ((col).intValue ());
+}
+}}}, "jalview.datamodel.ColumnSelection");
+c$.propagateInsertions = Clazz_defineMethod (c$, "propagateInsertions", 
+function (profileseq, al, input) {
+var profsqpos = 0;
+var gc = al.getGapCharacter ();
+var alandcolsel = input.getAlignmentAndColumnSelection (gc);
+var nview = alandcolsel[1];
+var origseq = (alandcolsel[0])[profsqpos];
+nview.propagateInsertions (profileseq, al, origseq);
+return nview;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentView");
+Clazz_defineMethod (c$, "propagateInsertions", 
+function (profileseq, al, origseq) {
+var gc = al.getGapCharacter ();
+this.pruneDeletions (jalview.util.ShiftList.parseMap (origseq.gapMap ()));
+var viscontigs = this.getVisibleContigs (0, profileseq.getLength ());
+var spos = 0;
+var offset = 0;
+for (var v = 0; v < viscontigs.length; v += 2) {
+if (viscontigs[v] > spos) {
+var sb =  new StringBuffer ();
+for (var s = 0, ns = viscontigs[v] - spos; s < ns; s++) {
+sb.append (gc);
+}
+for (var s = 0, ns = al.getHeight (); s < ns; s++) {
+var sqobj = al.getSequenceAt (s);
+if (sqobj !== profileseq) {
+var sq = al.getSequenceAt (s).getSequenceAsString ();
+if (sq.length <= spos + offset) {
+var diff = spos + offset - sq.length - 1;
+if (diff > 0) {
+sq = sq + sb;
+while ((diff = spos + offset - sq.length - 1) > 0) {
+if (diff >= sb.length ()) {
+sq += sb.toString ();
+} else {
+var buf =  Clazz_newCharArray (diff, '\0');
+sb.getChars (0, diff, buf, 0);
+sq += buf.toString ();
+}}
+}sq += sb.toString ();
+} else {
+al.getSequenceAt (s).setSequence (sq.substring (0, spos + offset) + sb.toString () + sq.substring (spos + offset));
+}}}
+}spos = viscontigs[v + 1] + 1;
+}
+if ((offset + spos) < profileseq.getLength ()) {
+var sb =  new StringBuffer ();
+for (var s = 0, ns = profileseq.getLength () - spos - offset; s < ns; s++) {
+sb.append (gc);
+}
+for (var s = 0, ns = al.getHeight (); s < ns; s++) {
+var sqobj = al.getSequenceAt (s);
+if (sqobj === profileseq) {
+continue;
+}var sq = sqobj.getSequenceAsString ();
+var diff = origseq.getLength () - sq.length;
+while (diff > 0) {
+if (diff >= sb.length ()) {
+sq += sb.toString ();
+} else {
+var buf =  Clazz_newCharArray (diff, '\0');
+sb.getChars (0, diff, buf, 0);
+sq += buf.toString ();
+}diff = origseq.getLength () - sq.length;
+}
+}
+}}, "jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "hasSelectedColumns", 
+function () {
+return (this.selected != null && this.selected.size () > 0);
+});
+Clazz_defineMethod (c$, "hasHiddenColumns", 
+function () {
+return this.hiddenColumns != null && this.hiddenColumns.size () > 0;
+});
+Clazz_defineMethod (c$, "hasManyHiddenColumns", 
+function () {
+return this.hiddenColumns != null && this.hiddenColumns.size () > 1;
+});
+Clazz_defineMethod (c$, "hideInsertionsFor", 
+function (sr) {
+var inserts = sr.getInsertions ();
+for (var r, $r = inserts.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
+this.hideColumns (r[0], r[1]);
+}
+}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "filterAnnotations", 
+function (annotations, filterParams) {
+this.revealAllHiddenColumns ();
+this.clear ();
+var count = 0;
+do {
+if (annotations[count] != null) {
+var itemMatched = false;
+if (filterParams.getThresholdType () === jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.ABOVE_THRESHOLD && annotations[count].value >= filterParams.getThresholdValue ()) {
+itemMatched = true;
+}if (filterParams.getThresholdType () === jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.BELOW_THRESHOLD && annotations[count].value <= filterParams.getThresholdValue ()) {
+itemMatched = true;
+}if (filterParams.isFilterAlphaHelix () && annotations[count].secondaryStructure == 'H') {
+itemMatched = true;
+}if (filterParams.isFilterBetaSheet () && annotations[count].secondaryStructure == 'E') {
+itemMatched = true;
+}if (filterParams.isFilterTurn () && annotations[count].secondaryStructure == 'S') {
+itemMatched = true;
+}var regexSearchString = filterParams.getRegexString ();
+if (regexSearchString != null && !filterParams.getRegexSearchFields ().isEmpty ()) {
+var fields = filterParams.getRegexSearchFields ();
+try {
+if (fields.contains (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DISPLAY_STRING) && annotations[count].displayCharacter.matches (regexSearchString)) {
+itemMatched = true;
+}} catch (pse) {
+if (Clazz_exceptionOf (pse, java.util.regex.PatternSyntaxException)) {
+if (annotations[count].displayCharacter.equals (regexSearchString)) {
+itemMatched = true;
+}} else {
+throw pse;
+}
+}
+if (fields.contains (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DESCRIPTION) && annotations[count].description != null && annotations[count].description.matches (regexSearchString)) {
+itemMatched = true;
+}}if (itemMatched) {
+this.addElement (count);
+}}count++;
+} while (count < annotations.length);
+return false;
+}, "~A,jalview.viewmodel.annotationfilter.AnnotationFilterParameter");
+});
+Clazz_declarePackage ("jalview.util");
+Clazz_load (null, "jalview.util.ShiftList", ["java.util.ArrayList"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.shifts = null;
+Clazz_instantialize (this, arguments);
+}, jalview.util, "ShiftList");
+Clazz_makeConstructor (c$, 
+function () {
+this.shifts =  new java.util.ArrayList ();
+});
+Clazz_defineMethod (c$, "addShift", 
+function (pos, shift) {
+{
+var sidx = 0;
+var rshift = null;
+while (sidx < this.shifts.size () && (rshift = this.shifts.get (sidx))[0] < pos) {
+sidx++;
+}
+if (sidx == this.shifts.size ()) {
+this.shifts.add (sidx,  Clazz_newIntArray (-1, [pos, shift]));
+} else {
+rshift[1] += shift;
+}}}, "~N,~N");
+Clazz_defineMethod (c$, "shift", 
+function (pos) {
+if (this.shifts.size () == 0) {
+return pos;
+}var shifted = pos;
+var sidx = 0;
+var rshift;
+while (sidx < this.shifts.size () && (rshift = (this.shifts.get (sidx++)))[0] <= pos) {
+shifted += rshift[1];
+}
+return shifted;
+}, "~N");
+Clazz_defineMethod (c$, "clear", 
+function () {
+this.shifts.clear ();
+});
+Clazz_defineMethod (c$, "getInverse", 
+function () {
+var inverse =  new jalview.util.ShiftList ();
+{
+if (this.shifts != null) {
+for (var sh, $sh = this.shifts.iterator (); $sh.hasNext () && ((sh = $sh.next ()) || true);) {
+if (sh != null) {
+inverse.shifts.add ( Clazz_newIntArray (-1, [sh[0], -sh[1]]));
+}}
+}}return inverse;
+});
+c$.parseMap = Clazz_defineMethod (c$, "parseMap", 
+function (gapMap) {
+var shiftList = null;
+if (gapMap != null && gapMap.length > 0) {
+shiftList =  new jalview.util.ShiftList ();
+for (var i = 0, p = 0; i < gapMap.length; p++, i++) {
+if (p != gapMap[i]) {
+shiftList.addShift (p, gapMap[i] - p);
+p = gapMap[i];
+}}
+}return shiftList;
+}, "~A");
+Clazz_defineMethod (c$, "getShifts", 
+function () {
+return this.shifts;
+});
+});
+Clazz_declarePackage ("jalview.viewmodel.annotationfilter");
+Clazz_load (["java.lang.Enum", "java.util.ArrayList"], "jalview.viewmodel.annotationfilter.AnnotationFilterParameter", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.thresholdType = null;
+this.thresholdValue = 0;
+this.filterAlphaHelix = false;
+this.filterBetaSheet = false;
+this.filterTurn = false;
+this.regexString = null;
+this.regexSearchFields = null;
+Clazz_instantialize (this, arguments);
+}, jalview.viewmodel.annotationfilter, "AnnotationFilterParameter");
+Clazz_prepareFields (c$, function () {
+this.regexSearchFields =  new java.util.ArrayList ();
+});
+Clazz_defineMethod (c$, "getThresholdType", 
+function () {
+return this.thresholdType;
+});
+Clazz_defineMethod (c$, "setThresholdType", 
+function (thresholdType) {
+this.thresholdType = thresholdType;
+}, "jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType");
+Clazz_defineMethod (c$, "getThresholdValue", 
+function () {
+return this.thresholdValue;
+});
+Clazz_defineMethod (c$, "setThresholdValue", 
+function (thresholdValue) {
+this.thresholdValue = thresholdValue;
+}, "~N");
+Clazz_defineMethod (c$, "getRegexString", 
+function () {
+return this.regexString;
+});
+Clazz_defineMethod (c$, "setRegexString", 
+function (regexString) {
+this.regexString = regexString;
+}, "~S");
+Clazz_defineMethod (c$, "getRegexSearchFields", 
+function () {
+return this.regexSearchFields;
+});
+Clazz_defineMethod (c$, "addRegexSearchField", 
+function (regexSearchField) {
+this.regexSearchFields.add (regexSearchField);
+}, "jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField");
+Clazz_defineMethod (c$, "isFilterAlphaHelix", 
+function () {
+return this.filterAlphaHelix;
+});
+Clazz_defineMethod (c$, "setFilterAlphaHelix", 
+function (alphaHelix) {
+this.filterAlphaHelix = alphaHelix;
+}, "~B");
+Clazz_defineMethod (c$, "isFilterBetaSheet", 
+function () {
+return this.filterBetaSheet;
+});
+Clazz_defineMethod (c$, "setFilterBetaSheet", 
+function (betaSheet) {
+this.filterBetaSheet = betaSheet;
+}, "~B");
+Clazz_defineMethod (c$, "isFilterTurn", 
+function () {
+return this.filterTurn;
+});
+Clazz_defineMethod (c$, "setFilterTurn", 
+function (turn) {
+this.filterTurn = turn;
+}, "~B");
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (jalview.viewmodel.annotationfilter.AnnotationFilterParameter, "ThresholdType", Enum);
+Clazz_defineEnumConstant (c$, "NO_THRESHOLD", 0, []);
+Clazz_defineEnumConstant (c$, "BELOW_THRESHOLD", 1, []);
+Clazz_defineEnumConstant (c$, "ABOVE_THRESHOLD", 2, []);
+c$ = Clazz_p0p ();
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (jalview.viewmodel.annotationfilter.AnnotationFilterParameter, "SearchableAnnotationField", Enum);
+Clazz_defineEnumConstant (c$, "DISPLAY_STRING", 0, []);
+Clazz_defineEnumConstant (c$, "DESCRIPTION", 1, []);
+c$ = Clazz_p0p ();
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["java.util.ArrayList"], "jalview.datamodel.SearchResults", ["java.lang.StringBuilder", "java.util.Arrays"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.matches = null;
+if (!Clazz_isClassDefined ("jalview.datamodel.SearchResults.Match")) {
+jalview.datamodel.SearchResults.$SearchResults$Match$ ();
+}
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "SearchResults");
+Clazz_prepareFields (c$, function () {
+this.matches =  new java.util.ArrayList ();
+});
+Clazz_defineMethod (c$, "addResult", 
+function (seq, start, end) {
+this.matches.add (Clazz_innerTypeInstance (jalview.datamodel.SearchResults.Match, this, null, seq, start, end));
+}, "jalview.datamodel.SequenceI,~N,~N");
+Clazz_defineMethod (c$, "involvesSequence", 
+function (sequence) {
+var ds = sequence.getDatasetSequence ();
+for (var m, $m = this.matches.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
+if (m.sequence != null && (m.sequence === sequence || m.sequence === ds)) {
+return true;
+}}
+return false;
+}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "getResults", 
+function (sequence, start, end) {
+if (this.matches.isEmpty ()) {
+return null;
+}var result = null;
+var tmp = null;
+var resultLength;
+var matchStart = 0;
+var matchEnd = 0;
+var mfound;
+for (var m, $m = this.matches.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
+mfound = false;
+if (m.sequence === sequence) {
+mfound = true;
+matchStart = sequence.findIndex (m.start) - 1;
+matchEnd = sequence.findIndex (m.end) - 1;
+} else if (m.sequence === sequence.getDatasetSequence ()) {
+mfound = true;
+matchStart = sequence.findIndex (m.start) - 1;
+matchEnd = sequence.findIndex (m.end) - 1;
+}if (mfound) {
+if (matchStart <= end && matchEnd >= start) {
+if (matchStart < start) {
+matchStart = start;
+}if (matchEnd > end) {
+matchEnd = end;
+}if (result == null) {
+result =  Clazz_newIntArray (-1, [matchStart, matchEnd]);
+} else {
+resultLength = result.length;
+tmp =  Clazz_newIntArray (resultLength + 2, 0);
+System.arraycopy (result, 0, tmp, 0, resultLength);
+result = tmp;
+result[resultLength] = matchStart;
+result[resultLength + 1] = matchEnd;
+}} else {
+}}}
+return result;
+}, "jalview.datamodel.SequenceI,~N,~N");
+Clazz_defineMethod (c$, "getSize", 
+function () {
+return this.matches.size ();
+});
+Clazz_defineMethod (c$, "getResultSequence", 
+function (index) {
+return this.matches.get (index).sequence;
+}, "~N");
+Clazz_defineMethod (c$, "getResultStart", 
+function (i) {
+return this.matches.get (i).start;
+}, "~N");
+Clazz_defineMethod (c$, "getResultEnd", 
+function (i) {
+return this.matches.get (i).end;
+}, "~N");
+Clazz_defineMethod (c$, "isEmpty", 
+function () {
+return this.matches.isEmpty ();
+});
+Clazz_defineMethod (c$, "getResults", 
+function () {
+return this.matches;
+});
+Clazz_overrideMethod (c$, "toString", 
+function () {
+var result =  new StringBuilder (256);
+for (var m, $m = this.matches.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
+result.append (m.toString ());
+}
+return result.toString ();
+});
+c$.$SearchResults$Match$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.sequence = null;
+this.start = 0;
+this.end = 0;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel.SearchResults, "Match");
+Clazz_makeConstructor (c$, 
+function (a, b, c) {
+this.sequence = a;
+this.start = b;
+this.end = c;
+}, "jalview.datamodel.SequenceI,~N,~N");
+Clazz_defineMethod (c$, "getSequence", 
+function () {
+return this.sequence;
+});
+Clazz_defineMethod (c$, "getStart", 
+function () {
+return this.start;
+});
+Clazz_defineMethod (c$, "getEnd", 
+function () {
+return this.end;
+});
+Clazz_overrideMethod (c$, "toString", 
+function () {
+var a = this.sequence.getSequence ();
+var b = Math.max (this.start - 1, 0);
+var c = Math.min (this.end, a.length + 1);
+return String.valueOf (java.util.Arrays.copyOfRange (a, b, c));
+});
+Clazz_defineMethod (c$, "setSequence", 
+function (a) {
+this.sequence = a;
+}, "jalview.datamodel.SequenceI");
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["jalview.datamodel.AnnotatedCollectionI", "java.awt.Color", "java.util.ArrayList"], "jalview.datamodel.SequenceGroup", ["jalview.analysis.AAFrequency", "$.Conservation", "jalview.datamodel.AlignmentAnnotation", "$.Sequence", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "java.lang.StringBuffer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.groupName = null;
+this.description = null;
+this.conserve = null;
+this.aaFrequency = null;
+this.displayBoxes = true;
+this.displayText = true;
+this.colourText = false;
+this.showNonconserved = false;
+this.sequences = null;
+this.seqrep = null;
+this.width = -1;
+this.cs = null;
+this.startRes = 0;
+this.endRes = 0;
+this.outlineColour = null;
+this.idColour = null;
+this.thresholdTextColour = 0;
+this.textColour = null;
+this.textColour2 = null;
+this.ignoreGapsInConsensus = true;
+this.showSequenceLogo = false;
+this.normaliseSequenceLogo = false;
+this.consPercGaps = 25;
+this.consensusData = null;
+this.hidereps = false;
+this.hidecols = false;
+this.consensus = null;
+this.conservation = null;
+this.showConsensusHistogram = false;
+this.context = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "SequenceGroup", null, jalview.datamodel.AnnotatedCollectionI);
+Clazz_prepareFields (c$, function () {
+this.sequences =  new java.util.ArrayList ();
+this.outlineColour = java.awt.Color.black;
+this.textColour = java.awt.Color.black;
+this.textColour2 = java.awt.Color.white;
+});
+Clazz_defineMethod (c$, "isShowSequenceLogo", 
+function () {
+return this.showSequenceLogo;
+});
+Clazz_makeConstructor (c$, 
+function () {
+this.groupName = "JGroup:" + this.hashCode ();
+});
+Clazz_makeConstructor (c$, 
+function (sequences, groupName, scheme, displayBoxes, displayText, colourText, start, end) {
+this.sequences = sequences;
+this.groupName = groupName;
+this.displayBoxes = displayBoxes;
+this.displayText = displayText;
+this.colourText = colourText;
+this.cs = scheme;
+this.startRes = start;
+this.endRes = end;
+this.recalcConservation ();
+}, "java.util.List,~S,jalview.schemes.ColourSchemeI,~B,~B,~B,~N,~N");
+Clazz_makeConstructor (c$, 
+function (seqsel) {
+if (seqsel != null) {
+this.sequences =  new java.util.ArrayList ();
+this.sequences.addAll (seqsel.sequences);
+if (seqsel.groupName != null) {
+this.groupName =  String.instantialize (seqsel.groupName);
+}this.displayBoxes = seqsel.displayBoxes;
+this.displayText = seqsel.displayText;
+this.colourText = seqsel.colourText;
+this.startRes = seqsel.startRes;
+this.endRes = seqsel.endRes;
+this.cs = seqsel.cs;
+if (seqsel.description != null) {
+this.description =  String.instantialize (seqsel.description);
+}this.hidecols = seqsel.hidecols;
+this.hidereps = seqsel.hidereps;
+this.idColour = seqsel.idColour;
+this.outlineColour = seqsel.outlineColour;
+this.seqrep = seqsel.seqrep;
+this.textColour = seqsel.textColour;
+this.textColour2 = seqsel.textColour2;
+this.thresholdTextColour = seqsel.thresholdTextColour;
+this.width = seqsel.width;
+this.ignoreGapsInConsensus = seqsel.ignoreGapsInConsensus;
+if (seqsel.conserve != null) {
+this.recalcConservation ();
+}}}, "jalview.datamodel.SequenceGroup");
+Clazz_defineMethod (c$, "getSelectionAsNewSequences", 
+function (align) {
+var iSize = this.sequences.size ();
+var seqs =  new Array (iSize);
+var inorder = this.getSequencesInOrder (align);
+for (var i = 0, ipos = 0; i < inorder.length; i++) {
+var seq = inorder[i];
+seqs[ipos] = seq.getSubSequence (this.startRes, this.endRes + 1);
+if (seqs[ipos] != null) {
+seqs[ipos].setDescription (seq.getDescription ());
+seqs[ipos].setDBRef (seq.getDBRef ());
+seqs[ipos].setSequenceFeatures (seq.getSequenceFeatures ());
+if (seq.getDatasetSequence () != null) {
+seqs[ipos].setDatasetSequence (seq.getDatasetSequence ());
+}if (seq.getAnnotation () != null) {
+var alann = align.getAlignmentAnnotation ();
+for (var a = 0; a < seq.getAnnotation ().length; a++) {
+var tocopy = seq.getAnnotation ()[a];
+if (alann != null) {
+var found = false;
+for (var pos = 0; pos < alann.length; pos++) {
+if (alann[pos] === tocopy) {
+found = true;
+break;
+}}
+if (!found) {
+continue;
+}}var newannot =  new jalview.datamodel.AlignmentAnnotation (seq.getAnnotation ()[a]);
+newannot.restrict (this.startRes, this.endRes);
+newannot.setSequenceRef (seqs[ipos]);
+newannot.adjustForAlignment ();
+seqs[ipos].addAlignmentAnnotation (newannot);
+}
+}ipos++;
+} else {
+iSize--;
+}}
+if (iSize != inorder.length) {
+var nseqs =  new Array (iSize);
+System.arraycopy (seqs, 0, nseqs, 0, iSize);
+seqs = nseqs;
+}return seqs;
+}, "jalview.datamodel.AlignmentI");
+Clazz_defineMethod (c$, "findEndRes", 
+function (seq) {
+var eres = 0;
+var ch;
+for (var j = 0; j < this.endRes + 1 && j < seq.getLength (); j++) {
+ch = seq.getCharAt (j);
+if (!jalview.util.Comparison.isGap ((ch))) {
+eres++;
+}}
+if (eres > 0) {
+eres += seq.getStart () - 1;
+}return eres;
+}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "getSequences", 
+function () {
+return this.sequences;
+});
+Clazz_defineMethod (c$, "getSequences", 
+function (hiddenReps) {
+if (hiddenReps == null) {
+return this.sequences;
+} else {
+var allSequences =  new java.util.ArrayList ();
+for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+allSequences.add (seq);
+if (hiddenReps.containsKey (seq)) {
+var hsg = hiddenReps.get (seq);
+for (var seq2, $seq2 = hsg.getSequences ().iterator (); $seq2.hasNext () && ((seq2 = $seq2.next ()) || true);) {
+if (seq2 !== seq && !allSequences.contains (seq2)) {
+allSequences.add (seq2);
+}}
+}}
+return allSequences;
+}}, "java.util.Map");
+Clazz_defineMethod (c$, "getSequencesAsArray", 
+function (map) {
+var tmp = this.getSequences (map);
+if (tmp == null) {
+return null;
+}return tmp.toArray ( new Array (tmp.size ()));
+}, "java.util.Map");
+Clazz_defineMethod (c$, "adjustForRemoveLeft", 
+function (col) {
+if (this.startRes >= col) {
+this.startRes = this.startRes - col;
+}if (this.endRes >= col) {
+this.endRes = this.endRes - col;
+if (this.startRes > this.endRes) {
+this.startRes = 0;
+}} else {
+return false;
+}return true;
+}, "~N");
+Clazz_defineMethod (c$, "adjustForRemoveRight", 
+function (col) {
+if (this.startRes > col) {
+return false;
+}if (this.endRes >= col) {
+this.endRes = col;
+}return true;
+}, "~N");
+Clazz_defineMethod (c$, "getName", 
+function () {
+return this.groupName;
+});
+Clazz_defineMethod (c$, "getDescription", 
+function () {
+return this.description;
+});
+Clazz_defineMethod (c$, "setName", 
+function (name) {
+this.groupName = name;
+}, "~S");
+Clazz_defineMethod (c$, "setDescription", 
+function (desc) {
+this.description = desc;
+}, "~S");
+Clazz_defineMethod (c$, "getConservation", 
+function () {
+return this.conserve;
+});
+Clazz_defineMethod (c$, "setConservation", 
+function (c) {
+this.conserve = c;
+}, "jalview.analysis.Conservation");
+Clazz_defineMethod (c$, "addSequence", 
+function (s, recalc) {
+{
+if (s != null && !this.sequences.contains (s)) {
+this.sequences.add (s);
+}if (recalc) {
+this.recalcConservation ();
+}}}, "jalview.datamodel.SequenceI,~B");
+Clazz_defineMethod (c$, "getConsPercGaps", 
+function () {
+return this.consPercGaps;
+});
+Clazz_defineMethod (c$, "setConsPercGaps", 
+function (consPercGaps) {
+this.consPercGaps = consPercGaps;
+}, "~N");
+Clazz_defineMethod (c$, "recalcConservation", 
+function () {
+if (this.cs == null && this.consensus == null && this.conservation == null) {
+return;
+}try {
+var cnsns = jalview.analysis.AAFrequency.calculate (this.sequences, this.startRes, this.endRes + 1, this.showSequenceLogo);
+if (this.consensus != null) {
+this._updateConsensusRow (cnsns, this.sequences.size ());
+}if (this.cs != null) {
+this.cs.setConsensus (cnsns);
+}if ((this.conservation != null) || (this.cs != null && this.cs.conservationApplied ())) {
+var c =  new jalview.analysis.Conservation (this.groupName, jalview.schemes.ResidueProperties.propHash, 3, this.sequences, this.startRes, this.endRes + 1);
+c.calculate ();
+c.verdict (false, this.consPercGaps);
+if (this.conservation != null) {
+this._updateConservationRow (c);
+}if (this.cs != null) {
+if (this.cs.conservationApplied ()) {
+this.cs.setConservation (c);
+}}}if (this.cs != null) {
+this.cs.alignmentChanged (this.context != null ? this.context : this, null);
+}} catch (err) {
+if (Clazz_exceptionOf (err, OutOfMemoryError)) {
+System.out.println ("Out of memory loading groups: " + err);
+} else {
+throw err;
+}
+}
+});
+Clazz_defineMethod (c$, "_updateConservationRow", 
+ function (c) {
+if (this.conservation == null) {
+this.getConservation ();
+}this.conservation.label = "Conservation for " + this.getName ();
+this.conservation.description = "Conservation for group " + this.getName () + " less than " + this.consPercGaps + "% gaps";
+var aWidth = (this.conservation.annotations != null) ? (this.endRes < this.conservation.annotations.length ? this.conservation.annotations.length : this.endRes + 1) : this.endRes + 1;
+this.conservation.annotations = null;
+this.conservation.annotations =  new Array (aWidth);
+c.completeAnnotations (this.conservation, null, this.startRes, this.endRes + 1);
+}, "jalview.analysis.Conservation");
+Clazz_defineMethod (c$, "_updateConsensusRow", 
+ function (cnsns, nseq) {
+if (this.consensus == null) {
+this.getConsensus ();
+}this.consensus.label = "Consensus for " + this.getName ();
+this.consensus.description = "Percent Identity";
+this.consensusData = cnsns;
+var aWidth = (this.consensus.annotations != null) ? (this.endRes < this.consensus.annotations.length ? this.consensus.annotations.length : this.endRes + 1) : this.endRes + 1;
+this.consensus.annotations = null;
+this.consensus.annotations =  new Array (aWidth);
+jalview.analysis.AAFrequency.completeConsensus (this.consensus, cnsns, this.startRes, this.endRes + 1, this.ignoreGapsInConsensus, this.showSequenceLogo, nseq);
+}, "~A,~N");
+Clazz_defineMethod (c$, "addOrRemove", 
+function (s, recalc) {
+{
+if (this.sequences.contains (s)) {
+this.deleteSequence (s, recalc);
+} else {
+this.addSequence (s, recalc);
+}}}, "jalview.datamodel.SequenceI,~B");
+Clazz_defineMethod (c$, "deleteSequence", 
+function (s, recalc) {
+{
+this.sequences.remove (s);
+if (recalc) {
+this.recalcConservation ();
+}}}, "jalview.datamodel.SequenceI,~B");
+Clazz_overrideMethod (c$, "getStartRes", 
+function () {
+return this.startRes;
+});
+Clazz_overrideMethod (c$, "getEndRes", 
+function () {
+return this.endRes;
+});
+Clazz_defineMethod (c$, "setStartRes", 
+function (i) {
+this.startRes = i;
+}, "~N");
+Clazz_defineMethod (c$, "setEndRes", 
+function (i) {
+this.endRes = i;
+}, "~N");
+Clazz_defineMethod (c$, "getSize", 
+function () {
+return this.sequences.size ();
+});
+Clazz_defineMethod (c$, "getSequenceAt", 
+function (i) {
+return this.sequences.get (i);
+}, "~N");
+Clazz_defineMethod (c$, "setColourText", 
+function (state) {
+this.colourText = state;
+}, "~B");
+Clazz_defineMethod (c$, "getColourText", 
+function () {
+return this.colourText;
+});
+Clazz_defineMethod (c$, "setDisplayText", 
+function (state) {
+this.displayText = state;
+}, "~B");
+Clazz_defineMethod (c$, "getDisplayText", 
+function () {
+return this.displayText;
+});
+Clazz_defineMethod (c$, "setDisplayBoxes", 
+function (state) {
+this.displayBoxes = state;
+}, "~B");
+Clazz_defineMethod (c$, "getDisplayBoxes", 
+function () {
+return this.displayBoxes;
+});
+Clazz_overrideMethod (c$, "getWidth", 
+function () {
+{
+var first = true;
+for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+if (first || seq.getLength () > this.width) {
+this.width = seq.getLength ();
+first = false;
+}}
+return this.width;
+}});
+Clazz_defineMethod (c$, "setOutlineColour", 
+function (c) {
+this.outlineColour = c;
+}, "java.awt.Color");
+Clazz_defineMethod (c$, "getOutlineColour", 
+function () {
+return this.outlineColour;
+});
+Clazz_defineMethod (c$, "getSequencesInOrder", 
+function (al) {
+return this.getSequencesInOrder (al, true);
+}, "jalview.datamodel.AlignmentI");
+Clazz_defineMethod (c$, "getSequencesInOrder", 
+function (al, trim) {
+{
+var sSize = this.sequences.size ();
+var alHeight = al.getHeight ();
+var seqs =  new Array ((trim) ? sSize : alHeight);
+var index = 0;
+for (var i = 0; i < alHeight && index < sSize; i++) {
+if (this.sequences.contains (al.getSequenceAt (i))) {
+seqs[(trim) ? index : i] = al.getSequenceAt (i);
+index++;
+}}
+if (index == 0) {
+return null;
+}if (!trim) {
+return seqs;
+}if (index < seqs.length) {
+var dummy = seqs;
+seqs =  new Array (index);
+while (--index >= 0) {
+seqs[index] = dummy[index];
+dummy[index] = null;
+}
+}return seqs;
+}}, "jalview.datamodel.AlignmentI,~B");
+Clazz_defineMethod (c$, "getIdColour", 
+function () {
+return this.idColour;
+});
+Clazz_defineMethod (c$, "setIdColour", 
+function (idColour) {
+this.idColour = idColour;
+}, "java.awt.Color");
+Clazz_overrideMethod (c$, "getSeqrep", 
+function () {
+return this.seqrep;
+});
+Clazz_overrideMethod (c$, "setSeqrep", 
+function (seqrep) {
+this.seqrep = seqrep;
+}, "jalview.datamodel.SequenceI");
+Clazz_overrideMethod (c$, "hasSeqrep", 
+function () {
+return this.seqrep != null;
+});
+Clazz_defineMethod (c$, "setHidereps", 
+function (visibility) {
+this.hidereps = visibility;
+}, "~B");
+Clazz_defineMethod (c$, "isHidereps", 
+function () {
+return this.hidereps;
+});
+Clazz_defineMethod (c$, "setHideCols", 
+function (visibility) {
+this.hidecols = visibility;
+}, "~B");
+Clazz_defineMethod (c$, "isHideCols", 
+function () {
+return this.hidecols;
+});
+Clazz_defineMethod (c$, "intersect", 
+function (alignment, map) {
+var sgroup =  new jalview.datamodel.SequenceGroup (this);
+var insect = this.getSequencesInOrder (alignment);
+sgroup.sequences =  new java.util.ArrayList ();
+for (var s = 0; insect != null && s < insect.length; s++) {
+if (map == null || map.containsKey (insect[s])) {
+sgroup.sequences.add (insect[s]);
+}}
+return sgroup;
+}, "jalview.datamodel.AlignmentI,java.util.Map");
+Clazz_defineMethod (c$, "getShowNonconserved", 
+function () {
+return this.showNonconserved;
+});
+Clazz_defineMethod (c$, "setShowNonconserved", 
+function (displayNonconserved) {
+this.showNonconserved = displayNonconserved;
+}, "~B");
+Clazz_defineMethod (c$, "setConsensus", 
+function (aan) {
+if (this.consensus == null) {
+this.consensus = aan;
+}}, "jalview.datamodel.AlignmentAnnotation");
+Clazz_defineMethod (c$, "getConsensus", 
+function () {
+var aWidth = this.getWidth ();
+if (aWidth < 0) {
+return null;
+}if (this.consensus == null) {
+this.consensus =  new jalview.datamodel.AlignmentAnnotation ("", "",  new Array (1), 0, 100, 1);
+this.consensus.hasText = true;
+this.consensus.autoCalculated = true;
+this.consensus.groupRef = this;
+this.consensus.label = "Consensus for " + this.getName ();
+this.consensus.description = "Percent Identity";
+}return this.consensus;
+});
+Clazz_defineMethod (c$, "setConservationRow", 
+function (aan) {
+if (this.conservation == null) {
+this.conservation = aan;
+}}, "jalview.datamodel.AlignmentAnnotation");
+Clazz_defineMethod (c$, "getConservationRow", 
+function () {
+if (this.conservation == null) {
+this.conservation =  new jalview.datamodel.AlignmentAnnotation ("", "",  new Array (1), 0, 11, 1);
+}this.conservation.hasText = true;
+this.conservation.autoCalculated = true;
+this.conservation.groupRef = this;
+this.conservation.label = "Conservation for " + this.getName ();
+this.conservation.description = "Conservation for group " + this.getName () + " less than " + this.consPercGaps + "% gaps";
+return this.conservation;
+});
+Clazz_defineMethod (c$, "hasAnnotationRows", 
+function () {
+return this.consensus != null || this.conservation != null;
+});
+Clazz_defineMethod (c$, "getConsensusSeq", 
+function () {
+this.getConsensus ();
+var seqs =  new StringBuffer ();
+for (var i = 0; i < this.consensus.annotations.length; i++) {
+if (this.consensus.annotations[i] != null) {
+if (this.consensus.annotations[i].description.charAt (0) == '[') {
+seqs.append (this.consensus.annotations[i].description.charAt (1));
+} else {
+seqs.append (this.consensus.annotations[i].displayCharacter);
+}}}
+var sq =  new jalview.datamodel.Sequence ("Group" + this.getName () + " Consensus", seqs.toString ());
+sq.setDescription ("Percentage Identity Consensus " + ((this.ignoreGapsInConsensus) ? " without gaps" : ""));
+return sq;
+});
+Clazz_defineMethod (c$, "setIgnoreGapsConsensus", 
+function (state) {
+if (this.ignoreGapsInConsensus != state && this.consensus != null) {
+this.ignoreGapsInConsensus = state;
+this.recalcConservation ();
+}this.ignoreGapsInConsensus = state;
+}, "~B");
+Clazz_defineMethod (c$, "getIgnoreGapsConsensus", 
+function () {
+return this.ignoreGapsInConsensus;
+});
+Clazz_defineMethod (c$, "setshowSequenceLogo", 
+function (showSequenceLogo) {
+if (this.showSequenceLogo != showSequenceLogo && this.consensus != null) {
+this.showSequenceLogo = showSequenceLogo;
+this.recalcConservation ();
+}this.showSequenceLogo = showSequenceLogo;
+}, "~B");
+Clazz_defineMethod (c$, "setShowConsensusHistogram", 
+function (showConsHist) {
+if (this.showConsensusHistogram != showConsHist && this.consensus != null) {
+this.showConsensusHistogram = showConsHist;
+this.recalcConservation ();
+}this.showConsensusHistogram = showConsHist;
+}, "~B");
+Clazz_defineMethod (c$, "isShowConsensusHistogram", 
+function () {
+return this.showConsensusHistogram;
+});
+Clazz_defineMethod (c$, "setNormaliseSequenceLogo", 
+function (norm) {
+this.normaliseSequenceLogo = norm;
+}, "~B");
+Clazz_defineMethod (c$, "isNormaliseSequenceLogo", 
+function () {
+return this.normaliseSequenceLogo;
+});
+Clazz_overrideMethod (c$, "getAlignmentAnnotation", 
+function () {
+var annot =  new java.util.ArrayList ();
+{
+for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+var aa = seq.getAnnotation ();
+if (aa != null) {
+for (var al, $al = 0, $$al = aa; $al < $$al.length && ((al = $$al[$al]) || true); $al++) {
+if (al.groupRef === this) {
+annot.add (al);
+}}
+}}
+if (this.consensus != null) {
+annot.add (this.consensus);
+}if (this.conservation != null) {
+annot.add (this.conservation);
+}}return annot.toArray ( new Array (0));
+});
+Clazz_overrideMethod (c$, "findAnnotation", 
+function (calcId) {
+var aa =  new java.util.ArrayList ();
+for (var a, $a = 0, $$a = this.getAlignmentAnnotation (); $a < $$a.length && ((a = $$a[$a]) || true); $a++) {
+if (a.getCalcId () === calcId) {
+aa.add (a);
+}}
+return aa;
+}, "~S");
+Clazz_overrideMethod (c$, "findAnnotations", 
+function (seq, calcId, label) {
+var aa =  new java.util.ArrayList ();
+for (var ann, $ann = 0, $$ann = this.getAlignmentAnnotation (); $ann < $$ann.length && ((ann = $$ann[$ann]) || true); $ann++) {
+if (ann.getCalcId () != null && ann.getCalcId ().equals (calcId) && ann.sequenceRef != null && ann.sequenceRef === seq && ann.label != null && ann.label.equals (label)) {
+aa.add (ann);
+}}
+return aa;
+}, "jalview.datamodel.SequenceI,~S,~S");
+Clazz_defineMethod (c$, "hasAnnotation", 
+function (calcId) {
+if (calcId != null && !"".equals (calcId)) {
+for (var a, $a = 0, $$a = this.getAlignmentAnnotation (); $a < $$a.length && ((a = $$a[$a]) || true); $a++) {
+if (a.getCalcId () === calcId) {
+return true;
+}}
+}return false;
+}, "~S");
+Clazz_defineMethod (c$, "clear", 
+function () {
+{
+this.sequences.clear ();
+}});
+Clazz_defineMethod (c$, "setContext", 
+function (context) {
+this.context = context;
+}, "jalview.datamodel.AnnotatedCollectionI");
+Clazz_overrideMethod (c$, "getContext", 
+function () {
+return this.context;
+});
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["jalview.datamodel.SequenceCollectionI"], "jalview.datamodel.AnnotatedCollectionI", null, function () {
+Clazz_declareInterface (jalview.datamodel, "AnnotatedCollectionI", jalview.datamodel.SequenceCollectionI);
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_declareInterface (jalview.datamodel, "SequenceCollectionI");
+Clazz_declarePackage ("jalview.analysis");
+Clazz_load (null, "jalview.analysis.AAFrequency", ["jalview.analysis.CodingUtils", "jalview.datamodel.Annotation", "jalview.util.Format", "$.MappingUtils", "$.QuickSort", "java.lang.Float", "$.StringBuilder", "java.util.Arrays", "$.Hashtable"], function () {
+c$ = Clazz_declareType (jalview.analysis, "AAFrequency");
+c$.calculate = Clazz_defineMethod (c$, "calculate", 
+function (list, start, end) {
+return jalview.analysis.AAFrequency.calculate (list, start, end, false);
+}, "java.util.List,~N,~N");
+c$.calculate = Clazz_defineMethod (c$, "calculate", 
+function (sequences, start, end, profile) {
+var seqs =  new Array (sequences.size ());
+var width = 0;
+{
+for (var i = 0; i < sequences.size (); i++) {
+seqs[i] = sequences.get (i);
+if (seqs[i].getLength () > width) {
+width = seqs[i].getLength ();
+}}
+var reply =  new Array (width);
+if (end >= width) {
+end = width;
+}jalview.analysis.AAFrequency.calculate (seqs, start, end, reply, profile);
+return reply;
+}}, "java.util.List,~N,~N,~B");
+c$.calculate = Clazz_defineMethod (c$, "calculate", 
+function (sequences, start, end, result, profile) {
+var residueHash;
+var maxCount;
+var nongap;
+var i;
+var j;
+var v;
+var jSize = sequences.length;
+var maxResidue;
+var c = '-';
+var percentage;
+var values =  Clazz_newIntArray (255, 0);
+var seq;
+for (i = start; i < end; i++) {
+residueHash =  new java.util.Hashtable ();
+maxCount = 0;
+maxResidue = "";
+nongap = 0;
+values =  Clazz_newIntArray (255, 0);
+for (j = 0; j < jSize; j++) {
+if (sequences[j] == null) {
+System.err.println ("WARNING: Consensus skipping null sequence - possible race condition.");
+continue;
+}seq = sequences[j].getSequence ();
+if (seq.length > i) {
+c = seq[i];
+if (c == '.' || c == ' ') {
+c = '-';
+}if (c == '-') {
+values['-'.charCodeAt (0)]++;
+continue;
+} else if ('a' <= c && c <= 'z') {
+c = String.fromCharCode (c.charCodeAt (0) + -32);
+}nongap++;
+values[c.charCodeAt (0)]++;
+} else {
+values['-'.charCodeAt (0)]++;
+}}
+if (jSize == 1) {
+maxResidue = String.valueOf (c);
+maxCount = 1;
+} else {
+for (v = 65; v <= 90; v++) {
+if (values[v] < 1 || values[v] < maxCount) {
+continue;
+}if (values[v] > maxCount) {
+maxResidue = jalview.analysis.AAFrequency.CHARS[v - 65];
+} else if (values[v] == maxCount) {
+maxResidue += jalview.analysis.AAFrequency.CHARS[v - 65];
+}maxCount = values[v];
+}
+}if (maxResidue.length == 0) {
+maxResidue = "-";
+}if (profile) {
+residueHash.put ("P",  Clazz_newArray (-1, [values,  Clazz_newIntArray (-1, [jSize, nongap])]));
+}residueHash.put ("C",  new Integer (maxCount));
+residueHash.put ("R", maxResidue);
+percentage = (maxCount * 100) / jSize;
+residueHash.put ("G",  new Float (percentage));
+if (nongap > 0) {
+percentage = (maxCount * 100) / nongap;
+}residueHash.put ("N",  new Float (percentage));
+result[i] = residueHash;
+}
+}, "~A,~N,~N,~A,~B");
+c$.completeConsensus = Clazz_defineMethod (c$, "completeConsensus", 
+function (consensus, hconsensus, iStart, width, ignoreGapsInConsensusCalculation, includeAllConsSymbols, nseq) {
+jalview.analysis.AAFrequency.completeConsensus (consensus, hconsensus, iStart, width, ignoreGapsInConsensusCalculation, includeAllConsSymbols, null, nseq);
+}, "jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~B,~B,~N");
+c$.completeConsensus = Clazz_defineMethod (c$, "completeConsensus", 
+function (consensus, hconsensus, iStart, width, ignoreGapsInConsensusCalculation, includeAllConsSymbols, alphabet, nseq) {
+if (consensus == null || consensus.annotations == null || consensus.annotations.length < width) {
+return;
+}var fmt = jalview.analysis.AAFrequency.getPercentageFormat (nseq);
+for (var i = iStart; i < width; i++) {
+var hci;
+if (i >= hconsensus.length || ((hci = hconsensus[i]) == null)) {
+consensus.annotations[i] = null;
+continue;
+}var fv = hci.get (ignoreGapsInConsensusCalculation ? "N" : "G");
+if (fv == null) {
+consensus.annotations[i] = null;
+continue;
+}var value = fv.floatValue ();
+var maxRes = hci.get ("R").toString ();
+var mouseOver =  new StringBuilder (64);
+if (maxRes.length > 1) {
+mouseOver.append ("[").append (maxRes).append ("] ");
+maxRes = "+";
+} else {
+mouseOver.append (hci.get ("R") + " ");
+}var profile = hci.get ("P");
+if (profile != null && includeAllConsSymbols) {
+var sequenceCount = profile[1][0];
+var nonGappedCount = profile[1][1];
+var normalisedBy = ignoreGapsInConsensusCalculation ? nonGappedCount : sequenceCount;
+mouseOver.setLength (0);
+if (alphabet != null) {
+for (var c = 0; c < alphabet.length; c++) {
+var tval = profile[0][alphabet[c].charCodeAt (0)] * 100 / normalisedBy;
+mouseOver.append (((c == 0) ? "" : "; ")).append (alphabet[c]).append (" ").append (((fmt != null) ? fmt.formDouble (tval) : (Clazz_floatToInt (tval)))).append ("%");
+}
+} else {
+var ca =  Clazz_newCharArray (profile[0].length, '\0');
+var vl =  Clazz_newFloatArray (profile[0].length, 0);
+for (var c = 0; c < ca.length; c++) {
+ca[c] = String.fromCharCode (c);
+vl[c] = profile[0][c];
+}
+jalview.util.QuickSort.sortFloatChar (vl, ca);
+for (var p = 0, c = ca.length - 1; profile[0][ca[c].charCodeAt (0)] > 0; c--) {
+var residue = ca[c];
+if (residue != '-') {
+var tval = profile[0][residue.charCodeAt (0)] * 100 / normalisedBy;
+mouseOver.append ((((p == 0) ? "" : "; "))).append (residue).append (" ").append (((fmt != null) ? fmt.formDouble (tval) : (Clazz_floatToInt (tval)))).append ("%");
+p++;
+}}
+}} else {
+mouseOver.append ((((fmt != null) ? fmt.formDouble (value) : (Clazz_floatToInt (value))))).append ("%");
+}consensus.annotations[i] =  new jalview.datamodel.Annotation (maxRes, mouseOver.toString (), ' ', value);
+}
+}, "jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~B,~B,~A,~N");
+c$.getPercentageFormat = Clazz_defineMethod (c$, "getPercentageFormat", 
+function (nseq) {
+var scale = 0;
+while (nseq >= 10) {
+scale++;
+nseq /= 10;
+}
+return scale <= 1 ? null :  new jalview.util.Format ("%3." + (scale - 1) + "f");
+}, "~N");
+c$.extractProfile = Clazz_defineMethod (c$, "extractProfile", 
+function (hconsensus, ignoreGaps) {
+var rtnval =  Clazz_newIntArray (64, 0);
+var profile = hconsensus.get ("P");
+if (profile == null) {
+return null;
+}var ca =  Clazz_newCharArray (profile[0].length, '\0');
+var vl =  Clazz_newFloatArray (profile[0].length, 0);
+for (var c = 0; c < ca.length; c++) {
+ca[c] = String.fromCharCode (c);
+vl[c] = profile[0][c];
+}
+jalview.util.QuickSort.sortFloatChar (vl, ca);
+var nextArrayPos = 2;
+var totalPercentage = 0;
+var distinctValuesCount = 0;
+var divisor = profile[1][ignoreGaps ? 1 : 0];
+for (var c = ca.length - 1; profile[0][ca[c].charCodeAt (0)] > 0; c--) {
+if (ca[c] != '-') {
+rtnval[nextArrayPos++] = (ca[c]).charCodeAt (0);
+var percentage = Clazz_floatToInt (profile[0][ca[c].charCodeAt (0)] * 100 / divisor);
+rtnval[nextArrayPos++] = percentage;
+totalPercentage += percentage;
+distinctValuesCount++;
+}}
+rtnval[0] = distinctValuesCount;
+rtnval[1] = totalPercentage;
+var result =  Clazz_newIntArray (rtnval.length + 1, 0);
+result[0] = 0;
+System.arraycopy (rtnval, 0, result, 1, rtnval.length);
+return result;
+}, "java.util.Hashtable,~B");
+c$.extractCdnaProfile = Clazz_defineMethod (c$, "extractCdnaProfile", 
+function (hashtable, ignoreGaps) {
+var codonCounts = hashtable.get ("P");
+var sortedCounts =  Clazz_newIntArray (codonCounts.length - 2, 0);
+System.arraycopy (codonCounts, 2, sortedCounts, 0, codonCounts.length - 2);
+var result =  Clazz_newIntArray (3 + 2 * sortedCounts.length, 0);
+result[0] = 2;
+var codons =  Clazz_newCharArray (sortedCounts.length, '\0');
+for (var i = 0; i < codons.length; i++) {
+codons[i] = String.fromCharCode (i);
+}
+jalview.util.QuickSort.sortIntChar (sortedCounts, codons);
+var totalPercentage = 0;
+var distinctValuesCount = 0;
+var j = 3;
+var divisor = ignoreGaps ? codonCounts[1] : codonCounts[0];
+for (var i = codons.length - 1; i >= 0; i--) {
+var codonCount = sortedCounts[i];
+if (codonCount == 0) {
+break;
+}distinctValuesCount++;
+result[j++] = (codons[i]).charCodeAt (0);
+var percentage = Clazz_doubleToInt (codonCount * 100 / divisor);
+result[j++] = percentage;
+totalPercentage += percentage;
+}
+result[2] = totalPercentage;
+result[1] = distinctValuesCount;
+return java.util.Arrays.copyOfRange (result, 0, j);
+}, "java.util.Hashtable,~B");
+c$.calculateCdna = Clazz_defineMethod (c$, "calculateCdna", 
+function (alignment, mappings, hconsensus, col0, col1) {
+var gapCharacter = alignment.getGapCharacter ();
+for (var col = col0; col < col1; col++) {
+var columnHash =  new java.util.Hashtable ();
+var codonCounts =  Clazz_newIntArray (66, 0);
+codonCounts[0] = alignment.getSequences ().size ();
+var ungappedCount = 0;
+for (var seq, $seq = alignment.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+if (seq.getCharAt (col) == gapCharacter) {
+continue;
+}var codon = jalview.util.MappingUtils.findCodonFor (seq, col, mappings);
+var codonEncoded = jalview.analysis.CodingUtils.encodeCodon (codon);
+if (codonEncoded >= 0) {
+codonCounts[codonEncoded + 2]++;
+ungappedCount++;
+}}
+codonCounts[1] = ungappedCount;
+columnHash.put ("P", codonCounts);
+hconsensus[col] = columnHash;
+}
+}, "jalview.datamodel.AlignmentI,java.util.Set,~A,~N,~N");
+c$.completeCdnaConsensus = Clazz_defineMethod (c$, "completeCdnaConsensus", 
+function (consensusAnnotation, consensusData, showProfileLogo, nseqs) {
+if (consensusAnnotation == null || consensusAnnotation.annotations == null || consensusAnnotation.annotations.length < consensusData.length) {
+return;
+}consensusAnnotation.scaleColLabel = true;
+for (var col = 0; col < consensusData.length; col++) {
+var hci = consensusData[col];
+if (hci == null) {
+continue;
+}var codonCounts = hci.get ("P");
+var totalCount = 0;
+var codons =  Clazz_newCharArray (codonCounts.length - 2, '\0');
+for (var j = 2; j < codonCounts.length; j++) {
+var codonCount = codonCounts[j];
+codons[j - 2] = String.fromCharCode (j - 2);
+totalCount += codonCount;
+}
+var sortedCodonCounts =  Clazz_newIntArray (codonCounts.length - 2, 0);
+System.arraycopy (codonCounts, 2, sortedCodonCounts, 0, codonCounts.length - 2);
+jalview.util.QuickSort.sortIntChar (sortedCodonCounts, codons);
+var modalCodonEncoded = (codons[codons.length - 1]).charCodeAt (0);
+var modalCodonCount = sortedCodonCounts[codons.length - 1];
+var modalCodon = String.valueOf (jalview.analysis.CodingUtils.decodeCodon (modalCodonEncoded));
+if (sortedCodonCounts.length > 1 && sortedCodonCounts[codons.length - 2] == modalCodonEncoded) {
+modalCodon = "+";
+}var pid = sortedCodonCounts[sortedCodonCounts.length - 1] * 100 / totalCount;
+var mouseOver =  new StringBuilder (32);
+var samePercent =  new StringBuilder ();
+var percent = null;
+var lastPercent = null;
+var fmt = jalview.analysis.AAFrequency.getPercentageFormat (nseqs);
+for (var j = codons.length - 1; j >= 0; j--) {
+var codonCount = sortedCodonCounts[j];
+if (codonCount == 0) {
+if (samePercent.length () > 0) {
+mouseOver.append (samePercent).append (": ").append (percent).append ("% ");
+}break;
+}var codonEncoded = (codons[j]).charCodeAt (0);
+var pct = Clazz_doubleToInt (codonCount * 100 / totalCount);
+var codon = String.valueOf (jalview.analysis.CodingUtils.decodeCodon (codonEncoded));
+percent = fmt == null ? Integer.toString (pct) : fmt.formLong (pct);
+if (showProfileLogo || codonCount == modalCodonCount) {
+if (percent.equals (lastPercent) && j > 0) {
+samePercent.append (samePercent.length () == 0 ? "" : ", ");
+samePercent.append (codon);
+} else {
+if (samePercent.length () > 0) {
+mouseOver.append (samePercent).append (": ").append (lastPercent).append ("% ");
+}samePercent.setLength (0);
+samePercent.append (codon);
+}lastPercent = percent;
+}}
+consensusAnnotation.annotations[col] =  new jalview.datamodel.Annotation (modalCodon, mouseOver.toString (), ' ', pid);
+}
+}, "jalview.datamodel.AlignmentAnnotation,~A,~B,~N");
+Clazz_defineStatics (c$,
+"TO_UPPER_CASE", -32,
+"MAXCOUNT", "C",
+"MAXRESIDUE", "R",
+"PID_GAPS", "G",
+"PID_NOGAPS", "N",
+"PROFILE", "P",
+"ENCODED_CHARS", "E");
+c$.CHARS = c$.prototype.CHARS =  new Array (26);
+{
+for (var c = 'A'; c <= 'Z'; c = String.fromCharCode (c.charCodeAt (0) + 1)) {
+jalview.analysis.AAFrequency.CHARS[c.charCodeAt (0) - 65] = String.valueOf (c);
+}
+}});
+Clazz_declarePackage ("jalview.analysis");
+c$ = Clazz_declareType (jalview.analysis, "CodingUtils");
+c$.encodeCodon = Clazz_defineMethod (c$, "encodeCodon", 
+function (codon) {
+if (codon == null) {
+return -1;
+}return jalview.analysis.CodingUtils.encodeCodon (codon[2]) + (jalview.analysis.CodingUtils.encodeCodon (codon[1]) << 2) + (jalview.analysis.CodingUtils.encodeCodon (codon[0]) << (4));
+}, "~A");
+c$.encodeCodon = Clazz_defineMethod (c$, "encodeCodon", 
+function (c) {
+var result = -2147483648;
+switch (c) {
+case 'A':
+case 'a':
+result = 0;
+break;
+case 'C':
+case 'c':
+result = 1;
+break;
+case 'G':
+case 'g':
+result = 2;
+break;
+case 'T':
+case 't':
+case 'U':
+case 'u':
+result = 3;
+break;
+}
+return result;
+}, "~S");
+c$.decodeCodon = Clazz_defineMethod (c$, "decodeCodon", 
+function (encoded) {
+var result =  Clazz_newCharArray (3, '\0');
+result[2] = jalview.analysis.CodingUtils.decodeNucleotide (encoded & 3);
+encoded = encoded >>> 2;
+result[1] = jalview.analysis.CodingUtils.decodeNucleotide (encoded & 3);
+encoded = encoded >>> 2;
+result[0] = jalview.analysis.CodingUtils.decodeNucleotide (encoded & 3);
+return result;
+}, "~N");
+c$.decodeNucleotide = Clazz_defineMethod (c$, "decodeNucleotide", 
+function (i) {
+var result = '0';
+switch (i) {
+case 0:
+result = 'A';
+break;
+case 1:
+result = 'C';
+break;
+case 2:
+result = 'G';
+break;
+case 3:
+result = 'T';
+break;
+}
+return result;
+}, "~N");
+Clazz_defineStatics (c$,
+"CODON_ENCODING_BITSHIFT", 2);
+Clazz_declarePackage ("jalview.analysis");
+Clazz_load (null, "jalview.analysis.Conservation", ["jalview.datamodel.Annotation", "$.Sequence", "jalview.schemes.ResidueProperties", "jalview.util.Comparison", "java.awt.Color", "java.lang.Character", "$.Double", "$.StringBuffer", "java.util.Hashtable", "$.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.sequences = null;
+this.start = 0;
+this.end = 0;
+this.seqNums = null;
+this.maxLength = 0;
+this.seqNumsChanged = false;
+this.total = null;
+this.canonicaliseAa = true;
+this.quality = null;
+this.qualityRange = null;
+this.consString = "";
+this.consSequence = null;
+this.propHash = null;
+this.threshold = 0;
+this.name = "";
+this.cons2 = null;
+this.consSymbs = null;
+Clazz_instantialize (this, arguments);
+}, jalview.analysis, "Conservation");
+Clazz_prepareFields (c$, function () {
+this.qualityRange =  new Array (2);
+});
+Clazz_makeConstructor (c$, 
+function (name, propHash, threshold, sequences, start, end) {
+this.name = name;
+this.propHash = propHash;
+this.threshold = threshold;
+this.start = start;
+this.end = end;
+this.maxLength = end - start + 1;
+var s;
+var sSize = sequences.size ();
+var sarray =  new Array (sSize);
+this.sequences = sarray;
+try {
+for (s = 0; s < sSize; s++) {
+sarray[s] = sequences.get (s);
+if (sarray[s].getLength () > this.maxLength) {
+this.maxLength = sarray[s].getLength ();
+}}
+} catch (ex) {
+if (Clazz_exceptionOf (ex, ArrayIndexOutOfBoundsException)) {
+this.sequences =  new Array (0);
+this.maxLength = 0;
+} else {
+throw ex;
+}
+}
+}, "~S,java.util.Hashtable,~N,java.util.List,~N,~N");
+Clazz_defineMethod (c$, "calcSeqNum", 
+ function (i) {
+var sq = null;
+var sqnum = null;
+var sSize = this.sequences.length;
+if ((i > -1) && (i < sSize)) {
+sq = this.sequences[i].getSequenceAsString ();
+if (this.seqNums.size () <= i) {
+this.seqNums.addElement ( Clazz_newIntArray (sq.length + 1, 0));
+}if (sq.hashCode () != (this.seqNums.elementAt (i))[0]) {
+var j;
+var len;
+this.seqNumsChanged = true;
+len = sq.length;
+if (this.maxLength < len) {
+this.maxLength = len;
+}sqnum =  Clazz_newIntArray (len + 1, 0);
+sqnum[0] = sq.hashCode ();
+for (j = 1; j <= len; j++) {
+sqnum[j] = jalview.schemes.ResidueProperties.aaIndex[sq.charCodeAt (j - 1)];
+}
+this.seqNums.setElementAt (sqnum, i);
+} else {
+System.out.println ("SEQUENCE HAS BEEN DELETED!!!");
+}} else {
+System.err.println ("ERROR: calcSeqNum called with out of range sequence index for Alignment\n");
+}}, "~N");
+Clazz_defineMethod (c$, "calculate", 
+function () {
+var resultHash;
+var ht;
+var thresh;
+var j;
+var jSize = this.sequences.length;
+var values;
+var type;
+var res = null;
+var c;
+var enumeration2;
+this.total =  new Array (this.maxLength);
+for (var i = this.start; i <= this.end; i++) {
+values =  Clazz_newIntArray (255, 0);
+for (j = 0; j < jSize; j++) {
+if (this.sequences[j].getLength () > i) {
+c = this.sequences[j].getCharAt (i);
+if (this.canonicaliseAa) {
+c = String.fromCharCode (jalview.schemes.ResidueProperties.aaIndex[this.sequences[j].getCharAt (i).charCodeAt (0)]);
+if (c.charCodeAt (0) > 20) {
+c = '-';
+} else {
+c = jalview.schemes.ResidueProperties.aa[c.charCodeAt (0)].charAt (0);
+}} else {
+if (c == '.' || c == ' ') {
+c = '-';
+}if (!this.canonicaliseAa && 'a' <= c && c <= 'z') {
+c = String.fromCharCode (c.charCodeAt (0) - (32));
+}}values[c.charCodeAt (0)]++;
+} else {
+values['-'.charCodeAt (0)]++;
+}}
+thresh = Clazz_doubleToInt ((this.threshold * (jSize)) / 100);
+resultHash =  new java.util.Hashtable ();
+for (var v = '-'; v < 'Z'; v = String.fromCharCode (v.charCodeAt (0) + 1)) {
+if (values[v.charCodeAt (0)] > thresh) {
+res = String.valueOf (v);
+enumeration2 = this.propHash.keys ();
+while (enumeration2.hasMoreElements ()) {
+type = enumeration2.nextElement ();
+ht = this.propHash.get (type);
+if (!resultHash.containsKey (type)) {
+if (ht.containsKey (res)) {
+resultHash.put (type, ht.get (res));
+} else {
+resultHash.put (type, ht.get ("-"));
+}} else if ((resultHash.get (type)).equals (ht.get (res)) == false) {
+resultHash.put (type,  new Integer (-1));
+}}
+}}
+if (this.total.length > 0) {
+this.total[i - this.start] = resultHash;
+}}
+});
+Clazz_defineMethod (c$, "countConsNGaps", 
+function (j) {
+var count = 0;
+var cons = 0;
+var nres = 0;
+var r =  Clazz_newIntArray (2, 0);
+var f = '$';
+var i;
+var iSize = this.sequences.length;
+var c;
+for (i = 0; i < iSize; i++) {
+if (j >= this.sequences[i].getLength ()) {
+count++;
+continue;
+}c = this.sequences[i].getCharAt (j);
+if (jalview.util.Comparison.isGap ((c))) {
+count++;
+} else {
+nres++;
+if (nres == 1) {
+f = c;
+cons++;
+} else if (f == c) {
+cons++;
+}}}
+r[0] = (nres == cons) ? 1 : 0;
+r[1] = count;
+return r;
+}, "~N");
+Clazz_defineMethod (c$, "verdict", 
+function (consflag, percentageGaps) {
+var consString =  new StringBuffer ();
+var type;
+var result;
+var gapcons;
+var totGaps;
+var count;
+var pgaps;
+var resultHash;
+var enumeration;
+for (var i = 0; i < this.start; i++) {
+consString.append ('-');
+}
+this.consSymbs =  new Array (this.end - this.start + 1);
+for (var i = this.start; i <= this.end; i++) {
+gapcons = this.countConsNGaps (i);
+totGaps = gapcons[1];
+pgaps = (totGaps * 100) / this.sequences.length;
+this.consSymbs[i - this.start] =  String.instantialize ();
+if (percentageGaps > pgaps) {
+resultHash = this.total[i - this.start];
+count = 0;
+enumeration = resultHash.keys ();
+while (enumeration.hasMoreElements ()) {
+type = enumeration.nextElement ();
+result = resultHash.get (type);
+if (consflag) {
+if (result.intValue () == 1) {
+this.consSymbs[i - this.start] = type + " " + this.consSymbs[i - this.start];
+count++;
+}} else {
+if (result.intValue () != -1) {
+{
+if (result.intValue () == 0) {
+this.consSymbs[i - this.start] = this.consSymbs[i - this.start] + " !" + type;
+} else {
+this.consSymbs[i - this.start] = type + " " + this.consSymbs[i - this.start];
+}}count++;
+}}}
+if (count < 10) {
+consString.append ("" + count);
+} else {
+consString.append ((gapcons[0] == 1) ? "*" : "+");
+}} else {
+consString.append ('-');
+}}
+this.consSequence =  new jalview.datamodel.Sequence (this.name, consString.toString (), this.start, this.end);
+}, "~B,~N");
+Clazz_defineMethod (c$, "getConsSequence", 
+function () {
+return this.consSequence;
+});
+Clazz_defineMethod (c$, "findQuality", 
+function () {
+this.findQuality (0, this.maxLength - 1);
+});
+Clazz_defineMethod (c$, "percentIdentity2", 
+ function () {
+this.seqNums =  new java.util.Vector ();
+var i = 0;
+var iSize = this.sequences.length;
+for (i = 0; i < iSize; i++) {
+this.calcSeqNum (i);
+}
+if ((this.cons2 == null) || this.seqNumsChanged) {
+this.cons2 =  Clazz_newIntArray (this.maxLength, 24, 0);
+for (var j = 0; j < 24; j++) {
+for (i = 0; i < this.maxLength; i++) {
+this.cons2[i][j] = 0;
+}
+}
+var sqnum;
+var j = 0;
+while (j < this.sequences.length) {
+sqnum = this.seqNums.elementAt (j);
+for (i = 1; i < sqnum.length; i++) {
+this.cons2[i - 1][sqnum[i]]++;
+}
+for (i = sqnum.length - 1; i < this.maxLength; i++) {
+this.cons2[i][23]++;
+}
+j++;
+}
+}});
+Clazz_defineMethod (c$, "findQuality", 
+function (start, end) {
+this.quality =  new java.util.Vector ();
+var max = -10000;
+var BLOSUM62 = jalview.schemes.ResidueProperties.getBLOSUM62 ();
+this.percentIdentity2 ();
+var size = this.seqNums.size ();
+var lengths =  Clazz_newIntArray (size, 0);
+var tot;
+var bigtot;
+var sr;
+var tmp;
+var x;
+var xx;
+var l;
+var j;
+var i;
+var ii;
+var i2;
+var k;
+var seqNum;
+for (l = 0; l < size; l++) {
+lengths[l] = (this.seqNums.elementAt (l)).length - 1;
+}
+for (j = start; j <= end; j++) {
+bigtot = 0;
+x =  Clazz_newDoubleArray (24, 0);
+for (ii = 0; ii < 24; ii++) {
+x[ii] = 0;
+for (i2 = 0; i2 < 24; i2++) {
+x[ii] += ((this.cons2[j][i2] * BLOSUM62[ii][i2]) + 4);
+}
+x[ii] /= size;
+}
+for (k = 0; k < size; k++) {
+tot = 0;
+xx =  Clazz_newDoubleArray (24, 0);
+seqNum = (j < lengths[k]) ? (this.seqNums.elementAt (k))[j + 1] : 23;
+for (i = 0; i < 23; i++) {
+sr = 0;
+sr = BLOSUM62[i][seqNum] + 4;
+xx[i] = x[i] - sr;
+tot += (xx[i] * xx[i]);
+}
+bigtot += Math.sqrt (tot);
+}
+if (max < bigtot) {
+max = bigtot;
+}this.quality.addElement ( new Double (bigtot));
+}
+var newmax = -10000;
+for (j = start; j <= end; j++) {
+tmp = (this.quality.elementAt (j)).doubleValue ();
+tmp = ((max - tmp) * (size - this.cons2[j][23])) / size;
+this.quality.setElementAt ( new Double (tmp), j);
+if (tmp > newmax) {
+newmax = tmp;
+}}
+this.qualityRange[0] =  new Double (0);
+this.qualityRange[1] =  new Double (newmax);
+}, "~N,~N");
+Clazz_defineMethod (c$, "completeAnnotations", 
+function (conservation, quality2, istart, alWidth) {
+var sequence = this.getConsSequence ().getSequence ();
+var minR;
+var minG;
+var minB;
+var maxR;
+var maxG;
+var maxB;
+minR = 0.3;
+minG = 0.0;
+minB = 0;
+maxR = 1.0 - minR;
+maxG = 0.9 - minG;
+maxB = 0 - minB;
+var min = 0;
+var max = 11;
+var qmin = 0;
+var qmax = 0;
+var c;
+if (conservation.annotations != null && conservation.annotations.length < alWidth) {
+conservation.annotations =  new Array (alWidth);
+}if (quality2 != null) {
+quality2.graphMax = this.qualityRange[1].floatValue ();
+if (quality2.annotations != null && quality2.annotations.length < alWidth) {
+quality2.annotations =  new Array (alWidth);
+}qmin = this.qualityRange[0].floatValue ();
+qmax = this.qualityRange[1].floatValue ();
+}for (var i = 0; i < alWidth; i++) {
+var value = 0;
+c = sequence[i];
+if (Character.isDigit (c)) {
+value = c.charCodeAt (0) - 48;
+} else if (c == '*') {
+value = 11;
+} else if (c == '+') {
+value = 10;
+}var vprop = value - min;
+vprop /= max;
+conservation.annotations[i] =  new jalview.datamodel.Annotation (String.valueOf (c), this.consSymbs[i - this.start], ' ', value,  new java.awt.Color (minR + (maxR * vprop), minG + (maxG * vprop), minB + (maxB * vprop)));
+if (quality2 != null) {
+value = (this.quality.elementAt (i)).floatValue ();
+vprop = value - qmin;
+vprop /= qmax;
+quality2.annotations[i] =  new jalview.datamodel.Annotation (" ", String.valueOf (value), ' ', value,  new java.awt.Color (minR + (maxR * vprop), minG + (maxG * vprop), minB + (maxB * vprop)));
+}}
+}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation,~N,~N");
+c$.calculateConservation = Clazz_defineMethod (c$, "calculateConservation", 
+function (name, consHash, threshold, seqs, start, end, posOrNeg, consPercGaps, calcQuality) {
+var cons =  new jalview.analysis.Conservation (name, consHash, threshold, seqs, start, end);
+return jalview.analysis.Conservation.calculateConservation (cons, posOrNeg, consPercGaps, calcQuality);
+}, "~S,java.util.Hashtable,~N,java.util.List,~N,~N,~B,~N,~B");
+c$.calculateConservation = Clazz_defineMethod (c$, "calculateConservation", 
+function (cons, b, consPercGaps, calcQuality) {
+cons.calculate ();
+cons.verdict (b, consPercGaps);
+if (calcQuality) {
+cons.findQuality ();
+}return cons;
+}, "jalview.analysis.Conservation,~B,~N,~B");
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["jalview.datamodel.AlignmentI", "$.HiddenSequences", "java.util.ArrayList", "$.Collections", "$.LinkedHashSet"], "jalview.datamodel.Alignment", ["jalview.analysis.AlignmentUtils", "jalview.datamodel.AlignmentAnnotation", "$.CigarArray", "$.SeqCigar", "$.Sequence", "jalview.util.Comparison", "$.MessageManager", "java.lang.Error", "java.util.HashSet", "$.Hashtable", "$.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.dataset = null;
+this.sequences = null;
+this.groups = null;
+this.gapCharacter = '-';
+this.type = 1;
+this.$hasRNAStructure = false;
+this.annotations = null;
+this.hiddenSequences = null;
+this.alignmentProperties = null;
+this.codonFrameList = null;
+this.alignmentRefs = 0;
+this.seqrep = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "Alignment", null, jalview.datamodel.AlignmentI);
+Clazz_prepareFields (c$, function () {
+this.groups = java.util.Collections.synchronizedList ( new java.util.ArrayList ());
+this.hiddenSequences =  new jalview.datamodel.HiddenSequences (this);
+this.codonFrameList =  new java.util.LinkedHashSet ();
+});
+Clazz_defineMethod (c$, "initAlignment", 
+ function (seqs) {
+var i = 0;
+if (jalview.util.Comparison.isNucleotide (seqs)) {
+this.type = 1;
+} else {
+this.type = 0;
+}this.sequences = java.util.Collections.synchronizedList ( new java.util.ArrayList ());
+for (i = 0; i < seqs.length; i++) {
+this.sequences.add (seqs[i]);
+}
+}, "~A");
+Clazz_makeConstructor (c$, 
+function (al) {
+var seqs = al.getSequencesArray ();
+for (var i = 0; i < seqs.length; i++) {
+seqs[i] =  new jalview.datamodel.Sequence (seqs[i]);
+}
+this.codonFrameList = (al).codonFrameList;
+this.initAlignment (seqs);
+}, "jalview.datamodel.AlignmentI");
+Clazz_makeConstructor (c$, 
+function (seqs) {
+this.initAlignment (seqs);
+}, "~A");
+c$.createAlignment = Clazz_defineMethod (c$, "createAlignment", 
+function (compactAlignment) {
+throw  new Error (jalview.util.MessageManager.getString ("error.alignment_cigararray_not_implemented"));
+}, "jalview.datamodel.CigarArray");
+Clazz_defineMethod (c$, "getSequences", 
+function () {
+return this.sequences;
+});
+Clazz_defineMethod (c$, "getSequences", 
+function (hiddenReps) {
+return this.sequences;
+}, "java.util.Map");
+Clazz_defineMethod (c$, "getSequencesArray", 
+function () {
+if (this.sequences == null) {
+return null;
+}{
+return this.sequences.toArray ( new Array (this.sequences.size ()));
+}});
+Clazz_overrideMethod (c$, "getSequencesByName", 
+function () {
+return jalview.analysis.AlignmentUtils.getSequencesByName (this);
+});
+Clazz_overrideMethod (c$, "getSequenceAt", 
+function (i) {
+{
+if (i > -1 && i < this.sequences.size ()) {
+return this.sequences.get (i);
+}}return null;
+}, "~N");
+Clazz_overrideMethod (c$, "addSequence", 
+function (snew) {
+if (this.dataset != null) {
+if (snew.getDatasetSequence () != null) {
+this.getDataset ().addSequence (snew.getDatasetSequence ());
+} else {
+var adding = snew.deriveSequence ();
+this.getDataset ().addSequence (adding.getDatasetSequence ());
+snew = adding;
+}}if (this.sequences == null) {
+this.initAlignment ( Clazz_newArray (-1, [snew]));
+} else {
+{
+this.sequences.add (snew);
+}}if (this.hiddenSequences != null) {
+this.hiddenSequences.adjustHeightSequenceAdded ();
+}}, "jalview.datamodel.SequenceI");
+Clazz_overrideMethod (c$, "setSequenceAt", 
+function (i, snew) {
+{
+this.deleteSequence (i);
+this.sequences.set (i, snew);
+}}, "~N,jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "getGroups", 
+function () {
+return this.groups;
+});
+Clazz_overrideMethod (c$, "finalize", 
+function () {
+if (this.getDataset () != null) {
+this.getDataset ().removeAlignmentRef ();
+}this.dataset = null;
+this.sequences = null;
+this.groups = null;
+this.annotations = null;
+this.hiddenSequences = null;
+});
+Clazz_defineMethod (c$, "removeAlignmentRef", 
+ function () {
+if (--this.alignmentRefs == 0) {
+this.finalize ();
+}});
+Clazz_defineMethod (c$, "deleteSequence", 
+function (s) {
+this.deleteSequence (this.findIndex (s));
+}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "deleteSequence", 
+function (i) {
+if (i > -1 && i < this.getHeight ()) {
+{
+this.sequences.remove (i);
+this.hiddenSequences.adjustHeightSequenceDeleted (i);
+}}}, "~N");
+Clazz_overrideMethod (c$, "findGroup", 
+function (s) {
+{
+for (var i = 0; i < this.groups.size (); i++) {
+var sg = this.groups.get (i);
+if (sg.getSequences (null).contains (s)) {
+return sg;
+}}
+}return null;
+}, "jalview.datamodel.SequenceI");
+Clazz_overrideMethod (c$, "findAllGroups", 
+function (s) {
+var temp =  new java.util.ArrayList ();
+{
+var gSize = this.groups.size ();
+for (var i = 0; i < gSize; i++) {
+var sg = this.groups.get (i);
+if (sg == null || sg.getSequences () == null) {
+this.deleteGroup (sg);
+gSize--;
+continue;
+}if (sg.getSequences ().contains (s)) {
+temp.add (sg);
+}}
+}var ret =  new Array (temp.size ());
+return temp.toArray (ret);
+}, "jalview.datamodel.SequenceI");
+Clazz_overrideMethod (c$, "addGroup", 
+function (sg) {
+{
+if (!this.groups.contains (sg)) {
+if (this.hiddenSequences.getSize () > 0) {
+var i;
+var iSize = sg.getSize ();
+for (i = 0; i < iSize; i++) {
+if (!this.sequences.contains (sg.getSequenceAt (i))) {
+sg.deleteSequence (sg.getSequenceAt (i), false);
+iSize--;
+i--;
+}}
+if (sg.getSize () < 1) {
+return;
+}}sg.setContext (this);
+this.groups.add (sg);
+}}}, "jalview.datamodel.SequenceGroup");
+Clazz_defineMethod (c$, "removeAnnotationForGroup", 
+ function (gp) {
+if (this.annotations == null || this.annotations.length == 0) {
+return;
+}var t;
+var todelete =  new Array (this.annotations.length);
+var tokeep =  new Array (this.annotations.length);
+var i;
+var p;
+var k;
+if (gp == null) {
+for (i = 0, p = 0, k = 0; i < this.annotations.length; i++) {
+if (this.annotations[i].groupRef != null) {
+todelete[p++] = this.annotations[i];
+} else {
+tokeep[k++] = this.annotations[i];
+}}
+} else {
+for (i = 0, p = 0, k = 0; i < this.annotations.length; i++) {
+if (this.annotations[i].groupRef === gp) {
+todelete[p++] = this.annotations[i];
+} else {
+tokeep[k++] = this.annotations[i];
+}}
+}if (p > 0) {
+for (i = 0; i < p; i++) {
+this.unhookAnnotation (todelete[i]);
+todelete[i] = null;
+}
+t =  new Array (k);
+for (i = 0; i < k; i++) {
+t[i] = tokeep[i];
+}
+this.annotations = t;
+}}, "jalview.datamodel.SequenceGroup");
+Clazz_overrideMethod (c$, "deleteAllGroups", 
+function () {
+{
+if (this.annotations != null) {
+this.removeAnnotationForGroup (null);
+}for (var sg, $sg = this.groups.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+sg.setContext (null);
+}
+this.groups.clear ();
+}});
+Clazz_overrideMethod (c$, "deleteGroup", 
+function (g) {
+{
+if (this.groups.contains (g)) {
+this.removeAnnotationForGroup (g);
+this.groups.remove (g);
+g.setContext (null);
+}}}, "jalview.datamodel.SequenceGroup");
+Clazz_defineMethod (c$, "findName", 
+function (name) {
+return this.findName (name, false);
+}, "~S");
+Clazz_defineMethod (c$, "findName", 
+function (token, b) {
+return this.findName (null, token, b);
+}, "~S,~B");
+Clazz_defineMethod (c$, "findName", 
+function (startAfter, token, b) {
+var i = 0;
+var sq = null;
+var sqname = null;
+if (startAfter != null) {
+var matched = false;
+while (i < this.sequences.size ()) {
+if (this.getSequenceAt (i++) === startAfter) {
+matched = true;
+break;
+}}
+if (!matched) {
+i = 0;
+}}while (i < this.sequences.size ()) {
+sq = this.getSequenceAt (i);
+sqname = sq.getName ();
+if (sqname.equals (token) || (b && (sqname.equalsIgnoreCase (token)))) {
+return this.getSequenceAt (i);
+}i++;
+}
+return null;
+}, "jalview.datamodel.SequenceI,~S,~B");
+Clazz_overrideMethod (c$, "findSequenceMatch", 
+function (name) {
+var matches =  new java.util.Vector ();
+var i = 0;
+while (i < this.sequences.size ()) {
+if (this.getSequenceAt (i).getName ().equals (name)) {
+matches.addElement (this.getSequenceAt (i));
+}i++;
+}
+var result =  new Array (matches.size ());
+for (i = 0; i < result.length; i++) {
+result[i] = matches.elementAt (i);
+}
+return result;
+}, "~S");
+Clazz_defineMethod (c$, "findIndex", 
+function (s) {
+var i = 0;
+while (i < this.sequences.size ()) {
+if (s === this.getSequenceAt (i)) {
+return i;
+}i++;
+}
+return -1;
+}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "findIndex", 
+function (results) {
+var i = 0;
+while (i < this.sequences.size ()) {
+if (results.involvesSequence (this.getSequenceAt (i))) {
+return i;
+}i++;
+}
+return -1;
+}, "jalview.datamodel.SearchResults");
+Clazz_overrideMethod (c$, "getHeight", 
+function () {
+return this.sequences.size ();
+});
+Clazz_overrideMethod (c$, "getWidth", 
+function () {
+var maxLength = -1;
+for (var i = 0; i < this.sequences.size (); i++) {
+if (this.getSequenceAt (i).getLength () > maxLength) {
+maxLength = this.getSequenceAt (i).getLength ();
+}}
+return maxLength;
+});
+Clazz_overrideMethod (c$, "setGapCharacter", 
+function (gc) {
+this.gapCharacter = gc;
+{
+for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+seq.setSequence (seq.getSequenceAsString ().$replace ('.', gc).$replace ('-', gc).$replace (' ', gc));
+}
+}}, "~S");
+Clazz_defineMethod (c$, "getGapCharacter", 
+function () {
+return this.gapCharacter;
+});
+Clazz_defineMethod (c$, "isAligned", 
+function () {
+return this.isAligned (false);
+});
+Clazz_defineMethod (c$, "isAligned", 
+function (includeHidden) {
+var width = this.getWidth ();
+if (this.hiddenSequences == null || this.hiddenSequences.getSize () == 0) {
+includeHidden = true;
+}for (var i = 0; i < this.sequences.size (); i++) {
+if (includeHidden || !this.hiddenSequences.isHidden (this.getSequenceAt (i))) {
+if (this.getSequenceAt (i).getLength () != width) {
+return false;
+}}}
+return true;
+}, "~B");
+Clazz_overrideMethod (c$, "deleteAllAnnotations", 
+function (includingAutoCalculated) {
+var result = false;
+for (var alan, $alan = 0, $$alan = this.getAlignmentAnnotation (); $alan < $$alan.length && ((alan = $$alan[$alan]) || true); $alan++) {
+if (!alan.autoCalculated || includingAutoCalculated) {
+this.deleteAnnotation (alan);
+result = true;
+}}
+return result;
+}, "~B");
+Clazz_defineMethod (c$, "deleteAnnotation", 
+function (aa) {
+return this.deleteAnnotation (aa, true);
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz_defineMethod (c$, "deleteAnnotation", 
+function (aa, unhook) {
+var aSize = 1;
+if (this.annotations != null) {
+aSize = this.annotations.length;
+}if (aSize < 1) {
+return false;
+}var temp =  new Array (aSize - 1);
+var swap = false;
+var tIndex = 0;
+for (var i = 0; i < aSize; i++) {
+if (this.annotations[i] === aa) {
+swap = true;
+continue;
+}if (tIndex < temp.length) {
+temp[tIndex++] = this.annotations[i];
+}}
+if (swap) {
+this.annotations = temp;
+if (unhook) {
+this.unhookAnnotation (aa);
+}}return swap;
+}, "jalview.datamodel.AlignmentAnnotation,~B");
+Clazz_defineMethod (c$, "unhookAnnotation", 
+ function (aa) {
+if (aa.sequenceRef != null) {
+aa.sequenceRef.removeAlignmentAnnotation (aa);
+}if (aa.groupRef != null) {
+aa.groupRef = null;
+}}, "jalview.datamodel.AlignmentAnnotation");
+Clazz_defineMethod (c$, "addAnnotation", 
+function (aa) {
+this.addAnnotation (aa, -1);
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz_defineMethod (c$, "addAnnotation", 
+function (aa, pos) {
+if (aa.getRNAStruc () != null) {
+this.$hasRNAStructure = true;
+}var aSize = 1;
+if (this.annotations != null) {
+aSize = this.annotations.length + 1;
+}var temp =  new Array (aSize);
+var i = 0;
+if (pos == -1 || pos >= aSize) {
+temp[aSize - 1] = aa;
+} else {
+temp[pos] = aa;
+}if (aSize > 1) {
+var p = 0;
+for (i = 0; i < (aSize - 1); i++, p++) {
+if (p == pos) {
+p++;
+}if (p < temp.length) {
+temp[p] = this.annotations[i];
+}}
+}this.annotations = temp;
+}, "jalview.datamodel.AlignmentAnnotation,~N");
+Clazz_overrideMethod (c$, "setAnnotationIndex", 
+function (aa, index) {
+if (aa == null || this.annotations == null || this.annotations.length - 1 < index) {
+return;
+}var aSize = this.annotations.length;
+var temp =  new Array (aSize);
+temp[index] = aa;
+for (var i = 0; i < aSize; i++) {
+if (i == index) {
+continue;
+}if (i < index) {
+temp[i] = this.annotations[i];
+} else {
+temp[i] = this.annotations[i - 1];
+}}
+this.annotations = temp;
+}, "jalview.datamodel.AlignmentAnnotation,~N");
+Clazz_defineMethod (c$, "getAlignmentAnnotation", 
+function () {
+return this.annotations;
+});
+Clazz_overrideMethod (c$, "setNucleotide", 
+function (b) {
+if (b) {
+this.type = 1;
+} else {
+this.type = 0;
+}}, "~B");
+Clazz_defineMethod (c$, "isNucleotide", 
+function () {
+if (this.type == 1) {
+return true;
+} else {
+return false;
+}});
+Clazz_overrideMethod (c$, "hasRNAStructure", 
+function () {
+return this.$hasRNAStructure;
+});
+Clazz_overrideMethod (c$, "setDataset", 
+function (data) {
+if (this.dataset == null && data == null) {
+var seqs =  new Array (this.getHeight ());
+var currentSeq;
+for (var i = 0; i < this.getHeight (); i++) {
+currentSeq = this.getSequenceAt (i);
+if (currentSeq.getDatasetSequence () != null) {
+seqs[i] = currentSeq.getDatasetSequence ();
+} else {
+seqs[i] = currentSeq.createDatasetSequence ();
+}}
+this.dataset =  new jalview.datamodel.Alignment (seqs);
+} else if (this.dataset == null && data != null) {
+this.dataset = data;
+for (var i = 0; i < this.getHeight (); i++) {
+var currentSeq = this.getSequenceAt (i);
+var dsq = currentSeq.getDatasetSequence ();
+if (dsq == null) {
+dsq = currentSeq.createDatasetSequence ();
+this.dataset.addSequence (dsq);
+} else {
+while (dsq.getDatasetSequence () != null) {
+dsq = dsq.getDatasetSequence ();
+}
+if (this.dataset.findIndex (dsq) == -1) {
+this.dataset.addSequence (dsq);
+}}}
+}this.dataset.addAlignmentRef ();
+}, "jalview.datamodel.Alignment");
+Clazz_defineMethod (c$, "addAlignmentRef", 
+ function () {
+this.alignmentRefs++;
+});
+Clazz_overrideMethod (c$, "getDataset", 
+function () {
+return this.dataset;
+});
+Clazz_overrideMethod (c$, "padGaps", 
+function () {
+var modified = false;
+var maxLength = -1;
+var current;
+for (var i = 0; i < this.sequences.size (); i++) {
+current = this.getSequenceAt (i);
+for (var j = current.getLength (); j > maxLength; j--) {
+if (j > maxLength && !jalview.util.Comparison.isGap (current.getCharAt (j))) {
+maxLength = j;
+break;
+}}
+}
+maxLength++;
+var cLength;
+for (var i = 0; i < this.sequences.size (); i++) {
+current = this.getSequenceAt (i);
+cLength = current.getLength ();
+if (cLength < maxLength) {
+current.insertCharAt (cLength, maxLength - cLength, this.gapCharacter);
+modified = true;
+} else if (current.getLength () > maxLength) {
+current.deleteChars (maxLength, current.getLength ());
+}}
+return modified;
+});
+Clazz_overrideMethod (c$, "justify", 
+function (right) {
+var modified = false;
+var maxLength = -1;
+var ends =  Clazz_newIntArray (this.sequences.size () * 2, 0);
+var current;
+for (var i = 0; i < this.sequences.size (); i++) {
+current = this.getSequenceAt (i);
+ends[i * 2] = current.findIndex (current.getStart ());
+ends[i * 2 + 1] = current.findIndex (current.getStart () + current.getLength ());
+var hitres = false;
+for (var j = 0, rs = 0, ssiz = current.getLength (); j < ssiz; j++) {
+if (!jalview.util.Comparison.isGap (current.getCharAt (j))) {
+if (!hitres) {
+ends[i * 2] = j;
+hitres = true;
+} else {
+ends[i * 2 + 1] = j;
+if (j - ends[i * 2] > maxLength) {
+maxLength = j - ends[i * 2];
+}}}}
+}
+maxLength++;
+var cLength;
+var extent;
+var diff;
+for (var i = 0; i < this.sequences.size (); i++) {
+current = this.getSequenceAt (i);
+cLength = 1 + ends[i * 2 + 1] - ends[i * 2];
+diff = maxLength - cLength;
+extent = current.getLength ();
+if (right) {
+if (extent > ends[i * 2 + 1]) {
+current.deleteChars (ends[i * 2 + 1] + 1, extent);
+modified = true;
+}if (ends[i * 2] > diff) {
+current.deleteChars (0, ends[i * 2] - diff);
+modified = true;
+} else {
+if (ends[i * 2] < diff) {
+current.insertCharAt (0, diff - ends[i * 2], this.gapCharacter);
+modified = true;
+}}} else {
+if (ends[i * 2] > 0) {
+current.deleteChars (0, ends[i * 2]);
+modified = true;
+ends[i * 2 + 1] -= ends[i * 2];
+extent -= ends[i * 2];
+}if (extent > maxLength) {
+current.deleteChars (maxLength + 1, extent);
+modified = true;
+} else {
+if (extent < maxLength) {
+current.insertCharAt (extent, maxLength - extent, this.gapCharacter);
+modified = true;
+}}}}
+return modified;
+}, "~B");
+Clazz_defineMethod (c$, "getHiddenSequences", 
+function () {
+return this.hiddenSequences;
+});
+Clazz_overrideMethod (c$, "getCompactAlignment", 
+function () {
+{
+var alseqs =  new Array (this.sequences.size ());
+var i = 0;
+for (var seq, $seq = this.sequences.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+alseqs[i++] =  new jalview.datamodel.SeqCigar (seq);
+}
+var cal =  new jalview.datamodel.CigarArray (alseqs);
+cal.addOperation ('M', this.getWidth ());
+return cal;
+}});
+Clazz_overrideMethod (c$, "setProperty", 
+function (key, value) {
+if (this.alignmentProperties == null) {
+this.alignmentProperties =  new java.util.Hashtable ();
+}this.alignmentProperties.put (key, value);
+}, "~O,~O");
+Clazz_defineMethod (c$, "getProperty", 
+function (key) {
+if (this.alignmentProperties != null) {
+return this.alignmentProperties.get (key);
+} else {
+return null;
+}}, "~O");
+Clazz_defineMethod (c$, "getProperties", 
+function () {
+return this.alignmentProperties;
+});
+Clazz_overrideMethod (c$, "addCodonFrame", 
+function (codons) {
+if (codons != null) {
+this.codonFrameList.add (codons);
+}}, "jalview.datamodel.AlignedCodonFrame");
+Clazz_overrideMethod (c$, "getCodonFrame", 
+function (seq) {
+if (seq == null) {
+return null;
+}var cframes =  new java.util.ArrayList ();
+for (var acf, $acf = this.codonFrameList.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+if (acf.involvesSequence (seq)) {
+cframes.add (acf);
+}}
+return cframes;
+}, "jalview.datamodel.SequenceI");
+Clazz_overrideMethod (c$, "setCodonFrames", 
+function (acfs) {
+this.codonFrameList = acfs;
+}, "java.util.Set");
+Clazz_defineMethod (c$, "getCodonFrames", 
+function () {
+return this.codonFrameList;
+});
+Clazz_overrideMethod (c$, "removeCodonFrame", 
+function (codons) {
+if (codons == null || this.codonFrameList == null) {
+return false;
+}return this.codonFrameList.remove (codons);
+}, "jalview.datamodel.AlignedCodonFrame");
+Clazz_overrideMethod (c$, "append", 
+function (toappend) {
+if (toappend === this) {
+System.err.println ("Self append may cause a deadlock.");
+}var samegap = toappend.getGapCharacter () == this.getGapCharacter ();
+var oldc = toappend.getGapCharacter ();
+var hashidden = toappend.getHiddenSequences () != null && toappend.getHiddenSequences ().hiddenSequences != null;
+var sqs = (hashidden) ? toappend.getHiddenSequences ().getFullAlignment ().getSequences () : toappend.getSequences ();
+if (sqs != null) {
+{
+for (var addedsq, $addedsq = sqs.iterator (); $addedsq.hasNext () && ((addedsq = $addedsq.next ()) || true);) {
+if (!samegap) {
+var oldseq = addedsq.getSequence ();
+for (var c = 0; c < oldseq.length; c++) {
+if (oldseq[c] == oldc) {
+oldseq[c] = this.gapCharacter;
+}}
+}this.addSequence (addedsq);
+}
+}}var alan = toappend.getAlignmentAnnotation ();
+for (var a = 0; alan != null && a < alan.length; a++) {
+this.addAnnotation (alan[a]);
+}
+this.codonFrameList.addAll (toappend.getCodonFrames ());
+var sg = toappend.getGroups ();
+if (sg != null) {
+for (var _sg, $_sg = sg.iterator (); $_sg.hasNext () && ((_sg = $_sg.next ()) || true);) {
+this.addGroup (_sg);
+}
+}if (toappend.getHiddenSequences () != null) {
+var hs = toappend.getHiddenSequences ();
+if (this.hiddenSequences == null) {
+this.hiddenSequences =  new jalview.datamodel.HiddenSequences (this);
+}if (hs.hiddenSequences != null) {
+for (var s = 0; s < hs.hiddenSequences.length; s++) {
+if (hs.hiddenSequences[s] != null) {
+this.hiddenSequences.hideSequence (hs.hiddenSequences[s]);
+}}
+}}if (toappend.getProperties () != null) {
+var key = toappend.getProperties ().keys ();
+while (key.hasMoreElements ()) {
+var k = key.nextElement ();
+var ourval = this.getProperty (k);
+var toapprop = toappend.getProperty (k);
+if (ourval != null) {
+if (ourval.getClass ().equals (toapprop.getClass ()) && !ourval.equals (toapprop)) {
+if (Clazz_instanceOf (ourval, String)) {
+this.setProperty (k, (ourval) + "; " + (toapprop));
+} else {
+if (Clazz_instanceOf (ourval, java.util.Vector)) {
+var theirv = (toapprop).elements ();
+while (theirv.hasMoreElements ()) {
+(ourval).addElement (theirv);
+}
+}}}} else {
+this.setProperty (k, toapprop);
+}}
+}}, "jalview.datamodel.AlignmentI");
+Clazz_overrideMethod (c$, "findOrCreateAnnotation", 
+function (name, calcId, autoCalc, seqRef, groupRef) {
+if (this.annotations != null) {
+for (var annot, $annot = 0, $$annot = this.getAlignmentAnnotation (); $annot < $$annot.length && ((annot = $$annot[$annot]) || true); $annot++) {
+if (annot.autoCalculated == autoCalc && (name.equals (annot.label)) && (calcId == null || annot.getCalcId ().equals (calcId)) && annot.sequenceRef === seqRef && annot.groupRef === groupRef) {
+return annot;
+}}
+}var annot =  new jalview.datamodel.AlignmentAnnotation (name, name,  new Array (1), 0, 0, 1);
+annot.hasText = false;
+annot.setCalcId ( String.instantialize (calcId));
+annot.autoCalculated = autoCalc;
+if (seqRef != null) {
+annot.setSequenceRef (seqRef);
+}annot.groupRef = groupRef;
+this.addAnnotation (annot);
+return annot;
+}, "~S,~S,~B,jalview.datamodel.SequenceI,jalview.datamodel.SequenceGroup");
+Clazz_overrideMethod (c$, "findAnnotation", 
+function (calcId) {
+var aa =  new java.util.ArrayList ();
+for (var a, $a = 0, $$a = this.getAlignmentAnnotation (); $a < $$a.length && ((a = $$a[$a]) || true); $a++) {
+if (a.getCalcId () === calcId || (a.getCalcId () != null && calcId != null && a.getCalcId ().equals (calcId))) {
+aa.add (a);
+}}
+return aa;
+}, "~S");
+Clazz_overrideMethod (c$, "findAnnotations", 
+function (seq, calcId, label) {
+var aa =  new java.util.ArrayList ();
+for (var ann, $ann = 0, $$ann = this.getAlignmentAnnotation (); $ann < $$ann.length && ((ann = $$ann[$ann]) || true); $ann++) {
+if (ann.getCalcId () != null && ann.getCalcId ().equals (calcId) && ann.sequenceRef != null && ann.sequenceRef === seq && ann.label != null && ann.label.equals (label)) {
+aa.add (ann);
+}}
+return aa;
+}, "jalview.datamodel.SequenceI,~S,~S");
+Clazz_overrideMethod (c$, "moveSelectedSequencesByOne", 
+function (sg, map, up) {
+{
+if (up) {
+for (var i = 1, iSize = this.sequences.size (); i < iSize; i++) {
+var seq = this.sequences.get (i);
+if (!sg.getSequences (map).contains (seq)) {
+continue;
+}var temp = this.sequences.get (i - 1);
+if (sg.getSequences (null).contains (temp)) {
+continue;
+}this.sequences.set (i, temp);
+this.sequences.set (i - 1, seq);
+}
+} else {
+for (var i = this.sequences.size () - 2; i > -1; i--) {
+var seq = this.sequences.get (i);
+if (!sg.getSequences (map).contains (seq)) {
+continue;
+}var temp = this.sequences.get (i + 1);
+if (sg.getSequences (map).contains (temp)) {
+continue;
+}this.sequences.set (i, temp);
+this.sequences.set (i + 1, seq);
+}
+}}}, "jalview.datamodel.SequenceGroup,java.util.Map,~B");
+Clazz_overrideMethod (c$, "validateAnnotation", 
+function (alignmentAnnotation) {
+alignmentAnnotation.validateRangeAndDisplay ();
+if (this.isNucleotide () && alignmentAnnotation.isValidStruc ()) {
+this.$hasRNAStructure = true;
+}}, "jalview.datamodel.AlignmentAnnotation");
+Clazz_overrideMethod (c$, "getSeqrep", 
+function () {
+return this.seqrep;
+});
+Clazz_overrideMethod (c$, "setSeqrep", 
+function (seqrep) {
+this.seqrep = seqrep;
+}, "jalview.datamodel.SequenceI");
+Clazz_overrideMethod (c$, "hasSeqrep", 
+function () {
+return this.seqrep != null;
+});
+Clazz_overrideMethod (c$, "getEndRes", 
+function () {
+return this.getWidth () - 1;
+});
+Clazz_overrideMethod (c$, "getStartRes", 
+function () {
+return 0;
+});
+Clazz_overrideMethod (c$, "getContext", 
+function () {
+return this.dataset;
+});
+Clazz_defineMethod (c$, "alignAs", 
+function (al) {
+return this.alignAs (al, false, true);
+}, "jalview.datamodel.AlignmentI");
+Clazz_defineMethod (c$, "alignAs", 
+function (al, preserveMappedGaps, preserveUnmappedGaps) {
+var count = 0;
+var thisIsNucleotide = this.isNucleotide ();
+var thatIsProtein = !al.isNucleotide ();
+if (!thatIsProtein && !thisIsNucleotide) {
+return jalview.analysis.AlignmentUtils.alignProteinAsDna (this, al);
+}var thisGapChar = this.getGapCharacter ();
+var gap = thisIsNucleotide && thatIsProtein ? String.valueOf ( Clazz_newCharArray (-1, [thisGapChar, thisGapChar, thisGapChar])) : String.valueOf (thisGapChar);
+for (var alignTo, $alignTo = this.getSequences ().iterator (); $alignTo.hasNext () && ((alignTo = $alignTo.next ()) || true);) {
+count += jalview.analysis.AlignmentUtils.alignSequenceAs (alignTo, al, gap, preserveMappedGaps, preserveUnmappedGaps) ? 1 : 0;
+}
+return count;
+}, "jalview.datamodel.AlignmentI,~B,~B");
+Clazz_overrideMethod (c$, "getSequenceNames", 
+function () {
+var names =  new java.util.HashSet ();
+for (var seq, $seq = this.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+names.add (seq.getName ());
+}
+return names;
+});
+Clazz_overrideMethod (c$, "toString", 
+function () {
+var seq = this.getSequencesArray ();
+{
+return "" + JSON.stringify(seq);
+}});
+Clazz_defineStatics (c$,
+"PROTEIN", 0,
+"NUCLEOTIDE", 1);
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["jalview.datamodel.AnnotatedCollectionI"], "jalview.datamodel.AlignmentI", null, function () {
+Clazz_declareInterface (jalview.datamodel, "AlignmentI", jalview.datamodel.AnnotatedCollectionI);
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (null, "jalview.datamodel.HiddenSequences", ["jalview.datamodel.Alignment", "java.util.ArrayList"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.hiddenSequences = null;
+this.alignment = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "HiddenSequences");
+Clazz_makeConstructor (c$, 
+function (al) {
+this.alignment = al;
+}, "jalview.datamodel.AlignmentI");
+Clazz_defineMethod (c$, "getSize", 
+function () {
+if (this.hiddenSequences == null) {
+return 0;
+}var count = 0;
+for (var i = 0; i < this.hiddenSequences.length; i++) {
+if (this.hiddenSequences[i] != null) {
+count++;
+}}
+return count;
+});
+Clazz_defineMethod (c$, "getWidth", 
+function () {
+var width = 0;
+for (var i = 0; i < this.hiddenSequences.length; i++) {
+if (this.hiddenSequences[i] != null && this.hiddenSequences[i].getLength () > width) {
+width = this.hiddenSequences[i].getLength ();
+}}
+return width;
+});
+Clazz_defineMethod (c$, "adjustHeightSequenceDeleted", 
+function (seqIndex) {
+if (this.hiddenSequences == null) {
+return;
+}var alHeight = this.alignment.getHeight ();
+var tmp =  new Array (alHeight + this.getSize ());
+var deletionIndex = this.adjustForHiddenSeqs (seqIndex);
+for (var i = 0; i < this.hiddenSequences.length; i++) {
+if (this.hiddenSequences[i] == null) {
+continue;
+}if (i > deletionIndex) {
+tmp[i - 1] = this.hiddenSequences[i];
+} else {
+tmp[i] = this.hiddenSequences[i];
+}}
+this.hiddenSequences = tmp;
+}, "~N");
+Clazz_defineMethod (c$, "adjustHeightSequenceAdded", 
+function () {
+if (this.hiddenSequences == null) {
+return;
+}var alHeight = this.alignment.getHeight ();
+var tmp =  new Array (alHeight + this.getSize ());
+System.arraycopy (this.hiddenSequences, 0, tmp, 0, this.hiddenSequences.length);
+this.hiddenSequences = tmp;
+});
+Clazz_defineMethod (c$, "hideSequence", 
+function (sequence) {
+if (this.hiddenSequences == null) {
+this.hiddenSequences =  new Array (this.alignment.getHeight ());
+}var alignmentIndex = this.alignment.findIndex (sequence);
+alignmentIndex = this.adjustForHiddenSeqs (alignmentIndex);
+if (this.hiddenSequences[alignmentIndex] != null) {
+System.out.println ("ERROR!!!!!!!!!!!");
+}this.hiddenSequences[alignmentIndex] = sequence;
+this.alignment.deleteSequence (sequence);
+}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "showAll", 
+function (hiddenRepSequences) {
+var revealedSeqs =  new java.util.ArrayList ();
+for (var i = 0; i < this.hiddenSequences.length; i++) {
+if (this.hiddenSequences[i] != null) {
+var tmp = this.showSequence (i, hiddenRepSequences);
+for (var seq, $seq = tmp.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+revealedSeqs.add (seq);
+}
+}}
+return revealedSeqs;
+}, "java.util.Map");
+Clazz_defineMethod (c$, "showSequence", 
+function (alignmentIndex, hiddenRepSequences) {
+var revealedSeqs =  new java.util.ArrayList ();
+var repSequence = this.alignment.getSequenceAt (alignmentIndex);
+if (repSequence != null && hiddenRepSequences != null && hiddenRepSequences.containsKey (repSequence)) {
+hiddenRepSequences.remove (repSequence);
+revealedSeqs.add (repSequence);
+}var start = this.adjustForHiddenSeqs (alignmentIndex - 1);
+var end = this.adjustForHiddenSeqs (alignmentIndex);
+if (end >= this.hiddenSequences.length) {
+end = this.hiddenSequences.length - 1;
+}var asequences;
+{
+for (var index = end; index > start; index--) {
+var seq = this.hiddenSequences[index];
+this.hiddenSequences[index] = null;
+if (seq != null) {
+if (seq.getLength () > 0) {
+revealedSeqs.add (seq);
+asequences.add (alignmentIndex, seq);
+} else {
+System.out.println (seq.getName () + " has been deleted whilst hidden");
+}}}
+}return revealedSeqs;
+}, "~N,java.util.Map");
+Clazz_defineMethod (c$, "getHiddenSequence", 
+function (alignmentIndex) {
+return this.hiddenSequences[alignmentIndex];
+}, "~N");
+Clazz_defineMethod (c$, "findIndexWithoutHiddenSeqs", 
+function (alignmentIndex) {
+var index = 0;
+var hiddenSeqs = 0;
+if (this.hiddenSequences.length <= alignmentIndex) {
+alignmentIndex = this.hiddenSequences.length - 1;
+}while (index <= alignmentIndex) {
+if (this.hiddenSequences[index] != null) {
+hiddenSeqs++;
+}index++;
+}
+;return (alignmentIndex - hiddenSeqs);
+}, "~N");
+Clazz_defineMethod (c$, "adjustForHiddenSeqs", 
+function (alignmentIndex) {
+var index = 0;
+var hSize = this.hiddenSequences.length;
+while (index <= alignmentIndex && index < hSize) {
+if (this.hiddenSequences[index] != null) {
+alignmentIndex++;
+}index++;
+}
+;return alignmentIndex;
+}, "~N");
+Clazz_defineMethod (c$, "getFullAlignment", 
+function () {
+var isize = this.hiddenSequences.length;
+var seq =  new Array (isize);
+var index = 0;
+for (var i = 0; i < this.hiddenSequences.length; i++) {
+if (this.hiddenSequences[i] != null) {
+seq[i] = this.hiddenSequences[i];
+} else {
+seq[i] = this.alignment.getSequenceAt (index);
+index++;
+}}
+var fAlignmt =  new jalview.datamodel.Alignment (seq);
+fAlignmt.annotations = this.alignment.getAlignmentAnnotation ();
+fAlignmt.alignmentProperties = this.alignment.getProperties ();
+fAlignmt.groups = this.alignment.getGroups ();
+fAlignmt.$hasRNAStructure = this.alignment.hasRNAStructure ();
+return fAlignmt;
+});
+Clazz_defineMethod (c$, "isHidden", 
+function (seq) {
+if (this.hiddenSequences != null) {
+for (var i = 0; i < this.hiddenSequences.length; i++) {
+if (this.hiddenSequences[i] != null && this.hiddenSequences[i] === seq) {
+return true;
+}}
+}return false;
+}, "jalview.datamodel.SequenceI");
+});
+Clazz_load(["java.util.HashSet","$.Set"],"java.util.LinkedHashSet",["java.util.LinkedHashMap"],function(){
+c$=Clazz_declareType(java.util,"LinkedHashSet",java.util.HashSet,[java.util.Set,Cloneable,java.io.Serializable]);
+Clazz_makeConstructor(c$,
+function(){
+Clazz_superConstructor(this,java.util.LinkedHashSet,[new java.util.LinkedHashMap()]);
+});
+Clazz_makeConstructor(c$,
+function(capacity){
+Clazz_superConstructor(this,java.util.LinkedHashSet,[new java.util.LinkedHashMap(capacity)]);
+},"~N");
+Clazz_makeConstructor(c$,
+function(capacity,loadFactor){
+Clazz_superConstructor(this,java.util.LinkedHashSet,[new java.util.LinkedHashMap(capacity,loadFactor)]);
+},"~N,~N");
+Clazz_makeConstructor(c$,
+function(collection){
+Clazz_superConstructor(this,java.util.LinkedHashSet,[new java.util.LinkedHashMap(collection.size()<6?11:collection.size()*2)]);
+for(var e,$e=collection.iterator();$e.hasNext()&&((e=$e.next())||true);){
+this.add(e);
+}
+},"java.util.Collection");
+Clazz_overrideMethod(c$,"createBackingMap",
+function(capacity,loadFactor){
+return new java.util.LinkedHashMap(capacity,loadFactor);
+},"~N,~N");
+});
+Clazz_load(["java.util.HashMap"],"java.util.LinkedHashMap",["java.lang.IllegalStateException","java.util.AbstractCollection","$.AbstractSet","java.util.MapEntry.Type","java.util.NoSuchElementException"],function(){
+c$=Clazz_decorateAsClass(function(){
+this.accessOrder=false;
+this.head=null;
+this.tail=null;
+Clazz_instantialize(this,arguments);
+},java.util,"LinkedHashMap",java.util.HashMap);
+Clazz_makeConstructor(c$,
+function(){
+Clazz_superConstructor(this,java.util.LinkedHashMap);
+this.accessOrder=false;
+this.head=null;
+});
+Clazz_makeConstructor(c$,
+function(s){
+Clazz_superConstructor(this,java.util.LinkedHashMap,[s]);
+this.accessOrder=false;
+this.head=null;
+},"~N");
+Clazz_makeConstructor(c$,
+function(s,lf){
+Clazz_superConstructor(this,java.util.LinkedHashMap,[s,lf]);
+this.accessOrder=false;
+this.head=null;
+this.tail=null;
+},"~N,~N");
+Clazz_makeConstructor(c$,
+function(s,lf,order){
+Clazz_superConstructor(this,java.util.LinkedHashMap,[s,lf]);
+this.accessOrder=order;
+this.head=null;
+this.tail=null;
+},"~N,~N,~B");
+Clazz_makeConstructor(c$,
+function(m){
+Clazz_superConstructor(this,java.util.LinkedHashMap,[]);
+this.accessOrder=false;
+this.head=null;
+this.tail=null;
+this.putAll(m);
+},"java.util.Map");
+Clazz_overrideMethod(c$,"newElementArray",
+function(s){
+return new Array(s);
+},"~N");
+Clazz_overrideMethod(c$,"get",
+function(key){
+var m=this.getEntry(key);
+if(m==null){
+return null;
+}if(this.accessOrder&&this.tail!==m){
+var p=m.chainBackward;
+var n=m.chainForward;
+n.chainBackward=p;
+if(p!=null){
+p.chainForward=n;
+}else{
+this.head=n;
+}m.chainForward=null;
+m.chainBackward=this.tail;
+this.tail.chainForward=m;
+this.tail=m;
+}return m.value;
+},"~O");
+Clazz_overrideMethod(c$,"createEntry",
+function(key,index,value){
+var m=new java.util.LinkedHashMap.LinkedHashMapEntry(key,value);
+m.next=this.elementData[index];
+this.elementData[index]=m;
+this.linkEntry(m);
+return m;
+},"~O,~N,~O");
+Clazz_overrideMethod(c$,"put",
+function(key,value){
+var index=this.getModuloHash(key);
+var m=this.findEntry(key,index);
+if(m==null){
+this.modCount++;
+if(++this.elementCount>this.threshold){
+this.rehash();
+index=key==null?0:(key.hashCode()&0x7FFFFFFF)%this.elementData.length;
+}m=this.createEntry(key,index,null);
+}else{
+this.linkEntry(m);
+}var result=m.value;
+m.value=value;
+if(this.removeEldestEntry(this.head)){
+this.remove(this.head.key);
+}return result;
+},"~O,~O");
+Clazz_defineMethod(c$,"linkEntry",
+function(m){
+if(this.tail===m){
+return;
+}if(this.head==null){
+this.head=this.tail=m;
+return;
+}var p=m.chainBackward;
+var n=m.chainForward;
+if(p==null){
+if(n!=null){
+if(this.accessOrder){
+this.head=n;
+n.chainBackward=null;
+m.chainBackward=this.tail;
+m.chainForward=null;
+this.tail.chainForward=m;
+this.tail=m;
+}}else{
+m.chainBackward=this.tail;
+m.chainForward=null;
+this.tail.chainForward=m;
+this.tail=m;
+}return;
+}if(n==null){
+return;
+}if(this.accessOrder){
+p.chainForward=n;
+n.chainBackward=p;
+m.chainForward=null;
+m.chainBackward=this.tail;
+this.tail.chainForward=m;
+this.tail=m;
+}},"java.util.LinkedHashMap.LinkedHashMapEntry");
+Clazz_overrideMethod(c$,"entrySet",
+function(){
+return new java.util.LinkedHashMap.LinkedHashMapEntrySet(this);
+});
+Clazz_overrideMethod(c$,"keySet",
+function(){
+if(this.$keySet==null){
+this.$keySet=((Clazz_isClassDefined("java.util.LinkedHashMap$1")?0:java.util.LinkedHashMap.$LinkedHashMap$1$()),Clazz_innerTypeInstance(java.util.LinkedHashMap$1,this,null));
+}return this.$keySet;
+});
+Clazz_overrideMethod(c$,"values",
+function(){
+if(this.valuesCollection==null){
+this.valuesCollection=((Clazz_isClassDefined("java.util.LinkedHashMap$2")?0:java.util.LinkedHashMap.$LinkedHashMap$2$()),Clazz_innerTypeInstance(java.util.LinkedHashMap$2,this,null));
+}return this.valuesCollection;
+});
+Clazz_overrideMethod(c$,"remove",
+function(key){
+var m=this.removeEntry(key);
+if(m==null){
+return null;
+}var p=m.chainBackward;
+var n=m.chainForward;
+if(p!=null){
+p.chainForward=n;
+}else{
+this.head=n;
+}if(n!=null){
+n.chainBackward=p;
+}else{
+this.tail=p;
+}return m.value;
+},"~O");
+Clazz_defineMethod(c$,"removeEldestEntry",
+function(eldest){
+return false;
+},"java.util.Map.Entry");
+Clazz_defineMethod(c$,"clear",
+function(){
+Clazz_superCall(this,java.util.LinkedHashMap,"clear",[]);
+this.head=this.tail=null;
+});
+Clazz_defineMethod(c$,"clone",
+function(){
+var map=Clazz_superCall(this,java.util.LinkedHashMap,"clone",[]);
+map.clear();
+for(var entry,$entry=this.entrySet().iterator();$entry.hasNext()&&((entry=$entry.next())||true);){
+map.put(entry.getKey(),entry.getValue());
+}
+return map;
+});
+c$.$LinkedHashMap$1$=function(){
+Clazz_pu$h(self.c$);
+c$=Clazz_declareAnonymous(java.util,"LinkedHashMap$1",java.util.AbstractSet);
+Clazz_overrideMethod(c$,"contains",
+function(object){
+return this.b$["java.util.LinkedHashMap"].containsKey(object);
+},"~O");
+Clazz_overrideMethod(c$,"size",
+function(){
+return this.b$["java.util.LinkedHashMap"].size();
+});
+Clazz_overrideMethod(c$,"clear",
+function(){
+this.b$["java.util.LinkedHashMap"].clear();
+});
+Clazz_overrideMethod(c$,"remove",
+function(key){
+if(this.b$["java.util.LinkedHashMap"].containsKey(key)){
+this.b$["java.util.LinkedHashMap"].remove(key);
+return true;
+}return false;
+},"~O");
+Clazz_overrideMethod(c$,"iterator",
+function(){
+return new java.util.LinkedHashMap.LinkedHashIterator(((Clazz_isClassDefined("java.util.LinkedHashMap$1$1")?0:java.util.LinkedHashMap.$LinkedHashMap$1$1$()),Clazz_innerTypeInstance(java.util.LinkedHashMap$1$1,this,null)),this.b$["java.util.LinkedHashMap"]);
+});
+c$=Clazz_p0p();
+};
+c$.$LinkedHashMap$1$1$=function(){
+Clazz_pu$h(self.c$);
+c$=Clazz_declareAnonymous(java.util,"LinkedHashMap$1$1",null,java.util.MapEntry.Type);
+Clazz_overrideMethod(c$,"get",
+function(entry){
+return entry.key;
+},"java.util.MapEntry");
+c$=Clazz_p0p();
+};
+c$.$LinkedHashMap$2$=function(){
+Clazz_pu$h(self.c$);
+c$=Clazz_declareAnonymous(java.util,"LinkedHashMap$2",java.util.AbstractCollection);
+Clazz_overrideMethod(c$,"contains",
+function(object){
+return this.b$["java.util.LinkedHashMap"].containsValue(object);
+},"~O");
+Clazz_overrideMethod(c$,"size",
+function(){
+return this.b$["java.util.LinkedHashMap"].size();
+});
+Clazz_overrideMethod(c$,"clear",
+function(){
+this.b$["java.util.LinkedHashMap"].clear();
+});
+Clazz_overrideMethod(c$,"iterator",
+function(){
+return new java.util.LinkedHashMap.LinkedHashIterator(((Clazz_isClassDefined("java.util.LinkedHashMap$2$1")?0:java.util.LinkedHashMap.$LinkedHashMap$2$1$()),Clazz_innerTypeInstance(java.util.LinkedHashMap$2$1,this,null)),this.b$["java.util.LinkedHashMap"]);
+});
+c$=Clazz_p0p();
+};
+c$.$LinkedHashMap$2$1$=function(){
+Clazz_pu$h(self.c$);
+c$=Clazz_declareAnonymous(java.util,"LinkedHashMap$2$1",null,java.util.MapEntry.Type);
+Clazz_overrideMethod(c$,"get",
+function(entry){
+return entry.value;
+},"java.util.MapEntry");
+c$=Clazz_p0p();
+};
+Clazz_pu$h(self.c$);
+c$=Clazz_declareType(java.util.LinkedHashMap,"LinkedHashIterator",java.util.HashMap.HashMapIterator);
+Clazz_makeConstructor(c$,
+function(a,b){
+Clazz_superConstructor(this,java.util.LinkedHashMap.LinkedHashIterator,[a,b]);
+this.entry=b.head;
+},"java.util.MapEntry.Type,java.util.LinkedHashMap");
+Clazz_overrideMethod(c$,"hasNext",
+function(){
+return(this.entry!=null);
+});
+Clazz_overrideMethod(c$,"next",
+function(){
+this.checkConcurrentMod();
+if(!this.hasNext()){
+throw new java.util.NoSuchElementException();
+}var a=this.type.get(this.entry);
+this.lastEntry=this.entry;
+this.entry=(this.entry).chainForward;
+this.canRemove=true;
+return a;
+});
+Clazz_overrideMethod(c$,"remove",
+function(){
+this.checkConcurrentMod();
+if(!this.canRemove){
+throw new IllegalStateException();
+}this.canRemove=false;
+this.associatedMap.modCount++;
+var a=this.associatedMap.getModuloHash(this.lastEntry.key);
+var b=this.associatedMap.elementData[a];
+if(b===this.lastEntry){
+this.associatedMap.elementData[a]=this.lastEntry.next;
+}else{
+while(b.next!=null){
+if(b.next===this.lastEntry){
+break;
+}b=b.next;
+}
+b.next=this.lastEntry.next;
+}var c=this.lastEntry;
+var d=c.chainBackward;
+var e=c.chainForward;
+var f=this.associatedMap;
+if(d!=null){
+d.chainForward=e;
+if(e!=null){
+e.chainBackward=d;
+}else{
+f.tail=d;
+}}else{
+f.head=e;
+if(e!=null){
+e.chainBackward=null;
+}else{
+f.tail=null;
+}}this.associatedMap.elementCount--;
+this.expectedModCount++;
+});
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_declareType(java.util.LinkedHashMap,"LinkedHashMapEntrySet",java.util.HashMap.HashMapEntrySet);
+Clazz_overrideMethod(c$,"iterator",
+function(){
+return new java.util.LinkedHashMap.LinkedHashIterator(((Clazz_isClassDefined("java.util.LinkedHashMap$LinkedHashMapEntrySet$1")?0:java.util.LinkedHashMap.LinkedHashMapEntrySet.$LinkedHashMap$LinkedHashMapEntrySet$1$()),Clazz_innerTypeInstance(java.util.LinkedHashMap$LinkedHashMapEntrySet$1,this,null)),this.hashMap());
+});
+c$.$LinkedHashMap$LinkedHashMapEntrySet$1$=function(){
+Clazz_pu$h(self.c$);
+c$=Clazz_declareAnonymous(java.util,"LinkedHashMap$LinkedHashMapEntrySet$1",null,java.util.MapEntry.Type);
+Clazz_overrideMethod(c$,"get",
+function(a){
+return a;
+},"java.util.MapEntry");
+c$=Clazz_p0p();
+};
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_decorateAsClass(function(){
+this.chainForward=null;
+this.chainBackward=null;
+Clazz_instantialize(this,arguments);
+},java.util.LinkedHashMap,"LinkedHashMapEntry",java.util.HashMap.Entry);
+Clazz_makeConstructor(c$,
+function(a,b){
+Clazz_superConstructor(this,java.util.LinkedHashMap.LinkedHashMapEntry,[a,b]);
+this.chainForward=null;
+this.chainBackward=null;
+},"~O,~O");
+Clazz_defineMethod(c$,"clone",
+function(){
+var a=Clazz_superCall(this,java.util.LinkedHashMap.LinkedHashMapEntry,"clone",[]);
+a.chainBackward=this.chainBackward;
+a.chainForward=this.chainForward;
+var b=a.next;
+if(b!=null){
+a.next=b.clone();
+}return a;
+});
+c$=Clazz_p0p();
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["jalview.datamodel.CigarBase"], "jalview.datamodel.CigarArray", ["jalview.datamodel.CigarCigar", "$.SeqCigar", "java.lang.StringBuffer", "java.util.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.refCigars = null;
+this.seqcigararray = false;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "CigarArray", jalview.datamodel.CigarBase);
+Clazz_defineMethod (c$, "isSeqCigarArray", 
+function () {
+return this.seqcigararray;
+});
+Clazz_makeConstructor (c$, 
+function (cigars) {
+Clazz_superConstructor (this, jalview.datamodel.CigarArray);
+this.seqcigararray = true;
+if (cigars != null && cigars.length > 0) {
+this.refCigars =  new Array (cigars.length);
+for (var c = 0; c < cigars.length; c++) {
+this.refCigars[c] = cigars[c];
+if (!((Clazz_instanceOf (cigars[c], jalview.datamodel.SeqCigar)) || Clazz_instanceOf (cigars[c], jalview.datamodel.CigarCigar))) {
+this.seqcigararray = false;
+}}
+}}, "~A");
+Clazz_makeConstructor (c$, 
+function (alignment, columnSelection, selectionGroup) {
+this.construct (jalview.datamodel.CigarArray.constructSeqCigarArray (alignment, selectionGroup));
+this.constructFromAlignment (alignment, columnSelection != null ? columnSelection.getHiddenColumns () : null, selectionGroup);
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");
+c$._calcStartEndBounds = Clazz_defineMethod (c$, "_calcStartEndBounds", 
+ function (alignment, selectionGroup) {
+var startend =  Clazz_newIntArray (-1, [0, 0, 0]);
+if (selectionGroup != null) {
+startend[0] = selectionGroup.getSize ();
+startend[1] = selectionGroup.getStartRes ();
+startend[2] = selectionGroup.getEndRes ();
+} else {
+startend[0] = alignment.getHeight ();
+startend[2] = alignment.getWidth () - 1;
+}return startend;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");
+c$.constructSeqCigarArray = Clazz_defineMethod (c$, "constructSeqCigarArray", 
+function (alignment, selectionGroup) {
+var seqs = null;
+var i;
+var iSize;
+var _startend = jalview.datamodel.CigarArray._calcStartEndBounds (alignment, selectionGroup);
+var start = _startend[1];
+var end = _startend[2];
+if (selectionGroup != null) {
+iSize = selectionGroup.getSize ();
+seqs = selectionGroup.getSequencesInOrder (alignment);
+start = selectionGroup.getStartRes ();
+end = selectionGroup.getEndRes ();
+} else {
+iSize = alignment.getHeight ();
+seqs = alignment.getSequencesArray ();
+end = alignment.getWidth () - 1;
+}var selseqs =  new Array (iSize);
+for (i = 0; i < iSize; i++) {
+selseqs[i] =  new jalview.datamodel.SeqCigar (seqs[i], start, end);
+}
+return selseqs;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");
+Clazz_defineMethod (c$, "constructFromAlignment", 
+ function (alignment, list, selectionGroup) {
+var _startend = jalview.datamodel.CigarArray._calcStartEndBounds (alignment, selectionGroup);
+var start = _startend[1];
+var end = _startend[2];
+if (list != null) {
+var region;
+var hideStart;
+var hideEnd;
+var last = start;
+for (var j = 0;  new Boolean (last < end & j < list.size ()).valueOf (); j++) {
+region = list.get (j);
+hideStart = region[0];
+hideEnd = region[1];
+if (hideStart < last) {
+if (hideEnd > last) {
+hideStart = last;
+} else {
+continue;
+}}if (hideStart > end) {
+break;
+}if (hideEnd > end) {
+hideEnd = end;
+}if (hideStart > hideEnd) {
+break;
+}if (last < hideStart) {
+this.addOperation ('M', hideStart - last);
+}this.addOperation ('D', 1 + hideEnd - hideStart);
+last = hideEnd + 1;
+}
+if (last < end) {
+this.addOperation ('M', end - last + 1);
+}} else {
+this.addOperation ('M', end - start + 1);
+}}, "jalview.datamodel.AlignmentI,java.util.List,jalview.datamodel.SequenceGroup");
+Clazz_defineMethod (c$, "getArrayofSequenceAndDeletions", 
+function (GapChar) {
+if (this.refCigars == null || this.refCigars.length == 0 || this.length == 0) {
+return null;
+}var sqanddels =  new Array (this.refCigars.length);
+for (var c = 0; c < this.refCigars.length; c++) {
+var refString = this.refCigars[c].getSequenceString (GapChar);
+if (refString != null) {
+sqanddels[c] = this.getSequenceAndDeletions (refString, GapChar);
+} else {
+sqanddels[c] = null;
+}}
+return sqanddels;
+}, "~S");
+Clazz_defineMethod (c$, "getSequenceString", 
+function (GapChar) {
+if (this.length == 0 || this.refCigars == null) {
+return "";
+}var seqStrings =  new StringBuffer ();
+var sqanddels = this.getArrayofSequenceAndDeletions (GapChar);
+for (var c = 0; c < this.refCigars.length; c++) {
+if (sqanddels[c] != null) {
+seqStrings.append (sqanddels[c][0]);
+sqanddels[c][0] = null;
+}seqStrings.append ('\n');
+}
+return seqStrings.toString ();
+}, "~S");
+Clazz_defineMethod (c$, "getSequenceStrings", 
+function (GapChar) {
+if (this.length == 0 || this.refCigars == null || this.refCigars.length == 0) {
+return null;
+}var sqanddels = this.getArrayofSequenceAndDeletions (GapChar);
+var seqs =  new Array (sqanddels.length);
+for (var c = 0; c < this.refCigars.length; c++) {
+seqs[c] = sqanddels[c][0];
+}
+return seqs;
+}, "~S");
+Clazz_defineMethod (c$, "applyDeletions", 
+function () {
+var delpos = null;
+if (this.length == 0) {
+return null;
+}var cursor = 0;
+var vcursor = 0;
+var offset = 0;
+var i = 0;
+while (i < this.length) {
+if (this.operation[i] != 'D') {
+if (this.operation[i] == 'M') {
+cursor += this.range[i];
+}vcursor += this.range[i++];
+} else {
+if (delpos == null) {
+delpos =  new java.util.Vector ();
+}var delstart = cursor;
+var delend = cursor + this.range[i] - 1;
+delpos.addElement ( Clazz_newIntArray (-1, [vcursor + offset, this.range[i]]));
+offset += this.range[i] - 1;
+System.arraycopy (this.operation, i + 1, this.operation, i, this.length - i);
+System.arraycopy (this.range, i + 1, this.range, i, this.length - i);
+this.length--;
+for (var s = 0; s < this.refCigars.length; s++) {
+var d = this.refCigars[s].deleteRange (delstart, delend);
+}
+}}
+if (delpos != null) {
+var pos =  Clazz_newIntArray (delpos.size () * 2, 0);
+for (var k = 0, l = delpos.size (); k < l; k++) {
+var dr = (delpos.elementAt (k));
+pos[k * 2] = dr[0];
+pos[k * 2 + 1] = dr[1];
+delpos.setElementAt (null, k);
+}
+delpos = null;
+return pos;
+}return null;
+});
+Clazz_defineMethod (c$, "getSeqCigarArray", 
+function () {
+if (!this.isSeqCigarArray ()) {
+return null;
+}var sa =  new Array (this.refCigars.length);
+for (var i = 0; i < this.refCigars.length; i++) {
+sa[i] = this.refCigars[i];
+}
+return sa;
+});
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (null, "jalview.datamodel.CigarBase", ["jalview.util.MessageManager", "java.lang.Error", "$.Exception", "$.StringBuffer", "java.util.Vector", "JU.AU"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.length = 0;
+this._inc_length = 10;
+this.operation = null;
+this.range = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "CigarBase");
+Clazz_makeConstructor (c$, 
+function () {
+});
+Clazz_defineMethod (c$, "getSequenceAndDeletions", 
+function (reference, GapChar) {
+var rlength = 0;
+var deletions = JU.AU.newInt2 (this.length);
+var trunc_deletions = null;
+var sq =  new StringBuffer ();
+var cursor = 0;
+var alcursor = 0;
+var start = 0;
+var startpos = 0;
+var end = 0;
+var endpos = 0;
+var delcount = -1;
+var consecutive_del = false;
+if (this.length == 0) {
+return null;
+}if (reference != null) {
+rlength = reference.length;
+}var modstart = true;
+for (var i = 0; i < this.length; i++) {
+switch (this.operation[i]) {
+case 'D':
+if (!consecutive_del) {
+deletions[++delcount] =  Clazz_newIntArray (-1, [cursor, 0, alcursor]);
+}cursor += this.range[i];
+deletions[delcount][1] = cursor - 1;
+consecutive_del = true;
+break;
+case 'I':
+consecutive_del = false;
+for (var r = 0; r < this.range[i]; r++) {
+sq.append (GapChar);
+alcursor++;
+}
+break;
+case 'M':
+consecutive_del = false;
+if (modstart) {
+start = cursor;
+startpos = alcursor;
+modstart = false;
+}if (reference != null) {
+var sbend = cursor + this.range[i];
+if (sbend > rlength) {
+sq.append (reference.substring (cursor, rlength));
+while (sbend-- >= rlength) {
+sq.append (GapChar);
+}
+} else {
+sq.append (reference.substring (cursor, sbend));
+}}alcursor += this.range[i];
+cursor += this.range[i];
+end = cursor - 1;
+endpos = alcursor;
+break;
+default:
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.unknown_seq_cigar_operation",  Clazz_newArray (-1, [ new StringBuffer (this.operation[i].charCodeAt (0)).toString ()])));
+}
+}
+if (++delcount > 0) {
+trunc_deletions =  Clazz_newIntArray (delcount, 0);
+System.arraycopy (deletions, 0, trunc_deletions, 0, delcount);
+}deletions = null;
+return  Clazz_newArray (-1, [((reference != null) ? sq.toString () : null),  Clazz_newIntArray (-1, [start, startpos, end, endpos]), trunc_deletions]);
+}, "~S,~S");
+Clazz_defineMethod (c$, "compact_operations", 
+function () {
+var i = 1;
+if (this.operation == null) {
+return;
+}var last = this.operation[0];
+while (i < this.length) {
+if (last == this.operation[i]) {
+this.range[i - 1] += this.range[i];
+var r = this.length - i;
+if (r > 0) {
+System.arraycopy (this.range, i + 1, this.range, i, r);
+System.arraycopy (this.operation, i + 1, this.operation, i, r);
+}this.length--;
+} else {
+last = this.operation[i++];
+}}
+});
+c$.parseCigarString = Clazz_defineMethod (c$, "parseCigarString", 
+function (cigarString) {
+var ops = 0;
+for (var i = 0, l = cigarString.length; i < l; i++) {
+var c = cigarString.charAt (i);
+if (c == 'M' || c.charCodeAt (0) == (45) || c == 'I' || c.charCodeAt (0) == (41) || c == 'D' || c.charCodeAt (0) == (36)) {
+ops++;
+}}
+var operation =  Clazz_newCharArray (ops, '\0');
+var range =  Clazz_newIntArray (ops, 0);
+var op = 0;
+var i = 0;
+var l = cigarString.length;
+while (i < l) {
+var c;
+var j = i;
+do {
+c = cigarString.charAt (j++);
+} while (c >= '0' && c <= '9' && j < l);
+if (j >= l && c >= '0' && c <= '9') {
+throw  new Exception (jalview.util.MessageManager.getString ("exception.unterminated_cigar_string"));
+}try {
+var rangeint = cigarString.substring (i, j - 1);
+range[op] = Integer.parseInt (rangeint);
+i = j;
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_bug_parse_cigar_string"));
+} else {
+throw e;
+}
+}
+if (c >= 'a' && c <= 'z') {
+c = String.fromCharCode (c.charCodeAt (0) - 32);
+}if ((c == 'M' || c == 'I' || c == 'D')) {
+operation[op++] = c;
+} else {
+throw  new Exception (jalview.util.MessageManager.formatMessage ("exception.unexpected_operation_cigar_string_pos",  Clazz_newArray (-1, [ new StringBuffer (c.charCodeAt (0)).toString (), Integer.$valueOf (i).toString (), cigarString])));
+}}
+return  Clazz_newArray (-1, [operation, range]);
+}, "~S");
+Clazz_defineMethod (c$, "addOperation", 
+function (op, range) {
+if (op >= 'a' && op <= 'z') {
+op = String.fromCharCode (op.charCodeAt (0) - 32);
+}if (op != 'M' && op != 'D' && op != 'I') {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_invalid_operation_string"));
+}if (range == 0) {
+return;
+}if (range < 0) {
+throw  new Error (jalview.util.MessageManager.getString ("error.invalid_range_string"));
+}var lngth = 0;
+if (this.operation == null) {
+this.operation =  Clazz_newCharArray (this._inc_length, '\0');
+this.range =  Clazz_newIntArray (this._inc_length, 0);
+}if (this.length + 1 == this.operation.length) {
+var ops = this.operation;
+this.operation =  Clazz_newCharArray (this.length + 1 + this._inc_length, '\0');
+System.arraycopy (ops, 0, this.operation, 0, this.length);
+ops = null;
+var rng = this.range;
+this.range =  Clazz_newIntArray (this.length + 1 + this._inc_length, 0);
+System.arraycopy (rng, 0, this.range, 0, this.length);
+rng = null;
+}if ((this.length > 0) && (this.operation[this.length - 1] == op)) {
+this.length--;
+} else {
+this.range[this.length] = 0;
+}this.operation[this.length] = op;
+this.range[this.length++] += range;
+}, "~S,~N");
+Clazz_defineMethod (c$, "deleteRange", 
+function (start, end) {
+var deleted = 0;
+if (this.length == 0) {
+return deleted;
+}if (start < 0 || start > end) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_delete_range_out_of_bounds"));
+}var cursor = 0;
+var rlength = 1 + end - start;
+var oldlen = this.length;
+var o = 0;
+var editing = false;
+var oldops = this.operation;
+var oldrange = this.range;
+this.length = 0;
+this.operation = null;
+this.range = null;
+this.compact_operations ();
+while (o < oldlen && cursor <= end && rlength > 0) {
+if (oldops[o] == 'D') {
+this.addDeleted (oldrange[o++]);
+continue;
+}var remain = oldrange[o];
+if (!editing) {
+if ((cursor + remain) <= start) {
+this.addOperation (oldops[o], oldrange[o]);
+cursor += oldrange[o++];
+continue;
+}editing = true;
+if (start - cursor > 0) {
+this.addOperation (oldops[o], start - cursor);
+remain -= start - cursor;
+}}if (o < oldlen && editing && rlength > 0 && remain > 0) {
+switch (oldops[o]) {
+case 'M':
+if (rlength > remain) {
+this.addDeleted (remain);
+deleted += remain;
+} else {
+deleted += rlength;
+this.addDeleted (rlength);
+if (remain - rlength > 0) {
+this.addOperation ('M', remain - rlength);
+}rlength = 0;
+remain = 0;
+}break;
+case 'I':
+if (remain - rlength > 0) {
+this.addInsertion (remain - rlength);
+rlength = 0;
+}break;
+case 'D':
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error"));
+default:
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_unknown_operation",  Clazz_newArray (-1, [ new StringBuffer (oldops[o].charCodeAt (0)).toString ()])));
+}
+rlength -= remain;
+remain = oldrange[++o];
+}}
+while (o < oldlen) {
+this.addOperation (oldops[o], oldrange[o++]);
+}
+return deleted;
+}, "~N,~N");
+Clazz_defineMethod (c$, "hasDeletedRegions", 
+function () {
+for (var i = 0; i < this.length; i++) {
+if (this.operation[i] == 'D') {
+return true;
+}}
+return false;
+});
+Clazz_defineMethod (c$, "getDeletedRegions", 
+function () {
+if (this.length == 0) {
+return null;
+}var dr =  new java.util.Vector ();
+var cursor = 0;
+var vcursor = 0;
+for (var i = 0; i < this.length; i++) {
+switch (this.operation[i]) {
+case 'M':
+cursor += this.range[i];
+case 'I':
+vcursor += this.range[i];
+break;
+case 'D':
+dr.addElement ( Clazz_newIntArray (-1, [vcursor, cursor, this.range[i]]));
+cursor += this.range[i];
+}
+}
+if (dr.size () == 0) {
+return null;
+}var delregions =  Clazz_newIntArray (dr.size () * 3, 0);
+for (var i = 0, l = dr.size (); i < l; i++) {
+var reg = dr.elementAt (i);
+delregions[i * 3] = reg[0];
+delregions[i * 3 + 1] = reg[1];
+delregions[i * 3 + 2] = reg[2];
+}
+return delregions;
+});
+Clazz_defineMethod (c$, "getFullWidth", 
+function () {
+var w = 0;
+if (this.range != null) {
+for (var i = 0; i < this.length; i++) {
+w += this.range[i];
+}
+}return w;
+});
+Clazz_defineMethod (c$, "getWidth", 
+function () {
+var w = 0;
+if (this.range != null) {
+for (var i = 0; i < this.length; i++) {
+if (this.operation[i] == 'M' || this.operation[i] == 'I') {
+w += this.range[i];
+}}
+}return w;
+});
+Clazz_defineMethod (c$, "addInsertion", 
+function (range) {
+this.addOperation ('I', range);
+}, "~N");
+Clazz_defineMethod (c$, "addDeleted", 
+function (range) {
+this.addOperation ('D', range);
+}, "~N");
+Clazz_defineMethod (c$, "getCigarstring", 
+function () {
+var cigarString =  new StringBuffer ();
+for (var i = 0; i < this.length; i++) {
+cigarString.append ("" + this.range[i]);
+cigarString.append (this.operation[i]);
+}
+return cigarString.toString ();
+});
+Clazz_defineStatics (c$,
+"D", 'D',
+"I", 'I',
+"M", 'M',
+"_case_shift", String.fromCharCode (32));
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["jalview.datamodel.CigarSimple"], "jalview.datamodel.CigarCigar", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.refCigar = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "CigarCigar", jalview.datamodel.CigarSimple);
+Clazz_makeConstructor (c$, 
+function (cigar) {
+Clazz_superConstructor (this, jalview.datamodel.CigarCigar);
+this.refCigar = cigar;
+}, "jalview.datamodel.SeqCigar");
+Clazz_overrideMethod (c$, "getSequenceString", 
+function (GapChar) {
+if (this.length == 0) {
+return "";
+}var refString = this.refCigar.getSequenceString (GapChar);
+if (refString != null) {
+return (this.length == 0) ? "" : this.getSequenceAndDeletions (refString, GapChar)[0];
+} else {
+return null;
+}}, "~S");
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["jalview.datamodel.CigarBase"], "jalview.datamodel.CigarSimple", null, function () {
+c$ = Clazz_declareType (jalview.datamodel, "CigarSimple", jalview.datamodel.CigarBase);
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["jalview.datamodel.CigarSimple"], "jalview.datamodel.SeqCigar", ["jalview.analysis.AlignSeq", "$.SeqsetUtils", "jalview.datamodel.Sequence", "jalview.util.Comparison", "$.MessageManager", "$.ShiftList", "java.lang.Error", "$.StringBuffer", "java.util.Hashtable"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.start = 0;
+this.end = 0;
+this.refseq = null;
+this.seqProps = null;
+this.selGroups = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "SeqCigar", jalview.datamodel.CigarSimple);
+Clazz_defineMethod (c$, "getRefSeq", 
+function () {
+return this.refseq;
+});
+Clazz_defineMethod (c$, "getStart", 
+function () {
+return this.start;
+});
+Clazz_defineMethod (c$, "getEnd", 
+function () {
+return this.end;
+});
+Clazz_overrideMethod (c$, "getSequenceString", 
+function (GapChar) {
+return (this.length == 0) ? "" : this.getSequenceAndDeletions (this.refseq.getSequenceAsString (this.start, this.end), GapChar)[0];
+}, "~S");
+Clazz_defineMethod (c$, "getSeq", 
+function (GapChar) {
+var seq;
+if (this.refseq == null || this.length == 0) {
+return null;
+}var edit_result = this.getSequenceAndDeletions (this.refseq.getSequenceAsString (this.start, this.end), GapChar);
+if (edit_result == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_unexpected_null_from_get_sequence_and_deletions"));
+}var bounds = edit_result[1];
+seq =  new jalview.datamodel.Sequence (this.refseq.getName (), edit_result[0], this.refseq.getStart () + this.start + bounds[0], this.refseq.getStart () + this.start + ((bounds[2] == 0) ? -1 : bounds[2]));
+seq.setDescription (this.refseq.getDescription ());
+var sstart = seq.getStart ();
+var send = seq.getEnd ();
+if (this.seqProps != null) {
+jalview.analysis.SeqsetUtils.SeqCharacterUnhash (seq, this.seqProps);
+}seq.setDatasetSequence (this.refseq);
+seq.setStart (sstart);
+seq.setEnd (send);
+return seq;
+}, "~S");
+Clazz_defineMethod (c$, "_setSeq", 
+ function (seq, initialDeletion, _s, _e) {
+var hasgaps = false;
+if (seq == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_set_seq_null"));
+}if (_s < 0) {
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_s",  Clazz_newArray (-1, [Integer.$valueOf (_s).toString ()])));
+}var seq_string = seq.getSequenceAsString ();
+if (_e == 0 || _e < _s || _e > seq_string.length) {
+_e = seq_string.length;
+}this.start = seq.findPosition (_s) - seq.getStart ();
+this.end = seq.findPosition (_e) - seq.getStart ();
+var l_ungapped = this.end - this.start;
+var ds = seq.getDatasetSequence ();
+if (ds == null) {
+var ungapped = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars,  String.instantialize (seq_string));
+l_ungapped = ungapped.length;
+if (l_ungapped == seq.getLength ()) {
+ds = seq;
+} else {
+ds =  new jalview.datamodel.Sequence (seq.getName (), ungapped, seq.getStart (), seq.getStart () + ungapped.length - 1);
+}}if (ds.getStart () < seq.getStart ()) {
+var offset = seq.getStart () - ds.getStart ();
+if (initialDeletion) {
+this.addDeleted (_s + offset);
+this.start = 0;
+this.end += offset;
+} else {
+this.start += offset;
+this.end += offset;
+}}if (l_ungapped != (_e - _s)) {
+hasgaps = true;
+}this.refseq = ds;
+this.seqProps = jalview.analysis.SeqsetUtils.SeqCharacterHash (seq);
+if (this.end > ds.getLength ()) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_seqcigar_possible"));
+}return hasgaps;
+}, "jalview.datamodel.SequenceI,~B,~N,~N");
+Clazz_makeConstructor (c$, 
+function (seq, operation, range) {
+Clazz_superConstructor (this, jalview.datamodel.SeqCigar);
+if (seq == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implmentation_bug_seq_null"));
+}if (operation.length != range.length) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_bug_cigar_operation_list_range_list"));
+}if (operation != null) {
+this.operation =  Clazz_newCharArray (operation.length + this._inc_length, '\0');
+this.range =  Clazz_newIntArray (operation.length + this._inc_length, 0);
+if (this._setSeq (seq, false, 0, 0)) {
+throw  new Error (jalview.util.MessageManager.getString ("error.not_yet_implemented_cigar_object_from_cigar_string"));
+}for (var i = this.length, j = 0; j < operation.length; i++, j++) {
+var op = operation[j];
+if (op != 'M' && op != 'I' && op != 'D') {
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_bug_cigar_operation",  Clazz_newArray (-1, [Integer.$valueOf (j).toString (), Integer.$valueOf (op.charCodeAt (0)).toString (), Integer.$valueOf ('M'.charCodeAt (0)).toString (), Integer.$valueOf ('I'.charCodeAt (0)).toString (), Integer.$valueOf ('D'.charCodeAt (0)).toString ()])));
+}this.operation[i] = op;
+this.range[i] = range[j];
+}
+this.length += operation.length;
+} else {
+this.operation = null;
+this.range = null;
+this.length = 0;
+if (this._setSeq (seq, false, 0, 0)) {
+throw  new Error (jalview.util.MessageManager.getString ("error.not_yet_implemented_cigar_object_from_cigar_string"));
+}}}, "jalview.datamodel.SequenceI,~A,~A");
+Clazz_defineMethod (c$, "addMatch", 
+function (range) {
+this.addOperation ('M', range);
+}, "~N");
+c$.addSequenceOps = Clazz_defineMethod (c$, "addSequenceOps", 
+function (cigar, seq, startpos, endpos, initialDeletions) {
+var op = '\u0000';
+var range = 0;
+var p = 0;
+var res = seq.getLength ();
+if (!initialDeletions) {
+p = startpos;
+}while (p <= endpos) {
+var isGap = (p < res) ? jalview.util.Comparison.isGap (seq.getCharAt (p)) : true;
+if ((startpos <= p) && (p <= endpos)) {
+if (isGap) {
+if (range > 0 && op != 'I') {
+cigar.addOperation (op, range);
+range = 0;
+}op = 'I';
+range++;
+} else {
+if (range > 0 && op != 'M') {
+cigar.addOperation (op, range);
+range = 0;
+}op = 'M';
+range++;
+}} else {
+if (!isGap) {
+if (range > 0 && op != 'D') {
+cigar.addOperation (op, range);
+range = 0;
+}op = 'D';
+range++;
+} else {
+}}p++;
+}
+if (range > 0) {
+cigar.addOperation (op, range);
+}}, "jalview.datamodel.CigarBase,jalview.datamodel.SequenceI,~N,~N,~B");
+Clazz_makeConstructor (c$, 
+function (seq) {
+Clazz_superConstructor (this, jalview.datamodel.SeqCigar);
+if (seq == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_for_new_cigar"));
+}this._setSeq (seq, false, 0, 0);
+jalview.datamodel.SeqCigar.addSequenceOps (this, seq, 0, seq.getLength () - 1, false);
+}, "jalview.datamodel.SequenceI");
+Clazz_makeConstructor (c$, 
+function (seq, start, end) {
+Clazz_superConstructor (this, jalview.datamodel.SeqCigar);
+if (seq == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_for_new_cigar"));
+}this._setSeq (seq, false, start, end + 1);
+jalview.datamodel.SeqCigar.addSequenceOps (this, seq, start, end, false);
+}, "jalview.datamodel.SequenceI,~N,~N");
+c$.parseCigar = Clazz_defineMethod (c$, "parseCigar", 
+function (seq, cigarString) {
+var opsandrange = jalview.datamodel.CigarBase.parseCigarString (cigarString);
+return  new jalview.datamodel.SeqCigar (seq, opsandrange[0], opsandrange[1]);
+}, "jalview.datamodel.SequenceI,~S");
+c$.createAlignmentSequences = Clazz_defineMethod (c$, "createAlignmentSequences", 
+function (alseqs, gapCharacter, colsel, segments) {
+var seqs =  new Array (alseqs.length);
+var g_seqs =  new Array (alseqs.length);
+var alseqs_string =  new Array (alseqs.length);
+var gs_regions =  new Array (alseqs.length);
+for (var i = 0; i < alseqs.length; i++) {
+alseqs_string[i] = alseqs[i].getRefSeq ().getSequenceAsString (alseqs[i].start, alseqs[i].end);
+gs_regions[i] = alseqs[i].getSequenceAndDeletions (alseqs_string[i], gapCharacter);
+if (gs_regions[i] == null) {
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_cigar_seq_no_operations",  Clazz_newArray (-1, [Integer.$valueOf (i).toString ()])));
+}g_seqs[i] =  new StringBuffer ((gs_regions[i])[0]);
+}
+var shifts =  new jalview.util.ShiftList ();
+for (var i = 0; i < alseqs.length; i++) {
+var gs_region = ((gs_regions[i])[2]);
+if (gs_region != null) {
+for (var hr = 0; hr < gs_region.length; hr++) {
+var region = gs_region[hr];
+var insert =  Clazz_newCharArray (region[1] - region[0] + 1, '\0');
+for (var s = 0; s < insert.length; s++) {
+insert[s] = gapCharacter;
+}
+var inspos = shifts.shift (region[2]);
+for (var s = 0; s < alseqs.length; s++) {
+if (s != i) {
+if (g_seqs[s].length () <= inspos) {
+for (var l = inspos - g_seqs[s].length (); l > 0; l--) {
+g_seqs[s].append (gapCharacter);
+}
+}g_seqs[s].insert (inspos, insert);
+} else {
+g_seqs[s].insert (inspos, alseqs_string[i].substring (region[0], region[1] + 1));
+}}
+shifts.addShift (region[2], insert.length);
+if (segments == null) {
+colsel.hideColumns (inspos, inspos + insert.length - 1);
+}}
+}}
+for (var i = 0; i < alseqs.length; i++) {
+var bounds = ((gs_regions[i])[1]);
+var ref = alseqs[i].getRefSeq ();
+seqs[i] =  new jalview.datamodel.Sequence (ref.getName (), g_seqs[i].toString (), ref.getStart () + alseqs[i].start + bounds[0], ref.getStart () + alseqs[i].start + (bounds[2] == 0 ? -1 : bounds[2]));
+seqs[i].setDatasetSequence (ref);
+seqs[i].setDescription (ref.getDescription ());
+}
+if (segments != null) {
+for (var i = 0; i < segments.length; i += 3) {
+colsel.hideColumns (segments[i + 1], segments[i + 1] + segments[i + 2] - 1);
+}
+}return seqs;
+}, "~A,~S,jalview.datamodel.ColumnSelection,~A");
+Clazz_defineMethod (c$, "setGroupMembership", 
+function (group) {
+if (this.selGroups == null) {
+this.selGroups =  new java.util.Hashtable ();
+}this.selGroups.put (group,  Clazz_newIntArray (0, 0));
+}, "~O");
+Clazz_defineMethod (c$, "removeGroupMembership", 
+function (group) {
+if (this.selGroups != null && this.selGroups.containsKey (group)) {
+this.selGroups.remove (group);
+return true;
+}return false;
+}, "~O");
+Clazz_defineMethod (c$, "clearMemberships", 
+function () {
+if (this.selGroups != null) {
+this.selGroups.clear ();
+}this.selGroups = null;
+});
+Clazz_defineMethod (c$, "getAllMemberships", 
+function () {
+if (this.selGroups == null) {
+return null;
+}var mmbs =  new Array (this.selGroups.size ());
+var en = this.selGroups.keys ();
+for (var i = 0; en.hasMoreElements (); i++) {
+mmbs[i] = en.nextElement ();
+}
+return mmbs;
+});
+Clazz_defineMethod (c$, "isMemberOf", 
+function (sgr) {
+return (this.selGroups != null) && this.selGroups.get (sgr) != null;
+}, "~O");
+});
+Clazz_declarePackage ("jalview.analysis");
+Clazz_load (null, "jalview.analysis.SeqsetUtils", ["jalview.analysis.AlignSeq", "$.SequenceIdMatcher", "jalview.datamodel.Sequence", "jalview.util.Comparison", "java.util.Hashtable", "$.Vector"], function () {
+c$ = Clazz_declareType (jalview.analysis, "SeqsetUtils");
+c$.SeqCharacterHash = Clazz_defineMethod (c$, "SeqCharacterHash", 
+function (seq) {
+var sqinfo =  new java.util.Hashtable ();
+sqinfo.put ("Name", seq.getName ());
+sqinfo.put ("Start",  new Integer (seq.getStart ()));
+sqinfo.put ("End",  new Integer (seq.getEnd ()));
+if (seq.getDescription () != null) {
+sqinfo.put ("Description", seq.getDescription ());
+}var sfeat =  new java.util.Vector ();
+var sfarray = seq.getSequenceFeatures ();
+if (sfarray != null && sfarray.length > 0) {
+for (var i = 0; i < sfarray.length; i++) {
+sfeat.addElement (sfarray[i]);
+}
+}sqinfo.put ("SeqFeatures", sfeat);
+sqinfo.put ("PdbId", (seq.getPDBId () != null) ? seq.getPDBId () :  new java.util.Vector ());
+sqinfo.put ("datasetSequence", (seq.getDatasetSequence () != null) ? seq.getDatasetSequence () :  new jalview.datamodel.Sequence ("THISISAPLACEHOLDER", ""));
+return sqinfo;
+}, "jalview.datamodel.SequenceI");
+c$.SeqCharacterUnhash = Clazz_defineMethod (c$, "SeqCharacterUnhash", 
+function (sq, sqinfo) {
+var namePresent = true;
+if (sqinfo == null) {
+return false;
+}var oldname = sqinfo.get ("Name");
+var start = sqinfo.get ("Start");
+var end = sqinfo.get ("End");
+var sfeatures = sqinfo.get ("SeqFeatures");
+var pdbid = sqinfo.get ("PdbId");
+var description = sqinfo.get ("Description");
+var seqds = sqinfo.get ("datasetSequence");
+if (oldname == null) {
+namePresent = false;
+} else {
+sq.setName (oldname);
+}if (pdbid != null && pdbid.size () > 0) {
+sq.setPDBId (pdbid);
+}if ((start != null) && (end != null)) {
+sq.setStart (start.intValue ());
+sq.setEnd (end.intValue ());
+}if ((sfeatures != null) && (sfeatures.size () > 0)) {
+var sfarray =  new Array (sfeatures.size ());
+for (var is = 0, isize = sfeatures.size (); is < isize; is++) {
+sfarray[is] = sfeatures.elementAt (is);
+}
+sq.setSequenceFeatures (sfarray);
+}if (description != null) {
+sq.setDescription (description);
+}if ((seqds != null) && !(seqds.getName ().equals ("THISISAPLACEHOLDER") && seqds.getLength () == 0)) {
+sq.setDatasetSequence (seqds);
+}return namePresent;
+}, "jalview.datamodel.SequenceI,java.util.Hashtable");
+c$.unique_name = Clazz_defineMethod (c$, "unique_name", 
+function (i) {
+return  String.instantialize ("Sequence" + i);
+}, "~N");
+c$.uniquify = Clazz_defineMethod (c$, "uniquify", 
+function (sequences, write_names) {
+var map =  new java.util.Hashtable ();
+for (var i = 0; i < sequences.length; i++) {
+var safename = jalview.analysis.SeqsetUtils.unique_name (i);
+map.put (safename, jalview.analysis.SeqsetUtils.SeqCharacterHash (sequences[i]));
+if (write_names) {
+sequences[i].setName (safename);
+}}
+return map;
+}, "~A,~B");
+c$.deuniquify = Clazz_defineMethod (c$, "deuniquify", 
+function (map, sequences) {
+return jalview.analysis.SeqsetUtils.deuniquify (map, sequences, true);
+}, "java.util.Hashtable,~A");
+c$.deuniquify = Clazz_defineMethod (c$, "deuniquify", 
+function (map, sequences, quiet) {
+var matcher =  new jalview.analysis.SequenceIdMatcher (sequences);
+var msq = null;
+var keys = map.keys ();
+var unmatched =  new java.util.Vector ();
+for (var i = 0, j = sequences.length; i < j; i++) {
+unmatched.addElement (sequences[i]);
+}
+while (keys.hasMoreElements ()) {
+var key = keys.nextElement ();
+if (Clazz_instanceOf (key, String)) {
+if ((msq = matcher.findIdMatch (key)) != null) {
+var sqinfo = map.get (key);
+unmatched.removeElement (msq);
+jalview.analysis.SeqsetUtils.SeqCharacterUnhash (msq, sqinfo);
+} else {
+if (!quiet) {
+System.err.println ("Can't find '" + (key) + "' in uniquified alignment");
+}}}}
+if (unmatched.size () > 0 && !quiet) {
+System.err.println ("Did not find matches for :");
+for (var i = unmatched.elements (); i.hasMoreElements (); System.out.println ((i.nextElement ()).getName ())) {
+;}
+return false;
+}return true;
+}, "java.util.Hashtable,~A,~B");
+c$.getNonEmptySequenceSet = Clazz_defineMethod (c$, "getNonEmptySequenceSet", 
+function (sequences) {
+var ungapped =  Clazz_newBooleanArray (sequences.length, false);
+var msflen = 0;
+for (var i = 0, j = sequences.length; i < j; i++) {
+var tempseq = jalview.analysis.AlignSeq.extractGaps (jalview.util.Comparison.GapChars, sequences[i].getSequenceAsString ());
+if (tempseq.length == 0) {
+ungapped[i] = false;
+} else {
+ungapped[i] = true;
+msflen++;
+}}
+if (msflen == 0) {
+return null;
+}var mset =  new Array (msflen);
+for (var i = 0, j = sequences.length, k = 0; i < j; i++) {
+if (ungapped[i]) {
+mset[k++] = sequences[i];
+}}
+ungapped = null;
+return mset;
+}, "~A");
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (null, "jalview.datamodel.FeatureProperties", ["jalview.datamodel.DBRefSource"], function () {
+c$ = Clazz_declareType (jalview.datamodel, "FeatureProperties");
+c$.isCodingFeature = Clazz_defineMethod (c$, "isCodingFeature", 
+function (dbrefsource, type) {
+if (type.equalsIgnoreCase ("CDS")) {
+return (dbrefsource == null || dbrefsource.equalsIgnoreCase (jalview.datamodel.DBRefSource.EMBL) || dbrefsource.equalsIgnoreCase (jalview.datamodel.DBRefSource.EMBLCDS));
+}return false;
+}, "~S,~S");
+c$.getCodingFeature = Clazz_defineMethod (c$, "getCodingFeature", 
+function (dbrefsource) {
+if (jalview.datamodel.DBRefSource.EMBL.equalsIgnoreCase (dbrefsource) || jalview.datamodel.DBRefSource.EMBLCDS.equalsIgnoreCase (dbrefsource)) {
+return "CDS";
+}return null;
+}, "~S");
+Clazz_defineStatics (c$,
+"EMBL_CODING_FEATURE", "CDS",
+"EXONPOS", "exon number",
+"EXONPRODUCT", "product");
+});
+Clazz_declarePackage ("jalview.util");
+Clazz_load (["java.util.HashMap"], "jalview.util.DBRefUtils", ["jalview.datamodel.DBRefEntry", "$.DBRefSource", "$.PDBEntry", "jalview.jsdev.RegExp", "java.util.ArrayList", "$.Hashtable"], function () {
+c$ = Clazz_declareType (jalview.util, "DBRefUtils");
+c$.selectRefs = Clazz_defineMethod (c$, "selectRefs", 
+function (dbrefs, sources) {
+if (dbrefs == null) {
+return null;
+}if (sources == null) {
+return dbrefs;
+}var srcs =  new java.util.HashMap ();
+var res =  new java.util.ArrayList ();
+for (var i = 0; i < sources.length; i++) {
+srcs.put ( String.instantialize (sources[i]),  new Integer (i));
+}
+for (var i = 0, j = dbrefs.length; i < j; i++) {
+if (srcs.containsKey (dbrefs[i].getSource ())) {
+res.add (dbrefs[i]);
+}}
+if (res.size () > 0) {
+var reply =  new Array (res.size ());
+return res.toArray (reply);
+}res = null;
+return null;
+}, "~A,~A");
+c$.isDasCoordinateSystem = Clazz_defineMethod (c$, "isDasCoordinateSystem", 
+function (string, dBRefEntry) {
+if (string == null || dBRefEntry == null) {
+return false;
+}var coordsys = jalview.util.DBRefUtils.dasCoordinateSystemsLookup.get (string.toLowerCase ());
+return coordsys == null ? false : coordsys.equals (dBRefEntry.getSource ());
+}, "~S,jalview.datamodel.DBRefEntry");
+c$.getCanonicalName = Clazz_defineMethod (c$, "getCanonicalName", 
+function (source) {
+if (source == null) {
+return null;
+}var canonical = jalview.util.DBRefUtils.canonicalSourceNameLookup.get (source.toLowerCase ());
+return canonical == null ? source : canonical;
+}, "~S");
+c$.searchRefs = Clazz_defineMethod (c$, "searchRefs", 
+function (ref, entry) {
+return jalview.util.DBRefUtils.searchRefs (ref, entry, jalview.util.DBRefUtils.matchDbAndIdAndEitherMapOrEquivalentMapList);
+}, "~A,jalview.datamodel.DBRefEntry");
+c$.searchRefs = Clazz_defineMethod (c$, "searchRefs", 
+function (refs, entry, comparator) {
+if (refs == null || entry == null) {
+return null;
+}var rfs =  new java.util.ArrayList ();
+for (var i = 0; i < refs.length; i++) {
+if (comparator.matches (entry, refs[i])) {
+rfs.add (refs[i]);
+}}
+return rfs.size () == 0 ? null : rfs.toArray ( new Array (rfs.size ()));
+}, "~A,jalview.datamodel.DBRefEntry,jalview.util.DBRefUtils.DbRefComp");
+c$.parseToDbRef = Clazz_defineMethod (c$, "parseToDbRef", 
+function (seq, dbname, version, acn) {
+var ref = null;
+if (dbname != null) {
+var locsrc = jalview.util.DBRefUtils.getCanonicalName (dbname);
+if (locsrc.equals (jalview.datamodel.DBRefSource.PDB)) {
+var r = jalview.jsdev.RegExp.newRegex (["([0-9][0-9A-Za-z]{3})\\s*(.?)\\s*;\\s*([0-9]+)-([0-9]+)"]);
+if (r.search (acn.trim ())) {
+var pdbid = r.stringMatchedI (1);
+var chaincode = r.stringMatchedI (2);
+if (chaincode == null) {
+chaincode = " ";
+}if (chaincode.equals (" ")) {
+chaincode = "_";
+}ref =  new jalview.datamodel.DBRefEntry (locsrc, version, pdbid + chaincode);
+var pdbr =  new jalview.datamodel.PDBEntry ();
+pdbr.setId (pdbid);
+pdbr.setType (jalview.datamodel.PDBEntry.Type.PDB);
+pdbr.setProperty ( new java.util.Hashtable ());
+pdbr.setChainCode (chaincode);
+seq.addPDBId (pdbr);
+} else {
+System.err.println ("Malformed PDB DR line:" + acn);
+}} else {
+ref =  new jalview.datamodel.DBRefEntry (locsrc, version, acn);
+}}if (ref != null) {
+seq.addDBRef (ref);
+}return ref;
+}, "jalview.datamodel.SequenceI,~S,~S,~S");
+c$.$DBRefUtils$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.util, "DBRefUtils$1", null, jalview.util.DBRefUtils.DbRefComp);
+Clazz_defineMethod (c$, "matches", 
+function (refa, refb) {
+if (refa.getSource () == null || refb.getSource ().equals (refa.getSource ())) {
+if (refa.getVersion () == null || refb.getVersion ().equals (refa.getVersion ())) {
+if (refa.getAccessionId () == null || refb.getAccessionId ().equals (refa.getAccessionId ())) {
+if (refa.getMap () == null || (refb.getMap () != null && refb.getMap ().equals (refa.getMap ()))) {
+return true;
+}}}}return false;
+}, "jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");
+c$ = Clazz_p0p ();
+};
+c$.$DBRefUtils$2$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.util, "DBRefUtils$2", null, jalview.util.DBRefUtils.DbRefComp);
+Clazz_defineMethod (c$, "matches", 
+function (refa, refb) {
+if ((refa.getSource () == null || refb.getSource () == null) || refb.getSource ().equals (refa.getSource ())) {
+if ((refa.getVersion () == null || refb.getVersion () == null) || refb.getVersion ().equals (refa.getVersion ())) {
+if ((refa.getAccessionId () == null || refb.getAccessionId () == null) || refb.getAccessionId ().equals (refa.getAccessionId ())) {
+if ((refa.getMap () == null || refb.getMap () == null) || (refb.getMap () != null && refb.getMap ().equals (refa.getMap ()))) {
+return true;
+}}}}return false;
+}, "jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");
+c$ = Clazz_p0p ();
+};
+c$.$DBRefUtils$3$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.util, "DBRefUtils$3", null, jalview.util.DBRefUtils.DbRefComp);
+Clazz_defineMethod (c$, "matches", 
+function (refa, refb) {
+if (refa.getSource () != null && refb.getSource () != null && refb.getSource ().equals (refa.getSource ())) {
+if (refa.getAccessionId () != null && refb.getAccessionId () != null || refb.getAccessionId ().equals (refa.getAccessionId ())) {
+if ((refa.getMap () == null || refb.getMap () == null) || (refa.getMap () != null && refb.getMap () != null && refb.getMap ().equals (refa.getMap ()))) {
+return true;
+}}}return false;
+}, "jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");
+c$ = Clazz_p0p ();
+};
+c$.$DBRefUtils$4$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.util, "DBRefUtils$4", null, jalview.util.DBRefUtils.DbRefComp);
+Clazz_defineMethod (c$, "matches", 
+function (refa, refb) {
+if (refa.getSource () != null && refb.getSource () != null && refb.getSource ().equals (refa.getSource ())) {
+if (refa.getAccessionId () != null && refb.getAccessionId () != null || refb.getAccessionId ().equals (refa.getAccessionId ())) {
+if ((refa.getMap () == null && refb.getMap () == null) || (refa.getMap () != null && refb.getMap () != null)) {
+if ((refb.getMap ().getMap () == null && refa.getMap ().getMap () == null) || (refb.getMap ().getMap () != null && refa.getMap ().getMap () != null && refb.getMap ().getMap ().getInverse ().equals (refa.getMap ().getMap ()))) {
+return true;
+}}}}return false;
+}, "jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");
+c$ = Clazz_p0p ();
+};
+c$.$DBRefUtils$5$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.util, "DBRefUtils$5", null, jalview.util.DBRefUtils.DbRefComp);
+Clazz_defineMethod (c$, "matches", 
+function (refa, refb) {
+if (refa.getSource () != null && refb.getSource () != null && refb.getSource ().equals (refa.getSource ())) {
+if (refa.getAccessionId () != null && refb.getAccessionId () != null || refb.getAccessionId ().equals (refa.getAccessionId ())) {
+if (refa.getMap () == null && refb.getMap () == null) {
+return true;
+}if (refa.getMap () != null && refb.getMap () != null && ((refb.getMap ().getMap () == null && refa.getMap ().getMap () == null) || (refb.getMap ().getMap () != null && refa.getMap ().getMap () != null && refb.getMap ().getMap ().equals (refa.getMap ().getMap ())))) {
+return true;
+}}}return false;
+}, "jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");
+c$ = Clazz_p0p ();
+};
+c$.$DBRefUtils$6$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.util, "DBRefUtils$6", null, jalview.util.DBRefUtils.DbRefComp);
+Clazz_defineMethod (c$, "matches", 
+function (refa, refb) {
+if (refa.getSource () != null && refb.getSource () != null && refb.getSource ().equals (refa.getSource ())) {
+if (refa.getAccessionId () != null && refb.getAccessionId () != null && refb.getAccessionId ().equals (refa.getAccessionId ())) {
+if (refa.getMap () == null || refb.getMap () == null) {
+return true;
+}if ((refa.getMap () != null && refb.getMap () != null) && (refb.getMap ().getMap () == null && refa.getMap ().getMap () == null) || (refb.getMap ().getMap () != null && refa.getMap ().getMap () != null && (refb.getMap ().getMap ().equals (refa.getMap ().getMap ())))) {
+return true;
+}}}return false;
+}, "jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");
+c$ = Clazz_p0p ();
+};
+Clazz_declareInterface (jalview.util.DBRefUtils, "DbRefComp");
+c$.canonicalSourceNameLookup = c$.prototype.canonicalSourceNameLookup =  new java.util.HashMap ();
+c$.dasCoordinateSystemsLookup = c$.prototype.dasCoordinateSystemsLookup =  new java.util.HashMap ();
+{
+jalview.util.DBRefUtils.canonicalSourceNameLookup.put ("uniprotkb/swiss-prot", jalview.datamodel.DBRefSource.UNIPROT);
+jalview.util.DBRefUtils.canonicalSourceNameLookup.put ("uniprotkb/trembl", jalview.datamodel.DBRefSource.UNIPROT);
+jalview.util.DBRefUtils.canonicalSourceNameLookup.put ("pdb", jalview.datamodel.DBRefSource.PDB);
+jalview.util.DBRefUtils.dasCoordinateSystemsLookup.put ("pdbresnum", jalview.datamodel.DBRefSource.PDB);
+jalview.util.DBRefUtils.dasCoordinateSystemsLookup.put ("uniprot", jalview.datamodel.DBRefSource.UNIPROT);
+jalview.util.DBRefUtils.dasCoordinateSystemsLookup.put ("embl", jalview.datamodel.DBRefSource.EMBL);
+}c$.matchNonNullonA = c$.prototype.matchNonNullonA = ((Clazz_isClassDefined ("jalview.util.DBRefUtils$1") ? 0 : jalview.util.DBRefUtils.$DBRefUtils$1$ ()), Clazz_innerTypeInstance (jalview.util.DBRefUtils$1, this, null));
+c$.matchEitherNonNull = c$.prototype.matchEitherNonNull = ((Clazz_isClassDefined ("jalview.util.DBRefUtils$2") ? 0 : jalview.util.DBRefUtils.$DBRefUtils$2$ ()), Clazz_innerTypeInstance (jalview.util.DBRefUtils$2, this, null));
+c$.matchDbAndIdAndEitherMap = c$.prototype.matchDbAndIdAndEitherMap = ((Clazz_isClassDefined ("jalview.util.DBRefUtils$3") ? 0 : jalview.util.DBRefUtils.$DBRefUtils$3$ ()), Clazz_innerTypeInstance (jalview.util.DBRefUtils$3, this, null));
+c$.matchDbAndIdAndComplementaryMapList = c$.prototype.matchDbAndIdAndComplementaryMapList = ((Clazz_isClassDefined ("jalview.util.DBRefUtils$4") ? 0 : jalview.util.DBRefUtils.$DBRefUtils$4$ ()), Clazz_innerTypeInstance (jalview.util.DBRefUtils$4, this, null));
+c$.matchDbAndIdAndEquivalentMapList = c$.prototype.matchDbAndIdAndEquivalentMapList = ((Clazz_isClassDefined ("jalview.util.DBRefUtils$5") ? 0 : jalview.util.DBRefUtils.$DBRefUtils$5$ ()), Clazz_innerTypeInstance (jalview.util.DBRefUtils$5, this, null));
+c$.matchDbAndIdAndEitherMapOrEquivalentMapList = c$.prototype.matchDbAndIdAndEitherMapOrEquivalentMapList = ((Clazz_isClassDefined ("jalview.util.DBRefUtils$6") ? 0 : jalview.util.DBRefUtils.$DBRefUtils$6$ ()), Clazz_innerTypeInstance (jalview.util.DBRefUtils$6, this, null));
+});
+Clazz_load(["java.util.AbstractCollection","$.AbstractMap","$.AbstractSet","$.Iterator","$.MapEntry","$.Set","$.SortedMap"],"java.util.TreeMap",["java.lang.IllegalArgumentException","$.IllegalStateException","java.util.ConcurrentModificationException","$.NoSuchElementException"],function(){
+c$=Clazz_decorateAsClass(function(){
+this.$size=0;
+this.root=null;
+this.$comparator=null;
+this.modCount=0;
+this.$entrySet=null;
+Clazz_instantialize(this,arguments);
+},java.util,"TreeMap",java.util.AbstractMap,[java.util.SortedMap,Cloneable,java.io.Serializable]);
+c$.toComparable=Clazz_defineMethod(c$,"toComparable",
+($fz=function(obj){
+return obj;
+},$fz.isPrivate=true,$fz),"~O");
+Clazz_makeConstructor(c$,
+function(comparator){
+Clazz_superConstructor(this,java.util.TreeMap,[]);
+this.$comparator=comparator;
+},"java.util.Comparator");
+Clazz_makeConstructor(c$,
+function(map){
+this.construct();
+this.putAll(map);
+},"java.util.Map");
+Clazz_makeConstructor(c$,
+function(map){
+this.construct(map.comparator());
+var it=map.entrySet().iterator();
+if(it.hasNext()){
+var entry=it.next();
+var last=new java.util.TreeMap.Entry(entry.getKey(),entry.getValue());
+this.root=last;
+this.$size=1;
+while(it.hasNext()){
+entry=it.next();
+var x=new java.util.TreeMap.Entry(entry.getKey(),entry.getValue());
+x.parent=last;
+last.right=x;
+this.$size++;
+this.balance(x);
+last=x;
+}
+}},"java.util.SortedMap");
+Clazz_defineMethod(c$,"balance",
+function(x){
+var y;
+x.color=true;
+while(x!==this.root&&x.parent.color){
+if(x.parent===x.parent.parent.left){
+y=x.parent.parent.right;
+if(y!=null&&y.color){
+x.parent.color=false;
+y.color=false;
+x.parent.parent.color=true;
+x=x.parent.parent;
+}else{
+if(x===x.parent.right){
+x=x.parent;
+this.leftRotate(x);
+}x.parent.color=false;
+x.parent.parent.color=true;
+this.rightRotate(x.parent.parent);
+}}else{
+y=x.parent.parent.left;
+if(y!=null&&y.color){
+x.parent.color=false;
+y.color=false;
+x.parent.parent.color=true;
+x=x.parent.parent;
+}else{
+if(x===x.parent.left){
+x=x.parent;
+this.rightRotate(x);
+}x.parent.color=false;
+x.parent.parent.color=true;
+this.leftRotate(x.parent.parent);
+}}}
+this.root.color=false;
+},"java.util.TreeMap.Entry");
+Clazz_overrideMethod(c$,"clear",
+function(){
+this.root=null;
+this.$size=0;
+this.modCount++;
+});
+Clazz_defineMethod(c$,"clone",
+function(){
+try{
+var clone=Clazz_superCall(this,java.util.TreeMap,"clone",[]);
+clone.$entrySet=null;
+if(this.root!=null){
+clone.root=this.root.clone(null);
+}return clone;
+}catch(e){
+if(Clazz_instanceOf(e,CloneNotSupportedException)){
+return null;
+}else{
+throw e;
+}
+}
+});
+Clazz_overrideMethod(c$,"comparator",
+function(){
+return this.$comparator;
+});
+Clazz_overrideMethod(c$,"containsKey",
+function(key){
+return this.find(key)!=null;
+},"~O");
+Clazz_defineMethod(c$,"containsValue",
+function(value){
+if(this.root!=null){
+return this.containsValue(this.root,value);
+}return false;
+},"~O");
+Clazz_defineMethod(c$,"containsValue",
+($fz=function(node,value){
+if(value==null?node.value==null:value.equals(node.value)){
+return true;
+}if(node.left!=null){
+if(this.containsValue(node.left,value)){
+return true;
+}}if(node.right!=null){
+if(this.containsValue(node.right,value)){
+return true;
+}}return false;
+},$fz.isPrivate=true,$fz),"java.util.TreeMap.Entry,~O");
+Clazz_overrideMethod(c$,"entrySet",
+function(){
+if(this.$entrySet==null){
+this.$entrySet=((Clazz_isClassDefined("java.util.TreeMap$1")?0:java.util.TreeMap.$TreeMap$1$()),Clazz_innerTypeInstance(java.util.TreeMap$1,this,null));
+}return this.$entrySet;
+});
+Clazz_defineMethod(c$,"find",
+($fz=function(keyObj){
+var result;
+var key=keyObj;
+var object=null;
+if(this.$comparator==null){
+object=java.util.TreeMap.toComparable(key);
+}var x=this.root;
+while(x!=null){
+result=object!=null?object.compareTo(x.key):this.$comparator.compare(key,x.key);
+if(result==0){
+return x;
+}x=result<0?x.left:x.right;
+}
+return null;
+},$fz.isPrivate=true,$fz),"~O");
+Clazz_defineMethod(c$,"findAfter",
+function(keyObj){
+var key=keyObj;
+var result;
+var object=null;
+if(this.$comparator==null){
+object=java.util.TreeMap.toComparable(key);
+}var x=this.root;
+var last=null;
+while(x!=null){
+result=object!=null?object.compareTo(x.key):this.$comparator.compare(key,x.key);
+if(result==0){
+return x;
+}if(result<0){
+last=x;
+x=x.left;
+}else{
+x=x.right;
+}}
+return last;
+},"~O");
+Clazz_defineMethod(c$,"findBefore",
+function(key){
+var result;
+var object=null;
+if(this.$comparator==null){
+object=java.util.TreeMap.toComparable(key);
+}var x=this.root;
+var last=null;
+while(x!=null){
+result=object!=null?object.compareTo(x.key):this.$comparator.compare(key,x.key);
+if(result<=0){
+x=x.left;
+}else{
+last=x;
+x=x.right;
+}}
+return last;
+},"~O");
+Clazz_overrideMethod(c$,"firstKey",
+function(){
+if(this.root!=null){
+return java.util.TreeMap.minimum(this.root).key;
+}throw new java.util.NoSuchElementException();
+});
+Clazz_defineMethod(c$,"fixup",
+($fz=function(x){
+var w;
+while(x!==this.root&&!x.color){
+if(x===x.parent.left){
+w=x.parent.right;
+if(w==null){
+x=x.parent;
+continue;}if(w.color){
+w.color=false;
+x.parent.color=true;
+this.leftRotate(x.parent);
+w=x.parent.right;
+if(w==null){
+x=x.parent;
+continue;}}if((w.left==null||!w.left.color)&&(w.right==null||!w.right.color)){
+w.color=true;
+x=x.parent;
+}else{
+if(w.right==null||!w.right.color){
+w.left.color=false;
+w.color=true;
+this.rightRotate(w);
+w=x.parent.right;
+}w.color=x.parent.color;
+x.parent.color=false;
+w.right.color=false;
+this.leftRotate(x.parent);
+x=this.root;
+}}else{
+w=x.parent.left;
+if(w==null){
+x=x.parent;
+continue;}if(w.color){
+w.color=false;
+x.parent.color=true;
+this.rightRotate(x.parent);
+w=x.parent.left;
+if(w==null){
+x=x.parent;
+continue;}}if((w.left==null||!w.left.color)&&(w.right==null||!w.right.color)){
+w.color=true;
+x=x.parent;
+}else{
+if(w.left==null||!w.left.color){
+w.right.color=false;
+w.color=true;
+this.leftRotate(w);
+w=x.parent.left;
+}w.color=x.parent.color;
+x.parent.color=false;
+w.left.color=false;
+this.rightRotate(x.parent);
+x=this.root;
+}}}
+x.color=false;
+},$fz.isPrivate=true,$fz),"java.util.TreeMap.Entry");
+Clazz_overrideMethod(c$,"get",
+function(key){
+var node=this.find(key);
+if(node!=null){
+return node.value;
+}return null;
+},"~O");
+Clazz_overrideMethod(c$,"headMap",
+function(endKey){
+if(this.$comparator==null){
+java.util.TreeMap.toComparable(endKey).compareTo(endKey);
+}else{
+this.$comparator.compare(endKey,endKey);
+}return new java.util.TreeMap.SubMap(this,endKey);
+},"~O");
+Clazz_overrideMethod(c$,"keySet",
+function(){
+if(this.$keySet==null){
+this.$keySet=((Clazz_isClassDefined("java.util.TreeMap$2")?0:java.util.TreeMap.$TreeMap$2$()),Clazz_innerTypeInstance(java.util.TreeMap$2,this,null));
+}return this.$keySet;
+});
+Clazz_overrideMethod(c$,"lastKey",
+function(){
+if(this.root!=null){
+return java.util.TreeMap.maximum(this.root).key;
+}throw new java.util.NoSuchElementException();
+});
+Clazz_defineMethod(c$,"leftRotate",
+($fz=function(x){
+var y=x.right;
+x.right=y.left;
+if(y.left!=null){
+y.left.parent=x;
+}y.parent=x.parent;
+if(x.parent==null){
+this.root=y;
+}else{
+if(x===x.parent.left){
+x.parent.left=y;
+}else{
+x.parent.right=y;
+}}y.left=x;
+x.parent=y;
+},$fz.isPrivate=true,$fz),"java.util.TreeMap.Entry");
+c$.maximum=Clazz_defineMethod(c$,"maximum",
+function(x){
+while(x.right!=null){
+x=x.right;
+}
+return x;
+},"java.util.TreeMap.Entry");
+c$.minimum=Clazz_defineMethod(c$,"minimum",
+function(x){
+while(x.left!=null){
+x=x.left;
+}
+return x;
+},"java.util.TreeMap.Entry");
+c$.predecessor=Clazz_defineMethod(c$,"predecessor",
+function(x){
+if(x.left!=null){
+return java.util.TreeMap.maximum(x.left);
+}var y=x.parent;
+while(y!=null&&x===y.left){
+x=y;
+y=y.parent;
+}
+return y;
+},"java.util.TreeMap.Entry");
+Clazz_overrideMethod(c$,"put",
+function(key,value){
+var entry=this.rbInsert(key);
+var result=entry.value;
+entry.value=value;
+return result;
+},"~O,~O");
+Clazz_defineMethod(c$,"rbDelete",
+function(z){
+var y=z.left==null||z.right==null?z:java.util.TreeMap.successor(z);
+var x=y.left!=null?y.left:y.right;
+if(x!=null){
+x.parent=y.parent;
+}if(y.parent==null){
+this.root=x;
+}else if(y===y.parent.left){
+y.parent.left=x;
+}else{
+y.parent.right=x;
+}this.modCount++;
+if(y!==z){
+z.key=y.key;
+z.value=y.value;
+}if(!y.color&&this.root!=null){
+if(x==null){
+this.fixup(y.parent);
+}else{
+this.fixup(x);
+}}this.$size--;
+},"java.util.TreeMap.Entry");
+Clazz_defineMethod(c$,"rbInsert",
+($fz=function(object){
+var result=0;
+var y=null;
+if(this.$size!=0){
+var key=null;
+if(this.$comparator==null){
+key=java.util.TreeMap.toComparable(object);
+}var x=this.root;
+while(x!=null){
+y=x;
+result=key!=null?key.compareTo(x.key):this.$comparator.compare(object,x.key);
+if(result==0){
+return x;
+}x=result<0?x.left:x.right;
+}
+}this.$size++;
+this.modCount++;
+var z=new java.util.TreeMap.Entry(object);
+if(y==null){
+return this.root=z;
+}z.parent=y;
+if(result<0){
+y.left=z;
+}else{
+y.right=z;
+}this.balance(z);
+return z;
+},$fz.isPrivate=true,$fz),"~O");
+Clazz_overrideMethod(c$,"remove",
+function(key){
+var node=this.find(key);
+if(node==null){
+return null;
+}var result=node.value;
+this.rbDelete(node);
+return result;
+},"~O");
+Clazz_defineMethod(c$,"rightRotate",
+($fz=function(x){
+var y=x.left;
+x.left=y.right;
+if(y.right!=null){
+y.right.parent=x;
+}y.parent=x.parent;
+if(x.parent==null){
+this.root=y;
+}else{
+if(x===x.parent.right){
+x.parent.right=y;
+}else{
+x.parent.left=y;
+}}y.right=x;
+x.parent=y;
+},$fz.isPrivate=true,$fz),"java.util.TreeMap.Entry");
+Clazz_overrideMethod(c$,"size",
+function(){
+return this.$size;
+});
+Clazz_overrideMethod(c$,"subMap",
+function(startKey,endKey){
+if(this.$comparator==null){
+if(java.util.TreeMap.toComparable(startKey).compareTo(endKey)<=0){
+return new java.util.TreeMap.SubMap(startKey,this,endKey);
+}}else{
+if(this.$comparator.compare(startKey,endKey)<=0){
+return new java.util.TreeMap.SubMap(startKey,this,endKey);
+}}throw new IllegalArgumentException();
+},"~O,~O");
+c$.successor=Clazz_defineMethod(c$,"successor",
+function(x){
+if(x.right!=null){
+return java.util.TreeMap.minimum(x.right);
+}var y=x.parent;
+while(y!=null&&x===y.right){
+x=y;
+y=y.parent;
+}
+return y;
+},"java.util.TreeMap.Entry");
+Clazz_overrideMethod(c$,"tailMap",
+function(startKey){
+if(this.$comparator==null){
+java.util.TreeMap.toComparable(startKey).compareTo(startKey);
+}else{
+this.$comparator.compare(startKey,startKey);
+}return new java.util.TreeMap.SubMap(startKey,this);
+},"~O");
+Clazz_overrideMethod(c$,"values",
+function(){
+if(this.valuesCollection==null){
+this.valuesCollection=((Clazz_isClassDefined("java.util.TreeMap$3")?0:java.util.TreeMap.$TreeMap$3$()),Clazz_innerTypeInstance(java.util.TreeMap$3,this,null));
+}return this.valuesCollection;
+});
+c$.$TreeMap$1$=function(){
+Clazz_pu$h(self.c$);
+c$=Clazz_declareAnonymous(java.util,"TreeMap$1",java.util.AbstractSet);
+Clazz_overrideMethod(c$,"size",
+function(){
+return this.b$["java.util.TreeMap"].$size;
+});
+Clazz_overrideMethod(c$,"clear",
+function(){
+this.b$["java.util.TreeMap"].clear();
+});
+Clazz_overrideMethod(c$,"contains",
+function(object){
+if(Clazz_instanceOf(object,java.util.Map.Entry)){
+var entry=object;
+var v1=this.b$["java.util.TreeMap"].get(entry.getKey());
+var v2=entry.getValue();
+return v1==null?v2==null:v1.equals(v2);
+}return false;
+},"~O");
+Clazz_defineMethod(c$,"iterator",
+function(){
+return new java.util.TreeMap.UnboundedEntryIterator(this.b$["java.util.TreeMap"]);
+});
+c$=Clazz_p0p();
+};
+c$.$TreeMap$2$=function(){
+Clazz_pu$h(self.c$);
+c$=Clazz_declareAnonymous(java.util,"TreeMap$2",java.util.AbstractSet);
+Clazz_overrideMethod(c$,"contains",
+function(object){
+return this.b$["java.util.TreeMap"].containsKey(object);
+},"~O");
+Clazz_overrideMethod(c$,"size",
+function(){
+return this.b$["java.util.TreeMap"].$size;
+});
+Clazz_overrideMethod(c$,"clear",
+function(){
+this.b$["java.util.TreeMap"].clear();
+});
+Clazz_overrideMethod(c$,"iterator",
+function(){
+return new java.util.TreeMap.UnboundedKeyIterator(this.b$["java.util.TreeMap"]);
+});
+c$=Clazz_p0p();
+};
+c$.$TreeMap$3$=function(){
+Clazz_pu$h(self.c$);
+c$=Clazz_declareAnonymous(java.util,"TreeMap$3",java.util.AbstractCollection);
+Clazz_overrideMethod(c$,"contains",
+function(object){
+return this.b$["java.util.TreeMap"].containsValue(object);
+},"~O");
+Clazz_overrideMethod(c$,"size",
+function(){
+return this.b$["java.util.TreeMap"].$size;
+});
+Clazz_overrideMethod(c$,"clear",
+function(){
+this.b$["java.util.TreeMap"].clear();
+});
+Clazz_overrideMethod(c$,"iterator",
+function(){
+return new java.util.TreeMap.UnboundedValueIterator(this.b$["java.util.TreeMap"]);
+});
+c$=Clazz_p0p();
+};
+Clazz_pu$h(self.c$);
+c$=Clazz_decorateAsClass(function(){
+this.parent=null;
+this.left=null;
+this.right=null;
+this.color=false;
+Clazz_instantialize(this,arguments);
+},java.util.TreeMap,"Entry",java.util.MapEntry);
+Clazz_defineMethod(c$,"clone",
+function(a){
+var b=Clazz_superCall(this,java.util.TreeMap.Entry,"clone",[]);
+b.parent=a;
+if(this.left!=null){
+b.left=this.left.clone(b);
+}if(this.right!=null){
+b.right=this.right.clone(b);
+}return b;
+},"java.util.TreeMap.Entry");
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_decorateAsClass(function(){
+this.backingMap=null;
+this.expectedModCount=0;
+this.node=null;
+this.lastNode=null;
+Clazz_instantialize(this,arguments);
+},java.util.TreeMap,"AbstractMapIterator");
+Clazz_makeConstructor(c$,
+function(a,b){
+this.backingMap=a;
+this.expectedModCount=a.modCount;
+this.node=b;
+},"java.util.TreeMap,java.util.TreeMap.Entry");
+Clazz_defineMethod(c$,"hasNext",
+function(){
+return this.node!=null;
+});
+Clazz_defineMethod(c$,"remove",
+function(){
+if(this.expectedModCount==this.backingMap.modCount){
+if(this.lastNode!=null){
+this.backingMap.rbDelete(this.lastNode);
+this.lastNode=null;
+this.expectedModCount++;
+}else{
+throw new IllegalStateException();
+}}else{
+throw new java.util.ConcurrentModificationException();
+}});
+Clazz_defineMethod(c$,"makeNext",
+function(){
+if(this.expectedModCount!=this.backingMap.modCount){
+throw new java.util.ConcurrentModificationException();
+}else if(this.node==null){
+throw new java.util.NoSuchElementException();
+}this.lastNode=this.node;
+this.node=java.util.TreeMap.successor(this.node);
+});
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_declareType(java.util.TreeMap,"UnboundedEntryIterator",java.util.TreeMap.AbstractMapIterator,java.util.Iterator);
+Clazz_makeConstructor(c$,
+function(a){
+Clazz_superConstructor(this,java.util.TreeMap.UnboundedEntryIterator,[a,a.root==null?null:java.util.TreeMap.minimum(a.root)]);
+},"java.util.TreeMap");
+Clazz_overrideMethod(c$,"next",
+function(){
+this.makeNext();
+return this.lastNode;
+});
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_declareType(java.util.TreeMap,"UnboundedKeyIterator",java.util.TreeMap.AbstractMapIterator,java.util.Iterator);
+Clazz_makeConstructor(c$,
+function(a){
+Clazz_superConstructor(this,java.util.TreeMap.UnboundedKeyIterator,[a,a.root==null?null:java.util.TreeMap.minimum(a.root)]);
+},"java.util.TreeMap");
+Clazz_overrideMethod(c$,"next",
+function(){
+this.makeNext();
+return this.lastNode.key;
+});
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_declareType(java.util.TreeMap,"UnboundedValueIterator",java.util.TreeMap.AbstractMapIterator,java.util.Iterator);
+Clazz_makeConstructor(c$,
+function(a){
+Clazz_superConstructor(this,java.util.TreeMap.UnboundedValueIterator,[a,a.root==null?null:java.util.TreeMap.minimum(a.root)]);
+},"java.util.TreeMap");
+Clazz_overrideMethod(c$,"next",
+function(){
+this.makeNext();
+return this.lastNode.value;
+});
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_decorateAsClass(function(){
+this.endKey=null;
+this.cmp=null;
+Clazz_instantialize(this,arguments);
+},java.util.TreeMap,"ComparatorBoundedIterator",java.util.TreeMap.AbstractMapIterator);
+Clazz_makeConstructor(c$,
+function(a,b,c){
+Clazz_superConstructor(this,java.util.TreeMap.ComparatorBoundedIterator,[a,b]);
+this.endKey=c;
+this.cmp=a.comparator();
+},"java.util.TreeMap,java.util.TreeMap.Entry,~O");
+Clazz_defineMethod(c$,"cleanNext",
+function(){
+if(this.node!=null&&this.cmp.compare(this.endKey,this.node.key)<=0){
+this.node=null;
+}});
+Clazz_overrideMethod(c$,"hasNext",
+function(){
+return(this.node!=null&&this.endKey!=null)&&(this.cmp.compare(this.node.key,this.endKey)<0);
+});
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_declareType(java.util.TreeMap,"ComparatorBoundedEntryIterator",java.util.TreeMap.ComparatorBoundedIterator,java.util.Iterator);
+Clazz_overrideMethod(c$,"next",
+function(){
+this.makeNext();
+this.cleanNext();
+return this.lastNode;
+});
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_declareType(java.util.TreeMap,"ComparatorBoundedKeyIterator",java.util.TreeMap.ComparatorBoundedIterator,java.util.Iterator);
+Clazz_overrideMethod(c$,"next",
+function(){
+this.makeNext();
+this.cleanNext();
+return this.lastNode.key;
+});
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_declareType(java.util.TreeMap,"ComparatorBoundedValueIterator",java.util.TreeMap.ComparatorBoundedIterator,java.util.Iterator);
+Clazz_overrideMethod(c$,"next",
+function(){
+this.makeNext();
+this.cleanNext();
+return this.lastNode.value;
+});
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_decorateAsClass(function(){
+this.endKey=null;
+Clazz_instantialize(this,arguments);
+},java.util.TreeMap,"ComparableBoundedIterator",java.util.TreeMap.AbstractMapIterator);
+Clazz_makeConstructor(c$,
+function(a,b,c){
+Clazz_superConstructor(this,java.util.TreeMap.ComparableBoundedIterator,[a,b]);
+this.endKey=c;
+},"java.util.TreeMap,java.util.TreeMap.Entry,Comparable");
+Clazz_defineMethod(c$,"cleanNext",
+function(){
+if((this.node!=null)&&(this.endKey.compareTo(this.node.key)<=0)){
+this.node=null;
+}});
+Clazz_overrideMethod(c$,"hasNext",
+function(){
+return(this.node!=null)&&(this.endKey.compareTo(this.node.key)>0);
+});
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_declareType(java.util.TreeMap,"ComparableBoundedEntryIterator",java.util.TreeMap.ComparableBoundedIterator,java.util.Iterator);
+Clazz_overrideMethod(c$,"next",
+function(){
+this.makeNext();
+this.cleanNext();
+return this.lastNode;
+});
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_declareType(java.util.TreeMap,"ComparableBoundedKeyIterator",java.util.TreeMap.ComparableBoundedIterator,java.util.Iterator);
+Clazz_overrideMethod(c$,"next",
+function(){
+this.makeNext();
+this.cleanNext();
+return this.lastNode.key;
+});
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_declareType(java.util.TreeMap,"ComparableBoundedValueIterator",java.util.TreeMap.ComparableBoundedIterator,java.util.Iterator);
+Clazz_overrideMethod(c$,"next",
+function(){
+this.makeNext();
+this.cleanNext();
+return this.lastNode.value;
+});
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_decorateAsClass(function(){
+this.backingMap=null;
+this.hasStart=false;
+this.hasEnd=false;
+this.startKey=null;
+this.endKey=null;
+this.$entrySet=null;
+Clazz_instantialize(this,arguments);
+},java.util.TreeMap,"SubMap",java.util.AbstractMap,[java.util.SortedMap,java.io.Serializable]);
+Clazz_makeConstructor(c$,
+function(a,b){
+Clazz_superConstructor(this,java.util.TreeMap.SubMap,[]);
+this.backingMap=b;
+this.hasStart=true;
+this.startKey=a;
+},"~O,java.util.TreeMap");
+Clazz_makeConstructor(c$,
+function(a,b,c){
+Clazz_superConstructor(this,java.util.TreeMap.SubMap,[]);
+this.backingMap=b;
+this.hasStart=this.hasEnd=true;
+this.startKey=a;
+this.endKey=c;
+},"~O,java.util.TreeMap,~O");
+Clazz_makeConstructor(c$,
+function(a,b){
+Clazz_superConstructor(this,java.util.TreeMap.SubMap,[]);
+this.backingMap=a;
+this.hasEnd=true;
+this.endKey=b;
+},"java.util.TreeMap,~O");
+Clazz_overrideMethod(c$,"comparator",
+function(){
+return this.backingMap.comparator();
+});
+Clazz_overrideMethod(c$,"containsKey",
+function(a){
+if(this.isInRange(a)){
+return this.backingMap.containsKey(a);
+}return false;
+},"~O");
+Clazz_overrideMethod(c$,"entrySet",
+function(){
+if(this.$entrySet==null){
+this.$entrySet=new java.util.TreeMap.SubMapEntrySet(this);
+}return this.$entrySet;
+});
+Clazz_overrideMethod(c$,"firstKey",
+function(){
+var a=this.firstEntry();
+if(a!=null){
+return a.key;
+}throw new java.util.NoSuchElementException();
+});
+Clazz_defineMethod(c$,"firstEntry",
+function(){
+if(!this.hasStart){
+var a=this.backingMap.root;
+return(a==null)?null:java.util.TreeMap.minimum(this.backingMap.root);
+}var a=this.backingMap.findAfter(this.startKey);
+if(a!=null&&this.checkUpperBound(a.key)){
+return a;
+}return null;
+});
+Clazz_overrideMethod(c$,"get",
+function(a){
+if(this.isInRange(a)){
+return this.backingMap.get(a);
+}return null;
+},"~O");
+Clazz_overrideMethod(c$,"headMap",
+function(a){
+this.checkRange(a);
+if(this.hasStart){
+return new java.util.TreeMap.SubMap(this.startKey,this.backingMap,a);
+}return new java.util.TreeMap.SubMap(this.backingMap,a);
+},"~O");
+Clazz_overrideMethod(c$,"isEmpty",
+function(){
+if(this.hasStart){
+var a=this.backingMap.findAfter(this.startKey);
+return a==null||!this.checkUpperBound(a.key);
+}return this.backingMap.findBefore(this.endKey)==null;
+});
+Clazz_overrideMethod(c$,"keySet",
+function(){
+if(this.$keySet==null){
+this.$keySet=new java.util.TreeMap.SubMapKeySet(this);
+}return this.$keySet;
+});
+Clazz_overrideMethod(c$,"lastKey",
+function(){
+if(!this.hasEnd){
+return this.backingMap.lastKey();
+}var a=this.backingMap.findBefore(this.endKey);
+if(a!=null&&this.checkLowerBound(a.key)){
+return a.key;
+}throw new java.util.NoSuchElementException();
+});
+Clazz_overrideMethod(c$,"put",
+function(a,b){
+if(this.isInRange(a)){
+return this.backingMap.put(a,b);
+}throw new IllegalArgumentException();
+},"~O,~O");
+Clazz_overrideMethod(c$,"remove",
+function(a){
+if(this.isInRange(a)){
+return this.backingMap.remove(a);
+}return null;
+},"~O");
+Clazz_overrideMethod(c$,"subMap",
+function(a,b){
+this.checkRange(a);
+this.checkRange(b);
+var c=this.backingMap.comparator();
+if(c==null){
+if(java.util.TreeMap.toComparable(a).compareTo(b)<=0){
+return new java.util.TreeMap.SubMap(a,this.backingMap,b);
+}}else{
+if(c.compare(a,b)<=0){
+return new java.util.TreeMap.SubMap(a,this.backingMap,b);
+}}throw new IllegalArgumentException();
+},"~O,~O");
+Clazz_overrideMethod(c$,"tailMap",
+function(a){
+this.checkRange(a);
+if(this.hasEnd){
+return new java.util.TreeMap.SubMap(a,this.backingMap,this.endKey);
+}return new java.util.TreeMap.SubMap(a,this.backingMap);
+},"~O");
+Clazz_overrideMethod(c$,"values",
+function(){
+if(this.valuesCollection==null){
+this.valuesCollection=new java.util.TreeMap.SubMapValuesCollection(this);
+}return this.valuesCollection;
+});
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_decorateAsClass(function(){
+this.subMap=null;
+Clazz_instantialize(this,arguments);
+},java.util.TreeMap,"SubMapEntrySet",java.util.AbstractSet,java.util.Set);
+Clazz_makeConstructor(c$,
+function(a){
+Clazz_superConstructor(this,java.util.TreeMap.SubMapEntrySet,[]);
+this.subMap=a;
+},"java.util.TreeMap.SubMap");
+Clazz_overrideMethod(c$,"isEmpty",
+function(){
+return this.subMap.isEmpty();
+});
+Clazz_overrideMethod(c$,"iterator",
+function(){
+var a=this.subMap.firstEntry();
+if(this.subMap.hasEnd){
+var b=this.subMap.comparator();
+if(b==null){
+return new java.util.TreeMap.ComparableBoundedEntryIterator(this.subMap.backingMap,a,java.util.TreeMap.toComparable(this.subMap.endKey));
+}return new java.util.TreeMap.ComparatorBoundedEntryIterator(this.subMap.backingMap,a,this.subMap.endKey);
+}return new java.util.TreeMap.UnboundedEntryIterator(this.subMap.backingMap,a);
+});
+Clazz_overrideMethod(c$,"size",
+function(){
+var a=0;
+var b=this.iterator();
+while(b.hasNext()){
+a++;
+b.next();
+}
+return a;
+});
+Clazz_overrideMethod(c$,"contains",
+function(a){
+if(Clazz_instanceOf(a,java.util.Map.Entry)){
+var b=a;
+var c=b.getKey();
+if(this.subMap.isInRange(c)){
+var d=this.subMap.get(c);
+var e=b.getValue();
+return d==null?e==null:d.equals(e);
+}}return false;
+},"~O");
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_decorateAsClass(function(){
+this.subMap=null;
+Clazz_instantialize(this,arguments);
+},java.util.TreeMap,"SubMapKeySet",java.util.AbstractSet,java.util.Set);
+Clazz_makeConstructor(c$,
+function(a){
+Clazz_superConstructor(this,java.util.TreeMap.SubMapKeySet,[]);
+this.subMap=a;
+},"java.util.TreeMap.SubMap");
+Clazz_overrideMethod(c$,"contains",
+function(a){
+return this.subMap.containsKey(a);
+},"~O");
+Clazz_overrideMethod(c$,"isEmpty",
+function(){
+return this.subMap.isEmpty();
+});
+Clazz_overrideMethod(c$,"size",
+function(){
+var a=0;
+var b=this.iterator();
+while(b.hasNext()){
+a++;
+b.next();
+}
+return a;
+});
+Clazz_overrideMethod(c$,"iterator",
+function(){
+var a=this.subMap.firstEntry();
+if(this.subMap.hasEnd){
+var b=this.subMap.comparator();
+if(b==null){
+return new java.util.TreeMap.ComparableBoundedKeyIterator(this.subMap.backingMap,a,java.util.TreeMap.toComparable(this.subMap.endKey));
+}return new java.util.TreeMap.ComparatorBoundedKeyIterator(this.subMap.backingMap,a,this.subMap.endKey);
+}return new java.util.TreeMap.UnboundedKeyIterator(this.subMap.backingMap,a);
+});
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_decorateAsClass(function(){
+this.subMap=null;
+Clazz_instantialize(this,arguments);
+},java.util.TreeMap,"SubMapValuesCollection",java.util.AbstractCollection);
+Clazz_makeConstructor(c$,
+function(a){
+Clazz_superConstructor(this,java.util.TreeMap.SubMapValuesCollection,[]);
+this.subMap=a;
+},"java.util.TreeMap.SubMap");
+Clazz_overrideMethod(c$,"isEmpty",
+function(){
+return this.subMap.isEmpty();
+});
+Clazz_overrideMethod(c$,"iterator",
+function(){
+var a=this.subMap.firstEntry();
+if(this.subMap.hasEnd){
+var b=this.subMap.comparator();
+if(b==null){
+return new java.util.TreeMap.ComparableBoundedValueIterator(this.subMap.backingMap,a,java.util.TreeMap.toComparable(this.subMap.endKey));
+}return new java.util.TreeMap.ComparatorBoundedValueIterator(this.subMap.backingMap,a,this.subMap.endKey);
+}return new java.util.TreeMap.UnboundedValueIterator(this.subMap.backingMap,a);
+});
+Clazz_overrideMethod(c$,"size",
+function(){
+var a=0;
+for(var b=this.iterator();b.hasNext();){
+b.next();
+a++;
+}
+return a;
+});
+c$=Clazz_p0p();
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["jalview.structure.CommandListener", "$.SelectionSource", "$.VamsasSource", "jalview.viewmodel.AlignmentViewport", "java.awt.Font"], "jalview.appletgui.AlignViewport", ["awt2swing.Frame", "jalview.api.AlignViewportI", "jalview.bin.JalviewLite", "jalview.datamodel.ColumnSelection", "$.SearchResults", "$.Sequence", "$.SequenceGroup", "jalview.schemes.ColourSchemeProperty", "jalview.structure.StructureSelectionManager", "jalview.util.Platform", "jalview.workers.AlignCalcManager", "java.lang.Float", "$.StringBuilder"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.cursorMode = false;
+this.font = null;
+this.validCharWidth = true;
+this.currentTree = null;
+this.applet = null;
+this.MAC = false;
+this.annotationColumnSelectionState = null;
+this.nullFrame = null;
+this.featureSettings = null;
+this.heightScale = 1;
+this.widthScale = 1;
+this.centreColumnLabels = false;
+this.followSelection = true;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "AlignViewport", jalview.viewmodel.AlignmentViewport, [jalview.structure.SelectionSource, jalview.structure.VamsasSource, jalview.structure.CommandListener]);
+Clazz_prepareFields (c$, function () {
+this.font =  new java.awt.Font ("SansSerif", 0, 10);
+});
+Clazz_overrideMethod (c$, "finalize", 
+function () {
+this.applet = null;
+this.quality = null;
+this.alignment = null;
+this.colSel = null;
+});
+Clazz_makeConstructor (c$, 
+function (al, applet) {
+Clazz_superConstructor (this, jalview.appletgui.AlignViewport);
+this.calculator =  new jalview.workers.AlignCalcManager ();
+this.applet = applet;
+this.alignment = al;
+this.setPadGaps (true);
+this.startRes = 0;
+this.endRes = al.getWidth () - 1;
+this.startSeq = 0;
+this.endSeq = al.getHeight () - 1;
+if (applet != null) {
+var param = applet.widthScale;
+if (param != null) {
+try {
+this.widthScale =  new Float (param).floatValue ();
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+if (this.widthScale <= 1.0) {
+System.err.println ("Invalid alignment character width scaling factor (" + this.widthScale + "). Ignoring.");
+this.widthScale = 1;
+}if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Alignment character width scaling factor is now " + this.widthScale);
+}}param = applet.heightScale;
+if (param != null) {
+try {
+this.heightScale =  new Float (param).floatValue ();
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+if (this.heightScale <= 1.0) {
+System.err.println ("Invalid alignment character height scaling factor (" + this.heightScale + "). Ignoring.");
+this.heightScale = 1;
+}if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Alignment character height scaling factor is now " + this.heightScale);
+}}}this.setFont (this.font);
+this.MAC = jalview.util.Platform.isAMac ();
+if (applet != null) {
+this.setShowJVSuffix (applet.getDefaultParameter ("showFullId", this.getShowJVSuffix ()));
+this.setShowAnnotation (applet.getDefaultParameter ("showAnnotation", this.isShowAnnotation ()));
+this.showConservation = applet.getDefaultParameter ("showConservation", this.showConservation);
+this.showQuality = applet.getDefaultParameter ("showQuality", this.showQuality);
+this.showConsensus = applet.getDefaultParameter ("showConsensus", this.showConsensus);
+this.setShowUnconserved (applet.getDefaultParameter ("showUnconserved", this.getShowUnconserved ()));
+this.setScaleProteinAsCdna (applet.getDefaultParameter ("scaleProteinAsCdna", this.isScaleProteinAsCdna ()));
+var param = applet.upperCase;
+if (param != null) {
+if (param.equalsIgnoreCase ("bold")) {
+this.setUpperCasebold (true);
+}}this.sortByTree = applet.getDefaultParameter ("sortByTree", this.sortByTree);
+this.setFollowHighlight (applet.getDefaultParameter ("automaticScrolling", this.isFollowHighlight ()));
+this.followSelection = this.isFollowHighlight ();
+this.showSequenceLogo = applet.getDefaultParameter ("showSequenceLogo", this.showSequenceLogo);
+this.normaliseSequenceLogo = applet.getDefaultParameter ("normaliseSequenceLogo", applet.getDefaultParameter ("normaliseLogo", this.normaliseSequenceLogo));
+this.showGroupConsensus = applet.getDefaultParameter ("showGroupConsensus", this.showGroupConsensus);
+this.showGroupConservation = applet.getDefaultParameter ("showGroupConservation", this.showGroupConservation);
+this.showConsensusHistogram = applet.getDefaultParameter ("showConsensusHistogram", this.showConsensusHistogram);
+}if (applet != null) {
+var colour = applet.defaultColour;
+if (colour == null) {
+colour = applet.userDefinedColour;
+if (colour != null) {
+colour = "User Defined";
+}}if (colour != null) {
+this.globalColourScheme = jalview.schemes.ColourSchemeProperty.getColour (this.alignment, colour);
+if (this.globalColourScheme != null) {
+this.globalColourScheme.setConsensus (this.hconsensus);
+}}if (applet.userDefinedColour != null) {
+(this.globalColourScheme).parseAppletParameter (applet.userDefinedColour);
+}}this.initAutoAnnotation ();
+}, "jalview.datamodel.AlignmentI,jalview.bin.JalviewLite");
+Clazz_defineMethod (c$, "getConsensusSeq", 
+function () {
+if (this.consensus == null) {
+this.updateConsensus (null);
+}if (this.consensus == null) {
+return null;
+}var seqs =  new StringBuilder (this.consensus.annotations.length);
+for (var i = 0; i < this.consensus.annotations.length; i++) {
+if (this.consensus.annotations[i] != null) {
+if (this.consensus.annotations[i].description.charAt (0) == '[') {
+seqs.append (this.consensus.annotations[i].description.charAt (1));
+} else {
+seqs.append (this.consensus.annotations[i].displayCharacter);
+}}}
+var sq =  new jalview.datamodel.Sequence ("Consensus", seqs.toString ());
+sq.setDescription ("Percentage Identity Consensus " + ((this.ignoreGapsInConsensusCalculation) ? " without gaps" : ""));
+return sq;
+});
+Clazz_defineMethod (c$, "setFont", 
+function (f) {
+this.font = f;
+if (this.nullFrame == null) {
+this.nullFrame =  new awt2swing.Frame ();
+this.nullFrame.addNotify ();
+this.nullFrame.setFont (this.font);
+}var fm = this.nullFrame.getGraphics ().getFontMetrics (this.font);
+this.setCharHeight (Clazz_floatToInt (this.heightScale * fm.getHeight ()));
+this.setCharWidth (Clazz_floatToInt (this.widthScale * fm.charWidth ('M')));
+if (this.isUpperCasebold ()) {
+var f2 =  new java.awt.Font (f.getName (), 1, f.getSize ());
+fm = this.nullFrame.getGraphics ().getFontMetrics (f2);
+this.setCharWidth (Clazz_floatToInt (this.widthScale * (Clazz_doubleToInt (fm.stringWidth ("MMMMMMMMMMM") / 10))));
+}}, "java.awt.Font");
+Clazz_defineMethod (c$, "getFont", 
+function () {
+return this.font;
+});
+Clazz_defineMethod (c$, "resetSeqLimits", 
+function (height) {
+this.setEndSeq (Clazz_doubleToInt (height / this.getCharHeight ()));
+}, "~N");
+Clazz_defineMethod (c$, "setCurrentTree", 
+function (tree) {
+this.currentTree = tree;
+}, "jalview.analysis.NJTree");
+Clazz_defineMethod (c$, "getCurrentTree", 
+function () {
+return this.currentTree;
+});
+Clazz_defineMethod (c$, "getCentreColumnLabels", 
+function () {
+return this.centreColumnLabels;
+});
+Clazz_defineMethod (c$, "getFollowSelection", 
+function () {
+return this.followSelection;
+});
+Clazz_overrideMethod (c$, "sendSelection", 
+function () {
+this.getStructureSelectionManager ().sendSelection ( new jalview.datamodel.SequenceGroup (this.getSelectionGroup ()),  new jalview.datamodel.ColumnSelection (this.getColumnSelection ()), this);
+});
+Clazz_overrideMethod (c$, "getStructureSelectionManager", 
+function () {
+return jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.applet);
+});
+Clazz_defineMethod (c$, "expandColSelection", 
+function (sg, wholewidth) {
+var sgs;
+var sge;
+if (sg != null && (sgs = sg.getStartRes ()) >= 0 && sg.getStartRes () <= (sge = sg.getEndRes ()) && (this.colSel == null || this.colSel.getSelected () == null || this.colSel.getSelected ().size () == 0)) {
+if (!wholewidth && this.alignment.getWidth () == (1 + sge - sgs)) {
+return;
+}if (this.colSel == null) {
+this.colSel =  new jalview.datamodel.ColumnSelection ();
+}for (var cspos = sg.getStartRes (); cspos <= sg.getEndRes (); cspos++) {
+this.colSel.addElement (cspos);
+}
+}}, "jalview.datamodel.SequenceGroup,~B");
+Clazz_overrideMethod (c$, "isNormaliseSequenceLogo", 
+function () {
+return this.normaliseSequenceLogo;
+});
+Clazz_defineMethod (c$, "setNormaliseSequenceLogo", 
+function (state) {
+this.normaliseSequenceLogo = state;
+}, "~B");
+Clazz_overrideMethod (c$, "isValidCharWidth", 
+function () {
+return this.validCharWidth;
+});
+Clazz_defineMethod (c$, "getAnnotationColumnSelectionState", 
+function () {
+return this.annotationColumnSelectionState;
+});
+Clazz_defineMethod (c$, "setAnnotationColumnSelectionState", 
+function (annotationColumnSelectionState) {
+this.annotationColumnSelectionState = annotationColumnSelectionState;
+}, "jalview.appletgui.AnnotationColumnChooser");
+Clazz_overrideMethod (c$, "mirrorCommand", 
+function (command, undo, ssm, source) {
+if (Clazz_instanceOf (source, jalview.api.AlignViewportI) && (source).getCodingComplement () === this) {
+} else {
+return;
+}var mappedCommand = ssm.mapCommand (command, undo, this.getAlignment (), this.getGapCharacter ());
+if (mappedCommand != null) {
+mappedCommand.doCommand (null);
+this.firePropertyChange ("alignment", null, this.getAlignment ().getSequences ());
+}}, "jalview.commands.CommandI,~B,jalview.structure.StructureSelectionManager,jalview.structure.VamsasSource");
+Clazz_overrideMethod (c$, "getVamsasSource", 
+function () {
+return this;
+});
+Clazz_defineMethod (c$, "scrollComplementaryAlignment", 
+function (complementPanel) {
+if (complementPanel == null) {
+return;
+}var sr =  new jalview.datamodel.SearchResults ();
+var seqOffset = this.findComplementScrollTarget (sr);
+if (!sr.isEmpty ()) {
+complementPanel.setFollowingComplementScroll (true);
+complementPanel.scrollToCentre (sr, seqOffset);
+}}, "jalview.appletgui.AlignmentPanel");
+});
+Clazz_declarePackage ("jalview.structure");
+Clazz_declareInterface (jalview.structure, "CommandListener");
+Clazz_declarePackage ("jalview.structure");
+Clazz_declareInterface (jalview.structure, "SelectionSource");
+Clazz_declarePackage ("jalview.structure");
+Clazz_declareInterface (jalview.structure, "VamsasSource");
+Clazz_declarePackage ("jalview.viewmodel");
+Clazz_load (["jalview.api.AlignViewportI", "jalview.structure.CommandListener", "$.VamsasSource", "jalview.datamodel.ColumnSelection", "jalview.viewmodel.styles.ViewStyle", "jalview.workers.AlignCalcManager", "java.beans.PropertyChangeSupport", "java.util.ArrayDeque", "$.HashMap"], "jalview.viewmodel.AlignmentViewport", ["jalview.analysis.Conservation", "jalview.datamodel.AlignmentAnnotation", "$.AlignmentView", "$.CigarArray", "$.Sequence", "$.SequenceGroup", "jalview.schemes.Blosum62ColourScheme", "$.PIDColourScheme", "$.ResidueProperties", "jalview.util.Comparison", "$.MappingUtils", "jalview.workers.ComplementConsensusThread", "$.ConsensusThread", "$.ConservationThread", "$.StrucConsensusThread", "java.awt.Color", "java.util.ArrayList", "$.BitSet", "$.Hashtable"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.viewStyle = null;
+this.codingComplement = null;
+this.featuresDisplayed = null;
+this.historyList = null;
+this.redoList = null;
+this.alignment = null;
+this.sequenceSetID = null;
+this.$isDataset = false;
+this.hiddenRepSequences = null;
+this.colSel = null;
+this.autoCalculateConsensus = true;
+this.autoCalculateStrucConsensus = true;
+this.ignoreGapsInConsensusCalculation = false;
+this.globalColourScheme = null;
+this.consensus = null;
+this.complementConsensus = null;
+this.strucConsensus = null;
+this.conservation = null;
+this.quality = null;
+this.groupConsensus = null;
+this.groupConservation = null;
+this.hconsensus = null;
+this.hcomplementConsensus = null;
+this.hStrucConsensus = null;
+this.hconservation = null;
+this.ConsPercGaps = 25;
+this.calculator = null;
+this.showGroupConservation = false;
+this.showGroupConsensus = false;
+this.showSequenceLogo = false;
+this.normaliseSequenceLogo = false;
+this.showConsensusHistogram = true;
+this.padGaps = false;
+this.sortByTree = false;
+this.selectionGroup = null;
+this.viewId = null;
+this.sgrouphash = -1;
+this.colselhash = -1;
+this.changeSupport = null;
+this.showConservation = true;
+this.showQuality = true;
+this.showConsensus = true;
+this.sequenceColours = null;
+this.sortAnnotationsBy = null;
+this.showAutocalculatedAbove = false;
+this.followHighlight = true;
+this.startRes = 0;
+this.endRes = 0;
+this.startSeq = 0;
+this.endSeq = 0;
+Clazz_instantialize (this, arguments);
+}, jalview.viewmodel, "AlignmentViewport", null, [jalview.api.AlignViewportI, jalview.structure.CommandListener, jalview.structure.VamsasSource]);
+Clazz_prepareFields (c$, function () {
+this.viewStyle =  new jalview.viewmodel.styles.ViewStyle ();
+this.historyList =  new java.util.ArrayDeque ();
+this.redoList =  new java.util.ArrayDeque ();
+this.colSel =  new jalview.datamodel.ColumnSelection ();
+this.calculator =  new jalview.workers.AlignCalcManager ();
+this.changeSupport =  new java.beans.PropertyChangeSupport (this);
+this.sequenceColours =  new java.util.HashMap ();
+});
+Clazz_defineMethod (c$, "setFontName", 
+function (name) {
+this.viewStyle.setFontName (name);
+}, "~S");
+Clazz_defineMethod (c$, "setFontStyle", 
+function (style) {
+this.viewStyle.setFontStyle (style);
+}, "~N");
+Clazz_defineMethod (c$, "setFontSize", 
+function (size) {
+this.viewStyle.setFontSize (size);
+}, "~N");
+Clazz_defineMethod (c$, "getFontStyle", 
+function () {
+return this.viewStyle.getFontStyle ();
+});
+Clazz_defineMethod (c$, "getFontName", 
+function () {
+return this.viewStyle.getFontName ();
+});
+Clazz_defineMethod (c$, "getFontSize", 
+function () {
+return this.viewStyle.getFontSize ();
+});
+Clazz_defineMethod (c$, "setUpperCasebold", 
+function (upperCasebold) {
+this.viewStyle.setUpperCasebold (upperCasebold);
+}, "~B");
+Clazz_defineMethod (c$, "isUpperCasebold", 
+function () {
+return this.viewStyle.isUpperCasebold ();
+});
+Clazz_defineMethod (c$, "isSeqNameItalics", 
+function () {
+return this.viewStyle.isSeqNameItalics ();
+});
+Clazz_defineMethod (c$, "setColourByReferenceSeq", 
+function (colourByReferenceSeq) {
+this.viewStyle.setColourByReferenceSeq (colourByReferenceSeq);
+}, "~B");
+Clazz_defineMethod (c$, "setColourAppliesToAllGroups", 
+function (b) {
+this.viewStyle.setColourAppliesToAllGroups (b);
+}, "~B");
+Clazz_defineMethod (c$, "getColourAppliesToAllGroups", 
+function () {
+return this.viewStyle.getColourAppliesToAllGroups ();
+});
+Clazz_defineMethod (c$, "getAbovePIDThreshold", 
+function () {
+return this.viewStyle.getAbovePIDThreshold ();
+});
+Clazz_defineMethod (c$, "setIncrement", 
+function (inc) {
+this.viewStyle.setIncrement (inc);
+}, "~N");
+Clazz_defineMethod (c$, "getIncrement", 
+function () {
+return this.viewStyle.getIncrement ();
+});
+Clazz_defineMethod (c$, "setConservationSelected", 
+function (b) {
+this.viewStyle.setConservationSelected (b);
+}, "~B");
+Clazz_defineMethod (c$, "setShowHiddenMarkers", 
+function (show) {
+this.viewStyle.setShowHiddenMarkers (show);
+}, "~B");
+Clazz_defineMethod (c$, "getShowHiddenMarkers", 
+function () {
+return this.viewStyle.getShowHiddenMarkers ();
+});
+Clazz_defineMethod (c$, "setScaleRightWrapped", 
+function (b) {
+this.viewStyle.setScaleRightWrapped (b);
+}, "~B");
+Clazz_defineMethod (c$, "setScaleLeftWrapped", 
+function (b) {
+this.viewStyle.setScaleLeftWrapped (b);
+}, "~B");
+Clazz_defineMethod (c$, "setScaleAboveWrapped", 
+function (b) {
+this.viewStyle.setScaleAboveWrapped (b);
+}, "~B");
+Clazz_defineMethod (c$, "getScaleLeftWrapped", 
+function () {
+return this.viewStyle.getScaleLeftWrapped ();
+});
+Clazz_defineMethod (c$, "getScaleAboveWrapped", 
+function () {
+return this.viewStyle.getScaleAboveWrapped ();
+});
+Clazz_defineMethod (c$, "getScaleRightWrapped", 
+function () {
+return this.viewStyle.getScaleRightWrapped ();
+});
+Clazz_defineMethod (c$, "setAbovePIDThreshold", 
+function (b) {
+this.viewStyle.setAbovePIDThreshold (b);
+}, "~B");
+Clazz_defineMethod (c$, "setThreshold", 
+function (thresh) {
+this.viewStyle.setThreshold (thresh);
+}, "~N");
+Clazz_defineMethod (c$, "getThreshold", 
+function () {
+return this.viewStyle.getThreshold ();
+});
+Clazz_defineMethod (c$, "getShowJVSuffix", 
+function () {
+return this.viewStyle.getShowJVSuffix ();
+});
+Clazz_defineMethod (c$, "setShowJVSuffix", 
+function (b) {
+this.viewStyle.setShowJVSuffix (b);
+}, "~B");
+Clazz_defineMethod (c$, "setWrapAlignment", 
+function (state) {
+this.viewStyle.setWrapAlignment (state);
+}, "~B");
+Clazz_defineMethod (c$, "setShowText", 
+function (state) {
+this.viewStyle.setShowText (state);
+}, "~B");
+Clazz_defineMethod (c$, "setRenderGaps", 
+function (state) {
+this.viewStyle.setRenderGaps (state);
+}, "~B");
+Clazz_defineMethod (c$, "getColourText", 
+function () {
+return this.viewStyle.getColourText ();
+});
+Clazz_defineMethod (c$, "setColourText", 
+function (state) {
+this.viewStyle.setColourText (state);
+}, "~B");
+Clazz_defineMethod (c$, "getWrapAlignment", 
+function () {
+return this.viewStyle.getWrapAlignment ();
+});
+Clazz_defineMethod (c$, "getShowText", 
+function () {
+return this.viewStyle.getShowText ();
+});
+Clazz_defineMethod (c$, "getWrappedWidth", 
+function () {
+return this.viewStyle.getWrappedWidth ();
+});
+Clazz_defineMethod (c$, "setWrappedWidth", 
+function (w) {
+this.viewStyle.setWrappedWidth (w);
+}, "~N");
+Clazz_defineMethod (c$, "getCharHeight", 
+function () {
+return this.viewStyle.getCharHeight ();
+});
+Clazz_defineMethod (c$, "setCharHeight", 
+function (h) {
+this.viewStyle.setCharHeight (h);
+}, "~N");
+Clazz_defineMethod (c$, "getCharWidth", 
+function () {
+return this.viewStyle.getCharWidth ();
+});
+Clazz_defineMethod (c$, "setCharWidth", 
+function (w) {
+this.viewStyle.setCharWidth (w);
+}, "~N");
+Clazz_defineMethod (c$, "getShowBoxes", 
+function () {
+return this.viewStyle.getShowBoxes ();
+});
+Clazz_defineMethod (c$, "getShowUnconserved", 
+function () {
+return this.viewStyle.getShowUnconserved ();
+});
+Clazz_defineMethod (c$, "setShowUnconserved", 
+function (showunconserved) {
+this.viewStyle.setShowUnconserved (showunconserved);
+}, "~B");
+Clazz_defineMethod (c$, "setSeqNameItalics", 
+function (default1) {
+this.viewStyle.setSeqNameItalics (default1);
+}, "~B");
+Clazz_defineMethod (c$, "getAlignment", 
+function () {
+return this.alignment;
+});
+Clazz_overrideMethod (c$, "getGapCharacter", 
+function () {
+return this.alignment.getGapCharacter ();
+});
+Clazz_defineMethod (c$, "setDataset", 
+function (b) {
+this.$isDataset = b;
+}, "~B");
+Clazz_defineMethod (c$, "isDataset", 
+function () {
+return this.$isDataset;
+});
+Clazz_overrideMethod (c$, "setGlobalColourScheme", 
+function (cs) {
+this.globalColourScheme = cs;
+var recalc = false;
+if (cs != null) {
+cs.setConservationApplied (recalc = this.getConservationSelected ());
+if (this.getAbovePIDThreshold () || Clazz_instanceOf (cs, jalview.schemes.PIDColourScheme) || Clazz_instanceOf (cs, jalview.schemes.Blosum62ColourScheme)) {
+recalc = true;
+cs.setThreshold (this.viewStyle.getThreshold (), this.ignoreGapsInConsensusCalculation);
+} else {
+cs.setThreshold (0, this.ignoreGapsInConsensusCalculation);
+}if (recalc) {
+cs.setConsensus (this.hconsensus);
+cs.setConservation (this.hconservation);
+}cs.alignmentChanged (this.alignment, this.hiddenRepSequences);
+}if (this.getColourAppliesToAllGroups ()) {
+for (var sg, $sg = this.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (cs == null) {
+sg.cs = null;
+continue;
+}sg.cs = cs.applyTo (sg, this.getHiddenRepSequences ());
+sg.setConsPercGaps (this.ConsPercGaps);
+if (this.getAbovePIDThreshold () || Clazz_instanceOf (cs, jalview.schemes.PIDColourScheme) || Clazz_instanceOf (cs, jalview.schemes.Blosum62ColourScheme)) {
+sg.cs.setThreshold (this.viewStyle.getThreshold (), this.isIgnoreGapsConsensus ());
+recalc = true;
+} else {
+sg.cs.setThreshold (0, this.isIgnoreGapsConsensus ());
+}if (this.getConservationSelected ()) {
+sg.cs.setConservationApplied (true);
+recalc = true;
+} else {
+sg.cs.setConservation (null);
+}if (recalc) {
+sg.recalcConservation ();
+} else {
+sg.cs.alignmentChanged (sg, this.hiddenRepSequences);
+}}
+}}, "jalview.schemes.ColourSchemeI");
+Clazz_overrideMethod (c$, "getGlobalColourScheme", 
+function () {
+return this.globalColourScheme;
+});
+Clazz_overrideMethod (c$, "setConservation", 
+function (cons) {
+this.hconservation = cons;
+}, "jalview.analysis.Conservation");
+Clazz_overrideMethod (c$, "getConsPercGaps", 
+function () {
+return this.ConsPercGaps;
+});
+Clazz_overrideMethod (c$, "setSequenceConsensusHash", 
+function (hconsensus) {
+this.hconsensus = hconsensus;
+}, "~A");
+Clazz_overrideMethod (c$, "setComplementConsensusHash", 
+function (hconsensus) {
+this.hcomplementConsensus = hconsensus;
+}, "~A");
+Clazz_overrideMethod (c$, "getSequenceConsensusHash", 
+function () {
+return this.hconsensus;
+});
+Clazz_overrideMethod (c$, "getComplementConsensusHash", 
+function () {
+return this.hcomplementConsensus;
+});
+Clazz_overrideMethod (c$, "getRnaStructureConsensusHash", 
+function () {
+return this.hStrucConsensus;
+});
+Clazz_overrideMethod (c$, "setRnaStructureConsensusHash", 
+function (hStrucConsensus) {
+this.hStrucConsensus = hStrucConsensus;
+}, "~A");
+Clazz_overrideMethod (c$, "getAlignmentQualityAnnot", 
+function () {
+return this.quality;
+});
+Clazz_overrideMethod (c$, "getAlignmentConservationAnnotation", 
+function () {
+return this.conservation;
+});
+Clazz_overrideMethod (c$, "getAlignmentConsensusAnnotation", 
+function () {
+return this.consensus;
+});
+Clazz_overrideMethod (c$, "getComplementConsensusAnnotation", 
+function () {
+return this.complementConsensus;
+});
+Clazz_overrideMethod (c$, "getAlignmentStrucConsensusAnnotation", 
+function () {
+return this.strucConsensus;
+});
+Clazz_defineMethod (c$, "updateConservation", 
+function (ap) {
+if (this.alignment.isNucleotide () || this.conservation == null || !this.autoCalculateConsensus) {
+return;
+}if (this.calculator.getRegisteredWorkersOfClass (jalview.workers.ConservationThread) == null) {
+this.calculator.registerWorker ( new jalview.workers.ConservationThread (this, ap));
+}}, "jalview.api.AlignmentViewPanel");
+Clazz_defineMethod (c$, "updateConsensus", 
+function (ap) {
+if (this.consensus == null || !this.autoCalculateConsensus) {
+return;
+}if (this.calculator.getRegisteredWorkersOfClass (jalview.workers.ConsensusThread) == null) {
+this.calculator.registerWorker ( new jalview.workers.ConsensusThread (this, ap));
+}var al = this.getAlignment ();
+if (!al.isNucleotide () && al.getCodonFrames () != null && !al.getCodonFrames ().isEmpty ()) {
+if (this.calculator.getRegisteredWorkersOfClass (jalview.workers.ComplementConsensusThread) == null) {
+this.calculator.registerWorker ( new jalview.workers.ComplementConsensusThread (this, ap));
+}}}, "jalview.api.AlignmentViewPanel");
+Clazz_defineMethod (c$, "updateStrucConsensus", 
+function (ap) {
+if (this.autoCalculateStrucConsensus && this.strucConsensus == null && this.alignment.isNucleotide () && this.alignment.hasRNAStructure ()) {
+this.initRNAStructure ();
+}if (this.strucConsensus == null || !this.autoCalculateStrucConsensus) {
+return;
+}if (this.calculator.getRegisteredWorkersOfClass (jalview.workers.StrucConsensusThread) == null) {
+this.calculator.registerWorker ( new jalview.workers.StrucConsensusThread (this, ap));
+}}, "jalview.api.AlignmentViewPanel");
+Clazz_defineMethod (c$, "isCalcInProgress", 
+function () {
+return this.calculator.isWorking ();
+});
+Clazz_overrideMethod (c$, "isCalculationInProgress", 
+function (alignmentAnnotation) {
+if (!alignmentAnnotation.autoCalculated) {
+return false;
+}if (this.calculator.workingInvolvedWith (alignmentAnnotation)) {
+return true;
+}return false;
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz_overrideMethod (c$, "isClosed", 
+function () {
+return this.alignment == null;
+});
+Clazz_overrideMethod (c$, "getCalcManager", 
+function () {
+return this.calculator;
+});
+Clazz_overrideMethod (c$, "isShowSequenceLogo", 
+function () {
+return this.showSequenceLogo;
+});
+Clazz_defineMethod (c$, "setShowSequenceLogo", 
+function (showSequenceLogo) {
+if (showSequenceLogo != this.showSequenceLogo) {
+this.showSequenceLogo = showSequenceLogo;
+this.calculator.updateAnnotationFor (jalview.workers.ConsensusThread);
+this.calculator.updateAnnotationFor (jalview.workers.ComplementConsensusThread);
+this.calculator.updateAnnotationFor (jalview.workers.StrucConsensusThread);
+}this.showSequenceLogo = showSequenceLogo;
+}, "~B");
+Clazz_defineMethod (c$, "setShowConsensusHistogram", 
+function (showConsensusHistogram) {
+this.showConsensusHistogram = showConsensusHistogram;
+}, "~B");
+Clazz_defineMethod (c$, "isShowGroupConservation", 
+function () {
+return this.showGroupConservation;
+});
+Clazz_defineMethod (c$, "setShowGroupConservation", 
+function (showGroupConservation) {
+this.showGroupConservation = showGroupConservation;
+}, "~B");
+Clazz_defineMethod (c$, "isShowGroupConsensus", 
+function () {
+return this.showGroupConsensus;
+});
+Clazz_defineMethod (c$, "setShowGroupConsensus", 
+function (showGroupConsensus) {
+this.showGroupConsensus = showGroupConsensus;
+}, "~B");
+Clazz_overrideMethod (c$, "isShowConsensusHistogram", 
+function () {
+return this.showConsensusHistogram;
+});
+Clazz_overrideMethod (c$, "getSelectionGroup", 
+function () {
+return this.selectionGroup;
+});
+Clazz_overrideMethod (c$, "setSelectionGroup", 
+function (sg) {
+this.selectionGroup = sg;
+}, "jalview.datamodel.SequenceGroup");
+Clazz_defineMethod (c$, "setHiddenColumns", 
+function (colsel) {
+this.colSel = colsel;
+}, "jalview.datamodel.ColumnSelection");
+Clazz_overrideMethod (c$, "getColumnSelection", 
+function () {
+return this.colSel;
+});
+Clazz_overrideMethod (c$, "setColumnSelection", 
+function (colSel) {
+this.colSel = colSel;
+if (colSel != null) {
+this.updateHiddenColumns ();
+}}, "jalview.datamodel.ColumnSelection");
+Clazz_overrideMethod (c$, "getHiddenRepSequences", 
+function () {
+return this.hiddenRepSequences;
+});
+Clazz_overrideMethod (c$, "setHiddenRepSequences", 
+function (hiddenRepSequences) {
+this.hiddenRepSequences = hiddenRepSequences;
+}, "java.util.Map");
+Clazz_overrideMethod (c$, "hasHiddenColumns", 
+function () {
+return this.colSel != null && this.colSel.hasHiddenColumns ();
+});
+Clazz_defineMethod (c$, "updateHiddenColumns", 
+function () {
+});
+Clazz_overrideMethod (c$, "hasHiddenRows", 
+function () {
+return this.alignment.getHiddenSequences ().getSize () > 0;
+});
+Clazz_defineMethod (c$, "setSequenceSetId", 
+function (newid) {
+if (this.sequenceSetID != null) {
+System.err.println ("Warning - overwriting a sequenceSetId for a viewport!");
+}this.sequenceSetID =  String.instantialize (newid);
+}, "~S");
+Clazz_overrideMethod (c$, "getSequenceSetId", 
+function () {
+if (this.sequenceSetID == null) {
+this.sequenceSetID = this.alignment.hashCode () + "";
+}return this.sequenceSetID;
+});
+Clazz_overrideMethod (c$, "getViewId", 
+function () {
+if (this.viewId == null) {
+this.viewId = this.getSequenceSetId () + "." + this.hashCode () + "";
+}return this.viewId;
+});
+Clazz_defineMethod (c$, "setIgnoreGapsConsensus", 
+function (b, ap) {
+this.ignoreGapsInConsensusCalculation = b;
+if (ap != null) {
+this.updateConsensus (ap);
+if (this.globalColourScheme != null) {
+this.globalColourScheme.setThreshold (this.globalColourScheme.getThreshold (), this.ignoreGapsInConsensusCalculation);
+}}}, "~B,jalview.api.AlignmentViewPanel");
+Clazz_defineMethod (c$, "isSelectionGroupChanged", 
+function (b) {
+var hc = (this.selectionGroup == null || this.selectionGroup.getSize () == 0) ? -1 : this.selectionGroup.hashCode ();
+if (hc != -1 && hc != this.sgrouphash) {
+if (b) {
+this.sgrouphash = hc;
+}return true;
+}return false;
+}, "~B");
+Clazz_defineMethod (c$, "isColSelChanged", 
+function (b) {
+var hc = (this.colSel == null || this.colSel.size () == 0) ? -1 : this.colSel.hashCode ();
+if (hc != -1 && hc != this.colselhash) {
+if (b) {
+this.colselhash = hc;
+}return true;
+}return false;
+}, "~B");
+Clazz_overrideMethod (c$, "isIgnoreGapsConsensus", 
+function () {
+return this.ignoreGapsInConsensusCalculation;
+});
+Clazz_defineMethod (c$, "addPropertyChangeListener", 
+function (listener) {
+this.changeSupport.addPropertyChangeListener (listener);
+}, "java.beans.PropertyChangeListener");
+Clazz_defineMethod (c$, "removePropertyChangeListener", 
+function (listener) {
+this.changeSupport.removePropertyChangeListener (listener);
+}, "java.beans.PropertyChangeListener");
+Clazz_defineMethod (c$, "firePropertyChange", 
+function (prop, oldvalue, newvalue) {
+this.changeSupport.firePropertyChange (prop, oldvalue, newvalue);
+}, "~S,~O,~O");
+Clazz_defineMethod (c$, "hideSelectedColumns", 
+function () {
+if (this.colSel.size () < 1) {
+return;
+}this.colSel.hideSelectedColumns ();
+this.setSelectionGroup (null);
+});
+Clazz_defineMethod (c$, "hideColumns", 
+function (start, end) {
+if (start == end) {
+this.colSel.hideColumns (start);
+} else {
+this.colSel.hideColumns (start, end);
+}}, "~N,~N");
+Clazz_defineMethod (c$, "showColumn", 
+function (col) {
+this.colSel.revealHiddenColumns (col);
+}, "~N");
+Clazz_defineMethod (c$, "showAllHiddenColumns", 
+function () {
+this.colSel.revealAllHiddenColumns ();
+});
+Clazz_defineMethod (c$, "showAllHiddenSeqs", 
+function () {
+if (this.alignment.getHiddenSequences ().getSize () > 0) {
+if (this.selectionGroup == null) {
+this.selectionGroup =  new jalview.datamodel.SequenceGroup ();
+this.selectionGroup.setEndRes (this.alignment.getWidth () - 1);
+}var tmp = this.alignment.getHiddenSequences ().showAll (this.hiddenRepSequences);
+for (var seq, $seq = tmp.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+this.selectionGroup.addSequence (seq, false);
+this.setSequenceAnnotationsVisible (seq, true);
+}
+this.hiddenRepSequences = null;
+this.firePropertyChange ("alignment", null, this.alignment.getSequences ());
+this.sendSelection ();
+}});
+Clazz_defineMethod (c$, "showSequence", 
+function (index) {
+var tmp = this.alignment.getHiddenSequences ().showSequence (index, this.hiddenRepSequences);
+if (tmp.size () > 0) {
+if (this.selectionGroup == null) {
+this.selectionGroup =  new jalview.datamodel.SequenceGroup ();
+this.selectionGroup.setEndRes (this.alignment.getWidth () - 1);
+}for (var seq, $seq = tmp.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+this.selectionGroup.addSequence (seq, false);
+this.setSequenceAnnotationsVisible (seq, true);
+}
+this.firePropertyChange ("alignment", null, this.alignment.getSequences ());
+this.sendSelection ();
+}}, "~N");
+Clazz_defineMethod (c$, "hideAllSelectedSeqs", 
+function () {
+if (this.selectionGroup == null || this.selectionGroup.getSize () < 1) {
+return;
+}var seqs = this.selectionGroup.getSequencesInOrder (this.alignment);
+this.hideSequence (seqs);
+this.setSelectionGroup (null);
+});
+Clazz_defineMethod (c$, "hideSequence", 
+function (seq) {
+if (seq != null) {
+for (var i = 0; i < seq.length; i++) {
+this.alignment.getHiddenSequences ().hideSequence (seq[i]);
+this.setSequenceAnnotationsVisible (seq[i], false);
+}
+this.firePropertyChange ("alignment", null, this.alignment.getSequences ());
+}}, "~A");
+Clazz_defineMethod (c$, "setSequenceAnnotationsVisible", 
+function (sequenceI, visible) {
+for (var ann, $ann = 0, $$ann = this.alignment.getAlignmentAnnotation (); $ann < $$ann.length && ((ann = $$ann[$ann]) || true); $ann++) {
+if (ann.sequenceRef === sequenceI) {
+ann.visible = visible;
+}}
+}, "jalview.datamodel.SequenceI,~B");
+Clazz_defineMethod (c$, "hideRepSequences", 
+function (repSequence, sg) {
+var sSize = sg.getSize ();
+if (sSize < 2) {
+return;
+}if (this.hiddenRepSequences == null) {
+this.hiddenRepSequences =  new java.util.Hashtable ();
+}this.hiddenRepSequences.put (repSequence, sg);
+var seqs =  new Array (sSize - 1);
+var index = 0;
+for (var i = 0; i < sSize; i++) {
+if (sg.getSequenceAt (i) !== repSequence) {
+if (index == sSize - 1) {
+return;
+}seqs[index++] = sg.getSequenceAt (i);
+}}
+sg.setSeqrep (repSequence);
+sg.setHidereps (true);
+this.hideSequence (seqs);
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceGroup");
+Clazz_defineMethod (c$, "isHiddenRepSequence", 
+function (seq) {
+return this.alignment.getSeqrep () === seq || (this.hiddenRepSequences != null && this.hiddenRepSequences.containsKey (seq));
+}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "getRepresentedSequences", 
+function (seq) {
+return (this.hiddenRepSequences == null ? null : this.hiddenRepSequences.get (seq));
+}, "jalview.datamodel.SequenceI");
+Clazz_overrideMethod (c$, "adjustForHiddenSeqs", 
+function (alignmentIndex) {
+return this.alignment.getHiddenSequences ().adjustForHiddenSeqs (alignmentIndex);
+}, "~N");
+Clazz_overrideMethod (c$, "invertColumnSelection", 
+function () {
+this.colSel.invertColumnSelection (0, this.alignment.getWidth ());
+});
+Clazz_overrideMethod (c$, "getSelectionAsNewSequence", 
+function () {
+var sequences;
+if (this.selectionGroup == null || this.selectionGroup.getSize () == 0) {
+sequences = this.alignment.getSequencesArray ();
+var annots = this.alignment.getAlignmentAnnotation ();
+for (var i = 0; i < sequences.length; i++) {
+sequences[i] =  new jalview.datamodel.Sequence (sequences[i], annots);
+}
+} else {
+sequences = this.selectionGroup.getSelectionAsNewSequences (this.alignment);
+}return sequences;
+});
+Clazz_overrideMethod (c$, "getSequenceSelection", 
+function () {
+var sequences = null;
+if (this.selectionGroup != null) {
+sequences = this.selectionGroup.getSequencesInOrder (this.alignment);
+}if (sequences == null) {
+sequences = this.alignment.getSequencesArray ();
+}return sequences;
+});
+Clazz_overrideMethod (c$, "getViewAsCigars", 
+function (selectedRegionOnly) {
+return  new jalview.datamodel.CigarArray (this.alignment, this.colSel, (selectedRegionOnly ? this.selectionGroup : null));
+}, "~B");
+Clazz_defineMethod (c$, "getAlignmentView", 
+function (selectedOnly) {
+return this.getAlignmentView (selectedOnly, false);
+}, "~B");
+Clazz_defineMethod (c$, "getAlignmentView", 
+function (selectedOnly, markGroups) {
+return  new jalview.datamodel.AlignmentView (this.alignment, this.colSel, this.selectionGroup, this.colSel != null && this.colSel.hasHiddenColumns (), selectedOnly, markGroups);
+}, "~B,~B");
+Clazz_overrideMethod (c$, "getViewAsString", 
+function (selectedRegionOnly) {
+var selection = null;
+var seqs = null;
+var i;
+var iSize;
+var start = 0;
+var end = 0;
+if (selectedRegionOnly && this.selectionGroup != null) {
+iSize = this.selectionGroup.getSize ();
+seqs = this.selectionGroup.getSequencesInOrder (this.alignment);
+start = this.selectionGroup.getStartRes ();
+end = this.selectionGroup.getEndRes () + 1;
+} else {
+iSize = this.alignment.getHeight ();
+seqs = this.alignment.getSequencesArray ();
+end = this.alignment.getWidth ();
+}selection =  new Array (iSize);
+if (this.colSel != null && this.colSel.hasHiddenColumns ()) {
+selection = this.colSel.getVisibleSequenceStrings (start, end, seqs);
+} else {
+for (i = 0; i < iSize; i++) {
+selection[i] = seqs[i].getSequenceAsString (start, end);
+}
+}return selection;
+}, "~B");
+Clazz_overrideMethod (c$, "getVisibleRegionBoundaries", 
+function (min, max) {
+var regions =  new java.util.ArrayList ();
+var start = min;
+var end = max;
+do {
+if (this.colSel != null && this.colSel.hasHiddenColumns ()) {
+if (start == 0) {
+start = this.colSel.adjustForHiddenColumns (start);
+}end = this.colSel.getHiddenBoundaryRight (start);
+if (start == end) {
+end = max;
+}if (end > max) {
+end = max;
+}}regions.add ( Clazz_newIntArray (-1, [start, end]));
+if (this.colSel != null && this.colSel.hasHiddenColumns ()) {
+start = this.colSel.adjustForHiddenColumns (end);
+start = this.colSel.getHiddenBoundaryLeft (start) + 1;
+}} while (end < max);
+var startEnd =  Clazz_newIntArray (regions.size (), 2, 0);
+return regions;
+}, "~N,~N");
+Clazz_overrideMethod (c$, "getVisibleAlignmentAnnotation", 
+function (selectedOnly) {
+var ala =  new java.util.ArrayList ();
+var aa;
+if ((aa = this.alignment.getAlignmentAnnotation ()) != null) {
+for (var annot, $annot = 0, $$annot = aa; $annot < $$annot.length && ((annot = $$annot[$annot]) || true); $annot++) {
+var clone =  new jalview.datamodel.AlignmentAnnotation (annot);
+if (selectedOnly && this.selectionGroup != null) {
+this.colSel.makeVisibleAnnotation (this.selectionGroup.getStartRes (), this.selectionGroup.getEndRes (), clone);
+} else {
+this.colSel.makeVisibleAnnotation (clone);
+}ala.add (clone);
+}
+}return ala;
+}, "~B");
+Clazz_overrideMethod (c$, "isPadGaps", 
+function () {
+return this.padGaps;
+});
+Clazz_overrideMethod (c$, "setPadGaps", 
+function (padGaps) {
+this.padGaps = padGaps;
+}, "~B");
+Clazz_overrideMethod (c$, "alignmentChanged", 
+function (ap) {
+if (this.isPadGaps ()) {
+this.alignment.padGaps ();
+}if (this.autoCalculateConsensus) {
+this.updateConsensus (ap);
+}if (this.hconsensus != null && this.autoCalculateConsensus) {
+this.updateConservation (ap);
+}if (this.autoCalculateStrucConsensus) {
+this.updateStrucConsensus (ap);
+}var alWidth = this.alignment.getWidth ();
+var groups = this.alignment.getGroups ();
+if (groups != null) {
+for (var sg, $sg = groups.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (sg.getEndRes () > alWidth) {
+sg.setEndRes (alWidth - 1);
+}}
+}if (this.selectionGroup != null && this.selectionGroup.getEndRes () > alWidth) {
+this.selectionGroup.setEndRes (alWidth - 1);
+}this.resetAllColourSchemes ();
+this.calculator.restartWorkers ();
+}, "jalview.api.AlignmentViewPanel");
+Clazz_defineMethod (c$, "resetAllColourSchemes", 
+function () {
+var cs = this.globalColourScheme;
+if (cs != null) {
+cs.alignmentChanged (this.alignment, this.hiddenRepSequences);
+cs.setConsensus (this.hconsensus);
+if (cs.conservationApplied ()) {
+cs.setConservation (jalview.analysis.Conservation.calculateConservation ("All", jalview.schemes.ResidueProperties.propHash, 3, this.alignment.getSequences (), 0, this.alignment.getWidth (), false, this.getConsPercGaps (), false));
+}}for (var sg, $sg = this.alignment.getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (sg.cs != null) {
+sg.cs.alignmentChanged (sg, this.hiddenRepSequences);
+}sg.recalcConservation ();
+}
+});
+Clazz_defineMethod (c$, "initAutoAnnotation", 
+function () {
+if (this.hconsensus == null && !this.$isDataset) {
+if (!this.alignment.isNucleotide ()) {
+this.initConservation ();
+this.initQuality ();
+} else {
+this.initRNAStructure ();
+}this.consensus =  new jalview.datamodel.AlignmentAnnotation ("Consensus", "PID",  new Array (1), 0, 100, 1);
+this.initConsensus (this.consensus);
+this.initComplementConsensus ();
+}});
+Clazz_defineMethod (c$, "initComplementConsensus", 
+function () {
+if (!this.alignment.isNucleotide ()) {
+var codonMappings = this.alignment.getCodonFrames ();
+if (codonMappings != null && !codonMappings.isEmpty ()) {
+this.complementConsensus =  new jalview.datamodel.AlignmentAnnotation ("cDNA Consensus", "PID for cDNA",  new Array (1), 0, 100, 1);
+this.initConsensus (this.complementConsensus);
+}}});
+Clazz_defineMethod (c$, "initConsensus", 
+ function (aa) {
+aa.hasText = true;
+aa.autoCalculated = true;
+if (this.showConsensus) {
+this.alignment.addAnnotation (aa);
+}}, "jalview.datamodel.AlignmentAnnotation");
+Clazz_defineMethod (c$, "initConservation", 
+ function () {
+if (this.showConservation) {
+if (this.conservation == null) {
+this.conservation =  new jalview.datamodel.AlignmentAnnotation ("Conservation", "Conservation of total alignment less than " + this.getConsPercGaps () + "% gaps",  new Array (1), 0, 11, 1);
+this.conservation.hasText = true;
+this.conservation.autoCalculated = true;
+this.alignment.addAnnotation (this.conservation);
+}}});
+Clazz_defineMethod (c$, "initQuality", 
+ function () {
+if (this.showQuality) {
+if (this.quality == null) {
+this.quality =  new jalview.datamodel.AlignmentAnnotation ("Quality", "Alignment Quality based on Blosum62 scores",  new Array (1), 0, 11, 1);
+this.quality.hasText = true;
+this.quality.autoCalculated = true;
+this.alignment.addAnnotation (this.quality);
+}}});
+Clazz_defineMethod (c$, "initRNAStructure", 
+ function () {
+if (this.alignment.hasRNAStructure () && this.strucConsensus == null) {
+this.strucConsensus =  new jalview.datamodel.AlignmentAnnotation ("StrucConsensus", "PID",  new Array (1), 0, 100, 1);
+this.strucConsensus.hasText = true;
+this.strucConsensus.autoCalculated = true;
+if (this.showConsensus) {
+this.alignment.addAnnotation (this.strucConsensus);
+}}});
+Clazz_overrideMethod (c$, "calcPanelHeight", 
+function () {
+var anns = this.getAlignment ().getAlignmentAnnotation ();
+var height = 0;
+var charHeight = this.getCharHeight ();
+if (anns != null) {
+var graphgrp =  new java.util.BitSet ();
+for (var aa, $aa = 0, $$aa = anns; $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {
+if (aa == null) {
+System.err.println ("Null annotation row: ignoring.");
+continue;
+}if (!aa.visible) {
+continue;
+}if (aa.graphGroup > -1) {
+if (graphgrp.get (aa.graphGroup)) {
+continue;
+} else {
+graphgrp.set (aa.graphGroup);
+}}aa.height = 0;
+if (aa.hasText) {
+aa.height += charHeight;
+}if (aa.hasIcons) {
+aa.height += 16;
+}if (aa.graph > 0) {
+aa.height += aa.graphHeight;
+}if (aa.height == 0) {
+aa.height = 20;
+}height += aa.height;
+}
+}if (height == 0) {
+height = 20;
+}return height;
+});
+Clazz_overrideMethod (c$, "updateGroupAnnotationSettings", 
+function (applyGlobalSettings, preserveNewGroupSettings) {
+var updateCalcs = false;
+var conv = this.isShowGroupConservation ();
+var cons = this.isShowGroupConsensus ();
+var showprf = this.isShowSequenceLogo ();
+var showConsHist = this.isShowConsensusHistogram ();
+var normLogo = this.isNormaliseSequenceLogo ();
+var sortg = true;
+var aan = this.alignment.getAlignmentAnnotation ();
+var oldrfs =  new java.util.ArrayList ();
+if (aan != null) {
+for (var an = 0; an < aan.length; an++) {
+if (aan[an].autoCalculated && aan[an].groupRef != null) {
+oldrfs.add (aan[an].groupRef);
+this.alignment.deleteAnnotation (aan[an], false);
+}}
+}if (this.alignment.getGroups () != null) {
+for (var sg, $sg = this.alignment.getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+updateCalcs = false;
+if (applyGlobalSettings || (!preserveNewGroupSettings && !oldrfs.contains (sg))) {
+sg.setshowSequenceLogo (showprf);
+sg.setShowConsensusHistogram (showConsHist);
+sg.setNormaliseSequenceLogo (normLogo);
+}if (conv) {
+updateCalcs = true;
+this.alignment.addAnnotation (sg.getConservationRow (), 0);
+}if (cons) {
+updateCalcs = true;
+this.alignment.addAnnotation (sg.getConsensus (), 0);
+}if (updateCalcs) {
+sg.recalcConservation ();
+}}
+}oldrfs.clear ();
+}, "~B,~B");
+Clazz_defineMethod (c$, "isDisplayReferenceSeq", 
+function () {
+return this.alignment.hasSeqrep () && this.viewStyle.isDisplayReferenceSeq ();
+});
+Clazz_defineMethod (c$, "setDisplayReferenceSeq", 
+function (displayReferenceSeq) {
+this.viewStyle.setDisplayReferenceSeq (displayReferenceSeq);
+}, "~B");
+Clazz_defineMethod (c$, "isColourByReferenceSeq", 
+function () {
+return this.alignment.hasSeqrep () && this.viewStyle.isColourByReferenceSeq ();
+});
+Clazz_overrideMethod (c$, "getSequenceColour", 
+function (seq) {
+var sqc = this.sequenceColours.get (seq);
+return (sqc == null ? java.awt.Color.white : sqc);
+}, "jalview.datamodel.SequenceI");
+Clazz_overrideMethod (c$, "setSequenceColour", 
+function (seq, col) {
+if (col == null) {
+this.sequenceColours.remove (seq);
+} else {
+this.sequenceColours.put (seq, col);
+}}, "jalview.datamodel.SequenceI,java.awt.Color");
+Clazz_overrideMethod (c$, "updateSequenceIdColours", 
+function () {
+for (var sg, $sg = this.alignment.getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (sg.idColour != null) {
+for (var s, $s = sg.getSequences (this.getHiddenRepSequences ()).iterator (); $s.hasNext () && ((s = $s.next ()) || true);) {
+this.sequenceColours.put (s, sg.idColour);
+}
+}}
+});
+Clazz_overrideMethod (c$, "clearSequenceColours", 
+function () {
+this.sequenceColours.clear ();
+});
+Clazz_defineMethod (c$, "getCodingComplement", 
+function () {
+return this.codingComplement;
+});
+Clazz_defineMethod (c$, "setCodingComplement", 
+function (av) {
+if (this === av) {
+System.err.println ("Ignoring recursive setCodingComplement request");
+} else {
+this.codingComplement = av;
+if (av.getCodingComplement () !== this) {
+av.setCodingComplement (this);
+}}}, "jalview.api.AlignViewportI");
+Clazz_overrideMethod (c$, "isNucleotide", 
+function () {
+return this.getAlignment () == null ? false : this.getAlignment ().isNucleotide ();
+});
+Clazz_overrideMethod (c$, "getFeaturesDisplayed", 
+function () {
+return this.featuresDisplayed;
+});
+Clazz_overrideMethod (c$, "setFeaturesDisplayed", 
+function (featuresDisplayedI) {
+this.featuresDisplayed = featuresDisplayedI;
+}, "jalview.api.FeaturesDisplayedI");
+Clazz_overrideMethod (c$, "areFeaturesDisplayed", 
+function () {
+return this.featuresDisplayed != null && this.featuresDisplayed.getRegisterdFeaturesCount () > 0;
+});
+Clazz_defineMethod (c$, "setShowSequenceFeatures", 
+function (b) {
+this.viewStyle.setShowSequenceFeatures (b);
+}, "~B");
+Clazz_defineMethod (c$, "isShowSequenceFeatures", 
+function () {
+return this.viewStyle.isShowSequenceFeatures ();
+});
+Clazz_defineMethod (c$, "setShowSequenceFeaturesHeight", 
+function (selected) {
+this.viewStyle.setShowSequenceFeaturesHeight (selected);
+}, "~B");
+Clazz_defineMethod (c$, "isShowSequenceFeaturesHeight", 
+function () {
+return this.viewStyle.isShowSequenceFeaturesHeight ();
+});
+Clazz_defineMethod (c$, "setShowAnnotation", 
+function (b) {
+this.viewStyle.setShowAnnotation (b);
+}, "~B");
+Clazz_defineMethod (c$, "isShowAnnotation", 
+function () {
+return this.viewStyle.isShowAnnotation ();
+});
+Clazz_defineMethod (c$, "isRightAlignIds", 
+function () {
+return this.viewStyle.isRightAlignIds ();
+});
+Clazz_defineMethod (c$, "setRightAlignIds", 
+function (rightAlignIds) {
+this.viewStyle.setRightAlignIds (rightAlignIds);
+}, "~B");
+Clazz_defineMethod (c$, "getConservationSelected", 
+function () {
+return this.viewStyle.getConservationSelected ();
+});
+Clazz_defineMethod (c$, "setShowBoxes", 
+function (state) {
+this.viewStyle.setShowBoxes (state);
+}, "~B");
+Clazz_defineMethod (c$, "getTextColour", 
+function () {
+return this.viewStyle.getTextColour ();
+});
+Clazz_defineMethod (c$, "getTextColour2", 
+function () {
+return this.viewStyle.getTextColour2 ();
+});
+Clazz_defineMethod (c$, "getThresholdTextColour", 
+function () {
+return this.viewStyle.getThresholdTextColour ();
+});
+Clazz_defineMethod (c$, "isConservationColourSelected", 
+function () {
+return this.viewStyle.isConservationColourSelected ();
+});
+Clazz_defineMethod (c$, "isRenderGaps", 
+function () {
+return this.viewStyle.isRenderGaps ();
+});
+Clazz_defineMethod (c$, "isShowColourText", 
+function () {
+return this.viewStyle.isShowColourText ();
+});
+Clazz_defineMethod (c$, "setConservationColourSelected", 
+function (conservationColourSelected) {
+this.viewStyle.setConservationColourSelected (conservationColourSelected);
+}, "~B");
+Clazz_defineMethod (c$, "setShowColourText", 
+function (showColourText) {
+this.viewStyle.setShowColourText (showColourText);
+}, "~B");
+Clazz_defineMethod (c$, "setTextColour", 
+function (textColour) {
+this.viewStyle.setTextColour (textColour);
+}, "java.awt.Color");
+Clazz_defineMethod (c$, "setThresholdTextColour", 
+function (thresholdTextColour) {
+this.viewStyle.setThresholdTextColour (thresholdTextColour);
+}, "~N");
+Clazz_defineMethod (c$, "setTextColour2", 
+function (textColour2) {
+this.viewStyle.setTextColour2 (textColour2);
+}, "java.awt.Color");
+Clazz_overrideMethod (c$, "getViewStyle", 
+function () {
+return  new jalview.viewmodel.styles.ViewStyle (this.viewStyle);
+});
+Clazz_overrideMethod (c$, "setViewStyle", 
+function (settingsForView) {
+this.viewStyle =  new jalview.viewmodel.styles.ViewStyle (settingsForView);
+}, "jalview.api.ViewStyleI");
+Clazz_defineMethod (c$, "sameStyle", 
+function (them) {
+return this.viewStyle.sameStyle (them);
+}, "jalview.api.ViewStyleI");
+Clazz_defineMethod (c$, "getIdWidth", 
+function () {
+return this.viewStyle.getIdWidth ();
+});
+Clazz_defineMethod (c$, "setIdWidth", 
+function (i) {
+this.viewStyle.setIdWidth (i);
+}, "~N");
+Clazz_defineMethod (c$, "isCentreColumnLabels", 
+function () {
+return this.viewStyle.isCentreColumnLabels ();
+});
+Clazz_defineMethod (c$, "setCentreColumnLabels", 
+function (centreColumnLabels) {
+this.viewStyle.setCentreColumnLabels (centreColumnLabels);
+}, "~B");
+Clazz_defineMethod (c$, "setShowDBRefs", 
+function (showdbrefs) {
+this.viewStyle.setShowDBRefs (showdbrefs);
+}, "~B");
+Clazz_defineMethod (c$, "isShowDBRefs", 
+function () {
+return this.viewStyle.isShowDBRefs ();
+});
+Clazz_defineMethod (c$, "isShowNPFeats", 
+function () {
+return this.viewStyle.isShowNPFeats ();
+});
+Clazz_defineMethod (c$, "setShowNPFeats", 
+function (shownpfeats) {
+this.viewStyle.setShowNPFeats (shownpfeats);
+}, "~B");
+Clazz_defineMethod (c$, "addToHistoryList", 
+function (command) {
+if (this.historyList != null) {
+this.historyList.push (command);
+this.broadcastCommand (command, false);
+}}, "jalview.commands.CommandI");
+Clazz_defineMethod (c$, "broadcastCommand", 
+function (command, undo) {
+this.getStructureSelectionManager ().commandPerformed (command, undo, this.getVamsasSource ());
+}, "jalview.commands.CommandI,~B");
+Clazz_defineMethod (c$, "addToRedoList", 
+function (command) {
+if (this.redoList != null) {
+this.redoList.push (command);
+}this.broadcastCommand (command, true);
+}, "jalview.commands.CommandI");
+Clazz_defineMethod (c$, "clearRedoList", 
+function () {
+if (this.redoList != null) {
+this.redoList.clear ();
+}});
+Clazz_defineMethod (c$, "setHistoryList", 
+function (list) {
+this.historyList = list;
+}, "java.util.Deque");
+Clazz_defineMethod (c$, "getHistoryList", 
+function () {
+return this.historyList;
+});
+Clazz_defineMethod (c$, "setRedoList", 
+function (list) {
+this.redoList = list;
+}, "java.util.Deque");
+Clazz_defineMethod (c$, "getRedoList", 
+function () {
+return this.redoList;
+});
+Clazz_overrideMethod (c$, "getVamsasSource", 
+function () {
+return this;
+});
+Clazz_defineMethod (c$, "getSortAnnotationsBy", 
+function () {
+return this.sortAnnotationsBy;
+});
+Clazz_defineMethod (c$, "setSortAnnotationsBy", 
+function (sortAnnotationsBy) {
+this.sortAnnotationsBy = sortAnnotationsBy;
+}, "jalview.analysis.AnnotationSorter.SequenceAnnotationOrder");
+Clazz_defineMethod (c$, "isShowAutocalculatedAbove", 
+function () {
+return this.showAutocalculatedAbove;
+});
+Clazz_defineMethod (c$, "setShowAutocalculatedAbove", 
+function (showAutocalculatedAbove) {
+this.showAutocalculatedAbove = showAutocalculatedAbove;
+}, "~B");
+Clazz_defineMethod (c$, "isScaleProteinAsCdna", 
+function () {
+return this.viewStyle.isScaleProteinAsCdna ();
+});
+Clazz_defineMethod (c$, "setScaleProteinAsCdna", 
+function (b) {
+this.viewStyle.setScaleProteinAsCdna (b);
+}, "~B");
+Clazz_defineMethod (c$, "isFollowHighlight", 
+function () {
+return this.followHighlight;
+});
+Clazz_overrideMethod (c$, "setFollowHighlight", 
+function (b) {
+this.followHighlight = b;
+}, "~B");
+Clazz_defineMethod (c$, "getStartRes", 
+function () {
+return this.startRes;
+});
+Clazz_overrideMethod (c$, "getEndRes", 
+function () {
+return this.endRes;
+});
+Clazz_defineMethod (c$, "getStartSeq", 
+function () {
+return this.startSeq;
+});
+Clazz_defineMethod (c$, "setStartRes", 
+function (res) {
+this.startRes = res;
+}, "~N");
+Clazz_defineMethod (c$, "setStartSeq", 
+function (seq) {
+this.startSeq = seq;
+}, "~N");
+Clazz_defineMethod (c$, "setEndRes", 
+function (res) {
+if (res > this.alignment.getWidth () - 1) {
+res = this.alignment.getWidth () - 1;
+}if (res < 0) {
+res = 0;
+}this.endRes = res;
+}, "~N");
+Clazz_defineMethod (c$, "setEndSeq", 
+function (seq) {
+if (seq > this.alignment.getHeight ()) {
+seq = this.alignment.getHeight ();
+}if (seq < 0) {
+seq = 0;
+}this.endSeq = seq;
+}, "~N");
+Clazz_defineMethod (c$, "getEndSeq", 
+function () {
+return this.endSeq;
+});
+Clazz_defineMethod (c$, "findComplementScrollTarget", 
+function (sr) {
+var complement = this.getCodingComplement ();
+if (complement == null || !complement.isFollowHighlight ()) {
+return 0;
+}var iAmProtein = !this.getAlignment ().isNucleotide ();
+var proteinAlignment = iAmProtein ? this.getAlignment () : complement.getAlignment ();
+if (proteinAlignment == null) {
+return 0;
+}var mappings = proteinAlignment.getCodonFrames ();
+var seqOffset = 0;
+var sequence = null;
+var middleColumn = this.getStartRes () + Clazz_doubleToInt ((this.getEndRes () - this.getStartRes ()) / 2);
+var hiddenSequences = this.getAlignment ().getHiddenSequences ();
+for (var seqNo = this.getStartSeq (); seqNo < this.getEndSeq (); seqNo++, seqOffset++) {
+sequence = this.getAlignment ().getSequenceAt (seqNo);
+if (hiddenSequences != null && hiddenSequences.isHidden (sequence)) {
+continue;
+}if (jalview.util.Comparison.isGap (sequence.getCharAt (middleColumn))) {
+continue;
+}var seqMappings = jalview.util.MappingUtils.findMappingsForSequence (sequence, mappings);
+if (!seqMappings.isEmpty ()) {
+break;
+}}
+if (sequence == null) {
+return 0;
+}jalview.util.MappingUtils.addSearchResults (sr, sequence, sequence.findPosition (middleColumn), mappings);
+return seqOffset;
+}, "jalview.datamodel.SearchResults");
+});
+Clazz_declarePackage ("jalview.api");
+Clazz_load (["jalview.api.ViewStyleI"], "jalview.api.AlignViewportI", null, function () {
+Clazz_declareInterface (jalview.api, "AlignViewportI", jalview.api.ViewStyleI);
+});
+Clazz_declarePackage ("jalview.api");
+Clazz_declareInterface (jalview.api, "ViewStyleI");
+Clazz_declarePackage ("jalview.viewmodel.styles");
+Clazz_load (["jalview.api.ViewStyleI", "java.awt.Color"], "jalview.viewmodel.styles.ViewStyle", ["java.lang.Boolean"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.abovePIDThreshold = false;
+this.charHeight = 0;
+this.charWidth = 0;
+this.idWidth = -1;
+this.colourAppliesToAllGroups = false;
+this.centreColumnLabels = false;
+this.showdbrefs = false;
+this.shownpfeats = false;
+this.colourByReferenceSeq = false;
+this.conservationColourSelected = false;
+this.displayReferenceSeq = false;
+this.increment = 0;
+this.renderGaps = true;
+this.rightAlignIds = false;
+this.scaleAboveWrapped = false;
+this.scaleLeftWrapped = true;
+this.scaleRightWrapped = true;
+this.seqNameItalics = false;
+this.showAnnotation = true;
+this.showBoxes = true;
+this.showColourText = false;
+this.showHiddenMarkers = true;
+this.showJVSuffix = true;
+this.showSeqFeaturesHeight = false;
+this.showSequenceFeatures = false;
+this.showText = true;
+this.showUnconserved = false;
+this.textColour = null;
+this.textColour2 = null;
+this.threshold = 0;
+this.thresholdTextColour = 0;
+this.upperCasebold = false;
+this.fontName = null;
+this.fontSize = 0;
+this.scaleProteinAsCdna = true;
+this.wrapAlignment = false;
+this.wrappedWidth = 0;
+this.fontStyle = 0;
+Clazz_instantialize (this, arguments);
+}, jalview.viewmodel.styles, "ViewStyle", null, jalview.api.ViewStyleI);
+Clazz_prepareFields (c$, function () {
+this.textColour = java.awt.Color.black;
+this.textColour2 = java.awt.Color.white;
+});
+Clazz_makeConstructor (c$, 
+function (vs) {
+this.setAbovePIDThreshold (vs.getAbovePIDThreshold ());
+this.setCentreColumnLabels (vs.isCentreColumnLabels ());
+this.setCharHeight (vs.getCharHeight ());
+this.setCharWidth (vs.getCharWidth ());
+this.setColourAppliesToAllGroups (vs.getColourAppliesToAllGroups ());
+this.setColourByReferenceSeq (vs.isColourByReferenceSeq ());
+this.setColourText (vs.getColourText ());
+this.setConservationColourSelected (vs.isConservationColourSelected ());
+this.setConservationSelected (vs.getConservationSelected ());
+this.setDisplayReferenceSeq (vs.isDisplayReferenceSeq ());
+this.setFontName (vs.getFontName ());
+this.setFontSize (vs.getFontSize ());
+this.setFontStyle (vs.getFontStyle ());
+this.setIdWidth (vs.getIdWidth ());
+this.setIncrement (vs.getIncrement ());
+this.setRenderGaps (vs.isRenderGaps ());
+this.setRightAlignIds (vs.isRightAlignIds ());
+this.setScaleAboveWrapped (vs.getScaleAboveWrapped ());
+this.setScaleLeftWrapped (vs.getScaleLeftWrapped ());
+this.setScaleProteinAsCdna (vs.isScaleProteinAsCdna ());
+this.setScaleRightWrapped (vs.getScaleRightWrapped ());
+this.setSeqNameItalics (vs.isSeqNameItalics ());
+this.setShowAnnotation (vs.isShowAnnotation ());
+this.setShowBoxes (vs.getShowBoxes ());
+this.setShowColourText (vs.isShowColourText ());
+this.setShowDBRefs (vs.isShowDBRefs ());
+this.setShowHiddenMarkers (vs.getShowHiddenMarkers ());
+this.setShowJVSuffix (vs.getShowJVSuffix ());
+this.setShowNPFeats (vs.isShowNPFeats ());
+this.setShowSequenceFeaturesHeight (vs.isShowSequenceFeaturesHeight ());
+this.setShowSequenceFeatures (vs.isShowSequenceFeatures ());
+this.setShowText (vs.getShowText ());
+this.setShowUnconserved (vs.getShowUnconserved ());
+this.setTextColour (vs.getTextColour ());
+this.setTextColour2 (vs.getTextColour2 ());
+this.setThreshold (vs.getThreshold ());
+this.setThresholdTextColour (vs.getThresholdTextColour ());
+this.setUpperCasebold (vs.isUpperCasebold ());
+this.setWrapAlignment (vs.getWrapAlignment ());
+this.setWrappedWidth (vs.getWrappedWidth ());
+}, "jalview.api.ViewStyleI");
+Clazz_makeConstructor (c$, 
+function () {
+});
+Clazz_overrideMethod (c$, "equals", 
+function (other) {
+if (other == null || !(Clazz_instanceOf (other, jalview.viewmodel.styles.ViewStyle))) {
+return false;
+}var vs = other;
+var match = (this.getAbovePIDThreshold () == vs.getAbovePIDThreshold () && this.isCentreColumnLabels () == vs.isCentreColumnLabels () && this.getCharHeight () == vs.getCharHeight () && this.getCharWidth () == vs.getCharWidth () && this.getColourAppliesToAllGroups () == vs.getColourAppliesToAllGroups () && this.isColourByReferenceSeq () == vs.isColourByReferenceSeq () && this.getColourText () == vs.getColourText () && this.isConservationColourSelected () == vs.isConservationColourSelected () && this.getConservationSelected () == vs.getConservationSelected () && this.isDisplayReferenceSeq () == vs.isDisplayReferenceSeq () && this.getFontSize () == vs.getFontSize () && this.getFontStyle () == vs.getFontStyle () && this.getIdWidth () == vs.getIdWidth () && this.getIncrement () == vs.getIncrement () && this.isRenderGaps () == vs.isRenderGaps () && this.isRightAlignIds () == vs.isRightAlignIds () && this.getScaleAboveWrapped () == vs.getScaleAboveWrapped () && this.getScaleLeftWrapped () == vs.getScaleLeftWrapped () && this.isScaleProteinAsCdna () == vs.isScaleProteinAsCdna () && this.getScaleRightWrapped () == vs.getScaleRightWrapped () && this.isSeqNameItalics () == vs.isSeqNameItalics () && this.isShowAnnotation () == vs.isShowAnnotation () && this.getShowBoxes () == vs.getShowBoxes () && this.isShowColourText () == vs.isShowColourText () && this.isShowDBRefs () == vs.isShowDBRefs () && this.getShowHiddenMarkers () == vs.getShowHiddenMarkers () && this.getShowJVSuffix () == vs.getShowJVSuffix () && this.isShowNPFeats () == vs.isShowNPFeats () && this.isShowSequenceFeaturesHeight () == vs.isShowSequenceFeaturesHeight () && this.isShowSequenceFeatures () == vs.isShowSequenceFeatures () && this.getShowText () == vs.getShowText () && this.getShowUnconserved () == vs.getShowUnconserved () && this.getThreshold () == vs.getThreshold () && this.getThresholdTextColour () == vs.getThresholdTextColour () && this.isUpperCasebold () == vs.isUpperCasebold () && this.getWrapAlignment () == vs.getWrapAlignment () && this.getWrappedWidth () == vs.getWrappedWidth ());
+match = match && String.valueOf (this.getFontName ()).equals (String.valueOf (vs.getFontName ()));
+match = match && String.valueOf (this.getTextColour ()).equals (String.valueOf (vs.getTextColour ()));
+match = match && String.valueOf (this.getTextColour2 ()).equals (String.valueOf (vs.getTextColour2 ()));
+return match;
+}, "~O");
+Clazz_overrideMethod (c$, "hashCode", 
+function () {
+var hash = 0;
+var m = 1;
+hash += m++ * Boolean.$valueOf (this.abovePIDThreshold).hashCode ();
+hash += m++ * Boolean.$valueOf (this.centreColumnLabels).hashCode ();
+hash += m++ * Boolean.$valueOf (this.colourAppliesToAllGroups).hashCode ();
+hash += m++ * Boolean.$valueOf (this.displayReferenceSeq).hashCode ();
+hash += m++ * Boolean.$valueOf (this.renderGaps).hashCode ();
+hash += m++ * Boolean.$valueOf (this.rightAlignIds).hashCode ();
+hash += m++ * Boolean.$valueOf (this.scaleProteinAsCdna).hashCode ();
+hash += m++ * Boolean.$valueOf (this.scaleRightWrapped).hashCode ();
+hash += m++ * Boolean.$valueOf (this.seqNameItalics).hashCode ();
+hash += m++ * Boolean.$valueOf (this.showAnnotation).hashCode ();
+hash += m++ * Boolean.$valueOf (this.showBoxes).hashCode ();
+hash += m++ * Boolean.$valueOf (this.showdbrefs).hashCode ();
+hash += m++ * Boolean.$valueOf (this.showJVSuffix).hashCode ();
+hash += m++ * Boolean.$valueOf (this.showSequenceFeatures).hashCode ();
+hash += m++ * Boolean.$valueOf (this.showUnconserved).hashCode ();
+hash += m++ * Boolean.$valueOf (this.wrapAlignment).hashCode ();
+hash += m++ * this.charHeight;
+hash += m++ * this.charWidth;
+hash += m++ * this.fontSize;
+hash += m++ * this.fontStyle;
+hash += m++ * this.idWidth;
+hash += String.valueOf (this.fontName).hashCode ();
+return hash;
+});
+Clazz_defineMethod (c$, "isUpperCasebold", 
+function () {
+return this.upperCasebold;
+});
+Clazz_overrideMethod (c$, "setUpperCasebold", 
+function (upperCasebold) {
+this.upperCasebold = upperCasebold;
+}, "~B");
+Clazz_defineMethod (c$, "getAbovePIDThreshold", 
+function () {
+return this.abovePIDThreshold;
+});
+Clazz_defineMethod (c$, "getCharHeight", 
+function () {
+return this.charHeight;
+});
+Clazz_defineMethod (c$, "getCharWidth", 
+function () {
+return this.charWidth;
+});
+Clazz_defineMethod (c$, "getColourAppliesToAllGroups", 
+function () {
+return this.colourAppliesToAllGroups;
+});
+Clazz_defineMethod (c$, "getColourText", 
+function () {
+return this.showColourText;
+});
+Clazz_defineMethod (c$, "getConservationSelected", 
+function () {
+return this.conservationColourSelected;
+});
+Clazz_defineMethod (c$, "getIncrement", 
+function () {
+return this.increment;
+});
+Clazz_defineMethod (c$, "getScaleAboveWrapped", 
+function () {
+return this.scaleAboveWrapped;
+});
+Clazz_defineMethod (c$, "getScaleLeftWrapped", 
+function () {
+return this.scaleLeftWrapped;
+});
+Clazz_defineMethod (c$, "getScaleRightWrapped", 
+function () {
+return this.scaleRightWrapped;
+});
+Clazz_defineMethod (c$, "getShowBoxes", 
+function () {
+return this.showBoxes;
+});
+Clazz_defineMethod (c$, "getShowHiddenMarkers", 
+function () {
+return this.showHiddenMarkers;
+});
+Clazz_defineMethod (c$, "getShowJVSuffix", 
+function () {
+return this.showJVSuffix;
+});
+Clazz_defineMethod (c$, "getShowText", 
+function () {
+return this.showText;
+});
+Clazz_defineMethod (c$, "getShowUnconserved", 
+function () {
+return this.showUnconserved;
+});
+Clazz_defineMethod (c$, "getTextColour", 
+function () {
+return this.textColour;
+});
+Clazz_defineMethod (c$, "getTextColour2", 
+function () {
+return this.textColour2;
+});
+Clazz_defineMethod (c$, "getThreshold", 
+function () {
+return this.threshold;
+});
+Clazz_defineMethod (c$, "getThresholdTextColour", 
+function () {
+return this.thresholdTextColour;
+});
+Clazz_defineMethod (c$, "getWrapAlignment", 
+function () {
+return this.wrapAlignment;
+});
+Clazz_defineMethod (c$, "getWrappedWidth", 
+function () {
+return this.wrappedWidth;
+});
+Clazz_defineMethod (c$, "isColourByReferenceSeq", 
+function () {
+return this.colourByReferenceSeq;
+});
+Clazz_defineMethod (c$, "isConservationColourSelected", 
+function () {
+return this.conservationColourSelected;
+});
+Clazz_defineMethod (c$, "isDisplayReferenceSeq", 
+function () {
+return this.displayReferenceSeq;
+});
+Clazz_defineMethod (c$, "isRenderGaps", 
+function () {
+return this.renderGaps;
+});
+Clazz_defineMethod (c$, "isRightAlignIds", 
+function () {
+return this.rightAlignIds;
+});
+Clazz_defineMethod (c$, "isSeqNameItalics", 
+function () {
+return this.seqNameItalics;
+});
+Clazz_defineMethod (c$, "isShowAnnotation", 
+function () {
+return this.showAnnotation;
+});
+Clazz_defineMethod (c$, "isShowColourText", 
+function () {
+return this.showColourText;
+});
+Clazz_defineMethod (c$, "isShowSequenceFeaturesHeight", 
+function () {
+return this.showSeqFeaturesHeight;
+});
+Clazz_defineMethod (c$, "isShowSequenceFeatures", 
+function () {
+return this.showSequenceFeatures;
+});
+Clazz_overrideMethod (c$, "setAbovePIDThreshold", 
+function (b) {
+this.abovePIDThreshold = b;
+}, "~B");
+Clazz_overrideMethod (c$, "setCharHeight", 
+function (h) {
+this.charHeight = h;
+}, "~N");
+Clazz_overrideMethod (c$, "setCharWidth", 
+function (w) {
+this.charWidth = w;
+}, "~N");
+Clazz_overrideMethod (c$, "setColourAppliesToAllGroups", 
+function (b) {
+this.colourAppliesToAllGroups = b;
+}, "~B");
+Clazz_overrideMethod (c$, "setColourByReferenceSeq", 
+function (colourByReferenceSeq) {
+this.colourByReferenceSeq = colourByReferenceSeq;
+}, "~B");
+Clazz_overrideMethod (c$, "setColourText", 
+function (state) {
+this.showColourText = state;
+}, "~B");
+Clazz_overrideMethod (c$, "setConservationColourSelected", 
+function (conservationColourSelected) {
+this.conservationColourSelected = conservationColourSelected;
+}, "~B");
+Clazz_overrideMethod (c$, "setConservationSelected", 
+function (b) {
+this.conservationColourSelected = b;
+}, "~B");
+Clazz_overrideMethod (c$, "setDisplayReferenceSeq", 
+function (displayReferenceSeq) {
+this.displayReferenceSeq = displayReferenceSeq;
+}, "~B");
+Clazz_overrideMethod (c$, "setIncrement", 
+function (inc) {
+this.increment = inc;
+}, "~N");
+Clazz_overrideMethod (c$, "setRenderGaps", 
+function (state) {
+this.renderGaps = state;
+}, "~B");
+Clazz_overrideMethod (c$, "setRightAlignIds", 
+function (rightAlignIds) {
+this.rightAlignIds = rightAlignIds;
+}, "~B");
+Clazz_overrideMethod (c$, "setScaleAboveWrapped", 
+function (b) {
+this.scaleAboveWrapped = b;
+}, "~B");
+Clazz_overrideMethod (c$, "setScaleLeftWrapped", 
+function (b) {
+this.scaleLeftWrapped = b;
+}, "~B");
+Clazz_overrideMethod (c$, "setScaleRightWrapped", 
+function (b) {
+this.scaleRightWrapped = b;
+}, "~B");
+Clazz_overrideMethod (c$, "setSeqNameItalics", 
+function (italics) {
+this.seqNameItalics = italics;
+}, "~B");
+Clazz_overrideMethod (c$, "setShowAnnotation", 
+function (b) {
+this.showAnnotation = b;
+}, "~B");
+Clazz_overrideMethod (c$, "setShowBoxes", 
+function (state) {
+this.showBoxes = state;
+}, "~B");
+Clazz_overrideMethod (c$, "setShowColourText", 
+function (showColourText) {
+this.showColourText = showColourText;
+}, "~B");
+Clazz_overrideMethod (c$, "setShowHiddenMarkers", 
+function (show) {
+this.showHiddenMarkers = show;
+}, "~B");
+Clazz_overrideMethod (c$, "setShowJVSuffix", 
+function (b) {
+this.showJVSuffix = b;
+}, "~B");
+Clazz_overrideMethod (c$, "setShowSequenceFeaturesHeight", 
+function (selected) {
+this.showSeqFeaturesHeight = selected;
+}, "~B");
+Clazz_overrideMethod (c$, "setShowSequenceFeatures", 
+function (b) {
+this.showSequenceFeatures = b;
+}, "~B");
+Clazz_overrideMethod (c$, "setShowText", 
+function (state) {
+this.showText = state;
+}, "~B");
+Clazz_overrideMethod (c$, "setShowUnconserved", 
+function (showunconserved) {
+this.showUnconserved = showunconserved;
+}, "~B");
+Clazz_overrideMethod (c$, "setTextColour", 
+function (textColour) {
+this.textColour = textColour;
+}, "java.awt.Color");
+Clazz_overrideMethod (c$, "setTextColour2", 
+function (textColour2) {
+this.textColour2 = textColour2;
+}, "java.awt.Color");
+Clazz_overrideMethod (c$, "setThreshold", 
+function (thresh) {
+this.threshold = thresh;
+}, "~N");
+Clazz_overrideMethod (c$, "setThresholdTextColour", 
+function (thresholdTextColour) {
+this.thresholdTextColour = thresholdTextColour;
+}, "~N");
+Clazz_overrideMethod (c$, "setWrapAlignment", 
+function (state) {
+this.wrapAlignment = state;
+}, "~B");
+Clazz_overrideMethod (c$, "setWrappedWidth", 
+function (w) {
+this.wrappedWidth = w;
+}, "~N");
+Clazz_overrideMethod (c$, "sameStyle", 
+function (that) {
+return this.equals (that);
+}, "jalview.api.ViewStyleI");
+Clazz_defineMethod (c$, "getFontName", 
+function () {
+return this.fontName;
+});
+Clazz_defineMethod (c$, "getFontSize", 
+function () {
+return this.fontSize;
+});
+Clazz_defineMethod (c$, "getFontStyle", 
+function () {
+return this.fontStyle;
+});
+Clazz_overrideMethod (c$, "setFontName", 
+function (name) {
+this.fontName = name;
+}, "~S");
+Clazz_overrideMethod (c$, "setFontSize", 
+function (size) {
+this.fontSize = size;
+}, "~N");
+Clazz_overrideMethod (c$, "setFontStyle", 
+function (style) {
+this.fontStyle = style;
+}, "~N");
+Clazz_defineMethod (c$, "getIdWidth", 
+function () {
+return this.idWidth;
+});
+Clazz_overrideMethod (c$, "setIdWidth", 
+function (idWidth) {
+this.idWidth = idWidth;
+}, "~N");
+Clazz_defineMethod (c$, "isCentreColumnLabels", 
+function () {
+return this.centreColumnLabels;
+});
+Clazz_overrideMethod (c$, "setCentreColumnLabels", 
+function (centreColumnLabels) {
+this.centreColumnLabels = centreColumnLabels;
+}, "~B");
+Clazz_defineMethod (c$, "isShowDBRefs", 
+function () {
+return this.showdbrefs;
+});
+Clazz_overrideMethod (c$, "setShowDBRefs", 
+function (showdbrefs) {
+this.showdbrefs = showdbrefs;
+}, "~B");
+Clazz_defineMethod (c$, "isShowNPFeats", 
+function () {
+return this.shownpfeats;
+});
+Clazz_overrideMethod (c$, "setShowNPFeats", 
+function (shownpfeats) {
+this.shownpfeats = shownpfeats;
+}, "~B");
+Clazz_defineMethod (c$, "isScaleProteinAsCdna", 
+function () {
+return this.scaleProteinAsCdna;
+});
+Clazz_overrideMethod (c$, "setScaleProteinAsCdna", 
+function (b) {
+this.scaleProteinAsCdna = b;
+}, "~B");
+});
+Clazz_declarePackage ("jalview.workers");
+Clazz_load (["jalview.api.AlignCalcManagerI", "java.util.ArrayList", "$.Collections", "$.HashSet", "$.Hashtable"], "jalview.workers.AlignCalcManager", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.restartable = null;
+this.blackList = null;
+this.inProgress = null;
+this.updating = null;
+this.canUpdate = null;
+Clazz_instantialize (this, arguments);
+}, jalview.workers, "AlignCalcManager", null, jalview.api.AlignCalcManagerI);
+Clazz_prepareFields (c$, function () {
+this.restartable = java.util.Collections.synchronizedList ( new java.util.ArrayList ());
+this.blackList = java.util.Collections.synchronizedList ( new java.util.ArrayList ());
+this.inProgress = java.util.Collections.synchronizedMap ( new java.util.Hashtable ());
+this.updating = java.util.Collections.synchronizedMap ( new java.util.Hashtable ());
+this.canUpdate =  new java.util.HashSet ();
+});
+Clazz_overrideMethod (c$, "notifyStart", 
+function (worker) {
+{
+var upd = this.updating.get (worker.getClass ());
+if (upd == null) {
+this.updating.put (worker.getClass (), upd = java.util.Collections.synchronizedList ( new java.util.ArrayList ()));
+}{
+upd.add (worker);
+}}}, "jalview.api.AlignCalcWorkerI");
+Clazz_overrideMethod (c$, "alreadyDoing", 
+function (worker) {
+{
+return this.inProgress.containsKey (worker.getClass ());
+}}, "jalview.api.AlignCalcWorkerI");
+Clazz_overrideMethod (c$, "isPending", 
+function (workingClass) {
+var upd;
+{
+upd = this.updating.get (workingClass.getClass ());
+if (upd == null) {
+return false;
+}{
+if (upd.size () > 1) {
+return true;
+}}return false;
+}}, "jalview.api.AlignCalcWorkerI");
+Clazz_defineMethod (c$, "numberLive", 
+function (worker) {
+{
+var upd = this.updating.get (worker.getClass ());
+if (upd == null) {
+return 0;
+};return upd.size ();
+}}, "jalview.api.AlignCalcWorkerI");
+Clazz_overrideMethod (c$, "notifyWorking", 
+function (worker) {
+{
+if (this.inProgress.get (worker.getClass ()) != null) {
+if (false) {
+System.err.println ("Warning: Multiple workers are running of type " + worker.getClass ());
+}return false;
+}this.inProgress.put (worker.getClass (), worker);
+}return true;
+}, "jalview.api.AlignCalcWorkerI");
+Clazz_overrideMethod (c$, "workerComplete", 
+function (worker) {
+{
+this.inProgress.remove (worker.getClass ());
+var upd = this.updating.get (worker.getClass ());
+if (upd != null) {
+{
+upd.remove (worker);
+}this.canUpdate.add (worker);
+}}}, "jalview.api.AlignCalcWorkerI");
+Clazz_overrideMethod (c$, "workerCannotRun", 
+function (worker) {
+{
+this.blackList.add (worker.getClass ());
+}}, "jalview.api.AlignCalcWorkerI");
+Clazz_defineMethod (c$, "isBlackListed", 
+function (workerType) {
+{
+return this.blackList.contains (workerType);
+}}, "Class");
+Clazz_overrideMethod (c$, "startWorker", 
+function (worker) {
+var workerAsThread = worker;
+if (workerAsThread.isAlive ()) {
+workerAsThread.interrupt ();
+worker = worker.getNewWorker ();
+}worker.setName (worker.getClass ().getName ());
+worker.start ();
+}, "jalview.api.AlignCalcWorkerI");
+Clazz_defineMethod (c$, "isWorking", 
+function (worker) {
+{
+return worker != null && this.inProgress.get (worker.getClass ()) === worker;
+}}, "jalview.api.AlignCalcWorkerI");
+Clazz_defineMethod (c$, "isWorking", 
+function () {
+{
+return this.inProgress.size () > 0;
+}});
+Clazz_overrideMethod (c$, "registerWorker", 
+function (worker) {
+{
+if (!this.restartable.contains (worker)) {
+this.restartable.add (worker);
+}this.startWorker (worker);
+}}, "jalview.api.AlignCalcWorkerI");
+Clazz_overrideMethod (c$, "restartWorkers", 
+function () {
+{
+for (var worker, $worker = this.restartable.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {
+this.startWorker (worker);
+}
+}});
+Clazz_overrideMethod (c$, "workingInvolvedWith", 
+function (alignmentAnnotation) {
+{
+for (var worker, $worker = this.inProgress.values ().iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {
+if (worker.involves (alignmentAnnotation)) {
+return true;
+}}
+}{
+for (var workers, $workers = this.updating.values ().iterator (); $workers.hasNext () && ((workers = $workers.next ()) || true);) {
+for (var worker, $worker = workers.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {
+if (worker.involves (alignmentAnnotation)) {
+return true;
+}}
+}
+}return false;
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz_overrideMethod (c$, "updateAnnotationFor", 
+function (workerClass) {
+var workers;
+{
+workers = this.canUpdate.toArray ( new Array (0));
+}for (var worker, $worker = 0, $$worker = workers; $worker < $$worker.length && ((worker = $$worker[$worker]) || true); $worker++) {
+if (workerClass.equals (worker.getClass ())) {
+worker.updateAnnotation ();
+}}
+}, "Class");
+Clazz_overrideMethod (c$, "getRegisteredWorkersOfClass", 
+function (workerClass) {
+var workingClass =  new java.util.ArrayList ();
+var workers;
+{
+workers = this.canUpdate.toArray ( new Array (this.canUpdate.size ()));
+}for (var worker, $worker = 0, $$worker = workers; $worker < $$worker.length && ((worker = $$worker[$worker]) || true); $worker++) {
+if (workerClass.equals (worker.getClass ())) {
+workingClass.add (worker);
+}}
+return (workingClass.size () == 0) ? null : workingClass;
+}, "Class");
+Clazz_overrideMethod (c$, "startRegisteredWorkersOfClass", 
+function (workerClass) {
+var workers = this.getRegisteredWorkersOfClass (workerClass);
+if (workers == null) {
+return false;
+}for (var worker, $worker = workers.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {
+if (!this.isPending (worker)) {
+this.startWorker (worker);
+} else {
+System.err.println ("Pending exists for " + workerClass);
+}}
+return true;
+}, "Class");
+Clazz_overrideMethod (c$, "workerMayRun", 
+function (worker) {
+{
+if (this.blackList.contains (worker.getClass ())) {
+this.blackList.remove (worker.getClass ());
+}}}, "jalview.api.AlignCalcWorkerI");
+Clazz_overrideMethod (c$, "removeRegisteredWorkersOfClass", 
+function (typeToRemove) {
+var workers = this.getRegisteredWorkersOfClass (typeToRemove);
+var removable =  new java.util.ArrayList ();
+var toremovannot =  new java.util.HashSet ();
+{
+for (var worker, $worker = this.restartable.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {
+if (typeToRemove.equals (worker.getClass ())) {
+removable.add (worker);
+toremovannot.add (worker);
+}}
+this.restartable.removeAll (removable);
+}{
+for (var worker, $worker = this.canUpdate.iterator (); $worker.hasNext () && ((worker = $worker.next ()) || true);) {
+if (typeToRemove.equals (worker.getClass ())) {
+removable.add (worker);
+toremovannot.add (worker);
+}}
+this.canUpdate.removeAll (removable);
+}}, "Class");
+});
+Clazz_declarePackage ("jalview.api");
+Clazz_declareInterface (jalview.api, "AlignCalcManagerI");
+Clazz_declarePackage ("java.util");
+Clazz_load (["java.util.AbstractCollection", "$.Iterator", "java.util.Deque"], "java.util.ArrayDeque", ["java.lang.AssertionError", "$.IllegalStateException", "$.NullPointerException", "java.lang.reflect.Array", "java.util.Arrays", "$.ConcurrentModificationException", "$.NoSuchElementException"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.elements = null;
+this.head = 0;
+this.tail = 0;
+if (!Clazz_isClassDefined ("java.util.ArrayDeque.DeqIterator")) {
+java.util.ArrayDeque.$ArrayDeque$DeqIterator$ ();
+}
+if (!Clazz_isClassDefined ("java.util.ArrayDeque.DescendingIterator")) {
+java.util.ArrayDeque.$ArrayDeque$DescendingIterator$ ();
+}
+Clazz_instantialize (this, arguments);
+}, java.util, "ArrayDeque", java.util.AbstractCollection, [java.util.Deque, Cloneable, java.io.Serializable]);
+Clazz_defineMethod (c$, "allocateElements", 
+ function (numElements) {
+var initialCapacity = 8;
+if (numElements >= initialCapacity) {
+initialCapacity = numElements;
+initialCapacity |= (initialCapacity >>> 1);
+initialCapacity |= (initialCapacity >>> 2);
+initialCapacity |= (initialCapacity >>> 4);
+initialCapacity |= (initialCapacity >>> 8);
+initialCapacity |= (initialCapacity >>> 16);
+initialCapacity++;
+if (initialCapacity < 0) initialCapacity >>>= 1;
+}this.elements =  new Array (initialCapacity);
+}, "~N");
+Clazz_defineMethod (c$, "doubleCapacity", 
+ function () {
+var p = this.head;
+var n = this.elements.length;
+var r = n - p;
+var newCapacity = n << 1;
+if (newCapacity < 0) throw  new IllegalStateException ("Sorry, deque too big");
+var a =  new Array (newCapacity);
+System.arraycopy (this.elements, p, a, 0, r);
+System.arraycopy (this.elements, 0, a, r, p);
+this.elements = a;
+this.head = 0;
+this.tail = n;
+});
+Clazz_defineMethod (c$, "copyElements", 
+ function (a) {
+if (this.head < this.tail) {
+System.arraycopy (this.elements, this.head, a, 0, this.size ());
+} else if (this.head > this.tail) {
+var headPortionLen = this.elements.length - this.head;
+System.arraycopy (this.elements, this.head, a, 0, headPortionLen);
+System.arraycopy (this.elements, 0, a, headPortionLen, this.tail);
+}return a;
+}, "~A");
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, java.util.ArrayDeque, []);
+this.elements =  new Array (16);
+});
+Clazz_makeConstructor (c$, 
+function (numElements) {
+Clazz_superConstructor (this, java.util.ArrayDeque, []);
+this.allocateElements (numElements);
+}, "~N");
+Clazz_makeConstructor (c$, 
+function (c) {
+Clazz_superConstructor (this, java.util.ArrayDeque, []);
+this.allocateElements (c.size ());
+this.addAll (c);
+}, "java.util.Collection");
+Clazz_overrideMethod (c$, "addFirst", 
+function (e) {
+if (e == null) throw  new NullPointerException ();
+this.elements[this.head = (this.head - 1) & (this.elements.length - 1)] = e;
+if (this.head == this.tail) this.doubleCapacity ();
+}, "~O");
+Clazz_overrideMethod (c$, "addLast", 
+function (e) {
+if (e == null) throw  new NullPointerException ();
+this.elements[this.tail] = e;
+if ((this.tail = (this.tail + 1) & (this.elements.length - 1)) == this.head) this.doubleCapacity ();
+}, "~O");
+Clazz_overrideMethod (c$, "offerFirst", 
+function (e) {
+this.addFirst (e);
+return true;
+}, "~O");
+Clazz_overrideMethod (c$, "offerLast", 
+function (e) {
+this.addLast (e);
+return true;
+}, "~O");
+Clazz_overrideMethod (c$, "removeFirst", 
+function () {
+var x = this.pollFirst ();
+if (x == null) throw  new java.util.NoSuchElementException ();
+return x;
+});
+Clazz_overrideMethod (c$, "removeLast", 
+function () {
+var x = this.pollLast ();
+if (x == null) throw  new java.util.NoSuchElementException ();
+return x;
+});
+Clazz_overrideMethod (c$, "pollFirst", 
+function () {
+var h = this.head;
+var result = this.elements[h];
+if (result == null) return null;
+this.elements[h] = null;
+this.head = (h + 1) & (this.elements.length - 1);
+return result;
+});
+Clazz_overrideMethod (c$, "pollLast", 
+function () {
+var t = (this.tail - 1) & (this.elements.length - 1);
+var result = this.elements[t];
+if (result == null) return null;
+this.elements[t] = null;
+this.tail = t;
+return result;
+});
+Clazz_overrideMethod (c$, "getFirst", 
+function () {
+var x = this.elements[this.head];
+if (x == null) throw  new java.util.NoSuchElementException ();
+return x;
+});
+Clazz_overrideMethod (c$, "getLast", 
+function () {
+var x = this.elements[(this.tail - 1) & (this.elements.length - 1)];
+if (x == null) throw  new java.util.NoSuchElementException ();
+return x;
+});
+Clazz_overrideMethod (c$, "peekFirst", 
+function () {
+return this.elements[this.head];
+});
+Clazz_overrideMethod (c$, "peekLast", 
+function () {
+return this.elements[(this.tail - 1) & (this.elements.length - 1)];
+});
+Clazz_overrideMethod (c$, "removeFirstOccurrence", 
+function (o) {
+if (o == null) return false;
+var mask = this.elements.length - 1;
+var i = this.head;
+var x;
+while ((x = this.elements[i]) != null) {
+if (o.equals (x)) {
+this.$delete (i);
+return true;
+}i = (i + 1) & mask;
+}
+return false;
+}, "~O");
+Clazz_overrideMethod (c$, "removeLastOccurrence", 
+function (o) {
+if (o == null) return false;
+var mask = this.elements.length - 1;
+var i = (this.tail - 1) & mask;
+var x;
+while ((x = this.elements[i]) != null) {
+if (o.equals (x)) {
+this.$delete (i);
+return true;
+}i = (i - 1) & mask;
+}
+return false;
+}, "~O");
+Clazz_overrideMethod (c$, "add", 
+function (e) {
+this.addLast (e);
+return true;
+}, "~O");
+Clazz_overrideMethod (c$, "offer", 
+function (e) {
+return this.offerLast (e);
+}, "~O");
+Clazz_defineMethod (c$, "remove", 
+function () {
+return this.removeFirst ();
+});
+Clazz_overrideMethod (c$, "poll", 
+function () {
+return this.pollFirst ();
+});
+Clazz_overrideMethod (c$, "element", 
+function () {
+return this.getFirst ();
+});
+Clazz_overrideMethod (c$, "peek", 
+function () {
+return this.peekFirst ();
+});
+Clazz_overrideMethod (c$, "push", 
+function (e) {
+this.addFirst (e);
+}, "~O");
+Clazz_overrideMethod (c$, "pop", 
+function () {
+return this.removeFirst ();
+});
+Clazz_defineMethod (c$, "checkInvariants", 
+ function () {
+});
+Clazz_defineMethod (c$, "$delete", 
+ function (i) {
+this.checkInvariants ();
+var elements = this.elements;
+var mask = elements.length - 1;
+var h = this.head;
+var t = this.tail;
+var front = (i - h) & mask;
+var back = (t - i) & mask;
+if (front >= ((t - h) & mask)) throw  new java.util.ConcurrentModificationException ();
+if (front < back) {
+if (h <= i) {
+System.arraycopy (elements, h, elements, h + 1, front);
+} else {
+System.arraycopy (elements, 0, elements, 1, i);
+elements[0] = elements[mask];
+System.arraycopy (elements, h, elements, h + 1, mask - h);
+}elements[h] = null;
+this.head = (h + 1) & mask;
+return false;
+} else {
+if (i < t) {
+System.arraycopy (elements, i + 1, elements, i, back);
+this.tail = t - 1;
+} else {
+System.arraycopy (elements, i + 1, elements, i, mask - i);
+elements[mask] = elements[0];
+System.arraycopy (elements, 1, elements, 0, t);
+this.tail = (t - 1) & mask;
+}return true;
+}}, "~N");
+Clazz_overrideMethod (c$, "size", 
+function () {
+return (this.tail - this.head) & (this.elements.length - 1);
+});
+Clazz_overrideMethod (c$, "isEmpty", 
+function () {
+return this.head == this.tail;
+});
+Clazz_overrideMethod (c$, "iterator", 
+function () {
+return Clazz_innerTypeInstance (java.util.ArrayDeque.DeqIterator, this, null);
+});
+Clazz_overrideMethod (c$, "descendingIterator", 
+function () {
+return Clazz_innerTypeInstance (java.util.ArrayDeque.DescendingIterator, this, null);
+});
+Clazz_overrideMethod (c$, "contains", 
+function (o) {
+if (o == null) return false;
+var mask = this.elements.length - 1;
+var i = this.head;
+var x;
+while ((x = this.elements[i]) != null) {
+if (o.equals (x)) return true;
+i = (i + 1) & mask;
+}
+return false;
+}, "~O");
+Clazz_defineMethod (c$, "remove", 
+function (o) {
+return this.removeFirstOccurrence (o);
+}, "~O");
+Clazz_overrideMethod (c$, "clear", 
+function () {
+var h = this.head;
+var t = this.tail;
+if (h != t) {
+this.head = this.tail = 0;
+var i = h;
+var mask = this.elements.length - 1;
+do {
+this.elements[i] = null;
+i = (i + 1) & mask;
+} while (i != t);
+}});
+Clazz_defineMethod (c$, "toArray", 
+function () {
+return this.copyElements ( new Array (this.size ()));
+});
+Clazz_defineMethod (c$, "toArray", 
+function (a) {
+var size = this.size ();
+if (a.length < size) a = java.lang.reflect.Array.newInstance (a.getClass ().getComponentType (), size);
+this.copyElements (a);
+if (a.length > size) a[size] = null;
+return a;
+}, "~A");
+Clazz_defineMethod (c$, "clone", 
+function () {
+try {
+var result = Clazz_superCall (this, java.util.ArrayDeque, "clone", []);
+result.elements = java.util.Arrays.copyOf (this.elements, this.elements.length);
+return result;
+} catch (e) {
+if (Clazz_exceptionOf (e, CloneNotSupportedException)) {
+throw  new AssertionError ();
+} else {
+throw e;
+}
+}
+});
+c$.$ArrayDeque$DeqIterator$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.cursor = 0;
+this.fence = 0;
+this.lastRet = -1;
+Clazz_instantialize (this, arguments);
+}, java.util.ArrayDeque, "DeqIterator", null, java.util.Iterator);
+Clazz_prepareFields (c$, function () {
+this.cursor = this.b$["java.util.ArrayDeque"].head;
+this.fence = this.b$["java.util.ArrayDeque"].tail;
+});
+Clazz_overrideMethod (c$, "hasNext", 
+function () {
+return this.cursor != this.fence;
+});
+Clazz_overrideMethod (c$, "next", 
+function () {
+if (this.cursor == this.fence) throw  new java.util.NoSuchElementException ();
+var a = this.b$["java.util.ArrayDeque"].elements[this.cursor];
+if (this.b$["java.util.ArrayDeque"].tail != this.fence || a == null) throw  new java.util.ConcurrentModificationException ();
+this.lastRet = this.cursor;
+this.cursor = (this.cursor + 1) & (this.b$["java.util.ArrayDeque"].elements.length - 1);
+return a;
+});
+Clazz_overrideMethod (c$, "remove", 
+function () {
+if (this.lastRet < 0) throw  new IllegalStateException ();
+if (this.b$["java.util.ArrayDeque"].$delete (this.lastRet)) {
+this.cursor = (this.cursor - 1) & (this.b$["java.util.ArrayDeque"].elements.length - 1);
+this.fence = this.b$["java.util.ArrayDeque"].tail;
+}this.lastRet = -1;
+});
+c$ = Clazz_p0p ();
+};
+c$.$ArrayDeque$DescendingIterator$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.cursor = 0;
+this.fence = 0;
+this.lastRet = -1;
+Clazz_instantialize (this, arguments);
+}, java.util.ArrayDeque, "DescendingIterator", null, java.util.Iterator);
+Clazz_prepareFields (c$, function () {
+this.cursor = this.b$["java.util.ArrayDeque"].tail;
+this.fence = this.b$["java.util.ArrayDeque"].head;
+});
+Clazz_overrideMethod (c$, "hasNext", 
+function () {
+return this.cursor != this.fence;
+});
+Clazz_overrideMethod (c$, "next", 
+function () {
+if (this.cursor == this.fence) throw  new java.util.NoSuchElementException ();
+this.cursor = (this.cursor - 1) & (this.b$["java.util.ArrayDeque"].elements.length - 1);
+var a = this.b$["java.util.ArrayDeque"].elements[this.cursor];
+if (this.b$["java.util.ArrayDeque"].head != this.fence || a == null) throw  new java.util.ConcurrentModificationException ();
+this.lastRet = this.cursor;
+return a;
+});
+Clazz_overrideMethod (c$, "remove", 
+function () {
+if (this.lastRet < 0) throw  new IllegalStateException ();
+if (!this.b$["java.util.ArrayDeque"].$delete (this.lastRet)) {
+this.cursor = (this.cursor + 1) & (this.b$["java.util.ArrayDeque"].elements.length - 1);
+this.fence = this.b$["java.util.ArrayDeque"].head;
+}this.lastRet = -1;
+});
+c$ = Clazz_p0p ();
+};
+Clazz_defineStatics (c$,
+"MIN_INITIAL_CAPACITY", 8);
+});
+Clazz_declarePackage ("java.util");
+Clazz_load (["java.util.Queue"], "java.util.Deque", null, function () {
+Clazz_declareInterface (java.util, "Deque", java.util.Queue);
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (null, "jalview.datamodel.AlignmentView", ["jalview.datamodel.Alignment", "$.CigarArray", "$.ColumnSelection", "$.SeqCigar", "$.SequenceGroup", "jalview.util.MessageManager", "$.ShiftList", "java.lang.Error", "java.util.ArrayList", "$.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.sequences = null;
+this.contigs = null;
+this.width = 0;
+this.firstCol = 0;
+this.scGroups = null;
+this.$isNa = false;
+if (!Clazz_isClassDefined ("jalview.datamodel.AlignmentView.ScGroup")) {
+jalview.datamodel.AlignmentView.$AlignmentView$ScGroup$ ();
+}
+this.selected = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "AlignmentView");
+Clazz_defineMethod (c$, "isNa", 
+function () {
+return this.$isNa;
+});
+Clazz_makeConstructor (c$, 
+function (alignment, columnSelection, selection, hasHiddenColumns, selectedRegionOnly, recordGroups) {
+this.construct ( new jalview.datamodel.CigarArray (alignment, (hasHiddenColumns ? columnSelection : null), (selectedRegionOnly ? selection : null)), (selectedRegionOnly && selection != null) ? selection.getStartRes () : 0);
+this.$isNa = alignment.isNucleotide ();
+var selseqs;
+if (selection != null && selection.getSize () > 0) {
+var sel = selection.getSequences (null);
+this.selected =  new java.util.Vector ();
+selseqs = selection.getSequencesInOrder (alignment, selectedRegionOnly);
+} else {
+selseqs = alignment.getSequencesArray ();
+}var seqsets =  new java.util.ArrayList ();
+var grps =  new java.util.ArrayList ();
+var gg = alignment.getGroups ();
+grps.addAll (gg);
+var sgrps = null;
+var addedgps = null;
+if (grps != null) {
+if (selection != null && selectedRegionOnly) {
+var ssel = selection.getStartRes ();
+var esel = selection.getEndRes ();
+var isg =  new java.util.ArrayList ();
+for (var sg, $sg = grps.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (!(sg.getStartRes () > esel || sg.getEndRes () < ssel)) {
+if (sg.getStartRes () < ssel) {
+sg.setStartRes (ssel);
+}if (sg.getEndRes () > esel) {
+sg.setEndRes (esel);
+}sg.setStartRes (sg.getStartRes () - ssel + 1);
+sg.setEndRes (sg.getEndRes () - ssel + 1);
+isg.add (sg);
+}}
+grps = isg;
+}sgrps =  new Array (grps.size ());
+addedgps =  Clazz_newBooleanArray (grps.size (), false);
+for (var g = 0; g < sgrps.length; g++) {
+var sg = grps.get (g);
+sgrps[g] = Clazz_innerTypeInstance (jalview.datamodel.AlignmentView.ScGroup, this, null);
+sgrps[g].sg =  new jalview.datamodel.SequenceGroup (sg);
+addedgps[g] = false;
+seqsets.add (sg.getSequences ());
+}
+}var csi = 0;
+for (var i = 0; i < selseqs.length; i++) {
+if (selseqs[i] != null) {
+if (selection != null && selection.getSize () > 0 && !selectedRegionOnly) {
+this.sequences[csi].setGroupMembership (this.selected);
+this.selected.addElement (this.sequences[csi]);
+}if (seqsets != null) {
+for (var sg = 0; sg < sgrps.length; sg++) {
+if ((seqsets.get (sg)).contains (selseqs[i])) {
+this.sequences[csi].setGroupMembership (sgrps[sg]);
+sgrps[sg].sg.deleteSequence (selseqs[i], false);
+sgrps[sg].seqs.addElement (this.sequences[csi]);
+if (!addedgps[sg]) {
+if (this.scGroups == null) {
+this.scGroups =  new java.util.ArrayList ();
+}addedgps[sg] = true;
+this.scGroups.add (sgrps[sg]);
+}}}
+}csi++;
+}}
+for (var sg = 0; sg < sgrps.length; sg++) {
+var sqs = sgrps[sg].sg.getSequencesAsArray (null);
+for (var si = 0; si < sqs.length; si++) {
+sgrps[sg].sg.deleteSequence (sqs[si], false);
+}
+sgrps[sg] = null;
+}
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup,~B,~B,~B");
+Clazz_makeConstructor (c$, 
+function (seqcigararray) {
+if (!seqcigararray.isSeqCigarArray ()) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_can_only_make_alignmnet_from_cigararray"));
+}this.contigs = seqcigararray.getDeletedRegions ();
+this.sequences = seqcigararray.getSeqCigarArray ();
+this.width = seqcigararray.getWidth ();
+}, "jalview.datamodel.CigarArray");
+Clazz_makeConstructor (c$, 
+function (sdata, firstcol) {
+this.construct (sdata);
+this.firstCol = firstcol;
+}, "jalview.datamodel.CigarArray,~N");
+Clazz_defineMethod (c$, "setSequences", 
+function (sequences) {
+this.sequences = sequences;
+}, "~A");
+Clazz_defineMethod (c$, "setContigs", 
+function (contigs) {
+this.contigs = contigs;
+}, "~A");
+Clazz_defineMethod (c$, "getSequences", 
+function () {
+return this.sequences;
+});
+Clazz_defineMethod (c$, "getContigs", 
+function () {
+return this.contigs;
+});
+Clazz_defineMethod (c$, "getAlignmentAndColumnSelection", 
+function (gapCharacter) {
+var colsel =  new jalview.datamodel.ColumnSelection ();
+return  Clazz_newArray (-1, [jalview.datamodel.SeqCigar.createAlignmentSequences (this.sequences, gapCharacter, colsel, this.contigs), colsel]);
+}, "~S");
+Clazz_defineMethod (c$, "getVisibleAlignment", 
+function (c) {
+var aln = this.getVisibleSeqs (c);
+var vcal =  new jalview.datamodel.Alignment (aln);
+this.addPrunedGroupsInOrder (vcal, -1, -1, true);
+return vcal;
+}, "~S");
+Clazz_defineMethod (c$, "addPrunedGroupsInOrder", 
+ function (vcal, gstart, gend, viscontigs) {
+var r = false;
+if (gstart > -1 && gstart <= gend) {
+r = true;
+}var aln = vcal.getSequencesArray ();
+{
+{
+var nvg = (this.scGroups != null) ? this.scGroups.size () : 0;
+if (nvg > 0) {
+var nsg =  new Array (nvg);
+for (var g = 0; g < nvg; g++) {
+var sg = this.scGroups.get (g).sg;
+if (r) {
+if (sg.getStartRes () > gend || sg.getEndRes () < gstart) {
+nsg[g] = null;
+continue;
+}}nsg[g] =  new jalview.datamodel.SequenceGroup (sg);
+if (r && !viscontigs) {
+if (nsg[g].getStartRes () < gstart) {
+nsg[g].setStartRes (0);
+} else {
+nsg[g].setStartRes (nsg[g].getStartRes () - gstart);
+nsg[g].setEndRes (nsg[g].getEndRes () - gstart);
+}if (nsg[g].getEndRes () > (gend - gstart)) {
+nsg[g].setEndRes (gend - gstart);
+}}}
+if (viscontigs) {
+if (this.contigs != null) {
+var p = 0;
+var prune =  new jalview.util.ShiftList ();
+if (r) {
+prune.addShift (gstart, -gstart);
+}for (var h = 0; h < this.contigs.length; h += 3) {
+{
+prune.addShift (p + this.contigs[h + 1], this.contigs[h + 2] - this.contigs[h + 1]);
+}p = this.contigs[h + 1] + this.contigs[h + 2];
+}
+for (var g = 0; g < nsg.length; g++) {
+if (nsg[g] != null) {
+var s = nsg[g].getStartRes ();
+var t = nsg[g].getEndRes ();
+var w = 1 + t - s;
+if (r) {
+if (s < gstart) {
+s = gstart;
+}if (t > gend) {
+t = gend;
+}}s = prune.shift (s);
+t = prune.shift (t);
+nsg[g].setStartRes (s);
+nsg[g].setEndRes (t);
+}}
+}}for (var nsq = 0; nsq < aln.length; nsq++) {
+for (var g = 0; g < nvg; g++) {
+if (nsg[g] != null && this.sequences[nsq].isMemberOf (this.scGroups.get (g))) {
+nsg[g].addSequence (aln[nsq], false);
+}}
+}
+for (var g = 0; g < nvg; g++) {
+if (nsg[g] != null && nsg[g].getSize () > 0) {
+vcal.addGroup (nsg[g]);
+}nsg[g] = null;
+}
+}}}}, "jalview.datamodel.AlignmentI,~N,~N,~B");
+Clazz_defineMethod (c$, "getVisibleSeqs", 
+ function (c) {
+var aln =  new Array (this.sequences.length);
+for (var i = 0, j = this.sequences.length; i < j; i++) {
+aln[i] = this.sequences[i].getSeq ('-');
+}
+var seqs = this.getSequenceStrings ('-');
+for (var i = 0, j = aln.length; i < j; i++) {
+aln[i].setSequence (seqs[i]);
+}
+return aln;
+}, "~S");
+Clazz_defineMethod (c$, "getVisibleContigAlignments", 
+function (c) {
+var nvc = 0;
+var vcontigs = this.getVisibleContigs ();
+var contigviews = this.getVisibleContigs (c);
+var vcals =  new Array (contigviews.length);
+for (nvc = 0; nvc < contigviews.length; nvc++) {
+vcals[nvc] =  new jalview.datamodel.Alignment (contigviews[nvc]);
+if (this.scGroups != null && this.scGroups.size () > 0) {
+this.addPrunedGroupsInOrder (vcals[nvc], vcontigs[nvc * 2], vcontigs[nvc * 2 + 1], true);
+}}
+return vcals;
+}, "~S");
+Clazz_defineMethod (c$, "getSequenceStrings", 
+function (c) {
+var seqs =  new Array (this.sequences.length);
+for (var n = 0; n < this.sequences.length; n++) {
+var fullseq = this.sequences[n].getSequenceString (c);
+if (this.contigs != null) {
+seqs[n] = "";
+var p = 0;
+for (var h = 0; h < this.contigs.length; h += 3) {
+seqs[n] += fullseq.substring (p, this.contigs[h + 1]);
+p = this.contigs[h + 1] + this.contigs[h + 2];
+}
+seqs[n] += fullseq.substring (p);
+} else {
+seqs[n] = fullseq;
+}}
+return seqs;
+}, "~S");
+Clazz_defineMethod (c$, "getWidth", 
+function () {
+return this.width;
+});
+Clazz_defineMethod (c$, "setWidth", 
+function (width) {
+this.width = width;
+}, "~N");
+Clazz_defineMethod (c$, "getVisibleContigs", 
+function (gapCharacter) {
+var smsa;
+var njobs = 1;
+if (this.sequences == null || this.width <= 0) {
+return null;
+}if (this.contigs != null && this.contigs.length > 0) {
+var start = 0;
+njobs = 0;
+var fwidth = this.width;
+for (var contig = 0; contig < this.contigs.length; contig += 3) {
+if ((this.contigs[contig + 1] - start) > 0) {
+njobs++;
+}fwidth += this.contigs[contig + 2];
+start = this.contigs[contig + 1] + this.contigs[contig + 2];
+}
+if (start < fwidth) {
+njobs++;
+}smsa =  new Array (njobs);
+start = 0;
+var j = 0;
+for (var contig = 0; contig < this.contigs.length; contig += 3) {
+if (this.contigs[contig + 1] - start > 0) {
+var mseq =  new Array (this.sequences.length);
+for (var s = 0; s < mseq.length; s++) {
+mseq[s] = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, this.contigs[contig + 1]);
+}
+smsa[j] = mseq;
+j++;
+}start = this.contigs[contig + 1] + this.contigs[contig + 2];
+}
+if (start < fwidth) {
+var mseq =  new Array (this.sequences.length);
+for (var s = 0; s < mseq.length; s++) {
+mseq[s] = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, fwidth + 1);
+}
+smsa[j] = mseq;
+j++;
+}} else {
+smsa =  new Array (1);
+smsa[0] =  new Array (this.sequences.length);
+for (var s = 0; s < this.sequences.length; s++) {
+smsa[0][s] = this.sequences[s].getSeq (gapCharacter);
+}
+}return smsa;
+}, "~S");
+Clazz_defineMethod (c$, "getUpdatedView", 
+function (nvismsa, orders, gapCharacter) {
+if (this.sequences == null || this.width <= 0) {
+throw  new Error (jalview.util.MessageManager.getString ("error.empty_view_cannot_be_updated"));
+}if (nvismsa == null) {
+throw  new Error ("nvismsa==null. use getAlignmentAndColumnSelection() instead.");
+}if (this.contigs != null && this.contigs.length > 0) {
+var alignment =  new Array (this.sequences.length);
+var columnselection =  new jalview.datamodel.ColumnSelection ();
+if (this.contigs != null && this.contigs.length > 0) {
+var start = 0;
+var nwidth = 0;
+var owidth = this.width;
+var j = 0;
+for (var contig = 0; contig < this.contigs.length; contig += 3) {
+owidth += this.contigs[contig + 2];
+if (this.contigs[contig + 1] - start > 0) {
+var swidth = 0;
+if (nvismsa[j] != null) {
+var mseq = nvismsa[j];
+var order = (orders == null) ? null : orders[j];
+j++;
+if (mseq.length != this.sequences.length) {
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.mismatch_between_number_of_sequences_in_block",  Clazz_newArray (-1, [Integer.$valueOf (j).toString (), Integer.$valueOf (mseq.length).toString (), Integer.$valueOf (this.sequences.length).toString ()])));
+}swidth = mseq[0].getLength ();
+for (var s = 0; s < mseq.length; s++) {
+if (alignment[s] == null) {
+alignment[s] = mseq[s];
+} else {
+alignment[s].setSequence (alignment[s].getSequenceAsString () + mseq[s].getSequenceAsString ());
+if (mseq[s].getStart () <= mseq[s].getEnd ()) {
+alignment[s].setEnd (mseq[s].getEnd ());
+}if (order != null) {
+order.updateSequence (mseq[s], alignment[s]);
+}}}
+} else {
+if (true) {
+for (var s = 0; s < this.sequences.length; s++) {
+var oseq = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, this.contigs[contig + 1]);
+if (swidth < oseq.getLength ()) {
+swidth = oseq.getLength ();
+}if (alignment[s] == null) {
+alignment[s] = oseq;
+} else {
+alignment[s].setSequence (alignment[s].getSequenceAsString () + oseq.getSequenceAsString ());
+if (oseq.getEnd () >= oseq.getStart ()) {
+alignment[s].setEnd (oseq.getEnd ());
+}}}
+}j++;
+}nwidth += swidth;
+}start = this.contigs[contig + 1] + this.contigs[contig + 2];
+for (var s = 0; s < this.sequences.length; s++) {
+var hseq = this.sequences[s].getSeq (gapCharacter).getSubSequence (this.contigs[contig + 1], start);
+if (alignment[s] == null) {
+alignment[s] = hseq;
+} else {
+alignment[s].setSequence (alignment[s].getSequenceAsString () + hseq.getSequenceAsString ());
+if (hseq.getEnd () >= hseq.getStart ()) {
+alignment[s].setEnd (hseq.getEnd ());
+}}}
+columnselection.hideColumns (nwidth, nwidth + this.contigs[contig + 2] - 1);
+nwidth += this.contigs[contig + 2];
+}
+if (j < nvismsa.length) {
+var swidth = 0;
+if (nvismsa[j] != null) {
+var mseq = nvismsa[j];
+var order = (orders != null) ? orders[j] : null;
+swidth = mseq[0].getLength ();
+for (var s = 0; s < mseq.length; s++) {
+if (alignment[s] == null) {
+alignment[s] = mseq[s];
+} else {
+alignment[s].setSequence (alignment[s].getSequenceAsString () + mseq[s].getSequenceAsString ());
+if (mseq[s].getEnd () >= mseq[s].getStart ()) {
+alignment[s].setEnd (mseq[s].getEnd ());
+}if (order != null) {
+order.updateSequence (mseq[s], alignment[s]);
+}}}
+} else {
+if (start < owidth) {
+if (true) {
+for (var s = 0; s < this.sequences.length; s++) {
+var oseq = this.sequences[s].getSeq (gapCharacter).getSubSequence (start, owidth + 1);
+if (swidth < oseq.getLength ()) {
+swidth = oseq.getLength ();
+}if (alignment[s] == null) {
+alignment[s] = oseq;
+} else {
+alignment[s].setSequence (alignment[s].getSequenceAsString () + oseq.getSequenceAsString ());
+if (oseq.getEnd () >= oseq.getStart ()) {
+alignment[s].setEnd (oseq.getEnd ());
+}}}
+nwidth += swidth;
+} else {
+throw  new Error (jalview.util.MessageManager.getString ("error.padding_not_yet_implemented"));
+}}}}}return  Clazz_newArray (-1, [alignment, columnselection]);
+} else {
+if (nvismsa.length != 1) {
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.mismatch_between_visible_blocks_to_update_and_number_of_contigs_in_view",  Clazz_newArray (-1, [Integer.$valueOf (nvismsa.length).toString ()])));
+}if (nvismsa[0] != null) {
+return  Clazz_newArray (-1, [nvismsa[0],  new jalview.datamodel.ColumnSelection ()]);
+} else {
+return this.getAlignmentAndColumnSelection (gapCharacter);
+}}}, "~A,~A,~S");
+Clazz_defineMethod (c$, "getVisibleContigs", 
+function () {
+if (this.contigs != null && this.contigs.length > 0) {
+var start = 0;
+var nvis = 0;
+var fwidth = this.width;
+for (var contig = 0; contig < this.contigs.length; contig += 3) {
+if ((this.contigs[contig + 1] - start) > 0) {
+nvis++;
+}fwidth += this.contigs[contig + 2];
+start = this.contigs[contig + 1] + this.contigs[contig + 2];
+}
+if (start < fwidth) {
+nvis++;
+}var viscontigs =  Clazz_newIntArray (nvis * 2, 0);
+nvis = 0;
+start = 0;
+for (var contig = 0; contig < this.contigs.length; contig += 3) {
+if ((this.contigs[contig + 1] - start) > 0) {
+viscontigs[nvis] = start;
+viscontigs[nvis + 1] = this.contigs[contig + 1] - 1;
+nvis += 2;
+}start = this.contigs[contig + 1] + this.contigs[contig + 2];
+}
+if (start < fwidth) {
+viscontigs[nvis] = start;
+viscontigs[nvis + 1] = fwidth;
+nvis += 2;
+}return viscontigs;
+} else {
+return  Clazz_newIntArray (-1, [0, this.width]);
+}});
+Clazz_defineMethod (c$, "getAlignmentOrigin", 
+function () {
+return this.firstCol;
+});
+Clazz_defineMethod (c$, "getVisibleContigMapFor", 
+function (gapMap) {
+var delMap = null;
+var viscontigs = this.getVisibleContigs ();
+var spos = 0;
+var i = 0;
+if (viscontigs != null) {
+delMap =  Clazz_newIntArray (gapMap.length, 0);
+for (var contig = 0; contig < viscontigs.length; contig += 2) {
+while (spos < gapMap.length && gapMap[spos] < viscontigs[contig]) {
+spos++;
+}
+while (spos < gapMap.length && gapMap[spos] <= viscontigs[contig + 1]) {
+delMap[i++] = spos++;
+}
+}
+var tmap =  Clazz_newIntArray (i, 0);
+System.arraycopy (delMap, 0, tmap, 0, i);
+delMap = tmap;
+}return delMap;
+}, "~A");
+Clazz_defineMethod (c$, "getEditedSequences", 
+function (gc, $delete) {
+var msf = this.getSequences ();
+var aln =  new Array (msf.length);
+for (var i = 0, j = msf.length; i < j; i++) {
+aln[i] = msf[i].getSeq (gc);
+}
+if ($delete) {
+var sqs = this.getSequenceStrings (gc);
+for (var i = 0; i < sqs.length; i++) {
+aln[i].setSequence (sqs[i]);
+sqs[i] = null;
+}
+}return aln;
+}, "~S,~B");
+c$.summariseAlignmentView = Clazz_defineMethod (c$, "summariseAlignmentView", 
+function (view, os) {
+os.print ("View has " + view.sequences.length + " of which ");
+if (view.selected == null) {
+os.print ("None");
+} else {
+os.print (" " + view.selected.size ());
+}os.println (" are selected.");
+os.print ("View is " + view.getWidth () + " columns wide");
+var viswid = 0;
+var contigs = view.getContigs ();
+if (contigs != null) {
+viswid = view.width;
+for (var i = 0; i < contigs.length; i += 3) {
+viswid += contigs[i + 2];
+}
+os.println ("with " + viswid + " visible columns spread over " + Clazz_doubleToInt (contigs.length / 3) + " regions.");
+} else {
+viswid = view.width;
+os.println (".");
+}if (view.scGroups != null) {
+os.println ("There are " + view.scGroups.size () + " groups defined on the view.");
+for (var g = 0; g < view.scGroups.size (); g++) {
+var sgr = view.scGroups.get (g);
+os.println ("Group " + g + ": Name = " + sgr.sg.getName () + " Contains " + sgr.seqs.size () + " Seqs.");
+os.println ("This group runs from " + sgr.sg.getStartRes () + " to " + sgr.sg.getEndRes ());
+for (var s = 0; s < sgr.seqs.size (); s++) {
+if (!(sgr.seqs.elementAt (s)).isMemberOf (sgr)) {
+os.println ("** WARNING: sequence " + (sgr.seqs.elementAt (s)).toString () + " is not marked as member of group.");
+}}
+}
+var visal = view.getVisibleAlignment ('-');
+if (visal != null) {
+os.println ("Vis. alignment is " + visal.getWidth () + " wide and has " + visal.getHeight () + " seqs.");
+if (visal.getGroups () != null && visal.getGroups ().size () > 0) {
+var i = 1;
+for (var sg, $sg = visal.getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+os.println ("Group " + (i++) + " begins at column " + sg.getStartRes () + " and ends at " + sg.getEndRes ());
+}
+}}}}, "jalview.datamodel.AlignmentView,java.io.PrintStream");
+c$.testSelectionViews = Clazz_defineMethod (c$, "testSelectionViews", 
+function (alignment, csel, selection) {
+System.out.println ("Testing standard view creation:\n");
+var view = null;
+try {
+System.out.println ("View with no hidden columns, no limit to selection, no groups to be collected:");
+view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, false, false, false);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection but no groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View with no hidden columns, no limit to selection, and all groups to be collected:");
+view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, false, false, true);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection marked but no groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View with no hidden columns, limited to selection and no groups to be collected:");
+view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, false, true, false);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection restricted but no groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View with no hidden columns, limited to selection, and all groups to be collected:");
+view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, false, true, true);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection restricted and groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View *with* hidden columns, no limit to selection, no groups to be collected:");
+view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, true, false, false);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection but no groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View *with* hidden columns, no limit to selection, and all groups to be collected:");
+view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, true, false, true);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection marked but no groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View *with* hidden columns, limited to selection and no groups to be collected:");
+view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, true, true, false);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection restricted but no groups marked.");
+} else {
+throw e;
+}
+}
+try {
+System.out.println ("View *with* hidden columns, limited to selection, and all groups to be collected:");
+view =  new jalview.datamodel.AlignmentView (alignment, csel, selection, true, true, true);
+jalview.datamodel.AlignmentView.summariseAlignmentView (view, System.out);
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to generate alignment with selection restricted and groups marked.");
+} else {
+throw e;
+}
+}
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");
+c$.$AlignmentView$ScGroup$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.seqs = null;
+this.sg = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel.AlignmentView, "ScGroup");
+Clazz_makeConstructor (c$, 
+function () {
+this.seqs =  new java.util.Vector ();
+});
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.Blosum62ColourScheme", ["jalview.schemes.ResidueProperties", "jalview.util.Comparison", "java.awt.Color"], function () {
+c$ = Clazz_declareType (jalview.schemes, "Blosum62ColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz_overrideMethod (c$, "findColourSeq", 
+function (res, j, seq) {
+if ('a' <= res && res <= 'z') {
+res = String.fromCharCode (res.charCodeAt (0) - (32));
+}if (this.consensus == null || j >= this.consensus.length || this.consensus[j] == null || (this.threshold != 0 && !this.aboveThreshold (res, j))) {
+return java.awt.Color.white;
+}var currentColour;
+if (!jalview.util.Comparison.isGap (res)) {
+var max = this.consensus[j].get ("R");
+if (max.indexOf (res) > -1) {
+currentColour =  new java.awt.Color (154, 154, 255);
+} else {
+var c = 0;
+var max_aa = 0;
+var n = max.length;
+do {
+c += jalview.schemes.ResidueProperties.getBLOSUM62 (max.charAt (max_aa), res);
+} while (++max_aa < n);
+if (c > 0) {
+currentColour =  new java.awt.Color (204, 204, 255);
+} else {
+currentColour = java.awt.Color.white;
+}}if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}} else {
+return java.awt.Color.white;
+}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "applyTo", 
+function (sg, hiddenRepSequences) {
+var newcs = Clazz_superCall (this, jalview.schemes.Blosum62ColourScheme, "applyTo", [sg, hiddenRepSequences]);
+return newcs;
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ColourSchemeI"], "jalview.schemes.ResidueColourScheme", ["jalview.util.Comparison", "$.MessageManager", "java.awt.Color", "java.lang.Error"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.symbolIndex = null;
+this.conservationColouring = false;
+this.colors = null;
+this.threshold = 0;
+this.ignoreGaps = "G";
+this.consensus = null;
+this.conservation = null;
+this.conservationLength = 0;
+this.inc = 30;
+Clazz_instantialize (this, arguments);
+}, jalview.schemes, "ResidueColourScheme", null, jalview.schemes.ColourSchemeI);
+Clazz_makeConstructor (c$, 
+function (aaOrnaIndex, colours, threshold) {
+this.symbolIndex = aaOrnaIndex;
+this.colors = colours;
+this.threshold = threshold;
+}, "~A,~A,~N");
+Clazz_makeConstructor (c$, 
+function (aaOrNaIndex) {
+this.symbolIndex = aaOrNaIndex;
+}, "~A");
+Clazz_makeConstructor (c$, 
+function () {
+this.symbolIndex = null;
+});
+Clazz_overrideMethod (c$, "findColour", 
+function (c) {
+return this.colors == null ? java.awt.Color.white : this.colors[this.symbolIndex[c.charCodeAt (0)]];
+}, "~S");
+Clazz_overrideMethod (c$, "findColourSeq", 
+function (c, j, seq) {
+var currentColour;
+if (this.colors != null && this.symbolIndex != null && (this.threshold == 0) || this.aboveThreshold (c, j)) {
+currentColour = this.colors[this.symbolIndex[c.charCodeAt (0)]];
+} else {
+currentColour = java.awt.Color.white;
+}if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+Clazz_overrideMethod (c$, "getThreshold", 
+function () {
+return this.threshold;
+});
+Clazz_overrideMethod (c$, "setThreshold", 
+function (ct, ignoreGaps) {
+this.threshold = ct;
+if (ignoreGaps) {
+this.ignoreGaps = "N";
+} else {
+this.ignoreGaps = "G";
+}}, "~N,~B");
+Clazz_defineMethod (c$, "aboveThreshold", 
+function (c, j) {
+if ('a' <= c && c <= 'z') {
+c = String.fromCharCode (c.charCodeAt (0) - (32));
+}if (this.consensus == null || this.consensus.length < j || this.consensus[j] == null) {
+return false;
+}if (((this.consensus[j].get ("C")).intValue () != -1) && this.consensus[j].contains (String.valueOf (c))) {
+if ((this.consensus[j].get (this.ignoreGaps)).floatValue () >= this.threshold) {
+return true;
+}}return false;
+}, "~S,~N");
+Clazz_overrideMethod (c$, "conservationApplied", 
+function () {
+return this.conservationColouring;
+});
+Clazz_overrideMethod (c$, "setConservationApplied", 
+function (conservationApplied) {
+this.conservationColouring = conservationApplied;
+}, "~B");
+Clazz_overrideMethod (c$, "setConservationInc", 
+function (i) {
+this.inc = i;
+}, "~N");
+Clazz_overrideMethod (c$, "getConservationInc", 
+function () {
+return this.inc;
+});
+Clazz_overrideMethod (c$, "setConsensus", 
+function (consensus) {
+if (consensus == null) {
+return;
+}this.consensus = consensus;
+}, "~A");
+Clazz_overrideMethod (c$, "setConservation", 
+function (cons) {
+if (cons == null) {
+this.conservationColouring = false;
+this.conservation = null;
+} else {
+this.conservationColouring = true;
+var i;
+var iSize = cons.getConsSequence ().getLength ();
+this.conservation =  Clazz_newCharArray (iSize, '\0');
+for (i = 0; i < iSize; i++) {
+this.conservation[i] = cons.getConsSequence ().getCharAt (i);
+}
+this.conservationLength = this.conservation.length;
+}}, "jalview.analysis.Conservation");
+Clazz_defineMethod (c$, "applyConservation", 
+function (currentColour, i) {
+if ((this.conservationLength > i) && (this.conservation[i] != '*') && (this.conservation[i] != '+')) {
+if (jalview.util.Comparison.isGap (this.conservation[i])) {
+currentColour = java.awt.Color.white;
+} else {
+var t = 11 - ((this.conservation[i]).charCodeAt (0) - 48);
+if (t == 0) {
+return java.awt.Color.white;
+}var red = currentColour.getRed ();
+var green = currentColour.getGreen ();
+var blue = currentColour.getBlue ();
+var dr = 255 - red;
+var dg = 255 - green;
+var db = 255 - blue;
+dr *= t / 10;
+dg *= t / 10;
+db *= t / 10;
+red += (this.inc / 20) * dr;
+green += (this.inc / 20) * dg;
+blue += (this.inc / 20) * db;
+if (red > 255 || green > 255 || blue > 255) {
+currentColour = java.awt.Color.white;
+} else {
+currentColour =  new java.awt.Color (red, green, blue);
+}}}return currentColour;
+}, "java.awt.Color,~N");
+Clazz_overrideMethod (c$, "alignmentChanged", 
+function (alignment, hiddenReps) {
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+Clazz_overrideMethod (c$, "applyTo", 
+function (sg, hiddenRepSequences) {
+try {
+return this.getClass ().newInstance ();
+} catch (q) {
+if (Clazz_exceptionOf (q, Exception)) {
+throw  new Error (jalview.util.MessageManager.formatMessage ("error.implementation_error_cannot_duplicate_colour_scheme",  Clazz_newArray (-1, [this.getClass ().getName ()])), q);
+} else {
+throw q;
+}
+}
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_declareInterface (jalview.schemes, "ColourSchemeI");
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.PIDColourScheme", ["jalview.schemes.ResidueProperties", "jalview.util.Comparison", "java.awt.Color"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.pidColours = null;
+this.thresholds = null;
+this.group = null;
+Clazz_instantialize (this, arguments);
+}, jalview.schemes, "PIDColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.schemes.PIDColourScheme, []);
+this.pidColours = jalview.schemes.ResidueProperties.pidColours;
+this.thresholds = jalview.schemes.ResidueProperties.pidThresholds;
+});
+Clazz_overrideMethod (c$, "findColourSeq", 
+function (c, j, seq) {
+if ('a' <= c && c <= 'z') {
+c = String.fromCharCode (c.charCodeAt (0) - (32));
+}if (this.consensus == null || j >= this.consensus.length || this.consensus[j] == null) {
+return java.awt.Color.white;
+}if ((this.threshold != 0) && !this.aboveThreshold (c, j)) {
+return java.awt.Color.white;
+}var currentColour = java.awt.Color.white;
+var sc = 0;
+if (this.consensus.length <= j) {
+return java.awt.Color.white;
+}if ((Integer.parseInt (this.consensus[j].get ("C").toString ()) != -1) && this.consensus[j].contains (String.valueOf (c))) {
+sc = (this.consensus[j].get (this.ignoreGaps)).floatValue ();
+if (!jalview.util.Comparison.isGap (c)) {
+for (var i = 0; i < this.thresholds.length; i++) {
+if (sc > this.thresholds[i]) {
+currentColour = this.pidColours[i];
+break;
+}}
+}}if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+});
+Clazz_declarePackage ("jalview.workers");
+Clazz_load (["jalview.workers.ConsensusThread"], "jalview.workers.ComplementConsensusThread", ["jalview.analysis.AAFrequency"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.mappings = null;
+Clazz_instantialize (this, arguments);
+}, jalview.workers, "ComplementConsensusThread", jalview.workers.ConsensusThread);
+Clazz_overrideMethod (c$, "getNewWorker", 
+function () {
+return  new jalview.workers.ComplementConsensusThread (this.alignViewport, this.ap);
+});
+Clazz_overrideMethod (c$, "getConsensusAnnotation", 
+function () {
+return this.alignViewport.getComplementConsensusAnnotation ();
+});
+Clazz_overrideMethod (c$, "getViewportConsensus", 
+function () {
+return this.alignViewport.getComplementConsensusHash ();
+});
+Clazz_defineMethod (c$, "initializeCalc", 
+function () {
+this.mappings = this.alignment.getCodonFrames ();
+return (this.mappings != null && !this.mappings.isEmpty () && Clazz_superCall (this, jalview.workers.ComplementConsensusThread, "initializeCalc", []));
+});
+Clazz_overrideMethod (c$, "computeConsensus", 
+function () {
+for (var i = 0; i < 3; i++) {
+try {
+jalview.analysis.AAFrequency.calculateCdna (this.alignment, this.mappings, this.hconsensus, this.iFirst, this.iLast);
+break;
+} catch (e) {
+if (Clazz_exceptionOf (e, java.util.ConcurrentModificationException)) {
+} else {
+throw e;
+}
+}
+}
+});
+Clazz_overrideMethod (c$, "finalizeCalc", 
+function () {
+this.alignViewport.setComplementConsensusHash (this.hconsensus);
+});
+Clazz_overrideMethod (c$, "deriveConsensus", 
+function (consensusAnnotation, consensusData) {
+jalview.analysis.AAFrequency.completeCdnaConsensus (consensusAnnotation, consensusData, this.alignViewport.isShowSequenceLogo (), this.getSequences ().length);
+}, "jalview.datamodel.AlignmentAnnotation,~A");
+});
+Clazz_declarePackage ("jalview.workers");
+Clazz_load (["jalview.api.AlignCalcWorkerI", "jalview.workers.AlignCalcWorker"], "jalview.workers.ConsensusThread", ["jalview.analysis.AAFrequency"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.hconsensus = null;
+this.aseqs = null;
+Clazz_instantialize (this, arguments);
+}, jalview.workers, "ConsensusThread", jalview.workers.AlignCalcWorker, jalview.api.AlignCalcWorkerI);
+Clazz_overrideMethod (c$, "getNewWorker", 
+function () {
+return  new jalview.workers.ConsensusThread (this.alignViewport, this.ap);
+});
+Clazz_overrideMethod (c$, "run1", 
+function (state) {
+while (!Thread.interrupted ()) {
+if (this.alignViewport.isClosed ()) {
+this.abortAndDestroy ();
+return;
+}try {
+switch (state) {
+case 0:
+if (this.calcMan.isPending (this)) return;
+this.calcMan.notifyStart (this);
+var consensus = this.getConsensusAnnotation ();
+if (consensus == null || this.calcMan.isPending (this)) {
+this.calcMan.workerComplete (this);
+return;
+}state = 3;
+break;
+case 3:
+while (!this.calcMan.notifyWorking (this)) {
+if (this.ap != null) {
+this.ap.paintAlignment (false);
+}try {
+if (this.sleepAndReturn (200, state)) return;
+} catch (e) {
+if (Clazz_exceptionOf (e, InterruptedException)) {
+state = 2;
+break;
+} else {
+throw e;
+}
+}
+}
+if (this.alignViewport.isClosed ()) {
+this.abortAndDestroy ();
+state = 2;
+break;
+}this.alignment = this.alignViewport.getAlignment ();
+this.aWidth = -1;
+if (this.alignment == null || (this.aWidth = this.alignment.getWidth ()) < 0) {
+state = 2;
+}this.eraseConsensus (this.aWidth);
+state = (this.initializeCalc () ? 4 : 2);
+break;
+case 4:
+this.iFirst = this.iLast;
+this.iLast = Math.min (this.iLast + this.nPer, this.aWidth);
+if (this.iLast == this.iFirst) {
+state = 2;
+} else {
+this.computeConsensus ();
+if (this.sleepAndReturn (0, state)) return;
+}break;
+case 2:
+this.finalizeCalc ();
+this.updateAlignment ();
+this.notifyDone ();
+return;
+}
+} catch (e$$) {
+if (Clazz_exceptionOf (e$$, OutOfMemoryError)) {
+var error = e$$;
+{
+this.calcMan.workerCannotRun (this);
+this.ap.raiseOOMWarning ("calculating consensus", error);
+}
+} else {
+var e = e$$;
+{
+System.out.println ("Error in ConsensusThread: " + e);
+e.printStackTrace ();
+this.calcMan.workerComplete (this);
+}
+}
+}
+}
+}, "~N");
+Clazz_defineMethod (c$, "initializeCalc", 
+function () {
+this.iLast = 0;
+this.hconsensus =  new Array (this.aWidth);
+this.aseqs = this.getSequences ();
+return true;
+});
+Clazz_defineMethod (c$, "computeConsensus", 
+function () {
+this.started = System.currentTimeMillis ();
+jalview.analysis.AAFrequency.calculate (this.aseqs, this.iFirst, this.iLast, this.hconsensus, true);
+if (System.currentTimeMillis () - this.started < 500) this.nPer *= 2;
+});
+Clazz_defineMethod (c$, "finalizeCalc", 
+function () {
+this.alignViewport.setSequenceConsensusHash (this.hconsensus);
+});
+Clazz_defineMethod (c$, "updateAlignment", 
+function () {
+this.setColourSchemeConsensus (this.hconsensus);
+this.updateResultAnnotation (true);
+});
+Clazz_defineMethod (c$, "eraseConsensus", 
+function (aWidth) {
+var consensus = this.getConsensusAnnotation ();
+consensus.annotations =  new Array (aWidth);
+}, "~N");
+Clazz_defineMethod (c$, "getSequences", 
+function () {
+return this.alignViewport.getAlignment ().getSequencesArray ();
+});
+Clazz_defineMethod (c$, "setColourSchemeConsensus", 
+function (hconsensus) {
+var globalColourScheme = this.alignViewport.getGlobalColourScheme ();
+if (globalColourScheme != null) {
+globalColourScheme.setConsensus (hconsensus);
+}}, "~A");
+Clazz_defineMethod (c$, "getConsensusAnnotation", 
+function () {
+return this.alignViewport.getAlignmentConsensusAnnotation ();
+});
+Clazz_overrideMethod (c$, "updateAnnotation", 
+function () {
+this.updateResultAnnotation (false);
+});
+Clazz_defineMethod (c$, "updateResultAnnotation", 
+function (immediate) {
+var consensus = this.getConsensusAnnotation ();
+var hconsensus = this.getViewportConsensus ();
+if (immediate || !this.calcMan.isWorking (this) && consensus != null && hconsensus != null) {
+this.deriveConsensus (consensus, hconsensus);
+}}, "~B");
+Clazz_defineMethod (c$, "deriveConsensus", 
+function (consensusAnnotation, consensusData) {
+var nseq = this.getSequences ().length;
+jalview.analysis.AAFrequency.completeConsensus (consensusAnnotation, consensusData, 0, consensusData.length, this.alignViewport.isIgnoreGapsConsensus (), this.alignViewport.isShowSequenceLogo (), nseq);
+}, "jalview.datamodel.AlignmentAnnotation,~A");
+Clazz_defineMethod (c$, "getViewportConsensus", 
+function () {
+return this.alignViewport.getSequenceConsensusHash ();
+});
+});
+Clazz_declarePackage ("jalview.api");
+Clazz_declareInterface (jalview.api, "AlignCalcWorkerI", Runnable);
+Clazz_declarePackage ("jalview.workers");
+Clazz_load (["jalview.api.AlignCalcWorkerI", "swingjs.JSThread"], "jalview.workers.AlignCalcWorker", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.iFirst = 0;
+this.iLast = 0;
+this.nPer = 2;
+this.started = 0;
+this.alignment = null;
+this.aWidth = 0;
+this.alignViewport = null;
+this.calcMan = null;
+this.ap = null;
+this.ourAnnots = null;
+Clazz_instantialize (this, arguments);
+}, jalview.workers, "AlignCalcWorker", swingjs.JSThread, jalview.api.AlignCalcWorkerI);
+Clazz_makeConstructor (c$, 
+function (alignViewport, alignPanel) {
+Clazz_superConstructor (this, jalview.workers.AlignCalcWorker, [null, "AlignCalcWorker"]);
+this.alignViewport = alignViewport;
+this.calcMan = alignViewport.getCalcManager ();
+this.ap = alignPanel;
+}, "jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");
+Clazz_defineMethod (c$, "abortAndDestroy", 
+function () {
+if (this.calcMan != null) {
+this.calcMan.workerComplete (this);
+}this.alignViewport = null;
+this.calcMan = null;
+this.ap = null;
+});
+Clazz_overrideMethod (c$, "involves", 
+function (i) {
+return this.ourAnnots != null && this.ourAnnots.contains (i);
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz_overrideMethod (c$, "removeOurAnnotation", 
+function () {
+if (this.ourAnnots != null && this.alignViewport != null) {
+var alignment = this.alignViewport.getAlignment ();
+{
+for (var aa, $aa = this.ourAnnots.iterator (); $aa.hasNext () && ((aa = $aa.next ()) || true);) {
+alignment.deleteAnnotation (aa, true);
+}
+}}});
+Clazz_defineMethod (c$, "notifyDone", 
+function () {
+if (this.ap != null) {
+this.ap.paintAlignment (true);
+}this.calcMan.workerComplete (this);
+});
+Clazz_defineStatics (c$,
+"LOOP_STANDBY", 3,
+"LOOP_CALCULATE", 4,
+"MS_MAX", 500);
+});
+Clazz_declarePackage ("jalview.workers");
+Clazz_load (["jalview.api.AlignCalcWorkerI", "jalview.workers.AlignCalcWorker"], "jalview.workers.ConservationThread", ["jalview.analysis.Conservation", "jalview.schemes.ResidueProperties", "java.util.ArrayList"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.ConsPercGaps = 25;
+this.cons = null;
+this.conservation = null;
+this.quality = null;
+Clazz_instantialize (this, arguments);
+}, jalview.workers, "ConservationThread", jalview.workers.AlignCalcWorker, jalview.api.AlignCalcWorkerI);
+Clazz_overrideMethod (c$, "getNewWorker", 
+function () {
+return  new jalview.workers.ConservationThread (this.alignViewport, this.ap);
+});
+Clazz_makeConstructor (c$, 
+function (alignViewport, alignPanel) {
+Clazz_superConstructor (this, jalview.workers.ConservationThread, [alignViewport, alignPanel]);
+this.ConsPercGaps = alignViewport.getConsPercGaps ();
+}, "jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");
+Clazz_overrideMethod (c$, "run1", 
+function (state) {
+while (!Thread.interrupted ()) {
+try {
+switch (state) {
+case 0:
+if (this.calcMan.isPending (this)) return;
+this.calcMan.notifyStart (this);
+state = 3;
+break;
+case 3:
+while (!this.calcMan.notifyWorking (this)) {
+if (this.ap != null) {
+this.ap.paintAlignment (false);
+}try {
+if (this.sleepAndReturn (200, state)) return;
+} catch (e) {
+if (Clazz_exceptionOf (e, InterruptedException)) {
+state = 2;
+break;
+} else {
+throw e;
+}
+}
+}
+if (this.alignViewport.isClosed ()) {
+this.abortAndDestroy ();
+state = 2;
+break;
+}var ourAnnot =  new java.util.ArrayList ();
+this.alignment = this.alignViewport.getAlignment ();
+this.conservation = this.alignViewport.getAlignmentConservationAnnotation ();
+this.quality = this.alignViewport.getAlignmentQualityAnnot ();
+ourAnnot.add (this.conservation);
+ourAnnot.add (this.quality);
+this.ourAnnots = ourAnnot;
+this.ConsPercGaps = this.alignViewport.getConsPercGaps ();
+if (this.alignment == null || (this.aWidth = this.alignment.getWidth ()) < 0) {
+this.calcMan.workerComplete (this);
+return;
+}state = 4;
+break;
+case 4:
+this.iFirst = this.iLast;
+this.nPer = this.aWidth + 1;
+this.iLast = Math.min (this.iLast + this.nPer, this.aWidth);
+if (this.iLast == this.iFirst) {
+state = 2;
+} else {
+this.computeConsensus ();
+if (this.sleepAndReturn (0, state)) return;
+}break;
+case 2:
+this.updateResultAnnotation (true);
+this.notifyDone ();
+return;
+}
+} catch (e$$) {
+if (Clazz_exceptionOf (e$$, OutOfMemoryError)) {
+var error = e$$;
+{
+this.calcMan.workerCannotRun (this);
+this.ap.raiseOOMWarning ("calculating conservation", error);
+}
+} else {
+var e = e$$;
+{
+System.out.println ("Error in ConsensusThread: " + e);
+e.printStackTrace ();
+this.calcMan.workerComplete (this);
+}
+}
+}
+}
+}, "~N");
+Clazz_defineMethod (c$, "computeConsensus", 
+ function () {
+this.cons = jalview.analysis.Conservation.calculateConservation ("All", jalview.schemes.ResidueProperties.propHash, 3, this.alignment.getSequences (), 0, this.aWidth - 1, false, this.ConsPercGaps, this.quality != null);
+});
+Clazz_defineMethod (c$, "updateResultAnnotation", 
+ function (b) {
+if (b || !this.calcMan.isWorking (this) && this.cons != null && this.conservation != null && this.quality != null) {
+this.alignViewport.setConservation (this.cons);
+this.cons.completeAnnotations (this.conservation, this.quality, 0, this.aWidth);
+}}, "~B");
+Clazz_overrideMethod (c$, "updateAnnotation", 
+function () {
+this.updateResultAnnotation (false);
+});
+});
+Clazz_declarePackage ("jalview.workers");
+Clazz_load (["jalview.api.AlignCalcWorkerI", "jalview.workers.AlignCalcWorker"], "jalview.workers.StrucConsensusThread", ["jalview.analysis.StructureFrequency"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.rnaStruc = null;
+this.strucConsensus = null;
+this.hStrucConsensus = null;
+this.nseq = -1;
+this.aa = null;
+this.arr = null;
+Clazz_instantialize (this, arguments);
+}, jalview.workers, "StrucConsensusThread", jalview.workers.AlignCalcWorker, jalview.api.AlignCalcWorkerI);
+Clazz_overrideMethod (c$, "getNewWorker", 
+function () {
+return  new jalview.workers.StrucConsensusThread (this.alignViewport, this.ap);
+});
+Clazz_overrideMethod (c$, "run1", 
+function (state) {
+if (this.alignViewport.isClosed ()) {
+this.abortAndDestroy ();
+return;
+}while (!Thread.interrupted ()) {
+try {
+switch (state) {
+case 0:
+if (this.calcMan.isPending (this)) return;
+this.calcMan.notifyStart (this);
+state = 3;
+break;
+case 3:
+while (!this.calcMan.notifyWorking (this)) {
+if (this.ap != null) {
+this.ap.paintAlignment (false);
+}try {
+if (this.sleepAndReturn (200, state)) return;
+} catch (e) {
+if (Clazz_exceptionOf (e, InterruptedException)) {
+state = 2;
+break;
+} else {
+throw e;
+}
+}
+}
+if (this.alignViewport.isClosed ()) {
+this.abortAndDestroy ();
+state = 2;
+break;
+}this.alignment = this.alignViewport.getAlignment ();
+this.aWidth = -1;
+if (this.alignment == null || (this.aWidth = this.alignment.getWidth ()) < 0) {
+state = 2;
+}this.strucConsensus = this.alignViewport.getAlignmentStrucConsensusAnnotation ();
+this.hStrucConsensus = this.alignViewport.getRnaStructureConsensusHash ();
+this.strucConsensus.annotations = null;
+this.strucConsensus.annotations =  new Array (this.aWidth);
+this.hStrucConsensus =  new Array (this.aWidth);
+this.aa = this.alignViewport.getAlignment ().getAlignmentAnnotation ();
+for (var i = 0; i < this.aa.length; i++) {
+if (this.aa[i].getRNAStruc () != null && this.aa[i].isValidStruc ()) {
+this.rnaStruc = this.aa[i];
+break;
+}}
+if (this.rnaStruc == null || !this.rnaStruc.isValidStruc ()) {
+this.calcMan.workerComplete (this);
+return;
+}this.arr = this.alignment.getSequencesArray ();
+this.nseq = this.arr.length;
+state = 4;
+break;
+case 4:
+this.iFirst = this.iLast;
+this.iLast = Math.min (this.iLast + this.nPer, this.aWidth);
+if (this.iLast == this.iFirst) {
+state = 2;
+} else {
+jalview.analysis.StructureFrequency.calculate (this.arr, 0, this.alignment.getWidth (), this.hStrucConsensus, true, this.rnaStruc);
+if (this.sleepAndReturn (0, state)) return;
+}break;
+case 2:
+this.alignViewport.setRnaStructureConsensusHash (this.hStrucConsensus);
+this.updateResultAnnotation (true);
+if (this.alignViewport.getGlobalColourScheme () != null) {
+this.alignViewport.getGlobalColourScheme ().setConsensus (this.hStrucConsensus);
+}this.notifyDone ();
+return;
+}
+} catch (e$$) {
+if (Clazz_exceptionOf (e$$, OutOfMemoryError)) {
+var error = e$$;
+{
+this.calcMan.workerCannotRun (this);
+this.ap.raiseOOMWarning ("calculating RNA structure consensus", error);
+}
+} else {
+var e = e$$;
+{
+System.out.println ("Error in ConsensusThread: " + e);
+e.printStackTrace ();
+this.calcMan.workerComplete (this);
+}
+}
+}
+}
+}, "~N");
+Clazz_overrideMethod (c$, "updateAnnotation", 
+function () {
+this.updateResultAnnotation (false);
+});
+Clazz_defineMethod (c$, "updateResultAnnotation", 
+function (immediate) {
+if (immediate || !this.calcMan.isWorking (this) && this.strucConsensus != null && this.hStrucConsensus != null) {
+jalview.analysis.StructureFrequency.completeConsensus (this.strucConsensus, this.hStrucConsensus, 0, this.hStrucConsensus.length, this.alignViewport.isIgnoreGapsConsensus (), this.alignViewport.isShowSequenceLogo (), this.nseq);
+}}, "~B");
+});
+Clazz_declarePackage ("jalview.analysis");
+Clazz_load (null, "jalview.analysis.StructureFrequency", ["jalview.datamodel.Annotation", "jalview.util.Format", "$.QuickSort", "java.lang.Float", "java.util.Hashtable", "JU.AU"], function () {
+c$ = Clazz_declareType (jalview.analysis, "StructureFrequency");
+c$.findPair = Clazz_defineMethod (c$, "findPair", 
+function (pairs, indice) {
+for (var i = 0; i < pairs.length; i++) {
+if (pairs[i].getBegin () == indice) {
+return pairs[i].getEnd ();
+}}
+return -1;
+}, "~A,~N");
+c$.calculate = Clazz_defineMethod (c$, "calculate", 
+function (sequences, start, end, result, profile, rnaStruc) {
+var residueHash;
+var maxResidue;
+var struc = rnaStruc.getRNAStruc ().toCharArray ();
+var rna = rnaStruc._rnasecstr;
+var c;
+var s;
+var cEnd;
+var count = 0;
+var nonGap = 0;
+var i;
+var bpEnd = -1;
+var j;
+var jSize = sequences.length;
+var values;
+var pairs;
+var percentage;
+var wooble = true;
+for (i = start; i < end; i++) {
+residueHash =  new java.util.Hashtable ();
+maxResidue = "-";
+values =  Clazz_newIntArray (255, 0);
+pairs =  Clazz_newIntArray (255, 255, 0);
+bpEnd = -1;
+if (i < struc.length) {
+s = struc[i];
+} else {
+s = '-';
+}if (s == '.' || s == ' ') {
+s = '-';
+}if (s != '(' && s != '[') {
+if (s == '-') {
+values['-'.charCodeAt (0)]++;
+}} else {
+bpEnd = jalview.analysis.StructureFrequency.findPair (rna, i);
+if (bpEnd > -1) {
+for (j = 0; j < jSize; j++) {
+if (sequences[j] == null) {
+System.err.println ("WARNING: Consensus skipping null sequence - possible race condition.");
+continue;
+}c = sequences[j].getCharAt (i);
+if (c == '.' || c == ' ') {
+c = '-';
+}if (c == '-') {
+values['-'.charCodeAt (0)]++;
+continue;
+}cEnd = sequences[j].getCharAt (bpEnd);
+if (jalview.analysis.StructureFrequency.checkBpType (c, cEnd) == true) {
+values['('.charCodeAt (0)]++;
+maxResidue = "(";
+wooble = true;
+}if (jalview.analysis.StructureFrequency.checkBpType (c, cEnd) == false) {
+wooble = false;
+values['['.charCodeAt (0)]++;
+maxResidue = "[";
+}pairs[c.charCodeAt (0)][cEnd.charCodeAt (0)]++;
+}
+}}if (profile) {
+residueHash.put ("P",  Clazz_newArray (-1, [values,  Clazz_newIntArray (-1, [jSize, (jSize - values['-'.charCodeAt (0)])])]));
+residueHash.put ("B", pairs);
+}if (wooble == true) {
+count = values['('.charCodeAt (0)];
+}if (wooble == false) {
+count = values['['.charCodeAt (0)];
+}residueHash.put ("C",  new Integer (count));
+residueHash.put ("R", maxResidue);
+percentage = (count * 100) / jSize;
+residueHash.put ("G",  new Float (percentage));
+if (result[i] == null) {
+result[i] = residueHash;
+}if (bpEnd > 0) {
+values[')'.charCodeAt (0)] = values['('.charCodeAt (0)];
+values[']'.charCodeAt (0)] = values['['.charCodeAt (0)];
+values['('.charCodeAt (0)] = 0;
+values['['.charCodeAt (0)] = 0;
+residueHash =  new java.util.Hashtable ();
+if (wooble == true) {
+maxResidue = ")";
+}if (wooble == false) {
+maxResidue = "]";
+}if (profile) {
+residueHash.put ("P",  Clazz_newArray (-1, [values,  Clazz_newIntArray (-1, [jSize, (jSize - values['-'.charCodeAt (0)])])]));
+residueHash.put ("B", pairs);
+}residueHash.put ("C",  new Integer (count));
+residueHash.put ("R", maxResidue);
+percentage = (count * 100) / jSize;
+residueHash.put ("G",  new Float (percentage));
+result[bpEnd] = residueHash;
+}}
+}, "~A,~N,~N,~A,~B,jalview.datamodel.AlignmentAnnotation");
+c$.checkBpType = Clazz_defineMethod (c$, "checkBpType", 
+function (up, down) {
+if (up > 'Z') {
+up = String.fromCharCode (up.charCodeAt (0) - 32);
+}if (down > 'Z') {
+down = String.fromCharCode (down.charCodeAt (0) - 32);
+}switch (up) {
+case 'A':
+switch (down) {
+case 'T':
+return true;
+case 'U':
+return true;
+}
+break;
+case 'C':
+switch (down) {
+case 'G':
+return true;
+}
+break;
+case 'T':
+switch (down) {
+case 'A':
+return true;
+case 'G':
+return true;
+}
+break;
+case 'G':
+switch (down) {
+case 'C':
+return true;
+case 'T':
+return true;
+case 'U':
+return true;
+}
+break;
+case 'U':
+switch (down) {
+case 'A':
+return true;
+case 'G':
+return true;
+}
+break;
+}
+return false;
+}, "~S,~S");
+c$.completeConsensus = Clazz_defineMethod (c$, "completeConsensus", 
+function (consensus, hconsensus, iStart, width, ignoreGapsInConsensusCalculation, includeAllConsSymbols, nseq) {
+var tval;
+var value;
+if (consensus == null || consensus.annotations == null || consensus.annotations.length < width) {
+return;
+}var fmtstr = "%3.1f";
+var precision = 2;
+while (nseq > 100) {
+precision++;
+nseq /= 10;
+}
+if (precision > 2) {
+fmtstr = "%" + (2 + precision) + "." + precision + "f";
+}var fmt =  new jalview.util.Format (fmtstr);
+for (var i = iStart; i < width; i++) {
+var hci;
+if (i >= hconsensus.length || ((hci = hconsensus[i]) == null)) {
+consensus.annotations[i] = null;
+continue;
+}value = 0;
+var fv;
+if (ignoreGapsInConsensusCalculation) {
+fv = hci.get ("N");
+} else {
+fv = hci.get ("G");
+}if (fv == null) {
+consensus.annotations[i] = null;
+continue;
+}value = fv.floatValue ();
+var maxRes = hci.get ("R").toString ();
+var mouseOver = hci.get ("R") + " ";
+if (maxRes.length > 1) {
+mouseOver = "[" + maxRes + "] ";
+maxRes = "+";
+}var profile = hci.get ("P");
+var pairs = hci.get ("B");
+if (pairs != null && includeAllConsSymbols) {
+mouseOver = "";
+var ca = JU.AU.newInt2 (625);
+var vl =  Clazz_newFloatArray (625, 0);
+var x = 0;
+for (var c = 65; c < 90; c++) {
+for (var d = 65; d < 90; d++) {
+ca[x] =  Clazz_newIntArray (-1, [c, d]);
+vl[x] = pairs[c][d];
+x++;
+}
+}
+jalview.util.QuickSort.sortFloatObject (vl, ca);
+var p = 0;
+var divisor = profile[1][ignoreGapsInConsensusCalculation ? 1 : 0];
+for (var c = 624; c > 0; c--) {
+if (vl[c] > 0) {
+tval = (vl[c] * 100 / divisor);
+mouseOver += ((p == 0) ? "" : "; ") + String.fromCharCode (ca[c][0]) + String.fromCharCode (ca[c][1]) + " " + fmt.formDouble (tval) + "%";
+p++;
+}}
+} else {
+mouseOver += (fmt.formDouble (value) + "%");
+}consensus.annotations[i] =  new jalview.datamodel.Annotation (maxRes, mouseOver, ' ', value);
+}
+}, "jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~B,~B,~N");
+c$.extractProfile = Clazz_defineMethod (c$, "extractProfile", 
+function (hconsensus, ignoreGapsInConsensusCalculation) {
+var rtnval =  Clazz_newIntArray (74, 0);
+var profile = hconsensus.get ("P");
+var pairs = hconsensus.get ("B");
+if (profile == null) {
+return null;
+}var ca = JU.AU.newInt2 (625);
+var vl =  Clazz_newFloatArray (625, 0);
+var x = 0;
+for (var c = 65; c < 90; c++) {
+for (var d = 65; d < 90; d++) {
+ca[x] =  Clazz_newIntArray (-1, [c, d]);
+vl[x] = pairs[c][d];
+x++;
+}
+}
+jalview.util.QuickSort.sortFloatObject (vl, ca);
+var valuesCount = 0;
+rtnval[1] = 0;
+var offset = 2;
+var divisor = profile[1][ignoreGapsInConsensusCalculation ? 1 : 0];
+for (var c = 624; c > 0; c--) {
+if (vl[c] > 0) {
+rtnval[offset++] = ca[c][0];
+rtnval[offset++] = ca[c][1];
+rtnval[offset] = Clazz_floatToInt (vl[c] * 100 / divisor);
+rtnval[1] += rtnval[offset++];
+valuesCount++;
+}}
+rtnval[0] = valuesCount;
+var result =  Clazz_newIntArray (rtnval.length + 1, 0);
+result[0] = 1;
+System.arraycopy (rtnval, 0, result, 1, rtnval.length);
+return result;
+}, "java.util.Hashtable,~B");
+Clazz_defineStatics (c$,
+"STRUCTURE_PROFILE_LENGTH", 74,
+"MAXCOUNT", "C",
+"MAXRESIDUE", "R",
+"PID_GAPS", "G",
+"PID_NOGAPS", "N",
+"PROFILE", "P",
+"PAIRPROFILE", "B");
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (null, "jalview.schemes.ColourSchemeProperty", ["jalview.schemes.Blosum62ColourScheme", "$.BuriedColourScheme", "$.ClustalxColourScheme", "$.HelixColourScheme", "$.HydrophobicColourScheme", "$.NucleotideColourScheme", "$.PIDColourScheme", "$.PurinePyrimidineColourScheme", "$.RNAHelicesColour", "$.StrandColourScheme", "$.TCoffeeColourScheme", "$.TaylorColourScheme", "$.TurnColourScheme", "$.UserColourScheme", "$.ZappoColourScheme", "jalview.util.ColorUtils", "java.awt.Color"], function () {
+c$ = Clazz_declareType (jalview.schemes, "ColourSchemeProperty");
+c$.getColourIndexFromName = Clazz_defineMethod (c$, "getColourIndexFromName", 
+function (name) {
+var ret = -1;
+if (name.equalsIgnoreCase ("Clustal")) {
+ret = 2;
+} else if (name.equalsIgnoreCase ("Blosum62")) {
+ret = 3;
+} else if (name.equalsIgnoreCase ("% Identity")) {
+ret = 4;
+} else if (name.equalsIgnoreCase ("Zappo")) {
+ret = 5;
+} else if (name.equalsIgnoreCase ("Taylor")) {
+ret = 6;
+} else if (name.equalsIgnoreCase ("Hydrophobic")) {
+ret = 7;
+} else if (name.equalsIgnoreCase ("Helix Propensity")) {
+ret = 8;
+} else if (name.equalsIgnoreCase ("Strand Propensity")) {
+ret = 9;
+} else if (name.equalsIgnoreCase ("Turn Propensity")) {
+ret = 10;
+} else if (name.equalsIgnoreCase ("Buried Index")) {
+ret = 11;
+} else if (name.equalsIgnoreCase ("Nucleotide")) {
+ret = 12;
+} else if (name.equalsIgnoreCase ("T-Coffee Scores")) {
+ret = 15;
+} else if (name.equalsIgnoreCase ("User Defined")) {
+ret = 0;
+} else if (name.equalsIgnoreCase ("None")) {
+ret = 1;
+} else if (name.equalsIgnoreCase ("Purine/Pyrimidine")) {
+ret = 13;
+} else if (name.equalsIgnoreCase ("RNA Interaction type")) {
+ret = 17;
+} else if (name.equalsIgnoreCase ("RNA Helices")) {
+ret = 16;
+}return ret;
+}, "~S");
+c$.getColourName = Clazz_defineMethod (c$, "getColourName", 
+function (cs) {
+var index = 1;
+if (Clazz_instanceOf (cs, jalview.schemes.ClustalxColourScheme)) {
+index = 2;
+} else if (Clazz_instanceOf (cs, jalview.schemes.Blosum62ColourScheme)) {
+index = 3;
+} else if (Clazz_instanceOf (cs, jalview.schemes.PIDColourScheme)) {
+index = 4;
+} else if (Clazz_instanceOf (cs, jalview.schemes.ZappoColourScheme)) {
+index = 5;
+} else if (Clazz_instanceOf (cs, jalview.schemes.TaylorColourScheme)) {
+index = 6;
+} else if (Clazz_instanceOf (cs, jalview.schemes.HydrophobicColourScheme)) {
+index = 7;
+} else if (Clazz_instanceOf (cs, jalview.schemes.HelixColourScheme)) {
+index = 8;
+} else if (Clazz_instanceOf (cs, jalview.schemes.StrandColourScheme)) {
+index = 9;
+} else if (Clazz_instanceOf (cs, jalview.schemes.TurnColourScheme)) {
+index = 10;
+} else if (Clazz_instanceOf (cs, jalview.schemes.BuriedColourScheme)) {
+index = 11;
+} else if (Clazz_instanceOf (cs, jalview.schemes.NucleotideColourScheme)) {
+index = 12;
+} else if (Clazz_instanceOf (cs, jalview.schemes.PurinePyrimidineColourScheme)) {
+index = 13;
+} else if (Clazz_instanceOf (cs, jalview.schemes.TCoffeeColourScheme)) {
+index = 15;
+} else if (Clazz_instanceOf (cs, jalview.schemes.RNAHelicesColour)) {
+index = 16;
+} else if (Clazz_instanceOf (cs, jalview.schemes.UserColourScheme)) {
+if (((cs).getName () != null) && ((cs).getName ().length > 0)) {
+return (cs).getName ();
+}index = 0;
+}return jalview.schemes.ColourSchemeProperty.getColourName (index);
+}, "jalview.schemes.ColourSchemeI");
+c$.getColourName = Clazz_defineMethod (c$, "getColourName", 
+function (index) {
+var ret = null;
+switch (index) {
+case 2:
+ret = "Clustal";
+break;
+case 3:
+ret = "Blosum62";
+break;
+case 4:
+ret = "% Identity";
+break;
+case 5:
+ret = "Zappo";
+break;
+case 6:
+ret = "Taylor";
+break;
+case 7:
+ret = "Hydrophobic";
+break;
+case 8:
+ret = "Helix Propensity";
+break;
+case 9:
+ret = "Strand Propensity";
+break;
+case 10:
+ret = "Turn Propensity";
+break;
+case 11:
+ret = "Buried Index";
+break;
+case 12:
+ret = "Nucleotide";
+break;
+case 13:
+ret = "Purine/Pyrimidine";
+break;
+case 15:
+ret = "T-Coffee Scores";
+break;
+case 17:
+ret = "RNA Interaction type";
+break;
+case 16:
+ret = "RNA Helices";
+break;
+case 0:
+ret = "User Defined";
+break;
+default:
+ret = "None";
+break;
+}
+return ret;
+}, "~N");
+c$.getColour = Clazz_defineMethod (c$, "getColour", 
+function (alignment, name) {
+var colindex = jalview.schemes.ColourSchemeProperty.getColourIndexFromName (name);
+if (colindex == -1) {
+if (name.indexOf ('=') == -1) {
+try {
+return  new jalview.schemes.UserColourScheme (name);
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+} else {
+try {
+var ucs =  new jalview.schemes.UserColourScheme ("white");
+ucs.parseAppletParameter (name);
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+} else {
+throw e;
+}
+}
+}}return jalview.schemes.ColourSchemeProperty.getColour (alignment, jalview.schemes.ColourSchemeProperty.getColourIndexFromName (name));
+}, "jalview.datamodel.AnnotatedCollectionI,~S");
+c$.getColour = Clazz_defineMethod (c$, "getColour", 
+function (coll, index) {
+var cs = null;
+switch (index) {
+case 2:
+cs =  new jalview.schemes.ClustalxColourScheme (coll, null);
+break;
+case 3:
+cs =  new jalview.schemes.Blosum62ColourScheme ();
+break;
+case 4:
+cs =  new jalview.schemes.PIDColourScheme ();
+break;
+case 5:
+cs =  new jalview.schemes.ZappoColourScheme ();
+break;
+case 6:
+cs =  new jalview.schemes.TaylorColourScheme ();
+break;
+case 7:
+cs =  new jalview.schemes.HydrophobicColourScheme ();
+break;
+case 8:
+cs =  new jalview.schemes.HelixColourScheme ();
+break;
+case 9:
+cs =  new jalview.schemes.StrandColourScheme ();
+break;
+case 10:
+cs =  new jalview.schemes.TurnColourScheme ();
+break;
+case 11:
+cs =  new jalview.schemes.BuriedColourScheme ();
+break;
+case 12:
+cs =  new jalview.schemes.NucleotideColourScheme ();
+break;
+case 13:
+cs =  new jalview.schemes.PurinePyrimidineColourScheme ();
+break;
+case 15:
+cs =  new jalview.schemes.TCoffeeColourScheme (coll);
+break;
+case 16:
+cs =  new jalview.schemes.RNAHelicesColour (coll);
+break;
+case 0:
+var col =  new Array (24);
+for (var i = 0; i < 24; i++) {
+col[i] = java.awt.Color.white;
+}
+cs =  new jalview.schemes.UserColourScheme (col);
+break;
+default:
+break;
+}
+return cs;
+}, "jalview.datamodel.AnnotatedCollectionI,~N");
+c$.getAWTColorFromName = Clazz_defineMethod (c$, "getAWTColorFromName", 
+function (name) {
+var col = null;
+name = name.toLowerCase ();
+if (name.equals ("black")) {
+col = java.awt.Color.black;
+} else if (name.equals ("blue")) {
+col = java.awt.Color.blue;
+} else if (name.equals ("cyan")) {
+col = java.awt.Color.cyan;
+} else if (name.equals ("darkGray")) {
+col = java.awt.Color.darkGray;
+} else if (name.equals ("gray")) {
+col = java.awt.Color.gray;
+} else if (name.equals ("green")) {
+col = java.awt.Color.green;
+} else if (name.equals ("lightGray")) {
+col = java.awt.Color.lightGray;
+} else if (name.equals ("magenta")) {
+col = java.awt.Color.magenta;
+} else if (name.equals ("orange")) {
+col = java.awt.Color.orange;
+} else if (name.equals ("pink")) {
+col = java.awt.Color.pink;
+} else if (name.equals ("red")) {
+col = java.awt.Color.red;
+} else if (name.equals ("white")) {
+col = java.awt.Color.white;
+} else if (name.equals ("yellow")) {
+col = java.awt.Color.yellow;
+}return col;
+}, "~S");
+c$.initRnaHelicesShading = Clazz_defineMethod (c$, "initRnaHelicesShading", 
+function (n) {
+var j = 0;
+if (jalview.schemes.ColourSchemeProperty.rnaHelices == null) {
+jalview.schemes.ColourSchemeProperty.rnaHelices =  new Array (n + 1);
+} else if (jalview.schemes.ColourSchemeProperty.rnaHelices != null && jalview.schemes.ColourSchemeProperty.rnaHelices.length <= n) {
+var t =  new Array (n + 1);
+System.arraycopy (jalview.schemes.ColourSchemeProperty.rnaHelices, 0, t, 0, jalview.schemes.ColourSchemeProperty.rnaHelices.length);
+j = jalview.schemes.ColourSchemeProperty.rnaHelices.length;
+jalview.schemes.ColourSchemeProperty.rnaHelices = t;
+} else {
+return;
+}for (; j <= n; j++) {
+jalview.schemes.ColourSchemeProperty.rnaHelices[j] = jalview.util.ColorUtils.generateRandomColor (java.awt.Color.white);
+}
+}, "~N");
+Clazz_defineStatics (c$,
+"UNDEFINED", -1,
+"USER_DEFINED", 0,
+"NONE", 1,
+"CLUSTAL", 2,
+"BLOSUM", 3,
+"PID", 4,
+"ZAPPO", 5,
+"TAYLOR", 6,
+"HYDROPHOBIC", 7,
+"HELIX", 8,
+"STRAND", 9,
+"TURN", 10,
+"BURIED", 11,
+"NUCLEOTIDE", 12,
+"PURINEPYRIMIDINE", 13,
+"COVARIATION", 14,
+"TCOFFEE", 15,
+"RNAHELIX", 16,
+"RNAINTERACTION", 17,
+"FIRST_COLOUR", 1,
+"LAST_COLOUR", 17,
+"rnaHelices", null);
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ScoreColourScheme"], "jalview.schemes.BuriedColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {
+c$ = Clazz_declareType (jalview.schemes, "BuriedColourScheme", jalview.schemes.ScoreColourScheme);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.schemes.BuriedColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.buried, 0.05, 4.6]);
+});
+Clazz_overrideMethod (c$, "makeColour", 
+function (c) {
+return  new java.awt.Color (0, (1.0 - c), c);
+}, "~N");
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.ScoreColourScheme", ["jalview.schemes.ResidueProperties", "jalview.util.Comparison", "java.awt.Color"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.min = 0;
+this.max = 0;
+this.scores = null;
+Clazz_instantialize (this, arguments);
+}, jalview.schemes, "ScoreColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz_makeConstructor (c$, 
+function (symbolIndex, scores, min, max) {
+Clazz_superConstructor (this, jalview.schemes.ScoreColourScheme, [symbolIndex]);
+this.scores = scores;
+this.min = min;
+this.max = max;
+var i;
+var iSize = scores.length;
+this.colors =  new Array (scores.length);
+for (i = 0; i < iSize; i++) {
+var red = (scores[i] - min) / (max - min);
+if (red > 1.0) {
+red = 1.0;
+}if (red < 0.0) {
+red = 0.0;
+}this.colors[i] = this.makeColour (red);
+}
+}, "~A,~A,~N,~N");
+Clazz_overrideMethod (c$, "findColourSeq", 
+function (c, j, seq) {
+if (this.threshold > 0) {
+if (!this.aboveThreshold (c, j)) {
+return java.awt.Color.white;
+}}if (jalview.util.Comparison.isGap (c)) {
+return java.awt.Color.white;
+}var currentColour = this.colors[jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt (0)]];
+if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "makeColour", 
+function (c) {
+return  new java.awt.Color (c, 0.0, 1.0 - c);
+}, "~N");
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ResidueColourScheme", "java.util.HashMap"], ["jalview.schemes.ConsensusColour", "$.ClustalxColourScheme"], ["jalview.schemes.Consensus", "$.ResidueProperties", "java.awt.Color"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.cons2 = null;
+this.colours = null;
+this.residueColour = null;
+this.size = 0;
+this.conses = null;
+this.includeGaps = true;
+Clazz_instantialize (this, arguments);
+}, jalview.schemes, "ClustalxColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz_prepareFields (c$, function () {
+this.conses =  new Array (32);
+});
+Clazz_makeConstructor (c$, 
+function (alignment, hiddenReps) {
+Clazz_superConstructor (this, jalview.schemes.ClustalxColourScheme, []);
+this.alignmentChanged (alignment, hiddenReps);
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+Clazz_overrideMethod (c$, "alignmentChanged", 
+function (alignment, hiddenReps) {
+var maxWidth = alignment.getWidth ();
+var seqs = alignment.getSequences (hiddenReps);
+this.cons2 =  Clazz_newIntArray (maxWidth, 24, 0);
+this.includeGaps = this.isIncludeGaps ();
+var start = 0;
+for (var j = 0; j < 24; j++) {
+for (var i = 0; i < maxWidth; i++) {
+this.cons2[i][j] = 0;
+}
+}
+var res;
+var i;
+var j = 0;
+var seq;
+for (var sq, $sq = seqs.iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+seq = sq.getSequence ();
+var end_j = seq.length - 1;
+for (i = start; i <= end_j; i++) {
+if ((seq.length - 1) < i) {
+res = 23;
+} else {
+res = jalview.schemes.ResidueProperties.aaIndex[seq[i].charCodeAt (0)];
+}this.cons2[i][res]++;
+}
+j++;
+}
+this.size = seqs.size ();
+this.makeColours ();
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+Clazz_defineMethod (c$, "makeColours", 
+function () {
+this.conses[0] =  new jalview.schemes.Consensus ("WLVIMAFCYHP", 60);
+this.conses[1] =  new jalview.schemes.Consensus ("WLVIMAFCYHP", 80);
+this.conses[2] =  new jalview.schemes.Consensus ("ED", 50);
+this.conses[3] =  new jalview.schemes.Consensus ("KR", 60);
+this.conses[4] =  new jalview.schemes.Consensus ("G", 50);
+this.conses[5] =  new jalview.schemes.Consensus ("N", 50);
+this.conses[6] =  new jalview.schemes.Consensus ("QE", 50);
+this.conses[7] =  new jalview.schemes.Consensus ("P", 50);
+this.conses[8] =  new jalview.schemes.Consensus ("TS", 50);
+this.conses[26] =  new jalview.schemes.Consensus ("A", 85);
+this.conses[27] =  new jalview.schemes.Consensus ("C", 85);
+this.conses[10] =  new jalview.schemes.Consensus ("E", 85);
+this.conses[11] =  new jalview.schemes.Consensus ("F", 85);
+this.conses[12] =  new jalview.schemes.Consensus ("G", 85);
+this.conses[13] =  new jalview.schemes.Consensus ("H", 85);
+this.conses[14] =  new jalview.schemes.Consensus ("I", 85);
+this.conses[15] =  new jalview.schemes.Consensus ("L", 85);
+this.conses[16] =  new jalview.schemes.Consensus ("M", 85);
+this.conses[17] =  new jalview.schemes.Consensus ("N", 85);
+this.conses[18] =  new jalview.schemes.Consensus ("P", 85);
+this.conses[19] =  new jalview.schemes.Consensus ("Q", 85);
+this.conses[20] =  new jalview.schemes.Consensus ("R", 85);
+this.conses[21] =  new jalview.schemes.Consensus ("S", 85);
+this.conses[22] =  new jalview.schemes.Consensus ("T", 85);
+this.conses[23] =  new jalview.schemes.Consensus ("V", 85);
+this.conses[24] =  new jalview.schemes.Consensus ("W", 85);
+this.conses[25] =  new jalview.schemes.Consensus ("Y", 85);
+this.conses[28] =  new jalview.schemes.Consensus ("K", 85);
+this.conses[29] =  new jalview.schemes.Consensus ("D", 85);
+this.conses[30] =  new jalview.schemes.Consensus ("G", 0);
+this.conses[31] =  new jalview.schemes.Consensus ("P", 0);
+this.colours =  new Array (11);
+var tmp8 =  new Array (1);
+tmp8[0] = this.conses[30];
+this.colours[7] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.ORANGE), tmp8);
+var tmp9 =  new Array (1);
+tmp9[0] = this.conses[31];
+this.colours[8] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.YELLOW), tmp9);
+var tmp10 =  new Array (1);
+tmp10[0] = this.conses[27];
+this.colours[9] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.PINK), tmp8);
+var tmp1 =  new Array (14);
+tmp1[0] = this.conses[0];
+tmp1[1] = this.conses[1];
+tmp1[2] = this.conses[26];
+tmp1[3] = this.conses[27];
+tmp1[4] = this.conses[11];
+tmp1[5] = this.conses[13];
+tmp1[6] = this.conses[14];
+tmp1[7] = this.conses[15];
+tmp1[8] = this.conses[16];
+tmp1[9] = this.conses[23];
+tmp1[10] = this.conses[24];
+tmp1[11] = this.conses[25];
+tmp1[12] = this.conses[18];
+tmp1[13] = this.conses[19];
+this.colours[0] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.BLUE), tmp1);
+this.colours[10] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.CYAN), tmp1);
+var tmp2 =  new Array (5);
+tmp2[0] = this.conses[8];
+tmp2[1] = this.conses[21];
+tmp2[2] = this.conses[22];
+tmp2[3] = this.conses[0];
+tmp2[4] = this.conses[1];
+this.colours[1] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.GREEN), tmp2);
+var tmp3 =  new Array (3);
+tmp3[0] = this.conses[17];
+tmp3[1] = this.conses[29];
+tmp3[2] = this.conses[5];
+this.colours[2] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.GREEN), tmp3);
+var tmp4 =  new Array (6);
+tmp4[0] = this.conses[6];
+tmp4[1] = this.conses[19];
+tmp4[2] = this.conses[22];
+tmp4[3] = this.conses[3];
+tmp4[4] = this.conses[28];
+tmp4[5] = this.conses[20];
+this.colours[3] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.GREEN), tmp4);
+var tmp5 =  new Array (4);
+tmp5[0] = this.conses[3];
+tmp5[1] = this.conses[28];
+tmp5[2] = this.conses[20];
+tmp5[3] = this.conses[19];
+this.colours[4] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.RED), tmp5);
+var tmp6 =  new Array (6);
+tmp6[0] = this.conses[3];
+tmp6[1] = this.conses[29];
+tmp6[2] = this.conses[10];
+tmp6[3] = this.conses[6];
+tmp6[4] = this.conses[19];
+tmp6[5] = this.conses[2];
+this.colours[5] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.MAGENTA), tmp6);
+var tmp7 =  new Array (5);
+tmp7[0] = this.conses[3];
+tmp7[1] = this.conses[29];
+tmp7[2] = this.conses[10];
+tmp7[3] = this.conses[17];
+tmp7[4] = this.conses[2];
+this.colours[6] =  new jalview.schemes.ConsensusColour (jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.MAGENTA), tmp7);
+this.residueColour =  new Array (20);
+this.residueColour[0] = this.colours[0];
+this.residueColour[1] = this.colours[4];
+this.residueColour[2] = this.colours[2];
+this.residueColour[3] = this.colours[6];
+this.residueColour[4] = this.colours[0];
+this.residueColour[5] = this.colours[3];
+this.residueColour[6] = this.colours[5];
+this.residueColour[7] = this.colours[7];
+this.residueColour[8] = this.colours[10];
+this.residueColour[9] = this.colours[0];
+this.residueColour[10] = this.colours[0];
+this.residueColour[11] = this.colours[4];
+this.residueColour[12] = this.colours[0];
+this.residueColour[13] = this.colours[0];
+this.residueColour[14] = this.colours[8];
+this.residueColour[15] = this.colours[1];
+this.residueColour[16] = this.colours[1];
+this.residueColour[17] = this.colours[0];
+this.residueColour[18] = this.colours[10];
+this.residueColour[19] = this.colours[0];
+});
+Clazz_overrideMethod (c$, "findColour", 
+function (c) {
+return java.awt.Color.pink;
+}, "~S");
+Clazz_overrideMethod (c$, "findColourSeq", 
+function (c, j, seq) {
+var currentColour;
+if (this.cons2.length <= j || (this.includeGaps && this.threshold != 0 && !this.aboveThreshold (c, j))) {
+return java.awt.Color.white;
+}var i = jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt (0)];
+currentColour = java.awt.Color.white;
+if (i > 19) {
+return currentColour;
+}for (var k = 0; k < this.residueColour[i].conses.length; k++) {
+if (this.residueColour[i].conses[k].isConserved (this.cons2, j, this.size, this.includeGaps)) {
+currentColour = this.residueColour[i].c;
+}}
+if (i == 4) {
+if (this.conses[27].isConserved (this.cons2, j, this.size, this.includeGaps)) {
+currentColour = jalview.schemes.ClustalxColourScheme.colhash.get (java.awt.Color.PINK);
+}}if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "isIncludeGaps", 
+function () {
+return this.includeGaps;
+});
+Clazz_defineMethod (c$, "setIncludeGaps", 
+function (includeGaps) {
+this.includeGaps = includeGaps;
+}, "~B");
+Clazz_overrideMethod (c$, "applyTo", 
+function (sg, hiddenRepSequences) {
+var css =  new jalview.schemes.ClustalxColourScheme (sg, hiddenRepSequences);
+css.includeGaps = this.includeGaps;
+return css;
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+Clazz_defineStatics (c$,
+"EIGHTY_FIVE", 85,
+"FIFTY", 50,
+"EIGHTY", 80,
+"SIXTY", 60);
+c$.colhash = c$.prototype.colhash =  new java.util.HashMap ();
+{
+jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.RED,  new java.awt.Color (0.9, 0.2, 0.1));
+jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.BLUE,  new java.awt.Color (0.5, 0.7, 0.9));
+jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.GREEN,  new java.awt.Color (0.1, 0.8, 0.1));
+jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.ORANGE,  new java.awt.Color (0.9, 0.6, 0.3));
+jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.CYAN,  new java.awt.Color (0.1, 0.7, 0.7));
+jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.PINK,  new java.awt.Color (0.9, 0.5, 0.5));
+jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.MAGENTA,  new java.awt.Color (0.8, 0.3, 0.8));
+jalview.schemes.ClustalxColourScheme.colhash.put (java.awt.Color.YELLOW,  new java.awt.Color (0.8, 0.8, 0.0));
+}c$ = Clazz_decorateAsClass (function () {
+this.conses = null;
+this.c = null;
+Clazz_instantialize (this, arguments);
+}, jalview.schemes, "ConsensusColour");
+Clazz_makeConstructor (c$, 
+function (c, conses) {
+this.conses = conses;
+this.c = c;
+}, "java.awt.Color,~A");
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (null, "jalview.schemes.Consensus", ["jalview.schemes.ResidueProperties"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.mask = null;
+this.threshold = 0;
+this.maskstr = null;
+Clazz_instantialize (this, arguments);
+}, jalview.schemes, "Consensus");
+Clazz_makeConstructor (c$, 
+function (mask, threshold) {
+this.maskstr = mask;
+this.setMask (mask);
+this.threshold = threshold;
+}, "~S,~N");
+Clazz_defineMethod (c$, "setMask", 
+function (s) {
+this.mask = this.setNums (s);
+}, "~S");
+Clazz_defineMethod (c$, "isConserved", 
+function (cons2, col, size) {
+return this.isConserved (cons2, col, size, true);
+}, "~A,~N,~N");
+Clazz_defineMethod (c$, "isConserved", 
+function (cons2, col, size, includeGaps) {
+var tot = 0;
+if (!includeGaps) {
+size -= cons2[col][cons2[col].length - 1];
+}for (var i = 0; i < this.mask.length; i++) {
+tot += cons2[col][this.mask[i]];
+}
+if (tot > ((this.threshold * size) / 100)) {
+return true;
+}return false;
+}, "~A,~N,~N,~B");
+Clazz_defineMethod (c$, "setNums", 
+function (s) {
+var out =  Clazz_newIntArray (s.length, 0);
+var i = 0;
+while (i < s.length) {
+out[i] = jalview.schemes.ResidueProperties.aaIndex[s.charCodeAt (i)];
+i++;
+}
+return out;
+}, "~S");
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ScoreColourScheme"], "jalview.schemes.HelixColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {
+c$ = Clazz_declareType (jalview.schemes, "HelixColourScheme", jalview.schemes.ScoreColourScheme);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.schemes.HelixColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.helix, 0.57, 1.51]);
+});
+Clazz_overrideMethod (c$, "makeColour", 
+function (c) {
+return  new java.awt.Color (c, 1.0 - c, c);
+}, "~N");
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ScoreColourScheme"], "jalview.schemes.HydrophobicColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {
+c$ = Clazz_declareType (jalview.schemes, "HydrophobicColourScheme", jalview.schemes.ScoreColourScheme);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.schemes.HydrophobicColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.hyd, -3.9, 4.5]);
+});
+Clazz_overrideMethod (c$, "makeColour", 
+function (c) {
+return  new java.awt.Color (c, 0.0, 1.0 - c);
+}, "~N");
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.NucleotideColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {
+c$ = Clazz_declareType (jalview.schemes, "NucleotideColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.schemes.NucleotideColourScheme, [jalview.schemes.ResidueProperties.nucleotideIndex, jalview.schemes.ResidueProperties.nucleotide, 0]);
+});
+Clazz_overrideMethod (c$, "findColour", 
+function (c) {
+return this.colors[jalview.schemes.ResidueProperties.nucleotideIndex[c.charCodeAt (0)]];
+}, "~S");
+Clazz_overrideMethod (c$, "findColourSeq", 
+function (c, j, seq) {
+var currentColour;
+if ((this.threshold == 0) || this.aboveThreshold (c, j)) {
+try {
+currentColour = this.colors[jalview.schemes.ResidueProperties.nucleotideIndex[c.charCodeAt (0)]];
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+return java.awt.Color.white;
+} else {
+throw ex;
+}
+}
+} else {
+return java.awt.Color.white;
+}if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.PurinePyrimidineColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {
+c$ = Clazz_declareType (jalview.schemes, "PurinePyrimidineColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.schemes.PurinePyrimidineColourScheme, [jalview.schemes.ResidueProperties.purinepyrimidineIndex, jalview.schemes.ResidueProperties.purinepyrimidine, 0]);
+});
+Clazz_defineMethod (c$, "findColour", 
+function (c) {
+return this.colors[jalview.schemes.ResidueProperties.purinepyrimidineIndex[c.charCodeAt (0)]];
+}, "~S");
+Clazz_defineMethod (c$, "findColour", 
+function (c, j) {
+var currentColour;
+if ((this.threshold == 0) || this.aboveThreshold (c, j)) {
+try {
+currentColour = this.colors[jalview.schemes.ResidueProperties.purinepyrimidineIndex[c.charCodeAt (0)]];
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+return java.awt.Color.white;
+} else {
+throw ex;
+}
+}
+} else {
+return java.awt.Color.white;
+}if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}return currentColour;
+}, "~S,~N");
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ResidueColourScheme", "java.util.Hashtable"], "jalview.schemes.RNAHelicesColour", ["jalview.schemes.ResidueProperties", "jalview.util.ColorUtils", "java.awt.Color"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.helixcolorhash = null;
+this.positionsToHelix = null;
+this.numHelix = 0;
+this.annotation = null;
+this.lastrefresh = -1;
+Clazz_instantialize (this, arguments);
+}, jalview.schemes, "RNAHelicesColour", jalview.schemes.ResidueColourScheme);
+Clazz_prepareFields (c$, function () {
+this.helixcolorhash =  new java.util.Hashtable ();
+this.positionsToHelix =  new java.util.Hashtable ();
+});
+Clazz_makeConstructor (c$, 
+function (annotation) {
+Clazz_superConstructor (this, jalview.schemes.RNAHelicesColour, [jalview.schemes.ResidueProperties.nucleotideIndex]);
+this.annotation = annotation;
+this.refresh ();
+}, "jalview.datamodel.AlignmentAnnotation");
+Clazz_makeConstructor (c$, 
+function (alignment) {
+Clazz_superConstructor (this, jalview.schemes.RNAHelicesColour, [jalview.schemes.ResidueProperties.nucleotideIndex]);
+this.alignmentChanged (alignment, null);
+}, "jalview.datamodel.AnnotatedCollectionI");
+Clazz_overrideMethod (c$, "alignmentChanged", 
+function (alignment, hiddenReps) {
+var annotations = alignment.getAlignmentAnnotation ();
+for (var i = 0; i < annotations.length; i++) {
+if (annotations[i].getRNAStruc () != null) {
+this.annotation = annotations[i];
+break;
+}}
+this.refresh ();
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+Clazz_defineMethod (c$, "refresh", 
+function () {
+if (this.annotation != null && ((this.annotation._rnasecstr == null || this.lastrefresh != this.annotation._rnasecstr.hashCode ()) && this.annotation.isValidStruc ())) {
+this.annotation.getRNAStruc ();
+this.lastrefresh = this.annotation._rnasecstr.hashCode ();
+this.numHelix = 0;
+this.positionsToHelix =  new java.util.Hashtable ();
+for (var x = 0; x < this.annotation._rnasecstr.length; x++) {
+this.positionsToHelix.put (new Integer (this.annotation._rnasecstr[x].getBegin ()), this.annotation._rnasecstr[x].getFeatureGroup ());
+this.positionsToHelix.put (new Integer (this.annotation._rnasecstr[x].getEnd ()), this.annotation._rnasecstr[x].getFeatureGroup ());
+if (Integer.parseInt (this.annotation._rnasecstr[x].getFeatureGroup ()) > this.numHelix) {
+this.numHelix = Integer.parseInt (this.annotation._rnasecstr[x].getFeatureGroup ());
+}}
+for (var j = 0; j <= this.numHelix; j++) {
+if (!this.helixcolorhash.containsKey (Integer.toString (j))) {
+this.helixcolorhash.put (Integer.toString (j), jalview.util.ColorUtils.generateRandomColor (java.awt.Color.white));
+}}
+}});
+Clazz_overrideMethod (c$, "findColour", 
+function (c) {
+return jalview.schemes.ResidueProperties.purinepyrimidine[jalview.schemes.ResidueProperties.purinepyrimidineIndex[c.charCodeAt (0)]];
+}, "~S");
+Clazz_overrideMethod (c$, "findColourSeq", 
+function (c, j, seq) {
+this.refresh ();
+var currentColour = java.awt.Color.white;
+var currentHelix = null;
+currentHelix = this.positionsToHelix.get (new Integer (j));
+if (currentHelix != null) {
+currentColour = this.helixcolorhash.get (currentHelix);
+}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+});
+Clazz_declarePackage ("jalview.util");
+Clazz_load (null, "jalview.util.ColorUtils", ["java.awt.Color", "java.util.Random"], function () {
+c$ = Clazz_declareType (jalview.util, "ColorUtils");
+c$.generateRandomColor = Clazz_defineMethod (c$, "generateRandomColor", 
+function (mix) {
+var random =  new java.util.Random ();
+var red = random.nextInt (256);
+var green = random.nextInt (256);
+var blue = random.nextInt (256);
+if (mix != null) {
+red = Clazz_doubleToInt ((red + mix.getRed ()) / 2);
+green = Clazz_doubleToInt ((green + mix.getGreen ()) / 2);
+blue = Clazz_doubleToInt ((blue + mix.getBlue ()) / 2);
+}var color =  new java.awt.Color (red, green, blue);
+return color;
+}, "java.awt.Color");
+c$.toTkCode = Clazz_defineMethod (c$, "toTkCode", 
+function (colour) {
+var colstring = "#" + ((colour.getRed () < 16) ? "0" : "") + Integer.toHexString (colour.getRed ()) + ((colour.getGreen () < 16) ? "0" : "") + Integer.toHexString (colour.getGreen ()) + ((colour.getBlue () < 16) ? "0" : "") + Integer.toHexString (colour.getBlue ());
+return colstring;
+}, "java.awt.Color");
+c$.darkerThan = Clazz_defineMethod (c$, "darkerThan", 
+function (col) {
+return col == null ? null : col.darker ().darker ().darker ();
+}, "java.awt.Color");
+c$.brighterThan = Clazz_defineMethod (c$, "brighterThan", 
+function (col) {
+return col == null ? null : col.brighter ().brighter ().brighter ();
+}, "java.awt.Color");
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ScoreColourScheme"], "jalview.schemes.StrandColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {
+c$ = Clazz_declareType (jalview.schemes, "StrandColourScheme", jalview.schemes.ScoreColourScheme);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.schemes.StrandColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.strand, 0.37, 1.7]);
+});
+Clazz_overrideMethod (c$, "makeColour", 
+function (c) {
+return  new java.awt.Color (c, c, 1.0 - c);
+}, "~N");
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ResidueColourScheme", "java.awt.Color"], "jalview.schemes.TCoffeeColourScheme", ["jalview.datamodel.AlignmentI", "java.util.ArrayList", "$.IdentityHashMap"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.seqMap = null;
+Clazz_instantialize (this, arguments);
+}, jalview.schemes, "TCoffeeColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz_makeConstructor (c$, 
+function (alignment) {
+Clazz_superConstructor (this, jalview.schemes.TCoffeeColourScheme, []);
+this.alignmentChanged (alignment, null);
+}, "jalview.datamodel.AnnotatedCollectionI");
+Clazz_overrideMethod (c$, "alignmentChanged", 
+function (alignment, hiddenReps) {
+var annots =  new java.util.ArrayList ();
+this.seqMap =  new java.util.IdentityHashMap ();
+var alcontext = Clazz_instanceOf (alignment, jalview.datamodel.AlignmentI) ? alignment : alignment.getContext ();
+var w = 0;
+for (var al, $al = alcontext.findAnnotation ("TCoffeeScore").iterator (); $al.hasNext () && ((al = $al.next ()) || true);) {
+if (al.sequenceRef != null && !al.belowAlignment) {
+annots.add (al);
+if (w < al.annotations.length) {
+w = al.annotations.length;
+}var scores =  new Array (al.annotations.length);
+var i = 0;
+for (var an, $an = 0, $$an = al.annotations; $an < $$an.length && ((an = $$an[$an]) || true); $an++) {
+scores[i++] = (an != null) ? an.colour : java.awt.Color.white;
+}
+this.seqMap.put (al.sequenceRef, scores);
+}}
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+Clazz_overrideMethod (c$, "findColourSeq", 
+function (c, j, seq) {
+var cols;
+if (this.seqMap == null || (cols = this.seqMap.get (seq)) == null) {
+return java.awt.Color.white;
+}if (j < 0 || j >= cols.length) {
+return java.awt.Color.white;
+}return cols[j];
+}, "~S,~N,jalview.datamodel.SequenceI");
+Clazz_overrideMethod (c$, "applyTo", 
+function (sg, hiddenRepSequences) {
+return  new jalview.schemes.TCoffeeColourScheme (sg);
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+c$.$colors = c$.prototype.$colors =  Clazz_newArray (-1, [ new java.awt.Color (102, 102, 255),  new java.awt.Color (0, 255, 0),  new java.awt.Color (102, 255, 0),  new java.awt.Color (204, 255, 0),  new java.awt.Color (255, 255, 0),  new java.awt.Color (255, 204, 0),  new java.awt.Color (255, 153, 0),  new java.awt.Color (255, 102, 0),  new java.awt.Color (255, 51, 0),  new java.awt.Color (255, 34, 0)]);
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.TaylorColourScheme", ["jalview.schemes.ResidueProperties"], function () {
+c$ = Clazz_declareType (jalview.schemes, "TaylorColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.schemes.TaylorColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.taylor, 0]);
+});
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ScoreColourScheme"], "jalview.schemes.TurnColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {
+c$ = Clazz_declareType (jalview.schemes, "TurnColourScheme", jalview.schemes.ScoreColourScheme);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.schemes.TurnColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.turn, 0.47, 1.56]);
+});
+Clazz_overrideMethod (c$, "makeColour", 
+function (c) {
+return  new java.awt.Color (c, 1 - c, 1 - c);
+}, "~N");
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.UserColourScheme", ["jalview.schemes.ColourSchemeProperty", "$.ResidueProperties", "java.awt.Color", "java.util.StringTokenizer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.lowerCaseColours = null;
+this.schemeName = null;
+Clazz_instantialize (this, arguments);
+}, jalview.schemes, "UserColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.schemes.UserColourScheme, [jalview.schemes.ResidueProperties.aaIndex]);
+});
+Clazz_makeConstructor (c$, 
+function (newColors) {
+Clazz_superConstructor (this, jalview.schemes.UserColourScheme, [jalview.schemes.ResidueProperties.aaIndex]);
+this.colors = newColors;
+}, "~A");
+Clazz_overrideMethod (c$, "applyTo", 
+function (sg, hiddenRepSequences) {
+var usc =  new jalview.schemes.UserColourScheme (this.colors);
+if (this.lowerCaseColours != null) {
+usc.schemeName =  String.instantialize (this.schemeName);
+usc.lowerCaseColours =  new Array (this.lowerCaseColours.length);
+System.arraycopy (this.lowerCaseColours, 0, usc.lowerCaseColours, 0, this.lowerCaseColours.length);
+}return usc;
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+Clazz_makeConstructor (c$, 
+function (colour) {
+Clazz_superConstructor (this, jalview.schemes.UserColourScheme, [jalview.schemes.ResidueProperties.aaIndex]);
+var col = this.getColourFromString (colour);
+if (col == null) {
+System.out.println ("Unknown colour!! " + colour);
+col = this.createColourFromName (colour);
+}this.colors =  new Array (24);
+for (var i = 0; i < 24; i++) {
+this.colors[i] = col;
+}
+this.schemeName = colour;
+}, "~S");
+Clazz_defineMethod (c$, "getColours", 
+function () {
+return this.colors;
+});
+Clazz_defineMethod (c$, "getLowerCaseColours", 
+function () {
+return this.lowerCaseColours;
+});
+Clazz_defineMethod (c$, "setName", 
+function (name) {
+this.schemeName = name;
+}, "~S");
+Clazz_defineMethod (c$, "getName", 
+function () {
+return this.schemeName;
+});
+Clazz_defineMethod (c$, "getColourFromString", 
+function (colour) {
+colour = colour.trim ();
+var col = null;
+try {
+var value = Integer.parseInt (colour, 16);
+col =  new java.awt.Color (value);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+if (col == null) {
+col = jalview.schemes.ColourSchemeProperty.getAWTColorFromName (colour);
+}if (col == null) {
+try {
+var st =  new java.util.StringTokenizer (colour, ",");
+var r = Integer.parseInt (st.nextToken ());
+var g = Integer.parseInt (st.nextToken ());
+var b = Integer.parseInt (st.nextToken ());
+col =  new java.awt.Color (r, g, b);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}return col;
+}, "~S");
+Clazz_defineMethod (c$, "createColourFromName", 
+function (name) {
+var r;
+var g;
+var b;
+var lsize = name.length;
+var start = 0;
+var end = Clazz_doubleToInt (lsize / 3);
+var rgbOffset = Math.abs (name.hashCode () % 10) * 15;
+r = Math.abs (name.substring (start, end).hashCode () + rgbOffset) % 210 + 20;
+start = end;
+end += Clazz_doubleToInt (lsize / 3);
+if (end > lsize) {
+end = lsize;
+}g = Math.abs (name.substring (start, end).hashCode () + rgbOffset) % 210 + 20;
+b = Math.abs (name.substring (end).hashCode () + rgbOffset) % 210 + 20;
+var color =  new java.awt.Color (r, g, b);
+return color;
+}, "~S");
+Clazz_defineMethod (c$, "parseAppletParameter", 
+function (paramValue) {
+var st =  new java.util.StringTokenizer (paramValue, ";");
+var st2;
+var token = null;
+var colour;
+var residues;
+try {
+while (st.hasMoreElements ()) {
+token = st.nextToken ().trim ();
+residues = token.substring (0, token.indexOf ("="));
+colour = token.substring (token.indexOf ("=") + 1);
+st2 =  new java.util.StringTokenizer (residues, " ,");
+while (st2.hasMoreTokens ()) {
+token = st2.nextToken ();
+if (jalview.schemes.ResidueProperties.aaIndex[token.charCodeAt (0)] == -1) {
+continue;
+}var colIndex = jalview.schemes.ResidueProperties.aaIndex[token.charCodeAt (0)];
+if (token.equalsIgnoreCase ("lowerCase")) {
+if (this.lowerCaseColours == null) {
+this.lowerCaseColours =  new Array (23);
+}for (var i = 0; i < 23; i++) {
+if (this.lowerCaseColours[i] == null) {
+this.lowerCaseColours[i] = this.getColourFromString (colour);
+}}
+continue;
+}if (token.equals (token.toLowerCase ())) {
+if (this.lowerCaseColours == null) {
+this.lowerCaseColours =  new Array (23);
+}this.lowerCaseColours[colIndex] = this.getColourFromString (colour);
+} else {
+this.colors[colIndex] = this.getColourFromString (colour);
+}}
+}
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+System.out.println ("Error parsing userDefinedColours:\n" + token + "\n" + ex);
+} else {
+throw ex;
+}
+}
+}, "~S");
+Clazz_overrideMethod (c$, "findColourSeq", 
+function (c, j, seq) {
+var currentColour;
+var index = jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt (0)];
+if ((this.threshold == 0) || this.aboveThreshold (c, j)) {
+if (this.lowerCaseColours != null && 'a' <= c && c <= 'z') {
+currentColour = this.lowerCaseColours[index];
+} else {
+currentColour = this.colors[index];
+}} else {
+currentColour = java.awt.Color.white;
+}if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "setLowerCaseColours", 
+function (lcolours) {
+this.lowerCaseColours = lcolours;
+}, "~A");
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.ZappoColourScheme", ["jalview.schemes.ResidueProperties"], function () {
+c$ = Clazz_declareType (jalview.schemes, "ZappoColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.schemes.ZappoColourScheme, [jalview.schemes.ResidueProperties.aaIndex, jalview.schemes.ResidueProperties.zappo, 0]);
+});
+});
+Clazz_declarePackage ("jalview.structure");
+Clazz_load (["java.util.ArrayList", "$.HashMap", "$.LinkedHashSet", "$.Vector"], "jalview.structure.StructureSelectionManager", ["MCview.PDBfile", "jalview.analysis.AlignSeq", "jalview.commands.EditCommand", "$.OrderCommand", "jalview.datamodel.Mapping", "$.SearchResults", "jalview.io.AppletFormatAdapter", "jalview.structure.AtomSpec", "$.SecondaryStructureListener", "$.SequenceListener", "$.StructureListener", "$.StructureMapping", "$.VamsasListener", "jalview.util.MappingUtils", "$.MessageManager", "java.lang.Error", "$.NullPointerException", "$.StringBuilder", "java.util.Arrays", "$.Collections", "$.IdentityHashMap"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.mappings = null;
+this.processSecondaryStructure = false;
+this.secStructServices = false;
+this.addTempFacAnnot = false;
+this.seqmappings = null;
+this.seqMappingRefCounts = null;
+this.commandListeners = null;
+this.sel_listeners = null;
+this.pdbIdFileName = null;
+this.pdbFileNameId = null;
+this.relaySeqMappings = true;
+this.listeners = null;
+this.handlingVamsasMo = false;
+this.lastmsg = 0;
+this.view_listeners = null;
+Clazz_instantialize (this, arguments);
+}, jalview.structure, "StructureSelectionManager");
+Clazz_prepareFields (c$, function () {
+this.mappings =  new java.util.ArrayList ();
+this.seqmappings =  new java.util.LinkedHashSet ();
+this.seqMappingRefCounts =  new java.util.HashMap ();
+this.commandListeners =  new java.util.ArrayList ();
+this.sel_listeners =  new java.util.ArrayList ();
+this.pdbIdFileName =  new java.util.HashMap ();
+this.pdbFileNameId =  new java.util.HashMap ();
+this.listeners =  new java.util.Vector ();
+this.view_listeners =  new java.util.Vector ();
+});
+Clazz_defineMethod (c$, "isSecStructServices", 
+function () {
+return this.secStructServices;
+});
+Clazz_defineMethod (c$, "setSecStructServices", 
+function (secStructServices) {
+this.secStructServices = secStructServices;
+}, "~B");
+Clazz_defineMethod (c$, "isAddTempFacAnnot", 
+function () {
+return this.addTempFacAnnot;
+});
+Clazz_defineMethod (c$, "setAddTempFacAnnot", 
+function (addTempFacAnnot) {
+this.addTempFacAnnot = addTempFacAnnot;
+}, "~B");
+Clazz_defineMethod (c$, "isProcessSecondaryStructure", 
+function () {
+return this.processSecondaryStructure;
+});
+Clazz_defineMethod (c$, "setProcessSecondaryStructure", 
+function (enable) {
+this.processSecondaryStructure = enable;
+}, "~B");
+Clazz_defineMethod (c$, "reportMapping", 
+function () {
+if (this.mappings.isEmpty ()) {
+System.err.println ("reportMapping: No PDB/Sequence mappings.");
+} else {
+System.err.println ("reportMapping: There are " + this.mappings.size () + " mappings.");
+var i = 0;
+for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {
+System.err.println ("mapping " + i++ + " : " + sm.pdbfile);
+}
+}});
+Clazz_defineMethod (c$, "registerPDBFile", 
+function (idForFile, absoluteFile) {
+this.pdbIdFileName.put (idForFile, absoluteFile);
+this.pdbFileNameId.put (absoluteFile, idForFile);
+}, "~S,~S");
+Clazz_defineMethod (c$, "findIdForPDBFile", 
+function (idOrFile) {
+var id = this.pdbFileNameId.get (idOrFile);
+return id;
+}, "~S");
+Clazz_defineMethod (c$, "findFileForPDBId", 
+function (idOrFile) {
+var id = this.pdbIdFileName.get (idOrFile);
+return id;
+}, "~S");
+Clazz_defineMethod (c$, "isPDBFileRegistered", 
+function (idOrFile) {
+return this.pdbFileNameId.containsKey (idOrFile) || this.pdbIdFileName.containsKey (idOrFile);
+}, "~S");
+c$.getStructureSelectionManager = Clazz_defineMethod (c$, "getStructureSelectionManager", 
+function (context) {
+if (context == null) {
+if (jalview.structure.StructureSelectionManager.nullProvider == null) {
+if (jalview.structure.StructureSelectionManager.instances != null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_structure_selection_manager_null"),  new NullPointerException (jalview.util.MessageManager.getString ("exception.ssm_context_is_null")));
+} else {
+jalview.structure.StructureSelectionManager.nullProvider =  new jalview.structure.StructureSelectionManager ();
+}return jalview.structure.StructureSelectionManager.nullProvider;
+}}if (jalview.structure.StructureSelectionManager.instances == null) {
+jalview.structure.StructureSelectionManager.instances =  new java.util.IdentityHashMap ();
+}var instance = jalview.structure.StructureSelectionManager.instances.get (context);
+if (instance == null) {
+if (jalview.structure.StructureSelectionManager.nullProvider != null) {
+instance = jalview.structure.StructureSelectionManager.nullProvider;
+} else {
+instance =  new jalview.structure.StructureSelectionManager ();
+}jalview.structure.StructureSelectionManager.instances.put (context, instance);
+}return instance;
+}, "jalview.api.StructureSelectionManagerProvider");
+Clazz_defineMethod (c$, "setRelaySeqMappings", 
+function (relay) {
+this.relaySeqMappings = relay;
+}, "~B");
+Clazz_defineMethod (c$, "isRelaySeqMappingsEnabled", 
+function () {
+return this.relaySeqMappings;
+});
+Clazz_defineMethod (c$, "addStructureViewerListener", 
+function (svl) {
+if (!this.listeners.contains (svl)) {
+this.listeners.addElement (svl);
+}}, "~O");
+Clazz_defineMethod (c$, "alreadyMappedToFile", 
+function (pdbid) {
+for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {
+if (sm.getPdbId ().equals (pdbid)) {
+return sm.pdbfile;
+}}
+return null;
+}, "~S");
+Clazz_defineMethod (c$, "setMapping", 
+function (sequence, targetChains, pdbFile, protocol) {
+return this.setMapping (true, sequence, targetChains, pdbFile, protocol);
+}, "~A,~A,~S,~S");
+Clazz_defineMethod (c$, "setMapping", 
+function (forStructureView, sequence, targetChains, pdbFile, protocol) {
+var parseSecStr = this.processSecondaryStructure;
+if (this.isPDBFileRegistered (pdbFile)) {
+for (var sq, $sq = 0, $$sq = sequence; $sq < $$sq.length && ((sq = $$sq[$sq]) || true); $sq++) {
+var ds = sq;
+while (ds.getDatasetSequence () != null) {
+ds = ds.getDatasetSequence ();
+}
+;if (ds.getAnnotation () != null) {
+for (var ala, $ala = 0, $$ala = ds.getAnnotation (); $ala < $$ala.length && ((ala = $$ala[$ala]) || true); $ala++) {
+if (MCview.PDBfile.isCalcIdForFile (ala, this.findIdForPDBFile (pdbFile))) {
+parseSecStr = false;
+}}
+}}
+}var pdb = null;
+try {
+pdb =  new MCview.PDBfile (this.addTempFacAnnot, parseSecStr, this.secStructServices, pdbFile, protocol);
+if (pdb.id != null && pdb.id.trim ().length > 0 && jalview.io.AppletFormatAdapter.FILE.equals (protocol)) {
+this.registerPDBFile (pdb.id.trim (), pdbFile);
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+return null;
+} else {
+throw ex;
+}
+}
+var targetChain;
+for (var s = 0; s < sequence.length; s++) {
+var infChain = true;
+var seq = sequence[s];
+if (targetChains != null && targetChains[s] != null) {
+infChain = false;
+targetChain = targetChains[s];
+} else if (seq.getName ().indexOf ("|") > -1) {
+targetChain = seq.getName ().substring (seq.getName ().lastIndexOf ("|") + 1);
+if (targetChain.length > 1) {
+if (targetChain.trim ().length == 0) {
+targetChain = " ";
+} else {
+targetChain = "";
+}}} else {
+targetChain = "";
+}var max = -10;
+var maxAlignseq = null;
+var maxChainId = " ";
+var maxChain = null;
+var first = true;
+for (var chain, $chain = pdb.chains.iterator (); $chain.hasNext () && ((chain = $chain.next ()) || true);) {
+if (targetChain.length > 0 && !targetChain.equals (chain.id) && !infChain) {
+continue;
+}var type = chain.isNa ? "dna" : "pep";
+var as = jalview.analysis.AlignSeq.doGlobalNWAlignment (seq, chain.sequence, type);
+if (first || as.maxscore > max || (as.maxscore == max && chain.id.equals (targetChain))) {
+first = false;
+maxChain = chain;
+max = as.maxscore;
+maxAlignseq = as;
+maxChainId = chain.id;
+}}
+if (maxChain == null) {
+continue;
+}var mappingDetails =  new StringBuilder (128);
+mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE).append ("PDB Sequence is :").append (jalview.structure.StructureSelectionManager.NEWLINE).append ("Sequence = ").append (maxChain.sequence.getSequenceAsString ());
+mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE).append ("No of residues = ").append (maxChain.residues.size ()).append (jalview.structure.StructureSelectionManager.NEWLINE).append (jalview.structure.StructureSelectionManager.NEWLINE);
+var ps = ((Clazz_isClassDefined ("jalview.structure.StructureSelectionManager$1") ? 0 : jalview.structure.StructureSelectionManager.$StructureSelectionManager$1$ ()), Clazz_innerTypeInstance (jalview.structure.StructureSelectionManager$1, this, Clazz_cloneFinals ("mappingDetails", mappingDetails), System.out));
+maxAlignseq.printAlignment (ps);
+mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE).append ("PDB start/end ");
+mappingDetails.append (String.valueOf (maxAlignseq.seq2start)).append (" ");
+mappingDetails.append (String.valueOf (maxAlignseq.seq2end));
+mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE).append ("SEQ start/end ");
+mappingDetails.append (String.valueOf (maxAlignseq.seq1start + seq.getStart () - 1)).append (" ");
+mappingDetails.append (String.valueOf (maxAlignseq.seq1end + seq.getEnd () - 1));
+maxChain.makeExactMapping (maxAlignseq, seq);
+var sqmpping = maxAlignseq.getMappingFromS1 (false);
+var omap =  new jalview.datamodel.Mapping (sqmpping.getMap ().getInverse ());
+maxChain.transferRESNUMFeatures (seq, null);
+var mapping =  Clazz_newIntArray (seq.findPosition (seq.getLength ()) + 2, 2, 0);
+var resNum = -10000;
+var index = 0;
+do {
+var tmp = maxChain.atoms.elementAt (index);
+if (resNum != tmp.resNumber && tmp.alignmentMapping != -1) {
+resNum = tmp.resNumber;
+mapping[tmp.alignmentMapping + 1][0] = tmp.resNumber;
+mapping[tmp.alignmentMapping + 1][1] = tmp.atomIndex;
+}index++;
+} while (index < maxChain.atoms.size ());
+if (protocol.equals (jalview.io.AppletFormatAdapter.PASTE)) {
+pdbFile = "INLINE" + pdb.id;
+}var newMapping =  new jalview.structure.StructureMapping (seq, pdbFile, pdb.id, maxChainId, mapping, mappingDetails.toString ());
+if (forStructureView) {
+this.mappings.add (newMapping);
+}maxChain.transferResidueAnnotation (newMapping, sqmpping);
+}
+return pdb;
+}, "~B,~A,~A,~S,~S");
+Clazz_defineMethod (c$, "removeStructureViewerListener", 
+function (svl, pdbfiles) {
+this.listeners.removeElement (svl);
+if (Clazz_instanceOf (svl, jalview.structure.SequenceListener)) {
+for (var i = 0; i < this.listeners.size (); i++) {
+if (Clazz_instanceOf (this.listeners.elementAt (i), jalview.structure.StructureListener)) {
+(this.listeners.elementAt (i)).releaseReferences (svl);
+}}
+}if (pdbfiles == null) {
+return;
+}var pdbs =  new java.util.ArrayList (java.util.Arrays.asList (pdbfiles));
+var sl;
+for (var i = 0; i < this.listeners.size (); i++) {
+if (Clazz_instanceOf (this.listeners.elementAt (i), jalview.structure.StructureListener)) {
+sl = this.listeners.elementAt (i);
+for (var pdbfile, $pdbfile = 0, $$pdbfile = sl.getPdbFile (); $pdbfile < $$pdbfile.length && ((pdbfile = $$pdbfile[$pdbfile]) || true); $pdbfile++) {
+pdbs.remove (pdbfile);
+}
+}}
+if (pdbs.size () > 0) {
+var tmp =  new java.util.ArrayList ();
+for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {
+if (!pdbs.contains (sm.pdbfile)) {
+tmp.add (sm);
+}}
+this.mappings = tmp;
+}}, "~O,~A");
+Clazz_defineMethod (c$, "mouseOverStructure", 
+function (pdbResNum, chain, pdbfile) {
+var atomSpec =  new jalview.structure.AtomSpec (pdbfile, chain, pdbResNum, 0);
+var atoms = java.util.Collections.singletonList (atomSpec);
+this.mouseOverStructure (atoms);
+}, "~N,~S,~S");
+Clazz_defineMethod (c$, "mouseOverStructure", 
+function (atoms) {
+if (this.listeners == null) {
+return;
+}var hasSequenceListener = false;
+for (var i = 0; i < this.listeners.size (); i++) {
+if (Clazz_instanceOf (this.listeners.elementAt (i), jalview.structure.SequenceListener)) {
+hasSequenceListener = true;
+}}
+if (!hasSequenceListener) {
+return;
+}var results =  new jalview.datamodel.SearchResults ();
+for (var atom, $atom = atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {
+var lastseq = null;
+var lastipos = -1;
+for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {
+if (sm.pdbfile.equals (atom.getPdbFile ()) && sm.pdbchain.equals (atom.getChain ())) {
+var indexpos = sm.getSeqPos (atom.getPdbResNum ());
+if (lastipos != indexpos && lastseq !== sm.sequence) {
+results.addResult (sm.sequence, indexpos, indexpos);
+lastipos = indexpos;
+lastseq = sm.sequence;
+for (var acf, $acf = this.seqmappings.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+acf.markMappedRegion (sm.sequence, indexpos, results);
+}
+}}}
+}
+for (var li, $li = this.listeners.iterator (); $li.hasNext () && ((li = $li.next ()) || true);) {
+if (Clazz_instanceOf (li, jalview.structure.SequenceListener)) {
+(li).highlightSequence (results);
+}}
+}, "java.util.List");
+Clazz_defineMethod (c$, "mouseOverSequence", 
+function (seq, indexpos, index, source) {
+var hasSequenceListeners = this.handlingVamsasMo || !this.seqmappings.isEmpty ();
+var results = null;
+if (index == -1) {
+index = seq.findPosition (indexpos);
+}for (var i = 0; i < this.listeners.size (); i++) {
+var listener = this.listeners.elementAt (i);
+if (listener === source) {
+continue;
+}if (Clazz_instanceOf (listener, jalview.structure.StructureListener)) {
+this.highlightStructure (listener, seq, index);
+} else {
+if (Clazz_instanceOf (listener, jalview.structure.SequenceListener)) {
+var seqListener = listener;
+if (hasSequenceListeners && seqListener.getVamsasSource () !== source) {
+if (this.relaySeqMappings) {
+if (results == null) {
+results = jalview.util.MappingUtils.buildSearchResults (seq, index, this.seqmappings);
+}if (this.handlingVamsasMo) {
+results.addResult (seq, index, index);
+}seqListener.highlightSequence (results);
+}}} else if (Clazz_instanceOf (listener, jalview.structure.VamsasListener) && !this.handlingVamsasMo) {
+(listener).mouseOverSequence (seq, indexpos, source);
+} else if (Clazz_instanceOf (listener, jalview.structure.SecondaryStructureListener)) {
+(listener).mouseOverSequence (seq, indexpos, index);
+}}}
+}, "jalview.datamodel.SequenceI,~N,~N,jalview.structure.VamsasSource");
+Clazz_defineMethod (c$, "highlightStructure", 
+function (sl, seq, index) {
+if (!sl.isListeningFor (seq)) {
+return;
+}var atomNo;
+var atoms =  new java.util.ArrayList ();
+for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {
+if (sm.sequence === seq || sm.sequence === seq.getDatasetSequence ()) {
+atomNo = sm.getAtomNum (index);
+if (atomNo > 0) {
+atoms.add ( new jalview.structure.AtomSpec (sm.pdbfile, sm.pdbchain, sm.getPDBResNum (index), atomNo));
+}}}
+sl.highlightAtoms (atoms);
+}, "jalview.structure.StructureListener,jalview.datamodel.SequenceI,~N");
+Clazz_defineMethod (c$, "mouseOverVamsasSequence", 
+function (sequenceI, position, source) {
+this.handlingVamsasMo = true;
+var msg = sequenceI.hashCode () * (1 + position);
+if (this.lastmsg != msg) {
+this.lastmsg = msg;
+this.mouseOverSequence (sequenceI, position, -1, source);
+}this.handlingVamsasMo = false;
+}, "jalview.datamodel.SequenceI,~N,jalview.structure.VamsasSource");
+Clazz_defineMethod (c$, "colourSequenceFromStructure", 
+function (seq, pdbid) {
+return null;
+}, "jalview.datamodel.SequenceI,~S");
+Clazz_defineMethod (c$, "structureSelectionChanged", 
+function () {
+});
+Clazz_defineMethod (c$, "sequenceSelectionChanged", 
+function () {
+});
+Clazz_defineMethod (c$, "sequenceColoursChanged", 
+function (source) {
+var sl;
+for (var i = 0; i < this.listeners.size (); i++) {
+if (Clazz_instanceOf (this.listeners.elementAt (i), jalview.structure.StructureListener)) {
+sl = this.listeners.elementAt (i);
+sl.updateColours (source);
+}}
+}, "~O");
+Clazz_defineMethod (c$, "getMapping", 
+function (pdbfile) {
+var tmp =  new java.util.ArrayList ();
+for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {
+if (sm.pdbfile.equals (pdbfile)) {
+tmp.add (sm);
+}}
+return tmp.toArray ( new Array (tmp.size ()));
+}, "~S");
+Clazz_defineMethod (c$, "printMappings", 
+function (pdbfile, seqs) {
+if (pdbfile == null || seqs == null || seqs.isEmpty ()) {
+return "";
+}var sb =  new StringBuilder (64);
+for (var sm, $sm = this.mappings.iterator (); $sm.hasNext () && ((sm = $sm.next ()) || true);) {
+if (sm.pdbfile.equals (pdbfile) && seqs.contains (sm.sequence)) {
+sb.append (sm.mappingDetails);
+sb.append (jalview.structure.StructureSelectionManager.NEWLINE);
+sb.append ("=====================");
+sb.append (jalview.structure.StructureSelectionManager.NEWLINE);
+}}
+sb.append (jalview.structure.StructureSelectionManager.NEWLINE);
+return sb.toString ();
+}, "~S,java.util.List");
+Clazz_defineMethod (c$, "removeMappings", 
+function (set) {
+if (set != null) {
+for (var acf, $acf = set.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+this.removeMapping (acf);
+}
+}}, "java.util.Set");
+Clazz_defineMethod (c$, "removeMapping", 
+function (acf) {
+if (acf != null && this.seqmappings.contains (acf)) {
+var count = (this.seqMappingRefCounts.get (acf)).intValue ();
+count--;
+if (count > 0) {
+this.seqMappingRefCounts.put (acf, new Integer (count));
+} else {
+this.seqmappings.remove (acf);
+this.seqMappingRefCounts.remove (acf);
+}}}, "jalview.datamodel.AlignedCodonFrame");
+Clazz_defineMethod (c$, "addMappings", 
+function (set) {
+if (set != null) {
+for (var acf, $acf = set.iterator (); $acf.hasNext () && ((acf = $acf.next ()) || true);) {
+this.addMapping (acf);
+}
+}}, "java.util.Set");
+Clazz_defineMethod (c$, "addMapping", 
+function (acf) {
+if (acf != null) {
+if (this.seqmappings.contains (acf)) {
+this.seqMappingRefCounts.put (acf, new Integer ((this.seqMappingRefCounts.get (acf)).intValue () + 1));
+} else {
+this.seqmappings.add (acf);
+this.seqMappingRefCounts.put (acf, new Integer (1));
+}}}, "jalview.datamodel.AlignedCodonFrame");
+Clazz_defineMethod (c$, "addSelectionListener", 
+function (selecter) {
+if (!this.sel_listeners.contains (selecter)) {
+this.sel_listeners.add (selecter);
+}}, "jalview.structure.SelectionListener");
+Clazz_defineMethod (c$, "removeSelectionListener", 
+function (toremove) {
+if (this.sel_listeners.contains (toremove)) {
+this.sel_listeners.remove (toremove);
+}}, "jalview.structure.SelectionListener");
+Clazz_defineMethod (c$, "sendSelection", 
+function (selection, colsel, source) {
+for (var slis, $slis = this.sel_listeners.iterator (); $slis.hasNext () && ((slis = $slis.next ()) || true);) {
+if (slis !== source) {
+slis.selection (selection, colsel, source);
+}}
+}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");
+Clazz_defineMethod (c$, "sendViewPosition", 
+function (source, startRes, endRes, startSeq, endSeq) {
+if (this.view_listeners != null && this.view_listeners.size () > 0) {
+var listeners = this.view_listeners.elements ();
+while (listeners.hasMoreElements ()) {
+var slis = listeners.nextElement ();
+if (slis !== source) {
+slis.viewPosition (startRes, endRes, startSeq, endSeq, source);
+};}
+}}, "jalview.api.AlignmentViewPanel,~N,~N,~N,~N");
+c$.release = Clazz_defineMethod (c$, "release", 
+function (jalviewLite) {
+{
+if (jalview.structure.StructureSelectionManager.instances == null) {
+return;
+}var mnger = (jalview.structure.StructureSelectionManager.instances.get (jalviewLite));
+if (mnger != null) {
+jalview.structure.StructureSelectionManager.instances.remove (jalviewLite);
+try {
+mnger.finalize ();
+} catch (x) {
+}
+}}}, "jalview.api.StructureSelectionManagerProvider");
+Clazz_defineMethod (c$, "registerPDBEntry", 
+function (pdbentry) {
+if (pdbentry.getFile () != null && pdbentry.getFile ().trim ().length > 0) {
+this.registerPDBFile (pdbentry.getId (), pdbentry.getFile ());
+}}, "jalview.datamodel.PDBEntry");
+Clazz_defineMethod (c$, "addCommandListener", 
+function (cl) {
+if (!this.commandListeners.contains (cl)) {
+this.commandListeners.add (cl);
+}}, "jalview.structure.CommandListener");
+Clazz_defineMethod (c$, "hasCommandListener", 
+function (cl) {
+return this.commandListeners.contains (cl);
+}, "jalview.structure.CommandListener");
+Clazz_defineMethod (c$, "removeCommandListener", 
+function (l) {
+return this.commandListeners.remove (l);
+}, "jalview.structure.CommandListener");
+Clazz_defineMethod (c$, "commandPerformed", 
+function (command, undo, source) {
+for (var listener, $listener = this.commandListeners.iterator (); $listener.hasNext () && ((listener = $listener.next ()) || true);) {
+listener.mirrorCommand (command, undo, this, source);
+}
+}, "jalview.commands.CommandI,~B,jalview.structure.VamsasSource");
+Clazz_defineMethod (c$, "mapCommand", 
+function (command, undo, mapTo, gapChar) {
+if (Clazz_instanceOf (command, jalview.commands.EditCommand)) {
+return jalview.util.MappingUtils.mapEditCommand (command, undo, mapTo, gapChar, this.seqmappings);
+} else if (Clazz_instanceOf (command, jalview.commands.OrderCommand)) {
+return jalview.util.MappingUtils.mapOrderCommand (command, undo, mapTo, this.seqmappings);
+}return null;
+}, "jalview.commands.CommandI,~B,jalview.datamodel.AlignmentI,~S");
+c$.$StructureSelectionManager$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.structure, "StructureSelectionManager$1", java.io.PrintStream);
+Clazz_defineMethod (c$, "print", 
+function (x) {
+this.f$.mappingDetails.append (x);
+}, "~S");
+Clazz_defineMethod (c$, "println", 
+function () {
+this.f$.mappingDetails.append (jalview.structure.StructureSelectionManager.NEWLINE);
+});
+c$ = Clazz_p0p ();
+};
+c$.NEWLINE = c$.prototype.NEWLINE = System.lineSeparator ();
+Clazz_defineStatics (c$,
+"instances", null,
+"nullProvider", null);
+});
+Clazz_declarePackage ("MCview");
+Clazz_load (["jalview.io.AlignFile"], "MCview.PDBfile", ["MCview.Atom", "$.PDBChain", "jalview.analysis.AlignSeq", "jalview.datamodel.Alignment", "$.AlignmentI", "$.PDBEntry", "jalview.io.FileParse", "jalview.util.MessageManager", "java.awt.Color", "java.io.IOException", "java.util.ArrayList", "$.Hashtable", "$.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.chains = null;
+this.id = null;
+this.visibleChainAnnotation = false;
+this.$predictSecondaryStructure = true;
+this.externalSecondaryStructure = false;
+Clazz_instantialize (this, arguments);
+}, MCview, "PDBfile", jalview.io.AlignFile);
+Clazz_makeConstructor (c$, 
+function (addAlignmentAnnotations, predictSecondaryStructure, externalSecStr) {
+Clazz_superConstructor (this, MCview.PDBfile);
+this.visibleChainAnnotation = addAlignmentAnnotations;
+this.$predictSecondaryStructure = predictSecondaryStructure;
+this.externalSecondaryStructure = externalSecStr;
+}, "~B,~B,~B");
+Clazz_makeConstructor (c$, 
+function (addAlignmentAnnotations, predictSecondaryStructure, externalSecStr, file, protocol) {
+Clazz_superConstructor (this, MCview.PDBfile, [false, file, protocol]);
+this.visibleChainAnnotation = addAlignmentAnnotations;
+this.$predictSecondaryStructure = predictSecondaryStructure;
+this.externalSecondaryStructure = externalSecStr;
+this.doParse ();
+}, "~B,~B,~B,~S,~S");
+Clazz_makeConstructor (c$, 
+function (addAlignmentAnnotations, predictSecondaryStructure, externalSecStr, source) {
+Clazz_superConstructor (this, MCview.PDBfile, [false, source]);
+this.visibleChainAnnotation = addAlignmentAnnotations;
+this.$predictSecondaryStructure = predictSecondaryStructure;
+this.externalSecondaryStructure = externalSecStr;
+this.doParse ();
+}, "~B,~B,~B,jalview.io.FileParse");
+Clazz_overrideMethod (c$, "print", 
+function () {
+return null;
+});
+Clazz_overrideMethod (c$, "parse", 
+function () {
+this.id = this.safeName (this.getDataName ());
+this.chains =  new java.util.Vector ();
+var rna =  new java.util.ArrayList ();
+var prot =  new java.util.ArrayList ();
+var tmpchain;
+var line = null;
+var modelFlag = false;
+var terFlag = false;
+var lastID = "";
+var indexx = 0;
+var atomnam = null;
+try {
+while ((line = this.nextLine ()) != null) {
+if (line.indexOf ("HEADER") == 0) {
+if (line.length > 62) {
+var tid;
+if (line.length > 67) {
+tid = line.substring (62, 67).trim ();
+} else {
+tid = line.substring (62).trim ();
+}if (tid.length > 0) {
+this.id = tid;
+}continue;
+}}if (line.indexOf ("SEQRES") == 0) {
+}if (line.indexOf ("MODEL") == 0) {
+modelFlag = true;
+}if (line.indexOf ("TER") == 0) {
+terFlag = true;
+}if (modelFlag && line.indexOf ("ENDMDL") == 0) {
+break;
+}if (line.indexOf ("ATOM") == 0 || (line.indexOf ("HETATM") == 0 && !terFlag)) {
+terFlag = false;
+atomnam = line.substring (12, 15).trim ();
+if (!atomnam.equals ("CA") && !atomnam.equals ("P")) {
+continue;
+}var tmpatom =  new MCview.Atom (line);
+tmpchain = this.findChain (tmpatom.chain);
+if (tmpchain != null) {
+if (tmpatom.resNumIns.trim ().equals (lastID)) {
+continue;
+}tmpchain.atoms.addElement (tmpatom);
+} else {
+tmpchain =  new MCview.PDBChain (this.id, tmpatom.chain);
+this.chains.addElement (tmpchain);
+tmpchain.atoms.addElement (tmpatom);
+}lastID = tmpatom.resNumIns.trim ();
+}this.index++;
+}
+this.makeResidueList ();
+this.makeCaBondList ();
+if (this.id == null) {
+this.id = this.inFile.getName ();
+}for (var chain, $chain = this.chains.iterator (); $chain.hasNext () && ((chain = $chain.next ()) || true);) {
+var chainseq = this.postProcessChain (chain);
+if (MCview.PDBfile.isRNA (chainseq)) {
+rna.add (chainseq);
+} else {
+prot.add (chainseq);
+}}
+if (this.$predictSecondaryStructure) {
+this.predictSecondaryStructure (rna, prot);
+}} catch (e$$) {
+if (Clazz_exceptionOf (e$$, OutOfMemoryError)) {
+var er = e$$;
+{
+System.out.println ("OUT OF MEMORY LOADING PDB FILE");
+throw  new java.io.IOException (jalview.util.MessageManager.getString ("exception.outofmemory_loading_pdb_file"));
+}
+} else if (Clazz_exceptionOf (e$$, NumberFormatException)) {
+var ex = e$$;
+{
+if (line != null) {
+System.err.println ("Couldn't read number from line:");
+System.err.println (line);
+}}
+} else {
+throw e$$;
+}
+}
+this.markCalcIds ();
+});
+Clazz_defineMethod (c$, "predictSecondaryStructure", 
+function (rnaSequences, proteinSequences) {
+if (this.externalSecondaryStructure && rnaSequences.size () > 0) {
+try {
+this.processPdbFileWithAnnotate3d (rnaSequences);
+} catch (x) {
+if (Clazz_exceptionOf (x, Exception)) {
+System.err.println ("Exceptions when dealing with RNA in pdb file");
+x.printStackTrace ();
+} else {
+throw x;
+}
+}
+}if (proteinSequences.size () > 0) {
+try {
+this.processPdbFileWithJmol (proteinSequences);
+} catch (x) {
+if (Clazz_exceptionOf (x, Exception)) {
+System.err.println ("Exceptions from Jmol when processing data in pdb file");
+x.printStackTrace ();
+} else {
+throw x;
+}
+}
+}}, "java.util.List,java.util.List");
+Clazz_defineMethod (c$, "postProcessChain", 
+function (chain) {
+var dataset = chain.sequence;
+dataset.setName (this.id + "|" + dataset.getName ());
+var entry =  new jalview.datamodel.PDBEntry ();
+entry.setId (this.id);
+entry.setType (jalview.datamodel.PDBEntry.Type.PDB);
+entry.setProperty ( new java.util.Hashtable ());
+if (chain.id != null) {
+entry.setChainCode (String.valueOf (chain.id));
+}if (this.inFile != null) {
+entry.setFile (this.inFile.getAbsolutePath ());
+} else {
+entry.setFile (this.getDataName ());
+}dataset.addPDBId (entry);
+var chainseq = dataset.deriveSequence ();
+this.seqs.addElement (chainseq);
+var chainannot = chainseq.getAnnotation ();
+if (chainannot != null && this.visibleChainAnnotation) {
+for (var ai = 0; ai < chainannot.length; ai++) {
+chainannot[ai].visible = this.visibleChainAnnotation;
+this.annotations.addElement (chainannot[ai]);
+}
+}return chainseq;
+}, "MCview.PDBChain");
+c$.isCalcIdHandled = Clazz_defineMethod (c$, "isCalcIdHandled", 
+function (calcId) {
+return calcId != null && (MCview.PDBfile.CALC_ID_PREFIX.equals (calcId));
+}, "~S");
+c$.isCalcIdForFile = Clazz_defineMethod (c$, "isCalcIdForFile", 
+function (alan, pdbFile) {
+return alan.getCalcId () != null && MCview.PDBfile.CALC_ID_PREFIX.equals (alan.getCalcId ()) && pdbFile.equals (alan.getProperty ("PDBID"));
+}, "jalview.datamodel.AlignmentAnnotation,~S");
+c$.relocateCalcId = Clazz_defineMethod (c$, "relocateCalcId", 
+function (calcId, alreadyLoadedPDB) {
+var s = MCview.PDBfile.CALC_ID_PREFIX.length;
+var end = calcId.indexOf (MCview.PDBfile.CALC_ID_PREFIX, s);
+var between = calcId.substring (s, end - 1);
+return MCview.PDBfile.CALC_ID_PREFIX + alreadyLoadedPDB.get (between) + ":" + calcId.substring (end);
+}, "~S,java.util.Hashtable");
+Clazz_defineMethod (c$, "markCalcIds", 
+ function () {
+for (var sq, $sq = this.seqs.iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+if (sq.getAnnotation () != null) {
+for (var aa, $aa = 0, $$aa = sq.getAnnotation (); $aa < $$aa.length && ((aa = $$aa[$aa]) || true); $aa++) {
+var oldId = aa.getCalcId ();
+if (oldId == null) {
+oldId = "";
+}aa.setCalcId (MCview.PDBfile.CALC_ID_PREFIX);
+aa.setProperty ("PDBID", this.id);
+aa.setProperty ("oldCalcId", oldId);
+}
+}}
+});
+Clazz_defineMethod (c$, "processPdbFileWithJmol", 
+ function (prot) {
+try {
+var cl = Clazz._4Name ("jalview.ext.jmol.PDBFileWithJmol");
+if (cl != null) {
+var constructor = cl.getConstructor ( Clazz_newArray (-1, [jalview.io.FileParse]));
+var args =  Clazz_newArray (-1, [ new jalview.io.FileParse (this.getDataName (), this.type)]);
+var jmf = constructor.newInstance (args);
+var al =  new jalview.datamodel.Alignment (cl.getMethod ("getSeqsAsArray",  Clazz_newArray (-1, [])).invoke (jmf, []));
+cl.getMethod ("addAnnotations",  Clazz_newArray (-1, [jalview.datamodel.AlignmentI])).invoke (jmf, [al]);
+for (var sq, $sq = al.getSequences ().iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+if (sq.getDatasetSequence () != null) {
+sq.getDatasetSequence ().getPDBId ().clear ();
+} else {
+sq.getPDBId ().clear ();
+}}
+this.replaceAndUpdateChains (prot, al, "pep", false);
+}} catch (q) {
+if (Clazz_exceptionOf (q, ClassNotFoundException)) {
+} else {
+throw q;
+}
+}
+}, "java.util.List");
+Clazz_defineMethod (c$, "replaceAndUpdateChains", 
+ function (prot, al, pep, b) {
+var replaced = jalview.analysis.AlignSeq.replaceMatchingSeqsWith (this.seqs, this.annotations, prot, al, pep, false);
+for (var ch, $ch = this.chains.iterator (); $ch.hasNext () && ((ch = $ch.next ()) || true);) {
+var p = 0;
+for (var sq, $sq = replaced.get (0).iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+p++;
+if (sq === ch.sequence || sq.getDatasetSequence () === ch.sequence) {
+p = -p;
+break;
+}}
+if (p < 0) {
+p = -p - 1;
+ch.shadow = replaced.get (1).get (p);
+ch.shadowMap = (replaced.get (2).get (p)).getMappingFromS1 (false);
+}}
+}, "java.util.List,jalview.datamodel.AlignmentI,~S,~B");
+Clazz_defineMethod (c$, "processPdbFileWithAnnotate3d", 
+ function (rna) {
+try {
+var cl = Clazz._4Name ("jalview.ws.jws1.Annotate3D");
+if (cl != null) {
+var annotate3d = cl.getConstructor ( Clazz_newArray (-1, [])).newInstance ( Clazz_newArray (-1, []));
+var al = (cl.getMethod ("getRNAMLFor",  Clazz_newArray (-1, [jalview.io.FileParse])).invoke (annotate3d,  Clazz_newArray (-1, [ new jalview.io.FileParse (this.getDataName (), this.type)])));
+for (var sq, $sq = al.getSequences ().iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+if (sq.getDatasetSequence () != null) {
+if (sq.getDatasetSequence ().getPDBId () != null) {
+sq.getDatasetSequence ().getPDBId ().clear ();
+}} else {
+if (sq.getPDBId () != null) {
+sq.getPDBId ().clear ();
+}}}
+this.replaceAndUpdateChains (rna, al, "dna", false);
+}} catch (x) {
+if (Clazz_exceptionOf (x, ClassNotFoundException)) {
+} else {
+throw x;
+}
+}
+;}, "java.util.List");
+Clazz_defineMethod (c$, "safeName", 
+ function (dataName) {
+var p = 0;
+while ((p = dataName.indexOf ("/")) > -1 && p < dataName.length) {
+dataName = dataName.substring (p + 1);
+}
+return dataName;
+}, "~S");
+Clazz_defineMethod (c$, "makeResidueList", 
+function () {
+for (var i = 0; i < this.chains.size (); i++) {
+this.chains.elementAt (i).makeResidueList (this.visibleChainAnnotation);
+}
+});
+Clazz_defineMethod (c$, "makeCaBondList", 
+function () {
+for (var i = 0; i < this.chains.size (); i++) {
+this.chains.elementAt (i).makeCaBondList ();
+}
+});
+Clazz_defineMethod (c$, "findChain", 
+function (id) {
+for (var i = 0; i < this.chains.size (); i++) {
+if (this.chains.elementAt (i).id.equals (id)) {
+return this.chains.elementAt (i);
+}}
+return null;
+}, "~S");
+Clazz_defineMethod (c$, "setChargeColours", 
+function () {
+for (var i = 0; i < this.chains.size (); i++) {
+this.chains.elementAt (i).setChargeColours ();
+}
+});
+Clazz_defineMethod (c$, "setColours", 
+function (cs) {
+for (var i = 0; i < this.chains.size (); i++) {
+this.chains.elementAt (i).setChainColours (cs);
+}
+}, "jalview.schemes.ColourSchemeI");
+Clazz_defineMethod (c$, "setChainColours", 
+function () {
+for (var i = 0; i < this.chains.size (); i++) {
+this.chains.elementAt (i).setChainColours (java.awt.Color.getHSBColor (1.0 / i, .4, 1.0));
+}
+});
+c$.isRNA = Clazz_defineMethod (c$, "isRNA", 
+function (seq) {
+for (var c, $c = 0, $$c = seq.getSequence (); $c < $$c.length && ((c = $$c[$c]) || true); $c++) {
+if ((c != 'A') && (c != 'C') && (c != 'G') && (c != 'U')) {
+return false;
+}}
+return true;
+}, "jalview.datamodel.SequenceI");
+Clazz_defineStatics (c$,
+"CALC_ID_PREFIX", "JalviewPDB");
+});
+Clazz_declarePackage ("jalview.io");
+Clazz_load (["jalview.io.FileParse"], "jalview.io.AlignFile", ["jalview.datamodel.Sequence", "jalview.util.MessageManager", "java.io.IOException", "java.lang.Error", "java.util.ArrayList", "$.Hashtable", "$.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.noSeqs = 0;
+this.maxLength = 0;
+this.seqs = null;
+this.annotations = null;
+this.seqGroups = null;
+this.properties = null;
+this.start = 0;
+this.end = 0;
+this.jvSuffix = true;
+this.parseCalled = false;
+this.newickStrings = null;
+Clazz_instantialize (this, arguments);
+}, jalview.io, "AlignFile", jalview.io.FileParse);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.io.AlignFile, []);
+this.initData ();
+});
+Clazz_makeConstructor (c$, 
+function (inFile, type) {
+this.construct (true, inFile, type);
+}, "~S,~S");
+Clazz_makeConstructor (c$, 
+function (parseImmediately, inFile, type) {
+Clazz_superConstructor (this, jalview.io.AlignFile, [inFile, type]);
+this.initData ();
+if (parseImmediately) {
+this.doParse ();
+}}, "~B,~S,~S");
+Clazz_makeConstructor (c$, 
+function (source) {
+this.construct (true, source);
+}, "jalview.io.FileParse");
+Clazz_makeConstructor (c$, 
+function (parseImmediately, source) {
+Clazz_superConstructor (this, jalview.io.AlignFile, [source]);
+this.initData ();
+if (parseImmediately) {
+this.doParse ();
+}}, "~B,jalview.io.FileParse");
+Clazz_defineMethod (c$, "doParse", 
+function () {
+if (this.parseCalled) {
+throw  new java.io.IOException ("Implementation error: Parser called twice for same data.\nNeed to call initData() again before parsing can be reattempted.");
+}this.parseCalled = true;
+this.parse ();
+for (var i = 0, c = this.seqs.size (); i < c; i++) {
+this.seqs.get (i).setIndex (i);
+}
+});
+Clazz_defineMethod (c$, "getSeqs", 
+function () {
+return this.seqs;
+});
+Clazz_defineMethod (c$, "getSeqGroups", 
+function () {
+return this.seqGroups;
+});
+Clazz_defineMethod (c$, "getSeqsAsArray", 
+function () {
+var s =  new Array (this.seqs.size ());
+for (var i = 0; i < this.seqs.size (); i++) {
+s[i] = this.seqs.elementAt (i);
+}
+return s;
+});
+Clazz_defineMethod (c$, "addAnnotations", 
+function (al) {
+this.addProperties (al);
+for (var i = 0; i < this.annotations.size (); i++) {
+var an = this.annotations.elementAt (i);
+an.validateRangeAndDisplay ();
+al.addAnnotation (an);
+}
+}, "jalview.datamodel.AlignmentI");
+Clazz_defineMethod (c$, "addSeqGroups", 
+function (al) {
+this.seqGroups = al.getGroups ();
+}, "jalview.datamodel.AlignmentI");
+Clazz_defineMethod (c$, "addProperties", 
+function (al) {
+if (this.properties != null && this.properties.size () > 0) {
+var keys = this.properties.keys ();
+var vals = this.properties.elements ();
+while (keys.hasMoreElements ()) {
+al.setProperty (keys.nextElement (), vals.nextElement ());
+}
+}}, "jalview.datamodel.AlignmentI");
+Clazz_defineMethod (c$, "setAlignmentProperty", 
+function (key, value) {
+if (key == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_cannot_have_null_alignment"));
+}if (value == null) {
+return;
+}if (this.properties == null) {
+this.properties =  new java.util.Hashtable ();
+}this.properties.put (key, value);
+}, "~O,~O");
+Clazz_defineMethod (c$, "getAlignmentProperty", 
+function (key) {
+if (this.properties != null && key != null) {
+return this.properties.get (key);
+}return null;
+}, "~O");
+Clazz_defineMethod (c$, "initData", 
+function () {
+this.seqs =  new java.util.Vector ();
+this.annotations =  new java.util.Vector ();
+this.seqGroups =  new java.util.ArrayList ();
+this.parseCalled = false;
+});
+Clazz_defineMethod (c$, "setSeqs", 
+function (s) {
+this.seqs =  new java.util.Vector ();
+for (var i = 0; i < s.length; i++) {
+this.seqs.addElement (s[i]);
+}
+}, "~A");
+Clazz_defineMethod (c$, "addJVSuffix", 
+function (b) {
+this.jvSuffix = b;
+}, "~B");
+Clazz_defineMethod (c$, "parseId", 
+function (id) {
+var seq = null;
+id = id.trim ();
+var space = id.indexOf (" ");
+if (space > -1) {
+seq =  new jalview.datamodel.Sequence (id.substring (0, space), "");
+seq.setDescription (id.substring (space + 1));
+} else {
+seq =  new jalview.datamodel.Sequence (id, "");
+}return seq;
+}, "~S");
+Clazz_defineMethod (c$, "printId", 
+function (seq) {
+return seq.getDisplayId (this.jvSuffix);
+}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "addNewickTree", 
+function (treeName, newickString) {
+if (this.newickStrings == null) {
+this.newickStrings =  new java.util.Vector ();
+}this.newickStrings.addElement ( Clazz_newArray (-1, [treeName, newickString]));
+}, "~S,~S");
+Clazz_defineMethod (c$, "getTreeCount", 
+function () {
+return this.newickStrings == null ? 0 : this.newickStrings.size ();
+});
+Clazz_defineMethod (c$, "addGroups", 
+function (al) {
+for (var sg, $sg = this.getSeqGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+al.addGroup (sg);
+}
+}, "jalview.datamodel.AlignmentI");
+});
+Clazz_declarePackage ("jalview.io");
+Clazz_load (null, "jalview.io.FileParse", ["jalview.io.AppletFormatAdapter", "jalview.util.MessageManager", "java.io.BufferedReader", "$.IOException", "$.InputStreamReader", "$.StringReader", "java.lang.Error", "java.net.URL", "java.util.zip.GZIPInputStream"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.dataName = "unknown source";
+this.inFile = null;
+this.viewport = null;
+this.exportSettings = null;
+this.index = 1;
+this.suffixSeparator = '#';
+this.newline = null;
+this.suffix = null;
+this.type = null;
+this.dataIn = null;
+this.errormessage = "UNITIALISED SOURCE";
+this.error = true;
+this.warningMessage = null;
+this.READAHEAD_LIMIT = 2048;
+Clazz_instantialize (this, arguments);
+}, jalview.io, "FileParse");
+Clazz_prepareFields (c$, function () {
+this.newline = System.getProperty ("line.separator");
+});
+Clazz_defineMethod (c$, "setNewlineString", 
+function (nl) {
+this.newline = nl;
+}, "~S");
+Clazz_defineMethod (c$, "getNewlineString", 
+function () {
+return this.newline;
+});
+Clazz_makeConstructor (c$, 
+function () {
+});
+Clazz_makeConstructor (c$, 
+function (from) {
+if (from == null) {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_null_fileparse"));
+}if (from === this) {
+return;
+}this.index = ++from.index;
+this.inFile = from.inFile;
+this.suffixSeparator = from.suffixSeparator;
+this.suffix = from.suffix;
+this.errormessage = from.errormessage;
+this.error = false;
+this.type = from.type;
+this.dataIn = from.dataIn;
+if (this.dataIn != null) {
+this.mark ();
+}this.dataName = from.dataName;
+}, "jalview.io.FileParse");
+Clazz_defineMethod (c$, "tryAsGzipSource", 
+ function (inputStream) {
+var inData =  new java.io.BufferedReader ( new java.io.InputStreamReader ( new java.util.zip.GZIPInputStream (inputStream)));
+inData.mark (2048);
+inData.read ();
+inData.reset ();
+return inData;
+}, "java.io.InputStream");
+Clazz_defineMethod (c$, "checkURLSource", 
+ function (fileStr) {
+this.errormessage = "URL NOT FOUND";
+var url =  new java.net.URL (fileStr);
+var e = null;
+if (fileStr.toLowerCase ().endsWith (".gz")) {
+try {
+var inputStream = url.openStream ();
+this.dataIn = this.tryAsGzipSource (inputStream);
+this.dataName = fileStr;
+return false;
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+e = ex;
+} else {
+throw ex;
+}
+}
+}try {
+this.dataIn =  new java.io.BufferedReader ( new java.io.InputStreamReader (url.openStream ()));
+} catch (q) {
+if (Clazz_exceptionOf (q, java.io.IOException)) {
+if (e != null) {
+throw  new java.io.IOException (jalview.util.MessageManager.getString ("exception.failed_to_resolve_gzip_stream"), e);
+}throw q;
+} else {
+throw q;
+}
+}
+this.dataName = fileStr;
+return false;
+}, "~S");
+Clazz_defineMethod (c$, "extractSuffix", 
+ function (fileStr) {
+var sfpos = fileStr.lastIndexOf (this.suffixSeparator);
+if (sfpos > -1 && sfpos < fileStr.length - 1) {
+this.suffix = fileStr.substring (sfpos + 1);
+return fileStr.substring (0, sfpos);
+}return null;
+}, "~S");
+Clazz_makeConstructor (c$, 
+function (fileStr, type) {
+this.type = type;
+this.error = false;
+if (type.equals (jalview.io.AppletFormatAdapter.FILE)) {
+{
+}} else if (type.equals (jalview.io.AppletFormatAdapter.URL)) {
+try {
+try {
+this.checkURLSource (fileStr);
+if (this.suffixSeparator == '#') {
+this.extractSuffix (fileStr);
+}} catch (e) {
+if (Clazz_exceptionOf (e, java.io.IOException)) {
+var suffixLess = this.extractSuffix (fileStr);
+if (suffixLess == null) {
+throw (e);
+} else {
+try {
+this.checkURLSource (suffixLess);
+} catch (e2) {
+if (Clazz_exceptionOf (e2, java.io.IOException)) {
+this.errormessage = "BAD URL WITH OR WITHOUT SUFFIX";
+throw (e);
+} else {
+throw e2;
+}
+}
+}} else {
+throw e;
+}
+}
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+this.errormessage = "CANNOT ACCESS DATA AT URL '" + fileStr + "' (" + e.getMessage () + ")";
+this.error = true;
+} else {
+throw e;
+}
+}
+} else if (type.equals (jalview.io.AppletFormatAdapter.PASTE)) {
+this.errormessage = "PASTE INACCESSIBLE!";
+this.dataIn =  new java.io.BufferedReader ( new java.io.StringReader (fileStr));
+this.dataName = "Paste";
+} else if (type.equals (jalview.io.AppletFormatAdapter.CLASSLOADER)) {
+this.errormessage = "RESOURCE CANNOT BE LOCATED";
+var is = this.getClass ().getResourceAsStream ("/" + fileStr);
+if (is == null) {
+var suffixLess = this.extractSuffix (fileStr);
+if (suffixLess != null) {
+is = this.getClass ().getResourceAsStream ("/" + suffixLess);
+}}if (is != null) {
+this.dataIn =  new java.io.BufferedReader ( new java.io.InputStreamReader (is));
+this.dataName = fileStr;
+} else {
+this.error = true;
+}} else {
+this.errormessage = "PROBABLE IMPLEMENTATION ERROR : Datasource Type given as '" + (type != null ? type : "null") + "'";
+this.error = true;
+}if (this.dataIn == null || this.error) {
+throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.failed_to_read_data_from_source",  Clazz_newArray (-1, [this.errormessage])));
+}this.error = false;
+this.dataIn.mark (2048);
+}, "~S,~S");
+Clazz_defineMethod (c$, "mark", 
+function () {
+if (this.dataIn != null) {
+this.dataIn.mark (2048);
+} else {
+throw  new java.io.IOException (jalview.util.MessageManager.getString ("exception.no_init_source_stream"));
+}});
+Clazz_defineMethod (c$, "nextLine", 
+function () {
+if (!this.error) {
+return this.dataIn.readLine ();
+}throw  new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.invalid_source_stream",  Clazz_newArray (-1, [this.errormessage])));
+});
+Clazz_defineMethod (c$, "isExporting", 
+function () {
+return !this.error && this.dataIn == null;
+});
+Clazz_defineMethod (c$, "isValid", 
+function () {
+return !this.error;
+});
+Clazz_defineMethod (c$, "close", 
+function () {
+this.errormessage = "EXCEPTION ON CLOSE";
+this.error = true;
+this.dataIn.close ();
+this.dataIn = null;
+this.errormessage = "SOURCE IS CLOSED";
+});
+Clazz_defineMethod (c$, "reset", 
+function () {
+if (this.dataIn != null && !this.error) {
+this.dataIn.reset ();
+} else {
+throw  new java.io.IOException (jalview.util.MessageManager.getString ("error.implementation_error_reset_called_for_invalid_source"));
+}});
+Clazz_defineMethod (c$, "hasWarningMessage", 
+function () {
+return (this.warningMessage != null && this.warningMessage.length > 0);
+});
+Clazz_defineMethod (c$, "getWarningMessage", 
+function () {
+return this.warningMessage;
+});
+Clazz_defineMethod (c$, "getInFile", 
+function () {
+if (this.inFile != null) {
+return this.inFile.getAbsolutePath () + " (" + this.index + ")";
+} else {
+return "From Paste + (" + this.index + ")";
+}});
+Clazz_defineMethod (c$, "getDataName", 
+function () {
+return this.dataName;
+});
+Clazz_defineMethod (c$, "setDataName", 
+function (dataname) {
+this.dataName = dataname;
+}, "~S");
+Clazz_defineMethod (c$, "getReader", 
+function () {
+if (this.dataIn != null) {
+return this.dataIn;
+}return null;
+});
+Clazz_defineMethod (c$, "getViewport", 
+function () {
+return this.viewport;
+});
+Clazz_defineMethod (c$, "setViewport", 
+function (viewport) {
+this.viewport = viewport;
+}, "jalview.api.AlignViewportI");
+Clazz_defineMethod (c$, "getExportSettings", 
+function () {
+return this.exportSettings;
+});
+Clazz_defineMethod (c$, "setExportSettings", 
+function (exportSettings) {
+this.exportSettings = exportSettings;
+}, "jalview.api.AlignExportSettingI");
+Clazz_defineMethod (c$, "configureForView", 
+function (avpanel) {
+if (avpanel != null) {
+this.setViewport (avpanel.getAlignViewport ());
+}}, "jalview.api.AlignmentViewPanel");
+});
+Clazz_declarePackage ("jalview.io");
+Clazz_load (null, "jalview.io.AppletFormatAdapter", ["MCview.PDBfile", "jalview.datamodel.Alignment", "jalview.io.FileParse", "$.IdentifyFile", "jalview.jsdev.GenericFileAdapter", "jalview.util.MessageManager", "java.io.IOException", "java.lang.Exception", "$.StringBuffer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.viewpanel = null;
+this.annotFromStructure = false;
+this.localSecondaryStruct = false;
+this.serviceSecondaryStruct = false;
+this.alignFile = null;
+this.inFile = null;
+this.newline = null;
+this.exportSettings = null;
+Clazz_instantialize (this, arguments);
+}, jalview.io, "AppletFormatAdapter");
+Clazz_prepareFields (c$, function () {
+this.newline = System.getProperty ("line.separator");
+});
+Clazz_makeConstructor (c$, 
+function () {
+});
+Clazz_makeConstructor (c$, 
+function (viewpanel) {
+this.viewpanel = viewpanel;
+}, "jalview.api.AlignmentViewPanel");
+Clazz_makeConstructor (c$, 
+function (alignPanel, settings) {
+this.viewpanel = alignPanel;
+this.exportSettings = settings;
+}, "jalview.api.AlignmentViewPanel,jalview.api.AlignExportSettingI");
+c$.prettyPrint = Clazz_defineMethod (c$, "prettyPrint", 
+function (els) {
+var list =  new StringBuffer ();
+for (var i = 0, iSize = els.length - 1; i < iSize; i++) {
+list.append (els[i]);
+list.append (", ");
+}
+list.append (" and " + els[els.length - 1] + ".");
+return list.toString ();
+}, "~A");
+Clazz_defineMethod (c$, "setNewlineString", 
+function (nl) {
+this.newline = nl;
+}, "~S");
+Clazz_defineMethod (c$, "getNewlineString", 
+function () {
+return this.newline;
+});
+c$.isValidFormat = Clazz_defineMethod (c$, "isValidFormat", 
+function (format) {
+return jalview.io.AppletFormatAdapter.isValidFormat (format, false);
+}, "~S");
+c$.isValidFormat = Clazz_defineMethod (c$, "isValidFormat", 
+function (format, forwriting) {
+var valid = false;
+var format_list = (forwriting) ? jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS : jalview.io.AppletFormatAdapter.READABLE_FORMATS;
+for (var element, $element = 0, $$element = format_list; $element < $$element.length && ((element = $$element[$element]) || true); $element++) {
+if (element.equalsIgnoreCase (format)) {
+return true;
+}}
+return valid;
+}, "~S,~B");
+Clazz_defineMethod (c$, "readFile", 
+function (inFile, type, format) {
+this.inFile = inFile;
+try {
+if (format.equals ("FASTA")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [inFile, type]);
+} else if (format.equals ("MSF")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("MSFfile", [inFile, type]);
+} else if (format.equals ("PileUp")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PileUpfile", [inFile, type]);
+} else if (format.equals ("CLUSTAL")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("ClustalFile", [inFile, type]);
+} else if (format.equals ("BLC")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("BLCFile", [inFile, type]);
+} else if (format.equals ("PIR")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PIRFile", [inFile, type]);
+} else if (format.equals ("PFAM")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PfamFile", [inFile, type]);
+} else if (format.equals ("JnetFile")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JPredFile", [inFile, type]);
+(this.alignFile).removeNonSequences ();
+} else if (format.equals ("PDB")) {
+this.alignFile =  new MCview.PDBfile (this.annotFromStructure, this.localSecondaryStruct, this.serviceSecondaryStruct, inFile, type);
+} else if (format.equals ("STH")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("StockholmFile", [inFile, type]);
+} else if (format.equals ("SimpleBLAST")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("SimpleBlastFile", [inFile, type]);
+} else if (format.equals ("PHYLIP")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PhylipFile", [inFile, type]);
+} else if (format.equals ("JSON")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JSONFile", [inFile, type]);
+} else if (format.equals ("HTML")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("HtmlFile", [inFile, type]);
+} else if (format.equals ("RNAML")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("RnamlFile", [inFile, type]);
+} else if (format.equals ("GFF v2 or v3")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("Gff3File", [inFile, type]);
+}return this.buildAlignmentFrom (this.alignFile);
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to read alignment using the '" + format + "' reader.\n" + e);
+if (e.getMessage () != null && e.getMessage ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {
+throw  new java.io.IOException (e.getMessage ());
+}if (type.equalsIgnoreCase ("Paste")) {
+try {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [">UNKNOWN\n" + inFile, "Paste"]);
+return this.buildAlignmentFrom (this.alignFile);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+if (ex.toString ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {
+throw  new java.io.IOException (e.getMessage ());
+}ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}throw  new java.io.IOException (jalview.io.AppletFormatAdapter.SUPPORTED_FORMATS);
+} else {
+throw e;
+}
+}
+}, "~S,~S,~S");
+Clazz_defineMethod (c$, "readFromFile", 
+function (source, format) {
+this.inFile = source.getInFile ();
+var type = source.type;
+try {
+if (format.equals ("FASTA")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [source]);
+} else if (format.equals ("MSF")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("MSFfile", [source]);
+} else if (format.equals ("PileUp")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PileUpfile", [source]);
+} else if (format.equals ("CLUSTAL")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("ClustalFile", [source]);
+} else if (format.equals ("BLC")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("BLCFile", [source]);
+} else if (format.equals ("PIR")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PIRFile", [source]);
+} else if (format.equals ("PFAM")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PfamFile", [source]);
+} else if (format.equals ("JnetFile")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JPredFile", [source]);
+(this.alignFile).removeNonSequences ();
+} else if (format.equals ("PDB")) {
+this.alignFile =  new MCview.PDBfile (this.annotFromStructure, this.localSecondaryStruct, this.serviceSecondaryStruct, source);
+} else if (format.equals ("STH")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("StockholmFile", [source]);
+} else if (format.equals ("RNAML")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("RnamlFile", [source]);
+} else if (format.equals ("SimpleBLAST")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("SimpleBlastFile", [source]);
+} else if (format.equals ("PHYLIP")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("PhylipFile", [source]);
+} else if (format.equals ("GFF v2 or v3")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("Gff3File", [this.inFile, type]);
+} else if (format.equals ("JSON")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("JSONFile", [source]);
+} else if (format.equals ("HTML")) {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("HtmlFile", [source]);
+}return this.buildAlignmentFrom (this.alignFile);
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+System.err.println ("Failed to read alignment using the '" + format + "' reader.\n" + e);
+if (e.getMessage () != null && e.getMessage ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {
+throw  new java.io.IOException (e.getMessage ());
+}if (type.equalsIgnoreCase ("Paste")) {
+try {
+this.alignFile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", [">UNKNOWN\n" + this.inFile, "Paste"]);
+return this.buildAlignmentFrom (this.alignFile);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+if (ex.toString ().startsWith (jalview.io.AppletFormatAdapter.INVALID_CHARACTERS)) {
+throw  new java.io.IOException (e.getMessage ());
+}ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}throw  new java.io.IOException (jalview.io.AppletFormatAdapter.SUPPORTED_FORMATS);
+} else {
+throw e;
+}
+}
+}, "jalview.io.FileParse,~S");
+Clazz_defineMethod (c$, "buildAlignmentFrom", 
+ function (alignFile2) {
+var al =  new jalview.datamodel.Alignment (this.alignFile.getSeqsAsArray ());
+this.alignFile.addAnnotations (al);
+this.alignFile.addGroups (al);
+return al;
+}, "jalview.io.AlignFile");
+Clazz_defineMethod (c$, "formatSequences", 
+function (format, jvsuffix, ap, selectedOnly) {
+var selvew = ap.getAlignViewport ().getAlignmentView (selectedOnly, false);
+var aselview = selvew.getVisibleAlignment (ap.getAlignViewport ().getGapCharacter ());
+var ala = (ap.getAlignViewport ().getVisibleAlignmentAnnotation (selectedOnly));
+if (ala != null) {
+for (var aa, $aa = ala.iterator (); $aa.hasNext () && ((aa = $aa.next ()) || true);) {
+aselview.addAnnotation (aa);
+}
+}this.viewpanel = ap;
+return this.formatSequences (format, aselview, jvsuffix);
+}, "~S,~B,jalview.api.AlignmentViewPanel,~B");
+Clazz_defineMethod (c$, "formatSequences", 
+function (format, alignment, jvsuffix) {
+try {
+var afile = null;
+if (format.equalsIgnoreCase ("FASTA")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", []);
+} else if (format.equalsIgnoreCase ("MSF")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("MSFfile", []);
+} else if (format.equalsIgnoreCase ("PileUp")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("PileUpfile", []);
+} else if (format.equalsIgnoreCase ("CLUSTAL")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("ClustalFile", []);
+} else if (format.equalsIgnoreCase ("BLC")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("BLCFile", []);
+} else if (format.equalsIgnoreCase ("PIR")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("PIRFile", []);
+} else if (format.equalsIgnoreCase ("PFAM")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("PfamFile", []);
+} else if (format.equalsIgnoreCase ("STH")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("StockholmFile", [alignment]);
+} else if (format.equalsIgnoreCase ("AMSA")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("AMSAFile", [alignment]);
+} else if (format.equalsIgnoreCase ("PHYLIP")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("PhylipFile", []);
+} else if (format.equalsIgnoreCase ("JSON")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("JSONFile", []);
+} else if (format.equalsIgnoreCase ("RNAML")) {
+afile = jalview.jsdev.GenericFileAdapter.getFile ("RnamlFile", []);
+} else {
+throw  new Exception (jalview.util.MessageManager.getString ("error.implementation_error_unknown_file_format_string"));
+}afile.setNewlineString (this.newline);
+afile.addJVSuffix (jvsuffix);
+afile.setExportSettings (this.exportSettings);
+afile.configureForView (this.viewpanel);
+if (this.viewpanel == null || this.viewpanel.getAlignment () == null || this.viewpanel.getAlignment () !== alignment) {
+afile.setSeqs (alignment.getSequencesArray ());
+} else {
+afile.setSeqs (this.viewpanel.getAlignment ().getSequencesArray ());
+}var afileresp = afile.print ();
+if (afile.hasWarningMessage ()) {
+System.err.println ("Warning raised when writing as " + format + " : " + afile.getWarningMessage ());
+}return afileresp;
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+System.err.println ("Failed to write alignment as a '" + format + "' file\n");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+return null;
+}, "~S,jalview.datamodel.AlignmentI,~B");
+c$.checkProtocol = Clazz_defineMethod (c$, "checkProtocol", 
+function (file) {
+var protocol = jalview.io.AppletFormatAdapter.FILE;
+var ft = file.toLowerCase ().trim ();
+if (ft.indexOf ("http:") == 0 || ft.indexOf ("https:") == 0 || ft.indexOf ("file:") == 0) {
+protocol = jalview.io.AppletFormatAdapter.URL;
+}return protocol;
+}, "~S");
+c$.resolveProtocol = Clazz_defineMethod (c$, "resolveProtocol", 
+function (file, format) {
+return jalview.io.AppletFormatAdapter.resolveProtocol (file, format, false);
+}, "~S,~S");
+c$.resolveProtocol = Clazz_defineMethod (c$, "resolveProtocol", 
+function (file, format, debug) {
+var protocol = null;
+if (debug) {
+System.out.println ("resolving datasource started with:\n>>file\n" + file + ">>endfile");
+}try {
+var rtn = false;
+var is = System.getSecurityManager ().getClass ().getResourceAsStream ("/" + file);
+if (is != null) {
+rtn = true;
+is.close ();
+}if (debug) {
+System.err.println ("Resource '" + file + "' was " + (rtn ? "" : "not") + " located by classloader.");
+};if (rtn) {
+protocol = jalview.io.AppletFormatAdapter.CLASSLOADER;
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+System.err.println ("Exception checking resources: " + file + " " + ex);
+} else {
+throw ex;
+}
+}
+if (file.indexOf ("://") > -1) {
+protocol = jalview.io.AppletFormatAdapter.URL;
+} else {
+protocol = jalview.io.AppletFormatAdapter.FILE;
+}var fp = null;
+try {
+if (debug) {
+System.out.println ("Trying to get contents of resource as " + protocol + ":");
+}fp =  new jalview.io.FileParse (file, protocol);
+if (!fp.isValid ()) {
+fp = null;
+} else {
+if (debug) {
+System.out.println ("Successful.");
+}}} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+if (debug) {
+System.err.println ("Exception when accessing content: " + e);
+}fp = null;
+} else {
+throw e;
+}
+}
+if (fp == null) {
+if (debug) {
+System.out.println ("Accessing as paste.");
+}protocol = jalview.io.AppletFormatAdapter.PASTE;
+fp = null;
+try {
+fp =  new jalview.io.FileParse (file, protocol);
+if (!fp.isValid ()) {
+fp = null;
+}} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+System.err.println ("Failed to access content as paste!");
+e.printStackTrace ();
+fp = null;
+} else {
+throw e;
+}
+}
+}if (fp == null) {
+return null;
+}if (format == null || format.length == 0) {
+return protocol;
+} else {
+try {
+var idformat =  new jalview.io.IdentifyFile ().Identify (file, protocol);
+if (idformat == null) {
+if (debug) {
+System.out.println ("Format not identified. Inaccessible file.");
+}return null;
+}if (debug) {
+System.out.println ("Format identified as " + idformat + "and expected as " + format);
+}if (idformat.equals (format)) {
+if (debug) {
+System.out.println ("Protocol identified as " + protocol);
+}return protocol;
+} else {
+if (debug) {
+System.out.println ("File deemed not accessible via " + protocol);
+}fp.close ();
+return null;
+}} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+if (debug) {
+System.err.println ("File deemed not accessible via " + protocol);
+e.printStackTrace ();
+};} else {
+throw e;
+}
+}
+}return null;
+}, "~S,~S,~B");
+Clazz_defineMethod (c$, "getAlignFile", 
+function () {
+return this.alignFile;
+});
+Clazz_defineMethod (c$, "setAlignFile", 
+function (alignFile) {
+this.alignFile = alignFile;
+}, "jalview.io.AlignFile");
+Clazz_defineStatics (c$,
+"FILE", "File",
+"URL", "URL",
+"PASTE", "Paste",
+"CLASSLOADER", "ClassLoader");
+c$.READABLE_FORMATS = c$.prototype.READABLE_FORMATS =  Clazz_newArray (-1, ["BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "STH", "PDB", "JnetFile", "RNAML", "PHYLIP", "JSON", "GFF v2 or v3", "HTML"]);
+c$.READABLE_EXTENSIONS = c$.prototype.READABLE_EXTENSIONS =  Clazz_newArray (-1, ["fa, fasta, mfa, fastq", "aln", "pfam", "msf", "pir", "blc", "amsa", "sto,stk", "xml,rnaml", "phy", "json", ".gff2,gff3", "jar,jvp", "html"]);
+c$.READABLE_FNAMES = c$.prototype.READABLE_FNAMES =  Clazz_newArray (-1, ["Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "AMSA", "Stockholm", "RNAML", "PHYLIP", "JSON", "GFF v2 or v3", "Jalview", "HTML"]);
+c$.WRITEABLE_FORMATS = c$.prototype.WRITEABLE_FORMATS =  Clazz_newArray (-1, ["BLC", "CLUSTAL", "FASTA", "MSF", "PileUp", "PIR", "PFAM", "AMSA", "STH", "PHYLIP", "JSON"]);
+c$.WRITABLE_EXTENSIONS = c$.prototype.WRITABLE_EXTENSIONS =  Clazz_newArray (-1, ["fa, fasta, mfa, fastq", "aln", "pfam", "msf", "pir", "blc", "amsa", "sto,stk", "phy", "json", "jvp"]);
+c$.WRITABLE_FNAMES = c$.prototype.WRITABLE_FNAMES =  Clazz_newArray (-1, ["Fasta", "Clustal", "PFAM", "MSF", "PIR", "BLC", "AMSA", "STH", "PHYLIP", "JSON", "Jalview"]);
+Clazz_defineStatics (c$,
+"INVALID_CHARACTERS", "Contains invalid characters");
+c$.SUPPORTED_FORMATS = c$.prototype.SUPPORTED_FORMATS = "Formats currently supported are\n" + jalview.io.AppletFormatAdapter.prettyPrint (jalview.io.AppletFormatAdapter.READABLE_FORMATS);
+});
+Clazz_declarePackage ("jalview.io");
+Clazz_load (null, "jalview.io.IdentifyFile", ["jalview.io.FileParse"], function () {
+c$ = Clazz_declareType (jalview.io, "IdentifyFile");
+Clazz_defineMethod (c$, "Identify", 
+function (file, protocol) {
+var emessage = "UNIDENTIFIED FILE PARSING ERROR";
+var parser = null;
+try {
+parser =  new jalview.io.FileParse (file, protocol);
+if (parser.isValid ()) {
+return this.Identify (parser);
+}} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+System.err.println ("Error whilst identifying");
+e.printStackTrace (System.err);
+emessage = e.getMessage ();
+} else {
+throw e;
+}
+}
+if (parser != null) {
+return parser.errormessage;
+}return emessage;
+}, "~S,~S");
+Clazz_defineMethod (c$, "Identify", 
+function (source) {
+return this.Identify (source, true);
+}, "jalview.io.FileParse");
+Clazz_defineMethod (c$, "Identify", 
+function (source, closeSource) {
+var reply = "PFAM";
+var data;
+var length = 0;
+var lineswereskipped = false;
+var isBinary = false;
+try {
+if (!closeSource) {
+source.mark ();
+}while ((data = source.nextLine ()) != null) {
+length += data.trim ().length;
+if (!lineswereskipped) {
+for (var i = 0; !isBinary && i < data.length; i++) {
+var c = data.charAt (i);
+isBinary = (c.charCodeAt (0) < 32 && c != '\t' && c != '\n' && c != '\r' && c.charCodeAt (0) != 5 && c.charCodeAt (0) != 27);
+}
+}if (isBinary) {
+if (source.inFile != null) {
+var fileStr = source.inFile.getName ();
+if (fileStr.lastIndexOf (".jar") > -1 || fileStr.lastIndexOf (".zip") > -1) {
+reply = "Jalview";
+}}if (!lineswereskipped && data.startsWith ("PK")) {
+reply = "Jalview";
+break;
+}}data = data.toUpperCase ();
+if (data.startsWith ("##GFF-VERSION")) {
+reply = "GFF v2 or v3";
+break;
+}if (data.indexOf ("# STOCKHOLM") > -1) {
+reply = "STH";
+break;
+}if (data.matches ("<HTML(\"[^\"]*\"|'[^']*'|[^'\">])*>")) {
+reply = "HTML";
+break;
+}if (data.matches ("<RNAML (\"[^\"]*\"|'[^']*'|[^'\">])*>")) {
+reply = "RNAML";
+break;
+}if (data.indexOf ("{\"") > -1) {
+reply = "JSON";
+break;
+}if ((data.length < 1) || (data.indexOf ("#") == 0)) {
+lineswereskipped = true;
+continue;
+}if (data.indexOf ("PILEUP") > -1) {
+reply = "PileUp";
+break;
+}if ((data.indexOf ("//") == 0) || ((data.indexOf ("!!") > -1) && (data.indexOf ("!!") < data.indexOf ("_MULTIPLE_ALIGNMENT ")))) {
+reply = "MSF";
+break;
+} else if (data.indexOf ("CLUSTAL") > -1) {
+reply = "CLUSTAL";
+break;
+} else if (data.indexOf (">") > -1) {
+var checkPIR = false;
+var starterm = false;
+if ((data.indexOf (">P1;") > -1) || (data.indexOf (">DL;") > -1)) {
+checkPIR = true;
+reply = "PIR";
+}data = source.nextLine ();
+if (data.indexOf (">") > -1) {
+reply = "BLC";
+} else {
+var data1 = source.nextLine ();
+var data2 = source.nextLine ();
+var c1;
+if (checkPIR) {
+starterm = (data1 != null && data1.indexOf ("*") > -1) || (data2 != null && data2.indexOf ("*") > -1);
+}if (data2 != null && (c1 = data.indexOf ("*")) > -1) {
+if (c1 == 0 && c1 == data2.indexOf ("*")) {
+reply = "BLC";
+} else {
+reply = "FASTA";
+}} else {
+reply = "FASTA";
+if (!checkPIR) {
+break;
+}}}if (checkPIR) {
+var dta = null;
+if (!starterm) {
+do {
+try {
+dta = source.nextLine ();
+} catch (ex) {
+if (Clazz_exceptionOf (ex, java.io.IOException)) {
+} else {
+throw ex;
+}
+}
+;if (dta != null && dta.indexOf ("*") > -1) {
+starterm = true;
+}} while (dta != null && !starterm);
+}if (starterm) {
+reply = "PIR";
+break;
+} else {
+reply = "FASTA";
+}}break;
+} else if (data.indexOf ("HEADER") == 0 || data.indexOf ("ATOM") == 0) {
+reply = "PDB";
+break;
+} else if (data.matches ("\\s*\\d+\\s+\\d+\\s*")) {
+reply = "PHYLIP";
+break;
+} else if (!lineswereskipped && data.charAt (0) != '*' && data.charAt (0) != ' ' && data.indexOf (":") < data.indexOf (",")) {
+reply = "JnetFile";
+break;
+}lineswereskipped = true;
+}
+if (closeSource) {
+source.close ();
+} else {
+source.reset ();
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+System.err.println ("File Identification failed!\n" + ex);
+return source.errormessage;
+} else {
+throw ex;
+}
+}
+if (length == 0) {
+System.err.println ("File Identification failed! - Empty file was read.");
+return "EMPTY DATA FILE";
+}return reply;
+}, "jalview.io.FileParse,~B");
+Clazz_defineStatics (c$,
+"GFF3File", "GFF v2 or v3");
+});
+Clazz_declarePackage ("jalview.jsdev");
+Clazz_load (["jalview.io.AlignFile"], "jalview.jsdev.GenericFileAdapter", ["jalview.datamodel.AlignmentI", "jalview.io.FileParse", "java.io.BufferedReader", "$.InputStreamReader", "java.net.URL"], function () {
+c$ = Clazz_declareType (jalview.jsdev, "GenericFileAdapter", jalview.io.AlignFile);
+c$.getFile = Clazz_defineMethod (c$, "getFile", 
+function (fileType, params) {
+var cl = null;
+try {
+cl = Clazz._4Name ("jalview.io." + fileType);
+} catch (e) {
+if (Clazz_exceptionOf (e, ClassNotFoundException)) {
+System.err.println ("did not find file jalview.io." + fileType);
+return null;
+} else {
+throw e;
+}
+}
+var m;
+var ex = null;
+try {
+switch (params.length) {
+case 0:
+return cl.newInstance ();
+case 1:
+m = (Clazz_instanceOf (params[0], jalview.io.FileParse) ? cl.getConstructor ([jalview.io.FileParse]) : cl.getConstructor ([jalview.datamodel.AlignmentI]));
+break;
+case 2:
+m = cl.getConstructor ([String, String]);
+break;
+default:
+return null;
+}
+return m.newInstance (params);
+} catch (e$$) {
+if (Clazz_exceptionOf (e$$, InstantiationException)) {
+var e = e$$;
+{
+ex = e;
+}
+} else if (Clazz_exceptionOf (e$$, IllegalAccessException)) {
+var e = e$$;
+{
+ex = e;
+}
+} else if (Clazz_exceptionOf (e$$, NoSuchMethodException)) {
+var e = e$$;
+{
+ex = e;
+}
+} else if (Clazz_exceptionOf (e$$, SecurityException)) {
+var e = e$$;
+{
+ex = e;
+}
+} else if (Clazz_exceptionOf (e$$, IllegalArgumentException)) {
+var e = e$$;
+{
+ex = e;
+}
+} else if (Clazz_exceptionOf (e$$, java.lang.reflect.InvocationTargetException)) {
+var e = e$$;
+{
+ex = e;
+}
+} else {
+throw e$$;
+}
+}
+if (ex != null) {
+System.err.println ("Error in GenericFileAdapter: " + ex);
+{
+alert(ex)
+}}return null;
+}, "~S,~A");
+c$.isJS = Clazz_defineMethod (c$, "isJS", 
+function () {
+{
+return true;
+}});
+c$.getReader = Clazz_defineMethod (c$, "getReader", 
+function (fileName, forceURL) {
+if (!forceURL && !jalview.jsdev.GenericFileAdapter.isJS ()) return  new java.io.BufferedReader ( new java.io.FileReader (fileName));
+if (fileName.indexOf ("//") < 0) fileName = "file://" + fileName;
+return  new java.io.BufferedReader ( new java.io.InputStreamReader ( new java.net.URL (fileName).openStream ()));
+}, "~S,~B");
+Clazz_defineStatics (c$,
+"TCOFFEE_SCORE", "TCoffeeScore",
+"Phylip_FILE", 1,
+"Phylip_FILE_EXT", "phy",
+"Phylip_FILE_DESC", "PHYLIP",
+"JSON_FILE", 2,
+"JSON_FILE_EXT", "json",
+"JSON_FILE_DESC", "JSON",
+"Html_FILE", 3,
+"Html_FILE_EXT", "html",
+"Html_FILE_DESC", "HTML");
+});
+Clazz_declarePackage ("java.util.zip");
+Clazz_load (["java.util.zip.InflaterInputStream", "$.CRC32"], "java.util.zip.GZIPInputStream", ["java.io.EOFException", "$.IOException", "java.util.zip.CheckedInputStream", "$.Inflater", "$.ZipException"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.crc = null;
+this.eos = false;
+this.$closed = false;
+this.tmpbuf = null;
+Clazz_instantialize (this, arguments);
+}, java.util.zip, "GZIPInputStream", java.util.zip.InflaterInputStream);
+Clazz_prepareFields (c$, function () {
+this.crc =  new java.util.zip.CRC32 ();
+this.tmpbuf =  Clazz_newByteArray (128, 0);
+});
+Clazz_defineMethod (c$, "ensureOpen", 
+ function () {
+if (this.$closed) {
+throw  new java.io.IOException ("Stream closed");
+}});
+Clazz_makeConstructor (c$, 
+function ($in, size) {
+Clazz_superConstructor (this, java.util.zip.GZIPInputStream, [$in,  new java.util.zip.Inflater ().init (0, true), size]);
+this.readHeader ($in);
+}, "java.io.InputStream,~N");
+Clazz_overrideMethod (c$, "read", 
+function (buf, off, len) {
+this.ensureOpen ();
+if (this.eos) {
+return -1;
+}var n = this.readInf (buf, off, len);
+if (n == -1) {
+if (this.readTrailer ()) this.eos = true;
+ else return this.read (buf, off, len);
+} else {
+this.crc.update (buf, off, n);
+}return n;
+}, "~A,~N,~N");
+Clazz_defineMethod (c$, "close", 
+function () {
+if (!this.$closed) {
+Clazz_superCall (this, java.util.zip.GZIPInputStream, "close", []);
+this.eos = true;
+this.$closed = true;
+}});
+Clazz_defineMethod (c$, "readHeader", 
+ function (this_in) {
+var $in =  new java.util.zip.CheckedInputStream (this_in).set (this.crc);
+this.crc.reset ();
+if (this.readUShort ($in) != 35615) {
+throw  new java.util.zip.ZipException ("Not in GZIP format");
+}if (this.readUByte ($in) != 8) {
+throw  new java.util.zip.ZipException ("Unsupported compression method");
+}var flg = this.readUByte ($in);
+this.skipBytes ($in, 6);
+var n = 10;
+if ((flg & 4) == 4) {
+var m = this.readUShort ($in);
+this.skipBytes ($in, m);
+n += m + 2;
+}if ((flg & 8) == 8) {
+do {
+n++;
+} while (this.readUByte ($in) != 0);
+}if ((flg & 16) == 16) {
+do {
+n++;
+} while (this.readUByte ($in) != 0);
+}if ((flg & 2) == 2) {
+var v = this.crc.getValue () & 0xffff;
+if (this.readUShort ($in) != v) {
+throw  new java.util.zip.ZipException ("Corrupt GZIP header");
+}n += 2;
+}this.crc.reset ();
+return n;
+}, "java.io.InputStream");
+Clazz_defineMethod (c$, "readTrailer", 
+ function () {
+return true;
+});
+Clazz_defineMethod (c$, "readUShort", 
+ function ($in) {
+var b = this.readUByte ($in);
+return (this.readUByte ($in) << 8) | b;
+}, "java.io.InputStream");
+Clazz_defineMethod (c$, "readUByte", 
+ function ($in) {
+var b = $in.readByteAsInt ();
+if (b == -1) {
+throw  new java.io.EOFException ();
+}if (b < -1 || b > 255) {
+throw  new java.io.IOException (this.$in.getClass ().getName () + ".read() returned value out of range -1..255: " + b);
+}return b;
+}, "java.io.InputStream");
+Clazz_defineMethod (c$, "skipBytes", 
+ function ($in, n) {
+while (n > 0) {
+var len = $in.read (this.tmpbuf, 0, n < this.tmpbuf.length ? n : this.tmpbuf.length);
+if (len == -1) {
+throw  new java.io.EOFException ();
+}n -= len;
+}
+}, "java.io.InputStream,~N");
+Clazz_defineStatics (c$,
+"GZIP_MAGIC", 0x8b1f,
+"FHCRC", 2,
+"FEXTRA", 4,
+"FNAME", 8,
+"FCOMMENT", 16);
+});
+Clazz_declarePackage ("java.util.zip");
+Clazz_load (["JU.InflaterInputStream"], "java.util.zip.InflaterInputStream", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.inf = null;
+Clazz_instantialize (this, arguments);
+}, java.util.zip, "InflaterInputStream", JU.InflaterInputStream);
+Clazz_makeConstructor (c$, 
+function ($in, inflater, size) {
+Clazz_superConstructor (this, java.util.zip.InflaterInputStream, [$in, inflater, size, true]);
+this.inf = inflater;
+}, "java.io.InputStream,java.util.zip.Inflater,~N");
+});
+Clazz_declarePackage ("JU");
+Clazz_load (["java.io.FilterInputStream"], "JU.InflaterInputStream", ["java.io.EOFException", "$.IOException", "java.lang.IllegalArgumentException", "$.IndexOutOfBoundsException", "$.NullPointerException"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.inflater = null;
+this.buf = null;
+this.len = 0;
+this.closed = false;
+this.eof = false;
+this.close_in = true;
+this.myinflater = false;
+this.byte1 = null;
+this.b = null;
+Clazz_instantialize (this, arguments);
+}, JU, "InflaterInputStream", java.io.FilterInputStream);
+Clazz_prepareFields (c$, function () {
+this.byte1 =  Clazz_newByteArray (1, 0);
+this.b =  Clazz_newByteArray (512, 0);
+});
+Clazz_makeConstructor (c$, 
+function ($in, inflater, size, close_in) {
+Clazz_superConstructor (this, JU.InflaterInputStream, [$in]);
+this.inflater = inflater;
+this.buf =  Clazz_newByteArray (size, 0);
+this.close_in = close_in;
+}, "java.io.InputStream,JU.Inflater,~N,~B");
+Clazz_overrideMethod (c$, "readByteAsInt", 
+function () {
+if (this.closed) {
+throw  new java.io.IOException ("Stream closed");
+}return this.read (this.byte1, 0, 1) == -1 ? -1 : this.byte1[0] & 0xff;
+});
+Clazz_overrideMethod (c$, "read", 
+function (b, off, len) {
+return this.readInf (b, off, len);
+}, "~A,~N,~N");
+Clazz_defineMethod (c$, "readInf", 
+function (b, off, len) {
+if (this.closed) {
+throw  new java.io.IOException ("Stream closed");
+}if (b == null) {
+throw  new NullPointerException ();
+} else if (off < 0 || len < 0 || len > b.length - off) {
+throw  new IndexOutOfBoundsException ();
+} else if (len == 0) {
+return 0;
+} else if (this.eof) {
+return -1;
+}var n = 0;
+this.inflater.setOutput (b, off, len);
+while (!this.eof) {
+if (this.inflater.avail_in == 0) this.fill ();
+var err = this.inflater.inflate (0);
+n += this.inflater.next_out_index - off;
+off = this.inflater.next_out_index;
+switch (err) {
+case -3:
+throw  new java.io.IOException (this.inflater.msg);
+case 1:
+case 2:
+this.eof = true;
+if (err == 2) return -1;
+break;
+default:
+}
+if (this.inflater.avail_out == 0) break;
+}
+return n;
+}, "~A,~N,~N");
+Clazz_overrideMethod (c$, "available", 
+function () {
+if (this.closed) {
+throw  new java.io.IOException ("Stream closed");
+}return (this.eof ? 0 : 1);
+});
+Clazz_overrideMethod (c$, "skip", 
+function (n) {
+if (n < 0) {
+throw  new IllegalArgumentException ("negative skip length");
+}if (this.closed) {
+throw  new java.io.IOException ("Stream closed");
+}var max = Math.min (n, 2147483647);
+var total = 0;
+while (total < max) {
+var len = max - total;
+if (len > this.b.length) {
+len = this.b.length;
+}len = this.read (this.b, 0, len);
+if (len == -1) {
+this.eof = true;
+break;
+}total += len;
+}
+return total;
+}, "~N");
+Clazz_overrideMethod (c$, "close", 
+function () {
+if (!this.closed) {
+if (this.myinflater) this.inflater.end ();
+if (this.close_in) this.$in.close ();
+this.closed = true;
+}});
+Clazz_defineMethod (c$, "fill", 
+function () {
+if (this.closed) {
+throw  new java.io.IOException ("Stream closed");
+}this.len = this.$in.read (this.buf, 0, this.buf.length);
+if (this.len == -1) {
+if (this.inflater.istate.wrap == 0 && !this.inflater.finished ()) {
+this.buf[0] = 0;
+this.len = 1;
+} else if (this.inflater.istate.was != -1) {
+throw  new java.io.IOException ("footer is not found");
+} else {
+throw  new java.io.EOFException ("Unexpected end of ZLIB input stream");
+}}this.inflater.setInput (this.buf, 0, this.len, true);
+});
+Clazz_overrideMethod (c$, "markSupported", 
+function () {
+return false;
+});
+Clazz_overrideMethod (c$, "mark", 
+function (readlimit) {
+}, "~N");
+Clazz_overrideMethod (c$, "reset", 
+function () {
+throw  new java.io.IOException ("mark/reset not supported");
+});
+Clazz_defineMethod (c$, "getTotalIn", 
+function () {
+return this.inflater.getTotalIn ();
+});
+Clazz_defineMethod (c$, "getTotalOut", 
+function () {
+return this.inflater.getTotalOut ();
+});
+Clazz_defineMethod (c$, "getAvailIn", 
+function () {
+if (this.inflater.avail_in <= 0) return null;
+var tmp =  Clazz_newByteArray (this.inflater.avail_in, 0);
+System.arraycopy (this.inflater.next_in, this.inflater.next_in_index, tmp, 0, this.inflater.avail_in);
+return tmp;
+});
+Clazz_defineMethod (c$, "readHeader", 
+function () {
+var empty = "".getBytes ();
+this.inflater.setInput (empty, 0, 0, false);
+this.inflater.setOutput (empty, 0, 0);
+var err = this.inflater.inflate (0);
+if (!this.inflater.istate.inParsingHeader ()) {
+return;
+}var b1 =  Clazz_newByteArray (1, 0);
+do {
+var i = this.$in.read (b1, 0, 1);
+if (i <= 0) throw  new java.io.IOException ("no input");
+this.inflater.setInput (b1, 0, b1.length, false);
+err = this.inflater.inflate (0);
+if (err != 0) throw  new java.io.IOException (this.inflater.msg);
+} while (this.inflater.istate.inParsingHeader ());
+});
+Clazz_defineMethod (c$, "getInflater", 
+function () {
+return this.inflater;
+});
+Clazz_defineStatics (c$,
+"DEFAULT_BUFSIZE", 512);
+});
+Clazz_declarePackage ("java.util.zip");
+Clazz_load (["JU.CRC32"], "java.util.zip.CRC32", null, function () {
+c$ = Clazz_declareType (java.util.zip, "CRC32", JU.CRC32);
+});
+Clazz_declarePackage ("JU");
+Clazz_load (["JU.Checksum"], "JU.CRC32", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.crc = 0;
+this.b1 = null;
+Clazz_instantialize (this, arguments);
+}, JU, "CRC32", null, JU.Checksum);
+Clazz_prepareFields (c$, function () {
+this.b1 =  Clazz_newByteArray (1, 0);
+});
+Clazz_overrideMethod (c$, "update", 
+function (buf, index, len) {
+var c = ~this.crc;
+while (--len >= 0) c = JU.CRC32.crc_table[(c ^ buf[index++]) & 0xff] ^ (c >>> 8);
+
+this.crc = ~c;
+}, "~A,~N,~N");
+Clazz_overrideMethod (c$, "reset", 
+function () {
+this.crc = 0;
+});
+Clazz_overrideMethod (c$, "resetLong", 
+function (vv) {
+this.crc = (vv & 0xffffffff);
+}, "~N");
+Clazz_overrideMethod (c$, "getValue", 
+function () {
+return this.crc & 0xffffffff;
+});
+Clazz_overrideMethod (c$, "updateByteAsInt", 
+function (b) {
+this.b1[0] = b;
+this.update (this.b1, 0, 1);
+}, "~N");
+Clazz_defineStatics (c$,
+"crc_table",  Clazz_newIntArray (-1, [0, 1996959894, -301047508, -1727442502, 124634137, 1886057615, -379345611, -1637575261, 249268274, 2044508324, -522852066, -1747789432, 162941995, 2125561021, -407360249, -1866523247, 498536548, 1789927666, -205950648, -2067906082, 450548861, 1843258603, -187386543, -2083289657, 325883990, 1684777152, -43845254, -1973040660, 335633487, 1661365465, -99664541, -1928851979, 997073096, 1281953886, -715111964, -1570279054, 1006888145, 1258607687, -770865667, -1526024853, 901097722, 1119000684, -608450090, -1396901568, 853044451, 1172266101, -589951537, -1412350631, 651767980, 1373503546, -925412992, -1076862698, 565507253, 1454621731, -809855591, -1195530993, 671266974, 1594198024, -972236366, -1324619484, 795835527, 1483230225, -1050600021, -1234817731, 1994146192, 31158534, -1731059524, -271249366, 1907459465, 112637215, -1614814043, -390540237, 2013776290, 251722036, -1777751922, -519137256, 2137656763, 141376813, -1855689577, -429695999, 1802195444, 476864866, -2056965928, -228458418, 1812370925, 453092731, -2113342271, -183516073, 1706088902, 314042704, -1950435094, -54949764, 1658658271, 366619977, -1932296973, -69972891, 1303535960, 984961486, -1547960204, -725929758, 1256170817, 1037604311, -1529756563, -740887301, 1131014506, 879679996, -1385723834, -631195440, 1141124467, 855842277, -1442165665, -586318647, 1342533948, 654459306, -1106571248, -921952122, 1466479909, 544179635, -1184443383, -832445281, 1591671054, 702138776, -1328506846, -942167884, 1504918807, 783551873, -1212326853, -1061524307, -306674912, -1698712650, 62317068, 1957810842, -355121351, -1647151185, 81470997, 1943803523, -480048366, -1805370492, 225274430, 2053790376, -468791541, -1828061283, 167816743, 2097651377, -267414716, -2029476910, 503444072, 1762050814, -144550051, -2140837941, 426522225, 1852507879, -19653770, -1982649376, 282753626, 1742555852, -105259153, -1900089351, 397917763, 1622183637, -690576408, -1580100738, 953729732, 1340076626, -776247311, -1497606297, 1068828381, 1219638859, -670225446, -1358292148, 906185462, 1090812512, -547295293, -1469587627, 829329135, 1181335161, -882789492, -1134132454, 628085408, 1382605366, -871598187, -1156888829, 570562233, 1426400815, -977650754, -1296233688, 733239954, 1555261956, -1026031705, -1244606671, 752459403, 1541320221, -1687895376, -328994266, 1969922972, 40735498, -1677130071, -351390145, 1913087877, 83908371, -1782625662, -491226604, 2075208622, 213261112, -1831694693, -438977011, 2094854071, 198958881, -2032938284, -237706686, 1759359992, 534414190, -2118248755, -155638181, 1873836001, 414664567, -2012718362, -15766928, 1711684554, 285281116, -1889165569, -127750551, 1634467795, 376229701, -1609899400, -686959890, 1308918612, 956543938, -1486412191, -799009033, 1231636301, 1047427035, -1362007478, -640263460, 1088359270, 936918000, -1447252397, -558129467, 1202900863, 817233897, -1111625188, -893730166, 1404277552, 615818150, -1160759803, -841546093, 1423857449, 601450431, -1285129682, -1000256840, 1567103746, 711928724, -1274298825, -1022587231, 1510334235, 755167117]));
+});
+Clazz_declarePackage ("JU");
+Clazz_declareInterface (JU, "Checksum");
+Clazz_declarePackage ("java.util.zip");
+Clazz_load (["java.io.FilterInputStream"], "java.util.zip.CheckedInputStream", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.cksum = null;
+Clazz_instantialize (this, arguments);
+}, java.util.zip, "CheckedInputStream", java.io.FilterInputStream);
+Clazz_defineMethod (c$, "set", 
+function (cksum) {
+this.$in = this.$in;
+this.cksum = cksum;
+return this;
+}, "JU.Checksum");
+Clazz_overrideMethod (c$, "readByteAsInt", 
+function () {
+var b = this.$in.readByteAsInt ();
+if (b != -1) {
+this.cksum.updateByteAsInt (b);
+}return b;
+});
+Clazz_overrideMethod (c$, "read", 
+function (buf, off, len) {
+len = this.$in.read (buf, off, len);
+if (len != -1) {
+this.cksum.update (buf, off, len);
+}return len;
+}, "~A,~N,~N");
+Clazz_overrideMethod (c$, "skip", 
+function (n) {
+var buf =  Clazz_newByteArray (512, 0);
+var total = 0;
+while (total < n) {
+var len = n - total;
+len = this.read (buf, 0, len < buf.length ? len : buf.length);
+if (len == -1) {
+return total;
+}total += len;
+}
+return total;
+}, "~N");
+Clazz_defineMethod (c$, "getChecksum", 
+function () {
+return this.cksum;
+});
+});
+Clazz_declarePackage ("java.util.zip");
+Clazz_load (["JU.Inflater"], "java.util.zip.Inflater", null, function () {
+c$ = Clazz_declareType (java.util.zip, "Inflater", JU.Inflater);
+Clazz_defineMethod (c$, "initialize", 
+function (nowrap) {
+return this.init (0, nowrap);
+}, "~B");
+});
+Clazz_declarePackage ("JU");
+Clazz_load (["JU.ZStream"], "JU.Inflater", ["JU.Inflate"], function () {
+c$ = Clazz_declareType (JU, "Inflater", JU.ZStream);
+Clazz_defineMethod (c$, "init", 
+function (w, nowrap) {
+this.setAdler32 ();
+if (w == 0) w = 15;
+this.istate =  new JU.Inflate (this);
+this.istate.inflateInit (nowrap ? -w : w);
+return this;
+}, "~N,~B");
+Clazz_overrideMethod (c$, "inflate", 
+function (f) {
+if (this.istate == null) return -2;
+var ret = this.istate.inflate (f);
+return ret;
+}, "~N");
+Clazz_overrideMethod (c$, "end", 
+function () {
+if (this.istate == null) return -2;
+var ret = this.istate.inflateEnd ();
+return ret;
+});
+Clazz_defineMethod (c$, "sync", 
+function () {
+if (this.istate == null) return -2;
+return this.istate.inflateSync ();
+});
+Clazz_defineMethod (c$, "syncPoint", 
+function () {
+if (this.istate == null) return -2;
+return this.istate.inflateSyncPoint ();
+});
+Clazz_defineMethod (c$, "setDictionary", 
+function (dictionary, dictLength) {
+if (this.istate == null) return -2;
+return this.istate.inflateSetDictionary (dictionary, dictLength);
+}, "~A,~N");
+Clazz_overrideMethod (c$, "finished", 
+function () {
+return this.istate.mode == 12;
+});
+Clazz_defineMethod (c$, "reset", 
+function () {
+this.avail_in = 0;
+if (this.istate != null) this.istate.reset ();
+});
+Clazz_defineStatics (c$,
+"MAX_WBITS", 15,
+"DEF_WBITS", 15,
+"$Z_STREAM_ERROR", -2);
+});
+Clazz_declarePackage ("JU");
+Clazz_load (null, "JU.ZStream", ["JU.Adler32"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.next_in = null;
+this.next_in_index = 0;
+this.avail_in = 0;
+this.total_in = 0;
+this.next_out = null;
+this.next_out_index = 0;
+this.avail_out = 0;
+this.total_out = 0;
+this.msg = null;
+this.dstate = null;
+this.istate = null;
+this.data_type = 0;
+this.checksum = null;
+Clazz_instantialize (this, arguments);
+}, JU, "ZStream");
+Clazz_defineMethod (c$, "setAdler32", 
+function () {
+this.checksum =  new JU.Adler32 ();
+});
+Clazz_defineMethod (c$, "inflate", 
+function (f) {
+if (this.istate == null) return -2;
+return this.istate.inflate (f);
+}, "~N");
+Clazz_defineMethod (c$, "deflate", 
+function (flush) {
+if (this.dstate == null) {
+return -2;
+}return this.dstate.deflate (flush);
+}, "~N");
+Clazz_defineMethod (c$, "flush_pending", 
+function () {
+var len = this.dstate.pending;
+if (len > this.avail_out) len = this.avail_out;
+if (len == 0) return;
+System.arraycopy (this.dstate.pending_buf, this.dstate.pending_out, this.next_out, this.next_out_index, len);
+this.next_out_index += len;
+this.dstate.pending_out += len;
+this.total_out += len;
+this.avail_out -= len;
+this.dstate.pending -= len;
+if (this.dstate.pending == 0) {
+this.dstate.pending_out = 0;
+}});
+Clazz_defineMethod (c$, "read_buf", 
+function (buf, start, size) {
+var len = this.avail_in;
+if (len > size) len = size;
+if (len == 0) return 0;
+this.avail_in -= len;
+if (this.dstate.wrap != 0) {
+this.checksum.update (this.next_in, this.next_in_index, len);
+}System.arraycopy (this.next_in, this.next_in_index, buf, start, len);
+this.next_in_index += len;
+this.total_in += len;
+return len;
+}, "~A,~N,~N");
+Clazz_defineMethod (c$, "getAdler", 
+function () {
+return this.checksum.getValue ();
+});
+Clazz_defineMethod (c$, "free", 
+function () {
+this.next_in = null;
+this.next_out = null;
+this.msg = null;
+});
+Clazz_defineMethod (c$, "setOutput", 
+function (buf, off, len) {
+this.next_out = buf;
+this.next_out_index = off;
+this.avail_out = len;
+}, "~A,~N,~N");
+Clazz_defineMethod (c$, "setInput", 
+function (buf, off, len, append) {
+if (len <= 0 && append && this.next_in != null) return;
+if (this.avail_in > 0 && append) {
+var tmp =  Clazz_newByteArray (this.avail_in + len, 0);
+System.arraycopy (this.next_in, this.next_in_index, tmp, 0, this.avail_in);
+System.arraycopy (buf, off, tmp, this.avail_in, len);
+this.next_in = tmp;
+this.next_in_index = 0;
+this.avail_in += len;
+} else {
+this.next_in = buf;
+this.next_in_index = off;
+this.avail_in = len;
+}}, "~A,~N,~N,~B");
+Clazz_defineMethod (c$, "getAvailIn", 
+function () {
+return this.avail_in;
+});
+Clazz_defineMethod (c$, "getTotalOut", 
+function () {
+return this.total_out;
+});
+Clazz_defineMethod (c$, "getTotalIn", 
+function () {
+return this.total_in;
+});
+c$.getBytes = Clazz_defineMethod (c$, "getBytes", 
+function (s) {
+{
+var x = [];
+for (var i = 0; i < s.length;i++) {
+var pt = s.charCodeAt(i);
+if (pt <= 0x7F) {
+x.push(pt);
+} else if (pt <= 0x7FF) {
+x.push(0xC0|((pt>>6)&0x1F));
+x.push(0x80|(pt&0x3F));
+} else if (pt <= 0xFFFF) {
+x.push(0xE0|((pt>>12)&0xF));
+x.push(0x80|((pt>>6)&0x3F));
+x.push(0x80|(pt&0x3F));
+} else {
+x.push(0x3F); // '?'
+}
+}
+return (Int32Array != Array ? new Int32Array(x) : x);
+}}, "~S");
+Clazz_defineStatics (c$,
+"Z_STREAM_ERROR", -2);
+});
+Clazz_declarePackage ("JU");
+Clazz_load (["JU.Checksum"], "JU.Adler32", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.s1 = 1;
+this.s2 = 0;
+this.b1 = null;
+Clazz_instantialize (this, arguments);
+}, JU, "Adler32", null, JU.Checksum);
+Clazz_prepareFields (c$, function () {
+this.b1 =  Clazz_newByteArray (1, 0);
+});
+Clazz_overrideMethod (c$, "resetLong", 
+function (init) {
+this.s1 = init & 0xffff;
+this.s2 = (init >> 16) & 0xffff;
+}, "~N");
+Clazz_overrideMethod (c$, "reset", 
+function () {
+this.s1 = 1;
+this.s2 = 0;
+});
+Clazz_overrideMethod (c$, "getValue", 
+function () {
+return ((this.s2 << 16) | this.s1);
+});
+Clazz_overrideMethod (c$, "update", 
+function (buf, index, len) {
+if (len == 1) {
+this.s1 += buf[index++] & 0xff;
+this.s2 += this.s1;
+this.s1 %= 65521;
+this.s2 %= 65521;
+return;
+}var len1 = Clazz_doubleToInt (len / 5552);
+var len2 = len % 5552;
+while (len1-- > 0) {
+var k = 5552;
+len -= k;
+while (k-- > 0) {
+this.s1 += buf[index++] & 0xff;
+this.s2 += this.s1;
+}
+this.s1 %= 65521;
+this.s2 %= 65521;
+}
+var k = len2;
+len -= k;
+while (k-- > 0) {
+this.s1 += buf[index++] & 0xff;
+this.s2 += this.s1;
+}
+this.s1 %= 65521;
+this.s2 %= 65521;
+}, "~A,~N,~N");
+Clazz_overrideMethod (c$, "updateByteAsInt", 
+function (b) {
+this.b1[0] = b;
+this.update (this.b1, 0, 1);
+}, "~N");
+Clazz_defineStatics (c$,
+"BASE", 65521,
+"NMAX", 5552);
+});
+Clazz_declarePackage ("JU");
+Clazz_load (["java.lang.Exception"], "JU.Inflate", ["JU.Adler32", "$.CRC32", "$.GZIPHeader", "$.InfBlocks", "java.io.ByteArrayOutputStream"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.mode = 0;
+this.method = 0;
+this.was = -1;
+this.need = 0;
+this.marker = 0;
+this.wrap = 0;
+this.wbits = 0;
+this.blocks = null;
+this.z = null;
+this.flags = 0;
+this.need_bytes = -1;
+this.crcbuf = null;
+this.gheader = null;
+if (!Clazz_isClassDefined ("JU.Inflate.Return")) {
+JU.Inflate.$Inflate$Return$ ();
+}
+this.tmp_string = null;
+Clazz_instantialize (this, arguments);
+}, JU, "Inflate");
+Clazz_prepareFields (c$, function () {
+this.crcbuf =  Clazz_newByteArray (4, 0);
+});
+Clazz_defineMethod (c$, "reset", 
+function () {
+this.inflateReset ();
+});
+Clazz_defineMethod (c$, "inflateReset", 
+function () {
+if (this.z == null) return -2;
+this.z.total_in = this.z.total_out = 0;
+this.z.msg = null;
+this.mode = 14;
+this.need_bytes = -1;
+this.blocks.reset ();
+return 0;
+});
+Clazz_defineMethod (c$, "inflateEnd", 
+function () {
+if (this.blocks != null) {
+this.blocks.free ();
+}return 0;
+});
+Clazz_makeConstructor (c$, 
+function (z) {
+this.z = z;
+}, "JU.ZStream");
+Clazz_defineMethod (c$, "inflateInit", 
+function (w) {
+this.z.msg = null;
+this.blocks = null;
+this.wrap = 0;
+if (w < 0) {
+w = -w;
+} else {
+this.wrap = (w >> 4) + 1;
+if (w < 48) w &= 15;
+}if (w < 8 || w > 15) {
+this.inflateEnd ();
+return -2;
+}if (this.blocks != null && this.wbits != w) {
+this.blocks.free ();
+this.blocks = null;
+}this.wbits = w;
+this.blocks =  new JU.InfBlocks (this.z, 1 << w);
+this.inflateReset ();
+return 0;
+}, "~N");
+Clazz_defineMethod (c$, "inflate", 
+function (f) {
+var r;
+var b;
+if (this.z == null || this.z.next_in == null) {
+if (f == 4 && this.mode == 14) return 0;
+return -2;
+}f = f == 4 ? -5 : 0;
+r = -5;
+while (true) {
+switch (this.mode) {
+case 14:
+if (this.wrap == 0) {
+this.mode = 7;
+break;
+}try {
+r = this.readBytes (2, r, f);
+} catch (e) {
+if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
+return e.r;
+} else {
+throw e;
+}
+}
+if ((this.wrap & 2) != 0 && this.need == 0x8b1f) {
+this.z.checksum =  new JU.CRC32 ();
+this.checksum (2, this.need);
+if (this.gheader == null) this.gheader =  new JU.GZIPHeader ();
+this.mode = 23;
+break;
+}this.flags = 0;
+this.method = (this.need) & 0xff;
+b = ((this.need >> 8)) & 0xff;
+if ((this.wrap & 1) == 0 || (((this.method << 8) + b) % 31) != 0) {
+this.mode = 13;
+this.z.msg = "incorrect header check";
+break;
+}if ((this.method & 0xf) != 8) {
+this.mode = 13;
+this.z.msg = "unknown compression method";
+break;
+}if ((this.method >> 4) + 8 > this.wbits) {
+this.mode = 13;
+this.z.msg = "invalid window size";
+break;
+}this.z.checksum =  new JU.Adler32 ();
+if ((b & 32) == 0) {
+this.mode = 7;
+break;
+}this.mode = 2;
+case 2:
+if (this.z.avail_in == 0) return r;
+r = f;
+this.z.avail_in--;
+this.z.total_in++;
+this.need = ((this.z.next_in[this.z.next_in_index++] & 0xff) << 24) & 0xff000000;
+this.mode = 3;
+case 3:
+if (this.z.avail_in == 0) return r;
+r = f;
+this.z.avail_in--;
+this.z.total_in++;
+this.need += ((this.z.next_in[this.z.next_in_index++] & 0xff) << 16) & 0xff0000;
+this.mode = 4;
+case 4:
+if (this.z.avail_in == 0) return r;
+r = f;
+this.z.avail_in--;
+this.z.total_in++;
+this.need += ((this.z.next_in[this.z.next_in_index++] & 0xff) << 8) & 0xff00;
+this.mode = 5;
+case 5:
+if (this.z.avail_in == 0) return r;
+r = f;
+this.z.avail_in--;
+this.z.total_in++;
+this.need += (this.z.next_in[this.z.next_in_index++] & 0xff);
+this.z.checksum.resetLong (this.need);
+this.mode = 6;
+return 2;
+case 6:
+this.mode = 13;
+this.z.msg = "need dictionary";
+this.marker = 0;
+return -2;
+case 7:
+r = this.blocks.proc (r);
+if (r == -3) {
+this.mode = 13;
+this.marker = 0;
+break;
+}if (r == 0) {
+r = f;
+}if (r != 1) {
+return r;
+}r = f;
+this.was = this.z.checksum.getValue ();
+this.blocks.reset ();
+if (this.wrap == 0) {
+this.mode = 12;
+break;
+}this.mode = 8;
+case 8:
+if (this.z.avail_in == 0) return r;
+r = f;
+this.z.avail_in--;
+this.z.total_in++;
+this.need = ((this.z.next_in[this.z.next_in_index++] & 0xff) << 24) & 0xff000000;
+this.mode = 9;
+case 9:
+if (this.z.avail_in == 0) return r;
+r = f;
+this.z.avail_in--;
+this.z.total_in++;
+this.need += ((this.z.next_in[this.z.next_in_index++] & 0xff) << 16) & 0xff0000;
+this.mode = 10;
+case 10:
+if (this.z.avail_in == 0) return r;
+r = f;
+this.z.avail_in--;
+this.z.total_in++;
+this.need += ((this.z.next_in[this.z.next_in_index++] & 0xff) << 8) & 0xff00;
+this.mode = 11;
+case 11:
+if (this.z.avail_in == 0) return r;
+r = f;
+this.z.avail_in--;
+this.z.total_in++;
+this.need += (this.z.next_in[this.z.next_in_index++] & 0xff);
+if (this.flags != 0) {
+this.need = ((this.need & 0xff000000) >> 24 | (this.need & 0x00ff0000) >> 8 | (this.need & 0x0000ff00) << 8 | (this.need & 0x0000ffff) << 24) & 0xffffffff;
+}if (((this.was)) != ((this.need))) {
+this.z.msg = "incorrect data check";
+} else if (this.flags != 0 && this.gheader != null) {
+this.gheader.crc = this.need;
+}this.mode = 15;
+case 15:
+if (this.wrap != 0 && this.flags != 0) {
+try {
+r = this.readBytes (4, r, f);
+} catch (e) {
+if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
+return e.r;
+} else {
+throw e;
+}
+}
+if (this.z.msg != null && this.z.msg.equals ("incorrect data check")) {
+this.mode = 13;
+this.marker = 5;
+break;
+}if (this.need != (this.z.total_out & 0xffffffff)) {
+this.z.msg = "incorrect length check";
+this.mode = 13;
+break;
+}this.z.msg = null;
+} else {
+if (this.z.msg != null && this.z.msg.equals ("incorrect data check")) {
+this.mode = 13;
+this.marker = 5;
+break;
+}}this.mode = 12;
+case 12:
+return 1;
+case 13:
+return -3;
+case 23:
+try {
+r = this.readBytes (2, r, f);
+} catch (e) {
+if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
+return e.r;
+} else {
+throw e;
+}
+}
+this.flags = (this.need) & 0xffff;
+if ((this.flags & 0xff) != 8) {
+this.z.msg = "unknown compression method";
+this.mode = 13;
+break;
+}if ((this.flags & 0xe000) != 0) {
+this.z.msg = "unknown header flags set";
+this.mode = 13;
+break;
+}if ((this.flags & 0x0200) != 0) {
+this.checksum (2, this.need);
+}this.mode = 16;
+case 16:
+try {
+r = this.readBytes (4, r, f);
+} catch (e) {
+if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
+return e.r;
+} else {
+throw e;
+}
+}
+if (this.gheader != null) this.gheader.time = this.need;
+if ((this.flags & 0x0200) != 0) {
+this.checksum (4, this.need);
+}this.mode = 17;
+case 17:
+try {
+r = this.readBytes (2, r, f);
+} catch (e) {
+if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
+return e.r;
+} else {
+throw e;
+}
+}
+if (this.gheader != null) {
+this.gheader.xflags = (this.need) & 0xff;
+this.gheader.os = ((this.need) >> 8) & 0xff;
+}if ((this.flags & 0x0200) != 0) {
+this.checksum (2, this.need);
+}this.mode = 18;
+case 18:
+if ((this.flags & 0x0400) != 0) {
+try {
+r = this.readBytes (2, r, f);
+} catch (e) {
+if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
+return e.r;
+} else {
+throw e;
+}
+}
+if (this.gheader != null) {
+this.gheader.extra =  Clazz_newByteArray ((this.need) & 0xffff, 0);
+}if ((this.flags & 0x0200) != 0) {
+this.checksum (2, this.need);
+}} else if (this.gheader != null) {
+this.gheader.extra = null;
+}this.mode = 19;
+case 19:
+if ((this.flags & 0x0400) != 0) {
+try {
+r = this.readBytes (r, f);
+if (this.gheader != null) {
+var foo = this.tmp_string.toByteArray ();
+this.tmp_string = null;
+if (foo.length == this.gheader.extra.length) {
+System.arraycopy (foo, 0, this.gheader.extra, 0, foo.length);
+} else {
+this.z.msg = "bad extra field length";
+this.mode = 13;
+break;
+}}} catch (e) {
+if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
+return e.r;
+} else {
+throw e;
+}
+}
+} else if (this.gheader != null) {
+this.gheader.extra = null;
+}this.mode = 20;
+case 20:
+if ((this.flags & 0x0800) != 0) {
+try {
+r = this.readString (r, f);
+if (this.gheader != null) {
+this.gheader.name = this.tmp_string.toByteArray ();
+}this.tmp_string = null;
+} catch (e) {
+if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
+return e.r;
+} else {
+throw e;
+}
+}
+} else if (this.gheader != null) {
+this.gheader.name = null;
+}this.mode = 21;
+case 21:
+if ((this.flags & 0x1000) != 0) {
+try {
+r = this.readString (r, f);
+if (this.gheader != null) {
+this.gheader.comment = this.tmp_string.toByteArray ();
+}this.tmp_string = null;
+} catch (e) {
+if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
+return e.r;
+} else {
+throw e;
+}
+}
+} else if (this.gheader != null) {
+this.gheader.comment = null;
+}this.mode = 22;
+case 22:
+if ((this.flags & 0x0200) != 0) {
+try {
+r = this.readBytes (2, r, f);
+} catch (e) {
+if (Clazz_exceptionOf (e, JU.Inflate.Return)) {
+return e.r;
+} else {
+throw e;
+}
+}
+if (this.gheader != null) {
+this.gheader.hcrc = (this.need & 0xffff);
+}if (this.need != (this.z.checksum.getValue () & 0xffff)) {
+this.mode = 13;
+this.z.msg = "header crc mismatch";
+this.marker = 5;
+break;
+}}this.z.checksum =  new JU.CRC32 ();
+this.mode = 7;
+break;
+default:
+return -2;
+}
+}
+}, "~N");
+Clazz_defineMethod (c$, "inflateSetDictionary", 
+function (dictionary, dictLength) {
+if (this.z == null || (this.mode != 6 && this.wrap != 0)) {
+return -2;
+}var index = 0;
+var length = dictLength;
+if (this.mode == 6) {
+var adler_need = this.z.checksum.getValue ();
+this.z.checksum.reset ();
+this.z.checksum.update (dictionary, 0, dictLength);
+if (this.z.checksum.getValue () != adler_need) {
+return -3;
+}}this.z.checksum.reset ();
+if (length >= (1 << this.wbits)) {
+length = (1 << this.wbits) - 1;
+index = dictLength - length;
+}this.blocks.set_dictionary (dictionary, index, length);
+this.mode = 7;
+return 0;
+}, "~A,~N");
+Clazz_defineMethod (c$, "inflateSync", 
+function () {
+var n;
+var p;
+var m;
+var r;
+var w;
+if (this.z == null) return -2;
+if (this.mode != 13) {
+this.mode = 13;
+this.marker = 0;
+}if ((n = this.z.avail_in) == 0) return -5;
+p = this.z.next_in_index;
+m = this.marker;
+while (n != 0 && m < 4) {
+if (this.z.next_in[p] == JU.Inflate.mark[m]) {
+m++;
+} else if (this.z.next_in[p] != 0) {
+m = 0;
+} else {
+m = 4 - m;
+}p++;
+n--;
+}
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.z.avail_in = n;
+this.marker = m;
+if (m != 4) {
+return -3;
+}r = this.z.total_in;
+w = this.z.total_out;
+this.inflateReset ();
+this.z.total_in = r;
+this.z.total_out = w;
+this.mode = 7;
+return 0;
+});
+Clazz_defineMethod (c$, "inflateSyncPoint", 
+function () {
+if (this.z == null || this.blocks == null) return -2;
+return this.blocks.sync_point ();
+});
+Clazz_defineMethod (c$, "readBytes", 
+ function (n, r, f) {
+if (this.need_bytes == -1) {
+this.need_bytes = n;
+this.need = 0;
+}while (this.need_bytes > 0) {
+if (this.z.avail_in == 0) {
+throw Clazz_innerTypeInstance (JU.Inflate.Return, this, null, r);
+}r = f;
+this.z.avail_in--;
+this.z.total_in++;
+this.need = this.need | ((this.z.next_in[this.z.next_in_index++] & 0xff) << ((n - this.need_bytes) * 8));
+this.need_bytes--;
+}
+if (n == 2) {
+this.need &= 0xffff;
+} else if (n == 4) {
+this.need &= 0xffffffff;
+}this.need_bytes = -1;
+return r;
+}, "~N,~N,~N");
+Clazz_defineMethod (c$, "readString", 
+ function (r, f) {
+if (this.tmp_string == null) {
+this.tmp_string =  new java.io.ByteArrayOutputStream ();
+}var b = 0;
+do {
+if (this.z.avail_in == 0) {
+throw Clazz_innerTypeInstance (JU.Inflate.Return, this, null, r);
+}r = f;
+this.z.avail_in--;
+this.z.total_in++;
+b = this.z.next_in[this.z.next_in_index];
+if (b != 0) this.tmp_string.write (this.z.next_in, this.z.next_in_index, 1);
+this.z.checksum.update (this.z.next_in, this.z.next_in_index, 1);
+this.z.next_in_index++;
+} while (b != 0);
+return r;
+}, "~N,~N");
+Clazz_defineMethod (c$, "readBytes", 
+ function (r, f) {
+if (this.tmp_string == null) {
+this.tmp_string =  new java.io.ByteArrayOutputStream ();
+}while (this.need > 0) {
+if (this.z.avail_in == 0) {
+throw Clazz_innerTypeInstance (JU.Inflate.Return, this, null, r);
+}r = f;
+this.z.avail_in--;
+this.z.total_in++;
+this.tmp_string.write (this.z.next_in, this.z.next_in_index, 1);
+this.z.checksum.update (this.z.next_in, this.z.next_in_index, 1);
+this.z.next_in_index++;
+this.need--;
+}
+return r;
+}, "~N,~N");
+Clazz_defineMethod (c$, "checksum", 
+ function (n, v) {
+for (var i = 0; i < n; i++) {
+this.crcbuf[i] = (v & 0xff);
+v >>= 8;
+}
+this.z.checksum.update (this.crcbuf, 0, n);
+}, "~N,~N");
+Clazz_defineMethod (c$, "getGZIPHeader", 
+function () {
+return this.gheader;
+});
+Clazz_defineMethod (c$, "inParsingHeader", 
+function () {
+switch (this.mode) {
+case 14:
+case 2:
+case 3:
+case 4:
+case 5:
+case 23:
+case 16:
+case 17:
+case 18:
+case 19:
+case 20:
+case 21:
+case 22:
+return true;
+default:
+return false;
+}
+});
+c$.$Inflate$Return$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.r = 0;
+Clazz_instantialize (this, arguments);
+}, JU.Inflate, "Return", Exception);
+Clazz_makeConstructor (c$, 
+function (a) {
+Clazz_superConstructor (this, JU.Inflate.Return, []);
+this.r = a;
+}, "~N");
+c$ = Clazz_p0p ();
+};
+Clazz_defineStatics (c$,
+"PRESET_DICT", 0x20,
+"Z_NO_FLUSH", 0,
+"Z_PARTIAL_FLUSH", 1,
+"Z_SYNC_FLUSH", 2,
+"Z_FULL_FLUSH", 3,
+"Z_FINISH", 4,
+"Z_DEFLATED", 8,
+"Z_OK", 0,
+"Z_STREAM_END", 1,
+"Z_NEED_DICT", 2,
+"Z_STREAM_ERROR", -2,
+"Z_DATA_ERROR", -3,
+"Z_BUF_ERROR", -5,
+"DICT4", 2,
+"DICT3", 3,
+"DICT2", 4,
+"DICT1", 5,
+"DICT0", 6,
+"BLOCKS", 7,
+"CHECK4", 8,
+"CHECK3", 9,
+"CHECK2", 10,
+"CHECK1", 11,
+"DONE", 12,
+"BAD", 13,
+"HEAD", 14,
+"LENGTH", 15,
+"TIME", 16,
+"OS", 17,
+"EXLEN", 18,
+"EXTRA", 19,
+"NAME", 20,
+"COMMENT", 21,
+"HCRC", 22,
+"FLAGS", 23,
+"mark",  Clazz_newByteArray (-1, [0, 0, 0xff, 0xff]));
+});
+Clazz_declarePackage ("JU");
+Clazz_load (null, "JU.GZIPHeader", ["JU.ZStream", "java.lang.IllegalArgumentException", "$.InternalError"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.text = false;
+this.fhcrc = false;
+this.time = 0;
+this.xflags = 0;
+this.os = 255;
+this.extra = null;
+this.name = null;
+this.comment = null;
+this.hcrc = 0;
+this.crc = 0;
+this.done = false;
+this.mtime = 0;
+Clazz_instantialize (this, arguments);
+}, JU, "GZIPHeader", null, Cloneable);
+Clazz_defineMethod (c$, "setModifiedTime", 
+function (mtime) {
+this.mtime = mtime;
+}, "~N");
+Clazz_defineMethod (c$, "getModifiedTime", 
+function () {
+return this.mtime;
+});
+Clazz_defineMethod (c$, "setOS", 
+function (os) {
+if ((0 <= os && os <= 13) || os == 255) this.os = os;
+ else throw  new IllegalArgumentException ("os: " + os);
+}, "~N");
+Clazz_defineMethod (c$, "getOS", 
+function () {
+return this.os;
+});
+Clazz_defineMethod (c$, "setName", 
+function (name) {
+this.name = JU.ZStream.getBytes (name);
+}, "~S");
+Clazz_defineMethod (c$, "getName", 
+function () {
+if (this.name == null) return "";
+try {
+return  String.instantialize (this.name, "ISO-8859-1");
+} catch (e) {
+if (Clazz_exceptionOf (e, java.io.UnsupportedEncodingException)) {
+throw  new InternalError (e.toString ());
+} else {
+throw e;
+}
+}
+});
+Clazz_defineMethod (c$, "setComment", 
+function (comment) {
+this.comment = JU.ZStream.getBytes (comment);
+}, "~S");
+Clazz_defineMethod (c$, "getComment", 
+function () {
+if (this.comment == null) return "";
+try {
+return  String.instantialize (this.comment, "ISO-8859-1");
+} catch (e) {
+if (Clazz_exceptionOf (e, java.io.UnsupportedEncodingException)) {
+throw  new InternalError (e.toString ());
+} else {
+throw e;
+}
+}
+});
+Clazz_defineMethod (c$, "setCRC", 
+function (crc) {
+this.crc = crc;
+}, "~N");
+Clazz_defineMethod (c$, "getCRC", 
+function () {
+return this.crc;
+});
+Clazz_defineMethod (c$, "put", 
+function (d) {
+var flag = 0;
+if (this.text) {
+flag |= 1;
+}if (this.fhcrc) {
+flag |= 2;
+}if (this.extra != null) {
+flag |= 4;
+}if (this.name != null) {
+flag |= 8;
+}if (this.comment != null) {
+flag |= 16;
+}var xfl = 0;
+if (d.level == 1) {
+xfl |= 4;
+} else if (d.level == 9) {
+xfl |= 2;
+}d.put_short (0x8b1f);
+d.put_byteB (8);
+d.put_byteB (flag);
+d.put_byteB (this.mtime);
+d.put_byteB ((this.mtime >> 8));
+d.put_byteB ((this.mtime >> 16));
+d.put_byteB ((this.mtime >> 24));
+d.put_byteB (xfl);
+d.put_byteB (this.os);
+if (this.extra != null) {
+d.put_byteB (this.extra.length);
+d.put_byteB ((this.extra.length >> 8));
+d.put_byte (this.extra, 0, this.extra.length);
+}if (this.name != null) {
+d.put_byte (this.name, 0, this.name.length);
+d.put_byteB (0);
+}if (this.comment != null) {
+d.put_byte (this.comment, 0, this.comment.length);
+d.put_byteB (0);
+}}, "JU.Deflate");
+Clazz_defineMethod (c$, "clone", 
+function () {
+var gheader = Clazz_superCall (this, JU.GZIPHeader, "clone", []);
+var tmp;
+if (gheader.extra != null) {
+tmp =  Clazz_newByteArray (gheader.extra.length, 0);
+System.arraycopy (gheader.extra, 0, tmp, 0, tmp.length);
+gheader.extra = tmp;
+}if (gheader.name != null) {
+tmp =  Clazz_newByteArray (gheader.name.length, 0);
+System.arraycopy (gheader.name, 0, tmp, 0, tmp.length);
+gheader.name = tmp;
+}if (gheader.comment != null) {
+tmp =  Clazz_newByteArray (gheader.comment.length, 0);
+System.arraycopy (gheader.comment, 0, tmp, 0, tmp.length);
+gheader.comment = tmp;
+}return gheader;
+});
+Clazz_defineStatics (c$,
+"OS_MSDOS", 0x00,
+"OS_AMIGA", 0x01,
+"OS_VMS", 0x02,
+"OS_UNIX", 0x03,
+"OS_ATARI", 0x05,
+"OS_OS2", 0x06,
+"OS_MACOS", 0x07,
+"OS_TOPS20", 0x0a,
+"OS_WIN32", 0x0b,
+"OS_VMCMS", 0x04,
+"OS_ZSYSTEM", 0x08,
+"OS_CPM", 0x09,
+"OS_QDOS", 0x0c,
+"OS_RISCOS", 0x0d,
+"OS_UNKNOWN", 0xff);
+});
+Clazz_declarePackage ("JU");
+Clazz_load (["JU.InfTree"], "JU.InfBlocks", ["JU.InfCodes"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.mode = 0;
+this.left = 0;
+this.table = 0;
+this.index = 0;
+this.blens = null;
+this.bb = null;
+this.tb = null;
+this.bl = null;
+this.bd = null;
+this.tl = null;
+this.td = null;
+this.tli = null;
+this.tdi = null;
+this.codes = null;
+this.last = 0;
+this.bitk = 0;
+this.bitb = 0;
+this.hufts = null;
+this.window = null;
+this.end = 0;
+this.read = 0;
+this.write = 0;
+this.check = false;
+this.inftree = null;
+this.z = null;
+Clazz_instantialize (this, arguments);
+}, JU, "InfBlocks");
+Clazz_prepareFields (c$, function () {
+this.bb =  Clazz_newIntArray (1, 0);
+this.tb =  Clazz_newIntArray (1, 0);
+this.bl =  Clazz_newIntArray (1, 0);
+this.bd =  Clazz_newIntArray (1, 0);
+this.tli =  Clazz_newIntArray (1, 0);
+this.tdi =  Clazz_newIntArray (1, 0);
+this.inftree =  new JU.InfTree ();
+});
+Clazz_makeConstructor (c$, 
+function (z, w) {
+this.z = z;
+this.codes =  new JU.InfCodes (this.z, this);
+this.hufts =  Clazz_newIntArray (4320, 0);
+this.window =  Clazz_newByteArray (w, 0);
+this.end = w;
+this.check = (z.istate.wrap == 0) ? false : true;
+this.mode = 0;
+{
+this.tl = Clazz_newArray(1, null);
+this.td = Clazz_newArray(1, null);
+}this.reset ();
+}, "JU.ZStream,~N");
+Clazz_defineMethod (c$, "reset", 
+function () {
+if (this.mode == 6) {
+this.codes.free (this.z);
+}this.mode = 0;
+this.bitk = 0;
+this.bitb = 0;
+this.read = this.write = 0;
+if (this.check) {
+this.z.checksum.reset ();
+}});
+Clazz_defineMethod (c$, "proc", 
+function (r) {
+var t;
+var b;
+var k;
+var p;
+var n;
+var q;
+var m;
+{
+p = this.z.next_in_index;
+n = this.z.avail_in;
+b = this.bitb;
+k = this.bitk;
+}{
+q = this.write;
+m = (q < this.read ? this.read - q - 1 : this.end - q);
+}while (true) {
+switch (this.mode) {
+case 0:
+while (k < (3)) {
+if (n != 0) {
+r = 0;
+} else {
+this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+return this.inflate_flush (r);
+}n--;
+b |= (this.z.next_in[p++] & 0xff) << k;
+k += 8;
+}
+t = (b & 7);
+this.last = t & 1;
+switch (t >>> 1) {
+case 0:
+{
+b >>>= (3);
+k -= (3);
+}t = k & 7;
+{
+b >>>= (t);
+k -= (t);
+}this.mode = 1;
+break;
+case 1:
+JU.InfTree.inflate_trees_fixed (this.bl, this.bd, this.tl, this.td, this.z);
+this.codes.init (this.bl[0], this.bd[0], this.tl[0], 0, this.td[0], 0);
+{
+b >>>= (3);
+k -= (3);
+}this.mode = 6;
+break;
+case 2:
+{
+b >>>= (3);
+k -= (3);
+}this.mode = 3;
+break;
+case 3:
+{
+b >>>= (3);
+k -= (3);
+}this.mode = 9;
+this.z.msg = "invalid block type";
+r = -3;
+this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+return this.inflate_flush (r);
+}
+break;
+case 1:
+while (k < (32)) {
+if (n != 0) {
+r = 0;
+} else {
+this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+return this.inflate_flush (r);
+}n--;
+b |= (this.z.next_in[p++] & 0xff) << k;
+k += 8;
+}
+if ((((~b) >>> 16) & 0xffff) != (b & 0xffff)) {
+this.mode = 9;
+this.z.msg = "invalid stored block lengths";
+r = -3;
+this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+return this.inflate_flush (r);
+}this.left = (b & 0xffff);
+b = k = 0;
+this.mode = this.left != 0 ? 2 : (this.last != 0 ? 7 : 0);
+break;
+case 2:
+if (n == 0) {
+this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+return this.inflate_flush (r);
+}if (m == 0) {
+if (q == this.end && this.read != 0) {
+q = 0;
+m = (q < this.read ? this.read - q - 1 : this.end - q);
+}if (m == 0) {
+this.write = q;
+r = this.inflate_flush (r);
+q = this.write;
+m = (q < this.read ? this.read - q - 1 : this.end - q);
+if (q == this.end && this.read != 0) {
+q = 0;
+m = (q < this.read ? this.read - q - 1 : this.end - q);
+}if (m == 0) {
+this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+return this.inflate_flush (r);
+}}}r = 0;
+t = this.left;
+if (t > n) t = n;
+if (t > m) t = m;
+System.arraycopy (this.z.next_in, p, this.window, q, t);
+p += t;
+n -= t;
+q += t;
+m -= t;
+if ((this.left -= t) != 0) break;
+this.mode = this.last != 0 ? 7 : 0;
+break;
+case 3:
+while (k < (14)) {
+if (n != 0) {
+r = 0;
+} else {
+this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+return this.inflate_flush (r);
+}n--;
+b |= (this.z.next_in[p++] & 0xff) << k;
+k += 8;
+}
+this.table = t = (b & 0x3fff);
+if ((t & 0x1f) > 29 || ((t >> 5) & 0x1f) > 29) {
+this.mode = 9;
+this.z.msg = "too many length or distance symbols";
+r = -3;
+this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+return this.inflate_flush (r);
+}t = 258 + (t & 0x1f) + ((t >> 5) & 0x1f);
+if (this.blens == null || this.blens.length < t) {
+this.blens =  Clazz_newIntArray (t, 0);
+} else {
+for (var i = 0; i < t; i++) {
+this.blens[i] = 0;
+}
+}{
+b >>>= (14);
+k -= (14);
+}this.index = 0;
+this.mode = 4;
+case 4:
+while (this.index < 4 + (this.table >>> 10)) {
+while (k < (3)) {
+if (n != 0) {
+r = 0;
+} else {
+this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+return this.inflate_flush (r);
+}n--;
+b |= (this.z.next_in[p++] & 0xff) << k;
+k += 8;
+}
+this.blens[JU.InfBlocks.border[this.index++]] = b & 7;
+{
+b >>>= (3);
+k -= (3);
+}}
+while (this.index < 19) {
+this.blens[JU.InfBlocks.border[this.index++]] = 0;
+}
+this.bb[0] = 7;
+t = this.inftree.inflate_trees_bits (this.blens, this.bb, this.tb, this.hufts, this.z);
+if (t != 0) {
+r = t;
+if (r == -3) {
+this.blens = null;
+this.mode = 9;
+}this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+return this.inflate_flush (r);
+}this.index = 0;
+this.mode = 5;
+case 5:
+while (true) {
+t = this.table;
+if (!(this.index < 258 + (t & 0x1f) + ((t >> 5) & 0x1f))) {
+break;
+}var i;
+var j;
+var c;
+t = this.bb[0];
+while (k < (t)) {
+if (n != 0) {
+r = 0;
+} else {
+this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+return this.inflate_flush (r);
+}n--;
+b |= (this.z.next_in[p++] & 0xff) << k;
+k += 8;
+}
+t = this.hufts[(this.tb[0] + (b & JU.InfBlocks.inflate_mask[t])) * 3 + 1];
+c = this.hufts[(this.tb[0] + (b & JU.InfBlocks.inflate_mask[t])) * 3 + 2];
+if (c < 16) {
+b >>>= (t);
+k -= (t);
+this.blens[this.index++] = c;
+} else {
+i = c == 18 ? 7 : c - 14;
+j = c == 18 ? 11 : 3;
+while (k < (t + i)) {
+if (n != 0) {
+r = 0;
+} else {
+this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+return this.inflate_flush (r);
+}n--;
+b |= (this.z.next_in[p++] & 0xff) << k;
+k += 8;
+}
+b >>>= (t);
+k -= (t);
+j += (b & JU.InfBlocks.inflate_mask[i]);
+b >>>= (i);
+k -= (i);
+i = this.index;
+t = this.table;
+if (i + j > 258 + (t & 0x1f) + ((t >> 5) & 0x1f) || (c == 16 && i < 1)) {
+this.blens = null;
+this.mode = 9;
+this.z.msg = "invalid bit length repeat";
+r = -3;
+this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+return this.inflate_flush (r);
+}c = c == 16 ? this.blens[i - 1] : 0;
+do {
+this.blens[i++] = c;
+} while (--j != 0);
+this.index = i;
+}}
+this.tb[0] = -1;
+{
+this.bl[0] = 9;
+this.bd[0] = 6;
+t = this.table;
+t = this.inftree.inflate_trees_dynamic (257 + (t & 0x1f), 1 + ((t >> 5) & 0x1f), this.blens, this.bl, this.bd, this.tli, this.tdi, this.hufts, this.z);
+if (t != 0) {
+if (t == -3) {
+this.blens = null;
+this.mode = 9;
+}r = t;
+this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+return this.inflate_flush (r);
+}this.codes.init (this.bl[0], this.bd[0], this.hufts, this.tli[0], this.hufts, this.tdi[0]);
+}this.mode = 6;
+case 6:
+this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+if ((r = this.codes.proc (r)) != 1) {
+return this.inflate_flush (r);
+}r = 0;
+this.codes.free (this.z);
+p = this.z.next_in_index;
+n = this.z.avail_in;
+b = this.bitb;
+k = this.bitk;
+q = this.write;
+m = (q < this.read ? this.read - q - 1 : this.end - q);
+if (this.last == 0) {
+this.mode = 0;
+break;
+}this.mode = 7;
+case 7:
+this.write = q;
+r = this.inflate_flush (r);
+q = this.write;
+m = (q < this.read ? this.read - q - 1 : this.end - q);
+if (this.read != this.write) {
+this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+return this.inflate_flush (r);
+}this.mode = 8;
+case 8:
+r = 1;
+this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+return this.inflate_flush (r);
+case 9:
+r = -3;
+this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+return this.inflate_flush (r);
+default:
+r = -2;
+this.bitb = b;
+this.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.write = q;
+return this.inflate_flush (r);
+}
+}
+}, "~N");
+Clazz_defineMethod (c$, "free", 
+function () {
+this.reset ();
+this.window = null;
+this.hufts = null;
+});
+Clazz_defineMethod (c$, "set_dictionary", 
+function (d, start, n) {
+System.arraycopy (d, start, this.window, 0, n);
+this.read = this.write = n;
+}, "~A,~N,~N");
+Clazz_defineMethod (c$, "sync_point", 
+function () {
+return this.mode == 1 ? 1 : 0;
+});
+Clazz_defineMethod (c$, "inflate_flush", 
+function (r) {
+var n;
+var p;
+var q;
+p = this.z.next_out_index;
+q = this.read;
+n = ((q <= this.write ? this.write : this.end) - q);
+if (n > this.z.avail_out) n = this.z.avail_out;
+if (n != 0 && r == -5) r = 0;
+this.z.avail_out -= n;
+this.z.total_out += n;
+if (this.check && n > 0) {
+this.z.checksum.update (this.window, q, n);
+}System.arraycopy (this.window, q, this.z.next_out, p, n);
+p += n;
+q += n;
+if (q == this.end) {
+q = 0;
+if (this.write == this.end) this.write = 0;
+n = this.write - q;
+if (n > this.z.avail_out) n = this.z.avail_out;
+if (n != 0 && r == -5) r = 0;
+this.z.avail_out -= n;
+this.z.total_out += n;
+if (this.check && n > 0) {
+this.z.checksum.update (this.window, q, n);
+}System.arraycopy (this.window, q, this.z.next_out, p, n);
+p += n;
+q += n;
+}this.z.next_out_index = p;
+this.read = q;
+return r;
+}, "~N");
+Clazz_defineStatics (c$,
+"MANY", 1440,
+"inflate_mask",  Clazz_newIntArray (-1, [0x00000000, 0x00000001, 0x00000003, 0x00000007, 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f, 0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff, 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff, 0x0000ffff]),
+"border",  Clazz_newIntArray (-1, [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]),
+"Z_OK", 0,
+"Z_STREAM_END", 1,
+"Z_STREAM_ERROR", -2,
+"Z_DATA_ERROR", -3,
+"Z_BUF_ERROR", -5,
+"TYPE", 0,
+"LENS", 1,
+"STORED", 2,
+"TABLE", 3,
+"BTREE", 4,
+"DTREE", 5,
+"CODES", 6,
+"DRY", 7,
+"DONE", 8,
+"BAD", 9);
+});
+Clazz_declarePackage ("JU");
+c$ = Clazz_decorateAsClass (function () {
+this.hn = null;
+this.v = null;
+this.c = null;
+this.r = null;
+this.u = null;
+this.x = null;
+Clazz_instantialize (this, arguments);
+}, JU, "InfTree");
+Clazz_defineMethod (c$, "huft_build", 
+ function (b, bindex, n, s, d, e, t, m, hp, hn, v) {
+var a;
+var f;
+var g;
+var h;
+var i;
+var j;
+var k;
+var l;
+var mask;
+var p;
+var q;
+var w;
+var xp;
+var y;
+var z;
+p = 0;
+i = n;
+do {
+this.c[b[bindex + p]]++;
+p++;
+i--;
+} while (i != 0);
+if (this.c[0] == n) {
+t[0] = -1;
+m[0] = 0;
+return 0;
+}l = m[0];
+for (j = 1; j <= 15; j++) if (this.c[j] != 0) break;
+
+k = j;
+if (l < j) {
+l = j;
+}for (i = 15; i != 0; i--) {
+if (this.c[i] != 0) break;
+}
+g = i;
+if (l > i) {
+l = i;
+}m[0] = l;
+for (y = 1 << j; j < i; j++, y <<= 1) {
+if ((y -= this.c[j]) < 0) {
+return -3;
+}}
+if ((y -= this.c[i]) < 0) {
+return -3;
+}this.c[i] += y;
+this.x[1] = j = 0;
+p = 1;
+xp = 2;
+while (--i != 0) {
+this.x[xp] = (j += this.c[p]);
+xp++;
+p++;
+}
+i = 0;
+p = 0;
+do {
+if ((j = b[bindex + p]) != 0) {
+v[this.x[j]++] = i;
+}p++;
+} while (++i < n);
+n = this.x[g];
+this.x[0] = i = 0;
+p = 0;
+h = -1;
+w = -l;
+this.u[0] = 0;
+q = 0;
+z = 0;
+for (; k <= g; k++) {
+a = this.c[k];
+while (a-- != 0) {
+while (k > w + l) {
+h++;
+w += l;
+z = g - w;
+z = (z > l) ? l : z;
+if ((f = 1 << (j = k - w)) > a + 1) {
+f -= a + 1;
+xp = k;
+if (j < z) {
+while (++j < z) {
+if ((f <<= 1) <= this.c[++xp]) break;
+f -= this.c[xp];
+}
+}}z = 1 << j;
+if (hn[0] + z > 1440) {
+return -3;
+}this.u[h] = q = hn[0];
+hn[0] += z;
+if (h != 0) {
+this.x[h] = i;
+this.r[0] = j;
+this.r[1] = l;
+j = i >>> (w - l);
+this.r[2] = (q - this.u[h - 1] - j);
+System.arraycopy (this.r, 0, hp, (this.u[h - 1] + j) * 3, 3);
+} else {
+t[0] = q;
+}}
+this.r[1] = (k - w);
+if (p >= n) {
+this.r[0] = 192;
+} else if (v[p] < s) {
+this.r[0] = (v[p] < 256 ? 0 : 96);
+this.r[2] = v[p++];
+} else {
+this.r[0] = (e[v[p] - s] + 16 + 64);
+this.r[2] = d[v[p++] - s];
+}f = 1 << (k - w);
+for (j = i >>> w; j < z; j += f) {
+System.arraycopy (this.r, 0, hp, (q + j) * 3, 3);
+}
+for (j = 1 << (k - 1); (i & j) != 0; j >>>= 1) {
+i ^= j;
+}
+i ^= j;
+mask = (1 << w) - 1;
+while ((i & mask) != this.x[h]) {
+h--;
+w -= l;
+mask = (1 << w) - 1;
+}
+}
+}
+return y != 0 && g != 1 ? -5 : 0;
+}, "~A,~N,~N,~N,~A,~A,~A,~A,~A,~A,~A");
+Clazz_defineMethod (c$, "inflate_trees_bits", 
+function (c, bb, tb, hp, z) {
+var result;
+this.initWorkArea (19);
+this.hn[0] = 0;
+result = this.huft_build (c, 0, 19, 19, null, null, tb, bb, hp, this.hn, this.v);
+if (result == -3) {
+z.msg = "oversubscribed dynamic bit lengths tree";
+} else if (result == -5 || bb[0] == 0) {
+z.msg = "incomplete dynamic bit lengths tree";
+result = -3;
+}return result;
+}, "~A,~A,~A,~A,JU.ZStream");
+Clazz_defineMethod (c$, "inflate_trees_dynamic", 
+function (nl, nd, c, bl, bd, tl, td, hp, z) {
+var result;
+this.initWorkArea (288);
+this.hn[0] = 0;
+result = this.huft_build (c, 0, nl, 257, JU.InfTree.cplens, JU.InfTree.cplext, tl, bl, hp, this.hn, this.v);
+if (result != 0 || bl[0] == 0) {
+if (result == -3) {
+z.msg = "oversubscribed literal/length tree";
+} else if (result != -4) {
+z.msg = "incomplete literal/length tree";
+result = -3;
+}return result;
+}this.initWorkArea (288);
+result = this.huft_build (c, nl, nd, 0, JU.InfTree.cpdist, JU.InfTree.cpdext, td, bd, hp, this.hn, this.v);
+if (result != 0 || (bd[0] == 0 && nl > 257)) {
+if (result == -3) {
+z.msg = "oversubscribed distance tree";
+} else if (result == -5) {
+z.msg = "incomplete distance tree";
+result = -3;
+} else if (result != -4) {
+z.msg = "empty distance tree with lengths";
+result = -3;
+}return result;
+}return 0;
+}, "~N,~N,~A,~A,~A,~A,~A,~A,JU.ZStream");
+c$.inflate_trees_fixed = Clazz_defineMethod (c$, "inflate_trees_fixed", 
+function (bl, bd, tl, td, z) {
+bl[0] = 9;
+bd[0] = 5;
+tl[0] = JU.InfTree.fixed_tl;
+td[0] = JU.InfTree.fixed_td;
+return 0;
+}, "~A,~A,~A,~A,JU.ZStream");
+Clazz_defineMethod (c$, "initWorkArea", 
+ function (vsize) {
+if (this.hn == null) {
+this.hn =  Clazz_newIntArray (1, 0);
+this.v =  Clazz_newIntArray (vsize, 0);
+this.c =  Clazz_newIntArray (16, 0);
+this.r =  Clazz_newIntArray (3, 0);
+this.u =  Clazz_newIntArray (15, 0);
+this.x =  Clazz_newIntArray (16, 0);
+}if (this.v.length < vsize) {
+this.v =  Clazz_newIntArray (vsize, 0);
+}for (var i = 0; i < vsize; i++) {
+this.v[i] = 0;
+}
+for (var i = 0; i < 16; i++) {
+this.c[i] = 0;
+}
+for (var i = 0; i < 3; i++) {
+this.r[i] = 0;
+}
+System.arraycopy (this.c, 0, this.u, 0, 15);
+System.arraycopy (this.c, 0, this.x, 0, 16);
+}, "~N");
+Clazz_defineStatics (c$,
+"MANY", 1440,
+"Z_OK", 0,
+"Z_DATA_ERROR", -3,
+"Z_MEM_ERROR", -4,
+"Z_BUF_ERROR", -5,
+"fixed_bl", 9,
+"fixed_bd", 5,
+"fixed_tl",  Clazz_newIntArray (-1, [96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9, 192, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 160, 0, 8, 0, 0, 8, 128, 0, 8, 64, 0, 9, 224, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 144, 83, 7, 59, 0, 8, 120, 0, 8, 56, 0, 9, 208, 81, 7, 17, 0, 8, 104, 0, 8, 40, 0, 9, 176, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 240, 80, 7, 4, 0, 8, 84, 0, 8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 200, 81, 7, 13, 0, 8, 100, 0, 8, 36, 0, 9, 168, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0, 9, 232, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 152, 84, 7, 83, 0, 8, 124, 0, 8, 60, 0, 9, 216, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 184, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9, 248, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85, 8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 196, 81, 7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 164, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0, 9, 228, 80, 7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 148, 84, 7, 67, 0, 8, 122, 0, 8, 58, 0, 9, 212, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 180, 0, 8, 10, 0, 8, 138, 0, 8, 74, 0, 9, 244, 80, 7, 5, 0, 8, 86, 0, 8, 22, 192, 8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 204, 81, 7, 15, 0, 8, 102, 0, 8, 38, 0, 9, 172, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 236, 80, 7, 9, 0, 8, 94, 0, 8, 30, 0, 9, 156, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9, 220, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 188, 0, 8, 14, 0, 8, 142, 0, 8, 78, 0, 9, 252, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31, 0, 8, 113, 0, 8, 49, 0, 9, 194, 80, 7, 10, 0, 8, 97, 0, 8, 33, 0, 9, 162, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 226, 80, 7, 6, 0, 8, 89, 0, 8, 25, 0, 9, 146, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 210, 81, 7, 17, 0, 8, 105, 0, 8, 41, 0, 9, 178, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0, 9, 242, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8, 117, 0, 8, 53, 0, 9, 202, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 170, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 234, 80, 7, 8, 0, 8, 93, 0, 8, 29, 0, 9, 154, 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 218, 82, 7, 23, 0, 8, 109, 0, 8, 45, 0, 9, 186, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0, 9, 250, 80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0, 8, 51, 0, 9, 198, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 166, 0, 8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 230, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 150, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 214, 82, 7, 19, 0, 8, 107, 0, 8, 43, 0, 9, 182, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 246, 80, 7, 5, 0, 8, 87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0, 8, 119, 0, 8, 55, 0, 9, 206, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 174, 0, 8, 7, 0, 8, 135, 0, 8, 71, 0, 9, 238, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 158, 84, 7, 99, 0, 8, 127, 0, 8, 63, 0, 9, 222, 82, 7, 27, 0, 8, 111, 0, 8, 47, 0, 9, 190, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 254, 96, 7, 256, 0, 8, 80, 0, 8, 16, 84, 8, 115, 82, 7, 31, 0, 8, 112, 0, 8, 48, 0, 9, 193, 80, 7, 10, 0, 8, 96, 0, 8, 32, 0, 9, 161, 0, 8, 0, 0, 8, 128, 0, 8, 64, 0, 9, 225, 80, 7, 6, 0, 8, 88, 0, 8, 24, 0, 9, 145, 83, 7, 59, 0, 8, 120, 0, 8, 56, 0, 9, 209, 81, 7, 17, 0, 8, 104, 0, 8, 40, 0, 9, 177, 0, 8, 8, 0, 8, 136, 0, 8, 72, 0, 9, 241, 80, 7, 4, 0, 8, 84, 0, 8, 20, 85, 8, 227, 83, 7, 43, 0, 8, 116, 0, 8, 52, 0, 9, 201, 81, 7, 13, 0, 8, 100, 0, 8, 36, 0, 9, 169, 0, 8, 4, 0, 8, 132, 0, 8, 68, 0, 9, 233, 80, 7, 8, 0, 8, 92, 0, 8, 28, 0, 9, 153, 84, 7, 83, 0, 8, 124, 0, 8, 60, 0, 9, 217, 82, 7, 23, 0, 8, 108, 0, 8, 44, 0, 9, 185, 0, 8, 12, 0, 8, 140, 0, 8, 76, 0, 9, 249, 80, 7, 3, 0, 8, 82, 0, 8, 18, 85, 8, 163, 83, 7, 35, 0, 8, 114, 0, 8, 50, 0, 9, 197, 81, 7, 11, 0, 8, 98, 0, 8, 34, 0, 9, 165, 0, 8, 2, 0, 8, 130, 0, 8, 66, 0, 9, 229, 80, 7, 7, 0, 8, 90, 0, 8, 26, 0, 9, 149, 84, 7, 67, 0, 8, 122, 0, 8, 58, 0, 9, 213, 82, 7, 19, 0, 8, 106, 0, 8, 42, 0, 9, 181, 0, 8, 10, 0, 8, 138, 0, 8, 74, 0, 9, 245, 80, 7, 5, 0, 8, 86, 0, 8, 22, 192, 8, 0, 83, 7, 51, 0, 8, 118, 0, 8, 54, 0, 9, 205, 81, 7, 15, 0, 8, 102, 0, 8, 38, 0, 9, 173, 0, 8, 6, 0, 8, 134, 0, 8, 70, 0, 9, 237, 80, 7, 9, 0, 8, 94, 0, 8, 30, 0, 9, 157, 84, 7, 99, 0, 8, 126, 0, 8, 62, 0, 9, 221, 82, 7, 27, 0, 8, 110, 0, 8, 46, 0, 9, 189, 0, 8, 14, 0, 8, 142, 0, 8, 78, 0, 9, 253, 96, 7, 256, 0, 8, 81, 0, 8, 17, 85, 8, 131, 82, 7, 31, 0, 8, 113, 0, 8, 49, 0, 9, 195, 80, 7, 10, 0, 8, 97, 0, 8, 33, 0, 9, 163, 0, 8, 1, 0, 8, 129, 0, 8, 65, 0, 9, 227, 80, 7, 6, 0, 8, 89, 0, 8, 25, 0, 9, 147, 83, 7, 59, 0, 8, 121, 0, 8, 57, 0, 9, 211, 81, 7, 17, 0, 8, 105, 0, 8, 41, 0, 9, 179, 0, 8, 9, 0, 8, 137, 0, 8, 73, 0, 9, 243, 80, 7, 4, 0, 8, 85, 0, 8, 21, 80, 8, 258, 83, 7, 43, 0, 8, 117, 0, 8, 53, 0, 9, 203, 81, 7, 13, 0, 8, 101, 0, 8, 37, 0, 9, 171, 0, 8, 5, 0, 8, 133, 0, 8, 69, 0, 9, 235, 80, 7, 8, 0, 8, 93, 0, 8, 29, 0, 9, 155, 84, 7, 83, 0, 8, 125, 0, 8, 61, 0, 9, 219, 82, 7, 23, 0, 8, 109, 0, 8, 45, 0, 9, 187, 0, 8, 13, 0, 8, 141, 0, 8, 77, 0, 9, 251, 80, 7, 3, 0, 8, 83, 0, 8, 19, 85, 8, 195, 83, 7, 35, 0, 8, 115, 0, 8, 51, 0, 9, 199, 81, 7, 11, 0, 8, 99, 0, 8, 35, 0, 9, 167, 0, 8, 3, 0, 8, 131, 0, 8, 67, 0, 9, 231, 80, 7, 7, 0, 8, 91, 0, 8, 27, 0, 9, 151, 84, 7, 67, 0, 8, 123, 0, 8, 59, 0, 9, 215, 82, 7, 19, 0, 8, 107, 0, 8, 43, 0, 9, 183, 0, 8, 11, 0, 8, 139, 0, 8, 75, 0, 9, 247, 80, 7, 5, 0, 8, 87, 0, 8, 23, 192, 8, 0, 83, 7, 51, 0, 8, 119, 0, 8, 55, 0, 9, 207, 81, 7, 15, 0, 8, 103, 0, 8, 39, 0, 9, 175, 0, 8, 7, 0, 8, 135, 0, 8, 71, 0, 9, 239, 80, 7, 9, 0, 8, 95, 0, 8, 31, 0, 9, 159, 84, 7, 99, 0, 8, 127, 0, 8, 63, 0, 9, 223, 82, 7, 27, 0, 8, 111, 0, 8, 47, 0, 9, 191, 0, 8, 15, 0, 8, 143, 0, 8, 79, 0, 9, 255]),
+"fixed_td",  Clazz_newIntArray (-1, [80, 5, 1, 87, 5, 257, 83, 5, 17, 91, 5, 4097, 81, 5, 5, 89, 5, 1025, 85, 5, 65, 93, 5, 16385, 80, 5, 3, 88, 5, 513, 84, 5, 33, 92, 5, 8193, 82, 5, 9, 90, 5, 2049, 86, 5, 129, 192, 5, 24577, 80, 5, 2, 87, 5, 385, 83, 5, 25, 91, 5, 6145, 81, 5, 7, 89, 5, 1537, 85, 5, 97, 93, 5, 24577, 80, 5, 4, 88, 5, 769, 84, 5, 49, 92, 5, 12289, 82, 5, 13, 90, 5, 3073, 86, 5, 193, 192, 5, 24577]),
+"cplens",  Clazz_newIntArray (-1, [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]),
+"cplext",  Clazz_newIntArray (-1, [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0, 112, 112]),
+"cpdist",  Clazz_newIntArray (-1, [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]),
+"cpdext",  Clazz_newIntArray (-1, [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13]),
+"BMAX", 15);
+Clazz_declarePackage ("JU");
+c$ = Clazz_decorateAsClass (function () {
+this.mode = 0;
+this.len = 0;
+this.tree = null;
+this.tree_index = 0;
+this.need = 0;
+this.lit = 0;
+this.get = 0;
+this.dist = 0;
+this.lbits = 0;
+this.dbits = 0;
+this.ltree = null;
+this.ltree_index = 0;
+this.dtree = null;
+this.dtree_index = 0;
+this.z = null;
+this.s = null;
+Clazz_instantialize (this, arguments);
+}, JU, "InfCodes");
+Clazz_makeConstructor (c$, 
+function (z, s) {
+this.z = z;
+this.s = s;
+}, "JU.ZStream,JU.InfBlocks");
+Clazz_defineMethod (c$, "init", 
+function (bl, bd, tl, tl_index, td, td_index) {
+this.mode = 0;
+this.lbits = bl;
+this.dbits = bd;
+this.ltree = tl;
+this.ltree_index = tl_index;
+this.dtree = td;
+this.dtree_index = td_index;
+this.tree = null;
+}, "~N,~N,~A,~N,~A,~N");
+Clazz_defineMethod (c$, "proc", 
+function (r) {
+var j;
+var tindex;
+var e;
+var b = 0;
+var k = 0;
+var p = 0;
+var n;
+var q;
+var m;
+var f;
+p = this.z.next_in_index;
+n = this.z.avail_in;
+b = this.s.bitb;
+k = this.s.bitk;
+q = this.s.write;
+m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q;
+while (true) {
+switch (this.mode) {
+case 0:
+if (m >= 258 && n >= 10) {
+this.s.bitb = b;
+this.s.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.s.write = q;
+r = this.inflate_fast (this.lbits, this.dbits, this.ltree, this.ltree_index, this.dtree, this.dtree_index, this.s, this.z);
+p = this.z.next_in_index;
+n = this.z.avail_in;
+b = this.s.bitb;
+k = this.s.bitk;
+q = this.s.write;
+m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q;
+if (r != 0) {
+this.mode = r == 1 ? 7 : 9;
+break;
+}}this.need = this.lbits;
+this.tree = this.ltree;
+this.tree_index = this.ltree_index;
+this.mode = 1;
+case 1:
+j = this.need;
+while (k < (j)) {
+if (n != 0) r = 0;
+ else {
+this.s.bitb = b;
+this.s.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.s.write = q;
+return this.s.inflate_flush (r);
+}n--;
+b |= (this.z.next_in[p++] & 0xff) << k;
+k += 8;
+}
+tindex = (this.tree_index + (b & JU.InfCodes.inflate_mask[j])) * 3;
+b >>>= (this.tree[tindex + 1]);
+k -= (this.tree[tindex + 1]);
+e = this.tree[tindex];
+if (e == 0) {
+this.lit = this.tree[tindex + 2];
+this.mode = 6;
+break;
+}if ((e & 16) != 0) {
+this.get = e & 15;
+this.len = this.tree[tindex + 2];
+this.mode = 2;
+break;
+}if ((e & 64) == 0) {
+this.need = e;
+this.tree_index = Clazz_doubleToInt (tindex / 3) + this.tree[tindex + 2];
+break;
+}if ((e & 32) != 0) {
+this.mode = 7;
+break;
+}this.mode = 9;
+this.z.msg = "invalid literal/length code";
+r = -3;
+this.s.bitb = b;
+this.s.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.s.write = q;
+return this.s.inflate_flush (r);
+case 2:
+j = this.get;
+while (k < (j)) {
+if (n != 0) r = 0;
+ else {
+this.s.bitb = b;
+this.s.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.s.write = q;
+return this.s.inflate_flush (r);
+}n--;
+b |= (this.z.next_in[p++] & 0xff) << k;
+k += 8;
+}
+this.len += (b & JU.InfCodes.inflate_mask[j]);
+b >>= j;
+k -= j;
+this.need = this.dbits;
+this.tree = this.dtree;
+this.tree_index = this.dtree_index;
+this.mode = 3;
+case 3:
+j = this.need;
+while (k < (j)) {
+if (n != 0) r = 0;
+ else {
+this.s.bitb = b;
+this.s.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.s.write = q;
+return this.s.inflate_flush (r);
+}n--;
+b |= (this.z.next_in[p++] & 0xff) << k;
+k += 8;
+}
+tindex = (this.tree_index + (b & JU.InfCodes.inflate_mask[j])) * 3;
+b >>= this.tree[tindex + 1];
+k -= this.tree[tindex + 1];
+e = (this.tree[tindex]);
+if ((e & 16) != 0) {
+this.get = e & 15;
+this.dist = this.tree[tindex + 2];
+this.mode = 4;
+break;
+}if ((e & 64) == 0) {
+this.need = e;
+this.tree_index = Clazz_doubleToInt (tindex / 3) + this.tree[tindex + 2];
+break;
+}this.mode = 9;
+this.z.msg = "invalid distance code";
+r = -3;
+this.s.bitb = b;
+this.s.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.s.write = q;
+return this.s.inflate_flush (r);
+case 4:
+j = this.get;
+while (k < (j)) {
+if (n != 0) r = 0;
+ else {
+this.s.bitb = b;
+this.s.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.s.write = q;
+return this.s.inflate_flush (r);
+}n--;
+b |= (this.z.next_in[p++] & 0xff) << k;
+k += 8;
+}
+this.dist += (b & JU.InfCodes.inflate_mask[j]);
+b >>= j;
+k -= j;
+this.mode = 5;
+case 5:
+f = q - this.dist;
+while (f < 0) {
+f += this.s.end;
+}
+while (this.len != 0) {
+if (m == 0) {
+if (q == this.s.end && this.s.read != 0) {
+q = 0;
+m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q;
+}if (m == 0) {
+this.s.write = q;
+r = this.s.inflate_flush (r);
+q = this.s.write;
+m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q;
+if (q == this.s.end && this.s.read != 0) {
+q = 0;
+m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q;
+}if (m == 0) {
+this.s.bitb = b;
+this.s.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.s.write = q;
+return this.s.inflate_flush (r);
+}}}this.s.window[q++] = this.s.window[f++];
+m--;
+if (f == this.s.end) f = 0;
+this.len--;
+}
+this.mode = 0;
+break;
+case 6:
+if (m == 0) {
+if (q == this.s.end && this.s.read != 0) {
+q = 0;
+m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q;
+}if (m == 0) {
+this.s.write = q;
+r = this.s.inflate_flush (r);
+q = this.s.write;
+m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q;
+if (q == this.s.end && this.s.read != 0) {
+q = 0;
+m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q;
+}if (m == 0) {
+this.s.bitb = b;
+this.s.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.s.write = q;
+return this.s.inflate_flush (r);
+}}}r = 0;
+this.s.window[q++] = this.lit;
+m--;
+this.mode = 0;
+break;
+case 7:
+if (k > 7) {
+k -= 8;
+n++;
+p--;
+}this.s.write = q;
+r = this.s.inflate_flush (r);
+q = this.s.write;
+m = q < this.s.read ? this.s.read - q - 1 : this.s.end - q;
+if (this.s.read != this.s.write) {
+this.s.bitb = b;
+this.s.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.s.write = q;
+return this.s.inflate_flush (r);
+}this.mode = 8;
+case 8:
+r = 1;
+this.s.bitb = b;
+this.s.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.s.write = q;
+return this.s.inflate_flush (r);
+case 9:
+r = -3;
+this.s.bitb = b;
+this.s.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.s.write = q;
+return this.s.inflate_flush (r);
+default:
+r = -2;
+this.s.bitb = b;
+this.s.bitk = k;
+this.z.avail_in = n;
+this.z.total_in += p - this.z.next_in_index;
+this.z.next_in_index = p;
+this.s.write = q;
+return this.s.inflate_flush (r);
+}
+}
+}, "~N");
+Clazz_defineMethod (c$, "free", 
+function (z) {
+}, "JU.ZStream");
+Clazz_defineMethod (c$, "inflate_fast", 
+function (bl, bd, tl, tl_index, td, td_index, s, z) {
+var t;
+var tp;
+var tp_index;
+var e;
+var b;
+var k;
+var p;
+var n;
+var q;
+var m;
+var ml;
+var md;
+var c;
+var d;
+var r;
+var tp_index_t_3;
+p = z.next_in_index;
+n = z.avail_in;
+b = s.bitb;
+k = s.bitk;
+q = s.write;
+m = q < s.read ? s.read - q - 1 : s.end - q;
+ml = JU.InfCodes.inflate_mask[bl];
+md = JU.InfCodes.inflate_mask[bd];
+do {
+while (k < (20)) {
+n--;
+b |= (z.next_in[p++] & 0xff) << k;
+k += 8;
+}
+t = b & ml;
+tp = tl;
+tp_index = tl_index;
+tp_index_t_3 = (tp_index + t) * 3;
+if ((e = tp[tp_index_t_3]) == 0) {
+b >>= (tp[tp_index_t_3 + 1]);
+k -= (tp[tp_index_t_3 + 1]);
+s.window[q++] = tp[tp_index_t_3 + 2];
+m--;
+continue;
+}do {
+b >>= (tp[tp_index_t_3 + 1]);
+k -= (tp[tp_index_t_3 + 1]);
+if ((e & 16) != 0) {
+e &= 15;
+c = tp[tp_index_t_3 + 2] + (b & JU.InfCodes.inflate_mask[e]);
+b >>= e;
+k -= e;
+while (k < (15)) {
+n--;
+b |= (z.next_in[p++] & 0xff) << k;
+k += 8;
+}
+t = b & md;
+tp = td;
+tp_index = td_index;
+tp_index_t_3 = (tp_index + t) * 3;
+e = tp[tp_index_t_3];
+do {
+b >>= (tp[tp_index_t_3 + 1]);
+k -= (tp[tp_index_t_3 + 1]);
+if ((e & 16) != 0) {
+e &= 15;
+while (k < (e)) {
+n--;
+b |= (z.next_in[p++] & 0xff) << k;
+k += 8;
+}
+d = tp[tp_index_t_3 + 2] + (b & JU.InfCodes.inflate_mask[e]);
+b >>= (e);
+k -= (e);
+m -= c;
+if (q >= d) {
+r = q - d;
+if (q - r > 0 && 2 > (q - r)) {
+s.window[q++] = s.window[r++];
+s.window[q++] = s.window[r++];
+c -= 2;
+} else {
+System.arraycopy (s.window, r, s.window, q, 2);
+q += 2;
+r += 2;
+c -= 2;
+}} else {
+r = q - d;
+do {
+r += s.end;
+} while (r < 0);
+e = s.end - r;
+if (c > e) {
+c -= e;
+if (q - r > 0 && e > (q - r)) {
+do {
+s.window[q++] = s.window[r++];
+} while (--e != 0);
+} else {
+System.arraycopy (s.window, r, s.window, q, e);
+q += e;
+r += e;
+e = 0;
+}r = 0;
+}}if (q - r > 0 && c > (q - r)) {
+do {
+s.window[q++] = s.window[r++];
+} while (--c != 0);
+} else {
+System.arraycopy (s.window, r, s.window, q, c);
+q += c;
+r += c;
+c = 0;
+}break;
+} else if ((e & 64) == 0) {
+t += tp[tp_index_t_3 + 2];
+t += (b & JU.InfCodes.inflate_mask[e]);
+tp_index_t_3 = (tp_index + t) * 3;
+e = tp[tp_index_t_3];
+} else {
+z.msg = "invalid distance code";
+c = z.avail_in - n;
+c = (k >> 3) < c ? k >> 3 : c;
+n += c;
+p -= c;
+k -= c << 3;
+s.bitb = b;
+s.bitk = k;
+z.avail_in = n;
+z.total_in += p - z.next_in_index;
+z.next_in_index = p;
+s.write = q;
+return -3;
+}} while (true);
+break;
+}if ((e & 64) == 0) {
+t += tp[tp_index_t_3 + 2];
+t += (b & JU.InfCodes.inflate_mask[e]);
+tp_index_t_3 = (tp_index + t) * 3;
+if ((e = tp[tp_index_t_3]) == 0) {
+b >>= (tp[tp_index_t_3 + 1]);
+k -= (tp[tp_index_t_3 + 1]);
+s.window[q++] = tp[tp_index_t_3 + 2];
+m--;
+break;
+}} else if ((e & 32) != 0) {
+c = z.avail_in - n;
+c = (k >> 3) < c ? k >> 3 : c;
+n += c;
+p -= c;
+k -= c << 3;
+s.bitb = b;
+s.bitk = k;
+z.avail_in = n;
+z.total_in += p - z.next_in_index;
+z.next_in_index = p;
+s.write = q;
+return 1;
+} else {
+z.msg = "invalid literal/length code";
+c = z.avail_in - n;
+c = (k >> 3) < c ? k >> 3 : c;
+n += c;
+p -= c;
+k -= c << 3;
+s.bitb = b;
+s.bitk = k;
+z.avail_in = n;
+z.total_in += p - z.next_in_index;
+z.next_in_index = p;
+s.write = q;
+return -3;
+}} while (true);
+} while (m >= 258 && n >= 10);
+c = z.avail_in - n;
+c = (k >> 3) < c ? k >> 3 : c;
+n += c;
+p -= c;
+k -= c << 3;
+s.bitb = b;
+s.bitk = k;
+z.avail_in = n;
+z.total_in += p - z.next_in_index;
+z.next_in_index = p;
+s.write = q;
+return 0;
+}, "~N,~N,~A,~N,~A,~N,JU.InfBlocks,JU.ZStream");
+Clazz_defineStatics (c$,
+"inflate_mask",  Clazz_newIntArray (-1, [0x00000000, 0x00000001, 0x00000003, 0x00000007, 0x0000000f, 0x0000001f, 0x0000003f, 0x0000007f, 0x000000ff, 0x000001ff, 0x000003ff, 0x000007ff, 0x00000fff, 0x00001fff, 0x00003fff, 0x00007fff, 0x0000ffff]),
+"Z_OK", 0,
+"Z_STREAM_END", 1,
+"Z_STREAM_ERROR", -2,
+"Z_DATA_ERROR", -3,
+"START", 0,
+"LEN", 1,
+"LENEXT", 2,
+"DIST", 3,
+"DISTEXT", 4,
+"COPY", 5,
+"LIT", 6,
+"WASH", 7,
+"END", 8,
+"BADCODE", 9);
+Clazz_load (["java.io.OutputStream"], "java.io.ByteArrayOutputStream", ["java.lang.IllegalArgumentException", "$.IndexOutOfBoundsException", "$.OutOfMemoryError"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.buf = null;
+this.count = 0;
+Clazz_instantialize (this, arguments);
+}, java.io, "ByteArrayOutputStream", java.io.OutputStream);
+Clazz_makeConstructor (c$, 
+function () {
+this.construct (32);
+});
+Clazz_makeConstructor (c$, 
+function (size) {
+Clazz_superConstructor (this, java.io.ByteArrayOutputStream, []);
+if (size < 0) {
+throw  new IllegalArgumentException ("Negative initial size: " + size);
+}this.buf =  Clazz_newByteArray (size, 0);
+}, "~N");
+Clazz_defineMethod (c$, "ensureCapacity", 
+ function (minCapacity) {
+if (minCapacity - this.buf.length > 0) this.grow (minCapacity);
+}, "~N");
+Clazz_defineMethod (c$, "grow", 
+ function (minCapacity) {
+var oldCapacity = this.buf.length;
+var newCapacity = oldCapacity << 1;
+if (newCapacity - minCapacity < 0) newCapacity = minCapacity;
+if (newCapacity < 0) {
+if (minCapacity < 0) throw  new OutOfMemoryError ();
+newCapacity = minCapacity;
+}this.buf = java.io.ByteArrayOutputStream.arrayCopyByte (this.buf, newCapacity);
+}, "~N");
+c$.arrayCopyByte = Clazz_defineMethod (c$, "arrayCopyByte", 
+ function (array, newLength) {
+var t =  Clazz_newByteArray (newLength, 0);
+System.arraycopy (array, 0, t, 0, array.length < newLength ? array.length : newLength);
+return t;
+}, "~A,~N");
+Clazz_overrideMethod (c$, "writeByteAsInt", 
+function (b) {
+this.ensureCapacity (this.count + 1);
+this.buf[this.count] = b;
+this.count += 1;
+}, "~N");
+Clazz_defineMethod (c$, "write", 
+function (b, off, len) {
+if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) - b.length > 0)) {
+throw  new IndexOutOfBoundsException ();
+}this.ensureCapacity (this.count + len);
+System.arraycopy (b, off, this.buf, this.count, len);
+this.count += len;
+}, "~A,~N,~N");
+Clazz_defineMethod (c$, "writeTo", 
+function (out) {
+out.write (this.buf, 0, this.count);
+}, "java.io.OutputStream");
+Clazz_defineMethod (c$, "reset", 
+function () {
+this.count = 0;
+});
+Clazz_defineMethod (c$, "toByteArray", 
+function () {
+return (this.count == this.buf.length ? this.buf : java.io.ByteArrayOutputStream.arrayCopyByte (this.buf, this.count));
+});
+Clazz_defineMethod (c$, "size", 
+function () {
+return this.count;
+});
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return  String.instantialize (this.buf, 0, this.count);
+});
+Clazz_overrideMethod (c$, "close", 
+function () {
+});
+});
+Clazz_load (["java.io.Closeable", "$.Flushable"], "java.io.OutputStream", ["java.lang.IndexOutOfBoundsException", "$.NullPointerException"], function () {
+c$ = Clazz_declareType (java.io, "OutputStream", null, [java.io.Closeable, java.io.Flushable]);
+Clazz_defineMethod (c$, "write", 
+function (b, off, len) {
+if (b == null) {
+throw  new NullPointerException ();
+} else if ((off < 0) || (off > b.length) || (len < 0) || ((off + len) > b.length) || ((off + len) < 0)) {
+throw  new IndexOutOfBoundsException ();
+} else if (len == 0) {
+return;
+}for (var i = 0; i < len; i++) {
+this.writeByteAsInt (b[off + i]);
+}
+}, "~A,~N,~N");
+Clazz_overrideMethod (c$, "flush", 
+function () {
+});
+Clazz_overrideMethod (c$, "close", 
+function () {
+});
+});
+Clazz_declarePackage ("java.util.zip");
+Clazz_load (["java.io.IOException"], "java.util.zip.ZipException", null, function () {
+c$ = Clazz_declareType (java.util.zip, "ZipException", java.io.IOException);
+});
+Clazz_declarePackage ("MCview");
+Clazz_load (["java.awt.Color"], "MCview.Atom", ["java.lang.Float"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.x = 0;
+this.y = 0;
+this.z = 0;
+this.number = 0;
+this.name = null;
+this.resName = null;
+this.resNumber = 0;
+this.insCode = ' ';
+this.resNumIns = null;
+this.type = 0;
+this.color = null;
+this.chain = null;
+this.alignmentMapping = -1;
+this.atomIndex = 0;
+this.occupancy = 0;
+this.tfactor = 0;
+this.isSelected = false;
+Clazz_instantialize (this, arguments);
+}, MCview, "Atom");
+Clazz_prepareFields (c$, function () {
+this.color = java.awt.Color.lightGray;
+});
+Clazz_makeConstructor (c$, 
+function (str) {
+this.atomIndex = Integer.parseInt (str.substring (6, 11).trim ());
+this.name = str.substring (12, 15).trim ();
+this.resName = str.substring (17, 20);
+this.chain = str.substring (21, 22);
+this.resNumber = Integer.parseInt (str.substring (22, 26).trim ());
+this.resNumIns = str.substring (22, 27).trim ();
+this.insCode = str.substring (26, 27).charAt (0);
+this.x = ( new Float (str.substring (30, 38).trim ()).floatValue ());
+this.y = ( new Float (str.substring (38, 46).trim ()).floatValue ());
+this.z = ( new Float (str.substring (47, 55).trim ()).floatValue ());
+var tm = str.substring (54, 60).trim ();
+if (tm.length > 0) {
+this.occupancy = ( new Float (tm)).floatValue ();
+} else {
+this.occupancy = 1;
+}tm = str.substring (60, 66).trim ();
+if (tm.length > 0) {
+this.tfactor = ( new Float (tm).floatValue ());
+} else {
+this.tfactor = 1;
+}}, "~S");
+Clazz_makeConstructor (c$, 
+function (x, y, z) {
+this.x = x;
+this.y = y;
+this.z = z;
+}, "~N,~N,~N");
+});
+Clazz_declarePackage ("MCview");
+Clazz_load (["java.util.Vector"], "MCview.PDBChain", ["MCview.Bond", "$.Residue", "jalview.datamodel.AlignmentAnnotation", "$.Annotation", "$.Sequence", "$.SequenceFeature", "jalview.schemes.ResidueProperties", "java.awt.Color", "java.lang.StringBuilder"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.id = null;
+this.bonds = null;
+this.atoms = null;
+this.residues = null;
+this.offset = 0;
+this.sequence = null;
+this.shadow = null;
+this.isNa = false;
+this.isVisible = true;
+this.pdbstart = 0;
+this.pdbend = 0;
+this.seqstart = 0;
+this.seqend = 0;
+this.pdbid = "";
+this.newline = null;
+this.shadowMap = null;
+Clazz_instantialize (this, arguments);
+}, MCview, "PDBChain");
+Clazz_prepareFields (c$, function () {
+this.bonds =  new java.util.Vector ();
+this.atoms =  new java.util.Vector ();
+this.residues =  new java.util.Vector ();
+this.newline = System.getProperty ("line.separator");
+});
+Clazz_makeConstructor (c$, 
+function (pdbid, id) {
+this.pdbid = pdbid.toLowerCase ();
+this.id = id;
+}, "~S,~S");
+Clazz_defineMethod (c$, "setNewlineString", 
+function (nl) {
+this.newline = nl;
+}, "~S");
+Clazz_defineMethod (c$, "getNewlineString", 
+function () {
+return this.newline;
+});
+Clazz_defineMethod (c$, "print", 
+function () {
+var tmp =  new StringBuilder (256);
+for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {
+tmp.append (b.at1.resName).append (" ").append (b.at1.resNumber).append (" ").append (this.offset).append (this.newline);
+}
+return tmp.toString ();
+});
+Clazz_defineMethod (c$, "makeExactMapping", 
+function (as, s1) {
+var pdbpos = as.getSeq2Start () - 2;
+var alignpos = s1.getStart () + as.getSeq1Start () - 3;
+for (var atom, $atom = this.atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {
+atom.alignmentMapping = -1;
+}
+for (var i = 0; i < as.astr1.length; i++) {
+if (as.astr1.charAt (i) != '-') {
+alignpos++;
+}if (as.astr2.charAt (i) != '-') {
+pdbpos++;
+}if (as.astr1.charAt (i) == as.astr2.charAt (i)) {
+var res = this.residues.elementAt (pdbpos);
+for (var atom, $atom = res.atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {
+atom.alignmentMapping = alignpos;
+}
+}}
+}, "jalview.analysis.AlignSeq,jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "transferRESNUMFeatures", 
+function (seq, status) {
+var sq = seq;
+while (sq != null && sq.getDatasetSequence () != null) {
+sq = sq.getDatasetSequence ();
+if (sq === this.sequence) {
+return null;
+}}
+if (status == null) {
+status = "IEA:jalview";
+}var features = this.sequence.getSequenceFeatures ();
+for (var i = 0; i < features.length; i++) {
+if (features[i].getFeatureGroup ().equals (this.pdbid)) {
+var tx =  new jalview.datamodel.SequenceFeature (features[i]);
+tx.setBegin (1 + this.residues.elementAt (tx.getBegin () - this.offset).atoms.elementAt (0).alignmentMapping);
+tx.setEnd (1 + this.residues.elementAt (tx.getEnd () - this.offset).atoms.elementAt (0).alignmentMapping);
+tx.setStatus (status + ((tx.getStatus () == null || tx.getStatus ().length == 0) ? "" : ":" + tx.getStatus ()));
+if (tx.begin != 0 && tx.end != 0) {
+sq.addSequenceFeature (tx);
+}}}
+return features;
+}, "jalview.datamodel.SequenceI,~S");
+Clazz_defineMethod (c$, "makeCaBondList", 
+function () {
+var na = false;
+var numNa = 0;
+for (var i = 0; i < (this.residues.size () - 1); i++) {
+var tmpres = this.residues.elementAt (i);
+var tmpres2 = this.residues.elementAt (i + 1);
+var at1 = tmpres.findAtom ("CA");
+var at2 = tmpres2.findAtom ("CA");
+na = false;
+if ((at1 == null) && (at2 == null)) {
+na = true;
+at1 = tmpres.findAtom ("P");
+at2 = tmpres2.findAtom ("P");
+}if ((at1 != null) && (at2 != null)) {
+if (at1.chain.equals (at2.chain)) {
+if (na) {
+numNa++;
+}this.makeBond (at1, at2);
+}} else {
+System.out.println ("not found " + i);
+}}
+if (this.residues.size () > 0 && (Clazz_doubleToInt (numNa / (this.residues.size () - 1)) > 0.99)) {
+this.isNa = true;
+}});
+Clazz_defineMethod (c$, "makeBond", 
+function (at1, at2) {
+this.bonds.addElement ( new MCview.Bond (at1, at2));
+}, "MCview.Atom,MCview.Atom");
+Clazz_defineMethod (c$, "makeResidueList", 
+function (visibleChainAnnotation) {
+var count = 0;
+var symbol;
+var deoxyn = false;
+var nucleotide = false;
+var seq =  new StringBuilder (256);
+var resFeatures =  new java.util.Vector ();
+var resAnnotation =  new java.util.Vector ();
+var i;
+var iSize = this.atoms.size () - 1;
+var resNumber = -1;
+for (i = 0; i <= iSize; i++) {
+var tmp = this.atoms.elementAt (i);
+resNumber = tmp.resNumber;
+var res = resNumber;
+if (i == 0) {
+this.offset = resNumber;
+}var resAtoms =  new java.util.Vector ();
+while ((resNumber == res) && (i < this.atoms.size ())) {
+resAtoms.add (this.atoms.elementAt (i));
+i++;
+if (i < this.atoms.size ()) {
+resNumber = this.atoms.elementAt (i).resNumber;
+} else {
+resNumber++;
+}}
+i--;
+this.residues.addElement ( new MCview.Residue (resAtoms, resNumber - 1, count));
+var tmpres = this.residues.lastElement ();
+var tmpat = tmpres.atoms.get (0);
+var sf =  new jalview.datamodel.SequenceFeature ("RESNUM", tmpat.resName + ":" + tmpat.resNumIns + " " + this.pdbid + this.id, "", this.offset + count, this.offset + count, this.pdbid);
+resFeatures.addElement (sf);
+resAnnotation.addElement ( new jalview.datamodel.Annotation (tmpat.tfactor));
+if ((symbol = jalview.schemes.ResidueProperties.getAA3Hash ().get (tmpat.resName)) == null) {
+var nucname = tmpat.resName.trim ();
+deoxyn = nucname.length == 2 && jalview.schemes.ResidueProperties.aaIndex[nucname.charCodeAt (0)] == jalview.schemes.ResidueProperties.aaIndex['D'.charCodeAt (0)];
+if (tmpat.name.equalsIgnoreCase ("CA") || jalview.schemes.ResidueProperties.nucleotideIndex[nucname.charCodeAt ((deoxyn ? 1 : 0))] == -1) {
+seq.append ("X");
+} else {
+nucleotide = true;
+seq.append (nucname.charAt ((deoxyn ? 1 : 0)));
+}} else {
+if (nucleotide) {
+System.err.println ("Warning: mixed nucleotide and amino acid chain.. its gonna do bad things to you!");
+}seq.append (jalview.schemes.ResidueProperties.aa[(symbol).intValue ()]);
+}count++;
+}
+if (this.id.length < 1) {
+this.id = " ";
+}this.isNa = nucleotide;
+this.sequence =  new jalview.datamodel.Sequence (this.id, seq.toString (), this.offset, resNumber - 1);
+for (i = 0, iSize = resFeatures.size (); i < iSize; i++) {
+this.sequence.addSequenceFeature (resFeatures.elementAt (i));
+resFeatures.setElementAt (null, i);
+}
+if (visibleChainAnnotation) {
+var annots =  new Array (resAnnotation.size ());
+var max = 0;
+for (i = 0, iSize = annots.length; i < iSize; i++) {
+annots[i] = resAnnotation.elementAt (i);
+if (annots[i].value > max) {
+max = annots[i].value;
+}resAnnotation.setElementAt (null, i);
+}
+var tfactorann =  new jalview.datamodel.AlignmentAnnotation ("Temperature Factor", "Temperature Factor for " + this.pdbid + this.id, annots, 0, max, 2);
+tfactorann.setSequenceRef (this.sequence);
+this.sequence.addAlignmentAnnotation (tfactorann);
+}}, "~B");
+Clazz_defineMethod (c$, "setChargeColours", 
+function () {
+for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {
+if (b.at1 != null && b.at2 != null) {
+b.startCol = MCview.PDBChain.getChargeColour (b.at1.resName);
+b.endCol = MCview.PDBChain.getChargeColour (b.at2.resName);
+} else {
+b.startCol = java.awt.Color.gray;
+b.endCol = java.awt.Color.gray;
+}}
+});
+c$.getChargeColour = Clazz_defineMethod (c$, "getChargeColour", 
+function (resName) {
+var result = java.awt.Color.lightGray;
+if ("ASP".equals (resName) || "GLU".equals (resName)) {
+result = java.awt.Color.red;
+} else if ("LYS".equals (resName) || "ARG".equals (resName)) {
+result = java.awt.Color.blue;
+} else if ("CYS".equals (resName)) {
+result = java.awt.Color.yellow;
+}return result;
+}, "~S");
+Clazz_defineMethod (c$, "setChainColours", 
+function (cs) {
+var index;
+for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {
+try {
+index = jalview.schemes.ResidueProperties.aa3Hash.get (b.at1.resName).intValue ();
+b.startCol = cs.findColour (jalview.schemes.ResidueProperties.aa[index].charAt (0));
+index = jalview.schemes.ResidueProperties.aa3Hash.get (b.at2.resName).intValue ();
+b.endCol = cs.findColour (jalview.schemes.ResidueProperties.aa[index].charAt (0));
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+b.startCol = java.awt.Color.gray;
+b.endCol = java.awt.Color.gray;
+} else {
+throw e;
+}
+}
+}
+}, "jalview.schemes.ColourSchemeI");
+Clazz_defineMethod (c$, "setChainColours", 
+function (col) {
+for (var b, $b = this.bonds.iterator (); $b.hasNext () && ((b = $b.next ()) || true);) {
+b.startCol = col;
+b.endCol = col;
+}
+}, "java.awt.Color");
+Clazz_defineMethod (c$, "transferResidueAnnotation", 
+function (mapping, sqmpping) {
+var sq = mapping.getSequence ();
+var dsq = sq;
+if (sq != null) {
+while (dsq.getDatasetSequence () != null) {
+dsq = dsq.getDatasetSequence ();
+}
+if (this.shadow != null && this.shadow.getAnnotation () != null) {
+for (var ana, $ana = 0, $$ana = this.shadow.getAnnotation (); $ana < $$ana.length && ((ana = $$ana[$ana]) || true); $ana++) {
+var transfer = sq.getAlignmentAnnotations (ana.getCalcId (), ana.label);
+if (transfer == null || transfer.size () == 0) {
+ana =  new jalview.datamodel.AlignmentAnnotation (ana);
+ana.liftOver (this.sequence, this.shadowMap);
+ana.liftOver (dsq, sqmpping);
+dsq.addAlignmentAnnotation (ana);
+} else {
+continue;
+}}
+} else {
+if (this.sequence != null && this.sequence.getAnnotation () != null) {
+for (var ana, $ana = 0, $$ana = this.sequence.getAnnotation (); $ana < $$ana.length && ((ana = $$ana[$ana]) || true); $ana++) {
+var transfer = sq.getAlignmentAnnotations (ana.getCalcId (), ana.label);
+if (transfer == null || transfer.size () == 0) {
+ana =  new jalview.datamodel.AlignmentAnnotation (ana);
+ana.liftOver (dsq, sqmpping);
+} else {
+continue;
+}}
+}}if (false) {
+var min = -1;
+var max = 0;
+var an =  new Array (sq.getEnd () - sq.getStart () + 1);
+for (var i = sq.getStart (), j = sq.getEnd (), k = 0; i <= j; i++, k++) {
+var prn = mapping.getPDBResNum (k + 1);
+an[k] =  new jalview.datamodel.Annotation (prn);
+if (min == -1) {
+min = k;
+max = k;
+} else {
+if (min > k) {
+min = k;
+} else if (max < k) {
+max = k;
+}}}
+sq.addAlignmentAnnotation ( new jalview.datamodel.AlignmentAnnotation ("PDB.RESNUM", "PDB Residue Numbering for " + this.pdbid + ":" + this.id, an, min, max, 2));
+}}}, "jalview.structure.StructureMapping,jalview.datamodel.Mapping");
+Clazz_defineStatics (c$,
+"PDBFILEFEATURE", "PDBFile",
+"IEASTATUS", "IEA:jalview");
+});
+Clazz_declarePackage ("MCview");
+Clazz_load (["java.awt.Color"], "MCview.Bond", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.start = null;
+this.end = null;
+this.startCol = null;
+this.endCol = null;
+this.at1 = null;
+this.at2 = null;
+Clazz_instantialize (this, arguments);
+}, MCview, "Bond");
+Clazz_prepareFields (c$, function () {
+this.startCol = java.awt.Color.lightGray;
+this.endCol = java.awt.Color.lightGray;
+});
+Clazz_makeConstructor (c$, 
+function (at1, at2) {
+this.start =  Clazz_newFloatArray (-1, [at1.x, at1.y, at1.z]);
+this.end =  Clazz_newFloatArray (-1, [at2.x, at2.y, at2.z]);
+this.startCol = at1.color;
+this.endCol = at2.color;
+this.at1 = at1;
+this.at2 = at2;
+}, "MCview.Atom,MCview.Atom");
+Clazz_defineMethod (c$, "translate", 
+function (x, y, z) {
+this.start[0] = this.start[0] + x;
+this.end[0] = this.end[0] + x;
+this.start[1] = this.start[1] + y;
+this.end[1] = this.end[1] + y;
+this.start[2] = this.start[2] + z;
+this.end[2] = this.end[2] + z;
+}, "~N,~N,~N");
+});
+Clazz_declarePackage ("MCview");
+c$ = Clazz_decorateAsClass (function () {
+this.atoms = null;
+this.number = 0;
+this.count = 0;
+Clazz_instantialize (this, arguments);
+}, MCview, "Residue");
+Clazz_makeConstructor (c$, 
+function (resAtoms, number, count) {
+this.atoms = resAtoms;
+this.number = number;
+this.count = count;
+}, "java.util.Vector,~N,~N");
+Clazz_defineMethod (c$, "findAtom", 
+function (name) {
+for (var atom, $atom = this.atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {
+if (atom.name.equals (name)) {
+return atom;
+}}
+return null;
+}, "~S");
+Clazz_declarePackage ("jalview.structure");
+c$ = Clazz_decorateAsClass (function () {
+this.pdbFile = null;
+this.chain = null;
+this.pdbResNum = 0;
+this.atomIndex = 0;
+Clazz_instantialize (this, arguments);
+}, jalview.structure, "AtomSpec");
+Clazz_makeConstructor (c$, 
+function (pdbFile, chain, resNo, atomNo) {
+this.pdbFile = pdbFile;
+this.chain = chain;
+this.pdbResNum = resNo;
+this.atomIndex = atomNo;
+}, "~S,~S,~N,~N");
+Clazz_defineMethod (c$, "getPdbFile", 
+function () {
+return this.pdbFile;
+});
+Clazz_defineMethod (c$, "getChain", 
+function () {
+return this.chain;
+});
+Clazz_defineMethod (c$, "getPdbResNum", 
+function () {
+return this.pdbResNum;
+});
+Clazz_defineMethod (c$, "getAtomIndex", 
+function () {
+return this.atomIndex;
+});
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return "pdbFile: " + this.pdbFile + ", chain: " + this.chain + ", res: " + this.pdbResNum + ", atom: " + this.atomIndex;
+});
+Clazz_declarePackage ("jalview.structure");
+Clazz_declareInterface (jalview.structure, "SecondaryStructureListener");
+Clazz_declarePackage ("jalview.structure");
+Clazz_declareInterface (jalview.structure, "SequenceListener");
+Clazz_declarePackage ("jalview.structure");
+Clazz_declareInterface (jalview.structure, "StructureListener");
+Clazz_declarePackage ("jalview.structure");
+Clazz_load (null, "jalview.structure.StructureMapping", ["jalview.datamodel.AlignmentAnnotation"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.mappingDetails = null;
+this.sequence = null;
+this.pdbfile = null;
+this.pdbid = null;
+this.pdbchain = null;
+this.mapping = null;
+Clazz_instantialize (this, arguments);
+}, jalview.structure, "StructureMapping");
+Clazz_makeConstructor (c$, 
+function (seq, pdbfile, pdbid, chain, mapping, mappingDetails) {
+this.sequence = seq;
+this.pdbfile = pdbfile;
+this.pdbid = pdbid;
+this.pdbchain = chain;
+this.mapping = mapping;
+this.mappingDetails = mappingDetails;
+}, "jalview.datamodel.SequenceI,~S,~S,~S,~A,~S");
+Clazz_defineMethod (c$, "getSequence", 
+function () {
+return this.sequence;
+});
+Clazz_defineMethod (c$, "getChain", 
+function () {
+return this.pdbchain;
+});
+Clazz_defineMethod (c$, "getPdbId", 
+function () {
+return this.pdbid;
+});
+Clazz_defineMethod (c$, "getAtomNum", 
+function (seqpos) {
+if (this.mapping.length > seqpos) {
+return this.mapping[seqpos][1];
+} else {
+return 0;
+}}, "~N");
+Clazz_defineMethod (c$, "getPDBResNum", 
+function (seqpos) {
+if (this.mapping.length > seqpos) {
+return this.mapping[seqpos][0];
+} else {
+return 0;
+}}, "~N");
+Clazz_defineMethod (c$, "getSeqPos", 
+function (pdbResNum) {
+for (var i = 0; i < this.mapping.length; i++) {
+if (this.mapping[i][0] == pdbResNum) {
+return i;
+}}
+return -1;
+}, "~N");
+Clazz_defineMethod (c$, "transfer", 
+function (ana) {
+var ala_copy =  new jalview.datamodel.AlignmentAnnotation (ana);
+var ds = this.sequence;
+while (ds.getDatasetSequence () != null) {
+ds = ds.getDatasetSequence ();
+}
+ala_copy.remap (ds, this.mapping, -1, -1, 0);
+ds.addAlignmentAnnotation (ala_copy);
+if (ds !== this.sequence) {
+ala_copy =  new jalview.datamodel.AlignmentAnnotation (ala_copy);
+this.sequence.addAlignmentAnnotation (ala_copy);
+}return ala_copy;
+}, "jalview.datamodel.AlignmentAnnotation");
+});
+Clazz_declarePackage ("jalview.structure");
+Clazz_declareInterface (jalview.structure, "VamsasListener");
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "jalview.api.AlignmentViewPanel", "java.awt.event.AdjustmentListener", "awt2swing.Scrollbar"], "jalview.appletgui.AlignmentPanel", ["awt2swing.Frame", "jalview.analysis.AnnotationSorter", "jalview.appletgui.AnnotationLabels", "$.AnnotationPanel", "$.FeatureRenderer", "$.IdPanel", "$.IdwidthAdjuster", "$.PaintRefresher", "$.ScalePanel", "$.SeqPanel", "jalview.bin.JalviewLite", "jalview.structure.StructureSelectionManager", "java.awt.BorderLayout", "$.Color", "$.Dimension", "java.awt.event.ComponentAdapter", "java.beans.PropertyChangeListener"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.av = null;
+this.overviewPanel = null;
+this.seqPanel = null;
+this.idPanel = null;
+this.idwidthAdjuster = null;
+this.alignFrame = null;
+this.scalePanel = null;
+this.annotationPanel = null;
+this.alabels = null;
+this.fastPaint = true;
+this.hextent = 0;
+this.vextent = 0;
+this.sequenceHolderPanel = null;
+this.vscroll = null;
+this.hscroll = null;
+this.seqPanelHolder = null;
+this.scalePanelHolder = null;
+this.idPanelHolder = null;
+this.idSpaceFillerPanel1 = null;
+this.annotationSpaceFillerHolder = null;
+this.hscrollFillerPanel = null;
+this.annotationPanelHolder = null;
+this.apvscroll = null;
+this.followingComplementScroll = false;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "AlignmentPanel", awt2swing.Panel, [java.awt.event.AdjustmentListener, jalview.api.AlignmentViewPanel]);
+Clazz_prepareFields (c$, function () {
+this.sequenceHolderPanel =  new awt2swing.Panel ();
+this.vscroll =  new awt2swing.Scrollbar ();
+this.hscroll =  new awt2swing.Scrollbar ();
+this.seqPanelHolder =  new awt2swing.Panel ();
+this.scalePanelHolder =  new awt2swing.Panel ();
+this.idPanelHolder =  new awt2swing.Panel ();
+this.idSpaceFillerPanel1 =  new awt2swing.Panel ();
+this.annotationSpaceFillerHolder =  new awt2swing.Panel ();
+this.hscrollFillerPanel =  new awt2swing.Panel ();
+this.annotationPanelHolder =  new awt2swing.Panel ();
+this.apvscroll =  new awt2swing.Scrollbar ();
+});
+Clazz_overrideMethod (c$, "finalize", 
+function () {
+this.alignFrame = null;
+this.av = null;
+this.seqPanel = null;
+this.seqPanelHolder = null;
+this.sequenceHolderPanel = null;
+this.scalePanel = null;
+this.scalePanelHolder = null;
+this.annotationPanel = null;
+this.annotationPanelHolder = null;
+this.annotationSpaceFillerHolder = null;
+});
+Clazz_makeConstructor (c$, 
+function (af, av) {
+Clazz_superConstructor (this, jalview.appletgui.AlignmentPanel, []);
+this.setName ("alignmentPanel");
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.alignFrame = af;
+this.av = av;
+this.seqPanel =  new jalview.appletgui.SeqPanel (av, this);
+this.idPanel =  new jalview.appletgui.IdPanel (av, this);
+this.scalePanel =  new jalview.appletgui.ScalePanel (av, this);
+this.idwidthAdjuster =  new jalview.appletgui.IdwidthAdjuster (this);
+this.annotationPanel =  new jalview.appletgui.AnnotationPanel (this);
+this.annotationPanelHolder.add (this.annotationPanel, "Center");
+this.sequenceHolderPanel.add (this.annotationPanelHolder, "South");
+this.alabels =  new jalview.appletgui.AnnotationLabels (this);
+this.setAnnotationVisible (av.isShowAnnotation ());
+this.idPanelHolder.add (this.idPanel, "Center");
+this.idSpaceFillerPanel1.add (this.idwidthAdjuster, "Center");
+this.annotationSpaceFillerHolder.add (this.alabels, "Center");
+this.scalePanelHolder.add (this.scalePanel, "Center");
+this.seqPanelHolder.add (this.seqPanel, "Center");
+this.fontChanged ();
+this.setScrollValues (0, 0);
+this.apvscroll.addAdjustmentListener (this);
+this.hscroll.addAdjustmentListener (this);
+this.vscroll.addAdjustmentListener (this);
+this.addComponentListener (((Clazz_isClassDefined ("jalview.appletgui.AlignmentPanel$1") ? 0 : jalview.appletgui.AlignmentPanel.$AlignmentPanel$1$ ()), Clazz_innerTypeInstance (jalview.appletgui.AlignmentPanel$1, this, Clazz_cloneFinals ("av", av))));
+var d = this.calculateIdWidth ();
+this.idPanel.idCanvas.setSize (d);
+this.hscrollFillerPanel.setSize (d.width, this.annotationPanel.getSize ().height);
+this.idPanel.idCanvas.setSize (d.width, this.seqPanel.seqCanvas.getSize ().height);
+this.annotationSpaceFillerHolder.setSize (d.width, this.annotationPanel.getSize ().height);
+this.alabels.setSize (d.width, this.annotationPanel.getSize ().height);
+var ap = this;
+av.addPropertyChangeListener (((Clazz_isClassDefined ("jalview.appletgui.AlignmentPanel$2") ? 0 : jalview.appletgui.AlignmentPanel.$AlignmentPanel$2$ ()), Clazz_innerTypeInstance (jalview.appletgui.AlignmentPanel$2, this, Clazz_cloneFinals ("ap", ap, "av", av))));
+}, "jalview.appletgui.AlignFrame,jalview.appletgui.AlignViewport");
+Clazz_overrideMethod (c$, "getAlignViewport", 
+function () {
+return this.av;
+});
+Clazz_defineMethod (c$, "getSequenceRenderer", 
+function () {
+return this.seqPanel.seqCanvas.sr;
+});
+Clazz_overrideMethod (c$, "getFeatureRenderer", 
+function () {
+return this.seqPanel.seqCanvas.fr;
+});
+Clazz_overrideMethod (c$, "cloneFeatureRenderer", 
+function () {
+var nfr =  new jalview.appletgui.FeatureRenderer (this.av);
+nfr.transferSettings (this.seqPanel.seqCanvas.fr);
+return nfr;
+});
+Clazz_defineMethod (c$, "alignmentChanged", 
+function () {
+this.av.alignmentChanged (this);
+if (this.overviewPanel != null) {
+this.overviewPanel.updateOverviewImage ();
+}this.alignFrame.updateEditMenuBar ();
+this.repaint ();
+});
+Clazz_defineMethod (c$, "fontChanged", 
+function () {
+this.idPanel.idCanvas.image = null;
+var fm = this.getFontMetrics (this.av.getFont ());
+this.scalePanel.setSize ( new java.awt.Dimension (10, this.av.getCharHeight () + fm.getDescent ()));
+this.idwidthAdjuster.setSize ( new java.awt.Dimension (10, this.av.getCharHeight () + fm.getDescent ()));
+this.av.updateSequenceIdColours ();
+this.annotationPanel.image = null;
+var ap = this.annotationPanel.adjustPanelHeight (false);
+var d = this.calculateIdWidth ();
+d.setSize (d.width + 4, this.seqPanel.seqCanvas.getSize ().height);
+this.alabels.setSize (d.width + 4, ap);
+this.idPanel.idCanvas.setSize (d);
+this.hscrollFillerPanel.setSize (d);
+this.validateAnnotationDimensions (false);
+this.annotationPanel.repaint ();
+this.validate ();
+this.repaint ();
+if (this.overviewPanel != null) {
+this.overviewPanel.updateOverviewImage ();
+}});
+Clazz_defineMethod (c$, "setIdWidth", 
+function (w, h) {
+this.idPanel.idCanvas.setSize (w, h);
+this.idPanelHolder.setSize (w, this.idPanelHolder.getSize ().height);
+this.annotationSpaceFillerHolder.setSize (w, this.annotationSpaceFillerHolder.getSize ().height);
+this.alabels.setSize (w, this.alabels.getSize ().height);
+this.validate ();
+}, "~N,~N");
+Clazz_defineMethod (c$, "calculateIdWidth", 
+function () {
+if (this.av.nullFrame == null) {
+this.av.nullFrame =  new awt2swing.Frame ();
+this.av.nullFrame.addNotify ();
+this.av.nullFrame.setFont (this.av.font);
+}var g = this.av.nullFrame.getGraphics ();
+var fm = g.getFontMetrics (this.av.font);
+var al = this.av.getAlignment ();
+var i = 0;
+var idWidth = 0;
+var id;
+while (i < al.getHeight () && al.getSequenceAt (i) != null) {
+var s = al.getSequenceAt (i);
+id = s.getDisplayId (this.av.getShowJVSuffix ());
+if (fm.stringWidth (id) > idWidth) {
+idWidth = fm.stringWidth (id);
+}i++;
+}
+i = 0;
+if (al.getAlignmentAnnotation () != null) {
+fm = g.getFontMetrics (this.av.nullFrame.getFont ());
+while (i < al.getAlignmentAnnotation ().length) {
+var label = al.getAlignmentAnnotation ()[i].label;
+if (fm.stringWidth (label) > idWidth) {
+idWidth = fm.stringWidth (label);
+}i++;
+}
+}return  new java.awt.Dimension (idWidth, this.idPanel.idCanvas.getSize ().height);
+});
+Clazz_defineMethod (c$, "highlightSearchResults", 
+function (results) {
+this.scrollToPosition (results);
+this.seqPanel.seqCanvas.highlightSearchResults (results);
+}, "jalview.datamodel.SearchResults");
+Clazz_defineMethod (c$, "scrollToPosition", 
+function (results) {
+return this.scrollToPosition (results, true);
+}, "jalview.datamodel.SearchResults");
+Clazz_defineMethod (c$, "scrollToPosition", 
+function (results, redrawOverview) {
+return this.scrollToPosition (results, redrawOverview, false);
+}, "jalview.datamodel.SearchResults,~B");
+Clazz_defineMethod (c$, "scrollToPosition", 
+function (results, redrawOverview, centre) {
+if (results != null && results.getSize () > 0) {
+var alignment = this.av.getAlignment ();
+var seqIndex = alignment.findIndex (results);
+if (seqIndex == -1) {
+return false;
+}var seq = alignment.getSequenceAt (seqIndex);
+var r = results.getResults (seq, 0, alignment.getWidth ());
+if (r == null) {
+if (jalview.bin.JalviewLite.debug) {
+System.out.println ("DEBUG: scroll didn't happen - results not within alignment : " + seq.getStart () + "," + seq.getEnd ());
+}return false;
+}if (jalview.bin.JalviewLite.debug) {
+}var start = r[0];
+var end = r[1];
+if (centre) {
+var offset = Clazz_doubleToInt ((this.av.getEndRes () - this.av.getStartRes () + 1) / 2) - 1;
+start = Math.max (start - offset, 0);
+end = Math.min (end + offset, seq.getEnd () - 1);
+}if (start < 0) {
+return false;
+}if (end == seq.getEnd ()) {
+return false;
+}return this.scrollTo (start, end, seqIndex, false, redrawOverview);
+}return true;
+}, "jalview.datamodel.SearchResults,~B,~B");
+Clazz_defineMethod (c$, "scrollTo", 
+function (ostart, end, seqIndex, scrollToNearest, redrawOverview) {
+var startv;
+var endv;
+var starts;
+var ends;
+var width;
+var start = -1;
+if (this.av.hasHiddenColumns ()) {
+start = this.av.getColumnSelection ().findColumnPosition (ostart);
+end = this.av.getColumnSelection ().findColumnPosition (end);
+if (start == end) {
+if (!scrollToNearest && !this.av.getColumnSelection ().isVisible (ostart)) {
+return false;
+}}} else {
+start = ostart;
+}if (!this.av.getWrapAlignment ()) {
+if ((startv = this.av.getStartRes ()) >= start) {
+this.setScrollValues (start - 1, seqIndex);
+} else if ((endv = this.av.getEndRes ()) <= end) {
+this.setScrollValues (startv + 1 + end - endv, seqIndex);
+} else if ((starts = this.av.getStartSeq ()) > seqIndex) {
+this.setScrollValues (this.av.getStartRes (), seqIndex);
+} else if ((ends = this.av.getEndSeq ()) <= seqIndex) {
+this.setScrollValues (this.av.getStartRes (), starts + seqIndex - ends + 1);
+}} else {
+this.scrollToWrappedVisible (start);
+}if (redrawOverview && this.overviewPanel != null) {
+this.overviewPanel.setBoxPosition ();
+}this.paintAlignment (redrawOverview);
+return true;
+}, "~N,~N,~N,~B,~B");
+Clazz_defineMethod (c$, "scrollToWrappedVisible", 
+function (res) {
+var cwidth = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width);
+if (res <= this.av.getStartRes () || res >= (this.av.getStartRes () + cwidth)) {
+this.vscroll.setValue (Clazz_doubleToInt (res / cwidth));
+this.av.startRes = this.vscroll.getValue () * cwidth;
+}}, "~N");
+Clazz_defineMethod (c$, "getOverviewPanel", 
+function () {
+return this.overviewPanel;
+});
+Clazz_defineMethod (c$, "setOverviewPanel", 
+function (op) {
+this.overviewPanel = op;
+}, "jalview.appletgui.OverviewPanel");
+Clazz_defineMethod (c$, "setAnnotationVisible", 
+function (b) {
+if (!this.av.getWrapAlignment ()) {
+this.annotationSpaceFillerHolder.setVisible (b);
+this.annotationPanelHolder.setVisible (b);
+} else {
+this.annotationSpaceFillerHolder.setVisible (false);
+this.annotationPanelHolder.setVisible (false);
+}this.validate ();
+this.repaint ();
+}, "~B");
+Clazz_overrideMethod (c$, "adjustAnnotationHeight", 
+function () {
+if (this.alignFrame.getSize ().height == 0) {
+System.out.println ("adjustAnnotationHeight frame size zero NEEDS FIXING");
+}this.fontChanged ();
+this.validateAnnotationDimensions (true);
+this.apvscroll.addNotify ();
+this.hscroll.addNotify ();
+this.validate ();
+this.paintAlignment (true);
+});
+Clazz_defineMethod (c$, "validateAnnotationDimensions", 
+function (adjustPanelHeight) {
+var rowHeight = this.av.getCharHeight ();
+var alignmentHeight = rowHeight * this.av.getAlignment ().getHeight ();
+var annotationHeight = this.av.calcPanelHeight ();
+var mheight = annotationHeight;
+var d = this.sequenceHolderPanel.getSize ();
+var availableHeight = d.height - this.scalePanelHolder.getHeight ();
+if (adjustPanelHeight) {
+if (annotationHeight + alignmentHeight > availableHeight) {
+annotationHeight = Math.min (annotationHeight, availableHeight - 2 * rowHeight);
+}} else {
+annotationHeight = this.annotationPanelHolder.getSize ().height;
+}if (availableHeight - annotationHeight < 5) {
+annotationHeight = availableHeight;
+}this.annotationPanel.setSize ( new java.awt.Dimension (d.width, annotationHeight));
+this.annotationPanelHolder.setSize ( new java.awt.Dimension (d.width, annotationHeight));
+this.seqPanel.seqCanvas.setSize (d.width, this.seqPanel.seqCanvas.getSize ().height);
+var e = this.idPanel.getSize ();
+this.alabels.setSize ( new java.awt.Dimension (e.width, annotationHeight));
+this.annotationSpaceFillerHolder.setSize ( new java.awt.Dimension (e.width, annotationHeight));
+var s = this.apvscroll.getValue ();
+if (s > mheight - annotationHeight) {
+s = 0;
+}this.apvscroll.setValues (s, annotationHeight, 0, mheight);
+this.annotationPanel.setScrollOffset (this.apvscroll.getValue (), false);
+this.alabels.setScrollOffset (this.apvscroll.getValue (), false);
+}, "~B");
+Clazz_defineMethod (c$, "setWrapAlignment", 
+function (wrap) {
+this.av.startSeq = 0;
+this.av.startRes = 0;
+this.scalePanelHolder.setVisible (!wrap);
+this.hscroll.setVisible (!wrap);
+this.idwidthAdjuster.setVisible (!wrap);
+if (wrap) {
+this.annotationPanelHolder.setVisible (false);
+this.annotationSpaceFillerHolder.setVisible (false);
+} else if (this.av.isShowAnnotation ()) {
+this.annotationPanelHolder.setVisible (true);
+this.annotationSpaceFillerHolder.setVisible (true);
+}this.idSpaceFillerPanel1.setVisible (!wrap);
+this.fontChanged ();
+this.validate ();
+this.sequenceHolderPanel.validate ();
+this.repaint ();
+}, "~B");
+Clazz_defineMethod (c$, "scrollUp", 
+function (up) {
+if (up) {
+if (this.vscroll.getValue () < 1) {
+return false;
+}this.setScrollValues (this.hscroll.getValue (), this.vscroll.getValue () - 1);
+} else {
+if (this.vextent + this.vscroll.getValue () >= this.av.getAlignment ().getHeight ()) {
+return false;
+}this.setScrollValues (this.hscroll.getValue (), this.vscroll.getValue () + 1);
+}this.repaint ();
+return true;
+}, "~B");
+Clazz_defineMethod (c$, "scrollRight", 
+function (right) {
+if (!right) {
+if (this.hscroll.getValue () < 1) {
+return false;
+}this.setScrollValues (this.hscroll.getValue () - 1, this.vscroll.getValue ());
+} else {
+if (this.hextent + this.hscroll.getValue () >= this.av.getAlignment ().getWidth ()) {
+return false;
+}this.setScrollValues (this.hscroll.getValue () + 1, this.vscroll.getValue ());
+}this.repaint ();
+return true;
+}, "~B");
+Clazz_defineMethod (c$, "setScrollValues", 
+function (x, y) {
+var width = this.av.getAlignment ().getWidth ();
+var height = this.av.getAlignment ().getHeight ();
+if (this.av.hasHiddenColumns ()) {
+width = this.av.getColumnSelection ().findColumnPosition (width);
+}if (x < 0) {
+x = 0;
+};this.hextent = Clazz_doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ());
+this.vextent = Clazz_doubleToInt (this.seqPanel.seqCanvas.getSize ().height / this.av.getCharHeight ());
+if (this.hextent > width) {
+this.hextent = width;
+}if (this.vextent > height) {
+this.vextent = height;
+}if ((this.hextent + x) > width) {
+System.err.println ("hextent was " + this.hextent + " and x was " + x);
+x = width - this.hextent;
+}if ((this.vextent + y) > height) {
+y = height - this.vextent;
+}if (y < 0) {
+y = 0;
+}if (x < 0) {
+System.err.println ("x was " + x);
+x = 0;
+}this.av.setStartSeq (y);
+var endSeq = y + this.vextent;
+if (endSeq > this.av.getAlignment ().getHeight ()) {
+endSeq = this.av.getAlignment ().getHeight ();
+}this.av.setEndSeq (endSeq);
+this.av.setStartRes (x);
+this.av.setEndRes ((x + (Clazz_doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ()))) - 1);
+this.hscroll.setValues (x, this.hextent, 0, width);
+this.vscroll.setValues (y, this.vextent, 0, height);
+if (this.overviewPanel != null) {
+this.overviewPanel.setBoxPosition ();
+}this.sendViewPosition ();
+}, "~N,~N");
+Clazz_overrideMethod (c$, "adjustmentValueChanged", 
+function (evt) {
+if (this.annotationPanel == null) return;
+var oldX = this.av.getStartRes ();
+var oldY = this.av.getStartSeq ();
+if (evt == null || evt.getSource () === this.apvscroll) {
+this.annotationPanel.setScrollOffset (this.apvscroll.getValue (), false);
+this.alabels.setScrollOffset (this.apvscroll.getValue (), false);
+}if (evt == null || evt.getSource () === this.hscroll) {
+var x = this.hscroll.getValue ();
+this.av.setStartRes (x);
+this.av.setEndRes (x + Clazz_doubleToInt (this.seqPanel.seqCanvas.getSize ().width / this.av.getCharWidth ()) - 1);
+}if (evt == null || evt.getSource () === this.vscroll) {
+var offy = this.vscroll.getValue ();
+if (this.av.getWrapAlignment ()) {
+var rowSize = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width);
+this.av.setStartRes (this.vscroll.getValue () * rowSize);
+this.av.setEndRes ((this.vscroll.getValue () + 1) * rowSize);
+} else {
+this.av.setStartSeq (offy);
+this.av.setEndSeq (offy + Clazz_doubleToInt (this.seqPanel.seqCanvas.getSize ().height / this.av.getCharHeight ()));
+}}if (this.overviewPanel != null) {
+this.overviewPanel.setBoxPosition ();
+}var scrollX = this.av.startRes - oldX;
+var scrollY = this.av.startSeq - oldY;
+if (this.av.getWrapAlignment () || !this.fastPaint || this.av.MAC) {
+this.repaint ();
+} else {
+if (scrollX > this.av.endRes - this.av.startRes) {
+scrollX = this.av.endRes - this.av.startRes;
+} else if (scrollX < this.av.startRes - this.av.endRes) {
+scrollX = this.av.startRes - this.av.endRes;
+}this.idPanel.idCanvas.fastPaint (scrollY);
+this.seqPanel.seqCanvas.fastPaint (scrollX, scrollY);
+this.scalePanel.repaint ();
+if (this.av.isShowAnnotation ()) {
+this.annotationPanel.fastPaint (this.av.getStartRes () - oldX);
+}}this.sendViewPosition ();
+if (this.isFollowingComplementScroll ()) {
+this.setFollowingComplementScroll (false);
+} else {
+var ap = this.getComplementPanel ();
+this.av.scrollComplementaryAlignment (ap);
+}}, "java.awt.event.AdjustmentEvent");
+Clazz_defineMethod (c$, "getComplementPanel", 
+ function () {
+var ap = null;
+if (this.alignFrame != null) {
+var sf = this.alignFrame.getSplitFrame ();
+if (sf != null) {
+var other = sf.getComplement (this.alignFrame);
+if (other != null) {
+ap = other.alignPanel;
+}}}return ap;
+});
+Clazz_defineMethod (c$, "scrollToCentre", 
+function (sr, seqOffset) {
+var mappedTo = sr.getResultSequence (0);
+var seqs = this.av.getAlignment ().getSequences ();
+var sequenceIndex = 0;
+var matched = false;
+for (var seq, $seq = seqs.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+if (mappedTo === seq.getDatasetSequence ()) {
+matched = true;
+break;
+}sequenceIndex++;
+}
+if (!matched) {
+return;
+}sequenceIndex = Math.max (0, sequenceIndex - seqOffset);
+sr.getResults ().get (0).setSequence (this.av.getAlignment ().getSequenceAt (sequenceIndex));
+this.setFollowingComplementScroll (true);
+this.scrollToPosition (sr, true, true);
+}, "jalview.datamodel.SearchResults,~N");
+Clazz_defineMethod (c$, "sendViewPosition", 
+ function () {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet).sendViewPosition (this, this.av.startRes, this.av.endRes, this.av.startSeq, this.av.endSeq);
+});
+Clazz_overrideMethod (c$, "paintAlignment", 
+function (updateOverview) {
+var sorter =  new jalview.analysis.AnnotationSorter (this.getAlignment (), this.av.isShowAutocalculatedAbove ());
+sorter.sort (this.getAlignment ().getAlignmentAnnotation (), this.av.getSortAnnotationsBy ());
+this.repaint ();
+if (updateOverview) {
+jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet).sequenceColoursChanged (this);
+if (this.overviewPanel != null) {
+this.overviewPanel.updateOverviewImage ();
+}}}, "~B");
+Clazz_overrideMethod (c$, "paintComponent", 
+function (g) {
+System.out.println ("alignframe paintcomp");
+this.invalidate ();
+var d = this.idPanel.idCanvas.getSize ();
+var canvasHeight = this.seqPanel.seqCanvas.getSize ().height;
+if (canvasHeight != d.height) {
+this.idPanel.idCanvas.setSize (d.width, canvasHeight);
+}if (this.av.getWrapAlignment ()) {
+var maxwidth = this.av.getAlignment ().getWidth ();
+if (this.av.hasHiddenColumns ()) {
+maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;
+}var canvasWidth = this.seqPanel.seqCanvas.getWrappedCanvasWidth (this.seqPanel.seqCanvas.getSize ().width);
+if (canvasWidth > 0) {
+var max = Clazz_doubleToInt (maxwidth / canvasWidth);
+this.vscroll.setMaximum (1 + max);
+this.vscroll.setUnitIncrement (1);
+this.vscroll.setVisibleAmount (1);
+}} else {
+this.setScrollValues (this.av.getStartRes (), this.av.getStartSeq ());
+}}, "java.awt.Graphics");
+Clazz_defineMethod (c$, "jbInit", 
+ function () {
+this.setLayout ( new java.awt.BorderLayout ());
+this.sequenceHolderPanel.setLayout ( new java.awt.BorderLayout ());
+this.seqPanelHolder.setLayout ( new java.awt.BorderLayout ());
+this.scalePanelHolder.setBackground (java.awt.Color.white);
+this.scalePanelHolder.setLayout ( new java.awt.BorderLayout ());
+this.idPanelHolder.setLayout ( new java.awt.BorderLayout ());
+this.idSpaceFillerPanel1.setBackground (java.awt.Color.white);
+this.idSpaceFillerPanel1.setLayout ( new java.awt.BorderLayout ());
+this.annotationSpaceFillerHolder.setBackground (java.awt.Color.white);
+this.annotationSpaceFillerHolder.setLayout ( new java.awt.BorderLayout ());
+this.hscroll.setOrientation (0);
+var hscrollHolder =  new awt2swing.Panel ();
+hscrollHolder.setLayout ( new java.awt.BorderLayout ());
+this.hscrollFillerPanel.setBackground (java.awt.Color.white);
+this.apvscroll.setOrientation (1);
+this.apvscroll.setVisible (true);
+this.apvscroll.addAdjustmentListener (this);
+this.annotationPanelHolder.setBackground (java.awt.Color.white);
+this.annotationPanelHolder.setLayout ( new java.awt.BorderLayout ());
+this.annotationPanelHolder.add (this.apvscroll, "East");
+hscrollHolder.setBackground (java.awt.Color.white);
+this.seqPanelHolder.setBackground (java.awt.Color.white);
+this.idPanelHolder.setBackground (java.awt.Color.white);
+this.sequenceHolderPanel.add (this.scalePanelHolder, "North");
+this.sequenceHolderPanel.add (this.seqPanelHolder, "Center");
+this.seqPanelHolder.add (this.vscroll, "East");
+this.add (this.idPanelHolder, "West");
+this.idPanelHolder.add (this.idSpaceFillerPanel1, "North");
+this.idPanelHolder.add (this.annotationSpaceFillerHolder, "South");
+this.add (hscrollHolder, "South");
+hscrollHolder.add (this.hscroll, "Center");
+hscrollHolder.add (this.hscrollFillerPanel, "West");
+this.add (this.sequenceHolderPanel, "Center");
+});
+Clazz_defineMethod (c$, "updateAnnotation", 
+function () {
+this.updateAnnotation (false);
+});
+Clazz_defineMethod (c$, "updateAnnotation", 
+function (applyGlobalSettings) {
+this.updateAnnotation (applyGlobalSettings, false);
+}, "~B");
+Clazz_defineMethod (c$, "updateAnnotation", 
+function (applyGlobalSettings, preserveNewGroupSettings) {
+this.av.updateGroupAnnotationSettings (applyGlobalSettings, preserveNewGroupSettings);
+this.adjustAnnotationHeight ();
+}, "~B,~B");
+Clazz_overrideMethod (c$, "getAlignment", 
+function () {
+return this.av.getAlignment ();
+});
+Clazz_overrideMethod (c$, "getViewName", 
+function () {
+return this.getName ();
+});
+Clazz_overrideMethod (c$, "getStructureSelectionManager", 
+function () {
+return jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet);
+});
+Clazz_overrideMethod (c$, "raiseOOMWarning", 
+function (string, error) {
+System.err.println ("Out of memory whilst '" + string + "'");
+error.printStackTrace ();
+}, "~S,OutOfMemoryError");
+Clazz_defineMethod (c$, "setFollowingComplementScroll", 
+function (b) {
+this.followingComplementScroll = b;
+}, "~B");
+Clazz_defineMethod (c$, "isFollowingComplementScroll", 
+function () {
+return this.followingComplementScroll;
+});
+c$.$AlignmentPanel$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "AlignmentPanel$1", java.awt.event.ComponentAdapter);
+Clazz_overrideMethod (c$, "componentResized", 
+function (evt) {
+this.b$["jalview.appletgui.AlignmentPanel"].setScrollValues (this.f$.av.getStartRes (), this.f$.av.getStartSeq ());
+if (this.b$["jalview.appletgui.AlignmentPanel"].getSize ().height > 0 && this.b$["jalview.appletgui.AlignmentPanel"].annotationPanelHolder.getSize ().height > 0) {
+this.b$["jalview.appletgui.AlignmentPanel"].validateAnnotationDimensions (false);
+}this.b$["jalview.appletgui.AlignmentPanel"].repaint ();
+}, "java.awt.event.ComponentEvent");
+c$ = Clazz_p0p ();
+};
+c$.$AlignmentPanel$2$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "AlignmentPanel$2", null, java.beans.PropertyChangeListener);
+Clazz_overrideMethod (c$, "propertyChange", 
+function (evt) {
+if (evt.getPropertyName ().equals ("alignment")) {
+jalview.appletgui.PaintRefresher.Refresh (this.f$.ap, this.f$.av.getSequenceSetId (), true, true);
+this.b$["jalview.appletgui.AlignmentPanel"].alignmentChanged ();
+}}, "java.beans.PropertyChangeEvent");
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("jalview.api");
+Clazz_load (["jalview.api.OOMHandlerI"], "jalview.api.AlignmentViewPanel", null, function () {
+Clazz_declareInterface (jalview.api, "AlignmentViewPanel", jalview.api.OOMHandlerI);
+});
+Clazz_declarePackage ("jalview.api");
+Clazz_declareInterface (jalview.api, "OOMHandlerI");
+Clazz_declarePackage ("awt2swing");
+Clazz_load (["javax.swing.JScrollBar"], "awt2swing.Scrollbar", null, function () {
+c$ = Clazz_declareType (awt2swing, "Scrollbar", javax.swing.JScrollBar);
+Clazz_defineMethod (c$, "addChangeListener", 
+function (l) {
+this.addAdjustmentListener (l);
+}, "javax.swing.event.ChangeListener");
+Clazz_defineMethod (c$, "removeChangeListener", 
+function (l) {
+this.removeAdjustmentListener (l);
+}, "javax.swing.event.ChangeListener");
+});
+Clazz_declarePackage ("javax.swing");
+Clazz_load (["java.awt.Adjustable", "javax.swing.JComponent", "javax.swing.event.ChangeListener"], "javax.swing.JScrollBar", ["java.lang.IllegalArgumentException", "java.awt.Dimension", "java.awt.event.AdjustmentEvent", "$.AdjustmentListener", "javax.swing.BoundedRangeModel", "$.DefaultBoundedRangeModel", "$.UIManager"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.fwdAdjustmentEvents = null;
+this.model = null;
+this.orientation = 0;
+this.unitIncrement = 0;
+this.blockIncrement = 0;
+if (!Clazz_isClassDefined ("javax.swing.JScrollBar.ModelListener")) {
+javax.swing.JScrollBar.$JScrollBar$ModelListener$ ();
+}
+Clazz_instantialize (this, arguments);
+}, javax.swing, "JScrollBar", javax.swing.JComponent, java.awt.Adjustable);
+Clazz_prepareFields (c$, function () {
+this.fwdAdjustmentEvents = Clazz_innerTypeInstance (javax.swing.JScrollBar.ModelListener, this, null);
+});
+Clazz_defineMethod (c$, "checkOrientation", 
+ function (orientation) {
+switch (orientation) {
+case 1:
+case 0:
+break;
+default:
+throw  new IllegalArgumentException ("orientation must be one of: VERTICAL, HORIZONTAL");
+}
+}, "~N");
+Clazz_makeConstructor (c$, 
+function (orientation, value, extent, min, max) {
+Clazz_superConstructor (this, javax.swing.JScrollBar, []);
+this.checkOrientation (orientation);
+this.unitIncrement = 1;
+this.blockIncrement = (extent == 0) ? 1 : extent;
+this.orientation = orientation;
+this.model =  new javax.swing.DefaultBoundedRangeModel (value, extent, min, max);
+this.model.addChangeListener (this.fwdAdjustmentEvents);
+this.setRequestFocusEnabled (false);
+this.updateUI ();
+}, "~N,~N,~N,~N,~N");
+Clazz_makeConstructor (c$, 
+function (orientation) {
+this.construct (orientation, 0, 10, 0, 100);
+}, "~N");
+Clazz_makeConstructor (c$, 
+function () {
+this.construct (1);
+});
+Clazz_overrideMethod (c$, "getUI", 
+function () {
+return this.ui;
+});
+Clazz_overrideMethod (c$, "updateUI", 
+function () {
+this.setUI (javax.swing.UIManager.getUI (this));
+});
+Clazz_overrideMethod (c$, "getUIClassID", 
+function () {
+return "ScrollBarUI";
+});
+Clazz_overrideMethod (c$, "getOrientation", 
+function () {
+return this.orientation;
+});
+Clazz_defineMethod (c$, "setOrientation", 
+function (orientation) {
+this.checkOrientation (orientation);
+var oldValue = this.orientation;
+this.orientation = orientation;
+this.firePropertyChangeInt ("orientation", oldValue, orientation);
+if (orientation != oldValue) {
+this.revalidate ();
+}}, "~N");
+Clazz_defineMethod (c$, "getModel", 
+function () {
+return this.model;
+});
+Clazz_defineMethod (c$, "setModel", 
+function (newModel) {
+var oldModel = this.model;
+if (this.model != null) {
+this.model.removeChangeListener (this.fwdAdjustmentEvents);
+}this.model = newModel;
+if (this.model != null) {
+this.model.addChangeListener (this.fwdAdjustmentEvents);
+}this.firePropertyChangeObject ("model", oldModel, this.model);
+}, "javax.swing.BoundedRangeModel");
+Clazz_defineMethod (c$, "getUnitIncrement", 
+function (direction) {
+return this.unitIncrement;
+}, "~N");
+Clazz_overrideMethod (c$, "setUnitIncrement", 
+function (unitIncrement) {
+var oldValue = this.unitIncrement;
+this.unitIncrement = unitIncrement;
+this.firePropertyChangeInt ("unitIncrement", oldValue, unitIncrement);
+}, "~N");
+Clazz_defineMethod (c$, "getBlockIncrement", 
+function (direction) {
+return this.blockIncrement;
+}, "~N");
+Clazz_overrideMethod (c$, "setBlockIncrement", 
+function (blockIncrement) {
+var oldValue = this.blockIncrement;
+this.blockIncrement = blockIncrement;
+this.firePropertyChangeInt ("blockIncrement", oldValue, blockIncrement);
+}, "~N");
+Clazz_defineMethod (c$, "getUnitIncrement", 
+function () {
+return this.unitIncrement;
+});
+Clazz_defineMethod (c$, "getBlockIncrement", 
+function () {
+return this.blockIncrement;
+});
+Clazz_overrideMethod (c$, "getValue", 
+function () {
+return this.getModel ().getValue ();
+});
+Clazz_overrideMethod (c$, "setValue", 
+function (value) {
+var m = this.getModel ();
+m.setValue (value);
+}, "~N");
+Clazz_overrideMethod (c$, "getVisibleAmount", 
+function () {
+return this.getModel ().getExtent ();
+});
+Clazz_overrideMethod (c$, "setVisibleAmount", 
+function (extent) {
+this.getModel ().setExtent (extent);
+}, "~N");
+Clazz_overrideMethod (c$, "getMinimum", 
+function () {
+return this.getModel ().getMinimum ();
+});
+Clazz_overrideMethod (c$, "setMinimum", 
+function (minimum) {
+this.getModel ().setMinimum (minimum);
+}, "~N");
+Clazz_overrideMethod (c$, "getMaximum", 
+function () {
+return this.getModel ().getMaximum ();
+});
+Clazz_overrideMethod (c$, "setMaximum", 
+function (maximum) {
+this.getModel ().setMaximum (maximum);
+}, "~N");
+Clazz_defineMethod (c$, "getValueIsAdjusting", 
+function () {
+return this.getModel ().getValueIsAdjusting ();
+});
+Clazz_defineMethod (c$, "setValueIsAdjusting", 
+function (b) {
+var m = this.getModel ();
+m.setValueIsAdjusting (b);
+}, "~B");
+Clazz_defineMethod (c$, "setValues", 
+function (newValue, newExtent, newMin, newMax) {
+var m = this.getModel ();
+m.setRangeProperties (newValue, newExtent, newMin, newMax, m.getValueIsAdjusting ());
+}, "~N,~N,~N,~N");
+Clazz_overrideMethod (c$, "addAdjustmentListener", 
+function (l) {
+this.listenerList.add (java.awt.event.AdjustmentListener, l);
+}, "java.awt.event.AdjustmentListener");
+Clazz_overrideMethod (c$, "removeAdjustmentListener", 
+function (l) {
+this.listenerList.remove (java.awt.event.AdjustmentListener, l);
+}, "java.awt.event.AdjustmentListener");
+Clazz_defineMethod (c$, "getAdjustmentListeners", 
+function () {
+return this.listenerList.getListeners (java.awt.event.AdjustmentListener);
+});
+Clazz_defineMethod (c$, "fireAdjustmentValueChanged", 
+function (id, type, value) {
+this.fireAdjustmentValueChanged (id, type, value, this.getValueIsAdjusting ());
+}, "~N,~N,~N");
+Clazz_defineMethod (c$, "fireAdjustmentValueChanged", 
+ function (id, type, value, isAdjusting) {
+var listeners = this.listenerList.getListenerList ();
+var e = null;
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === java.awt.event.AdjustmentListener) {
+if (e == null) {
+e =  new java.awt.event.AdjustmentEvent (this, id, type, value, isAdjusting);
+}(listeners[i + 1]).adjustmentValueChanged (e);
+}}
+}, "~N,~N,~N,~B");
+Clazz_overrideMethod (c$, "getMinimumSize", 
+function () {
+var pref = this.getPreferredSize ();
+if (this.orientation == 1) {
+return  new java.awt.Dimension (pref.width, 5);
+} else {
+return  new java.awt.Dimension (5, pref.height);
+}});
+Clazz_overrideMethod (c$, "getMaximumSize", 
+function () {
+var pref = this.getPreferredSize ();
+if (this.getOrientation () == 1) {
+return  new java.awt.Dimension (pref.width, 32767);
+} else {
+return  new java.awt.Dimension (32767, pref.height);
+}});
+Clazz_defineMethod (c$, "setEnabled", 
+function (x) {
+Clazz_superCall (this, javax.swing.JScrollBar, "setEnabled", [x]);
+var children = this.getComponents ();
+for (var i = 0; i < children.length; i++) {
+children[i].setEnabled (x);
+}
+}, "~B");
+Clazz_defineMethod (c$, "paramString", 
+function () {
+var orientationString = (this.orientation == 0 ? "HORIZONTAL" : "VERTICAL");
+return Clazz_superCall (this, javax.swing.JScrollBar, "paramString", []) + ",blockIncrement=" + this.blockIncrement + ",orientation=" + orientationString + ",unitIncrement=" + this.unitIncrement;
+});
+c$.$JScrollBar$ModelListener$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+Clazz_instantialize (this, arguments);
+}, javax.swing.JScrollBar, "ModelListener", null, javax.swing.event.ChangeListener);
+Clazz_overrideMethod (c$, "stateChanged", 
+function (a) {
+var b = a.getSource ();
+if (Clazz_instanceOf (b, javax.swing.BoundedRangeModel)) {
+var c = 601;
+var d = 5;
+var e = b;
+var f = e.getValue ();
+var g = e.getValueIsAdjusting ();
+this.b$["javax.swing.JScrollBar"].fireAdjustmentValueChanged (c, d, f, g);
+}}, "javax.swing.event.ChangeEvent");
+c$ = Clazz_p0p ();
+};
+Clazz_defineStatics (c$,
+"$uiClassID", "ScrollBarUI");
+});
+Clazz_declarePackage ("java.awt");
+c$ = Clazz_declareInterface (java.awt, "Adjustable");
+Clazz_defineStatics (c$,
+"HORIZONTAL", 0,
+"VERTICAL", 1,
+"NO_ORIENTATION", 2);
+Clazz_declarePackage ("java.awt.event");
+Clazz_load (["java.awt.AWTEvent"], "java.awt.event.AdjustmentEvent", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.adjustable = null;
+this.value = 0;
+this.adjustmentType = 0;
+this.isAdjusting = false;
+Clazz_instantialize (this, arguments);
+}, java.awt.event, "AdjustmentEvent", java.awt.AWTEvent);
+Clazz_makeConstructor (c$, 
+function (source, id, type, value) {
+this.construct (source, id, type, value, false);
+}, "java.awt.Adjustable,~N,~N,~N");
+Clazz_makeConstructor (c$, 
+function (source, id, type, value, isAdjusting) {
+Clazz_superConstructor (this, java.awt.event.AdjustmentEvent, [source, id]);
+this.adjustable = source;
+this.adjustmentType = type;
+this.value = value;
+this.isAdjusting = isAdjusting;
+}, "java.awt.Adjustable,~N,~N,~N,~B");
+Clazz_defineMethod (c$, "getAdjustable", 
+function () {
+return this.adjustable;
+});
+Clazz_defineMethod (c$, "getValue", 
+function () {
+return this.value;
+});
+Clazz_defineMethod (c$, "getAdjustmentType", 
+function () {
+return this.adjustmentType;
+});
+Clazz_defineMethod (c$, "getValueIsAdjusting", 
+function () {
+return this.isAdjusting;
+});
+Clazz_overrideMethod (c$, "paramString", 
+function () {
+var typeStr;
+switch (this.id) {
+case 601:
+typeStr = "ADJUSTMENT_VALUE_CHANGED";
+break;
+default:
+typeStr = "unknown type";
+}
+var adjTypeStr;
+switch (this.adjustmentType) {
+case 1:
+adjTypeStr = "UNIT_INCREMENT";
+break;
+case 2:
+adjTypeStr = "UNIT_DECREMENT";
+break;
+case 4:
+adjTypeStr = "BLOCK_INCREMENT";
+break;
+case 3:
+adjTypeStr = "BLOCK_DECREMENT";
+break;
+case 5:
+adjTypeStr = "TRACK";
+break;
+default:
+adjTypeStr = "unknown type";
+}
+return typeStr + ",adjType=" + adjTypeStr + ",value=" + this.value + ",isAdjusting=" + this.isAdjusting;
+});
+Clazz_defineStatics (c$,
+"ADJUSTMENT_FIRST", 601,
+"ADJUSTMENT_LAST", 601,
+"ADJUSTMENT_VALUE_CHANGED", 601,
+"UNIT_INCREMENT", 1,
+"UNIT_DECREMENT", 2,
+"BLOCK_DECREMENT", 3,
+"BLOCK_INCREMENT", 4,
+"TRACK", 5);
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.AnnotationLabels", ["awt2swing.Checkbox", "$.CheckboxMenuItem", "$.Frame", "$.MenuItem", "$.PopupMenu", "$.Util", "jalview.analysis.AlignmentUtils", "jalview.appletgui.AlignFrame", "$.CutAndPasteTransfer", "$.EditNameDialog", "$.PaintRefresher", "$.Tooltip", "jalview.bin.JalviewLite", "jalview.datamodel.AlignmentAnnotation", "$.SequenceGroup", "jalview.util.MessageManager", "$.ParseHtmlBodyAndLinks", "java.awt.Color", "$.Dimension", "$.FlowLayout", "java.awt.event.ItemListener", "java.lang.StringBuffer", "java.util.Arrays", "$.Collections", "$.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.image = null;
+this.active = false;
+this.ap = null;
+this.av = null;
+this.resizing = false;
+this.oldY = 0;
+this.mouseX = 0;
+this.scrollOffset = 0;
+this.selectedRow = -1;
+this.tooltip = null;
+this.hasHiddenRows = false;
+this.resizePanel = false;
+this.dragEvent = null;
+this.dragCancelled = false;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "AnnotationLabels", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
+Clazz_makeConstructor (c$, 
+function (ap) {
+Clazz_superConstructor (this, jalview.appletgui.AnnotationLabels, []);
+this.ap = ap;
+this.av = ap.av;
+this.setLayout (null);
+this.addMouseListener (this);
+this.addMouseMotionListener (this);
+}, "jalview.appletgui.AlignmentPanel");
+Clazz_makeConstructor (c$, 
+function (av) {
+Clazz_superConstructor (this, jalview.appletgui.AnnotationLabels, []);
+this.av = av;
+}, "jalview.appletgui.AlignViewport");
+Clazz_defineMethod (c$, "setScrollOffset", 
+function (y, repaint) {
+this.scrollOffset = y;
+if (repaint) {
+this.repaint ();
+}}, "~N,~B");
+Clazz_defineMethod (c$, "getSelectedRow", 
+function (y) {
+var row = -2;
+var aa = this.ap.av.getAlignment ().getAlignmentAnnotation ();
+if (aa == null) {
+return row;
+}var height = 0;
+for (var i = 0; i < aa.length; i++) {
+row = -1;
+if (!aa[i].visible) {
+continue;
+}height += aa[i].height;
+if (y < height) {
+row = i;
+break;
+}}
+return row;
+}, "~N");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (evt) {
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.ADDNEW)) {
+var newAnnotation =  new jalview.datamodel.AlignmentAnnotation ("", null,  new Array (this.ap.av.getAlignment ().getWidth ()));
+if (!this.editLabelDescription (newAnnotation)) {
+return;
+}this.ap.av.getAlignment ().addAnnotation (newAnnotation);
+this.ap.av.getAlignment ().setAnnotationIndex (newAnnotation, 0);
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.EDITNAME)) {
+this.editLabelDescription (aa[this.selectedRow]);
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.HIDE)) {
+aa[this.selectedRow].visible = false;
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.SHOWALL)) {
+for (var i = 0; i < aa.length; i++) {
+aa[i].visible = (aa[i].annotations == null) ? false : true;
+}
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.OUTPUT_TEXT)) {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (false, this.ap.alignFrame);
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, this.ap.alignFrame.getTitle () + " - " + aa[this.selectedRow].label, 500, 100);
+cap.setText (aa[this.selectedRow].toString ());
+} else if (evt.getActionCommand ().equals (jalview.appletgui.AnnotationLabels.COPYCONS_SEQ)) {
+var cons = this.av.getConsensusSeq ();
+if (cons != null) {
+this.copy_annotseqtoclipboard (cons);
+}}this.refresh ();
+}, "java.awt.event.ActionEvent");
+Clazz_defineMethod (c$, "refresh", 
+function () {
+this.ap.annotationPanel.adjustPanelHeight ();
+this.setSize (this.getSize ().width, this.ap.annotationPanel.getSize ().height);
+this.ap.validate ();
+this.ap.paintAlignment (true);
+});
+Clazz_defineMethod (c$, "editLabelDescription", 
+function (annotation) {
+var padGaps =  new awt2swing.Checkbox ("Fill Empty Gaps With \"" + this.ap.av.getGapCharacter () + "\"", annotation.padGaps);
+var dialog =  new jalview.appletgui.EditNameDialog (annotation.label, annotation.description, "      Annotation Label", "Annotation Description", this.ap.alignFrame, "Edit Annotation Name / Description", 500, 180, false);
+var empty =  new awt2swing.Panel ( new java.awt.FlowLayout ());
+empty.add (padGaps);
+dialog.add (empty);
+dialog.pack ();
+dialog.setVisible (true);
+if (dialog.accept) {
+annotation.label = dialog.getName ();
+annotation.description = dialog.getDescription ();
+annotation.setPadGaps (padGaps.getState (), this.av.getGapCharacter ());
+this.repaint ();
+return true;
+} else {
+return false;
+}}, "jalview.datamodel.AlignmentAnnotation");
+Clazz_overrideMethod (c$, "mouseMoved", 
+function (evt) {
+this.resizePanel = evt.getY () < 10 && evt.getX () < 14;
+var row = this.getSelectedRow (evt.getY () + this.scrollOffset);
+if (row > -1) {
+var phb =  new jalview.util.ParseHtmlBodyAndLinks (this.av.getAlignment ().getAlignmentAnnotation ()[row].getDescription (true), true, "\n");
+if (this.tooltip == null) {
+this.tooltip =  new jalview.appletgui.Tooltip (phb.getNonHtmlContent (), this);
+} else {
+this.tooltip.setTip (phb.getNonHtmlContent ());
+}} else if (this.tooltip != null) {
+this.tooltip.setTip ("");
+}}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "cancelDrag", 
+function () {
+this.dragEvent = null;
+this.dragCancelled = true;
+});
+Clazz_overrideMethod (c$, "mouseDragged", 
+function (evt) {
+if (this.dragCancelled) {
+return;
+};this.dragEvent = evt;
+if (this.resizePanel) {
+var d = this.ap.annotationPanelHolder.getSize ();
+var e = this.ap.annotationSpaceFillerHolder.getSize ();
+var f = this.ap.seqPanelHolder.getSize ();
+var dif = evt.getY () - this.oldY;
+dif /= this.ap.av.getCharHeight ();
+dif *= this.ap.av.getCharHeight ();
+if ((d.height - dif) > 20 && (f.height + dif) > 20) {
+this.ap.annotationPanel.setSize (d.width, d.height - dif);
+this.setSize ( new java.awt.Dimension (e.width, d.height - dif));
+this.ap.annotationSpaceFillerHolder.setSize ( new java.awt.Dimension (e.width, d.height - dif));
+this.ap.annotationPanelHolder.setSize ( new java.awt.Dimension (d.width, d.height - dif));
+this.ap.apvscroll.setValues (this.ap.apvscroll.getValue (), d.height - dif, 0, this.av.calcPanelHeight ());
+f.height += dif;
+this.ap.seqPanelHolder.setPreferredSize (f);
+this.ap.setScrollValues (this.av.getStartRes (), this.av.getStartSeq ());
+this.ap.validate ();
+this.ap.addNotify ();
+}} else {
+var diff;
+if ((diff = 6 - evt.getY ()) > 0) {
+this.ap.apvscroll.setValue (this.ap.apvscroll.getValue () - diff);
+this.ap.adjustmentValueChanged (null);
+} else if ((0 < (diff = 6 - this.ap.annotationSpaceFillerHolder.getSize ().height + evt.getY ()))) {
+this.ap.apvscroll.setValue (this.ap.apvscroll.getValue () + diff);
+this.ap.adjustmentValueChanged (null);
+}this.repaint ();
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (evt) {
+if (!this.resizePanel && !this.dragCancelled) {
+var start = this.selectedRow;
+var end = this.getSelectedRow (evt.getY () + this.scrollOffset);
+if (start > -1 && start != end) {
+var startAA = this.ap.av.getAlignment ().getAlignmentAnnotation ()[start];
+if (end == -1) {
+end = this.ap.av.getAlignment ().getAlignmentAnnotation ().length - 1;
+}var endAA = this.ap.av.getAlignment ().getAlignmentAnnotation ()[end];
+this.ap.av.getAlignment ().getAlignmentAnnotation ()[end] = startAA;
+this.ap.av.getAlignment ().getAlignmentAnnotation ()[start] = endAA;
+}}this.resizePanel = false;
+this.dragEvent = null;
+this.dragCancelled = false;
+this.repaint ();
+this.ap.annotationPanel.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (evt) {
+if (evt.getY () < 10 && evt.getX () < 14) {
+this.resizePanel = true;
+this.repaint ();
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (evt) {
+this.dragCancelled = false;
+if (this.dragEvent == null) {
+this.resizePanel = false;
+} else {
+if (!this.resizePanel) {
+this.dragEvent = null;
+}}this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mousePressed", 
+function (evt) {
+this.oldY = evt.getY ();
+if (this.resizePanel) {
+return;
+}this.dragCancelled = false;
+this.selectedRow = this.getSelectedRow (evt.getY () + this.scrollOffset);
+var aa = this.ap.av.getAlignment ().getAlignmentAnnotation ();
+if ((evt.getModifiers () & 4) == 4) {
+var popup =  new awt2swing.PopupMenu (jalview.util.MessageManager.getString ("label.annotations"));
+var item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.ADDNEW);
+item.addActionListener (this);
+popup.add (item);
+if (this.selectedRow < 0) {
+if (this.hasHiddenRows) {
+item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.SHOWALL);
+item.addActionListener (this);
+popup.add (item);
+}this.add (popup);
+popup.show (this, evt.getX (), evt.getY ());
+return;
+}item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.EDITNAME);
+item.addActionListener (this);
+popup.add (item);
+item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.HIDE);
+item.addActionListener (this);
+popup.add (item);
+if (this.selectedRow < aa.length) {
+if (aa[this.selectedRow].sequenceRef != null) {
+var label = aa[this.selectedRow].label;
+var hideType =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.hide_all") + " " + label);
+hideType.addActionListener (((Clazz_isClassDefined ("jalview.appletgui.AnnotationLabels$1") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$1$ ()), Clazz_innerTypeInstance (jalview.appletgui.AnnotationLabels$1, this, Clazz_cloneFinals ("label", label))));
+popup.add (hideType);
+}}if (this.hasHiddenRows) {
+item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.SHOWALL);
+item.addActionListener (this);
+popup.add (item);
+}this.add (popup);
+item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.OUTPUT_TEXT);
+item.addActionListener (this);
+popup.add (item);
+if (this.selectedRow < aa.length) {
+if (aa[this.selectedRow].autoCalculated) {
+if (aa[this.selectedRow].label.indexOf ("Consensus") > -1) {
+popup.addSeparator ();
+var cbmi =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.ignore_gaps_consensus"), (aa[this.selectedRow].groupRef != null) ? aa[this.selectedRow].groupRef.getIgnoreGapsConsensus () : this.ap.av.isIgnoreGapsConsensus ());
+var aaa = aa[this.selectedRow];
+cbmi.addItemListener (((Clazz_isClassDefined ("jalview.appletgui.AnnotationLabels$2") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$2$ ()), Clazz_innerTypeInstance (jalview.appletgui.AnnotationLabels$2, this, Clazz_cloneFinals ("aaa", aaa, "cbmi", cbmi))));
+popup.add (cbmi);
+if (aaa.groupRef != null) {
+var chist =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_group_histogram"), aa[this.selectedRow].groupRef.isShowConsensusHistogram ());
+chist.addItemListener (((Clazz_isClassDefined ("jalview.appletgui.AnnotationLabels$3") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$3$ ()), Clazz_innerTypeInstance (jalview.appletgui.AnnotationLabels$3, this, Clazz_cloneFinals ("aaa", aaa, "chist", chist))));
+popup.add (chist);
+var cprofl =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_group_logo"), aa[this.selectedRow].groupRef.isShowSequenceLogo ());
+cprofl.addItemListener (((Clazz_isClassDefined ("jalview.appletgui.AnnotationLabels$4") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$4$ ()), Clazz_innerTypeInstance (jalview.appletgui.AnnotationLabels$4, this, Clazz_cloneFinals ("aaa", aaa, "cprofl", cprofl))));
+popup.add (cprofl);
+var cprofn =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.normalise_group_logo"), aa[this.selectedRow].groupRef.isNormaliseSequenceLogo ());
+cprofn.addItemListener (((Clazz_isClassDefined ("jalview.appletgui.AnnotationLabels$5") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$5$ ()), Clazz_innerTypeInstance (jalview.appletgui.AnnotationLabels$5, this, Clazz_cloneFinals ("aaa", aaa, "cprofn", cprofn))));
+popup.add (cprofn);
+} else {
+var chist =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_histogram"), this.av.isShowConsensusHistogram ());
+chist.addItemListener (((Clazz_isClassDefined ("jalview.appletgui.AnnotationLabels$6") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$6$ ()), Clazz_innerTypeInstance (jalview.appletgui.AnnotationLabels$6, this, Clazz_cloneFinals ("chist", chist))));
+popup.add (chist);
+var cprof =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.show_logo"), this.av.isShowSequenceLogo ());
+cprof.addItemListener (((Clazz_isClassDefined ("jalview.appletgui.AnnotationLabels$7") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$7$ ()), Clazz_innerTypeInstance (jalview.appletgui.AnnotationLabels$7, this, Clazz_cloneFinals ("cprof", cprof))));
+popup.add (cprof);
+var cprofn =  new awt2swing.CheckboxMenuItem (jalview.util.MessageManager.getString ("label.normalise_logo"), this.av.isNormaliseSequenceLogo ());
+cprofn.addItemListener (((Clazz_isClassDefined ("jalview.appletgui.AnnotationLabels$8") ? 0 : jalview.appletgui.AnnotationLabels.$AnnotationLabels$8$ ()), Clazz_innerTypeInstance (jalview.appletgui.AnnotationLabels$8, this, Clazz_cloneFinals ("cprofn", cprofn))));
+popup.add (cprofn);
+}item =  new awt2swing.MenuItem (jalview.appletgui.AnnotationLabels.COPYCONS_SEQ);
+item.addActionListener (this);
+popup.add (item);
+}}}popup.show (this, evt.getX (), evt.getY ());
+} else {
+if (this.selectedRow > -1 && this.selectedRow < aa.length) {
+if (aa[this.selectedRow].groupRef != null) {
+if (evt.getClickCount () >= 2) {
+this.ap.seqPanel.ap.idPanel.highlightSearchResults (null);
+this.ap.av.setSelectionGroup (aa[this.selectedRow].groupRef);
+this.ap.av.sendSelection ();
+this.ap.paintAlignment (false);
+jalview.appletgui.PaintRefresher.Refresh (this.ap, this.ap.av.getSequenceSetId ());
+} else {
+this.ap.seqPanel.ap.idPanel.highlightSearchResults (aa[this.selectedRow].groupRef.getSequences (null));
+}return;
+} else if (aa[this.selectedRow].sequenceRef != null) {
+if (evt.getClickCount () == 1) {
+this.ap.seqPanel.ap.idPanel.highlightSearchResults (java.util.Arrays.asList ( Clazz_newArray (-1, [aa[this.selectedRow].sequenceRef])));
+} else if (evt.getClickCount () >= 2) {
+this.ap.seqPanel.ap.idPanel.highlightSearchResults (null);
+var sg = this.ap.av.getSelectionGroup ();
+if (sg != null) {
+if (!(evt.isControlDown () || evt.isShiftDown ())) {
+sg =  new jalview.datamodel.SequenceGroup (sg);
+sg.clear ();
+sg.addSequence (aa[this.selectedRow].sequenceRef, false);
+} else {
+if (evt.isControlDown ()) {
+sg.addOrRemove (aa[this.selectedRow].sequenceRef, true);
+} else {
+sg.addSequence (aa[this.selectedRow].sequenceRef, true);
+}}} else {
+sg =  new jalview.datamodel.SequenceGroup ();
+sg.setStartRes (0);
+sg.setEndRes (this.ap.av.getAlignment ().getWidth () - 1);
+sg.addSequence (aa[this.selectedRow].sequenceRef, false);
+}this.ap.av.setSelectionGroup (sg);
+this.ap.paintAlignment (false);
+jalview.appletgui.PaintRefresher.Refresh (this.ap, this.ap.av.getSequenceSetId ());
+this.ap.av.sendSelection ();
+}}}}}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "copy_annotseqtoclipboard", 
+function (sq) {
+if (sq == null || sq.getLength () < 1) {
+return;
+}jalview.appletgui.AlignFrame.copiedSequences =  new StringBuffer ();
+jalview.appletgui.AlignFrame.copiedSequences.append (sq.getName () + "\t" + sq.getStart () + "\t" + sq.getEnd () + "\t" + sq.getSequenceAsString () + "\n");
+if (this.av.hasHiddenColumns ()) {
+jalview.appletgui.AlignFrame.copiedHiddenColumns =  new java.util.Vector ();
+for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
+jalview.appletgui.AlignFrame.copiedHiddenColumns.addElement ( Clazz_newIntArray (-1, [region[0], region[1]]));
+}
+}}, "jalview.datamodel.SequenceI");
+Clazz_overrideMethod (c$, "paintComponent", 
+function (g) {
+if (this.av.getWrapAlignment () || !this.av.isShowAnnotation ()) return;
+var w = this.getSize ().width;
+var h = this.getSize ().height;
+if (this.image == null || w != this.image.getWidth (this) || h != this.image.getHeight (this)) {
+this.image = this.createImage (w, this.ap.annotationPanel.getSize ().height);
+}this.drawComponent (this.image.getGraphics (), w);
+g.drawImage (this.image, 0, 0, this);
+}, "java.awt.Graphics");
+Clazz_defineMethod (c$, "drawComponent", 
+function (g, width) {
+g.setFont (this.av.getFont ());
+var fm = g.getFontMetrics (this.av.getFont ());
+g.setColor (java.awt.Color.white);
+g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+g.translate (0, -this.scrollOffset);
+g.setColor (java.awt.Color.black);
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+var y = 0;
+var fy = g.getFont ().getSize ();
+var x = 0;
+var offset;
+if (aa != null) {
+this.hasHiddenRows = false;
+for (var i = 0; i < aa.length; i++) {
+if (!aa[i].visible) {
+this.hasHiddenRows = true;
+continue;
+}x = width - fm.stringWidth (aa[i].label) - 3;
+y += aa[i].height;
+offset = Clazz_doubleToInt (-(aa[i].height - fy) / 2);
+awt2swing.Util.drawString (g, aa[i].label, x, y + offset);
+}
+}g.translate (0, +this.scrollOffset);
+if (this.resizePanel) {
+g.setColor (java.awt.Color.red);
+g.setPaintMode ();
+g.drawLine (2, 8, 5, 2);
+g.drawLine (5, 2, 8, 8);
+} else if (!this.dragCancelled && this.dragEvent != null && aa != null) {
+g.setColor (java.awt.Color.lightGray);
+awt2swing.Util.drawString (g, aa[this.selectedRow].label, this.dragEvent.getX (), this.dragEvent.getY ());
+}if (!this.av.getWrapAlignment () && ((aa == null) || (aa.length < 1))) {
+g.setColor (java.awt.Color.black);
+awt2swing.Util.drawString (g, jalview.util.MessageManager.getString ("label.right_click"), 2, 8);
+awt2swing.Util.drawString (g, jalview.util.MessageManager.getString ("label.to_add_annotation"), 2, 18);
+}}, "java.awt.Graphics,~N");
+c$.$AnnotationLabels$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "AnnotationLabels$1", null, java.awt.event.ActionListener);
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (e) {
+jalview.analysis.AlignmentUtils.showOrHideSequenceAnnotations (this.b$["jalview.appletgui.AnnotationLabels"].ap.av.getAlignment (), java.util.Collections.singleton (this.f$.label), null, false, false);
+this.b$["jalview.appletgui.AnnotationLabels"].refresh ();
+}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+};
+c$.$AnnotationLabels$2$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "AnnotationLabels$2", null, java.awt.event.ItemListener);
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (e) {
+if (this.f$.aaa.groupRef != null) {
+this.f$.aaa.groupRef.setIgnoreGapsConsensus (this.f$.cbmi.getState ());
+} else {
+this.b$["jalview.appletgui.AnnotationLabels"].ap.av.setIgnoreGapsConsensus (this.f$.cbmi.getState (), this.b$["jalview.appletgui.AnnotationLabels"].ap);
+}this.b$["jalview.appletgui.AnnotationLabels"].ap.paintAlignment (true);
+}, "java.awt.event.ItemEvent");
+c$ = Clazz_p0p ();
+};
+c$.$AnnotationLabels$3$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "AnnotationLabels$3", null, java.awt.event.ItemListener);
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (e) {
+this.f$.aaa.groupRef.setShowConsensusHistogram (this.f$.chist.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz_p0p ();
+};
+c$.$AnnotationLabels$4$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "AnnotationLabels$4", null, java.awt.event.ItemListener);
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (e) {
+this.f$.aaa.groupRef.setshowSequenceLogo (this.f$.cprofl.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz_p0p ();
+};
+c$.$AnnotationLabels$5$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "AnnotationLabels$5", null, java.awt.event.ItemListener);
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (e) {
+this.f$.aaa.groupRef.setshowSequenceLogo (true);
+this.f$.aaa.groupRef.setNormaliseSequenceLogo (this.f$.cprofn.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz_p0p ();
+};
+c$.$AnnotationLabels$6$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "AnnotationLabels$6", null, java.awt.event.ItemListener);
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (e) {
+this.b$["jalview.appletgui.AnnotationLabels"].av.setShowConsensusHistogram (this.f$.chist.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.showConsensusHistogram.setState (this.f$.chist.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz_p0p ();
+};
+c$.$AnnotationLabels$7$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "AnnotationLabels$7", null, java.awt.event.ItemListener);
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (e) {
+this.b$["jalview.appletgui.AnnotationLabels"].av.setShowSequenceLogo (this.f$.cprof.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.showSequenceLogo.setState (this.f$.cprof.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz_p0p ();
+};
+c$.$AnnotationLabels$8$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "AnnotationLabels$8", null, java.awt.event.ItemListener);
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (e) {
+this.b$["jalview.appletgui.AnnotationLabels"].av.setShowSequenceLogo (true);
+this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.normSequenceLogo.setState (this.f$.cprofn.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].av.setNormaliseSequenceLogo (this.f$.cprofn.getState ());
+this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint ();
+}, "java.awt.event.ItemEvent");
+c$ = Clazz_p0p ();
+};
+Clazz_defineStatics (c$,
+"ADDNEW", "Add New Row",
+"EDITNAME", "Edit Label/Description",
+"HIDE", "Hide This Row",
+"SHOWALL", "Show All Hidden Rows",
+"OUTPUT_TEXT", "Show Values In Textbox",
+"COPYCONS_SEQ", "Copy Consensus Sequence");
+});
+Clazz_declarePackage ("awt2swing");
+Clazz_load (["javax.swing.JCheckBox"], "awt2swing.Checkbox", null, function () {
+c$ = Clazz_declareType (awt2swing, "Checkbox", javax.swing.JCheckBox);
+Clazz_defineMethod (c$, "getState", 
+function () {
+return this.isSelected ();
+});
+Clazz_defineMethod (c$, "setState", 
+function (b) {
+this.setSelected (b);
+}, "~B");
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.MouseListener", "awt2swing.Button", "$.TextArea", "java.awt.BorderLayout"], "jalview.appletgui.CutAndPasteTransfer", ["awt2swing.Frame", "$.Label", "jalview.analysis.AlignmentUtils", "jalview.api.ComplexAlignFile", "jalview.appletgui.AlignFrame", "$.AppletJmol", "$.JVDialog", "$.SplitFrame", "jalview.datamodel.PDBEntry", "jalview.io.AnnotationFile", "$.AppletFormatAdapter", "$.IdentifyFile", "$.NewickFile", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.TCoffeeColourScheme", "jalview.util.MessageManager", "java.awt.Font"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.pdbImport = false;
+this.treeImport = false;
+this.annotationImport = false;
+this.seq = null;
+this.alignFrame = null;
+this.source = null;
+this.textarea = null;
+this.accept = null;
+this.addSequences = null;
+this.$cancel = null;
+this.buttonPanel = null;
+this.borderLayout1 = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "CutAndPasteTransfer", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.MouseListener]);
+Clazz_prepareFields (c$, function () {
+this.textarea =  new awt2swing.TextArea ();
+this.accept =  new awt2swing.Button ("New Window");
+this.addSequences =  new awt2swing.Button ("Add to Current Alignment");
+this.$cancel =  new awt2swing.Button ("Close");
+this.buttonPanel =  new awt2swing.Panel ();
+this.borderLayout1 =  new java.awt.BorderLayout ();
+});
+Clazz_makeConstructor (c$, 
+function (forImport, alignFrame) {
+Clazz_superConstructor (this, jalview.appletgui.CutAndPasteTransfer, []);
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.alignFrame = alignFrame;
+if (!forImport) {
+this.buttonPanel.setVisible (false);
+}}, "~B,jalview.appletgui.AlignFrame");
+Clazz_defineMethod (c$, "getText", 
+function () {
+return this.textarea.getText ();
+});
+Clazz_defineMethod (c$, "setText", 
+function (text) {
+this.textarea.setText (text);
+}, "~S");
+Clazz_defineMethod (c$, "setPDBImport", 
+function (seq) {
+this.seq = seq;
+this.accept.setLabel (jalview.util.MessageManager.getString ("action.accept"));
+this.addSequences.setVisible (false);
+this.pdbImport = true;
+}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "setTreeImport", 
+function () {
+this.treeImport = true;
+this.accept.setLabel (jalview.util.MessageManager.getString ("action.accept"));
+this.addSequences.setVisible (false);
+});
+Clazz_defineMethod (c$, "setAnnotationImport", 
+function () {
+this.annotationImport = true;
+this.accept.setLabel (jalview.util.MessageManager.getString ("action.accept"));
+this.addSequences.setVisible (false);
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.accept) {
+this.ok (true);
+} else if (evt.getSource () === this.addSequences) {
+this.ok (false);
+} else if (evt.getSource () === this.$cancel) {
+this.cancel ();
+}}, "java.awt.event.ActionEvent");
+Clazz_defineMethod (c$, "ok", 
+function (newWindow) {
+var text = this.getText ();
+var length = text.length;
+this.textarea.append ("\n");
+if (this.textarea.getText ().length == length) {
+var warning = "\n\n#################################################\nWARNING!! THIS IS THE MAXIMUM SIZE OF TEXTAREA!!\n\nCAN\'T INPUT FULL ALIGNMENT\n\nYOU MUST DELETE THIS WARNING TO CONTINUE\n\nMAKE SURE LAST SEQUENCE PASTED IS COMPLETE\n#################################################\n";
+this.textarea.setText (text.substring (0, text.length - warning.length) + warning);
+this.textarea.setCaretPosition (text.length);
+}if (this.pdbImport) {
+this.openPdbViewer (text);
+} else if (this.treeImport) {
+if (!this.loadTree ()) {
+return;
+}} else if (this.annotationImport) {
+this.loadAnnotations ();
+} else if (this.alignFrame != null) {
+this.loadAlignment (text, newWindow, this.alignFrame.getAlignViewport ());
+}if (Clazz_instanceOf (this.getParent (), awt2swing.Frame)) {
+(this.getParent ()).setVisible (false);
+} else {
+(this.getParent ()).setVisible (false);
+}}, "~B");
+Clazz_defineMethod (c$, "loadTree", 
+function () {
+try {
+var fin =  new jalview.io.NewickFile (this.textarea.getText (), "Paste");
+fin.parse ();
+if (fin.getTree () != null) {
+this.alignFrame.loadTree (fin, "Pasted tree file");
+return true;
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+this.textarea.setText (jalview.util.MessageManager.formatMessage ("label.could_not_parse_newick_file",  Clazz_newArray (-1, [ex.getMessage ()])));
+return false;
+} else {
+throw ex;
+}
+}
+return false;
+});
+Clazz_defineMethod (c$, "loadAlignment", 
+function (text, newWindow, viewport) {
+var al = null;
+var format =  new jalview.io.IdentifyFile ().Identify (text, jalview.io.AppletFormatAdapter.PASTE);
+var afa =  new jalview.io.AppletFormatAdapter (this.alignFrame.alignPanel);
+try {
+al = afa.readFile (text, jalview.io.AppletFormatAdapter.PASTE, format);
+this.source = afa.getAlignFile ();
+} catch (ex) {
+if (Clazz_exceptionOf (ex, java.io.IOException)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+if (al != null) {
+al.setDataset (null);
+var allowSplitFrame = this.alignFrame.viewport.applet.getDefaultParameter ("enableSplitFrame", false);
+if (allowSplitFrame && this.openSplitFrame (al, format)) {
+return;
+}if (newWindow) {
+var af;
+if (Clazz_instanceOf (this.source, jalview.api.ComplexAlignFile)) {
+var colSel = (this.source).getColumnSelection ();
+var hiddenSeqs = (this.source).getHiddenSequences ();
+var showSeqFeatures = (this.source).isShowSeqFeatures ();
+var cs = (this.source).getColourScheme ();
+af =  new jalview.appletgui.AlignFrame (al, hiddenSeqs, colSel, this.alignFrame.viewport.applet, "Cut & Paste input - " + format, false);
+af.getAlignViewport ().setShowSequenceFeatures (showSeqFeatures);
+af.changeColour (cs);
+} else {
+af =  new jalview.appletgui.AlignFrame (al, this.alignFrame.viewport.applet, "Cut & Paste input - " + format, false);
+}af.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_annotation_to_alignment"));
+} else {
+this.alignFrame.addSequences (al.getSequencesArray ());
+this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_alignment_file"));
+}}}, "~S,~B,jalview.appletgui.AlignViewport");
+Clazz_defineMethod (c$, "openSplitFrame", 
+function (al, format) {
+var thisAlignment = this.alignFrame.getAlignViewport ().getAlignment ();
+if (thisAlignment.isNucleotide () == al.isNucleotide ()) {
+return false;
+}var protein = thisAlignment.isNucleotide () ? al : thisAlignment;
+var dna = thisAlignment.isNucleotide () ? thisAlignment : al;
+var mapped = jalview.analysis.AlignmentUtils.mapProteinToCdna (protein, dna);
+if (!mapped) {
+return false;
+}var title = jalview.util.MessageManager.getString ("label.open_split_window");
+var dialog =  new jalview.appletgui.JVDialog (this.getParent (), title, true, 100, 400);
+dialog.ok.setLabel (jalview.util.MessageManager.getString ("action.yes"));
+dialog.cancel.setLabel (jalview.util.MessageManager.getString ("action.no"));
+var question =  new awt2swing.Panel ( new java.awt.BorderLayout ());
+var text = jalview.util.MessageManager.getString ("label.open_split_window?");
+question.add ( new awt2swing.Label (text, 0), "Center");
+dialog.setMainPanel (question);
+dialog.setVisible (true);
+dialog.toFront ();
+if (!dialog.accept) {
+return false;
+}var applet = this.alignFrame.viewport.applet;
+var copyFrame =  new jalview.appletgui.AlignFrame (this.alignFrame.viewport.getAlignment (), applet, this.alignFrame.getTitle (), false, false);
+var newFrame =  new jalview.appletgui.AlignFrame (al, this.alignFrame.viewport.applet, "Cut & Paste input - " + format, false, false);
+var dnaFrame = al.isNucleotide () ? newFrame : copyFrame;
+var proteinFrame = al.isNucleotide () ? copyFrame : newFrame;
+var sf =  new jalview.appletgui.SplitFrame (dnaFrame, proteinFrame);
+sf.addToDisplay (false, applet);
+return true;
+}, "jalview.datamodel.AlignmentI,~S");
+Clazz_defineMethod (c$, "loadAnnotations", 
+function () {
+var tcf = null;
+try {
+tcf = jalview.jsdev.GenericFileAdapter.getFile ("TCoffeeScoreFile", [this.textarea.getText (), jalview.io.AppletFormatAdapter.PASTE]);
+if (tcf.isValid ()) {
+if (tcf.annotateAlignment (this.alignFrame.viewport.getAlignment (), true)) {
+this.alignFrame.tcoffeeColour.setEnabled (true);
+this.alignFrame.alignPanel.fontChanged ();
+this.alignFrame.changeColour ( new jalview.schemes.TCoffeeColourScheme (this.alignFrame.viewport.getAlignment ()));
+this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_tcoffee_scores_to_alignment"));
+} else {
+this.alignFrame.setStatus (jalview.util.MessageManager.formatMessage ("label.failed_add_tcoffee_scores",  Clazz_newArray (-1, [(tcf.getWarningMessage () != null ? tcf.getWarningMessage () : "")])));
+}} else {
+tcf = null;
+}} catch (x) {
+if (Clazz_exceptionOf (x, Exception)) {
+tcf = null;
+} else {
+throw x;
+}
+}
+if (tcf == null) {
+if ( new jalview.io.AnnotationFile ().annotateAlignmentView (this.alignFrame.viewport, this.textarea.getText (), jalview.io.AppletFormatAdapter.PASTE)) {
+this.alignFrame.alignPanel.fontChanged ();
+this.alignFrame.alignPanel.setScrollValues (0, 0);
+this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.successfully_pasted_annotation_to_alignment"));
+} else {
+if (!this.alignFrame.parseFeaturesFile (this.textarea.getText (), jalview.io.AppletFormatAdapter.PASTE)) {
+this.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.couldnt_parse_pasted_text_as_valid_annotation_feature_GFF_tcoffee_file"));
+}}}});
+Clazz_defineMethod (c$, "openPdbViewer", 
+function (text) {
+var pdb =  new jalview.datamodel.PDBEntry ();
+pdb.setFile (text);
+ new jalview.appletgui.AppletJmol (pdb,  Clazz_newArray (-1, [this.seq]), null, this.alignFrame.alignPanel, jalview.io.AppletFormatAdapter.PASTE);
+}, "~S");
+Clazz_defineMethod (c$, "cancel", 
+function () {
+this.textarea.setText ("");
+if (Clazz_instanceOf (this.getParent (), awt2swing.Frame)) {
+(this.getParent ()).setVisible (false);
+} else {
+(this.getParent ()).setVisible (false);
+}});
+Clazz_defineMethod (c$, "jbInit", 
+ function () {
+this.textarea.setFont ( new java.awt.Font ("Monospaced", 0, 10));
+this.textarea.setText (jalview.util.MessageManager.getString ("label.paste_your_alignment_file"));
+this.textarea.addMouseListener (this);
+this.setLayout (this.borderLayout1);
+this.accept.addActionListener (this);
+this.addSequences.addActionListener (this);
+this.$cancel.addActionListener (this);
+this.add (this.buttonPanel, "South");
+this.buttonPanel.add (this.accept, null);
+this.buttonPanel.add (this.addSequences);
+this.buttonPanel.add (this.$cancel, null);
+this.add (this.textarea, "Center");
+});
+Clazz_overrideMethod (c$, "mousePressed", 
+function (evt) {
+if (this.textarea.getText ().startsWith (jalview.util.MessageManager.getString ("label.paste_your"))) {
+this.textarea.setText ("");
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+});
+Clazz_declarePackage ("awt2swing");
+Clazz_load (["javax.swing.JButton"], "awt2swing.Button", null, function () {
+c$ = Clazz_declareType (awt2swing, "Button", javax.swing.JButton);
+});
+Clazz_declarePackage ("awt2swing");
+Clazz_load (["javax.swing.JTextArea"], "awt2swing.TextArea", null, function () {
+c$ = Clazz_declareType (awt2swing, "TextArea", javax.swing.JTextArea);
+});
+Clazz_declarePackage ("javax.swing");
+Clazz_load (["javax.swing.text.JTextComponent"], "javax.swing.JTextArea", ["java.lang.IllegalArgumentException", "java.awt.Dimension", "javax.swing.JComponent", "$.LookAndFeel", "javax.swing.text.BadLocationException", "$.JSMinimalAbstractDocument", "swingjs.JSToolkit"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.rows = 0;
+this.columns = 0;
+this.columnWidth = 0;
+this.rowHeight = 0;
+this.wrap = false;
+this.word = false;
+Clazz_instantialize (this, arguments);
+}, javax.swing, "JTextArea", javax.swing.text.JTextComponent);
+Clazz_makeConstructor (c$, 
+function () {
+this.construct (null, null, 0, 0);
+});
+Clazz_makeConstructor (c$, 
+function (text) {
+this.construct (null, text, 0, 0);
+}, "~S");
+Clazz_makeConstructor (c$, 
+function (rows, columns) {
+this.construct (null, null, rows, columns);
+}, "~N,~N");
+Clazz_makeConstructor (c$, 
+function (text, rows, columns) {
+this.construct (null, text, rows, columns);
+}, "~S,~N,~N");
+Clazz_makeConstructor (c$, 
+function (doc) {
+this.construct (doc, null, 0, 0);
+}, "javax.swing.text.Document");
+Clazz_makeConstructor (c$, 
+function (doc, text, rows, columns) {
+Clazz_superConstructor (this, javax.swing.JTextArea);
+this.rows = rows;
+this.columns = columns;
+if (doc == null) {
+doc = this.createDefaultModel ();
+}this.setDocument (doc);
+if (text != null) {
+this.setText (text);
+this.select (0, 0);
+}if (rows < 0) {
+throw  new IllegalArgumentException ("rows: " + rows);
+}if (columns < 0) {
+throw  new IllegalArgumentException ("columns: " + columns);
+}javax.swing.LookAndFeel.installProperty (this, "focusTraversalKeysForward", javax.swing.JComponent.getManagingFocusForwardTraversalKeys ());
+javax.swing.LookAndFeel.installProperty (this, "focusTraversalKeysBackward", javax.swing.JComponent.getManagingFocusBackwardTraversalKeys ());
+}, "javax.swing.text.Document,~S,~N,~N");
+Clazz_overrideMethod (c$, "getUIClassID", 
+function () {
+return "TextAreaUI";
+});
+Clazz_defineMethod (c$, "createDefaultModel", 
+function () {
+return swingjs.JSToolkit.getPlainDocument (this);
+});
+Clazz_defineMethod (c$, "setTabSize", 
+function (size) {
+var doc = this.getDocument ();
+if (doc != null) {
+var old = this.getTabSize ();
+doc.putProperty ("tabSize",  new Integer (size));
+this.firePropertyChangeInt ("tabSize", old, size);
+}}, "~N");
+Clazz_defineMethod (c$, "getTabSize", 
+function () {
+var size = 8;
+var doc = this.getDocument ();
+if (doc != null) {
+var i = doc.getProperty ("tabSize");
+if (i != null) {
+size = i.intValue ();
+}}return size;
+});
+Clazz_defineMethod (c$, "setLineWrap", 
+function (wrap) {
+var old = this.wrap;
+this.wrap = wrap;
+this.firePropertyChangeBool ("lineWrap", old, wrap);
+}, "~B");
+Clazz_defineMethod (c$, "getLineWrap", 
+function () {
+return this.wrap;
+});
+Clazz_defineMethod (c$, "setWrapStyleWord", 
+function (word) {
+var old = this.word;
+this.word = word;
+this.firePropertyChangeBool ("wrapStyleWord", old, word);
+}, "~B");
+Clazz_defineMethod (c$, "getWrapStyleWord", 
+function () {
+return this.word;
+});
+Clazz_defineMethod (c$, "getLineOfOffset", 
+function (offset) {
+var doc = this.getDocument ();
+if (offset < 0) {
+throw  new javax.swing.text.BadLocationException ("Can't translate offset to line", -1);
+} else if (offset > doc.getLength ()) {
+throw  new javax.swing.text.BadLocationException ("Can't translate offset to line", doc.getLength () + 1);
+} else {
+var map = this.getDocument ().getDefaultRootElement ();
+return map.getElementIndex (offset);
+}}, "~N");
+Clazz_defineMethod (c$, "getLineCount", 
+function () {
+var map = this.getDocument ().getDefaultRootElement ();
+return map.getElementCount ();
+});
+Clazz_defineMethod (c$, "getLineStartOffset", 
+function (line) {
+var lineCount = this.getLineCount ();
+if (line < 0) {
+throw  new javax.swing.text.BadLocationException ("Negative line", -1);
+} else if (line >= lineCount) {
+throw  new javax.swing.text.BadLocationException ("No such line", this.getDocument ().getLength () + 1);
+} else {
+var map = this.getDocument ().getDefaultRootElement ();
+var lineElem = map.getElement (line);
+return lineElem.getStartOffset ();
+}}, "~N");
+Clazz_defineMethod (c$, "getLineEndOffset", 
+function (line) {
+var lineCount = this.getLineCount ();
+if (line < 0) {
+throw  new javax.swing.text.BadLocationException ("Negative line", -1);
+} else if (line >= lineCount) {
+throw  new javax.swing.text.BadLocationException ("No such line", this.getDocument ().getLength () + 1);
+} else {
+var map = this.getDocument ().getDefaultRootElement ();
+var lineElem = map.getElement (line);
+var endOffset = lineElem.getEndOffset ();
+return ((line == lineCount - 1) ? (endOffset - 1) : endOffset);
+}}, "~N");
+Clazz_defineMethod (c$, "insert", 
+function (str, pos) {
+var doc = this.getDocument ();
+if (doc != null) {
+try {
+doc.insertString (pos, str, null);
+} catch (e) {
+if (Clazz_exceptionOf (e, javax.swing.text.BadLocationException)) {
+throw  new IllegalArgumentException (e.getMessage ());
+} else {
+throw e;
+}
+}
+}}, "~S,~N");
+Clazz_defineMethod (c$, "append", 
+function (str) {
+var doc = this.getDocument ();
+if (doc != null) {
+try {
+doc.insertString (doc.getLength (), str, null);
+} catch (e) {
+if (Clazz_exceptionOf (e, javax.swing.text.BadLocationException)) {
+} else {
+throw e;
+}
+}
+}}, "~S");
+Clazz_defineMethod (c$, "replaceRange", 
+function (str, start, end) {
+if (end < start) {
+throw  new IllegalArgumentException ("end before start");
+}var doc = this.getDocument ();
+if (doc != null) {
+try {
+if (Clazz_instanceOf (doc, javax.swing.text.JSMinimalAbstractDocument)) {
+(doc).replace (start, end - start, str, null);
+} else {
+doc.remove (start, end - start);
+doc.insertString (start, str, null);
+}} catch (e) {
+if (Clazz_exceptionOf (e, javax.swing.text.BadLocationException)) {
+throw  new IllegalArgumentException (e.getMessage ());
+} else {
+throw e;
+}
+}
+}}, "~S,~N,~N");
+Clazz_defineMethod (c$, "getRows", 
+function () {
+return this.rows;
+});
+Clazz_defineMethod (c$, "setRows", 
+function (rows) {
+var oldVal = this.rows;
+if (rows < 0) {
+throw  new IllegalArgumentException ("rows less than zero.");
+}if (rows != oldVal) {
+this.rows = rows;
+this.invalidate ();
+}}, "~N");
+Clazz_defineMethod (c$, "getRowHeight", 
+function () {
+if (this.rowHeight == 0) {
+var metrics = this.getFontMetrics (this.getFont ());
+this.rowHeight = metrics.getHeight ();
+}return this.rowHeight;
+});
+Clazz_defineMethod (c$, "getColumns", 
+function () {
+return this.columns;
+});
+Clazz_defineMethod (c$, "setColumns", 
+function (columns) {
+var oldVal = this.columns;
+if (columns < 0) {
+throw  new IllegalArgumentException ("columns less than zero.");
+}if (columns != oldVal) {
+this.columns = columns;
+this.invalidate ();
+}}, "~N");
+Clazz_defineMethod (c$, "getColumnWidth", 
+function () {
+if (this.columnWidth == 0) {
+var metrics = this.getFontMetrics (this.getFont ());
+this.columnWidth = metrics.charWidth ('m');
+}return this.columnWidth;
+});
+Clazz_overrideMethod (c$, "getPreferredSize", 
+function () {
+var d = this.getPrefSizeJComp ();
+d = (d == null) ?  new java.awt.Dimension (400, 400) : d;
+var insets = this.getInsets ();
+if (this.columns != 0) {
+d.width = Math.max (d.width, this.columns * this.getColumnWidth () + insets.left + insets.right);
+}if (this.rows != 0) {
+d.height = Math.max (d.height, this.rows * this.getRowHeight () + insets.top + insets.bottom);
+}return d;
+});
+Clazz_defineMethod (c$, "setFont", 
+function (f) {
+Clazz_superCall (this, javax.swing.JTextArea, "setFont", [f]);
+this.rowHeight = 0;
+this.columnWidth = 0;
+}, "java.awt.Font");
+Clazz_defineMethod (c$, "paramString", 
+function () {
+var wrapString = (this.wrap ? "true" : "false");
+var wordString = (this.word ? "true" : "false");
+return Clazz_superCall (this, javax.swing.JTextArea, "paramString", []) + ",colums=" + this.columns + ",columWidth=" + this.columnWidth + ",rows=" + this.rows + ",rowHeight=" + this.rowHeight + ",word=" + wordString + ",wrap=" + wrapString;
+});
+Clazz_defineMethod (c$, "getScrollableTracksViewportWidth", 
+function () {
+return (this.wrap) ? true : Clazz_superCall (this, javax.swing.JTextArea, "getScrollableTracksViewportWidth", []);
+});
+Clazz_defineMethod (c$, "getPreferredScrollableViewportSize", 
+function () {
+var size = Clazz_superCall (this, javax.swing.JTextArea, "getPreferredScrollableViewportSize", []);
+size = (size == null) ?  new java.awt.Dimension (400, 400) : size;
+var insets = this.getInsets ();
+size.width = (this.columns == 0) ? size.width : this.columns * this.getColumnWidth () + insets.left + insets.right;
+size.height = (this.rows == 0) ? size.height : this.rows * this.getRowHeight () + insets.top + insets.bottom;
+return size;
+});
+Clazz_overrideMethod (c$, "getScrollableUnitIncrement", 
+function (visibleRect, orientation, direction) {
+switch (orientation) {
+case 1:
+return this.getRowHeight ();
+case 0:
+return this.getColumnWidth ();
+default:
+throw  new IllegalArgumentException ("Invalid orientation: " + orientation);
+}
+}, "java.awt.Rectangle,~N,~N");
+Clazz_defineStatics (c$,
+"$uiClassID", "TextAreaUI");
+});
+Clazz_declarePackage ("jalview.api");
+Clazz_declareInterface (jalview.api, "ComplexAlignFile");
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "java.awt.Dimension", "java.util.ArrayList"], "jalview.appletgui.AppletJmol", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.scriptWindow = null;
+this.inputLine = null;
+this.history = null;
+this.renderPanel = null;
+this.ap = null;
+this._aps = null;
+this.fileLoadingError = null;
+this.loadedInline = false;
+this.fr = null;
+this.jmb = null;
+if (!Clazz_isClassDefined ("jalview.appletgui.AppletJmol.RenderPanel")) {
+jalview.appletgui.AppletJmol.$AppletJmol$RenderPanel$ ();
+}
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "AppletJmol");
+Clazz_prepareFields (c$, function () {
+this._aps =  new java.util.ArrayList ();
+});
+Clazz_makeConstructor (c$, 
+function (entry, sequenceIs, object, ap2, uRL) {
+}, "jalview.datamodel.PDBEntry,~A,~O,jalview.appletgui.AlignmentPanel,~S");
+Clazz_defineMethod (c$, "setJalviewColourScheme", 
+function (ucs) {
+}, "jalview.schemes.UserColourScheme");
+c$.$AppletJmol$RenderPanel$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.currentSize = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui.AppletJmol, "RenderPanel", awt2swing.Panel);
+Clazz_prepareFields (c$, function () {
+this.currentSize =  new java.awt.Dimension ();
+});
+Clazz_overrideMethod (c$, "update", 
+function (a) {
+this.paint (a);
+}, "java.awt.Graphics");
+Clazz_defineMethod (c$, "PaintComponent", 
+function (a) {
+this.currentSize = this.getSize ();
+}, "java.awt.Graphics");
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["java.awt.Dialog", "java.awt.event.ActionListener", "awt2swing.Button"], "jalview.appletgui.JVDialog", ["awt2swing.Panel", "java.awt.FlowLayout"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.ap = null;
+this.buttonPanel = null;
+this.ok = null;
+this.cancel = null;
+this.accept = false;
+this.owner = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "JVDialog", java.awt.Dialog, java.awt.event.ActionListener);
+Clazz_prepareFields (c$, function () {
+this.ok =  new awt2swing.Button ("Accept");
+this.cancel =  new awt2swing.Button ("Cancel");
+});
+Clazz_makeConstructor (c$, 
+function (owner, title, modal, width, height) {
+Clazz_superConstructor (this, jalview.appletgui.JVDialog, [owner, title, modal]);
+this.owner = owner;
+height += owner.getInsets ().top + this.getInsets ().bottom;
+this.setBounds (owner.getBounds ().x + Clazz_doubleToInt ((owner.getSize ().width - width) / 2), owner.getBounds ().y + Clazz_doubleToInt ((owner.getSize ().height - height) / 2), width, height);
+}, "awt2swing.Frame,~S,~B,~N,~N");
+Clazz_defineMethod (c$, "setMainPanel", 
+function (panel) {
+this.add (panel, "North");
+this.buttonPanel =  new awt2swing.Panel ( new java.awt.FlowLayout ());
+this.buttonPanel.add (this.ok);
+this.buttonPanel.add (this.cancel);
+this.ok.addActionListener (this);
+this.cancel.addActionListener (this);
+this.add (this.buttonPanel, "South");
+this.pack ();
+}, "awt2swing.Panel");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.ok) {
+this.accept = true;
+}this.setVisible (false);
+}, "java.awt.event.ActionEvent");
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["jalview.appletgui.EmbmenuFrame"], "jalview.appletgui.SplitFrame", ["awt2swing.Panel", "jalview.analysis.AlignmentUtils", "jalview.bin.JalviewLite", "jalview.structure.StructureSelectionManager", "java.awt.BorderLayout", "$.Dimension", "$.GridLayout"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.topFrame = null;
+this.bottomFrame = null;
+this.outermost = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "SplitFrame", jalview.appletgui.EmbmenuFrame);
+Clazz_makeConstructor (c$, 
+function (af1, af2) {
+Clazz_superConstructor (this, jalview.appletgui.SplitFrame, []);
+this.topFrame = af1;
+this.bottomFrame = af2;
+this.init ();
+}, "jalview.appletgui.AlignFrame,jalview.appletgui.AlignFrame");
+Clazz_defineMethod (c$, "init", 
+function () {
+var $private = Clazz_checkPrivateMethod (arguments);
+if ($private != null) {
+return $private.apply (this, arguments);
+}
+this.constructSplit ();
+var topViewport = this.topFrame.viewport;
+var bottomViewport = this.bottomFrame.viewport;
+var topAlignment = topViewport.getAlignment ();
+var bottomAlignment = bottomViewport.getAlignment ();
+var cdna = topAlignment.isNucleotide () ? topViewport : (bottomAlignment.isNucleotide () ? bottomViewport : null);
+var protein = !topAlignment.isNucleotide () ? topViewport : (!bottomAlignment.isNucleotide () ? bottomViewport : null);
+var mapped = jalview.analysis.AlignmentUtils.mapProteinToCdna (protein.getAlignment (), cdna.getAlignment ());
+if (mapped) {
+var ssm = jalview.structure.StructureSelectionManager.getStructureSelectionManager (topViewport.applet);
+ssm.addMappings (protein.getAlignment ().getCodonFrames ());
+topViewport.setCodingComplement (bottomViewport);
+ssm.addCommandListener (cdna);
+ssm.addCommandListener (protein);
+}protein.initComplementConsensus ();
+var ap = topAlignment.isNucleotide () ? this.bottomFrame.alignPanel : this.topFrame.alignPanel;
+protein.updateConsensus (ap);
+this.adjustLayout ();
+});
+Clazz_defineMethod (c$, "constructSplit", 
+function () {
+this.unsetMenuBar ();
+this.outermost =  new awt2swing.Panel ( new java.awt.GridLayout (2, 1));
+var topPanel =  new awt2swing.Panel ();
+var bottomPanel =  new awt2swing.Panel ();
+this.outermost.add (topPanel);
+this.outermost.add (bottomPanel);
+this.addAlignFrameComponents (this.topFrame, topPanel);
+this.addAlignFrameComponents (this.bottomFrame, bottomPanel);
+});
+Clazz_defineMethod (c$, "adjustLayout", 
+function () {
+var cdna = this.topFrame.getAlignViewport ().getAlignment ().isNucleotide () ? this.topFrame.viewport : this.bottomFrame.viewport;
+var protein = cdna === this.topFrame.viewport ? this.bottomFrame.viewport : this.topFrame.viewport;
+var w1 = this.topFrame.alignPanel.idPanel.idCanvas.getWidth ();
+var w2 = this.bottomFrame.alignPanel.idPanel.idCanvas.getWidth ();
+var w3 = Math.max (w1, w2);
+if (w1 != w3) {
+var d = this.topFrame.alignPanel.idPanel.idCanvas.getSize ();
+this.topFrame.alignPanel.idPanel.idCanvas.setSize ( new java.awt.Dimension (w3, d.height));
+}if (w2 != w3) {
+var d = this.bottomFrame.alignPanel.idPanel.idCanvas.getSize ();
+this.bottomFrame.alignPanel.idPanel.idCanvas.setSize ( new java.awt.Dimension (w3, d.height));
+}if (protein != null && cdna != null) {
+var vs = protein.getViewStyle ();
+var scale = vs.isScaleProteinAsCdna () ? 3 : 1;
+vs.setCharWidth (scale * cdna.getViewStyle ().getCharWidth ());
+protein.setViewStyle (vs);
+}});
+Clazz_defineMethod (c$, "addAlignFrameComponents", 
+ function (af, panel) {
+panel.setLayout ( new java.awt.BorderLayout ());
+var menuPanel = af.makeEmbeddedPopupMenu (af.getJMenuBar (), true, false);
+panel.add (menuPanel, "North");
+panel.add (af.statusBar, "South");
+panel.add (af.alignPanel, "Center");
+af.setSplitFrame (this);
+}, "jalview.appletgui.AlignFrame,awt2swing.Panel");
+Clazz_defineMethod (c$, "addToDisplay", 
+function (embedded, applet) {
+this.createSplitFrameWindow (embedded, applet);
+this.validate ();
+this.topFrame.alignPanel.adjustAnnotationHeight ();
+this.topFrame.alignPanel.paintAlignment (true);
+this.bottomFrame.alignPanel.adjustAnnotationHeight ();
+this.bottomFrame.alignPanel.paintAlignment (true);
+}, "~B,jalview.bin.JalviewLite");
+Clazz_defineMethod (c$, "createSplitFrameWindow", 
+function (embed, applet) {
+if (embed) {
+applet.add (this.outermost);
+applet.validate ();
+} else {
+this.add (this.outermost);
+var width = Math.max (this.topFrame.frameWidth, this.bottomFrame.frameWidth);
+var height = this.topFrame.frameHeight + this.bottomFrame.frameHeight;
+jalview.bin.JalviewLite.addFrame (this, this.getTitle (), width, height);
+}}, "~B,jalview.bin.JalviewLite");
+Clazz_defineMethod (c$, "getComplement", 
+function (af) {
+if (this.topFrame === af) {
+return this.bottomFrame;
+} else if (this.bottomFrame === af) {
+return this.topFrame;
+}return null;
+}, "jalview.appletgui.AlignFrame");
+});
+Clazz_declarePackage ("java.awt");
+Clazz_load (["java.awt.LayoutManager"], "java.awt.GridLayout", ["java.lang.IllegalArgumentException", "java.awt.Dimension"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.hgap = 0;
+this.vgap = 0;
+this.rows = 0;
+this.cols = 0;
+Clazz_instantialize (this, arguments);
+}, java.awt, "GridLayout", null, [java.awt.LayoutManager, java.io.Serializable]);
+Clazz_makeConstructor (c$, 
+function () {
+this.construct (1, 0, 0, 0);
+});
+Clazz_makeConstructor (c$, 
+function (rows, cols) {
+this.construct (rows, cols, 0, 0);
+}, "~N,~N");
+Clazz_makeConstructor (c$, 
+function (rows, cols, hgap, vgap) {
+if ((rows == 0) && (cols == 0)) {
+throw  new IllegalArgumentException ("rows and cols cannot both be zero");
+}this.rows = rows;
+this.cols = cols;
+this.hgap = hgap;
+this.vgap = vgap;
+}, "~N,~N,~N,~N");
+Clazz_defineMethod (c$, "getRows", 
+function () {
+return this.rows;
+});
+Clazz_defineMethod (c$, "setRows", 
+function (rows) {
+if ((rows == 0) && (this.cols == 0)) {
+throw  new IllegalArgumentException ("rows and cols cannot both be zero");
+}this.rows = rows;
+}, "~N");
+Clazz_defineMethod (c$, "getColumns", 
+function () {
+return this.cols;
+});
+Clazz_defineMethod (c$, "setColumns", 
+function (cols) {
+if ((cols == 0) && (this.rows == 0)) {
+throw  new IllegalArgumentException ("rows and cols cannot both be zero");
+}this.cols = cols;
+}, "~N");
+Clazz_defineMethod (c$, "getHgap", 
+function () {
+return this.hgap;
+});
+Clazz_defineMethod (c$, "setHgap", 
+function (hgap) {
+this.hgap = hgap;
+}, "~N");
+Clazz_defineMethod (c$, "getVgap", 
+function () {
+return this.vgap;
+});
+Clazz_defineMethod (c$, "setVgap", 
+function (vgap) {
+this.vgap = vgap;
+}, "~N");
+Clazz_overrideMethod (c$, "addLayoutComponent", 
+function (name, comp) {
+}, "~S,java.awt.Component");
+Clazz_overrideMethod (c$, "removeLayoutComponent", 
+function (comp) {
+}, "java.awt.Component");
+Clazz_overrideMethod (c$, "preferredLayoutSize", 
+function (parent) {
+{
+var insets = parent.getInsets ();
+var ncomponents = parent.getComponentCount ();
+var nrows = this.rows;
+var ncols = this.cols;
+if (nrows > 0) {
+ncols = Clazz_doubleToInt ((ncomponents + nrows - 1) / nrows);
+} else {
+nrows = Clazz_doubleToInt ((ncomponents + ncols - 1) / ncols);
+}var w = 0;
+var h = 0;
+for (var i = 0; i < ncomponents; i++) {
+var comp = parent.getComponent (i);
+var d = comp.getPreferredSize ();
+if (w < d.width) {
+w = d.width;
+}if (h < d.height) {
+h = d.height;
+}}
+return  new java.awt.Dimension (insets.left + insets.right + ncols * w + (ncols - 1) * this.hgap, insets.top + insets.bottom + nrows * h + (nrows - 1) * this.vgap);
+}}, "java.awt.Container");
+Clazz_overrideMethod (c$, "minimumLayoutSize", 
+function (parent) {
+{
+var insets = parent.getInsets ();
+var ncomponents = parent.getComponentCount ();
+var nrows = this.rows;
+var ncols = this.cols;
+if (nrows > 0) {
+ncols = Clazz_doubleToInt ((ncomponents + nrows - 1) / nrows);
+} else {
+nrows = Clazz_doubleToInt ((ncomponents + ncols - 1) / ncols);
+}var w = 0;
+var h = 0;
+for (var i = 0; i < ncomponents; i++) {
+var comp = parent.getComponent (i);
+var d = comp.getMinimumSize ();
+if (w < d.width) {
+w = d.width;
+}if (h < d.height) {
+h = d.height;
+}}
+return  new java.awt.Dimension (insets.left + insets.right + ncols * w + (ncols - 1) * this.hgap, insets.top + insets.bottom + nrows * h + (nrows - 1) * this.vgap);
+}}, "java.awt.Container");
+Clazz_overrideMethod (c$, "layoutContainer", 
+function (parent) {
+{
+var insets = parent.getInsets ();
+var ncomponents = parent.getComponentCount ();
+var nrows = this.rows;
+var ncols = this.cols;
+var ltr = parent.getComponentOrientation ().isLeftToRight ();
+if (ncomponents == 0) {
+return;
+}if (nrows > 0) {
+ncols = Clazz_doubleToInt ((ncomponents + nrows - 1) / nrows);
+} else {
+nrows = Clazz_doubleToInt ((ncomponents + ncols - 1) / ncols);
+}var totalGapsWidth = (ncols - 1) * this.hgap;
+var widthWOInsets = parent.width - (insets.left + insets.right);
+var widthOnComponent = Clazz_doubleToInt ((widthWOInsets - totalGapsWidth) / ncols);
+var extraWidthAvailable = Clazz_doubleToInt ((widthWOInsets - (widthOnComponent * ncols + totalGapsWidth)) / 2);
+var totalGapsHeight = (nrows - 1) * this.vgap;
+var heightWOInsets = parent.height - (insets.top + insets.bottom);
+var heightOnComponent = Clazz_doubleToInt ((heightWOInsets - totalGapsHeight) / nrows);
+var extraHeightAvailable = Clazz_doubleToInt ((heightWOInsets - (heightOnComponent * nrows + totalGapsHeight)) / 2);
+if (ltr) {
+for (var c = 0, x = insets.left + extraWidthAvailable; c < ncols; c++, x += widthOnComponent + this.hgap) {
+for (var r = 0, y = insets.top + extraHeightAvailable; r < nrows; r++, y += heightOnComponent + this.vgap) {
+var i = r * ncols + c;
+if (i < ncomponents) {
+parent.getComponent (i).setBounds (x, y, widthOnComponent, heightOnComponent);
+}}
+}
+} else {
+for (var c = 0, x = (parent.width - insets.right - widthOnComponent) - extraWidthAvailable; c < ncols; c++, x -= widthOnComponent + this.hgap) {
+for (var r = 0, y = insets.top + extraHeightAvailable; r < nrows; r++, y += heightOnComponent + this.vgap) {
+var i = r * ncols + c;
+if (i < ncomponents) {
+parent.getComponent (i).setBounds (x, y, widthOnComponent, heightOnComponent);
+}}
+}
+}}}, "java.awt.Container");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return this.getClass ().getName () + "[hgap=" + this.hgap + ",vgap=" + this.vgap + ",rows=" + this.rows + ",cols=" + this.cols + "]";
+});
+});
+Clazz_declarePackage ("jalview.io");
+Clazz_load (null, "jalview.io.AnnotationFile", ["jalview.analysis.Conservation", "jalview.datamodel.AlignmentAnnotation", "$.Annotation", "$.ColumnSelection", "$.GraphLine", "$.SequenceGroup", "jalview.io.AppletFormatAdapter", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.ColourSchemeProperty", "$.ResidueProperties", "$.UserColourScheme", "jalview.util.Comparison", "$.Format", "java.awt.Color", "java.io.BufferedReader", "$.InputStreamReader", "$.StringReader", "java.lang.Boolean", "$.Float", "$.StringBuffer", "java.util.ArrayList", "$.BitSet", "$.Date", "$.Hashtable", "$.StringTokenizer", "$.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.newline = null;
+this.text = null;
+if (!Clazz_isClassDefined ("jalview.io.AnnotationFile.ViewDef")) {
+jalview.io.AnnotationFile.$AnnotationFile$ViewDef$ ();
+}
+this.refSeq = null;
+this.refSeqId = null;
+this.nlinesread = 0;
+this.lastread = "";
+Clazz_instantialize (this, arguments);
+}, jalview.io, "AnnotationFile");
+Clazz_prepareFields (c$, function () {
+this.newline = System.getProperty ("line.separator");
+});
+Clazz_makeConstructor (c$, 
+function () {
+this.init ();
+});
+Clazz_defineMethod (c$, "setNewlineString", 
+function (nl) {
+this.newline = nl;
+this.init ();
+}, "~S");
+Clazz_defineMethod (c$, "getNewlineString", 
+function () {
+return this.newline;
+});
+Clazz_defineMethod (c$, "init", 
+ function () {
+this.text =  new StringBuffer ("JALVIEW_ANNOTATION" + this.newline + "# Created: " +  new java.util.Date () + this.newline + this.newline);
+this.refSeq = null;
+this.refSeqId = null;
+});
+Clazz_defineMethod (c$, "printAnnotations", 
+function (annotations, list, properties) {
+return this.printAnnotations (annotations, list, properties, null, null, null);
+}, "~A,java.util.List,java.util.Hashtable");
+Clazz_defineMethod (c$, "printAnnotations", 
+function (annotations, list, properties, cs, al, view) {
+if (view != null) {
+if (view.viewname != null) {
+this.text.append ("VIEW_DEF\t" + view.viewname + "\n");
+}if (list == null) {
+list = view.visibleGroups;
+}if (cs == null) {
+cs = view.hiddencols;
+}if (al == null) {
+}}if (al != null && al.hasSeqrep ()) {
+this.text.append ("VIEW_SETREF\t" + al.getSeqrep ().getName () + "\n");
+}if (cs != null && cs.hasHiddenColumns ()) {
+this.text.append ("VIEW_HIDECOLS\t");
+var hc = cs.getHiddenColumns ();
+var comma = false;
+for (var r, $r = hc.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
+if (!comma) {
+comma = true;
+} else {
+this.text.append (",");
+}this.text.append ("" + r[0]);
+this.text.append ("-");
+this.text.append ("" + r[1]);
+}
+this.text.append ("\n");
+}if (annotations != null) {
+var oneColour = true;
+var row;
+var comma;
+var refSeq = null;
+var refGroup = null;
+var colours =  new StringBuffer ();
+var graphLine =  new StringBuffer ();
+var rowprops =  new StringBuffer ();
+var graphGroup =  new java.util.Hashtable ();
+var graphGroup_refs =  new java.util.Hashtable ();
+var graphGroupSeen =  new java.util.BitSet ();
+var color;
+for (var i = 0; i < annotations.length; i++) {
+row = annotations[i];
+if (!row.visible && !row.hasScore () && !(row.graphGroup > -1 && graphGroupSeen.get (row.graphGroup))) {
+continue;
+}color = null;
+oneColour = true;
+this.writeSequence_Ref (refSeq, row.sequenceRef);
+refSeq = row.sequenceRef;
+this.writeGroup_Ref (refGroup, row.groupRef);
+refGroup = row.groupRef;
+var hasGlyphs = row.hasIcons;
+var hasLabels = row.hasText;
+var hasValues = row.$hasScore;
+var hasText = false;
+for (var j = 0; row.annotations != null && j < row.annotations.length && (!hasGlyphs || !hasLabels || !hasValues); j++) {
+if (row.annotations[j] != null) {
+hasLabels = new Boolean (hasLabels | (row.annotations[j].displayCharacter != null && row.annotations[j].displayCharacter.length > 0 && !row.annotations[j].displayCharacter.equals (" "))).valueOf ();
+hasGlyphs = new Boolean (hasGlyphs | ((row.annotations[j].secondaryStructure).charCodeAt (0) != 0 && row.annotations[j].secondaryStructure != ' ')).valueOf ();
+hasValues = new Boolean (hasValues | (!Float.isNaN (row.annotations[j].value))).valueOf ();
+hasText = new Boolean (hasText | (row.annotations[j].description != null && row.annotations[j].description.length > 0)).valueOf ();
+}}
+if (row.graph == 0) {
+this.text.append ("NO_GRAPH\t");
+hasValues = false;
+} else {
+if (row.graph == 1) {
+this.text.append ("BAR_GRAPH\t");
+hasGlyphs = false;
+} else if (row.graph == 2) {
+hasGlyphs = false;
+this.text.append ("LINE_GRAPH\t");
+}if (row.getThreshold () != null) {
+graphLine.append ("GRAPHLINE\t");
+graphLine.append (row.label);
+graphLine.append ("\t");
+graphLine.append (row.getThreshold ().value);
+graphLine.append ("\t");
+graphLine.append (row.getThreshold ().label);
+graphLine.append ("\t");
+graphLine.append (jalview.util.Format.getHexString (row.getThreshold ().colour));
+graphLine.append (this.newline);
+}if (row.graphGroup > -1) {
+graphGroupSeen.set (row.graphGroup);
+var key =  new Integer (row.graphGroup);
+if (graphGroup.containsKey (key)) {
+graphGroup.put (key, graphGroup.get (key) + "\t" + row.label);
+} else {
+graphGroup_refs.put (key,  Clazz_newArray (-1, [refSeq, refGroup]));
+graphGroup.put (key, row.label);
+}}}this.text.append (row.label + "\t");
+if (row.description != null) {
+this.text.append (row.description + "\t");
+}for (var j = 0; row.annotations != null && j < row.annotations.length; j++) {
+if (refSeq != null && jalview.util.Comparison.isGap (refSeq.getCharAt (j))) {
+continue;
+}if (row.annotations[j] != null) {
+comma = "";
+if (hasGlyphs) {
+this.text.append (comma);
+if (row.annotations[j].secondaryStructure != ' ') {
+this.text.append (row.annotations[j].secondaryStructure);
+}comma = ",";
+}if (hasValues) {
+if (!Float.isNaN (row.annotations[j].value)) {
+this.text.append (comma + row.annotations[j].value);
+} else {
+System.err.println ("Skipping NaN - not valid value.");
+this.text.append (comma + 0);
+}comma = ",";
+}if (hasLabels) {
+if (row.annotations[j].displayCharacter != null && row.annotations[j].displayCharacter.length > 0 && !row.annotations[j].displayCharacter.equals (" ")) {
+this.text.append (comma + row.annotations[j].displayCharacter);
+comma = ",";
+}}if (hasText) {
+if (row.annotations[j].description != null && row.annotations[j].description.length > 0 && !row.annotations[j].description.equals (row.annotations[j].displayCharacter)) {
+this.text.append (comma + row.annotations[j].description);
+comma = ",";
+}}if (color != null && !color.equals (row.annotations[j].colour)) {
+oneColour = false;
+}color = row.annotations[j].colour;
+if (row.annotations[j].colour != null && row.annotations[j].colour !== java.awt.Color.black) {
+this.text.append (comma + "[" + jalview.util.Format.getHexString (row.annotations[j].colour) + "]");
+comma = ",";
+}}this.text.append ("|");
+}
+if (row.hasScore ()) {
+this.text.append ("\t" + row.score);
+}this.text.append (this.newline);
+if (color != null && color !== java.awt.Color.black && oneColour) {
+colours.append ("COLOUR\t");
+colours.append (row.label);
+colours.append ("\t");
+colours.append (jalview.util.Format.getHexString (color));
+colours.append (this.newline);
+}if (row.scaleColLabel || row.showAllColLabels || row.centreColLabels) {
+rowprops.append ("ROWPROPERTIES\t");
+rowprops.append (row.label);
+rowprops.append ("\tscaletofit=");
+rowprops.append (row.scaleColLabel);
+rowprops.append ("\tshowalllabs=");
+rowprops.append (row.showAllColLabels);
+rowprops.append ("\tcentrelabs=");
+rowprops.append (row.centreColLabels);
+rowprops.append (this.newline);
+}if (graphLine.length () > 0) {
+this.text.append (graphLine.toString ());
+graphLine.setLength (0);
+}}
+this.text.append (this.newline);
+this.text.append (colours.toString ());
+if (graphGroup.size () > 0) {
+var oldRefSeq = refSeq;
+var oldRefGroup = refGroup;
+for (var combine_statement, $combine_statement = graphGroup.entrySet ().iterator (); $combine_statement.hasNext () && ((combine_statement = $combine_statement.next ()) || true);) {
+var seqRefAndGroup = graphGroup_refs.get (combine_statement.getKey ());
+this.writeSequence_Ref (refSeq, seqRefAndGroup[0]);
+refSeq = seqRefAndGroup[0];
+this.writeGroup_Ref (refGroup, seqRefAndGroup[1]);
+refGroup = seqRefAndGroup[1];
+this.text.append ("COMBINE\t");
+this.text.append (combine_statement.getValue ());
+this.text.append (this.newline);
+}
+this.writeSequence_Ref (refSeq, oldRefSeq);
+refSeq = oldRefSeq;
+this.writeGroup_Ref (refGroup, oldRefGroup);
+refGroup = oldRefGroup;
+}this.text.append (rowprops.toString ());
+}if (list != null) {
+this.printGroups (list);
+}if (properties != null) {
+this.text.append (this.newline);
+this.text.append (this.newline);
+this.text.append ("ALIGNMENT");
+var en = properties.keys ();
+while (en.hasMoreElements ()) {
+var key = en.nextElement ().toString ();
+this.text.append ("\t");
+this.text.append (key);
+this.text.append ("=");
+this.text.append (properties.get (key));
+}
+}return this.text.toString ();
+}, "~A,java.util.List,java.util.Hashtable,jalview.datamodel.ColumnSelection,jalview.datamodel.AlignmentI,jalview.io.AnnotationFile.ViewDef");
+Clazz_defineMethod (c$, "writeGroup_Ref", 
+ function (refGroup, next_refGroup) {
+if (next_refGroup == null) {
+if (refGroup != null) {
+this.text.append (this.newline);
+this.text.append ("GROUP_REF\t");
+this.text.append ("ALIGNMENT");
+this.text.append (this.newline);
+}return true;
+} else {
+if (refGroup == null || refGroup !== next_refGroup) {
+this.text.append (this.newline);
+this.text.append ("GROUP_REF\t");
+this.text.append (next_refGroup.getName ());
+this.text.append (this.newline);
+return true;
+}}return false;
+}, "jalview.datamodel.SequenceGroup,jalview.datamodel.SequenceGroup");
+Clazz_defineMethod (c$, "writeSequence_Ref", 
+ function (refSeq, next_refSeq) {
+if (next_refSeq == null) {
+if (refSeq != null) {
+this.text.append (this.newline);
+this.text.append ("SEQUENCE_REF\t");
+this.text.append ("ALIGNMENT");
+this.text.append (this.newline);
+return true;
+}} else {
+if (refSeq == null || refSeq !== next_refSeq) {
+this.text.append (this.newline);
+this.text.append ("SEQUENCE_REF\t");
+this.text.append (next_refSeq.getName ());
+this.text.append (this.newline);
+return true;
+}}return false;
+}, "jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "printGroups", 
+function (list) {
+var seqrep = null;
+for (var sg, $sg = list.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (!sg.hasSeqrep ()) {
+this.text.append ("SEQUENCE_GROUP\t" + sg.getName () + "\t" + (sg.getStartRes () + 1) + "\t" + (sg.getEndRes () + 1) + "\t" + "-1\t");
+seqrep = null;
+} else {
+seqrep = sg.getSeqrep ();
+this.text.append ("SEQUENCE_REF\t");
+this.text.append (seqrep.getName ());
+this.text.append (this.newline);
+this.text.append ("SEQUENCE_GROUP\t");
+this.text.append (sg.getName ());
+this.text.append ("\t");
+this.text.append ("" + (seqrep.findPosition (sg.getStartRes ())));
+this.text.append ("\t");
+this.text.append ((seqrep.findPosition (sg.getEndRes ())));
+this.text.append ("\t");
+this.text.append ("-1\t");
+}for (var s = 0; s < sg.getSize (); s++) {
+this.text.append (sg.getSequenceAt (s).getName ());
+this.text.append ("\t");
+}
+this.text.append (this.newline);
+this.text.append ("PROPERTIES\t");
+this.text.append (sg.getName ());
+this.text.append ("\t");
+if (sg.getDescription () != null) {
+this.text.append ("description=");
+this.text.append (sg.getDescription ());
+this.text.append ("\t");
+}if (sg.cs != null) {
+this.text.append ("colour=");
+this.text.append (jalview.schemes.ColourSchemeProperty.getColourName (sg.cs));
+this.text.append ("\t");
+if (sg.cs.getThreshold () != 0) {
+this.text.append ("pidThreshold=");
+this.text.append (sg.cs.getThreshold ());
+}if (sg.cs.conservationApplied ()) {
+this.text.append ("consThreshold=");
+this.text.append (sg.cs.getConservationInc ());
+this.text.append ("\t");
+}}this.text.append ("outlineColour=");
+this.text.append (jalview.util.Format.getHexString (sg.getOutlineColour ()));
+this.text.append ("\t");
+this.text.append ("displayBoxes=");
+this.text.append (sg.getDisplayBoxes ());
+this.text.append ("\t");
+this.text.append ("displayText=");
+this.text.append (sg.getDisplayText ());
+this.text.append ("\t");
+this.text.append ("colourText=");
+this.text.append (sg.getColourText ());
+this.text.append ("\t");
+this.text.append ("showUnconserved=");
+this.text.append (sg.getShowNonconserved ());
+this.text.append ("\t");
+if (sg.textColour !== java.awt.Color.black) {
+this.text.append ("textCol1=");
+this.text.append (jalview.util.Format.getHexString (sg.textColour));
+this.text.append ("\t");
+}if (sg.textColour2 !== java.awt.Color.white) {
+this.text.append ("textCol2=");
+this.text.append (jalview.util.Format.getHexString (sg.textColour2));
+this.text.append ("\t");
+}if (sg.thresholdTextColour != 0) {
+this.text.append ("textColThreshold=");
+this.text.append (sg.thresholdTextColour);
+this.text.append ("\t");
+}if (sg.idColour != null) {
+this.text.append ("idColour=");
+this.text.append (jalview.util.Format.getHexString (sg.idColour));
+this.text.append ("\t");
+}if (sg.isHidereps ()) {
+this.text.append ("hide=true\t");
+}if (sg.isHideCols ()) {
+this.text.append ("hidecols=true\t");
+}if (seqrep != null) {
+this.text.append (this.newline);
+this.text.append ("SEQUENCE_REF");
+}this.text.append (this.newline);
+this.text.append (this.newline);
+}
+}, "java.util.List");
+Clazz_defineMethod (c$, "annotateAlignmentView", 
+function (viewport, file, protocol) {
+var colSel = viewport.getColumnSelection ();
+if (colSel == null) {
+colSel =  new jalview.datamodel.ColumnSelection ();
+}var rslt = this.readAnnotationFile (viewport.getAlignment (), colSel, file, protocol);
+if (rslt && (colSel.hasSelectedColumns () || colSel.hasHiddenColumns ())) {
+viewport.setColumnSelection (colSel);
+}return rslt;
+}, "jalview.api.AlignViewportI,~S,~S");
+Clazz_defineMethod (c$, "readAnnotationFile", 
+function (al, file, protocol) {
+return this.readAnnotationFile (al, null, file, protocol);
+}, "jalview.datamodel.AlignmentI,~S,~S");
+Clazz_defineMethod (c$, "readAnnotationFile", 
+function (al, colSel, file, protocol) {
+var $in = null;
+try {
+if (protocol.equals (jalview.io.AppletFormatAdapter.FILE)) {
+$in = jalview.jsdev.GenericFileAdapter.getReader (file, false);
+} else if (protocol.equals (jalview.io.AppletFormatAdapter.URL)) {
+$in = jalview.jsdev.GenericFileAdapter.getReader (file, true);
+} else if (protocol.equals (jalview.io.AppletFormatAdapter.PASTE)) {
+$in =  new java.io.BufferedReader ( new java.io.StringReader (file));
+} else if (protocol.equals (jalview.io.AppletFormatAdapter.CLASSLOADER)) {
+var is = this.getClass ().getResourceAsStream ("/" + file);
+if (is != null) {
+$in =  new java.io.BufferedReader ( new java.io.InputStreamReader (is));
+}}if ($in != null) {
+return this.parseAnnotationFrom (al, colSel, $in);
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+System.out.println ("Problem reading annotation file: " + ex);
+if (this.nlinesread > 0) {
+System.out.println ("Last read line " + this.nlinesread + ": '" + this.lastread + "' (first 80 chars) ...");
+}return false;
+} else {
+throw ex;
+}
+}
+return false;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,~S,~S");
+Clazz_defineMethod (c$, "parseAnnotationFrom", 
+function (al, colSel, $in) {
+this.nlinesread = 0;
+var combineAnnotation_calls =  new java.util.ArrayList ();
+var deferredAnnotation_calls =  new java.util.ArrayList ();
+var modified = false;
+var groupRef = null;
+var groupRefRows =  new java.util.Hashtable ();
+var autoAnnots =  new java.util.Hashtable ();
+{
+var line;
+var label;
+var description;
+var token;
+var graphStyle;
+var index;
+var refSeqIndex = 1;
+var existingAnnotations = 0;
+var overrideAutoAnnot = false;
+if (al.getAlignmentAnnotation () != null) {
+existingAnnotations = al.getAlignmentAnnotation ().length;
+if (existingAnnotations > 0) {
+var aa = al.getAlignmentAnnotation ();
+for (var aai = 0; aai < aa.length; aai++) {
+if (aa[aai].autoCalculated) {
+autoAnnots.put (this.autoAnnotsKey (aa[aai], aa[aai].sequenceRef, (aa[aai].groupRef == null ? null : aa[aai].groupRef.getName ())),  new Integer (1));
+}}
+}}var alWidth = al.getWidth ();
+var st;
+var annotations;
+var annotation = null;
+var jvAnnotationFile = false;
+while ((line = $in.readLine ()) != null) {
+this.nlinesread++;
+this.lastread =  String.instantialize (line);
+if (line.indexOf ("#") == 0) {
+continue;
+}if (line.indexOf ("JALVIEW_ANNOTATION") > -1) {
+jvAnnotationFile = true;
+break;
+}}
+if (!jvAnnotationFile) {
+$in.close ();
+return false;
+}while ((line = $in.readLine ()) != null) {
+this.nlinesread++;
+this.lastread =  String.instantialize (line);
+if (line.indexOf ("#") == 0 || line.indexOf ("JALVIEW_ANNOTATION") > -1 || line.length == 0) {
+continue;
+}st =  new java.util.StringTokenizer (line, "\t");
+token = st.nextToken ();
+if (token.equalsIgnoreCase ("COLOUR")) {
+this.colourAnnotations (al, st.nextToken (), st.nextToken ());
+modified = true;
+continue;
+} else if (token.equalsIgnoreCase (jalview.io.AnnotationFile.COMBINE)) {
+combineAnnotation_calls.add ( Clazz_newArray (-1, [st, this.refSeq, groupRef]));
+modified = true;
+continue;
+} else if (token.equalsIgnoreCase ("ROWPROPERTIES")) {
+this.addRowProperties (al, st);
+modified = true;
+continue;
+} else if (token.equalsIgnoreCase (jalview.io.AnnotationFile.GRAPHLINE)) {
+deferredAnnotation_calls.add ( Clazz_newArray (-1, [jalview.io.AnnotationFile.GRAPHLINE, st, this.refSeq, groupRef]));
+modified = true;
+continue;
+} else if (token.equalsIgnoreCase ("SEQUENCE_REF")) {
+if (st.hasMoreTokens ()) {
+this.refSeq = al.findName (this.refSeqId = st.nextToken ());
+if (this.refSeq == null) {
+this.refSeqId = null;
+}try {
+refSeqIndex = Integer.parseInt (st.nextToken ());
+if (refSeqIndex < 1) {
+refSeqIndex = 1;
+System.out.println ("WARNING: SEQUENCE_REF index must be > 0 in AnnotationFile");
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+refSeqIndex = 1;
+} else {
+throw ex;
+}
+}
+} else {
+this.refSeq = null;
+this.refSeqId = null;
+}continue;
+} else if (token.equalsIgnoreCase ("GROUP_REF")) {
+groupRef = null;
+if (st.hasMoreTokens ()) {
+groupRef = st.nextToken ();
+if (groupRef.length < 1) {
+groupRef = null;
+} else {
+if (groupRefRows.get (groupRef) == null) {
+groupRefRows.put (groupRef,  new java.util.Vector ());
+}}}continue;
+} else if (token.equalsIgnoreCase ("SEQUENCE_GROUP")) {
+this.addGroup (al, st);
+modified = true;
+continue;
+} else if (token.equalsIgnoreCase ("PROPERTIES")) {
+this.addProperties (al, st);
+modified = true;
+continue;
+} else if (token.equalsIgnoreCase ("BELOW_ALIGNMENT")) {
+this.setBelowAlignment (al, st);
+modified = true;
+continue;
+} else if (token.equalsIgnoreCase ("ALIGNMENT")) {
+this.addAlignmentDetails (al, st);
+modified = true;
+continue;
+} else if (token.equalsIgnoreCase ("VIEW_SETREF")) {
+if (this.refSeq != null) {
+al.setSeqrep (this.refSeq);
+}modified = true;
+continue;
+} else if (token.equalsIgnoreCase ("VIEW_HIDECOLS")) {
+if (st.hasMoreTokens ()) {
+if (colSel == null) {
+colSel =  new jalview.datamodel.ColumnSelection ();
+}this.parseHideCols (colSel, st.nextToken ());
+}modified = true;
+continue;
+} else if (token.equalsIgnoreCase ("HIDE_INSERTIONS")) {
+var sr = this.refSeq == null ? al.getSeqrep () : this.refSeq;
+if (sr == null) {
+sr = al.getSequenceAt (0);
+}if (sr != null) {
+if (colSel == null) {
+System.err.println ("Cannot process HIDE_INSERTIONS without an alignment view: Ignoring line: " + line);
+} else {
+colSel.hideInsertionsFor (sr);
+}}modified = true;
+continue;
+}graphStyle = jalview.datamodel.AlignmentAnnotation.getGraphValueFromString (token);
+label = st.nextToken ();
+index = 0;
+annotations =  new Array (alWidth);
+description = null;
+var score = NaN;
+if (st.hasMoreTokens ()) {
+line = st.nextToken ();
+if (line.indexOf ("|") == -1) {
+description = line;
+if (st.hasMoreTokens ()) {
+line = st.nextToken ();
+}}if (st.hasMoreTokens ()) {
+score = Float.$valueOf (st.nextToken ()).floatValue ();
+}st =  new java.util.StringTokenizer (line, "|", true);
+var emptyColumn = true;
+var onlyOneElement = (st.countTokens () == 1);
+while (st.hasMoreElements () && index < alWidth) {
+token = st.nextToken ().trim ();
+if (onlyOneElement) {
+try {
+score = Float.$valueOf (token).floatValue ();
+break;
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+}if (token.equals ("|")) {
+if (emptyColumn) {
+index++;
+}emptyColumn = true;
+} else {
+annotations[index++] = this.parseAnnotation (token, graphStyle);
+emptyColumn = false;
+}}
+}annotation =  new jalview.datamodel.AlignmentAnnotation (label, description, (index == 0) ? null : annotations, 0, 0, graphStyle);
+annotation.score = score;
+if (!overrideAutoAnnot && autoAnnots.containsKey (this.autoAnnotsKey (annotation, this.refSeq, groupRef))) {
+continue;
+}if (this.refSeq != null) {
+annotation.belowAlignment = false;
+var referedSeq = this.refSeq;
+do {
+var ann =  new jalview.datamodel.AlignmentAnnotation (annotation);
+annotation.createSequenceMapping (referedSeq, refSeqIndex, false);
+annotation.adjustForAlignment ();
+referedSeq.addAlignmentAnnotation (annotation);
+al.addAnnotation (annotation);
+al.setAnnotationIndex (annotation, al.getAlignmentAnnotation ().length - existingAnnotations - 1);
+if (groupRef != null) {
+(groupRefRows.get (groupRef)).addElement (annotation);
+}annotation = ann;
+} while (this.refSeqId != null && (referedSeq = al.findName (referedSeq, this.refSeqId, true)) != null);
+} else {
+al.addAnnotation (annotation);
+al.setAnnotationIndex (annotation, al.getAlignmentAnnotation ().length - existingAnnotations - 1);
+if (groupRef != null) {
+(groupRefRows.get (groupRef)).addElement (annotation);
+}}modified = true;
+}
+var groupRefLookup =  new java.util.Hashtable ();
+var en = groupRefRows.keys ();
+while (en.hasMoreElements ()) {
+groupRef = en.nextElement ();
+var matched = false;
+for (var theGroup, $theGroup = al.getGroups ().iterator (); $theGroup.hasNext () && ((theGroup = $theGroup.next ()) || true);) {
+if (theGroup.getName ().equals (groupRef)) {
+if (matched) {
+System.err.println ("Ignoring 1:many group reference mappings for group name '" + groupRef + "'");
+} else {
+matched = true;
+var rowset = groupRefRows.get (groupRef);
+groupRefLookup.put (groupRef, theGroup);
+if (rowset != null && rowset.size () > 0) {
+var alan = null;
+for (var elm = 0, elmSize = rowset.size (); elm < elmSize; elm++) {
+alan = rowset.elementAt (elm);
+alan.groupRef = theGroup;
+}
+}}}}
+(groupRefRows.get (groupRef)).removeAllElements ();
+}
+for (var _deferred_args, $_deferred_args = deferredAnnotation_calls.iterator (); $_deferred_args.hasNext () && ((_deferred_args = $_deferred_args.next ()) || true);) {
+if (_deferred_args[0] === jalview.io.AnnotationFile.GRAPHLINE) {
+this.addLine (al, _deferred_args[1], _deferred_args[2], (_deferred_args[3] == null) ? null : groupRefLookup.get (_deferred_args[3]));
+}}
+var combinecount = 0;
+for (var _combine_args, $_combine_args = combineAnnotation_calls.iterator (); $_combine_args.hasNext () && ((_combine_args = $_combine_args.next ()) || true);) {
+this.combineAnnotations (al, ++combinecount, _combine_args[0], _combine_args[1], (_combine_args[2] == null) ? null : groupRefLookup.get (_combine_args[2]));
+}
+}return modified;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,java.io.BufferedReader");
+Clazz_defineMethod (c$, "parseHideCols", 
+ function (colSel, nextToken) {
+var inval =  new java.util.StringTokenizer (nextToken, ",");
+while (inval.hasMoreTokens ()) {
+var range = inval.nextToken ().trim ();
+var from;
+var to = range.indexOf ("-");
+if (to == -1) {
+from = to = Integer.parseInt (range);
+if (from >= 0) {
+colSel.hideColumns (from, to);
+}} else {
+from = Integer.parseInt (range.substring (0, to));
+if (to < range.length - 1) {
+to = Integer.parseInt (range.substring (to + 1));
+} else {
+to = from;
+}if (from > 0 && to >= from) {
+colSel.hideColumns (from, to);
+}}}
+}, "jalview.datamodel.ColumnSelection,~S");
+Clazz_defineMethod (c$, "autoAnnotsKey", 
+ function (annotation, refSeq, groupRef) {
+return annotation.graph + "\t" + annotation.label + "\t" + annotation.description + "\t" + (refSeq != null ? refSeq.getDisplayId (true) : "");
+}, "jalview.datamodel.AlignmentAnnotation,jalview.datamodel.SequenceI,~S");
+Clazz_defineMethod (c$, "parseAnnotation", 
+function (string, graphStyle) {
+var hasSymbols = (graphStyle == 0);
+var desc = null;
+var displayChar = null;
+var ss = ' ';
+var value = 0;
+var parsedValue = false;
+var dcset = false;
+var colour = null;
+var i = string.indexOf ("[");
+var j = string.indexOf ("]");
+if (i > -1 && j > -1) {
+var ucs =  new jalview.schemes.UserColourScheme ();
+colour = ucs.getColourFromString (string.substring (i + 1, j));
+if (i > 0 && string.charAt (i - 1) == ',') {
+i--;
+}string = string.substring (0, i) + string.substring (j + 1);
+}var st =  new java.util.StringTokenizer (string, ",", true);
+var token;
+var seenContent = false;
+var pass = 0;
+while (st.hasMoreTokens ()) {
+pass++;
+token = st.nextToken ().trim ();
+if (token.equals (",")) {
+if (!seenContent && parsedValue && !dcset) {
+dcset = true;
+displayChar = " ";
+}seenContent = false;
+continue;
+} else {
+seenContent = true;
+}if (!parsedValue) {
+try {
+displayChar = token;
+value =  new Float (token).floatValue ();
+parsedValue = true;
+continue;
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+} else {
+if (token.length == 1) {
+displayChar = token;
+}}if (hasSymbols && (token.equals ("H") || token.equals ("E") || token.equals ("S") || token.equals (" "))) {
+ss = token.charAt (0);
+if (displayChar.equals (token.substring (0, 1))) {
+displayChar = "";
+}} else if (desc == null || (parsedValue && pass > 2)) {
+desc = token;
+}}
+if (displayChar != null && desc != null && desc.length == 1) {
+if (displayChar.length > 1) {
+var tmp = displayChar;
+displayChar = desc;
+desc = tmp;
+} else {
+if (displayChar.equals (desc)) {
+desc = null;
+}}}var anot =  new jalview.datamodel.Annotation (displayChar, desc, ss, value);
+anot.colour = colour;
+return anot;
+}, "~S,~N");
+Clazz_defineMethod (c$, "colourAnnotations", 
+function (al, label, colour) {
+var ucs =  new jalview.schemes.UserColourScheme (colour);
+var annotations;
+for (var i = 0; i < al.getAlignmentAnnotation ().length; i++) {
+if (al.getAlignmentAnnotation ()[i].label.equalsIgnoreCase (label)) {
+annotations = al.getAlignmentAnnotation ()[i].annotations;
+for (var j = 0; j < annotations.length; j++) {
+if (annotations[j] != null) {
+annotations[j].colour = ucs.findColour ('A');
+}}
+}}
+}, "jalview.datamodel.AlignmentI,~S,~S");
+Clazz_defineMethod (c$, "combineAnnotations", 
+function (al, combineCount, st, seqRef, groupRef) {
+var group = st.nextToken ();
+var graphGroup = 0;
+if (al.getAlignmentAnnotation () != null) {
+for (var i = 0; i < al.getAlignmentAnnotation ().length; i++) {
+var aa = al.getAlignmentAnnotation ()[i];
+if (aa.graphGroup > graphGroup) {
+graphGroup = aa.graphGroup + 1;
+}if (aa.sequenceRef === seqRef && aa.groupRef === groupRef && aa.label.equalsIgnoreCase (group)) {
+if (aa.graphGroup > -1) {
+graphGroup = aa.graphGroup;
+} else {
+if (graphGroup <= combineCount) {
+graphGroup = combineCount + 1;
+}aa.graphGroup = graphGroup;
+}break;
+}}
+while (st.hasMoreTokens ()) {
+group = st.nextToken ();
+for (var i = 0; i < al.getAlignmentAnnotation ().length; i++) {
+var aa = al.getAlignmentAnnotation ()[i];
+if (aa.sequenceRef === seqRef && aa.groupRef === groupRef && aa.label.equalsIgnoreCase (group)) {
+aa.graphGroup = graphGroup;
+break;
+}}
+}
+} else {
+System.err.println ("Couldn't combine annotations. None are added to alignment yet!");
+}}, "jalview.datamodel.AlignmentI,~N,java.util.StringTokenizer,jalview.datamodel.SequenceI,jalview.datamodel.SequenceGroup");
+Clazz_defineMethod (c$, "addLine", 
+function (al, st, seqRef, groupRef) {
+var group = st.nextToken ();
+var annotation = null;
+var alannot = al.getAlignmentAnnotation ();
+var value =  new Float (st.nextToken ()).floatValue ();
+var label = st.hasMoreTokens () ? st.nextToken () : null;
+var colour = null;
+if (st.hasMoreTokens ()) {
+var ucs =  new jalview.schemes.UserColourScheme (st.nextToken ());
+colour = ucs.findColour ('A');
+}if (alannot != null) {
+for (var i = 0; i < alannot.length; i++) {
+if (alannot[i].label.equalsIgnoreCase (group) && (seqRef == null || alannot[i].sequenceRef === seqRef) && (groupRef == null || alannot[i].groupRef === groupRef)) {
+alannot[i].setThreshold ( new jalview.datamodel.GraphLine (value, label, colour));
+}}
+}if (annotation == null) {
+return;
+}}, "jalview.datamodel.AlignmentI,java.util.StringTokenizer,jalview.datamodel.SequenceI,jalview.datamodel.SequenceGroup");
+Clazz_defineMethod (c$, "addGroup", 
+function (al, st) {
+var sg =  new jalview.datamodel.SequenceGroup ();
+sg.setName (st.nextToken ());
+var rng = "";
+try {
+rng = st.nextToken ();
+if (rng.length > 0 && !rng.startsWith ("*")) {
+sg.setStartRes (Integer.parseInt (rng) - 1);
+} else {
+sg.setStartRes (0);
+}rng = st.nextToken ();
+if (rng.length > 0 && !rng.startsWith ("*")) {
+sg.setEndRes (Integer.parseInt (rng) - 1);
+} else {
+sg.setEndRes (al.getWidth () - 1);
+}} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+System.err.println ("Couldn't parse Group Start or End Field as '*' or a valid column or sequence index: '" + rng + "' - assuming alignment width for group.");
+sg.setStartRes (0);
+sg.setEndRes (al.getWidth () - 1);
+} else {
+throw e;
+}
+}
+var index = st.nextToken ();
+if (index.equals ("-1")) {
+while (st.hasMoreElements ()) {
+sg.addSequence (al.findName (st.nextToken ()), false);
+}
+} else {
+var st2 =  new java.util.StringTokenizer (index, ",");
+while (st2.hasMoreTokens ()) {
+var tmp = st2.nextToken ();
+if (tmp.equals ("*")) {
+for (var i = 0; i < al.getHeight (); i++) {
+sg.addSequence (al.getSequenceAt (i), false);
+}
+} else if (tmp.indexOf ("-") >= 0) {
+var st3 =  new java.util.StringTokenizer (tmp, "-");
+var start = (Integer.parseInt (st3.nextToken ()));
+var end = (Integer.parseInt (st3.nextToken ()));
+if (end > start) {
+for (var i = start; i <= end; i++) {
+sg.addSequence (al.getSequenceAt (i - 1), false);
+}
+}} else {
+sg.addSequence (al.getSequenceAt (Integer.parseInt (tmp) - 1), false);
+}}
+}if (this.refSeq != null) {
+sg.setStartRes (this.refSeq.findIndex (sg.getStartRes () + 1) - 1);
+sg.setEndRes (this.refSeq.findIndex (sg.getEndRes () + 1) - 1);
+sg.setSeqrep (this.refSeq);
+}if (sg.getSize () > 0) {
+al.addGroup (sg);
+}}, "jalview.datamodel.AlignmentI,java.util.StringTokenizer");
+Clazz_defineMethod (c$, "addRowProperties", 
+function (al, st) {
+var label = st.nextToken ();
+var keyValue;
+var key;
+var value;
+var scaletofit = false;
+var centerlab = false;
+var showalllabs = false;
+while (st.hasMoreTokens ()) {
+keyValue = st.nextToken ();
+key = keyValue.substring (0, keyValue.indexOf ("="));
+value = keyValue.substring (keyValue.indexOf ("=") + 1);
+if (key.equalsIgnoreCase ("scaletofit")) {
+scaletofit = Boolean.$valueOf (value).booleanValue ();
+}if (key.equalsIgnoreCase ("showalllabs")) {
+showalllabs = Boolean.$valueOf (value).booleanValue ();
+}if (key.equalsIgnoreCase ("centrelabs")) {
+centerlab = Boolean.$valueOf (value).booleanValue ();
+}var alr = al.getAlignmentAnnotation ();
+if (alr != null) {
+for (var i = 0; i < alr.length; i++) {
+if (alr[i].label.equalsIgnoreCase (label)) {
+alr[i].centreColLabels = centerlab;
+alr[i].scaleColLabel = scaletofit;
+alr[i].showAllColLabels = showalllabs;
+}}
+}}
+}, "jalview.datamodel.AlignmentI,java.util.StringTokenizer");
+Clazz_defineMethod (c$, "addProperties", 
+function (al, st) {
+if (al.getGroups () == null) {
+return;
+}var name = st.nextToken ();
+var sg = null;
+for (var _sg, $_sg = al.getGroups ().iterator (); $_sg.hasNext () && ((_sg = $_sg.next ()) || true);) {
+if ((sg = _sg).getName ().equals (name)) {
+break;
+} else {
+sg = null;
+}}
+if (sg != null) {
+var keyValue;
+var key;
+var value;
+var def = sg.cs;
+sg.cs = null;
+while (st.hasMoreTokens ()) {
+keyValue = st.nextToken ();
+key = keyValue.substring (0, keyValue.indexOf ("="));
+value = keyValue.substring (keyValue.indexOf ("=") + 1);
+if (key.equalsIgnoreCase ("description")) {
+sg.setDescription (value);
+} else if (key.equalsIgnoreCase ("colour")) {
+sg.cs = jalview.schemes.ColourSchemeProperty.getColour (al, value);
+} else if (key.equalsIgnoreCase ("pidThreshold")) {
+sg.cs.setThreshold (Integer.parseInt (value), true);
+} else if (key.equalsIgnoreCase ("consThreshold")) {
+sg.cs.setConservationInc (Integer.parseInt (value));
+var c =  new jalview.analysis.Conservation ("Group", jalview.schemes.ResidueProperties.propHash, 3, sg.getSequences (null), sg.getStartRes (), sg.getEndRes () + 1);
+c.calculate ();
+c.verdict (false, 25);
+sg.cs.setConservation (c);
+} else if (key.equalsIgnoreCase ("outlineColour")) {
+sg.setOutlineColour ( new jalview.schemes.UserColourScheme (value).findColour ('A'));
+} else if (key.equalsIgnoreCase ("displayBoxes")) {
+sg.setDisplayBoxes (Boolean.$valueOf (value).booleanValue ());
+} else if (key.equalsIgnoreCase ("showUnconserved")) {
+sg.setShowNonconserved (Boolean.$valueOf (value).booleanValue ());
+} else if (key.equalsIgnoreCase ("displayText")) {
+sg.setDisplayText (Boolean.$valueOf (value).booleanValue ());
+} else if (key.equalsIgnoreCase ("colourText")) {
+sg.setColourText (Boolean.$valueOf (value).booleanValue ());
+} else if (key.equalsIgnoreCase ("textCol1")) {
+sg.textColour =  new jalview.schemes.UserColourScheme (value).findColour ('A');
+} else if (key.equalsIgnoreCase ("textCol2")) {
+sg.textColour2 =  new jalview.schemes.UserColourScheme (value).findColour ('A');
+} else if (key.equalsIgnoreCase ("textColThreshold")) {
+sg.thresholdTextColour = Integer.parseInt (value);
+} else if (key.equalsIgnoreCase ("idColour")) {
+sg.setIdColour ((def =  new jalview.schemes.UserColourScheme (value)).findColour ('A'));
+} else if (key.equalsIgnoreCase ("hide")) {
+sg.setHidereps (true);
+} else if (key.equalsIgnoreCase ("hidecols")) {
+sg.setHideCols (true);
+}sg.recalcConservation ();
+}
+if (sg.cs == null) {
+sg.cs = def;
+}}}, "jalview.datamodel.AlignmentI,java.util.StringTokenizer");
+Clazz_defineMethod (c$, "setBelowAlignment", 
+function (al, st) {
+var token;
+var aa;
+var ala = al.getAlignmentAnnotation ();
+if (ala == null) {
+System.err.print ("Warning - no annotation to set below for sequence associated annotation:");
+}while (st.hasMoreTokens ()) {
+token = st.nextToken ();
+if (ala == null) {
+System.err.print (" " + token);
+} else {
+for (var i = 0; i < al.getAlignmentAnnotation ().length; i++) {
+aa = al.getAlignmentAnnotation ()[i];
+if (aa.sequenceRef === this.refSeq && aa.label.equals (token)) {
+aa.belowAlignment = true;
+}}
+}}
+if (ala == null) {
+System.err.print ("\n");
+}}, "jalview.datamodel.AlignmentI,java.util.StringTokenizer");
+Clazz_defineMethod (c$, "addAlignmentDetails", 
+function (al, st) {
+var keyValue;
+var key;
+var value;
+while (st.hasMoreTokens ()) {
+keyValue = st.nextToken ();
+key = keyValue.substring (0, keyValue.indexOf ("="));
+value = keyValue.substring (keyValue.indexOf ("=") + 1);
+al.setProperty (key, value);
+}
+}, "jalview.datamodel.AlignmentI,java.util.StringTokenizer");
+Clazz_defineMethod (c$, "printCSVAnnotations", 
+function (annotations) {
+var sp =  new StringBuffer ();
+for (var i = 0; i < annotations.length; i++) {
+var atos = annotations[i].toString ();
+var p = 0;
+do {
+var cp = atos.indexOf ("\n", p);
+sp.append (annotations[i].label);
+sp.append (",");
+if (cp > p) {
+sp.append (atos.substring (p, cp + 1));
+} else {
+sp.append (atos.substring (p));
+sp.append (this.newline);
+}p = cp + 1;
+} while (p > 0);
+}
+return sp.toString ();
+}, "~A");
+Clazz_defineMethod (c$, "printAnnotationsForView", 
+function (viewport) {
+return this.printAnnotations (viewport.isShowAnnotation () ? viewport.getAlignment ().getAlignmentAnnotation () : null, viewport.getAlignment ().getGroups (), viewport.getAlignment ().getProperties (), viewport.getColumnSelection (), viewport.getAlignment (), null);
+}, "jalview.api.AlignViewportI");
+Clazz_defineMethod (c$, "printAnnotationsForAlignment", 
+function (al) {
+return this.printAnnotations (al.getAlignmentAnnotation (), al.getGroups (), al.getProperties (), null, al, null);
+}, "jalview.datamodel.AlignmentI");
+c$.$AnnotationFile$ViewDef$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.viewname = null;
+this.hidseqs = null;
+this.hiddencols = null;
+this.visibleGroups = null;
+this.hiddenRepSeqs = null;
+Clazz_instantialize (this, arguments);
+}, jalview.io.AnnotationFile, "ViewDef");
+Clazz_makeConstructor (c$, 
+function (a, b, c, d) {
+this.viewname = a;
+this.hidseqs = b;
+this.hiddencols = c;
+this.hiddenRepSeqs = d;
+}, "~S,jalview.datamodel.HiddenSequences,jalview.datamodel.ColumnSelection,java.util.Hashtable");
+c$ = Clazz_p0p ();
+};
+Clazz_defineStatics (c$,
+"GRAPHLINE", "GRAPHLINE",
+"COMBINE", "COMBINE");
+});
+Clazz_declarePackage ("jalview.io");
+Clazz_load (["jalview.io.FileParse", "jalview.jsdev.RegExp"], "jalview.io.NewickFile", ["jalview.datamodel.SequenceNode", "jalview.util.MessageManager", "java.io.BufferedReader", "$.IOException", "java.lang.Float", "$.StringBuffer", "java.util.StringTokenizer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.root = null;
+this.$HasBootstrap = false;
+this.$HasDistances = false;
+this.RootHasDistance = false;
+this.ReplaceUnderscores = false;
+this.printRootInfo = true;
+this.NodeSafeName = null;
+this.QuoteChar = '\'';
+Clazz_instantialize (this, arguments);
+}, jalview.io, "NewickFile", jalview.io.FileParse);
+Clazz_prepareFields (c$, function () {
+this.NodeSafeName =  Clazz_newArray (-1, [jalview.jsdev.RegExp.perlCode ("m/[\\[,:'()]/"), jalview.jsdev.RegExp.perlCode ("s/'/''/"), jalview.jsdev.RegExp.perlCode ("s/\\/w/_/")]);
+});
+Clazz_makeConstructor (c$, 
+function (inStr) {
+Clazz_superConstructor (this, jalview.io.NewickFile, [inStr, "Paste"]);
+}, "~S");
+Clazz_makeConstructor (c$, 
+function (newtree) {
+Clazz_superConstructor (this, jalview.io.NewickFile, []);
+this.root = newtree;
+}, "jalview.datamodel.SequenceNode");
+Clazz_makeConstructor (c$, 
+function (newtree, bootstrap) {
+Clazz_superConstructor (this, jalview.io.NewickFile, []);
+this.$HasBootstrap = bootstrap;
+this.root = newtree;
+}, "jalview.datamodel.SequenceNode,~B");
+Clazz_makeConstructor (c$, 
+function (newtree, bootstrap, distances) {
+Clazz_superConstructor (this, jalview.io.NewickFile, []);
+this.root = newtree;
+this.$HasBootstrap = bootstrap;
+this.$HasDistances = distances;
+}, "jalview.datamodel.SequenceNode,~B,~B");
+Clazz_makeConstructor (c$, 
+function (newtree, bootstrap, distances, rootdistance) {
+Clazz_superConstructor (this, jalview.io.NewickFile, []);
+this.root = newtree;
+this.$HasBootstrap = bootstrap;
+this.$HasDistances = distances;
+this.RootHasDistance = rootdistance;
+}, "jalview.datamodel.SequenceNode,~B,~B,~B");
+Clazz_defineMethod (c$, "ErrorStringrange", 
+ function (Error, Er, r, p, s) {
+return ((Error == null) ? "" : Error) + Er + " at position " + p + " ( " + s.substring (((p - r) < 0) ? 0 : (p - r), ((p + r) > s.length) ? s.length : (p + r)) + " )\n";
+}, "~S,~S,~N,~N,~S");
+Clazz_defineMethod (c$, "HasBootstrap", 
+function () {
+return this.$HasBootstrap;
+});
+Clazz_defineMethod (c$, "HasDistances", 
+function () {
+return this.$HasDistances;
+});
+Clazz_defineMethod (c$, "HasRootDistance", 
+function () {
+return this.RootHasDistance;
+});
+Clazz_defineMethod (c$, "parse", 
+function () {
+var nf;
+{
+var file =  new StringBuffer ();
+while ((nf = this.nextLine ()) != null) {
+file.append (nf);
+}
+nf = file.toString ();
+}this.root =  new jalview.datamodel.SequenceNode ();
+var realroot = null;
+var c = this.root;
+var d = -1;
+var cp = 0;
+var Error = null;
+var nodename = null;
+var commentString2 = null;
+var DefDistance = 0.001;
+var DefBootstrap = -1;
+var distance = DefDistance;
+var bootstrap = DefBootstrap;
+var ascending = false;
+var majorsyms = jalview.jsdev.RegExp.newRegex (["[(\\['),;]"]);
+var nextcp = 0;
+var ncp = cp;
+var parsednodename = false;
+while (majorsyms.searchFrom (nf, cp) && (Error == null)) {
+var fcp = majorsyms.matchedFrom ();
+var schar;
+switch (schar = nf.charAt (fcp)) {
+case '(':
+if (ascending) {
+Error = this.ErrorStringrange (Error, "Unexpected '('", 7, fcp, nf);
+continue;
+};d++;
+if (c.right () == null) {
+c.setRight ( new jalview.datamodel.SequenceNode (null, c, null, DefDistance, DefBootstrap, false));
+c = c.right ();
+} else {
+if (c.left () != null) {
+var tmpn =  new jalview.datamodel.SequenceNode (null, c, null, 0, 0, true);
+tmpn.SetChildren (c.left (), c.right ());
+c.setRight (tmpn);
+}c.setLeft ( new jalview.datamodel.SequenceNode (null, c, null, DefDistance, DefBootstrap, false));
+c = c.left ();
+}if (realroot == null) {
+realroot = c;
+}nodename = null;
+distance = DefDistance;
+bootstrap = DefBootstrap;
+cp = fcp + 1;
+break;
+case '\'':
+var qnodename = jalview.jsdev.RegExp.newRegex (["'([^']|'')+'"]);
+if (qnodename.searchFrom (nf, fcp)) {
+var nl = qnodename.stringMatched ().length;
+nodename =  String.instantialize (qnodename.stringMatched ().substring (1, nl - 1));
+var xpandquotes = jalview.jsdev.RegExp.perlCode ("s/''/'/");
+var widernodename = xpandquotes.replaceAll (nodename);
+nodename = widernodename;
+nextcp = fcp + nl + 1;
+parsednodename = true;
+} else {
+Error = this.ErrorStringrange (Error, "Unterminated quotes for nodename", 7, fcp, nf);
+}break;
+default:
+if (schar == ';') {
+if (d != -1) {
+Error = this.ErrorStringrange (Error, "Wayward semicolon (depth=" + d + ")", 7, fcp, nf);
+}}if (schar == '[') {
+var comment = jalview.jsdev.RegExp.newRegex (["]"]);
+if (comment.searchFrom (nf, fcp)) {
+nextcp = comment.matchedFrom () + 1;
+this.warningMessage = "Tree file contained comments which may confuse input algorithm.";
+break;
+} else {
+Error = this.ErrorStringrange (Error, "Unterminated comment", 3, fcp, nf);
+};}var fstring = nf.substring (ncp, fcp);
+while (fstring.indexOf (']') > -1) {
+var cstart = fstring.indexOf ('[');
+var cend = fstring.indexOf (']');
+commentString2 = fstring.substring (cstart + 1, cend);
+fstring = fstring.substring (0, cstart) + fstring.substring (cend + 1);
+}
+var uqnodename = jalview.jsdev.RegExp.newRegex (["\\b([^' :;\\](),]+)"]);
+var nbootstrap = jalview.jsdev.RegExp.newRegex (["\\s*([0-9+]+)\\s*:"]);
+var ndist = jalview.jsdev.RegExp.newRegex ([":([-0-9Ee.+]+)"]);
+if (!parsednodename && uqnodename.search (fstring) && ((uqnodename.matchedFromI (1) == 0) || (fstring.charAt (uqnodename.matchedFromI (1) - 1) != ':'))) {
+if (nodename == null) {
+if (this.ReplaceUnderscores) {
+nodename = uqnodename.stringMatchedI (1).$replace ('_', ' ');
+} else {
+nodename = uqnodename.stringMatchedI (1);
+}} else {
+Error = this.ErrorStringrange (Error, "File has broken algorithm - overwritten nodename", 10, fcp, nf);
+}}if (nbootstrap.search (fstring)) {
+if (nbootstrap.stringMatchedI (1).equals (uqnodename.stringMatchedI (1))) {
+nodename = null;
+}if (nodename == null || nodename.length == 0 || nbootstrap.matchedFromI (1) > (uqnodename.matchedFromI (1) + uqnodename.stringMatched ().length)) {
+try {
+bootstrap = ( new Integer (nbootstrap.stringMatchedI (1))).intValue ();
+this.$HasBootstrap = true;
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+Error = this.ErrorStringrange (Error, "Can't parse bootstrap value", 4, ncp + nbootstrap.matchedFrom (), nf);
+} else {
+throw e;
+}
+}
+}}var nodehasdistance = false;
+if (ndist.search (fstring)) {
+try {
+distance = ( new Float (ndist.stringMatchedI (1))).floatValue ();
+this.$HasDistances = true;
+nodehasdistance = true;
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+Error = this.ErrorStringrange (Error, "Can't parse node distance value", 7, ncp + ndist.matchedFrom (), nf);
+} else {
+throw e;
+}
+}
+}if (ascending) {
+c.setName (nodename);
+c.dist = (this.$HasDistances) ? distance : DefDistance;
+c.setBootstrap ((this.$HasBootstrap) ? bootstrap : DefBootstrap);
+if (c === realroot) {
+this.RootHasDistance = nodehasdistance;
+}this.parseNHXNodeProps (c, commentString2);
+commentString2 = null;
+} else {
+var newnode =  new jalview.datamodel.SequenceNode (null, c, nodename, (this.$HasDistances) ? distance : DefDistance, (this.$HasBootstrap) ? bootstrap : DefBootstrap, false);
+this.parseNHXNodeProps (c, commentString2);
+commentString2 = null;
+if (c.right () == null) {
+c.setRight (newnode);
+} else {
+if (c.left () == null) {
+c.setLeft (newnode);
+} else {
+var newdummy =  new jalview.datamodel.SequenceNode (null, c, null, (this.$HasDistances ? 0 : DefDistance), 0, true);
+newdummy.SetChildren (c.left (), newnode);
+c.setLeft (newdummy);
+}}}if (ascending) {
+c = c.AscendTree ();
+if ((d > -1) && (c == null)) {
+Error = this.ErrorStringrange (Error, "File broke algorithm: Lost place in tree (is there an extra ')' ?)", 7, fcp, nf);
+}}if (nf.charAt (fcp) == ')') {
+d--;
+ascending = true;
+} else {
+if (nf.charAt (fcp) == ',') {
+if (ascending) {
+ascending = false;
+} else {
+if ((c.left () != null) && (!c.left ().isLeaf ())) {
+c = c.left ();
+}}}}nodename = null;
+distance = DefDistance;
+bootstrap = DefBootstrap;
+commentString2 = null;
+parsednodename = false;
+}
+if (nextcp == 0) {
+ncp = cp = fcp + 1;
+} else {
+cp = nextcp;
+nextcp = 0;
+}}
+if (Error != null) {
+throw ( new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.newfile",  Clazz_newArray (-1, [Error.toString ()]))));
+}if (this.root == null) {
+throw ( new java.io.IOException (jalview.util.MessageManager.formatMessage ("exception.newfile",  Clazz_newArray (-1, [jalview.util.MessageManager.getString ("label.no_tree_read_in")]))));
+}this.root = this.root.right ().detach ();
+if (!this.RootHasDistance) {
+this.root.dist = (this.$HasDistances) ? 0 : DefDistance;
+}});
+Clazz_defineMethod (c$, "parseNHXNodeProps", 
+ function (c, commentString) {
+if (commentString != null && commentString.startsWith ("&&NHX")) {
+var st =  new java.util.StringTokenizer (commentString.substring (5), ":");
+while (st.hasMoreTokens ()) {
+var tok = st.nextToken ();
+var colpos = tok.indexOf ("=");
+if (colpos > -1) {
+var code = tok.substring (0, colpos);
+var value = tok.substring (colpos + 1);
+try {
+if (code.toLowerCase ().equals ("b")) {
+var v = -1;
+var iv =  new Float (value);
+v = iv.intValue ();
+c.setBootstrap (v);
+this.$HasBootstrap = true;
+}} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+System.err.println ("Couldn't parse code '" + code + "' = '" + value + "'");
+e.printStackTrace (System.err);
+} else {
+throw e;
+}
+}
+}}
+}}, "jalview.datamodel.SequenceNode,~S");
+Clazz_defineMethod (c$, "getTree", 
+function () {
+return this.root;
+});
+Clazz_defineMethod (c$, "print", 
+function () {
+{
+var tf =  new StringBuffer ();
+this.print (tf, this.root);
+return (tf.append (";").toString ());
+}});
+Clazz_defineMethod (c$, "print", 
+function (withbootstraps) {
+{
+var boots = this.$HasBootstrap;
+this.$HasBootstrap = withbootstraps;
+var rv = this.print ();
+this.$HasBootstrap = boots;
+return rv;
+}}, "~B");
+Clazz_defineMethod (c$, "print", 
+function (withbootstraps, withdists) {
+{
+var dists = this.$HasDistances;
+this.$HasDistances = withdists;
+var rv = this.print (withbootstraps);
+this.$HasDistances = dists;
+return rv;
+}}, "~B,~B");
+Clazz_defineMethod (c$, "print", 
+function (withbootstraps, withdists, printRootInfo) {
+{
+var rootinfo = printRootInfo;
+this.printRootInfo = printRootInfo;
+var rv = this.print (withbootstraps, withdists);
+this.printRootInfo = rootinfo;
+return rv;
+}}, "~B,~B,~B");
+Clazz_defineMethod (c$, "getQuoteChar", 
+function () {
+return this.QuoteChar;
+});
+Clazz_defineMethod (c$, "setQuoteChar", 
+function (c) {
+var old = this.QuoteChar;
+this.QuoteChar = c;
+return old;
+}, "~S");
+Clazz_defineMethod (c$, "nodeName", 
+ function (name) {
+if (this.NodeSafeName[0].search (name)) {
+return this.QuoteChar + this.NodeSafeName[1].replaceAll (name) + this.QuoteChar;
+} else {
+return this.NodeSafeName[2].replaceAll (name);
+}}, "~S");
+Clazz_defineMethod (c$, "printNodeField", 
+ function (c) {
+return ((c.getName () == null) ? "" : this.nodeName (c.getName ())) + ((this.$HasBootstrap) ? ((c.getBootstrap () > -1) ? ((c.getName () != null ? " " : "") + c.getBootstrap ()) : "") : "") + ((this.$HasDistances) ? (":" + c.dist) : "");
+}, "jalview.datamodel.SequenceNode");
+Clazz_defineMethod (c$, "printRootField", 
+ function (root) {
+return (this.printRootInfo) ? (((root.getName () == null) ? "" : this.nodeName (root.getName ())) + ((this.$HasBootstrap) ? ((root.getBootstrap () > -1) ? ((root.getName () != null ? " " : "") + +root.getBootstrap ()) : "") : "") + ((this.RootHasDistance) ? (":" + root.dist) : "")) : "";
+}, "jalview.datamodel.SequenceNode");
+Clazz_defineMethod (c$, "print", 
+function (tf, root) {
+if (root != null) {
+if (root.isLeaf () && this.printRootInfo) {
+tf.append (this.printRootField (root));
+} else {
+if (root.isDummy ()) {
+this._print (tf, root.right ());
+this._print (tf, root.left ());
+} else {
+tf.append ("(");
+this._print (tf, root.right ());
+if (root.left () != null) {
+tf.append (",");
+}this._print (tf, root.left ());
+tf.append (")" + this.printRootField (root));
+}}}}, "StringBuffer,jalview.datamodel.SequenceNode");
+Clazz_defineMethod (c$, "_print", 
+function (tf, c) {
+if (c != null) {
+if (c.isLeaf ()) {
+tf.append (this.printNodeField (c));
+} else {
+if (c.isDummy ()) {
+this._print (tf, c.left ());
+if (c.left () != null) {
+tf.append (",");
+}this._print (tf, c.right ());
+} else {
+tf.append ("(");
+this._print (tf, c.right ());
+if (c.left () != null) {
+tf.append (",");
+}this._print (tf, c.left ());
+tf.append (")" + this.printNodeField (c));
+}}}}, "StringBuffer,jalview.datamodel.SequenceNode");
+c$.main = Clazz_defineMethod (c$, "main", 
+function (args) {
+try {
+if (args == null || args.length != 1) {
+System.err.println ("Takes one argument - file name of a newick tree file.");
+System.exit (0);
+}var fn =  new java.io.File (args[0]);
+var newickfile =  new StringBuffer ();
+var treefile =  new java.io.BufferedReader ( new java.io.FileReader (fn));
+var l;
+while ((l = treefile.readLine ()) != null) {
+newickfile.append (l);
+}
+treefile.close ();
+System.out.println ("Read file :\n");
+var trf =  new jalview.io.NewickFile (args[0], "File");
+trf.parse ();
+System.out.println ("Original file :\n");
+var nonl = jalview.jsdev.RegExp.newRegex (["\n+", ""]);
+System.out.println (nonl.replaceAll (newickfile.toString ()) + "\n");
+System.out.println ("Parsed file.\n");
+System.out.println ("Default output type for original input.\n");
+System.out.println (trf.print ());
+System.out.println ("Without bootstraps.\n");
+System.out.println (trf.print (false));
+System.out.println ("Without distances.\n");
+System.out.println (trf.print (true, false));
+System.out.println ("Without bootstraps but with distanecs.\n");
+System.out.println (trf.print (false, true));
+System.out.println ("Without bootstraps or distanecs.\n");
+System.out.println (trf.print (false, false));
+System.out.println ("With bootstraps and with distances.\n");
+System.out.println (trf.print (true, true));
+} catch (e) {
+if (Clazz_exceptionOf (e, java.io.IOException)) {
+System.err.println ("Exception\n" + e);
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+}, "~A");
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["jalview.datamodel.BinaryNode", "java.awt.Color"], "jalview.datamodel.SequenceNode", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.dist = 0;
+this.count = 0;
+this.height = 0;
+this.ycount = 0;
+this.color = null;
+this.dummy = false;
+this.placeholder = false;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "SequenceNode", jalview.datamodel.BinaryNode);
+Clazz_prepareFields (c$, function () {
+this.color = java.awt.Color.black;
+});
+Clazz_makeConstructor (c$, 
+function (val, parent, dist, name) {
+Clazz_superConstructor (this, jalview.datamodel.SequenceNode, [val, parent, name]);
+this.dist = dist;
+}, "~O,jalview.datamodel.SequenceNode,~N,~S");
+Clazz_makeConstructor (c$, 
+function (val, parent, name, dist, bootstrap, dummy) {
+Clazz_superConstructor (this, jalview.datamodel.SequenceNode, [val, parent, name]);
+this.dist = dist;
+this.bootstrap = bootstrap;
+this.dummy = dummy;
+}, "~O,jalview.datamodel.SequenceNode,~S,~N,~N,~B");
+Clazz_defineMethod (c$, "isDummy", 
+function () {
+return this.dummy;
+});
+Clazz_defineMethod (c$, "isPlaceholder", 
+function () {
+return this.placeholder;
+});
+Clazz_defineMethod (c$, "setDummy", 
+function (newstate) {
+var oldstate = this.dummy;
+this.dummy = newstate;
+return oldstate;
+}, "~B");
+Clazz_defineMethod (c$, "setPlaceholder", 
+function (Placeholder) {
+this.placeholder = Placeholder;
+}, "~B");
+Clazz_defineMethod (c$, "AscendTree", 
+function () {
+var c = this;
+do {
+c = c.parent ();
+} while ((c != null) && c.dummy);
+return c;
+});
+Clazz_defineMethod (c$, "isSequenceLabel", 
+function () {
+if (this.name != null && this.name.length > 0) {
+for (var c = 0, s = this.name.length; c < s; c++) {
+var q = this.name.charAt (c);
+if ('0' <= q && q <= '9') continue;
+return true;
+}
+}return false;
+});
+});
+Clazz_declarePackage ("jalview.datamodel");
+c$ = Clazz_decorateAsClass (function () {
+this.$element = null;
+this.name = null;
+this.$left = null;
+this.$right = null;
+this.$parent = null;
+this.bootstrap = 0;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "BinaryNode");
+Clazz_makeConstructor (c$, 
+function () {
+this.$left = this.$right = this.$parent = null;
+this.bootstrap = 0;
+});
+Clazz_makeConstructor (c$, 
+function (element, parent, name) {
+this.$element = element;
+this.$parent = parent;
+this.name = name;
+this.$left = this.$right = null;
+}, "~O,jalview.datamodel.BinaryNode,~S");
+Clazz_defineMethod (c$, "element", 
+function () {
+return this.$element;
+});
+Clazz_defineMethod (c$, "setElement", 
+function (v) {
+return this.$element = v;
+}, "~O");
+Clazz_defineMethod (c$, "left", 
+function () {
+return this.$left;
+});
+Clazz_defineMethod (c$, "setLeft", 
+function (n) {
+return this.$left = n;
+}, "jalview.datamodel.BinaryNode");
+Clazz_defineMethod (c$, "right", 
+function () {
+return this.$right;
+});
+Clazz_defineMethod (c$, "setRight", 
+function (n) {
+return this.$right = n;
+}, "jalview.datamodel.BinaryNode");
+Clazz_defineMethod (c$, "parent", 
+function () {
+return this.$parent;
+});
+Clazz_defineMethod (c$, "setParent", 
+function (n) {
+return this.$parent = n;
+}, "jalview.datamodel.BinaryNode");
+Clazz_defineMethod (c$, "isLeaf", 
+function () {
+return (this.$left == null) && (this.$right == null);
+});
+Clazz_defineMethod (c$, "SetChildren", 
+function (leftchild, rightchild) {
+if (leftchild != null) {
+this.setLeft (leftchild);
+leftchild.detach ();
+leftchild.setParent (this);
+}if (rightchild != null) {
+this.setRight (rightchild);
+rightchild.detach ();
+rightchild.setParent (this);
+}}, "jalview.datamodel.BinaryNode,jalview.datamodel.BinaryNode");
+Clazz_defineMethod (c$, "detach", 
+function () {
+if (this.$parent != null) {
+if (this.$parent.$left === this) {
+this.$parent.$left = null;
+} else {
+if (this.$parent.$right === this) {
+this.$parent.$right = null;
+}}}this.$parent = null;
+return this;
+});
+Clazz_defineMethod (c$, "ascendLeft", 
+function () {
+var c = this;
+do {
+c = c.parent ();
+} while ((c != null) && (c.left () != null) && !c.left ().isLeaf ());
+return c;
+});
+Clazz_defineMethod (c$, "ascendRight", 
+function () {
+var c = this;
+do {
+c = c.parent ();
+} while ((c != null) && (c.right () != null) && !c.right ().isLeaf ());
+return c;
+});
+Clazz_defineMethod (c$, "setName", 
+function (name) {
+this.name = name;
+}, "~S");
+Clazz_defineMethod (c$, "getName", 
+function () {
+return this.name;
+});
+Clazz_defineMethod (c$, "setBootstrap", 
+function (boot) {
+this.bootstrap = boot;
+}, "~N");
+Clazz_defineMethod (c$, "getBootstrap", 
+function () {
+return this.bootstrap;
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["jalview.appletgui.JVDialog"], "jalview.appletgui.EditNameDialog", ["awt2swing.Label", "$.Panel", "$.TextField", "java.awt.BorderLayout", "$.Font"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.id = null;
+this.description = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "EditNameDialog", jalview.appletgui.JVDialog);
+Clazz_overrideMethod (c$, "getName", 
+function () {
+return this.id.getText ();
+});
+Clazz_defineMethod (c$, "getDescription", 
+function () {
+if (this.description.getText ().length < 1) {
+return null;
+} else {
+return this.description.getText ();
+}});
+Clazz_makeConstructor (c$, 
+function (name, desc, label1, label2, owner, title, width, height, display) {
+Clazz_superConstructor (this, jalview.appletgui.EditNameDialog, [owner, title, true, width, height]);
+var mono =  new java.awt.Font ("Monospaced", 0, 12);
+var panel =  new awt2swing.Panel ( new java.awt.BorderLayout ());
+var panel2 =  new awt2swing.Panel ( new java.awt.BorderLayout ());
+this.id =  new awt2swing.TextField (name, 40);
+this.id.setFont (mono);
+var label =  new awt2swing.Label (label1);
+label.setFont (mono);
+panel2.add (label, "West");
+panel2.add (this.id, "Center");
+panel.add (panel2, "North");
+if (label2 != null) {
+panel2 =  new awt2swing.Panel ( new java.awt.BorderLayout ());
+this.description =  new awt2swing.TextField (desc, 40);
+this.description.setFont (mono);
+label =  new awt2swing.Label (label2);
+label.setFont (mono);
+panel2.add (label, "West");
+panel2.add (this.description, "Center");
+panel.add (panel2, "Center");
+}this.setMainPanel (panel);
+this.setVisible (display);
+}, "~S,~S,~S,~S,awt2swing.Frame,~S,~N,~N,~B");
+});
+Clazz_declarePackage ("awt2swing");
+Clazz_load (["javax.swing.JTextField"], "awt2swing.TextField", ["java.awt.event.TextEvent", "javax.swing.event.DocumentListener"], function () {
+c$ = Clazz_declareType (awt2swing, "TextField", javax.swing.JTextField);
+Clazz_defineMethod (c$, "addTextListener", 
+function (textListener) {
+this.getDocument ().addDocumentListener (((Clazz_isClassDefined ("awt2swing.TextField$1") ? 0 : awt2swing.TextField.$TextField$1$ ()), Clazz_innerTypeInstance (awt2swing.TextField$1, this, Clazz_cloneFinals ("textListener", textListener))));
+}, "java.awt.event.TextListener");
+c$.$TextField$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (awt2swing, "TextField$1", null, javax.swing.event.DocumentListener);
+Clazz_overrideMethod (c$, "insertUpdate", 
+function (e) {
+}, "javax.swing.event.DocumentEvent");
+Clazz_overrideMethod (c$, "removeUpdate", 
+function (e) {
+}, "javax.swing.event.DocumentEvent");
+Clazz_overrideMethod (c$, "changedUpdate", 
+function (e) {
+this.f$.textListener.textValueChanged ( new java.awt.event.TextEvent (this, 0));
+}, "javax.swing.event.DocumentEvent");
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("java.awt.event");
+Clazz_load (["java.awt.AWTEvent"], "java.awt.event.TextEvent", null, function () {
+c$ = Clazz_declareType (java.awt.event, "TextEvent", java.awt.AWTEvent);
+Clazz_overrideMethod (c$, "paramString", 
+function () {
+var typeStr;
+switch (this.id) {
+case 900:
+typeStr = "TEXT_VALUE_CHANGED";
+break;
+default:
+typeStr = "unknown type";
+}
+return typeStr;
+});
+Clazz_defineStatics (c$,
+"TEXT_FIRST", 900,
+"TEXT_LAST", 900,
+"TEXT_VALUE_CHANGED", 900);
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (null, "jalview.appletgui.PaintRefresher", ["jalview.appletgui.AlignmentPanel", "java.util.Hashtable", "$.Vector"], function () {
+c$ = Clazz_declareType (jalview.appletgui, "PaintRefresher");
+c$.Register = Clazz_defineMethod (c$, "Register", 
+function (comp, seqSetId) {
+if (jalview.appletgui.PaintRefresher.components == null) {
+jalview.appletgui.PaintRefresher.components =  new java.util.Hashtable ();
+}if (jalview.appletgui.PaintRefresher.components.containsKey (seqSetId)) {
+var comps = jalview.appletgui.PaintRefresher.components.get (seqSetId);
+if (!comps.contains (comp)) {
+comps.addElement (comp);
+}} else {
+var vcoms =  new java.util.Vector ();
+vcoms.addElement (comp);
+jalview.appletgui.PaintRefresher.components.put (seqSetId, vcoms);
+}}, "java.awt.Component,~S");
+c$.RemoveComponent = Clazz_defineMethod (c$, "RemoveComponent", 
+function (comp) {
+if (jalview.appletgui.PaintRefresher.components == null) {
+return;
+}var en = jalview.appletgui.PaintRefresher.components.keys ();
+while (en.hasMoreElements ()) {
+var id = en.nextElement ().toString ();
+var comps = jalview.appletgui.PaintRefresher.components.get (id);
+comps.removeElement (comp);
+if (comps.size () == 0) {
+jalview.appletgui.PaintRefresher.components.remove (id);
+}}
+}, "java.awt.Component");
+c$.Refresh = Clazz_defineMethod (c$, "Refresh", 
+function (source, id) {
+jalview.appletgui.PaintRefresher.Refresh (source, id, false, false);
+}, "java.awt.Component,~S");
+c$.Refresh = Clazz_defineMethod (c$, "Refresh", 
+function (source, id, alignmentChanged, validateSequences) {
+if (jalview.appletgui.PaintRefresher.components == null) {
+return;
+}var comp;
+var comps = jalview.appletgui.PaintRefresher.components.get (id);
+if (comps == null) {
+return;
+}var e = comps.elements ();
+while (e.hasMoreElements ()) {
+comp = e.nextElement ();
+if (comp === source) {
+continue;
+}if (!comp.isValid ()) {
+comps.removeElement (comp);
+} else if (validateSequences && Clazz_instanceOf (comp, jalview.appletgui.AlignmentPanel) && Clazz_instanceOf (source, jalview.appletgui.AlignmentPanel)) {
+jalview.appletgui.PaintRefresher.validateSequences ((source).av.getAlignment (), (comp).av.getAlignment ());
+}if (Clazz_instanceOf (comp, jalview.appletgui.AlignmentPanel) && alignmentChanged) {
+(comp).alignmentChanged ();
+}comp.repaint ();
+}
+}, "java.awt.Component,~S,~B,~B");
+c$.validateSequences = Clazz_defineMethod (c$, "validateSequences", 
+function (source, comp) {
+var a1;
+if (source.getHiddenSequences ().getSize () > 0) {
+a1 = source.getHiddenSequences ().getFullAlignment ().getSequencesArray ();
+} else {
+a1 = source.getSequencesArray ();
+}var a2;
+if (comp.getHiddenSequences ().getSize () > 0) {
+a2 = comp.getHiddenSequences ().getFullAlignment ().getSequencesArray ();
+} else {
+a2 = comp.getSequencesArray ();
+}var i;
+var iSize = a1.length;
+var j;
+var jSize = a2.length;
+if (iSize == jSize) {
+return;
+}var exists = false;
+for (i = 0; i < iSize; i++) {
+exists = false;
+for (j = 0; j < jSize; j++) {
+if (a2[j] === a1[i]) {
+exists = true;
+break;
+}}
+if (!exists) {
+if (i < comp.getHeight ()) {
+var alsq;
+{
+alsq.add (i, a1[i]);
+}} else {
+comp.addSequence (a1[i]);
+}if (comp.getHiddenSequences ().getSize () > 0) {
+a2 = comp.getHiddenSequences ().getFullAlignment ().getSequencesArray ();
+} else {
+a2 = comp.getSequencesArray ();
+}jSize = a2.length;
+}}
+iSize = a1.length;
+jSize = a2.length;
+for (j = 0; j < jSize; j++) {
+exists = false;
+for (i = 0; i < iSize; i++) {
+if (a2[j] === a1[i]) {
+exists = true;
+break;
+}}
+if (!exists) {
+comp.deleteSequence (a2[j]);
+}}
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");
+c$.getAssociatedPanels = Clazz_defineMethod (c$, "getAssociatedPanels", 
+function (id) {
+var comps = jalview.appletgui.PaintRefresher.components.get (id);
+var tmp =  new java.util.Vector ();
+var i;
+var iSize = comps.size ();
+for (i = 0; i < iSize; i++) {
+if (Clazz_instanceOf (comps.elementAt (i), jalview.appletgui.AlignmentPanel)) {
+tmp.addElement (comps.elementAt (i));
+}}
+var result =  new Array (tmp.size ());
+for (var ix = 0; ix < result.length; ix++) {
+result[ix] = tmp.elementAt (ix);
+}
+return result;
+}, "~S");
+Clazz_defineStatics (c$,
+"components", null);
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (null, "jalview.appletgui.Tooltip", ["awt2swing.Frame", "java.applet.Applet", "java.awt.Toolkit"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.tip = null;
+this.lastTip = "";
+this.setPosition = false;
+this.owner = null;
+this.mainContainer = null;
+this.mainLayout = null;
+this.shown = false;
+this.VERTICAL_OFFSET = 20;
+this.HORIZONTAL_ENLARGE = 10;
+this.fontHeight = 0;
+this.linkImage = null;
+this.fm = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "Tooltip");
+Clazz_defineMethod (c$, "setVisible", 
+function (b) {
+}, "~B");
+Clazz_makeConstructor (c$, 
+function (tip, owner) {
+this.owner = owner;
+this.setTip (tip);
+var url = this.getClass ().getResource ("/images/link.gif");
+if (url != null) {
+this.linkImage = java.awt.Toolkit.getDefaultToolkit ().getImage (url);
+}}, "~S,java.awt.Component");
+Clazz_defineMethod (c$, "setTip", 
+function (tip) {
+System.err.println ("Tooltip: " + tip);
+}, "~S");
+Clazz_defineMethod (c$, "setTipLocation", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "removeToolTip", 
+ function () {
+});
+Clazz_defineMethod (c$, "mouseEntered", 
+function (me) {
+this.setTipLocation (me);
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "mouseExited", 
+function (me) {
+this.removeToolTip ();
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "mousePressed", 
+function (me) {
+this.removeToolTip ();
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "mouseReleased", 
+function (me) {
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "mouseClicked", 
+function (me) {
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "mouseMoved", 
+function (me) {
+if (!this.shown) {
+this.setTipLocation (me);
+} else if (this.setPosition) {
+this.setTipLocation (me);
+}}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "mouseDragged", 
+function (me) {
+}, "java.awt.event.MouseEvent");
+});
+Clazz_declarePackage ("jalview.util");
+Clazz_load (["java.lang.StringBuffer", "java.util.ArrayList", "java.util.regex.Pattern"], "jalview.util.ParseHtmlBodyAndLinks", ["java.util.StringTokenizer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.orig = null;
+this.htmlContent = true;
+this.links = null;
+this.sb = null;
+Clazz_instantialize (this, arguments);
+}, jalview.util, "ParseHtmlBodyAndLinks");
+Clazz_prepareFields (c$, function () {
+this.links =  new java.util.ArrayList ();
+this.sb =  new StringBuffer ();
+});
+Clazz_defineMethod (c$, "getOrig", 
+function () {
+return this.orig;
+});
+Clazz_defineMethod (c$, "isHtmlContent", 
+function () {
+return this.htmlContent;
+});
+Clazz_defineMethod (c$, "getContent", 
+function () {
+return this.sb.toString ();
+});
+Clazz_defineMethod (c$, "getLinks", 
+function () {
+return this.links;
+});
+Clazz_makeConstructor (c$, 
+function (description, removeHTML, newline) {
+if (description == null || description.length == 0) {
+this.htmlContent = false;
+return;
+}if (description.toUpperCase ().indexOf ("<HTML>") == -1) {
+this.htmlContent = false;
+}this.orig = description;
+var st =  new java.util.StringTokenizer (description, "<");
+var token;
+var link;
+var startTag;
+var tag = null;
+while (st.hasMoreElements ()) {
+token = st.nextToken ("&>");
+if (token.equalsIgnoreCase ("html") || token.startsWith ("/")) {
+continue;
+}tag = null;
+startTag = token.indexOf ("<");
+if (startTag > -1) {
+tag = token.substring (startTag + 1);
+token = token.substring (0, startTag);
+}if (tag != null && tag.toUpperCase ().startsWith ("A HREF=")) {
+if (token.length > 0) {
+this.sb.append (token);
+}link = tag.substring (tag.indexOf ("\"") + 1, tag.length - 1);
+var label = st.nextToken ("<>");
+this.links.add (label + "|" + link);
+this.sb.append (label + "%LINK%");
+} else if (tag != null && tag.equalsIgnoreCase ("br")) {
+this.sb.append (newline);
+} else if (token.startsWith ("lt;")) {
+this.sb.append ("<" + token.substring (3));
+} else if (token.startsWith ("gt;")) {
+this.sb.append (">" + token.substring (3));
+} else if (token.startsWith ("amp;")) {
+this.sb.append ("&" + token.substring (4));
+} else {
+this.sb.append (token);
+}}
+if (removeHTML && !this.htmlContent) {
+this.sb =  new StringBuffer (jalview.util.ParseHtmlBodyAndLinks.LEFT_ANGLE_BRACKET_PATTERN.matcher (description).replaceAll ("&lt;"));
+}}, "~S,~B,~S");
+Clazz_defineMethod (c$, "getNonHtmlContent", 
+function () {
+return this.isHtmlContent () ? this.sb.toString () : this.orig;
+});
+c$.LEFT_ANGLE_BRACKET_PATTERN = c$.prototype.LEFT_ANGLE_BRACKET_PATTERN = java.util.regex.Pattern.compile ("<");
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "jalview.renderer.AwtRenderPanelI", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.MouseListener", "$.MouseMotionListener", "java.awt.Color"], "jalview.appletgui.AnnotationPanel", ["awt2swing.MenuItem", "$.PopupMenu", "$.Util", "jalview.appletgui.EditNameDialog", "$.UserDefinedColours", "jalview.datamodel.Annotation", "jalview.renderer.AnnotationRenderer", "jalview.util.MessageManager", "$.Platform", "java.awt.Dimension", "java.lang.StringBuffer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.av = null;
+this.ap = null;
+this.activeRow = -1;
+this.HELIX = "Helix";
+this.SHEET = "Sheet";
+this.STEM = "RNA Helix";
+this.LABEL = "Label";
+this.REMOVE = "Remove Annotation";
+this.COLOUR = "Colour";
+this.HELIX_COLOUR = null;
+this.SHEET_COLOUR = null;
+this.image = null;
+this.gg = null;
+this.fm = null;
+this.imgWidth = 0;
+this.$fastPaint = false;
+this.graphStretch = -1;
+this.graphStretchY = -1;
+this.mouseDragging = false;
+this.MAC = false;
+this.renderer = null;
+this.needValidating = false;
+this.scrollOffset = 0;
+this.$bounds = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "AnnotationPanel", awt2swing.Panel, [jalview.renderer.AwtRenderPanelI, java.awt.event.AdjustmentListener, java.awt.event.ActionListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
+Clazz_prepareFields (c$, function () {
+this.HELIX_COLOUR = java.awt.Color.red.darker ();
+this.SHEET_COLOUR = java.awt.Color.green.darker ().darker ();
+this.$bounds =  Clazz_newIntArray (2, 0);
+});
+Clazz_makeConstructor (c$, 
+function (ap) {
+Clazz_superConstructor (this, jalview.appletgui.AnnotationPanel, []);
+this.MAC = jalview.util.Platform.isAMac ();
+this.ap = ap;
+this.av = ap.av;
+this.setLayout (null);
+var height = this.adjustPanelHeight ();
+ap.apvscroll.setValues (0, this.getSize ().height, 0, height);
+this.addMouseMotionListener (this);
+this.addMouseListener (this);
+this.renderer =  new jalview.renderer.AnnotationRenderer ();
+}, "jalview.appletgui.AlignmentPanel");
+Clazz_makeConstructor (c$, 
+function (av) {
+Clazz_superConstructor (this, jalview.appletgui.AnnotationPanel, []);
+this.av = av;
+this.renderer =  new jalview.renderer.AnnotationRenderer ();
+}, "jalview.appletgui.AlignViewport");
+Clazz_overrideMethod (c$, "adjustmentValueChanged", 
+function (evt) {
+}, "java.awt.event.AdjustmentEvent");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (evt) {
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+if (aa == null) {
+return;
+}var anot = aa[this.activeRow].annotations;
+if (anot.length < this.av.getColumnSelection ().getMax ()) {
+var temp =  new Array (this.av.getColumnSelection ().getMax () + 2);
+System.arraycopy (anot, 0, temp, 0, anot.length);
+anot = temp;
+aa[this.activeRow].annotations = anot;
+}var label = "";
+if (this.av.getColumnSelection () != null && this.av.getColumnSelection ().size () > 0 && anot[this.av.getColumnSelection ().getMin ()] != null) {
+label = anot[this.av.getColumnSelection ().getMin ()].displayCharacter;
+}if (evt.getActionCommand ().equals ("Remove Annotation")) {
+for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {
+anot[this.av.getColumnSelection ().columnAt (i)] = null;
+}
+} else if (evt.getActionCommand ().equals ("Label")) {
+label = this.enterLabel (label, "Enter Label");
+if (label == null) {
+return;
+}if ((label.length > 0) && !aa[this.activeRow].hasText) {
+aa[this.activeRow].hasText = true;
+}for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {
+var index = this.av.getColumnSelection ().columnAt (i);
+if (!this.av.getColumnSelection ().isVisible (index)) {
+continue;
+}if (anot[index] == null) {
+anot[index] =  new jalview.datamodel.Annotation (label, "", ' ', 0);
+}anot[index].displayCharacter = label;
+}
+} else if (evt.getActionCommand ().equals ("Colour")) {
+var udc =  new jalview.appletgui.UserDefinedColours (this, java.awt.Color.black, this.ap.alignFrame);
+var col = udc.getColor ();
+for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {
+var index = this.av.getColumnSelection ().columnAt (i);
+if (!this.av.getColumnSelection ().isVisible (index)) {
+continue;
+}if (anot[index] == null) {
+anot[index] =  new jalview.datamodel.Annotation ("", "", ' ', 0);
+}anot[index].colour = col;
+}
+} else {
+var type = String.fromCharCode (0);
+var symbol = "\u03B1";
+if (evt.getActionCommand ().equals ("Helix")) {
+type = 'H';
+} else if (evt.getActionCommand ().equals ("Sheet")) {
+type = 'E';
+symbol = "\u03B2";
+} else if (evt.getActionCommand ().equals ("RNA Helix")) {
+type = 'S';
+symbol = "\u03C3";
+}if (!aa[this.activeRow].hasIcons) {
+aa[this.activeRow].hasIcons = true;
+}label = this.enterLabel (symbol, "Enter Label");
+if (label == null) {
+return;
+}if ((label.length > 0) && !aa[this.activeRow].hasText) {
+aa[this.activeRow].hasText = true;
+if (evt.getActionCommand ().equals ("RNA Helix")) {
+aa[this.activeRow].showAllColLabels = true;
+}}for (var i = 0; i < this.av.getColumnSelection ().size (); i++) {
+var index = this.av.getColumnSelection ().columnAt (i);
+if (!this.av.getColumnSelection ().isVisible (index)) {
+continue;
+}if (anot[index] == null) {
+anot[index] =  new jalview.datamodel.Annotation (label, "", type, 0);
+}anot[index].secondaryStructure = type != 'S' ? type : label.length == 0 ? ' ' : label.charAt (0);
+anot[index].displayCharacter = label;
+}
+}this.av.getAlignment ().validateAnnotation (aa[this.activeRow]);
+this.ap.alignmentChanged ();
+this.adjustPanelHeight ();
+this.repaint ();
+return;
+}, "java.awt.event.ActionEvent");
+Clazz_defineMethod (c$, "enterLabel", 
+function (text, label) {
+var dialog =  new jalview.appletgui.EditNameDialog (text, null, label, null, this.ap.alignFrame, "Enter Label", 400, 200, true);
+if (dialog.accept) {
+return dialog.getName ();
+} else {
+return null;
+}}, "~S,~S");
+Clazz_overrideMethod (c$, "mousePressed", 
+function (evt) {
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+if (aa == null) {
+return;
+}var height = -this.scrollOffset;
+this.activeRow = -1;
+for (var i = 0; i < aa.length; i++) {
+if (aa[i].visible) {
+height += aa[i].height;
+}if (evt.getY () < height) {
+if (aa[i].editable) {
+this.activeRow = i;
+} else if (aa[i].graph > 0) {
+this.graphStretch = i;
+this.graphStretchY = evt.getY ();
+}break;
+}}
+if ((evt.getModifiers () & 4) == 4 && this.activeRow != -1) {
+if (this.av.getColumnSelection () == null) {
+return;
+}var pop =  new awt2swing.PopupMenu (jalview.util.MessageManager.getString ("label.structure_type"));
+var item;
+if (this.av.getAlignment ().isNucleotide () == true) {
+item =  new awt2swing.MenuItem ("RNA Helix");
+item.addActionListener (this);
+pop.add (item);
+} else {
+item =  new awt2swing.MenuItem ("Helix");
+item.addActionListener (this);
+pop.add (item);
+item =  new awt2swing.MenuItem ("Sheet");
+item.addActionListener (this);
+pop.add (item);
+}item =  new awt2swing.MenuItem ("Label");
+item.addActionListener (this);
+pop.add (item);
+item =  new awt2swing.MenuItem ("Colour");
+item.addActionListener (this);
+pop.add (item);
+item =  new awt2swing.MenuItem ("Remove Annotation");
+item.addActionListener (this);
+pop.add (item);
+this.ap.alignFrame.add (pop);
+pop.show (this, evt.getX (), evt.getY ());
+return;
+}this.ap.scalePanel.mousePressed (evt);
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (evt) {
+this.graphStretch = -1;
+this.graphStretchY = -1;
+this.mouseDragging = false;
+if (this.needValidating) {
+this.ap.validate ();
+this.needValidating = false;
+}this.ap.scalePanel.mouseReleased (evt);
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseDragged", 
+function (evt) {
+if (this.graphStretch > -1) {
+this.av.getAlignment ().getAlignmentAnnotation ()[this.graphStretch].graphHeight += this.graphStretchY - evt.getY ();
+if (this.av.getAlignment ().getAlignmentAnnotation ()[this.graphStretch].graphHeight < 0) {
+this.av.getAlignment ().getAlignmentAnnotation ()[this.graphStretch].graphHeight = 0;
+}this.graphStretchY = evt.getY ();
+this.av.calcPanelHeight ();
+this.needValidating = true;
+this.ap.paintAlignment (true);
+} else {
+this.ap.scalePanel.mouseDragged (evt);
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseMoved", 
+function (evt) {
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+if (aa == null) {
+return;
+}var row = -1;
+var height = -this.scrollOffset;
+for (var i = 0; i < aa.length; i++) {
+if (aa[i].visible) {
+height += aa[i].height;
+}if (evt.getY () < height) {
+row = i;
+break;
+}}
+var res = Clazz_doubleToInt (evt.getX () / this.av.getCharWidth ()) + this.av.getStartRes ();
+if (this.av.hasHiddenColumns ()) {
+res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
+}if (row > -1 && res < aa[row].annotations.length && aa[row].annotations[res] != null) {
+var text =  new StringBuffer ("Sequence position " + (res + 1));
+if (aa[row].annotations[res].description != null) {
+text.append ("  " + aa[row].annotations[res].description);
+}this.ap.alignFrame.setStatus (text.toString ());
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (evt) {
+this.ap.scalePanel.mouseEntered (evt);
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (evt) {
+this.ap.scalePanel.mouseExited (evt);
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "adjustPanelHeight", 
+function () {
+return this.adjustPanelHeight (true);
+});
+Clazz_defineMethod (c$, "adjustPanelHeight", 
+function (repaint) {
+var height = this.av.calcPanelHeight ();
+this.setSize ( new java.awt.Dimension (this.getSize ().width, height));
+if (repaint) {
+this.repaint ();
+}return height;
+}, "~B");
+Clazz_defineMethod (c$, "addEditableColumn", 
+function (i) {
+if (this.activeRow == -1) {
+var aa = this.av.getAlignment ().getAlignmentAnnotation ();
+if (aa == null) {
+return;
+}for (var j = 0; j < aa.length; j++) {
+if (aa[j].editable) {
+this.activeRow = j;
+break;
+}}
+}}, "~N");
+Clazz_overrideMethod (c$, "paintComponent", 
+function (g) {
+if (this.av.getWrapAlignment () || !this.av.isShowAnnotation ()) return;
+var d = this.getSize ();
+this.imgWidth = d.width;
+if (this.imgWidth < 1 || d.height < 1) {
+return;
+}if (this.image == null || this.imgWidth != this.image.getWidth (this) || d.height != this.image.getHeight (this)) {
+this.image = this.createImage (this.imgWidth, d.height);
+this.gg = this.image.getGraphics ();
+this.gg.setFont (this.av.getFont ());
+this.fm = this.gg.getFontMetrics ();
+this.$fastPaint = false;
+}if (this.$fastPaint) {
+g.drawImage (this.image, 0, 0, this);
+this.$fastPaint = false;
+return;
+}this.gg.setColor (java.awt.Color.white);
+this.gg.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+this.drawComponent (this.gg, this.av.startRes, this.av.endRes + 1);
+g.drawImage (this.image, 0, 0, this);
+}, "java.awt.Graphics");
+Clazz_defineMethod (c$, "fastPaint", 
+function (horizontal) {
+if (horizontal == 0 || this.av.getAlignment ().getAlignmentAnnotation () == null || this.av.getAlignment ().getAlignmentAnnotation ().length < 1) {
+this.repaint ();
+return;
+}this.gg.copyArea (0, 0, this.imgWidth, this.getSize ().height, -horizontal * this.av.getCharWidth (), 0);
+var sr = this.av.startRes;
+var er = this.av.endRes + 1;
+var transX = 0;
+if (horizontal > 0) {
+transX = (er - sr - horizontal) * this.av.getCharWidth ();
+sr = er - horizontal;
+} else if (horizontal < 0) {
+er = sr - horizontal;
+}this.gg.translate (transX, 0);
+this.drawComponent (this.gg, sr, er);
+this.gg.translate (-transX, 0);
+this.$fastPaint = true;
+this.repaint ();
+}, "~N");
+Clazz_defineMethod (c$, "drawComponent", 
+function (g, startRes, endRes) {
+var ofont = this.av.getFont ();
+g.setFont (ofont);
+g.setColor (java.awt.Color.white);
+g.fillRect (0, 0, (endRes - startRes) * this.av.getCharWidth (), this.getSize ().height);
+if (this.fm == null) {
+this.fm = g.getFontMetrics ();
+}if ((this.av.getAlignment ().getAlignmentAnnotation () == null) || (this.av.getAlignment ().getAlignmentAnnotation ().length < 1)) {
+g.setColor (java.awt.Color.white);
+g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+g.setColor (java.awt.Color.black);
+if (this.av.validCharWidth) {
+awt2swing.Util.drawString (g, jalview.util.MessageManager.getString ("label.alignment_has_no_annotations"), 20, 15);
+}return;
+}g.translate (0, -this.scrollOffset);
+this.renderer.drawComponent (this, this.av, g, this.activeRow, startRes, endRes);
+g.translate (0, +this.scrollOffset);
+}, "java.awt.Graphics,~N,~N");
+Clazz_defineMethod (c$, "setScrollOffset", 
+function (value, repaint) {
+this.scrollOffset = value;
+if (repaint) {
+this.repaint ();
+}}, "~N,~B");
+Clazz_defineMethod (c$, "getFontMetrics", 
+function () {
+return this.fm;
+});
+Clazz_overrideMethod (c$, "getFadedImage", 
+function () {
+return this.image;
+});
+Clazz_overrideMethod (c$, "getFadedImageWidth", 
+function () {
+return this.imgWidth;
+});
+Clazz_overrideMethod (c$, "getVisibleVRange", 
+function () {
+if (this.ap != null && this.ap.alabels != null) {
+var sOffset = -this.ap.alabels.scrollOffset;
+var visHeight = sOffset + this.ap.annotationPanelHolder.getHeight ();
+this.$bounds[0] = sOffset;
+this.$bounds[1] = visHeight;
+return this.$bounds;
+} else {
+return null;
+}});
+Clazz_defineStatics (c$,
+"GRAPH_HEIGHT", 40);
+});
+Clazz_declarePackage ("jalview.renderer");
+Clazz_load (["java.awt.image.ImageObserver"], "jalview.renderer.AwtRenderPanelI", null, function () {
+Clazz_declareInterface (jalview.renderer, "AwtRenderPanelI", java.awt.image.ImageObserver);
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.FocusListener", "awt2swing.Button", "$.Label", "$.Scrollbar", "$.TextField", "java.awt.GridLayout", "java.util.Vector"], "jalview.appletgui.UserDefinedColours", ["awt2swing.Frame", "jalview.appletgui.AnnotationColourChooser", "$.FeatureColourChooser", "$.FeatureRenderer", "$.FeatureSettings", "jalview.bin.JalviewLite", "jalview.schemes.ResidueProperties", "$.UserColourScheme", "jalview.util.MessageManager", "java.awt.Color", "$.Dialog", "$.Font", "$.Rectangle", "java.awt.event.MouseAdapter", "java.lang.Error"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.ap = null;
+this.seqGroup = null;
+this.selectedButton = null;
+this.oldColours = null;
+this.oldColourScheme = null;
+this.frame = null;
+this.jmol = null;
+this.dialog = null;
+this.caller = null;
+this.originalLabel = null;
+this.originalColour = null;
+this.R = 0;
+this.G = 0;
+this.B = 0;
+this.buttonPanel = null;
+this.gridLayout = null;
+this.okcancelPanel = null;
+this.okButton = null;
+this.applyButton = null;
+this.cancelButton = null;
+this.rScroller = null;
+this.label1 = null;
+this.rText = null;
+this.label4 = null;
+this.gScroller = null;
+this.gText = null;
+this.label5 = null;
+this.bScroller = null;
+this.bText = null;
+this.target = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "UserDefinedColours", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.FocusListener]);
+Clazz_prepareFields (c$, function () {
+this.oldColours =  new java.util.Vector ();
+this.buttonPanel =  new awt2swing.Panel ();
+this.gridLayout =  new java.awt.GridLayout ();
+this.okcancelPanel =  new awt2swing.Panel ();
+this.okButton =  new awt2swing.Button ();
+this.applyButton =  new awt2swing.Button ();
+this.cancelButton =  new awt2swing.Button ();
+this.rScroller =  new awt2swing.Scrollbar ();
+this.label1 =  new awt2swing.Label ();
+this.rText =  new awt2swing.TextField ();
+this.label4 =  new awt2swing.Label ();
+this.gScroller =  new awt2swing.Scrollbar ();
+this.gText =  new awt2swing.TextField ();
+this.label5 =  new awt2swing.Label ();
+this.bScroller =  new awt2swing.Scrollbar ();
+this.bText =  new awt2swing.TextField ();
+this.target =  new awt2swing.Panel ();
+});
+Clazz_defineMethod (c$, "loadDefaultColours", 
+function () {
+return null;
+});
+Clazz_makeConstructor (c$, 
+function (ap, sg) {
+Clazz_superConstructor (this, jalview.appletgui.UserDefinedColours, []);
+this.ap = ap;
+this.seqGroup = sg;
+if (this.seqGroup != null) {
+this.oldColourScheme = this.seqGroup.cs;
+} else {
+this.oldColourScheme = ap.av.getGlobalColourScheme ();
+}this.init ();
+}, "jalview.appletgui.AlignmentPanel,jalview.datamodel.SequenceGroup");
+Clazz_makeConstructor (c$, 
+function (jmol) {
+Clazz_superConstructor (this, jalview.appletgui.UserDefinedColours, []);
+this.jmol = jmol;
+this.init ();
+}, "jalview.appletgui.AppletJmol");
+Clazz_makeConstructor (c$, 
+function (fr, alignframe) {
+Clazz_superConstructor (this, jalview.appletgui.UserDefinedColours, []);
+this.caller = fr;
+this.originalColour = fr.colourPanel.getBackground ();
+this.originalLabel = "Feature Colour";
+this.setForDialog ("Select Feature Colour", alignframe);
+this.setTargetColour (fr.colourPanel.getBackground ());
+this.dialog.setVisible (true);
+}, "jalview.appletgui.FeatureRenderer,awt2swing.Frame");
+Clazz_makeConstructor (c$, 
+function (caller, col1, alignframe) {
+this.construct (caller, col1, alignframe, "Select Colour");
+}, "java.awt.Component,java.awt.Color,awt2swing.Frame");
+Clazz_makeConstructor (c$, 
+function (caller, col1, alignframe, title) {
+Clazz_superConstructor (this, jalview.appletgui.UserDefinedColours, []);
+this.caller = caller;
+this.originalColour = col1;
+this.originalLabel = title;
+this.setForDialog (title, alignframe);
+this.setTargetColour (col1);
+this.dialog.setVisible (true);
+}, "java.awt.Component,java.awt.Color,awt2swing.Frame,~S");
+Clazz_makeConstructor (c$, 
+function (caller, label, colour) {
+this.construct (caller, label, colour, colour);
+}, "~O,~S,java.awt.Color");
+Clazz_makeConstructor (c$, 
+function (me, type, graduatedColor) {
+this.construct (me, type, graduatedColor, graduatedColor.getMaxColor ());
+}, "jalview.appletgui.FeatureSettings,~S,jalview.schemes.GraduatedColor");
+Clazz_makeConstructor (c$, 
+ function (caller, label, ocolour, colour) {
+Clazz_superConstructor (this, jalview.appletgui.UserDefinedColours, []);
+this.caller = caller;
+this.originalColour = ocolour;
+this.originalLabel = label;
+this.init ();
+this.remove (this.buttonPanel);
+this.setTargetColour (colour);
+this.okcancelPanel.setBounds ( new java.awt.Rectangle (0, 113, 400, 35));
+this.frame.setTitle (jalview.util.MessageManager.getString ("label.user_defined_colours") + " - " + label);
+this.frame.setSize (420, 200);
+}, "~O,~S,~O,java.awt.Color");
+Clazz_defineMethod (c$, "setForDialog", 
+function (title, alignframe) {
+this.init ();
+this.frame.setVisible (false);
+this.remove (this.buttonPanel);
+if (Clazz_instanceOf (alignframe, awt2swing.Frame)) {
+this.dialog =  new java.awt.Dialog (alignframe, title, true);
+} else {
+throw  new Error (jalview.util.MessageManager.getString ("label.error_unsupported_owwner_user_colour_scheme"));
+}this.dialog.add (this);
+this.setSize (400, 123);
+this.okcancelPanel.setBounds ( new java.awt.Rectangle (0, 123, 400, 35));
+var height = 160 + alignframe.getInsets ().top + this.getInsets ().bottom;
+var width = 400;
+this.dialog.setBounds (alignframe.getBounds ().x + Clazz_doubleToInt ((alignframe.getSize ().width - width) / 2), alignframe.getBounds ().y + Clazz_doubleToInt ((alignframe.getSize ().height - height) / 2), width, height);
+}, "~S,java.awt.Container");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (evt) {
+var source = evt.getSource ();
+if (source === this.okButton) {
+this.okButton_actionPerformed ();
+} else if (source === this.applyButton) {
+this.applyButton_actionPerformed ();
+} else if (source === this.cancelButton) {
+this.cancelButton_actionPerformed ();
+} else if (source === this.rText) {
+this.rText_actionPerformed ();
+} else if (source === this.gText) {
+this.gText_actionPerformed ();
+} else if (source === this.bText) {
+this.bText_actionPerformed ();
+}}, "java.awt.event.ActionEvent");
+Clazz_overrideMethod (c$, "adjustmentValueChanged", 
+function (evt) {
+if (evt.getSource () === this.rScroller) {
+this.rScroller_adjustmentValueChanged ();
+} else if (evt.getSource () === this.gScroller) {
+this.gScroller_adjustmentValueChanged ();
+} else if (evt.getSource () === this.bScroller) {
+this.bScroller_adjustmentValueChanged ();
+}}, "java.awt.event.AdjustmentEvent");
+Clazz_defineMethod (c$, "init", 
+function () {
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.frame =  new awt2swing.Frame ();
+this.frame.add (this);
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.user_defined_colours"), 420, 345);
+if (this.seqGroup != null) {
+this.frame.setTitle (this.frame.getTitle () + " (" + this.seqGroup.getName () + ")");
+}for (var i = 0; i < 20; i++) {
+this.makeButton (jalview.schemes.ResidueProperties.aa2Triplet.get (jalview.schemes.ResidueProperties.aa[i]) + "", jalview.schemes.ResidueProperties.aa[i]);
+}
+this.makeButton ("B", "B");
+this.makeButton ("Z", "Z");
+this.makeButton ("X", "X");
+this.makeButton ("Gap", "'.','-',' '");
+this.validate ();
+});
+Clazz_defineMethod (c$, "rText_actionPerformed", 
+function () {
+try {
+var i = Integer.parseInt (this.rText.getText ());
+this.rScroller.setValue (i);
+this.rScroller_adjustmentValueChanged ();
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+});
+Clazz_defineMethod (c$, "gText_actionPerformed", 
+function () {
+try {
+var i = Integer.parseInt (this.gText.getText ());
+this.gScroller.setValue (i);
+this.gScroller_adjustmentValueChanged ();
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+});
+Clazz_defineMethod (c$, "bText_actionPerformed", 
+function () {
+try {
+var i = Integer.parseInt (this.bText.getText ());
+this.bScroller.setValue (i);
+this.bScroller_adjustmentValueChanged ();
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+});
+Clazz_defineMethod (c$, "rScroller_adjustmentValueChanged", 
+function () {
+this.R = this.rScroller.getValue ();
+this.rText.setText (this.R + "");
+this.colourChanged ();
+});
+Clazz_defineMethod (c$, "gScroller_adjustmentValueChanged", 
+function () {
+this.G = this.gScroller.getValue ();
+this.gText.setText (this.G + "");
+this.colourChanged ();
+});
+Clazz_defineMethod (c$, "bScroller_adjustmentValueChanged", 
+function () {
+this.B = this.bScroller.getValue ();
+this.bText.setText (this.B + "");
+this.colourChanged ();
+});
+Clazz_defineMethod (c$, "colourChanged", 
+function () {
+var col =  new java.awt.Color (this.R, this.G, this.B);
+this.target.setBackground (col);
+this.target.repaint ();
+if (this.selectedButton != null) {
+this.selectedButton.setBackground (col);
+this.selectedButton.repaint ();
+}});
+Clazz_defineMethod (c$, "setTargetColour", 
+function (col) {
+this.R = col.getRed ();
+this.G = col.getGreen ();
+this.B = col.getBlue ();
+this.rScroller.setValue (this.R);
+this.gScroller.setValue (this.G);
+this.bScroller.setValue (this.B);
+this.rText.setText (this.R + "");
+this.gText.setText (this.G + "");
+this.bText.setText (this.B + "");
+this.colourChanged ();
+}, "java.awt.Color");
+Clazz_defineMethod (c$, "colourButtonPressed", 
+function (e) {
+this.selectedButton = e.getSource ();
+this.setTargetColour (this.selectedButton.getBackground ());
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "makeButton", 
+function (label, aa) {
+var button =  new awt2swing.Button ();
+var col = java.awt.Color.white;
+if (this.oldColourScheme != null) {
+try {
+col = this.oldColourScheme.findColourSeq (aa.charAt (0), -1, null);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}button.setBackground (col);
+this.oldColours.addElement (col);
+button.setLabel (label);
+button.setForeground (col.darker ().darker ().darker ());
+button.setFont ( new java.awt.Font ("Verdana", 1, 10));
+button.addMouseListener (((Clazz_isClassDefined ("jalview.appletgui.UserDefinedColours$1") ? 0 : jalview.appletgui.UserDefinedColours.$UserDefinedColours$1$ ()), Clazz_innerTypeInstance (jalview.appletgui.UserDefinedColours$1, this, null)));
+this.buttonPanel.add (button, null);
+}, "~S,~S");
+Clazz_defineMethod (c$, "okButton_actionPerformed", 
+function () {
+this.applyButton_actionPerformed ();
+if (this.dialog != null) {
+this.dialog.setVisible (false);
+}this.frame.setVisible (false);
+});
+Clazz_defineMethod (c$, "getColor", 
+function () {
+return  new java.awt.Color (this.R, this.G, this.B);
+});
+Clazz_defineMethod (c$, "applyButton_actionPerformed", 
+function () {
+if (this.caller != null) {
+if (Clazz_instanceOf (this.caller, jalview.appletgui.FeatureSettings)) {
+(this.caller).setUserColour (this.originalLabel, this.getColor ());
+} else if (Clazz_instanceOf (this.caller, jalview.appletgui.AnnotationColourChooser)) {
+if (this.originalLabel.equals ("Min Colour")) {
+(this.caller).minColour_actionPerformed (this.getColor ());
+} else {
+(this.caller).maxColour_actionPerformed (this.getColor ());
+}} else if (Clazz_instanceOf (this.caller, jalview.appletgui.FeatureRenderer)) {
+(this.caller).colourPanel.updateColor (this.getColor ());
+} else if (Clazz_instanceOf (this.caller, jalview.appletgui.FeatureColourChooser)) {
+if (this.originalLabel.indexOf ("inimum") > -1) {
+(this.caller).minColour_actionPerformed (this.getColor ());
+} else {
+(this.caller).maxColour_actionPerformed (this.getColor ());
+}}return;
+}var newColours =  new Array (24);
+for (var i = 0; i < 24; i++) {
+var button = this.buttonPanel.getComponent (i);
+newColours[i] = button.getBackground ();
+}
+var ucs =  new jalview.schemes.UserColourScheme (newColours);
+if (this.ap != null) {
+ucs.setThreshold (0, this.ap.av.isIgnoreGapsConsensus ());
+}if (this.ap != null) {
+if (this.seqGroup != null) {
+this.seqGroup.cs = ucs;
+} else {
+this.ap.av.setGlobalColourScheme (ucs);
+}this.ap.seqPanel.seqCanvas.img = null;
+this.ap.paintAlignment (true);
+} else if (this.jmol != null) {
+this.jmol.setJalviewColourScheme (ucs);
+}});
+Clazz_defineMethod (c$, "cancelButton_actionPerformed", 
+function () {
+if (this.caller != null) {
+if (Clazz_instanceOf (this.caller, jalview.appletgui.FeatureSettings)) {
+(this.caller).setUserColour (this.originalLabel, this.originalColour);
+} else if (Clazz_instanceOf (this.caller, jalview.appletgui.AnnotationColourChooser)) {
+if (this.originalLabel.equals ("Min Colour")) {
+(this.caller).minColour_actionPerformed (this.originalColour);
+} else {
+(this.caller).maxColour_actionPerformed (this.originalColour);
+}} else if (Clazz_instanceOf (this.caller, jalview.appletgui.FeatureRenderer)) {
+(this.caller).colourPanel.updateColor (this.originalColour);
+} else if (Clazz_instanceOf (this.caller, jalview.appletgui.FeatureColourChooser)) {
+if (this.originalLabel.indexOf ("inimum") > -1) {
+(this.caller).minColour_actionPerformed (this.originalColour);
+} else {
+(this.caller).maxColour_actionPerformed (this.originalColour);
+}}if (this.dialog != null) {
+this.dialog.setVisible (false);
+}this.frame.setVisible (false);
+return;
+}var newColours =  new Array (24);
+for (var i = 0; i < 24; i++) {
+newColours[i] = this.oldColours.elementAt (i);
+this.buttonPanel.getComponent (i).setBackground (newColours[i]);
+}
+var ucs =  new jalview.schemes.UserColourScheme (newColours);
+if (this.ap != null) {
+if (this.seqGroup != null) {
+this.seqGroup.cs = ucs;
+} else {
+this.ap.av.setGlobalColourScheme (ucs);
+}this.ap.paintAlignment (true);
+} else if (this.jmol != null) {
+this.jmol.setJalviewColourScheme (ucs);
+}this.frame.setVisible (false);
+});
+Clazz_defineMethod (c$, "jbInit", 
+ function () {
+this.setLayout (null);
+this.buttonPanel.setLayout (this.gridLayout);
+this.gridLayout.setColumns (6);
+this.gridLayout.setRows (4);
+this.okButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.okButton.setLabel (jalview.util.MessageManager.getString ("action.ok"));
+this.okButton.addActionListener (this);
+this.applyButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.applyButton.setLabel (jalview.util.MessageManager.getString ("action.apply"));
+this.applyButton.addActionListener (this);
+this.cancelButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.cancelButton.setLabel (jalview.util.MessageManager.getString ("action.cancel"));
+this.cancelButton.addActionListener (this);
+this.setBackground ( new java.awt.Color (212, 208, 223));
+this.okcancelPanel.setBounds ( new java.awt.Rectangle (0, 265, 400, 35));
+this.buttonPanel.setBounds ( new java.awt.Rectangle (0, 123, 400, 142));
+this.rScroller.setMaximum (256);
+this.rScroller.setMinimum (0);
+this.rScroller.setOrientation (0);
+this.rScroller.setUnitIncrement (1);
+this.rScroller.setVisibleAmount (1);
+this.rScroller.setBounds ( new java.awt.Rectangle (36, 27, 119, 19));
+this.rScroller.addAdjustmentListener (this);
+this.label1.setAlignment (4);
+this.label1.setText ("R");
+this.label1.setBounds ( new java.awt.Rectangle (19, 30, 16, 15));
+this.rText.setFont ( new java.awt.Font ("Dialog", 0, 10));
+this.rText.setText ("0        ");
+this.rText.setBounds ( new java.awt.Rectangle (156, 27, 53, 19));
+this.rText.addActionListener (this);
+this.rText.addFocusListener (this);
+this.label4.setAlignment (4);
+this.label4.setText ("G");
+this.label4.setBounds ( new java.awt.Rectangle (15, 56, 20, 15));
+this.gScroller.setMaximum (256);
+this.gScroller.setMinimum (0);
+this.gScroller.setOrientation (0);
+this.gScroller.setUnitIncrement (1);
+this.gScroller.setVisibleAmount (1);
+this.gScroller.setBounds ( new java.awt.Rectangle (35, 52, 120, 20));
+this.gScroller.addAdjustmentListener (this);
+this.gText.setFont ( new java.awt.Font ("Dialog", 0, 10));
+this.gText.setText ("0        ");
+this.gText.setBounds ( new java.awt.Rectangle (156, 52, 53, 20));
+this.gText.addActionListener (this);
+this.gText.addFocusListener (this);
+this.label5.setAlignment (4);
+this.label5.setText ("B");
+this.label5.setBounds ( new java.awt.Rectangle (14, 82, 20, 15));
+this.bScroller.setMaximum (256);
+this.bScroller.setMinimum (0);
+this.bScroller.setOrientation (0);
+this.bScroller.setUnitIncrement (1);
+this.bScroller.setVisibleAmount (1);
+this.bScroller.setBounds ( new java.awt.Rectangle (35, 78, 120, 20));
+this.bScroller.addAdjustmentListener (this);
+this.bText.setFont ( new java.awt.Font ("Dialog", 0, 10));
+this.bText.setText ("0        ");
+this.bText.setBounds ( new java.awt.Rectangle (157, 78, 52, 20));
+this.bText.addActionListener (this);
+this.bText.addFocusListener (this);
+this.target.setBackground (java.awt.Color.black);
+this.target.setBounds ( new java.awt.Rectangle (229, 26, 134, 79));
+this.add (this.okcancelPanel, null);
+this.okcancelPanel.add (this.okButton, null);
+this.okcancelPanel.add (this.applyButton, null);
+this.okcancelPanel.add (this.cancelButton, null);
+this.add (this.rText);
+this.add (this.gText);
+this.add (this.bText);
+this.add (this.buttonPanel, null);
+this.add (this.target, null);
+this.add (this.gScroller);
+this.add (this.rScroller);
+this.add (this.bScroller);
+this.add (this.label5);
+this.add (this.label4);
+this.add (this.label1);
+});
+Clazz_overrideMethod (c$, "focusGained", 
+function (e) {
+}, "java.awt.event.FocusEvent");
+Clazz_overrideMethod (c$, "focusLost", 
+function (e) {
+var c = e.getComponent ();
+if (c === this.rText) {
+this.rText_actionPerformed ();
+} else {
+if (c === this.gText) {
+this.gText_actionPerformed ();
+} else {
+if (c === this.bText) {
+this.bText_actionPerformed ();
+}}}}, "java.awt.event.FocusEvent");
+c$.$UserDefinedColours$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "UserDefinedColours$1", java.awt.event.MouseAdapter);
+Clazz_overrideMethod (c$, "mousePressed", 
+function (e) {
+this.b$["jalview.appletgui.UserDefinedColours"].colourButtonPressed (e);
+}, "java.awt.event.MouseEvent");
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.ItemListener", "$.MouseListener", "awt2swing.Button", "$.Checkbox", "$.Choice", "$.Scrollbar", "$.TextField", "java.awt.BorderLayout", "$.FlowLayout"], "jalview.appletgui.AnnotationColourChooser", ["awt2swing.Frame", "jalview.appletgui.UserDefinedColours", "jalview.bin.JalviewLite", "jalview.datamodel.GraphLine", "jalview.schemes.AnnotationColourGradient", "$.ColourSchemeI", "jalview.util.MessageManager", "java.awt.Color", "$.Dimension", "$.Font", "java.lang.Error", "$.Float", "java.util.Hashtable", "$.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.frame = null;
+this.av = null;
+this.ap = null;
+this.oldcs = null;
+this.oldgroupColours = null;
+this.currentAnnotation = null;
+this.adjusting = false;
+this.annotations = null;
+this.minColour = null;
+this.maxColour = null;
+this.ok = null;
+this.cancel = null;
+this.defColours = null;
+this.jPanel1 = null;
+this.jPanel2 = null;
+this.threshold = null;
+this.flowLayout1 = null;
+this.jPanel3 = null;
+this.slider = null;
+this.thresholdValue = null;
+this.currentColours = null;
+this.borderLayout1 = null;
+this.thresholdIsMin = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "AnnotationColourChooser", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.ItemListener, java.awt.event.MouseListener]);
+Clazz_prepareFields (c$, function () {
+this.annotations =  new awt2swing.Choice ();
+this.minColour =  new awt2swing.Button ();
+this.maxColour =  new awt2swing.Button ();
+this.ok =  new awt2swing.Button ();
+this.cancel =  new awt2swing.Button ();
+this.defColours =  new awt2swing.Button ();
+this.jPanel1 =  new awt2swing.Panel ();
+this.jPanel2 =  new awt2swing.Panel ();
+this.threshold =  new awt2swing.Choice ();
+this.flowLayout1 =  new java.awt.FlowLayout ();
+this.jPanel3 =  new awt2swing.Panel ();
+this.slider =  new awt2swing.Scrollbar (0);
+this.thresholdValue =  new awt2swing.TextField (20);
+this.currentColours =  new awt2swing.Checkbox ();
+this.borderLayout1 =  new java.awt.BorderLayout ();
+this.thresholdIsMin =  new awt2swing.Checkbox ();
+});
+Clazz_makeConstructor (c$, 
+function (av, ap) {
+Clazz_superConstructor (this, jalview.appletgui.AnnotationColourChooser, []);
+try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+this.oldcs = av.getGlobalColourScheme ();
+if (av.getAlignment ().getGroups () != null) {
+this.oldgroupColours =  new java.util.Hashtable ();
+for (var sg, $sg = ap.av.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (sg.cs != null) {
+this.oldgroupColours.put (sg, sg.cs);
+} else {
+this.oldgroupColours.put (sg, "null");
+}}
+}this.av = av;
+this.ap = ap;
+this.slider.addAdjustmentListener (this);
+this.slider.addMouseListener (this);
+if (av.getAlignment ().getAlignmentAnnotation () == null) {
+return;
+}this.setDefaultMinMax ();
+this.adjusting = true;
+if (Clazz_instanceOf (this.oldcs, jalview.schemes.AnnotationColourGradient)) {
+var acg = this.oldcs;
+this.currentColours.setState (acg.isPredefinedColours () || acg.getBaseColour () != null);
+if (!acg.isPredefinedColours () && acg.getBaseColour () == null) {
+this.minColour.setBackground (acg.getMinColour ());
+this.maxColour.setBackground (acg.getMaxColour ());
+}}var list =  new java.util.Vector ();
+var index = 1;
+for (var i = 0; i < av.getAlignment ().getAlignmentAnnotation ().length; i++) {
+var label = av.getAlignment ().getAlignmentAnnotation ()[i].label;
+if (!list.contains (label)) {
+list.addElement (label);
+} else {
+list.addElement (label + "_" + (index++));
+}}
+for (var i = 0; i < list.size (); i++) {
+this.annotations.addItem (list.elementAt (i).toString ());
+}
+this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_no_thereshold"));
+this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_above_thereshold"));
+this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_below_thereshold"));
+if (Clazz_instanceOf (this.oldcs, jalview.schemes.AnnotationColourGradient)) {
+var acg = this.oldcs;
+this.annotations.select (acg.getAnnotation ());
+switch (acg.getAboveThreshold ()) {
+case -1:
+this.threshold.select (new Integer (0));
+break;
+case 1:
+this.threshold.select (new Integer (1));
+break;
+case 0:
+this.threshold.select (new Integer (1));
+break;
+default:
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_dont_know_thereshold_annotationcolourgradient"));
+}
+this.thresholdIsMin.setState (acg.thresholdIsMinMax);
+this.thresholdValue.setText ("" + acg.getAnnotationThreshold ());
+}this.adjusting = false;
+this.changeColour ();
+this.frame =  new awt2swing.Frame ();
+this.frame.add (this);
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.colour_by_annotation"), 560, 175);
+this.validate ();
+}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+Clazz_defineMethod (c$, "setDefaultMinMax", 
+ function () {
+this.minColour.setBackground (this.av.applet.getDefaultColourParameter ("ANNOTATIONCOLOUR_MIN", java.awt.Color.orange));
+this.maxColour.setBackground (this.av.applet.getDefaultColourParameter ("ANNOTATIONCOLOUR_MAX", java.awt.Color.red));
+});
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.appletgui.AnnotationColourChooser, []);
+try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+});
+Clazz_defineMethod (c$, "jbInit", 
+ function () {
+this.minColour.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.minColour.setLabel (jalview.util.MessageManager.getString ("label.min_colour"));
+this.minColour.addActionListener (this);
+this.maxColour.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.maxColour.setLabel (jalview.util.MessageManager.getString ("label.max_colour"));
+this.maxColour.addActionListener (this);
+this.thresholdIsMin.addItemListener (this);
+this.ok.setLabel (jalview.util.MessageManager.getString ("action.ok"));
+this.ok.addActionListener (this);
+this.cancel.setLabel (jalview.util.MessageManager.getString ("action.cancel"));
+this.cancel.addActionListener (this);
+this.defColours.setLabel (jalview.util.MessageManager.getString ("action.set_defaults"));
+this.defColours.addActionListener (this);
+this.annotations.addItemListener (this);
+this.thresholdValue.addActionListener (this);
+this.slider.setBackground (java.awt.Color.white);
+this.slider.setPreferredSize ( new java.awt.Dimension (193, 21));
+this.slider.setEnabled (false);
+this.thresholdValue.setPreferredSize ( new java.awt.Dimension (79, 22));
+this.thresholdValue.setEnabled (false);
+this.thresholdValue.setColumns (5);
+this.currentColours.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.currentColours.setLabel (jalview.util.MessageManager.getString ("label.use_original_colours"));
+this.currentColours.addItemListener (this);
+this.thresholdIsMin.setBackground (java.awt.Color.white);
+this.thresholdIsMin.setLabel (jalview.util.MessageManager.getString ("label.threshold_minmax"));
+this.setLayout (this.borderLayout1);
+this.jPanel1.setBackground (java.awt.Color.white);
+this.jPanel2.setLayout ( new java.awt.FlowLayout ());
+this.jPanel2.setBackground (java.awt.Color.white);
+this.threshold.addItemListener (this);
+this.jPanel3.setLayout ( new java.awt.FlowLayout ());
+this.jPanel3.setBackground (java.awt.Color.white);
+var jPanel4 =  new awt2swing.Panel ();
+jPanel4.setLayout ( new java.awt.BorderLayout ());
+jPanel4.setBackground (java.awt.Color.white);
+this.jPanel1.add (this.ok);
+this.jPanel1.add (this.cancel);
+this.jPanel2.add (this.annotations);
+this.jPanel2.add (this.currentColours);
+this.jPanel2.add (this.minColour);
+this.jPanel2.add (this.maxColour);
+jPanel4.add (this.thresholdIsMin, "West");
+jPanel4.add (this.slider, "Center");
+jPanel4.add (this.thresholdValue, "East");
+var jPanel34 =  new awt2swing.Panel ();
+jPanel34.setLayout ( new java.awt.BorderLayout ());
+jPanel34.setBackground (java.awt.Color.white);
+jPanel34.add (this.jPanel2, "North");
+jPanel34.add (this.threshold, "West");
+this.jPanel3.add (this.defColours);
+jPanel34.add (this.jPanel3, "East");
+jPanel34.add (jPanel4, "South");
+this.add (jPanel34, "Center");
+this.add (this.jPanel1, "South");
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.thresholdValue) {
+try {
+var f =  new Float (this.thresholdValue.getText ()).floatValue ();
+this.slider.setValue (Clazz_floatToInt (f * 1000));
+this.adjustmentValueChanged (null);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+} else if (evt.getSource () === this.minColour) {
+this.minColour_actionPerformed (null);
+} else if (evt.getSource () === this.maxColour) {
+this.maxColour_actionPerformed (null);
+} else if (evt.getSource () === this.defColours) {
+this.defColour_actionPerformed ();
+} else if (evt.getSource () === this.ok) {
+this.changeColour ();
+this.frame.setVisible (false);
+} else if (evt.getSource () === this.cancel) {
+this.reset ();
+this.ap.paintAlignment (true);
+this.frame.setVisible (false);
+} else {
+this.changeColour ();
+}}, "java.awt.event.ActionEvent");
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (evt) {
+if (evt.getSource () === this.currentColours) {
+if (this.currentColours.getState ()) {
+this.reset ();
+}this.maxColour.setEnabled (!this.currentColours.getState ());
+this.minColour.setEnabled (!this.currentColours.getState ());
+}this.changeColour ();
+}, "java.awt.event.ItemEvent");
+Clazz_overrideMethod (c$, "adjustmentValueChanged", 
+function (evt) {
+if (!this.adjusting) {
+this.thresholdValue.setText ((this.slider.getValue () / 1000) + "");
+if (this.currentColours.getState () && !(Clazz_instanceOf (this.av.getGlobalColourScheme (), jalview.schemes.AnnotationColourGradient))) {
+this.changeColour ();
+}this.currentAnnotation.threshold.value = this.slider.getValue () / 1000;
+this.ap.paintAlignment (false);
+}}, "java.awt.event.AdjustmentEvent");
+Clazz_defineMethod (c$, "minColour_actionPerformed", 
+function (newCol) {
+if (newCol != null) {
+this.minColour.setBackground (newCol);
+this.minColour.repaint ();
+this.changeColour ();
+} else {
+ new jalview.appletgui.UserDefinedColours (this, "Min Colour", this.minColour.getBackground ());
+}}, "java.awt.Color");
+Clazz_defineMethod (c$, "maxColour_actionPerformed", 
+function (newCol) {
+if (newCol != null) {
+this.maxColour.setBackground (newCol);
+this.maxColour.repaint ();
+this.changeColour ();
+} else {
+ new jalview.appletgui.UserDefinedColours (this, "Max Colour", this.maxColour.getBackground ());
+}}, "java.awt.Color");
+Clazz_defineMethod (c$, "defColour_actionPerformed", 
+function () {
+this.setDefaultMinMax ();
+this.minColour.repaint ();
+this.maxColour.repaint ();
+this.changeColour ();
+});
+Clazz_defineMethod (c$, "changeColour", 
+function () {
+if (this.adjusting) {
+return;
+}this.currentAnnotation = this.av.getAlignment ().getAlignmentAnnotation ()[this.annotations.getSelectedIndex ()];
+var aboveThreshold = -1;
+if (this.threshold.getSelectedIndex () == 1) {
+aboveThreshold = 1;
+} else if (this.threshold.getSelectedIndex () == 2) {
+aboveThreshold = 0;
+}this.slider.setEnabled (true);
+this.thresholdValue.setEnabled (true);
+this.thresholdIsMin.setEnabled (true);
+if (aboveThreshold == -1) {
+this.slider.setEnabled (false);
+this.thresholdValue.setEnabled (false);
+this.thresholdIsMin.setEnabled (false);
+this.thresholdValue.setText ("");
+} else if (aboveThreshold != -1 && this.currentAnnotation.threshold == null) {
+this.currentAnnotation.setThreshold ( new jalview.datamodel.GraphLine ((this.currentAnnotation.graphMax - this.currentAnnotation.graphMin) / 2, "Threshold", java.awt.Color.black));
+}if (aboveThreshold != -1) {
+this.adjusting = true;
+this.slider.setMinimum (Clazz_floatToInt (this.currentAnnotation.graphMin * 1000));
+this.slider.setMaximum (Clazz_floatToInt (this.currentAnnotation.graphMax * 1000));
+this.slider.setValue (Clazz_floatToInt (this.currentAnnotation.threshold.value * 1000));
+this.thresholdValue.setText (this.currentAnnotation.threshold.value + "");
+this.slider.setEnabled (true);
+this.thresholdValue.setEnabled (true);
+this.adjusting = false;
+}var acg = null;
+if (this.currentColours.getState ()) {
+acg =  new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, this.av.getGlobalColourScheme (), aboveThreshold);
+} else {
+acg =  new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, this.minColour.getBackground (), this.maxColour.getBackground (), aboveThreshold);
+}if (this.currentAnnotation.graphMin == 0 && this.currentAnnotation.graphMax == 0) {
+acg.setPredefinedColours (true);
+}acg.thresholdIsMinMax = this.thresholdIsMin.getState ();
+this.av.setGlobalColourScheme (acg);
+if (this.av.getAlignment ().getGroups () != null) {
+for (var sg, $sg = this.ap.av.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (sg.cs == null) {
+continue;
+}if (this.currentColours.getState ()) {
+sg.cs =  new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, sg.cs, aboveThreshold);
+} else {
+sg.cs =  new jalview.schemes.AnnotationColourGradient (this.currentAnnotation, this.minColour.getBackground (), this.maxColour.getBackground (), aboveThreshold);
+}}
+}this.ap.alignmentChanged ();
+this.ap.paintAlignment (true);
+});
+Clazz_defineMethod (c$, "reset", 
+function () {
+this.av.setGlobalColourScheme (this.oldcs);
+if (this.av.getAlignment ().getGroups () != null) {
+for (var sg, $sg = this.ap.av.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+var cs = this.oldgroupColours.get (sg);
+if (Clazz_instanceOf (cs, jalview.schemes.ColourSchemeI)) {
+sg.cs = cs;
+} else {
+sg.cs = null;
+}}
+}this.ap.paintAlignment (true);
+});
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mousePressed", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (evt) {
+this.ap.paintAlignment (true);
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+});
+Clazz_declarePackage ("awt2swing");
+Clazz_load (["javax.swing.JComboBox"], "awt2swing.Choice", null, function () {
+c$ = Clazz_declareType (awt2swing, "Choice", javax.swing.JComboBox);
+Clazz_defineMethod (c$, "select", 
+function (key) {
+this.setSelectedItem (key);
+}, "~O");
+});
+Clazz_declarePackage ("javax.swing");
+Clazz_load (["java.awt.ItemSelectable", "java.awt.event.ActionListener", "javax.swing.ActionPropertyChangeListener", "$.JComponent", "javax.swing.event.ListDataListener", "javax.swing.JPopupMenu"], "javax.swing.JComboBox", ["java.lang.IllegalArgumentException", "$.RuntimeException", "java.awt.Component", "$.EventQueue", "java.awt.event.ActionEvent", "$.InputEvent", "$.ItemEvent", "$.ItemListener", "javax.swing.AbstractAction", "$.DefaultComboBoxModel", "$.MutableComboBoxModel", "$.SwingUtilities", "$.UIManager", "javax.swing.event.AncestorListener", "$.PopupMenuEvent", "$.PopupMenuListener"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.dataModel = null;
+this.renderer = null;
+this.editor = null;
+this.maximumRowCount = 8;
+this.$isEditable = false;
+this.keySelectionManager = null;
+this.actionCommand = "comboBoxChanged";
+this.lightWeightPopupEnabled = false;
+this.selectedItemReminder = null;
+this.prototypeDisplayValue = null;
+this.firingActionEvent = false;
+this.selectingItem = false;
+this.$action = null;
+this.actionPropertyChangeListener = null;
+if (!Clazz_isClassDefined ("javax.swing.JComboBox.DefaultKeySelectionManager")) {
+javax.swing.JComboBox.$JComboBox$DefaultKeySelectionManager$ ();
+}
+Clazz_instantialize (this, arguments);
+}, javax.swing, "JComboBox", javax.swing.JComponent, [java.awt.ItemSelectable, javax.swing.event.ListDataListener, java.awt.event.ActionListener]);
+Clazz_prepareFields (c$, function () {
+this.lightWeightPopupEnabled = javax.swing.JPopupMenu.getDefaultLightWeightPopupEnabled ();
+});
+Clazz_makeConstructor (c$, 
+function (aModel) {
+Clazz_superConstructor (this, javax.swing.JComboBox);
+this.setModel (aModel);
+this.init ();
+}, "javax.swing.ComboBoxModel");
+Clazz_makeConstructor (c$, 
+function (items) {
+Clazz_superConstructor (this, javax.swing.JComboBox);
+this.setModel ( new javax.swing.DefaultComboBoxModel (items));
+this.init ();
+}, "~A");
+Clazz_makeConstructor (c$, 
+function (items) {
+Clazz_superConstructor (this, javax.swing.JComboBox);
+this.setModel ( new javax.swing.DefaultComboBoxModel (items));
+this.init ();
+}, "java.util.Vector");
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.JComboBox);
+this.setModel ( new javax.swing.DefaultComboBoxModel ());
+this.init ();
+});
+Clazz_defineMethod (c$, "init", 
+ function () {
+this.installAncestorListener ();
+this.setUIProperty ("opaque", new Boolean (true));
+this.updateUI ();
+});
+Clazz_defineMethod (c$, "installAncestorListener", 
+function () {
+this.addAncestorListener (((Clazz_isClassDefined ("javax.swing.JComboBox$1") ? 0 : javax.swing.JComboBox.$JComboBox$1$ ()), Clazz_innerTypeInstance (javax.swing.JComboBox$1, this, null)));
+});
+Clazz_overrideMethod (c$, "updateUI", 
+function () {
+this.setUI (javax.swing.UIManager.getUI (this));
+var renderer = this.getRenderer ();
+if (Clazz_instanceOf (renderer, java.awt.Component)) {
+javax.swing.SwingUtilities.updateComponentTreeUI (renderer);
+}});
+Clazz_overrideMethod (c$, "getUIClassID", 
+function () {
+return "ComboBoxUI";
+});
+Clazz_overrideMethod (c$, "getUI", 
+function () {
+return this.ui;
+});
+Clazz_defineMethod (c$, "setModel", 
+function (aModel) {
+var oldModel = this.dataModel;
+if (oldModel != null) {
+oldModel.removeListDataListener (this);
+}this.dataModel = aModel;
+this.dataModel.addListDataListener (this);
+this.selectedItemReminder = this.dataModel.getSelectedItem ();
+this.firePropertyChangeObject ("model", oldModel, this.dataModel);
+}, "javax.swing.ComboBoxModel");
+Clazz_defineMethod (c$, "getModel", 
+function () {
+return this.dataModel;
+});
+Clazz_defineMethod (c$, "setLightWeightPopupEnabled", 
+function (aFlag) {
+var oldFlag = this.lightWeightPopupEnabled;
+this.lightWeightPopupEnabled = aFlag;
+this.firePropertyChangeBool ("lightWeightPopupEnabled", oldFlag, this.lightWeightPopupEnabled);
+}, "~B");
+Clazz_defineMethod (c$, "isLightWeightPopupEnabled", 
+function () {
+return this.lightWeightPopupEnabled;
+});
+Clazz_defineMethod (c$, "setEditable", 
+function (aFlag) {
+var oldFlag = this.$isEditable;
+this.$isEditable = aFlag;
+this.firePropertyChangeBool ("editable", oldFlag, this.$isEditable);
+}, "~B");
+Clazz_defineMethod (c$, "isEditable", 
+function () {
+return this.$isEditable;
+});
+Clazz_defineMethod (c$, "setMaximumRowCount", 
+function (count) {
+var oldCount = this.maximumRowCount;
+this.maximumRowCount = count;
+this.firePropertyChangeInt ("maximumRowCount", oldCount, this.maximumRowCount);
+}, "~N");
+Clazz_defineMethod (c$, "getMaximumRowCount", 
+function () {
+return this.maximumRowCount;
+});
+Clazz_defineMethod (c$, "setRenderer", 
+function (aRenderer) {
+var oldRenderer = this.renderer;
+this.renderer = aRenderer;
+this.firePropertyChangeObject ("renderer", oldRenderer, this.renderer);
+this.invalidate ();
+}, "javax.swing.ListCellRenderer");
+Clazz_defineMethod (c$, "getRenderer", 
+function () {
+return this.renderer;
+});
+Clazz_defineMethod (c$, "setEditor", 
+function (anEditor) {
+var oldEditor = this.editor;
+if (this.editor != null) {
+this.editor.removeActionListener (this);
+}this.editor = anEditor;
+if (this.editor != null) {
+this.editor.addActionListener (this);
+}this.firePropertyChangeObject ("editor", oldEditor, this.editor);
+}, "javax.swing.ComboBoxEditor");
+Clazz_defineMethod (c$, "getEditor", 
+function () {
+return this.editor;
+});
+Clazz_defineMethod (c$, "setSelectedItem", 
+function (anObject) {
+var oldSelection = this.selectedItemReminder;
+var objectToSelect = anObject;
+if (oldSelection == null || !oldSelection.equals (anObject)) {
+if (anObject != null && !this.isEditable ()) {
+var found = false;
+for (var i = 0; i < this.dataModel.getSize (); i++) {
+var element = this.dataModel.getElementAt (i);
+if (anObject.equals (element)) {
+found = true;
+objectToSelect = element;
+break;
+}}
+if (!found) {
+return;
+}}this.selectingItem = true;
+this.dataModel.setSelectedItem (objectToSelect);
+this.selectingItem = false;
+if (this.selectedItemReminder !== this.dataModel.getSelectedItem ()) {
+this.selectedItemChanged ();
+}}this.fireActionEvent ();
+}, "~O");
+Clazz_defineMethod (c$, "getSelectedItem", 
+function () {
+return this.dataModel.getSelectedItem ();
+});
+Clazz_defineMethod (c$, "setSelectedIndex", 
+function (anIndex) {
+var size = this.dataModel.getSize ();
+if (anIndex == -1) {
+this.setSelectedItem (null);
+} else if (anIndex < -1 || anIndex >= size) {
+throw  new IllegalArgumentException ("setSelectedIndex: " + anIndex + " out of bounds");
+} else {
+this.setSelectedItem (this.dataModel.getElementAt (anIndex));
+}}, "~N");
+Clazz_defineMethod (c$, "getSelectedIndex", 
+function () {
+var sObject = this.dataModel.getSelectedItem ();
+var i;
+var c;
+var obj;
+for (i = 0, c = this.dataModel.getSize (); i < c; i++) {
+obj = this.dataModel.getElementAt (i);
+if (obj != null && obj.equals (sObject)) return i;
+}
+return -1;
+});
+Clazz_defineMethod (c$, "getPrototypeDisplayValue", 
+function () {
+return this.prototypeDisplayValue;
+});
+Clazz_defineMethod (c$, "setPrototypeDisplayValue", 
+function (prototypeDisplayValue) {
+var oldValue = this.prototypeDisplayValue;
+this.prototypeDisplayValue = prototypeDisplayValue;
+this.firePropertyChangeObject ("prototypeDisplayValue", oldValue, prototypeDisplayValue);
+}, "~O");
+Clazz_defineMethod (c$, "addItem", 
+function (anObject) {
+this.checkMutableComboBoxModel ();
+(this.dataModel).addElement (anObject);
+}, "~O");
+Clazz_defineMethod (c$, "insertItemAt", 
+function (anObject, index) {
+this.checkMutableComboBoxModel ();
+(this.dataModel).insertElementAt (anObject, index);
+}, "~O,~N");
+Clazz_defineMethod (c$, "removeItem", 
+function (anObject) {
+this.checkMutableComboBoxModel ();
+(this.dataModel).removeElement (anObject);
+}, "~O");
+Clazz_defineMethod (c$, "removeItemAt", 
+function (anIndex) {
+this.checkMutableComboBoxModel ();
+(this.dataModel).removeElementAt (anIndex);
+}, "~N");
+Clazz_defineMethod (c$, "removeAllItems", 
+function () {
+this.checkMutableComboBoxModel ();
+var model = this.dataModel;
+var size = model.getSize ();
+if (Clazz_instanceOf (model, javax.swing.DefaultComboBoxModel)) {
+(model).removeAllElements ();
+} else {
+for (var i = 0; i < size; ++i) {
+var element = model.getElementAt (0);
+model.removeElement (element);
+}
+}this.selectedItemReminder = null;
+if (this.isEditable ()) {
+this.editor.setItem (null);
+}});
+Clazz_defineMethod (c$, "checkMutableComboBoxModel", 
+function () {
+if (!(Clazz_instanceOf (this.dataModel, javax.swing.MutableComboBoxModel))) throw  new RuntimeException ("Cannot use this method with a non-Mutable data model.");
+});
+Clazz_defineMethod (c$, "showPopup", 
+function () {
+this.setPopupVisible (true);
+});
+Clazz_defineMethod (c$, "hidePopup", 
+function () {
+this.setPopupVisible (false);
+});
+Clazz_defineMethod (c$, "setPopupVisible", 
+function (v) {
+this.getUI ().setPopupVisible (this, v);
+}, "~B");
+Clazz_defineMethod (c$, "isPopupVisible", 
+function () {
+return this.getUI ().isPopupVisible (this);
+});
+Clazz_overrideMethod (c$, "addItemListener", 
+function (aListener) {
+this.listenerList.add (java.awt.event.ItemListener, aListener);
+}, "java.awt.event.ItemListener");
+Clazz_overrideMethod (c$, "removeItemListener", 
+function (aListener) {
+this.listenerList.remove (java.awt.event.ItemListener, aListener);
+}, "java.awt.event.ItemListener");
+Clazz_defineMethod (c$, "getItemListeners", 
+function () {
+return this.listenerList.getListeners (java.awt.event.ItemListener);
+});
+Clazz_defineMethod (c$, "addActionListener", 
+function (l) {
+this.listenerList.add (java.awt.event.ActionListener, l);
+}, "java.awt.event.ActionListener");
+Clazz_defineMethod (c$, "removeActionListener", 
+function (l) {
+if ((l != null) && (this.getAction () === l)) {
+this.setAction (null);
+} else {
+this.listenerList.remove (java.awt.event.ActionListener, l);
+}}, "java.awt.event.ActionListener");
+Clazz_defineMethod (c$, "getActionListeners", 
+function () {
+return this.listenerList.getListeners (java.awt.event.ActionListener);
+});
+Clazz_defineMethod (c$, "addPopupMenuListener", 
+function (l) {
+this.listenerList.add (javax.swing.event.PopupMenuListener, l);
+}, "javax.swing.event.PopupMenuListener");
+Clazz_defineMethod (c$, "removePopupMenuListener", 
+function (l) {
+this.listenerList.remove (javax.swing.event.PopupMenuListener, l);
+}, "javax.swing.event.PopupMenuListener");
+Clazz_defineMethod (c$, "getPopupMenuListeners", 
+function () {
+return this.listenerList.getListeners (javax.swing.event.PopupMenuListener);
+});
+Clazz_defineMethod (c$, "firePopupMenuWillBecomeVisible", 
+function () {
+var listeners = this.listenerList.getListenerList ();
+var e = null;
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === javax.swing.event.PopupMenuListener) {
+if (e == null) e =  new javax.swing.event.PopupMenuEvent (this);
+(listeners[i + 1]).popupMenuWillBecomeVisible (e);
+}}
+});
+Clazz_defineMethod (c$, "firePopupMenuWillBecomeInvisible", 
+function () {
+var listeners = this.listenerList.getListenerList ();
+var e = null;
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === javax.swing.event.PopupMenuListener) {
+if (e == null) e =  new javax.swing.event.PopupMenuEvent (this);
+(listeners[i + 1]).popupMenuWillBecomeInvisible (e);
+}}
+});
+Clazz_defineMethod (c$, "firePopupMenuCanceled", 
+function () {
+var listeners = this.listenerList.getListenerList ();
+var e = null;
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === javax.swing.event.PopupMenuListener) {
+if (e == null) e =  new javax.swing.event.PopupMenuEvent (this);
+(listeners[i + 1]).popupMenuCanceled (e);
+}}
+});
+Clazz_defineMethod (c$, "setActionCommand", 
+function (aCommand) {
+this.actionCommand = aCommand;
+}, "~S");
+Clazz_defineMethod (c$, "getActionCommand", 
+function () {
+return this.actionCommand;
+});
+Clazz_defineMethod (c$, "setAction", 
+function (a) {
+var oldValue = this.getAction ();
+if (this.$action == null || !this.$action.equals (a)) {
+this.$action = a;
+if (oldValue != null) {
+this.removeActionListener (oldValue);
+oldValue.removePropertyChangeListener (this.actionPropertyChangeListener);
+this.actionPropertyChangeListener = null;
+}this.configurePropertiesFromAction (this.$action);
+if (this.$action != null) {
+if (!this.isListener (java.awt.event.ActionListener, this.$action)) {
+this.addActionListener (this.$action);
+}this.actionPropertyChangeListener = this.createActionPropertyChangeListener (this.$action);
+this.$action.addPropertyChangeListener (this.actionPropertyChangeListener);
+}this.firePropertyChangeObject ("action", oldValue, this.$action);
+}}, "javax.swing.Action");
+Clazz_defineMethod (c$, "isListener", 
+ function (c, a) {
+var isListener = false;
+var listeners = this.listenerList.getListenerList ();
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === c && listeners[i + 1] === a) {
+isListener = true;
+}}
+return isListener;
+}, "Class,java.awt.event.ActionListener");
+Clazz_defineMethod (c$, "getAction", 
+function () {
+return this.$action;
+});
+Clazz_defineMethod (c$, "configurePropertiesFromAction", 
+function (a) {
+javax.swing.AbstractAction.setEnabledFromAction (this, a);
+javax.swing.AbstractAction.setToolTipTextFromAction (this, a);
+this.setActionCommandFromAction (a);
+}, "javax.swing.Action");
+Clazz_defineMethod (c$, "createActionPropertyChangeListener", 
+function (a) {
+return  new javax.swing.JComboBox.ComboBoxActionPropertyChangeListener (this, a);
+}, "javax.swing.Action");
+Clazz_defineMethod (c$, "actionPropertyChanged", 
+function (action, propertyName) {
+if (propertyName === "ActionCommandKey") {
+this.setActionCommandFromAction (action);
+} else if (propertyName === "enabled") {
+javax.swing.AbstractAction.setEnabledFromAction (this, action);
+} else if ("ShortDescription" === propertyName) {
+javax.swing.AbstractAction.setToolTipTextFromAction (this, action);
+}}, "javax.swing.Action,~S");
+Clazz_defineMethod (c$, "setActionCommandFromAction", 
+ function (a) {
+this.setActionCommand ((a != null) ? a.getValue ("ActionCommandKey") : null);
+}, "javax.swing.Action");
+Clazz_defineMethod (c$, "fireItemStateChanged", 
+function (e) {
+var listeners = this.listenerList.getListenerList ();
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === java.awt.event.ItemListener) {
+(listeners[i + 1]).itemStateChanged (e);
+}}
+}, "java.awt.event.ItemEvent");
+Clazz_defineMethod (c$, "fireActionEvent", 
+function () {
+if (!this.firingActionEvent) {
+this.firingActionEvent = true;
+var e = null;
+var listeners = this.listenerList.getListenerList ();
+var mostRecentEventTime = java.awt.EventQueue.getMostRecentEventTime ();
+var modifiers = 0;
+var currentEvent = java.awt.EventQueue.getCurrentEvent ();
+if (Clazz_instanceOf (currentEvent, java.awt.event.InputEvent)) {
+modifiers = (currentEvent).getModifiers ();
+} else if (Clazz_instanceOf (currentEvent, java.awt.event.ActionEvent)) {
+modifiers = (currentEvent).getModifiers ();
+}for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === java.awt.event.ActionListener) {
+if (e == null) e =  new java.awt.event.ActionEvent (this, 1001, this.getActionCommand (), mostRecentEventTime, modifiers);
+(listeners[i + 1]).actionPerformed (e);
+}}
+this.firingActionEvent = false;
+}});
+Clazz_defineMethod (c$, "selectedItemChanged", 
+function () {
+if (this.selectedItemReminder != null) {
+this.fireItemStateChanged ( new java.awt.event.ItemEvent (this, 701, this.selectedItemReminder, 2));
+}this.selectedItemReminder = this.dataModel.getSelectedItem ();
+if (this.selectedItemReminder != null) {
+this.fireItemStateChanged ( new java.awt.event.ItemEvent (this, 701, this.selectedItemReminder, 1));
+}});
+Clazz_overrideMethod (c$, "getSelectedObjects", 
+function () {
+var selectedObject = this.getSelectedItem ();
+if (selectedObject == null) return  new Array (0);
+ else {
+var result =  new Array (1);
+result[0] = selectedObject;
+return result;
+}});
+Clazz_defineMethod (c$, "actionPerformed", 
+function (e) {
+var newItem = this.getEditor ().getItem ();
+this.setPopupVisible (false);
+this.getModel ().setSelectedItem (newItem);
+var oldCommand = this.getActionCommand ();
+this.setActionCommand ("comboBoxEdited");
+this.fireActionEvent ();
+this.setActionCommand (oldCommand);
+}, "java.awt.event.ActionEvent");
+Clazz_overrideMethod (c$, "contentsChanged", 
+function (e) {
+var oldSelection = this.selectedItemReminder;
+var newSelection = this.dataModel.getSelectedItem ();
+if (oldSelection == null || !oldSelection.equals (newSelection)) {
+this.selectedItemChanged ();
+if (!this.selectingItem) {
+this.fireActionEvent ();
+}}}, "javax.swing.event.ListDataEvent");
+Clazz_overrideMethod (c$, "intervalAdded", 
+function (e) {
+if (this.selectedItemReminder !== this.dataModel.getSelectedItem ()) {
+this.selectedItemChanged ();
+}}, "javax.swing.event.ListDataEvent");
+Clazz_overrideMethod (c$, "intervalRemoved", 
+function (e) {
+this.contentsChanged (e);
+}, "javax.swing.event.ListDataEvent");
+Clazz_defineMethod (c$, "selectWithKeyChar", 
+function (keyChar) {
+var index;
+if (this.keySelectionManager == null) this.keySelectionManager = this.createDefaultKeySelectionManager ();
+index = this.keySelectionManager.selectionForKey (keyChar, this.getModel ());
+if (index != -1) {
+this.setSelectedIndex (index);
+return true;
+} else return false;
+}, "~S");
+Clazz_defineMethod (c$, "setEnabled", 
+function (b) {
+Clazz_superCall (this, javax.swing.JComboBox, "setEnabled", [b]);
+this.firePropertyChangeBool ("enabled", !this.isEnabled (), this.isEnabled ());
+}, "~B");
+Clazz_defineMethod (c$, "configureEditor", 
+function (anEditor, anItem) {
+anEditor.setItem (anItem);
+}, "javax.swing.ComboBoxEditor,~O");
+Clazz_defineMethod (c$, "processKeyEvent", 
+function (e) {
+if (e.getKeyCode () == 9) {
+this.hidePopup ();
+}Clazz_superCall (this, javax.swing.JComboBox, "processKeyEvent", [e]);
+}, "java.awt.event.KeyEvent");
+Clazz_defineMethod (c$, "setKeySelectionManager", 
+function (aManager) {
+this.keySelectionManager = aManager;
+}, "javax.swing.JComboBox.KeySelectionManager");
+Clazz_defineMethod (c$, "getKeySelectionManager", 
+function () {
+return this.keySelectionManager;
+});
+Clazz_defineMethod (c$, "getItemCount", 
+function () {
+return this.dataModel.getSize ();
+});
+Clazz_defineMethod (c$, "getItemAt", 
+function (index) {
+return this.dataModel.getElementAt (index);
+}, "~N");
+Clazz_defineMethod (c$, "createDefaultKeySelectionManager", 
+function () {
+return Clazz_innerTypeInstance (javax.swing.JComboBox.DefaultKeySelectionManager, this, null);
+});
+Clazz_defineMethod (c$, "paramString", 
+function () {
+var selectedItemReminderString = (this.selectedItemReminder != null ? this.selectedItemReminder.toString () : "");
+var isEditableString = (this.$isEditable ? "true" : "false");
+var lightWeightPopupEnabledString = (this.lightWeightPopupEnabled ? "true" : "false");
+return Clazz_superCall (this, javax.swing.JComboBox, "paramString", []) + ",isEditable=" + isEditableString + ",lightWeightPopupEnabled=" + lightWeightPopupEnabledString + ",maximumRowCount=" + this.maximumRowCount + ",selectedItemReminder=" + selectedItemReminderString;
+});
+c$.$JComboBox$DefaultKeySelectionManager$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+Clazz_instantialize (this, arguments);
+}, javax.swing.JComboBox, "DefaultKeySelectionManager", null, javax.swing.JComboBox.KeySelectionManager);
+Clazz_overrideMethod (c$, "selectionForKey", 
+function (a, b) {
+var c;
+var d;
+var e = -1;
+var f = b.getSelectedItem ();
+var g;
+var h;
+if (f != null) {
+for (c = 0, d = b.getSize (); c < d; c++) {
+if (f === b.getElementAt (c)) {
+e = c;
+break;
+}}
+}h = ("" + a).toLowerCase ();
+a = h.charAt (0);
+for (c = ++e, d = b.getSize (); c < d; c++) {
+var i = b.getElementAt (c);
+if (i != null && i.toString () != null) {
+g = i.toString ().toLowerCase ();
+if (g.length > 0 && g.charAt (0) == a) return c;
+}}
+for (c = 0; c < e; c++) {
+var i = b.getElementAt (c);
+if (i != null && i.toString () != null) {
+g = i.toString ().toLowerCase ();
+if (g.length > 0 && g.charAt (0) == a) return c;
+}}
+return -1;
+}, "~S,javax.swing.ComboBoxModel");
+c$ = Clazz_p0p ();
+};
+c$.$JComboBox$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (javax.swing, "JComboBox$1", null, javax.swing.event.AncestorListener);
+Clazz_overrideMethod (c$, "ancestorAdded", 
+function (event) {
+this.b$["javax.swing.JComboBox"].hidePopup ();
+}, "javax.swing.event.AncestorEvent");
+Clazz_overrideMethod (c$, "ancestorRemoved", 
+function (event) {
+this.b$["javax.swing.JComboBox"].hidePopup ();
+}, "javax.swing.event.AncestorEvent");
+Clazz_overrideMethod (c$, "ancestorMoved", 
+function (event) {
+if (event.getSource () !== this.b$["javax.swing.JComboBox"]) this.b$["javax.swing.JComboBox"].hidePopup ();
+}, "javax.swing.event.AncestorEvent");
+c$ = Clazz_p0p ();
+};
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.JComboBox, "ComboBoxActionPropertyChangeListener", javax.swing.ActionPropertyChangeListener);
+Clazz_overrideMethod (c$, "actionPropertyChanged", 
+function (a, b, c) {
+if (javax.swing.AbstractAction.shouldReconfigure (c)) {
+a.configurePropertiesFromAction (b);
+} else {
+a.actionPropertyChanged (b, c.getPropertyName ());
+}}, "javax.swing.JComboBox,javax.swing.Action,java.beans.PropertyChangeEvent");
+c$ = Clazz_p0p ();
+Clazz_declareInterface (javax.swing.JComboBox, "KeySelectionManager");
+Clazz_defineStatics (c$,
+"$uiClassID", "ComboBoxUI");
+});
+Clazz_declarePackage ("javax.swing.event");
+Clazz_load (["java.util.EventListener"], "javax.swing.event.ListDataListener", null, function () {
+Clazz_declareInterface (javax.swing.event, "ListDataListener", java.util.EventListener);
+});
+Clazz_declarePackage ("javax.swing");
+Clazz_load (["javax.swing.AbstractListModel", "$.MutableComboBoxModel"], "javax.swing.DefaultComboBoxModel", ["java.util.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.objects = null;
+this.selectedObject = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing, "DefaultComboBoxModel", javax.swing.AbstractListModel, javax.swing.MutableComboBoxModel);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, javax.swing.DefaultComboBoxModel, []);
+this.objects =  new java.util.Vector ();
+});
+Clazz_makeConstructor (c$, 
+function (items) {
+Clazz_superConstructor (this, javax.swing.DefaultComboBoxModel, []);
+this.objects =  new java.util.Vector ();
+this.objects.ensureCapacity (items.length);
+var i;
+var c;
+for (i = 0, c = items.length; i < c; i++) this.objects.addElement (items[i]);
+
+if (this.getSize () > 0) {
+this.selectedObject = this.getElementAt (0);
+}}, "~A");
+Clazz_makeConstructor (c$, 
+function (v) {
+Clazz_superConstructor (this, javax.swing.DefaultComboBoxModel, []);
+this.objects = v;
+if (this.getSize () > 0) {
+this.selectedObject = this.getElementAt (0);
+}}, "java.util.Vector");
+Clazz_overrideMethod (c$, "setSelectedItem", 
+function (anObject) {
+if ((this.selectedObject != null && !this.selectedObject.equals (anObject)) || this.selectedObject == null && anObject != null) {
+this.selectedObject = anObject;
+this.fireContentsChanged (this, -1, -1);
+}}, "~O");
+Clazz_overrideMethod (c$, "getSelectedItem", 
+function () {
+return this.selectedObject;
+});
+Clazz_overrideMethod (c$, "getSize", 
+function () {
+return this.objects.size ();
+});
+Clazz_overrideMethod (c$, "getElementAt", 
+function (index) {
+if (index >= 0 && index < this.objects.size ()) return this.objects.elementAt (index);
+ else return null;
+}, "~N");
+Clazz_defineMethod (c$, "getIndexOf", 
+function (anObject) {
+return this.objects.indexOf (anObject);
+}, "~O");
+Clazz_overrideMethod (c$, "addElement", 
+function (anObject) {
+this.objects.addElement (anObject);
+this.fireIntervalAdded (this, this.objects.size () - 1, this.objects.size () - 1);
+if (this.objects.size () == 1 && this.selectedObject == null && anObject != null) {
+this.setSelectedItem (anObject);
+}}, "~O");
+Clazz_overrideMethod (c$, "insertElementAt", 
+function (anObject, index) {
+this.objects.insertElementAt (anObject, index);
+this.fireIntervalAdded (this, index, index);
+}, "~O,~N");
+Clazz_overrideMethod (c$, "removeElementAt", 
+function (index) {
+if (this.getElementAt (index) === this.selectedObject) {
+if (index == 0) {
+this.setSelectedItem (this.getSize () == 1 ? null : this.getElementAt (index + 1));
+} else {
+this.setSelectedItem (this.getElementAt (index - 1));
+}}this.objects.removeElementAt (index);
+this.fireIntervalRemoved (this, index, index);
+}, "~N");
+Clazz_overrideMethod (c$, "removeElement", 
+function (anObject) {
+var index = this.objects.indexOf (anObject);
+if (index != -1) {
+this.removeElementAt (index);
+}}, "~O");
+Clazz_defineMethod (c$, "removeAllElements", 
+function () {
+if (this.objects.size () > 0) {
+var firstIndex = 0;
+var lastIndex = this.objects.size () - 1;
+this.objects.removeAllElements ();
+this.selectedObject = null;
+this.fireIntervalRemoved (this, firstIndex, lastIndex);
+} else {
+this.selectedObject = null;
+}});
+});
+Clazz_declarePackage ("javax.swing");
+Clazz_load (["javax.swing.ListModel", "javax.swing.event.EventListenerList"], "javax.swing.AbstractListModel", ["javax.swing.event.ListDataEvent", "$.ListDataListener"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.listenerList = null;
+Clazz_instantialize (this, arguments);
+}, javax.swing, "AbstractListModel", null, javax.swing.ListModel);
+Clazz_prepareFields (c$, function () {
+this.listenerList =  new javax.swing.event.EventListenerList ();
+});
+Clazz_overrideMethod (c$, "addListDataListener", 
+function (l) {
+this.listenerList.add (javax.swing.event.ListDataListener, l);
+}, "javax.swing.event.ListDataListener");
+Clazz_overrideMethod (c$, "removeListDataListener", 
+function (l) {
+this.listenerList.remove (javax.swing.event.ListDataListener, l);
+}, "javax.swing.event.ListDataListener");
+Clazz_defineMethod (c$, "getListDataListeners", 
+function () {
+return this.listenerList.getListeners (javax.swing.event.ListDataListener);
+});
+Clazz_defineMethod (c$, "fireContentsChanged", 
+function (source, index0, index1) {
+var listeners = this.listenerList.getListenerList ();
+var e = null;
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === javax.swing.event.ListDataListener) {
+if (e == null) {
+e =  new javax.swing.event.ListDataEvent (source, 0, index0, index1);
+}(listeners[i + 1]).contentsChanged (e);
+}}
+}, "~O,~N,~N");
+Clazz_defineMethod (c$, "fireIntervalAdded", 
+function (source, index0, index1) {
+var listeners = this.listenerList.getListenerList ();
+var e = null;
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === javax.swing.event.ListDataListener) {
+if (e == null) {
+e =  new javax.swing.event.ListDataEvent (source, 1, index0, index1);
+}(listeners[i + 1]).intervalAdded (e);
+}}
+}, "~O,~N,~N");
+Clazz_defineMethod (c$, "fireIntervalRemoved", 
+function (source, index0, index1) {
+var listeners = this.listenerList.getListenerList ();
+var e = null;
+for (var i = listeners.length - 2; i >= 0; i -= 2) {
+if (listeners[i] === javax.swing.event.ListDataListener) {
+if (e == null) {
+e =  new javax.swing.event.ListDataEvent (source, 2, index0, index1);
+}(listeners[i + 1]).intervalRemoved (e);
+}}
+}, "~O,~N,~N");
+Clazz_defineMethod (c$, "getListeners", 
+function (listenerType) {
+return this.listenerList.getListeners (listenerType);
+}, "Class");
+});
+Clazz_declarePackage ("javax.swing");
+Clazz_declareInterface (javax.swing, "ListModel");
+Clazz_declarePackage ("javax.swing.event");
+Clazz_load (["java.util.EventObject"], "javax.swing.event.ListDataEvent", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.type = 0;
+this.index0 = 0;
+this.index1 = 0;
+Clazz_instantialize (this, arguments);
+}, javax.swing.event, "ListDataEvent", java.util.EventObject);
+Clazz_defineMethod (c$, "getType", 
+function () {
+return this.type;
+});
+Clazz_defineMethod (c$, "getIndex0", 
+function () {
+return this.index0;
+});
+Clazz_defineMethod (c$, "getIndex1", 
+function () {
+return this.index1;
+});
+Clazz_makeConstructor (c$, 
+function (source, type, index0, index1) {
+Clazz_superConstructor (this, javax.swing.event.ListDataEvent, [source]);
+this.type = type;
+this.index0 = Math.min (index0, index1);
+this.index1 = Math.max (index0, index1);
+}, "~O,~N,~N,~N");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return this.getClass ().getName () + "[type=" + this.type + ",index0=" + this.index0 + ",index1=" + this.index1 + "]";
+});
+Clazz_defineStatics (c$,
+"CONTENTS_CHANGED", 0,
+"INTERVAL_ADDED", 1,
+"INTERVAL_REMOVED", 2);
+});
+Clazz_declarePackage ("javax.swing");
+Clazz_load (["javax.swing.ComboBoxModel"], "javax.swing.MutableComboBoxModel", null, function () {
+Clazz_declareInterface (javax.swing, "MutableComboBoxModel", javax.swing.ComboBoxModel);
+});
+Clazz_declarePackage ("javax.swing");
+Clazz_load (["javax.swing.ListModel"], "javax.swing.ComboBoxModel", null, function () {
+Clazz_declareInterface (javax.swing, "ComboBoxModel", javax.swing.ListModel);
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.FollowerColourScheme"], "jalview.schemes.AnnotationColourGradient", ["jalview.datamodel.AlignmentI", "$.GraphLine", "jalview.renderer.AnnotationRenderer", "jalview.schemes.ColourSchemeProperty", "jalview.util.Comparison", "java.awt.Color", "java.util.IdentityHashMap"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.annotation = null;
+this.aboveAnnotationThreshold = -1;
+this.thresholdIsMinMax = false;
+this.annotationThreshold = null;
+this.r1 = 0;
+this.g1 = 0;
+this.b1 = 0;
+this.rr = 0;
+this.gg = 0;
+this.bb = 0;
+this.predefinedColours = false;
+this.seqAssociated = false;
+this.noGradient = false;
+this.seqannot = null;
+this.aamin = 0;
+this.aamax = 0;
+Clazz_instantialize (this, arguments);
+}, jalview.schemes, "AnnotationColourGradient", jalview.schemes.FollowerColourScheme);
+Clazz_overrideMethod (c$, "applyTo", 
+function (sg, hiddenRepSequences) {
+var acg =  new jalview.schemes.AnnotationColourGradient (this.annotation, this.colourScheme, this.aboveAnnotationThreshold);
+acg.thresholdIsMinMax = this.thresholdIsMinMax;
+acg.annotationThreshold = (this.annotationThreshold == null) ? null :  new jalview.datamodel.GraphLine (this.annotationThreshold);
+acg.r1 = this.r1;
+acg.g1 = this.g1;
+acg.b1 = this.b1;
+acg.rr = this.rr;
+acg.gg = this.gg;
+acg.bb = this.bb;
+acg.predefinedColours = this.predefinedColours;
+acg.seqAssociated = this.seqAssociated;
+acg.noGradient = this.noGradient;
+return acg;
+}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+Clazz_makeConstructor (c$, 
+function (annotation, originalColour, aboveThreshold) {
+Clazz_superConstructor (this, jalview.schemes.AnnotationColourGradient, []);
+if (Clazz_instanceOf (originalColour, jalview.schemes.AnnotationColourGradient)) {
+this.colourScheme = (originalColour).colourScheme;
+} else {
+this.colourScheme = originalColour;
+}this.annotation = annotation;
+this.aboveAnnotationThreshold = aboveThreshold;
+if (aboveThreshold != -1 && annotation.threshold != null) {
+this.annotationThreshold = annotation.threshold;
+}this.r1 = 254;
+this.g1 = 254;
+this.b1 = 254;
+this.rr = 0;
+this.gg = 0;
+this.bb = 0;
+this.noGradient = true;
+}, "jalview.datamodel.AlignmentAnnotation,jalview.schemes.ColourSchemeI,~N");
+Clazz_makeConstructor (c$, 
+function (annotation, minColour, maxColour, aboveThreshold) {
+Clazz_superConstructor (this, jalview.schemes.AnnotationColourGradient, []);
+this.annotation = annotation;
+this.aboveAnnotationThreshold = aboveThreshold;
+if (aboveThreshold != -1 && annotation.threshold != null) {
+this.annotationThreshold = annotation.threshold;
+}this.r1 = minColour.getRed ();
+this.g1 = minColour.getGreen ();
+this.b1 = minColour.getBlue ();
+this.rr = maxColour.getRed () - this.r1;
+this.gg = maxColour.getGreen () - this.g1;
+this.bb = maxColour.getBlue () - this.b1;
+this.noGradient = false;
+this.aamax = annotation.graphMax;
+this.aamin = annotation.graphMin;
+if (annotation.isRNA ()) {
+jalview.schemes.ColourSchemeProperty.initRnaHelicesShading (1 + Clazz_floatToInt (this.aamax));
+}}, "jalview.datamodel.AlignmentAnnotation,java.awt.Color,java.awt.Color,~N");
+Clazz_defineMethod (c$, "alignmentChanged", 
+function (alignment, hiddenReps) {
+Clazz_superCall (this, jalview.schemes.AnnotationColourGradient, "alignmentChanged", [alignment, hiddenReps]);
+if (this.seqAssociated && this.annotation.getCalcId () != null) {
+if (this.seqannot != null) {
+this.seqannot.clear ();
+} else {
+this.seqannot =  new java.util.IdentityHashMap ();
+}var alcontext = Clazz_instanceOf (alignment, jalview.datamodel.AlignmentI) ? alignment : alignment.getContext ();
+var f = true;
+var rna = false;
+for (var alan, $alan = alcontext.findAnnotation (this.annotation.getCalcId ()).iterator (); $alan.hasNext () && ((alan = $alan.next ()) || true);) {
+if (alan.sequenceRef != null && (alan.label != null && this.annotation != null && alan.label.equals (this.annotation.label))) {
+if (!rna && alan.isRNA ()) {
+rna = true;
+}this.seqannot.put (alan.sequenceRef, alan);
+if (f || alan.graphMax > this.aamax) {
+this.aamax = alan.graphMax;
+}if (f || alan.graphMin < this.aamin) {
+this.aamin = alan.graphMin;
+}f = false;
+}}
+if (rna) {
+jalview.schemes.ColourSchemeProperty.initRnaHelicesShading (1 + Clazz_floatToInt (this.aamax));
+}}}, "jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+Clazz_defineMethod (c$, "getAnnotation", 
+function () {
+return this.annotation.label;
+});
+Clazz_defineMethod (c$, "getAboveThreshold", 
+function () {
+return this.aboveAnnotationThreshold;
+});
+Clazz_defineMethod (c$, "getAnnotationThreshold", 
+function () {
+if (this.annotationThreshold == null) {
+return 0;
+} else {
+return this.annotationThreshold.value;
+}});
+Clazz_defineMethod (c$, "getMinColour", 
+function () {
+return  new java.awt.Color (Clazz_floatToInt (this.r1), Clazz_floatToInt (this.g1), Clazz_floatToInt (this.b1));
+});
+Clazz_defineMethod (c$, "getMaxColour", 
+function () {
+return  new java.awt.Color (Clazz_floatToInt (this.r1 + this.rr), Clazz_floatToInt (this.g1 + this.gg), Clazz_floatToInt (this.b1 + this.bb));
+});
+Clazz_overrideMethod (c$, "findColour", 
+function (c) {
+return java.awt.Color.red;
+}, "~S");
+Clazz_overrideMethod (c$, "findColourSeq", 
+function (c, j, seq) {
+var currentColour = java.awt.Color.white;
+var annotation = (this.seqAssociated && this.seqannot != null ? this.seqannot.get (seq) : this.annotation);
+if (annotation == null) {
+return currentColour;
+}if ((this.threshold == 0) || this.aboveThreshold (c, j)) {
+if (annotation.annotations != null && j < annotation.annotations.length && annotation.annotations[j] != null && !jalview.util.Comparison.isGap (c)) {
+var aj = annotation.annotations[j];
+if (this.aboveAnnotationThreshold == -1 || (this.annotationThreshold != null && (this.aboveAnnotationThreshold == 1 ? aj.value >= this.annotationThreshold.value : aj.value <= this.annotationThreshold.value))) {
+if (this.predefinedColours && aj.colour != null && !aj.colour.equals (java.awt.Color.black)) {
+currentColour = aj.colour;
+} else if (annotation.hasIcons && annotation.graph == 0) {
+if (aj.secondaryStructure > ' ' && aj.secondaryStructure != '.' && aj.secondaryStructure != '-') {
+if (this.colourScheme != null) {
+currentColour = this.colourScheme.findColourSeq (c, j, seq);
+} else {
+if (annotation.isRNA ()) {
+currentColour = jalview.schemes.ColourSchemeProperty.rnaHelices[Clazz_floatToInt (aj.value)];
+} else {
+currentColour = annotation.annotations[j].secondaryStructure == 'H' ? jalview.renderer.AnnotationRenderer.HELIX_COLOUR : annotation.annotations[j].secondaryStructure == 'E' ? jalview.renderer.AnnotationRenderer.SHEET_COLOUR : jalview.renderer.AnnotationRenderer.STEM_COLOUR;
+}}} else {
+return java.awt.Color.white;
+}} else if (this.noGradient) {
+if (this.colourScheme != null) {
+currentColour = this.colourScheme.findColourSeq (c, j, seq);
+} else {
+if (aj.colour != null) {
+currentColour = aj.colour;
+}}} else {
+currentColour = this.shadeCalculation (annotation, j);
+}}if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}}}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "shadeCalculation", 
+ function (annotation, j) {
+var range = 1;
+if (this.thresholdIsMinMax && annotation.threshold != null && this.aboveAnnotationThreshold == 1 && annotation.annotations[j].value >= annotation.threshold.value) {
+range = (annotation.annotations[j].value - annotation.threshold.value) / (annotation.graphMax - annotation.threshold.value);
+} else if (this.thresholdIsMinMax && annotation.threshold != null && this.aboveAnnotationThreshold == 0 && annotation.annotations[j].value >= annotation.graphMin) {
+range = (annotation.annotations[j].value - annotation.graphMin) / (annotation.threshold.value - annotation.graphMin);
+} else {
+if (annotation.graphMax != annotation.graphMin) {
+range = (annotation.annotations[j].value - annotation.graphMin) / (annotation.graphMax - annotation.graphMin);
+} else {
+range = 0;
+}}var dr = Clazz_floatToInt (this.rr * range + this.r1);
+var dg = Clazz_floatToInt (this.gg * range + this.g1);
+var db = Clazz_floatToInt (this.bb * range + this.b1);
+return  new java.awt.Color (dr, dg, db);
+}, "jalview.datamodel.AlignmentAnnotation,~N");
+Clazz_defineMethod (c$, "isPredefinedColours", 
+function () {
+return this.predefinedColours;
+});
+Clazz_defineMethod (c$, "setPredefinedColours", 
+function (predefinedColours) {
+this.predefinedColours = predefinedColours;
+}, "~B");
+Clazz_defineMethod (c$, "isSeqAssociated", 
+function () {
+return this.seqAssociated;
+});
+Clazz_defineMethod (c$, "setSeqAssociated", 
+function (sassoc) {
+this.seqAssociated = sassoc;
+}, "~B");
+Clazz_defineStatics (c$,
+"NO_THRESHOLD", -1,
+"BELOW_THRESHOLD", 0,
+"ABOVE_THRESHOLD", 1);
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.FollowerColourScheme", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.colourScheme = null;
+Clazz_instantialize (this, arguments);
+}, jalview.schemes, "FollowerColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz_defineMethod (c$, "getBaseColour", 
+function () {
+return this.colourScheme;
+});
+Clazz_overrideMethod (c$, "setConsensus", 
+function (consensus) {
+if (this.colourScheme != null) {
+this.colourScheme.setConsensus (consensus);
+}}, "~A");
+Clazz_overrideMethod (c$, "setConservation", 
+function (cons) {
+if (this.colourScheme != null) {
+this.colourScheme.setConservation (cons);
+}}, "jalview.analysis.Conservation");
+Clazz_overrideMethod (c$, "setConservationInc", 
+function (i) {
+if (this.colourScheme != null) {
+this.colourScheme.setConservationInc (i);
+}}, "~N");
+});
+Clazz_declarePackage ("jalview.renderer");
+Clazz_load (["jalview.util.Platform", "java.awt.Color"], "jalview.renderer.AnnotationRenderer", ["awt2swing.Util", "jalview.analysis.AAFrequency", "$.CodingUtils", "$.StructureFrequency", "jalview.jsdev.RegExp", "jalview.schemes.NucleotideColourScheme", "$.ResidueProperties", "$.ZappoColourScheme", "java.awt.BasicStroke", "java.awt.geom.AffineTransform", "java.util.BitSet"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.debugRedraw = false;
+this.charWidth = 0;
+this.endRes = 0;
+this.charHeight = 0;
+this.validCharWidth = false;
+this.hasHiddenColumns = false;
+this.fm = null;
+this.MAC = false;
+this.av_renderHistogram = true;
+this.av_renderProfile = true;
+this.av_normaliseProfile = false;
+this.profcolour = null;
+this.columnSelection = null;
+this.hconsensus = null;
+this.complementConsensus = null;
+this.hStrucConsensus = null;
+this.av_ignoreGapsConsensus = false;
+this.fadedImage = null;
+this.annotationPanel = null;
+this.imgWidth = 0;
+this.sOffset = 0;
+this.visHeight = 0;
+this.useClip = true;
+this.canClip = false;
+this.rna = false;
+this.sdNOTCANONICAL_COLOUR = null;
+Clazz_instantialize (this, arguments);
+}, jalview.renderer, "AnnotationRenderer");
+Clazz_prepareFields (c$, function () {
+this.MAC = jalview.util.Platform.isAMac ();
+});
+Clazz_makeConstructor (c$, 
+function () {
+this.construct (false);
+});
+Clazz_makeConstructor (c$, 
+function (debugRedraw) {
+this.debugRedraw = debugRedraw;
+}, "~B");
+Clazz_defineMethod (c$, "drawStemAnnot", 
+function (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd) {
+g.setColor (jalview.renderer.AnnotationRenderer.STEM_COLOUR);
+var sCol = (Clazz_doubleToInt (lastSSX / this.charWidth)) + startRes;
+var x1 = lastSSX;
+var x2 = (x * this.charWidth);
+var closeparen = jalview.jsdev.RegExp.newRegex (["(\\))"]);
+var dc = (column == 0 || row_annotations[column - 1] == null) ? ' ' : row_annotations[column - 1].secondaryStructure;
+var diffupstream = sCol == 0 || row_annotations[sCol - 1] == null || dc != row_annotations[sCol - 1].secondaryStructure;
+var diffdownstream = !validRes || !validEnd || row_annotations[column] == null || dc != row_annotations[column].secondaryStructure;
+if (column > 0 && jalview.schemes.ResidueProperties.isCloseParenRNA (dc)) {
+if (diffupstream) {
+g.fillPolygon ( Clazz_newIntArray (-1, [lastSSX + 5, lastSSX + 5, lastSSX]),  Clazz_newIntArray (-1, [y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset]), 3);
+x1 += 5;
+}if (diffdownstream) {
+x2 -= 1;
+}} else {
+if (diffdownstream) {
+g.fillPolygon ( Clazz_newIntArray (-1, [x2 - 5, x2 - 5, x2]),  Clazz_newIntArray (-1, [y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset]), 3);
+x2 -= 5;
+}if (diffupstream) {
+x1 += 1;
+}}g.fillRect (x1, y + 4 + iconOffset, x2 - x1, 7);
+}, "java.awt.Graphics,~A,~N,~N,~N,~N,~N,~N,~B,~B");
+Clazz_defineMethod (c$, "drawNotCanonicalAnnot", 
+function (g, nonCanColor, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd) {
+g.setColor (nonCanColor);
+var sCol = (Clazz_doubleToInt (lastSSX / this.charWidth)) + startRes;
+var x1 = lastSSX;
+var x2 = (x * this.charWidth);
+var closeparen = jalview.jsdev.RegExp.newRegex (["}|]|<|[a-z]"]);
+var dc = (column == 0 || row_annotations[column - 1] == null) ? "" : row_annotations[column - 1].displayCharacter;
+var diffupstream = sCol == 0 || row_annotations[sCol - 1] == null || !dc.equals (row_annotations[sCol - 1].displayCharacter);
+var diffdownstream = !validRes || !validEnd || row_annotations[column] == null || !dc.equals (row_annotations[column].displayCharacter);
+if (column > 0 && closeparen.search (dc)) {
+if (diffupstream) {
+g.fillPolygon ( Clazz_newIntArray (-1, [lastSSX + 5, lastSSX + 5, lastSSX]),  Clazz_newIntArray (-1, [y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset]), 3);
+x1 += 5;
+}if (diffdownstream) {
+x2 -= 1;
+}} else {
+if (diffdownstream) {
+g.fillPolygon ( Clazz_newIntArray (-1, [x2 - 5, x2 - 5, x2]),  Clazz_newIntArray (-1, [y + iconOffset, y + 14 + iconOffset, y + 8 + iconOffset]), 3);
+x2 -= 5;
+}if (diffupstream) {
+x1 += 1;
+}}g.fillRect (x1, y + 4 + iconOffset, x2 - x1, 7);
+}, "java.awt.Graphics,java.awt.Color,~A,~N,~N,~N,~N,~N,~N,~B,~B");
+Clazz_defineMethod (c$, "updateFromAwtRenderPanel", 
+function (annotPanel, av) {
+this.fm = annotPanel.getFontMetrics ();
+this.annotationPanel = annotPanel;
+this.fadedImage = annotPanel.getFadedImage ();
+this.imgWidth = annotPanel.getFadedImageWidth ();
+var bounds = annotPanel.getVisibleVRange ();
+if (bounds != null) {
+this.sOffset = bounds[0];
+this.visHeight = bounds[1];
+if (this.visHeight == 0) {
+this.useClip = false;
+} else {
+this.useClip = this.canClip;
+}} else {
+this.useClip = false;
+}this.updateFromAlignViewport (av);
+}, "jalview.renderer.AwtRenderPanelI,jalview.api.AlignViewportI");
+Clazz_defineMethod (c$, "updateFromAlignViewport", 
+function (av) {
+this.charWidth = av.getCharWidth ();
+this.endRes = av.getEndRes ();
+this.charHeight = av.getCharHeight ();
+this.hasHiddenColumns = av.hasHiddenColumns ();
+this.validCharWidth = av.isValidCharWidth ();
+this.av_renderHistogram = av.isShowConsensusHistogram ();
+this.av_renderProfile = av.isShowSequenceLogo ();
+this.av_normaliseProfile = av.isNormaliseSequenceLogo ();
+this.profcolour = av.getGlobalColourScheme ();
+if (this.profcolour == null) {
+this.profcolour = av.getAlignment ().isNucleotide () ?  new jalview.schemes.NucleotideColourScheme () :  new jalview.schemes.ZappoColourScheme ();
+}this.columnSelection = av.getColumnSelection ();
+this.hconsensus = av.getSequenceConsensusHash ();
+this.complementConsensus = av.getComplementConsensusHash ();
+this.hStrucConsensus = av.getRnaStructureConsensusHash ();
+this.av_ignoreGapsConsensus = av.isIgnoreGapsConsensus ();
+}, "jalview.api.AlignViewportI");
+Clazz_defineMethod (c$, "getProfileFor", 
+function (aa, column) {
+if (aa.autoCalculated && (aa.label.startsWith ("Consensus") || aa.label.startsWith ("cDNA Consensus"))) {
+var forComplement = aa.label.startsWith ("cDNA Consensus");
+if (aa.groupRef != null && aa.groupRef.consensusData != null && aa.groupRef.isShowSequenceLogo ()) {
+return jalview.analysis.AAFrequency.extractProfile (aa.groupRef.consensusData[column], aa.groupRef.getIgnoreGapsConsensus ());
+}if (aa.groupRef == null && aa.sequenceRef == null) {
+if (forComplement) {
+return jalview.analysis.AAFrequency.extractCdnaProfile (this.complementConsensus[column], this.av_ignoreGapsConsensus);
+} else {
+return jalview.analysis.AAFrequency.extractProfile (this.hconsensus[column], this.av_ignoreGapsConsensus);
+}}} else {
+if (aa.autoCalculated && aa.label.startsWith ("StrucConsensus")) {
+if (aa.groupRef == null && aa.sequenceRef == null && this.hStrucConsensus != null && this.hStrucConsensus.length > column) {
+return jalview.analysis.StructureFrequency.extractProfile (this.hStrucConsensus[column], this.av_ignoreGapsConsensus);
+}}}return null;
+}, "jalview.datamodel.AlignmentAnnotation,~N");
+Clazz_defineMethod (c$, "drawComponent", 
+function (annotPanel, av, g, activeRow, startRes, endRes) {
+var stime = System.currentTimeMillis ();
+var usedFaded = false;
+this.updateFromAwtRenderPanel (annotPanel, av);
+this.fm = g.getFontMetrics ();
+var aa = av.getAlignment ().getAlignmentAnnotation ();
+var temp = 0;
+if (aa == null) {
+return false;
+}var x = 0;
+var y = 0;
+var column = 0;
+var lastSS;
+var lastSSX;
+var iconOffset = 0;
+var validRes = false;
+var validEnd = false;
+var labelAllCols = false;
+var centreColLabels;
+var centreColLabelsDef = av.isCentreColumnLabels ();
+var scaleColLabel = false;
+var consensusAnnot = av.getAlignmentConsensusAnnotation ();
+var structConsensusAnnot = av.getAlignmentStrucConsensusAnnotation ();
+var complementConsensusAnnot = av.getComplementConsensusAnnotation ();
+var renderHistogram = true;
+var renderProfile = true;
+var normaliseProfile = false;
+var isRNA = this.rna;
+var graphGroupDrawn =  new java.util.BitSet ();
+var charOffset = 0;
+var fmWidth;
+var fmScaling = 1;
+var ofont = g.getFont ();
+var yfrom = 0;
+var f_i = 0;
+var yto = 0;
+var f_to = 0;
+var clipst = false;
+var clipend = false;
+for (var i = 0; i < aa.length; i++) {
+var row = aa[i];
+isRNA = row.isRNA ();
+{
+if (row.groupRef != null && row === row.groupRef.getConsensus ()) {
+renderHistogram = row.groupRef.isShowConsensusHistogram ();
+renderProfile = row.groupRef.isShowSequenceLogo ();
+normaliseProfile = row.groupRef.isNormaliseSequenceLogo ();
+} else if (row === consensusAnnot || row === structConsensusAnnot || row === complementConsensusAnnot) {
+renderHistogram = this.av_renderHistogram;
+renderProfile = this.av_renderProfile;
+normaliseProfile = this.av_normaliseProfile;
+} else {
+renderHistogram = true;
+}}var row_annotations = row.annotations;
+if (!row.visible) {
+continue;
+}centreColLabels = row.centreColLabels || centreColLabelsDef;
+labelAllCols = row.showAllColLabels;
+scaleColLabel = row.scaleColLabel;
+lastSS = ' ';
+lastSSX = 0;
+if (!this.useClip || ((y - this.charHeight) < this.visHeight && (y + row.height + this.charHeight * 2) >= this.sOffset)) {
+if (!clipst) {
+clipst = true;
+yfrom = y;
+f_i = i;
+}yto = y;
+f_to = i;
+if (row.graph > 0) {
+if (row.graphGroup > -1 && graphGroupDrawn.get (row.graphGroup)) {
+continue;
+}y += row.height;
+if (row.hasText) {
+iconOffset = this.charHeight - this.fm.getDescent ();
+y -= this.charHeight;
+}} else if (row.hasText) {
+iconOffset = this.charHeight - this.fm.getDescent ();
+} else {
+iconOffset = 0;
+}if (row.autoCalculated && av.isCalculationInProgress (row)) {
+y += this.charHeight;
+usedFaded = true;
+g.drawImage (this.fadedImage, 0, y - row.height, this.imgWidth, y, 0, y - row.height, this.imgWidth, y, this.annotationPanel);
+g.setColor (java.awt.Color.black);
+continue;
+}x = (startRes == 0) ? 0 : -1;
+while (x < endRes - startRes) {
+if (this.hasHiddenColumns) {
+column = this.columnSelection.adjustForHiddenColumns (startRes + x);
+if (column > row_annotations.length - 1) {
+break;
+}} else {
+column = startRes + x;
+}if ((row_annotations == null) || (row_annotations.length <= column) || (row_annotations[column] == null)) {
+validRes = false;
+} else {
+validRes = true;
+}var displayChar = validRes ? row_annotations[column].displayCharacter : null;
+if (x > -1) {
+if (activeRow == i) {
+g.setColor (java.awt.Color.red);
+if (this.columnSelection != null) {
+for (var n = 0; n < this.columnSelection.size (); n++) {
+var v = this.columnSelection.columnAt (n);
+if (v == column) {
+g.fillRect (x * this.charWidth, y, this.charWidth, this.charHeight);
+}}
+}}if (row.getInvalidStrucPos () > x) {
+g.setColor (java.awt.Color.orange);
+g.fillRect (x * this.charWidth, y, this.charWidth, this.charHeight);
+} else if (row.getInvalidStrucPos () == x) {
+g.setColor (java.awt.Color.orange.darker ());
+g.fillRect (x * this.charWidth, y, this.charWidth, this.charHeight);
+}if (this.validCharWidth && validRes && displayChar != null && (displayChar.length > 0)) {
+fmWidth = this.fm.charsWidth (displayChar.toCharArray (), 0, displayChar.length);
+if (scaleColLabel) {
+if (fmWidth > this.charWidth) {
+fmScaling = this.charWidth;
+fmScaling /= fmWidth;
+g.setFont (ofont.deriveFont (java.awt.geom.AffineTransform.getScaleInstance (fmScaling, 1.0)));
+fmWidth = this.charWidth;
+}}charOffset = Clazz_floatToInt ((this.charWidth - fmWidth) / 2);
+if (row_annotations[column].colour == null) {
+g.setColor (java.awt.Color.black);
+} else {
+g.setColor (row_annotations[column].colour);
+}if (column == 0 || row.graph > 0) {
+awt2swing.Util.drawString (g, displayChar, (x * this.charWidth) + charOffset, y + iconOffset);
+} else if (row_annotations[column - 1] == null || (labelAllCols || !displayChar.equals (row_annotations[column - 1].displayCharacter) || (displayChar.length < 2 && row_annotations[column].secondaryStructure == ' '))) {
+awt2swing.Util.drawString (g, displayChar, x * this.charWidth + charOffset, y + iconOffset);
+}g.setFont (ofont);
+}}if (row.hasIcons) {
+var ss = validRes ? row_annotations[column].secondaryStructure : '-';
+if (ss == '(') {
+if (displayChar.indexOf (')') > -1) {
+ss = ')';
+}}if (ss == '[') {
+if ((displayChar.indexOf (']') > -1)) {
+ss = ']';
+}}if (ss == '{') {
+if (displayChar.indexOf ('}') > -1) {
+ss = '}';
+}}if (ss == '<') {
+if (displayChar.indexOf ('<') > -1) {
+ss = '>';
+}}if (ss.charCodeAt (0) >= 65) {
+if (displayChar.indexOf (ss.charCodeAt (0) + 32) > -1) {
+ss = String.fromCharCode (ss.charCodeAt (0) + 32);
+}}if (!validRes || (ss != lastSS)) {
+if (x > -1) {
+var nb_annot = x - temp;
+switch (lastSS) {
+case '(':
+case ')':
+this.drawStemAnnot (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);
+temp = x;
+break;
+case 'H':
+if (!isRNA) {
+this.drawHelixAnnot (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);
+break;
+}case 'E':
+if (!isRNA) {
+this.drawSheetAnnot (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);
+break;
+}case '{':
+case '}':
+case '[':
+case ']':
+case '>':
+case '<':
+case 'A':
+case 'a':
+case 'B':
+case 'b':
+case 'C':
+case 'c':
+case 'D':
+case 'd':
+case 'e':
+case 'F':
+case 'f':
+case 'G':
+case 'g':
+case 'h':
+case 'I':
+case 'i':
+case 'J':
+case 'j':
+case 'K':
+case 'k':
+case 'L':
+case 'l':
+case 'M':
+case 'm':
+case 'N':
+case 'n':
+case 'O':
+case 'o':
+case 'P':
+case 'p':
+case 'Q':
+case 'q':
+case 'R':
+case 'r':
+case 'S':
+case 's':
+case 'T':
+case 't':
+case 'U':
+case 'u':
+case 'V':
+case 'v':
+case 'W':
+case 'w':
+case 'X':
+case 'x':
+case 'Y':
+case 'y':
+case 'Z':
+case 'z':
+var nonCanColor = this.getNotCanonicalColor (lastSS);
+this.drawNotCanonicalAnnot (g, nonCanColor, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);
+temp = x;
+break;
+default:
+g.setColor (java.awt.Color.gray);
+g.fillRect (lastSSX, y + 6 + iconOffset, (x * this.charWidth) - lastSSX, 2);
+temp = x;
+break;
+}
+}if (validRes) {
+lastSS = ss;
+} else {
+lastSS = ' ';
+}if (x > -1) {
+lastSSX = (x * this.charWidth);
+}}}column++;
+x++;
+}
+if (column >= row_annotations.length) {
+column = row_annotations.length - 1;
+validEnd = false;
+} else {
+validEnd = true;
+}if ((row_annotations == null) || (row_annotations.length <= column) || (row_annotations[column] == null)) {
+validRes = false;
+} else {
+validRes = true;
+}if (row.hasIcons) {
+switch (lastSS) {
+case 'H':
+if (!isRNA) {
+this.drawHelixAnnot (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);
+break;
+}case 'E':
+if (!isRNA) {
+this.drawSheetAnnot (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);
+break;
+}case '(':
+case ')':
+this.drawStemAnnot (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);
+break;
+case '{':
+case '}':
+case '[':
+case ']':
+case '>':
+case '<':
+case 'A':
+case 'a':
+case 'B':
+case 'b':
+case 'C':
+case 'c':
+case 'D':
+case 'd':
+case 'e':
+case 'F':
+case 'f':
+case 'G':
+case 'g':
+case 'h':
+case 'I':
+case 'i':
+case 'J':
+case 'j':
+case 'K':
+case 'k':
+case 'L':
+case 'l':
+case 'M':
+case 'm':
+case 'N':
+case 'n':
+case 'O':
+case 'o':
+case 'P':
+case 'p':
+case 'Q':
+case 'q':
+case 'R':
+case 'r':
+case 'T':
+case 't':
+case 'U':
+case 'u':
+case 'V':
+case 'v':
+case 'W':
+case 'w':
+case 'X':
+case 'x':
+case 'Y':
+case 'y':
+case 'Z':
+case 'z':
+var nonCanColor = this.getNotCanonicalColor (lastSS);
+this.drawNotCanonicalAnnot (g, nonCanColor, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);
+break;
+default:
+this.drawGlyphLine (g, row_annotations, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd);
+break;
+}
+}if (row.graph > 0 && row.graphHeight > 0) {
+if (row.graph == 2) {
+if (row.graphGroup > -1 && !graphGroupDrawn.get (row.graphGroup)) {
+var groupmax = -999999;
+var groupmin = 9999999;
+for (var gg = 0; gg < aa.length; gg++) {
+if (aa[gg].graphGroup != row.graphGroup) {
+continue;
+}if (aa[gg] !== row) {
+aa[gg].visible = false;
+}if (aa[gg].graphMax > groupmax) {
+groupmax = aa[gg].graphMax;
+}if (aa[gg].graphMin < groupmin) {
+groupmin = aa[gg].graphMin;
+}}
+for (var gg = 0; gg < aa.length; gg++) {
+if (aa[gg].graphGroup == row.graphGroup) {
+this.drawLineGraph (g, aa[gg], aa[gg].annotations, startRes, endRes, y, groupmin, groupmax, row.graphHeight);
+}}
+graphGroupDrawn.set (row.graphGroup);
+} else {
+this.drawLineGraph (g, row, row_annotations, startRes, endRes, y, row.graphMin, row.graphMax, row.graphHeight);
+}} else if (row.graph == 1) {
+this.drawBarGraph (g, row, row_annotations, startRes, endRes, row.graphMin, row.graphMax, y, renderHistogram, renderProfile, normaliseProfile);
+}}} else {
+if (clipst && !clipend) {
+clipend = true;
+}}if (row.graph > 0 && row.hasText) {
+y += this.charHeight;
+}if (row.graph == 0) {
+y += aa[i].height;
+}}
+if (this.debugRedraw) {
+if (this.canClip) {
+if (clipst) {
+System.err.println ("Start clip at : " + yfrom + " (index " + f_i + ")");
+}if (clipend) {
+System.err.println ("End clip at : " + yto + " (index " + f_to + ")");
+}};System.err.println ("Annotation Rendering time:" + (System.currentTimeMillis () - stime));
+};return !usedFaded;
+}, "jalview.renderer.AwtRenderPanelI,jalview.api.AlignViewportI,java.awt.Graphics,~N,~N,~N");
+Clazz_defineMethod (c$, "drawGlyphLine", 
+function (g, row, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd) {
+g.setColor (jalview.renderer.AnnotationRenderer.GLYPHLINE_COLOR);
+g.fillRect (lastSSX, y + 6 + iconOffset, (x * this.charWidth) - lastSSX, 2);
+}, "java.awt.Graphics,~A,~N,~N,~N,~N,~N,~N,~B,~B");
+Clazz_defineMethod (c$, "drawSheetAnnot", 
+function (g, row, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd) {
+g.setColor (jalview.renderer.AnnotationRenderer.SHEET_COLOUR);
+if (!validEnd || !validRes || row == null || row[column] == null || row[column].secondaryStructure != 'E') {
+g.fillRect (lastSSX, y + 4 + iconOffset, (x * this.charWidth) - lastSSX - 4, 7);
+g.fillPolygon ( Clazz_newIntArray (-1, [(x * this.charWidth) - 4, (x * this.charWidth) - 4, (x * this.charWidth)]),  Clazz_newIntArray (-1, [y + iconOffset, y + 14 + iconOffset, y + 7 + iconOffset]), 3);
+} else {
+g.fillRect (lastSSX, y + 4 + iconOffset, (x + 1) * this.charWidth - lastSSX, 7);
+}}, "java.awt.Graphics,~A,~N,~N,~N,~N,~N,~N,~B,~B");
+Clazz_defineMethod (c$, "drawHelixAnnot", 
+function (g, row, lastSSX, x, y, iconOffset, startRes, column, validRes, validEnd) {
+g.setColor (jalview.renderer.AnnotationRenderer.HELIX_COLOUR);
+var sCol = (Clazz_doubleToInt (lastSSX / this.charWidth)) + startRes;
+var x1 = lastSSX;
+var x2 = (x * this.charWidth);
+if (this.MAC) {
+var ofs = Clazz_doubleToInt (this.charWidth / 2);
+g.fillRoundRect (lastSSX, y + 4 + iconOffset, x2 - x1, 8, 8, 8);
+if (sCol == 0 || row[sCol - 1] == null || row[sCol - 1].secondaryStructure != 'H') {
+} else {
+g.fillRoundRect (lastSSX, y + 4 + iconOffset, x2 - x1 - ofs + 1, 8, 0, 0);
+}if (!validRes || row[column] == null || row[column].secondaryStructure != 'H') {
+} else {
+g.fillRoundRect (lastSSX + ofs, y + 4 + iconOffset, x2 - x1 - ofs + 1, 8, 0, 0);
+}return;
+}if (sCol == 0 || row[sCol - 1] == null || row[sCol - 1].secondaryStructure != 'H') {
+g.fillArc (lastSSX, y + 4 + iconOffset, this.charWidth, 8, 90, 180);
+x1 += Clazz_doubleToInt (this.charWidth / 2);
+}if (!validRes || row[column] == null || row[column].secondaryStructure != 'H') {
+g.fillArc ((x * this.charWidth) - this.charWidth, y + 4 + iconOffset, this.charWidth, 8, 270, 180);
+x2 -= Clazz_doubleToInt (this.charWidth / 2);
+}g.fillRect (x1, y + 4 + iconOffset, x2 - x1, 8);
+}, "java.awt.Graphics,~A,~N,~N,~N,~N,~N,~N,~B,~B");
+Clazz_defineMethod (c$, "drawLineGraph", 
+function (g, _aa, aa_annotations, sRes, eRes, y, min, max, graphHeight) {
+if (sRes > aa_annotations.length) {
+return;
+}var x = 0;
+if (eRes < this.endRes) {
+eRes++;
+}eRes = Math.min (eRes, aa_annotations.length);
+if (sRes == 0) {
+x++;
+}var y1 = y;
+var y2 = y;
+var range = max - min;
+if (min < 0) {
+y2 = y - Clazz_floatToInt ((0 - min / range) * graphHeight);
+}g.setColor (java.awt.Color.gray);
+g.drawLine (x - this.charWidth, y2, (eRes - sRes + 1) * this.charWidth, y2);
+eRes = Math.min (eRes, aa_annotations.length);
+var column;
+var aaMax = aa_annotations.length - 1;
+while (x < eRes - sRes) {
+column = sRes + x;
+if (this.hasHiddenColumns) {
+column = this.columnSelection.adjustForHiddenColumns (column);
+}if (column > aaMax) {
+break;
+}if (aa_annotations[column] == null || aa_annotations[column - 1] == null) {
+x++;
+continue;
+}if (aa_annotations[column].colour == null) {
+g.setColor (java.awt.Color.black);
+} else {
+g.setColor (aa_annotations[column].colour);
+}y1 = y - Clazz_floatToInt (((aa_annotations[column - 1].value - min) / range) * graphHeight);
+y2 = y - Clazz_floatToInt (((aa_annotations[column].value - min) / range) * graphHeight);
+g.drawLine (x * this.charWidth - Clazz_doubleToInt (this.charWidth / 2), y1, x * this.charWidth + Clazz_doubleToInt (this.charWidth / 2), y2);
+x++;
+}
+if (_aa.threshold != null) {
+g.setColor (_aa.threshold.colour);
+var g2 = g;
+g2.setStroke ( new java.awt.BasicStroke (1, 2, 1, 3,  Clazz_newFloatArray (-1, [5, 3]), 0));
+y2 = Clazz_floatToInt (y - ((_aa.threshold.value - min) / range) * graphHeight);
+g.drawLine (0, y2, (eRes - sRes) * this.charWidth, y2);
+g2.setStroke ( new java.awt.BasicStroke ());
+}}, "java.awt.Graphics,jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~N,~N,~N,~N");
+Clazz_defineMethod (c$, "drawBarGraph", 
+function (g, _aa, aa_annotations, sRes, eRes, min, max, y, renderHistogram, renderProfile, normaliseProfile) {
+if (sRes > aa_annotations.length) {
+return;
+}var ofont = g.getFont ();
+eRes = Math.min (eRes, aa_annotations.length);
+var x = 0;
+var y1 = y;
+var y2 = y;
+var range = max - min;
+if (min < 0) {
+y2 = y - Clazz_floatToInt ((0 - min / (range)) * _aa.graphHeight);
+}g.setColor (java.awt.Color.gray);
+g.drawLine (x, y2, (eRes - sRes) * this.charWidth, y2);
+var column;
+var aaMax = aa_annotations.length - 1;
+while (x < eRes - sRes) {
+column = sRes + x;
+if (this.hasHiddenColumns) {
+column = this.columnSelection.adjustForHiddenColumns (column);
+}if (column > aaMax) {
+break;
+}if (aa_annotations[column] == null) {
+x++;
+continue;
+}if (aa_annotations[column].colour == null) {
+g.setColor (java.awt.Color.black);
+} else {
+g.setColor (aa_annotations[column].colour);
+}y1 = y - Clazz_floatToInt (((aa_annotations[column].value - min) / (range)) * _aa.graphHeight);
+if (renderHistogram) {
+if (y1 - y2 > 0) {
+g.fillRect (x * this.charWidth, y2, this.charWidth, y1 - y2);
+} else {
+g.fillRect (x * this.charWidth, y1, this.charWidth, y2 - y1);
+}}if (renderProfile) {
+var profl = this.getProfileFor (_aa, column);
+if (profl != null && profl[2] != 0) {
+var isStructureProfile = profl[0] == 1;
+var isCdnaProfile = profl[0] == 2;
+var ht = normaliseProfile ? y - _aa.graphHeight : y1;
+var htn = normaliseProfile ? _aa.graphHeight : (y2 - y1);
+var hght;
+var wdth;
+var ht2 = 0;
+var dc;
+dc =  Clazz_newCharArray (isStructureProfile ? 2 : (isCdnaProfile ? 3 : 1), '\0');
+var lm = g.getFontMetrics (ofont).getLineMetrics ("Q", g);
+var scale = 1 / (normaliseProfile ? profl[2] : 100);
+var ofontHeight = 1 / lm.getAscent ();
+var scl = 0.0;
+var c = 3;
+var valuesProcessed = 0;
+while (valuesProcessed < profl[1]) {
+if (isStructureProfile) {
+dc[0] = String.fromCharCode (profl[c++]);
+dc[1] = String.fromCharCode (profl[c++]);
+} else if (isCdnaProfile) {
+dc = jalview.analysis.CodingUtils.decodeCodon (profl[c++]);
+} else {
+dc[0] = String.fromCharCode (profl[c++]);
+}wdth = this.charWidth;
+wdth /= this.fm.charsWidth (dc, 0, dc.length);
+ht += scl;
+scl = htn * scale * profl[c++];
+lm = ofont.getLineMetrics (dc, 0, 1, g.getFontMetrics ().getFontRenderContext ());
+g.setFont (ofont.deriveFont (java.awt.geom.AffineTransform.getScaleInstance (wdth, scl / lm.getAscent ())));
+lm = g.getFontMetrics ().getLineMetrics (dc, 0, 1, g);
+var colour = null;
+if (isCdnaProfile) {
+var codonTranslation = jalview.schemes.ResidueProperties.codonTranslate ( String.instantialize (dc));
+colour = this.profcolour.findColourSeq (codonTranslation.charAt (0), column, null);
+} else {
+colour = this.profcolour.findColourSeq (dc[0], column, null);
+}g.setColor (colour === java.awt.Color.white ? java.awt.Color.lightGray : colour);
+hght = (ht + (scl - lm.getDescent () - lm.getBaselineOffsets ()[lm.getBaselineIndex ()]));
+g.drawChars (dc, 0, dc.length, x * this.charWidth, Clazz_doubleToInt (hght));
+valuesProcessed++;
+}
+g.setFont (ofont);
+}}x++;
+}
+if (_aa.threshold != null) {
+g.setColor (_aa.threshold.colour);
+var g2 = g;
+g2.setStroke ( new java.awt.BasicStroke (1, 2, 1, 3,  Clazz_newFloatArray (-1, [5, 3]), 0));
+y2 = Clazz_floatToInt (y - ((_aa.threshold.value - min) / range) * _aa.graphHeight);
+g.drawLine (0, y2, (eRes - sRes) * this.charWidth, y2);
+g2.setStroke ( new java.awt.BasicStroke ());
+}}, "java.awt.Graphics,jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~N,~N,~N,~B,~B,~B");
+Clazz_defineMethod (c$, "drawGraph", 
+function (g, _aa, aa_annotations, width, y, sRes, eRes) {
+eRes = Math.min (eRes, aa_annotations.length);
+g.setColor (java.awt.Color.white);
+g.fillRect (0, 0, width, y);
+g.setColor ( new java.awt.Color (0, 0, 180));
+var x = 0;
+var height;
+for (var j = sRes; j < eRes; j++) {
+if (aa_annotations[j] != null) {
+if (aa_annotations[j].colour == null) {
+g.setColor (java.awt.Color.black);
+} else {
+g.setColor (aa_annotations[j].colour);
+}height = Clazz_floatToInt ((aa_annotations[j].value / _aa.graphMax) * y);
+if (height > y) {
+height = y;
+}g.fillRect (x, y - height, this.charWidth, height);
+}x += this.charWidth;
+}
+}, "java.awt.Graphics,jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~N,~N");
+Clazz_defineMethod (c$, "getNotCanonicalColor", 
+function (lastss) {
+switch (lastss) {
+case '{':
+case '}':
+return  new java.awt.Color (255, 125, 5);
+case '[':
+case ']':
+return  new java.awt.Color (245, 115, 10);
+case '>':
+case '<':
+return  new java.awt.Color (235, 135, 15);
+case 'A':
+case 'a':
+return  new java.awt.Color (225, 105, 20);
+case 'B':
+case 'b':
+return  new java.awt.Color (215, 145, 30);
+case 'C':
+case 'c':
+return  new java.awt.Color (205, 95, 35);
+case 'D':
+case 'd':
+return  new java.awt.Color (195, 155, 45);
+case 'E':
+case 'e':
+return  new java.awt.Color (185, 85, 55);
+case 'F':
+case 'f':
+return  new java.awt.Color (175, 165, 65);
+case 'G':
+case 'g':
+return  new java.awt.Color (170, 75, 75);
+case 'H':
+case 'h':
+return  new java.awt.Color (160, 175, 85);
+case 'I':
+case 'i':
+return  new java.awt.Color (150, 65, 95);
+case 'J':
+case 'j':
+return  new java.awt.Color (140, 185, 105);
+case 'K':
+case 'k':
+return  new java.awt.Color (130, 55, 110);
+case 'L':
+case 'l':
+return  new java.awt.Color (120, 195, 120);
+case 'M':
+case 'm':
+return  new java.awt.Color (110, 45, 130);
+case 'N':
+case 'n':
+return  new java.awt.Color (100, 205, 140);
+case 'O':
+case 'o':
+return  new java.awt.Color (90, 35, 150);
+case 'P':
+case 'p':
+return  new java.awt.Color (85, 215, 160);
+case 'Q':
+case 'q':
+return  new java.awt.Color (75, 25, 170);
+case 'R':
+case 'r':
+return  new java.awt.Color (65, 225, 180);
+case 'S':
+case 's':
+return  new java.awt.Color (55, 15, 185);
+case 'T':
+case 't':
+return  new java.awt.Color (45, 235, 195);
+case 'U':
+case 'u':
+return  new java.awt.Color (35, 5, 205);
+case 'V':
+case 'v':
+return  new java.awt.Color (25, 245, 215);
+case 'W':
+case 'w':
+return  new java.awt.Color (15, 0, 225);
+case 'X':
+case 'x':
+return  new java.awt.Color (10, 255, 235);
+case 'Y':
+case 'y':
+return  new java.awt.Color (5, 150, 245);
+case 'Z':
+case 'z':
+return  new java.awt.Color (0, 80, 255);
+default:
+System.out.println ("This is not a interaction : " + lastss);
+return null;
+}
+}, "~S");
+c$.GLYPHLINE_COLOR = c$.prototype.GLYPHLINE_COLOR = java.awt.Color.gray;
+c$.SHEET_COLOUR = c$.prototype.SHEET_COLOUR = java.awt.Color.green;
+c$.HELIX_COLOUR = c$.prototype.HELIX_COLOUR = java.awt.Color.red;
+c$.STEM_COLOUR = c$.prototype.STEM_COLOUR = java.awt.Color.blue;
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.ItemListener", "$.MouseListener", "awt2swing.Checkbox", "$.Choice", "$.Scrollbar", "$.TextField"], "jalview.appletgui.FeatureColourChooser", ["awt2swing.Label", "jalview.appletgui.JVDialog", "$.PaintRefresher", "$.UserDefinedColours", "jalview.datamodel.GraphLine", "jalview.schemes.GraduatedColor", "jalview.util.MessageManager", "java.awt.Color", "$.Dimension", "$.FlowLayout", "$.Font", "$.GridLayout", "java.awt.event.ActionEvent", "java.lang.Float"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.frame = null;
+this.owner = null;
+this.fr = null;
+this.fs = null;
+this.cs = null;
+this.oldcs = null;
+this.oldgroupColours = null;
+this.adjusting = false;
+this.min = 0;
+this.max = 0;
+this.type = null;
+this.af = null;
+this.minColour = null;
+this.maxColour = null;
+this.jPanel1 = null;
+this.jPanel2 = null;
+this.threshold = null;
+this.jPanel3 = null;
+this.jPanel4 = null;
+this.slider = null;
+this.thresholdValue = null;
+this.thresholdIsMin = null;
+this.colourFromLabel = null;
+this.threshline = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "FeatureColourChooser", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.ItemListener, java.awt.event.MouseListener]);
+Clazz_prepareFields (c$, function () {
+this.minColour =  new awt2swing.Panel ();
+this.maxColour =  new awt2swing.Panel ();
+this.jPanel1 =  new awt2swing.Panel ();
+this.jPanel2 =  new awt2swing.Panel ();
+this.threshold =  new awt2swing.Choice ();
+this.jPanel3 =  new awt2swing.Panel ();
+this.jPanel4 =  new awt2swing.Panel ();
+this.slider =  new awt2swing.Scrollbar (0);
+this.thresholdValue =  new awt2swing.TextField (20);
+this.thresholdIsMin =  new awt2swing.Checkbox ();
+this.colourFromLabel =  new awt2swing.Checkbox ();
+});
+Clazz_makeConstructor (c$, 
+function (af, type) {
+Clazz_superConstructor (this, jalview.appletgui.FeatureColourChooser, []);
+this.af = af;
+this.init (af.getSeqcanvas ().getFeatureRenderer (), type);
+}, "jalview.appletgui.AlignFrame,~S");
+Clazz_makeConstructor (c$, 
+function (fsettings, type) {
+Clazz_superConstructor (this, jalview.appletgui.FeatureColourChooser, []);
+this.fs = fsettings;
+this.init (fsettings.fr, type);
+}, "jalview.appletgui.FeatureSettings,~S");
+Clazz_defineMethod (c$, "init", 
+ function (frenderer, type) {
+this.type = type;
+this.fr = frenderer;
+var mm = (this.fr.getMinMax ().get (type))[0];
+this.min = mm[0];
+this.max = mm[1];
+this.oldcs = this.fr.getFeatureColours ().get (type);
+if (Clazz_instanceOf (this.oldcs, jalview.schemes.GraduatedColor)) {
+this.cs =  new jalview.schemes.GraduatedColor (this.oldcs, this.min, this.max);
+} else {
+var bl = java.awt.Color.black;
+if (Clazz_instanceOf (this.oldcs, java.awt.Color)) {
+bl = this.oldcs;
+}this.cs =  new jalview.schemes.GraduatedColor (java.awt.Color.white, bl, mm[0], mm[1]);
+}this.minColour.setBackground (this.cs.getMinColor ());
+this.maxColour.setBackground (this.cs.getMaxColor ());
+this.minColour.setForeground (this.cs.getMinColor ());
+this.maxColour.setForeground (this.cs.getMaxColor ());
+this.colourFromLabel.setState (this.cs.isColourByLabel ());
+this.adjusting = true;
+try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+this.threshold.select (new Integer (this.cs.getThreshType () == -1 ? 0 : this.cs.getThreshType () == 1 ? 1 : 2));
+this.adjusting = false;
+this.changeColour ();
+this.colourFromLabel.addItemListener (this);
+this.slider.addAdjustmentListener (this);
+this.slider.addMouseListener (this);
+this.owner = (this.af != null) ? this.af : this.fs.frame;
+this.frame =  new jalview.appletgui.JVDialog (this.owner, jalview.util.MessageManager.formatMessage ("label.graduated_color_for_params",  Clazz_newArray (-1, [type])), true, 480, 248);
+this.frame.setMainPanel (this);
+this.validate ();
+this.frame.setVisible (true);
+if (this.frame.accept) {
+this.changeColour ();
+} else {
+this.reset ();
+jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
+this.frame.setVisible (false);
+}}, "jalview.appletgui.FeatureRenderer,~S");
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.appletgui.FeatureColourChooser, []);
+try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+});
+Clazz_defineMethod (c$, "jbInit", 
+ function () {
+var minLabel =  new awt2swing.Label (jalview.util.MessageManager.getString ("label.min"));
+var maxLabel =  new awt2swing.Label (jalview.util.MessageManager.getString ("label.max"));
+minLabel.setFont ( new java.awt.Font ("Verdana", 0, 11));
+maxLabel.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.minColour.setBounds (0, 0, 40, 27);
+this.maxColour.setBounds (0, 0, 40, 27);
+this.minColour.addMouseListener (this);
+this.maxColour.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.maxColour.addMouseListener (this);
+this.thresholdIsMin.addItemListener (this);
+this.setLayout ( new java.awt.GridLayout (4, 1));
+this.jPanel1.setLayout ( new java.awt.FlowLayout ());
+this.jPanel2.setLayout ( new java.awt.FlowLayout ());
+this.jPanel3.setLayout ( new java.awt.GridLayout (1, 1));
+this.jPanel4.setLayout ( new java.awt.FlowLayout ());
+this.jPanel1.setBackground (java.awt.Color.white);
+this.jPanel2.setBackground (java.awt.Color.white);
+this.jPanel4.setBackground (java.awt.Color.white);
+this.threshold.addItemListener (this);
+this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_no_thereshold"));
+this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_above_thereshold"));
+this.threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_below_thereshold"));
+this.thresholdValue.addActionListener (this);
+this.slider.setBackground (java.awt.Color.white);
+this.slider.setEnabled (false);
+this.slider.setSize ( new java.awt.Dimension (93, 21));
+this.thresholdValue.setEnabled (false);
+this.thresholdValue.setSize ( new java.awt.Dimension (79, 22));
+this.thresholdValue.setColumns (5);
+this.jPanel3.setBackground (java.awt.Color.white);
+this.colourFromLabel.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.colourFromLabel.setLabel (jalview.util.MessageManager.getString ("label.colour_by_label"));
+this.colourFromLabel.setSize ( new java.awt.Dimension (139, 22));
+this.thresholdIsMin.setBackground (java.awt.Color.white);
+this.thresholdIsMin.setLabel (jalview.util.MessageManager.getString ("label.threshold_minmax"));
+this.thresholdIsMin.setSize ( new java.awt.Dimension (135, 23));
+this.jPanel1.add (minLabel);
+this.jPanel1.add (this.minColour);
+this.jPanel1.add (maxLabel);
+this.jPanel1.add (this.maxColour);
+this.jPanel1.add (this.colourFromLabel);
+this.jPanel2.add (this.threshold);
+this.jPanel3.add (this.slider);
+this.jPanel4.add (this.thresholdValue);
+this.jPanel4.add (this.thresholdIsMin);
+this.add (this.jPanel1);
+this.add (this.jPanel2);
+this.add (this.jPanel3);
+this.add (this.jPanel4);
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.thresholdValue) {
+try {
+var f =  new Float (this.thresholdValue.getText ()).floatValue ();
+this.slider.setValue (Clazz_floatToInt (f * 1000));
+this.adjustmentValueChanged (null);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+} else if (evt.getSource () === this.minColour) {
+this.minColour_actionPerformed (null);
+} else if (evt.getSource () === this.maxColour) {
+this.maxColour_actionPerformed (null);
+} else {
+this.changeColour ();
+}}, "java.awt.event.ActionEvent");
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (evt) {
+this.maxColour.setEnabled (!this.colourFromLabel.getState ());
+this.minColour.setEnabled (!this.colourFromLabel.getState ());
+this.changeColour ();
+}, "java.awt.event.ItemEvent");
+Clazz_overrideMethod (c$, "adjustmentValueChanged", 
+function (evt) {
+if (!this.adjusting) {
+this.thresholdValue.setText ((this.slider.getValue () / 1000) + "");
+this.valueChanged ();
+}}, "java.awt.event.AdjustmentEvent");
+Clazz_defineMethod (c$, "valueChanged", 
+function () {
+this.threshline.value = this.slider.getValue () / 1000;
+this.cs.setThresh (this.threshline.value);
+this.changeColour ();
+jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
+});
+Clazz_defineMethod (c$, "minColour_actionPerformed", 
+function (newCol) {
+if (newCol == null) {
+var udc =  new jalview.appletgui.UserDefinedColours (this, this.minColour.getBackground (), this.owner, jalview.util.MessageManager.getString ("label.select_colour_minimum_value"));
+} else {
+this.minColour.setBackground (newCol);
+this.minColour.setForeground (newCol);
+this.minColour.repaint ();
+this.changeColour ();
+}}, "java.awt.Color");
+Clazz_defineMethod (c$, "maxColour_actionPerformed", 
+function (newCol) {
+if (newCol == null) {
+var udc =  new jalview.appletgui.UserDefinedColours (this, this.maxColour.getBackground (), this.owner, jalview.util.MessageManager.getString ("label.select_colour_maximum_value"));
+} else {
+this.maxColour.setBackground (newCol);
+this.maxColour.setForeground (newCol);
+this.maxColour.repaint ();
+this.changeColour ();
+}}, "java.awt.Color");
+Clazz_defineMethod (c$, "changeColour", 
+function () {
+if (this.adjusting) {
+return;
+}var aboveThreshold = -1;
+if (this.threshold.getSelectedIndex () == 1) {
+aboveThreshold = 1;
+} else if (this.threshold.getSelectedIndex () == 2) {
+aboveThreshold = 0;
+}this.slider.setEnabled (true);
+this.thresholdValue.setEnabled (true);
+var acg =  new jalview.schemes.GraduatedColor (this.minColour.getBackground (), this.maxColour.getBackground (), this.min, this.max);
+acg.setColourByLabel (this.colourFromLabel.getState ());
+this.maxColour.setEnabled (!this.colourFromLabel.getState ());
+this.minColour.setEnabled (!this.colourFromLabel.getState ());
+if (aboveThreshold == -1) {
+this.slider.setEnabled (false);
+this.thresholdValue.setEnabled (false);
+this.thresholdValue.setText ("");
+} else if (aboveThreshold != -1 && this.threshline == null) {
+this.threshline =  new jalview.datamodel.GraphLine ((this.max - this.min) / 2, "Threshold", java.awt.Color.black);
+}if (aboveThreshold != -1) {
+this.adjusting = true;
+acg.setThresh (this.threshline.value);
+var range = this.max * 1000 - this.min * 1000;
+this.slider.setMinimum (Clazz_floatToInt (this.min * 1000));
+this.slider.setMaximum (Clazz_floatToInt (this.max * 1000));
+this.slider.setValue (Clazz_floatToInt (this.threshline.value * 1000));
+this.thresholdValue.setText (this.threshline.value + "");
+this.slider.setEnabled (true);
+this.thresholdValue.setEnabled (true);
+this.adjusting = false;
+}acg.setThreshType (aboveThreshold);
+if (this.thresholdIsMin.getState () && aboveThreshold != -1) {
+if (aboveThreshold == 1) {
+acg =  new jalview.schemes.GraduatedColor (acg, this.threshline.value, this.max);
+} else {
+acg =  new jalview.schemes.GraduatedColor (acg, this.min, this.threshline.value);
+}}this.fr.setColour (this.type, acg);
+this.cs = acg;
+jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
+});
+Clazz_defineMethod (c$, "reset", 
+function () {
+this.fr.setColour (this.type, this.oldcs);
+jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
+});
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mousePressed", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (evt) {
+if (evt.getSource () === this.minColour || evt.getSource () === this.maxColour) {
+this.actionPerformed ( new java.awt.event.ActionEvent (evt.getSource (), 1, "Clicked"));
+} else {
+jalview.appletgui.PaintRefresher.Refresh (this, this.fr.getViewport ().getSequenceSetId ());
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (null, "jalview.schemes.GraduatedColor", ["jalview.schemes.UserColourScheme", "java.awt.Color", "java.lang.Float"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.thresholdState = -1;
+this.lr = 0;
+this.lg = 0;
+this.lb = 0;
+this.dr = 0;
+this.dg = 0;
+this.db = 0;
+this.base = 0;
+this.range = 0;
+this.thrsh = 0;
+this.tolow = false;
+this.autoScale = true;
+this.ucs = null;
+this.colourByLabel = false;
+Clazz_instantialize (this, arguments);
+}, jalview.schemes, "GraduatedColor");
+Clazz_makeConstructor (c$, 
+function (low, high, min, max) {
+this.thrsh = NaN;
+this.tolow = min >= max;
+this.lr = low.getRed () / 255;
+this.lg = low.getGreen () / 255;
+this.lb = low.getBlue () / 255;
+this.dr = (high.getRed () / 255) - this.lr;
+this.dg = (high.getGreen () / 255) - this.lg;
+this.db = (high.getBlue () / 255) - this.lb;
+if (this.tolow) {
+this.base = max;
+this.range = min - max;
+} else {
+this.base = min;
+this.range = max - min;
+}}, "java.awt.Color,java.awt.Color,~N,~N");
+Clazz_makeConstructor (c$, 
+function (oldcs) {
+this.lr = oldcs.lr;
+this.lg = oldcs.lg;
+this.lb = oldcs.lb;
+this.dr = oldcs.dr;
+this.dg = oldcs.dg;
+this.db = oldcs.db;
+this.base = oldcs.base;
+this.range = oldcs.range;
+this.tolow = oldcs.tolow;
+this.thresholdState = oldcs.thresholdState;
+this.thrsh = oldcs.thrsh;
+this.autoScale = oldcs.autoScale;
+this.colourByLabel = oldcs.colourByLabel;
+}, "jalview.schemes.GraduatedColor");
+Clazz_makeConstructor (c$, 
+function (oldcs, min, max) {
+this.construct (oldcs);
+this.updateBounds (min, max);
+}, "jalview.schemes.GraduatedColor,~N,~N");
+Clazz_defineMethod (c$, "getMinColor", 
+function () {
+return  new java.awt.Color (this.lr, this.lg, this.lb);
+});
+Clazz_defineMethod (c$, "getMaxColor", 
+function () {
+return  new java.awt.Color (this.lr + this.dr, this.lg + this.dg, this.lb + this.db);
+});
+Clazz_defineMethod (c$, "getTolow", 
+function () {
+return this.tolow;
+});
+Clazz_defineMethod (c$, "setTolow", 
+function (tolower) {
+this.tolow = tolower;
+}, "~B");
+Clazz_defineMethod (c$, "isColored", 
+function (feature) {
+var val = feature.getScore ();
+if (Float.isNaN (val)) {
+return true;
+}if (this.thresholdState == -1) {
+return true;
+}if (Float.isNaN (this.thrsh)) {
+return true;
+}var rtn = this.thresholdState == 1;
+if (val <= this.thrsh) {
+return !rtn;
+} else {
+return rtn;
+}}, "jalview.datamodel.SequenceFeature");
+Clazz_defineMethod (c$, "isColourByLabel", 
+function () {
+return this.colourByLabel;
+});
+Clazz_defineMethod (c$, "setColourByLabel", 
+function (colourByLabel) {
+this.colourByLabel = colourByLabel;
+}, "~B");
+Clazz_defineMethod (c$, "findColor", 
+function (feature) {
+if (this.colourByLabel) {
+if (this.ucs == null) {
+this.ucs =  new jalview.schemes.UserColourScheme ();
+}return this.ucs.createColourFromName (feature.getDescription ());
+}if (this.range == 0.0) {
+return this.getMaxColor ();
+}var scr = feature.getScore ();
+if (Float.isNaN (scr)) {
+return this.getMinColor ();
+}var scl = (scr - this.base) / this.range;
+if (this.tolow) {
+scl = -scl;
+}if (scl < 0) {
+scl = 0;
+}if (scl > 1) {
+scl = 1;
+}return  new java.awt.Color (this.lr + scl * this.dr, this.lg + scl * this.dg, this.lb + scl * this.db);
+}, "jalview.datamodel.SequenceFeature");
+Clazz_defineMethod (c$, "setThresh", 
+function (value) {
+this.thrsh = value;
+}, "~N");
+Clazz_defineMethod (c$, "getThresh", 
+function () {
+return this.thrsh;
+});
+Clazz_defineMethod (c$, "setThreshType", 
+function (aboveThreshold) {
+this.thresholdState = aboveThreshold;
+}, "~N");
+Clazz_defineMethod (c$, "getThreshType", 
+function () {
+return this.thresholdState;
+});
+Clazz_defineMethod (c$, "getMax", 
+function () {
+return (this.tolow) ? this.base : (this.base + this.range);
+});
+Clazz_defineMethod (c$, "getMin", 
+function () {
+return (this.tolow) ? (this.base + this.range) : this.base;
+});
+Clazz_defineMethod (c$, "isAutoScale", 
+function () {
+return this.autoScale;
+});
+Clazz_defineMethod (c$, "setAutoScaled", 
+function (autoscale) {
+this.autoScale = autoscale;
+}, "~B");
+Clazz_defineMethod (c$, "updateBounds", 
+function (min, max) {
+if (max < min) {
+this.base = max;
+this.range = min - max;
+this.tolow = true;
+} else {
+this.base = min;
+this.range = max - min;
+this.tolow = false;
+}}, "~N,~N");
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "jalview.renderer.seqfeatures.FeatureRenderer"], "jalview.appletgui.FeatureRenderer", ["awt2swing.Button", "$.Choice", "$.Label", "$.ScrollPane", "$.TextArea", "$.TextField", "$.Util", "jalview.appletgui.FeatureColourChooser", "$.JVDialog", "$.UserDefinedColours", "jalview.datamodel.SearchResults", "jalview.io.FeaturesFile", "jalview.schemes.GraduatedColor", "$.UserColourScheme", "jalview.util.MessageManager", "java.awt.BorderLayout", "$.Color", "$.Font", "$.GridLayout", "java.awt.event.ActionListener", "$.ItemListener", "$.MouseAdapter", "java.lang.Error"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.featureLinks = null;
+this.featureIndex = 0;
+this.deleteFeature = false;
+this.colourPanel = null;
+if (!Clazz_isClassDefined ("jalview.appletgui.FeatureRenderer.FeatureColourPanel")) {
+jalview.appletgui.FeatureRenderer.$FeatureRenderer$FeatureColourPanel$ ();
+}
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "FeatureRenderer", jalview.renderer.seqfeatures.FeatureRenderer);
+Clazz_makeConstructor (c$, 
+function (av) {
+Clazz_superConstructor (this, jalview.appletgui.FeatureRenderer);
+this.av = av;
+this.setTransparencyAvailable (!System.getProperty ("java.version").startsWith ("1.1"));
+}, "jalview.viewmodel.AlignmentViewport");
+Clazz_defineMethod (c$, "amendFeatures", 
+function (sequences, features, newFeatures, ap) {
+var bigPanel =  new awt2swing.Panel ( new java.awt.BorderLayout ());
+var name =  new awt2swing.TextField (16);
+var source =  new awt2swing.TextField (16);
+var description =  new awt2swing.TextArea (3, 35);
+var start =  new awt2swing.TextField (8);
+var end =  new awt2swing.TextField (8);
+var overlaps;
+var deleteButton =  new awt2swing.Button ("Delete");
+this.deleteFeature = false;
+this.colourPanel = Clazz_innerTypeInstance (jalview.appletgui.FeatureRenderer.FeatureColourPanel, this, null);
+this.colourPanel.setSize (110, 15);
+var fr = this;
+var panel =  new awt2swing.Panel ( new java.awt.GridLayout (3, 1));
+this.featureIndex = 0;
+var tmp;
+if (!newFeatures && features.length > 1) {
+panel =  new awt2swing.Panel ( new java.awt.GridLayout (4, 1));
+tmp =  new awt2swing.Panel ();
+tmp.add ( new awt2swing.Label ("Select Feature: "));
+overlaps =  new awt2swing.Choice ();
+for (var i = 0; i < features.length; i++) {
+var item = features[i].getType () + "/" + features[i].getBegin () + "-" + features[i].getEnd ();
+if (features[i].getFeatureGroup () != null) {
+item += " (" + features[i].getFeatureGroup () + ")";
+}overlaps.addItem (item);
+}
+tmp.add (overlaps);
+overlaps.addItemListener (((Clazz_isClassDefined ("jalview.appletgui.FeatureRenderer$1") ? 0 : jalview.appletgui.FeatureRenderer.$FeatureRenderer$1$ ()), Clazz_innerTypeInstance (jalview.appletgui.FeatureRenderer$1, this, Clazz_cloneFinals ("overlaps", overlaps, "name", name, "features", features, "description", description, "source", source, "start", start, "end", end, "sequences", sequences, "ap", ap))));
+panel.add (tmp);
+}tmp =  new awt2swing.Panel ();
+panel.add (tmp);
+tmp.add ( new awt2swing.Label ("Name: ", 4));
+tmp.add (name);
+tmp =  new awt2swing.Panel ();
+panel.add (tmp);
+tmp.add ( new awt2swing.Label ("Group: ", 4));
+tmp.add (source);
+tmp =  new awt2swing.Panel ();
+panel.add (tmp);
+tmp.add ( new awt2swing.Label ("Colour: ", 4));
+tmp.add (this.colourPanel);
+bigPanel.add (panel, "North");
+panel =  new awt2swing.Panel ();
+panel.add ( new awt2swing.Label ("Description: ", 4));
+panel.add ( new awt2swing.ScrollPane ().add (description));
+if (!newFeatures) {
+bigPanel.add (panel, "South");
+panel =  new awt2swing.Panel ();
+panel.add ( new awt2swing.Label (" Start:", 4));
+panel.add (start);
+panel.add ( new awt2swing.Label ("  End:", 4));
+panel.add (end);
+bigPanel.add (panel, "Center");
+} else {
+bigPanel.add (panel, "Center");
+}if (jalview.appletgui.FeatureRenderer.lastFeatureAdded == null) {
+if (features[0].type != null) {
+jalview.appletgui.FeatureRenderer.lastFeatureAdded = features[0].type;
+} else {
+jalview.appletgui.FeatureRenderer.lastFeatureAdded = "feature_1";
+}}if (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded == null) {
+if (features[0].featureGroup != null) {
+jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded = features[0].featureGroup;
+} else {
+jalview.appletgui.FeatureRenderer.lastFeatureAdded = "Jalview";
+}}var title = newFeatures ? jalview.util.MessageManager.getString ("label.create_new_sequence_features") : jalview.util.MessageManager.formatMessage ("label.amend_delete_features",  Clazz_newArray (-1, [sequences[0].getName ()]));
+var dialog =  new jalview.appletgui.JVDialog (ap.alignFrame, title, true, 385, 240);
+dialog.setMainPanel (bigPanel);
+if (newFeatures) {
+name.setText (jalview.appletgui.FeatureRenderer.lastFeatureAdded);
+source.setText (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded);
+} else {
+dialog.ok.setLabel (jalview.util.MessageManager.getString ("label.amend"));
+dialog.buttonPanel.add (deleteButton, 1);
+deleteButton.addActionListener (((Clazz_isClassDefined ("jalview.appletgui.FeatureRenderer$2") ? 0 : jalview.appletgui.FeatureRenderer.$FeatureRenderer$2$ ()), Clazz_innerTypeInstance (jalview.appletgui.FeatureRenderer$2, this, Clazz_cloneFinals ("dialog", dialog))));
+name.setText (features[0].getType ());
+source.setText (features[0].getFeatureGroup ());
+}start.setText (features[0].getBegin () + "");
+end.setText (features[0].getEnd () + "");
+description.setText (features[0].getDescription ());
+var col = this.getColour (name.getText ());
+if (col == null) {
+col =  new jalview.schemes.UserColourScheme ().createColourFromName (name.getText ());
+}var fcol = this.getFeatureStyle (name.getText ());
+this.colourPanel.updateColor (fcol);
+dialog.setResizable (true);
+this.colourPanel.addMouseListener (((Clazz_isClassDefined ("jalview.appletgui.FeatureRenderer$3") ? 0 : jalview.appletgui.FeatureRenderer.$FeatureRenderer$3$ ()), Clazz_innerTypeInstance (jalview.appletgui.FeatureRenderer$3, this, Clazz_cloneFinals ("fr", fr, "ap", ap, "name", name, "dialog", dialog))));
+dialog.setVisible (true);
+var ffile =  new jalview.io.FeaturesFile ();
+if (dialog.accept) {
+this.lastSeq = null;
+jalview.appletgui.FeatureRenderer.lastFeatureAdded = name.getText ().trim ();
+jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded = source.getText ().trim ();
+jalview.appletgui.FeatureRenderer.lastDescriptionAdded = description.getText ().$replace ('\n', ' ');
+}if (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded != null && jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded.length < 1) {
+jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded = null;
+}if (!newFeatures) {
+var sf = features[this.featureIndex];
+if (dialog.accept) {
+sf.type = jalview.appletgui.FeatureRenderer.lastFeatureAdded;
+sf.featureGroup = jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded;
+sf.description = jalview.appletgui.FeatureRenderer.lastDescriptionAdded;
+if (!this.colourPanel.isGcol) {
+this.setColour (sf.type, this.colourPanel.getBackground ());
+}try {
+sf.begin = Integer.parseInt (start.getText ());
+sf.end = Integer.parseInt (end.getText ());
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+ffile.parseDescriptionHTML (sf, false);
+this.setVisible (jalview.appletgui.FeatureRenderer.lastFeatureAdded);
+}if (this.deleteFeature) {
+sequences[0].deleteFeature (sf);
+}} else {
+if (dialog.accept && name.getText ().length > 0) {
+for (var i = 0; i < sequences.length; i++) {
+features[i].type = jalview.appletgui.FeatureRenderer.lastFeatureAdded;
+features[i].featureGroup = jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded;
+features[i].description = jalview.appletgui.FeatureRenderer.lastDescriptionAdded;
+sequences[i].addSequenceFeature (features[i]);
+ffile.parseDescriptionHTML (features[i], false);
+}
+var newColour = this.colourPanel.getBackground ();
+if (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded != null) {
+this.setGroupVisibility (jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded, true);
+}this.setColour (jalview.appletgui.FeatureRenderer.lastFeatureAdded, newColour);
+this.setVisible (jalview.appletgui.FeatureRenderer.lastFeatureAdded);
+this.findAllFeatures (false);
+} else {
+return false;
+}}if ((this.av).featureSettings != null) {
+(this.av).featureSettings.refreshTable ();
+}ap.paintAlignment (true);
+return true;
+}, "~A,~A,~B,jalview.appletgui.AlignmentPanel");
+c$.$FeatureRenderer$FeatureColourPanel$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.label = "";
+this.maxCol = null;
+this.isColourByLabel = false;
+this.isGcol = false;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui.FeatureRenderer, "FeatureColourPanel", awt2swing.Panel);
+Clazz_defineMethod (c$, "updateColor", 
+function (a) {
+var b;
+var c = null;
+var d = null;
+var e = "";
+if (Clazz_instanceOf (a, java.awt.Color)) {
+this.isGcol = false;
+c = a;
+d = null;
+} else if (Clazz_instanceOf (a, jalview.schemes.GraduatedColor)) {
+this.isGcol = true;
+d = a;
+c = null;
+} else {
+throw  new Error (jalview.util.MessageManager.getString ("error.invalid_colour_for_mycheckbox"));
+}if (c != null) {
+this.setBackground (b = c);
+} else {
+if (d.getThreshType () != -1) {
+e += " " + ((d.getThreshType () == 1) ? "(>)" : "(<)");
+}if (this.isColourByLabel = d.isColourByLabel ()) {
+this.setBackground (b = java.awt.Color.white);
+e += " (by Label)";
+} else {
+this.setBackground (b = d.getMinColor ());
+this.maxCol = d.getMaxColor ();
+}}this.label = e;
+this.setBackground (b);
+this.repaint ();
+}, "~O");
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.appletgui.FeatureRenderer.FeatureColourPanel, [null]);
+});
+Clazz_defineMethod (c$, "PaintComponent", 
+function (a) {
+var b = this.getSize ();
+if (this.isGcol) {
+if (this.isColourByLabel) {
+a.setColor (java.awt.Color.white);
+a.fillRect (Clazz_doubleToInt (b.width / 2), 0, Clazz_doubleToInt (b.width / 2), b.height);
+a.setColor (java.awt.Color.black);
+var c =  new java.awt.Font ("Verdana", 0, 10);
+a.setFont (c);
+awt2swing.Util.drawString (a, jalview.util.MessageManager.getString ("label.label"), 0, 0);
+} else {
+a.setColor (this.maxCol);
+a.fillRect (Clazz_doubleToInt (b.width / 2), 0, Clazz_doubleToInt (b.width / 2), b.height);
+}}}, "java.awt.Graphics");
+c$ = Clazz_p0p ();
+};
+c$.$FeatureRenderer$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "FeatureRenderer$1", null, java.awt.event.ItemListener);
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (e) {
+var index = this.f$.overlaps.getSelectedIndex ();
+if (index != -1) {
+this.b$["jalview.appletgui.FeatureRenderer"].featureIndex = index;
+this.f$.name.setText (this.f$.features[index].getType ());
+this.f$.description.setText (this.f$.features[index].getDescription ());
+this.f$.source.setText (this.f$.features[index].getFeatureGroup ());
+this.f$.start.setText (this.f$.features[index].getBegin () + "");
+this.f$.end.setText (this.f$.features[index].getEnd () + "");
+var highlight =  new jalview.datamodel.SearchResults ();
+highlight.addResult (this.f$.sequences[0], this.f$.features[index].getBegin (), this.f$.features[index].getEnd ());
+this.f$.ap.seqPanel.seqCanvas.highlightSearchResults (highlight);
+}var col = this.b$["jalview.appletgui.FeatureRenderer"].getFeatureStyle (this.f$.name.getText ());
+if (col == null) {
+col =  new jalview.schemes.UserColourScheme ().createColourFromName (this.f$.name.getText ());
+}this.b$["jalview.appletgui.FeatureRenderer"].colourPanel.updateColor (col);
+}, "java.awt.event.ItemEvent");
+c$ = Clazz_p0p ();
+};
+c$.$FeatureRenderer$2$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "FeatureRenderer$2", null, java.awt.event.ActionListener);
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (evt) {
+this.b$["jalview.appletgui.FeatureRenderer"].deleteFeature = true;
+this.f$.dialog.setVisible (false);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+};
+c$.$FeatureRenderer$3$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "FeatureRenderer$3", java.awt.event.MouseAdapter);
+Clazz_overrideMethod (c$, "mousePressed", 
+function (evt) {
+if (!this.b$["jalview.appletgui.FeatureRenderer"].colourPanel.isGcol) {
+ new jalview.appletgui.UserDefinedColours (this.f$.fr, this.f$.ap.alignFrame);
+} else {
+var fcc =  new jalview.appletgui.FeatureColourChooser (this.f$.ap.alignFrame, this.f$.name.getText ());
+this.f$.dialog.transferFocus ();
+}}, "java.awt.event.MouseEvent");
+c$ = Clazz_p0p ();
+};
+Clazz_defineStatics (c$,
+"lastFeatureAdded", null,
+"lastFeatureGroupAdded", null,
+"lastDescriptionAdded", null);
+});
+Clazz_declarePackage ("jalview.renderer.seqfeatures");
+Clazz_load (["jalview.viewmodel.seqfeatures.FeatureRendererModel"], "jalview.renderer.seqfeatures.FeatureRenderer", ["awt2swing.Util", "jalview.util.Comparison", "java.awt.AlphaComposite", "$.Color", "java.awt.image.BufferedImage", "java.lang.Float"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.fm = null;
+this.charOffset = 0;
+this.offscreenRender = false;
+this.lastSeq = null;
+this.s = '\0';
+this.i = 0;
+this.av_charHeight = 0;
+this.av_charWidth = 0;
+this.av_validCharWidth = false;
+this.av_isShowSeqFeatureHeight = false;
+this.offscreenImage = null;
+this.lastSequenceFeatures = null;
+this.sfSize = 0;
+this.sfindex = 0;
+this.spos = 0;
+this.epos = 0;
+this.transparencyAvailable = true;
+Clazz_instantialize (this, arguments);
+}, jalview.renderer.seqfeatures, "FeatureRenderer", jalview.viewmodel.seqfeatures.FeatureRendererModel);
+Clazz_defineMethod (c$, "updateAvConfig", 
+function () {
+this.av_charHeight = this.av.getCharHeight ();
+this.av_charWidth = this.av.getCharWidth ();
+this.av_validCharWidth = this.av.isValidCharWidth ();
+this.av_isShowSeqFeatureHeight = this.av.isShowSequenceFeaturesHeight ();
+});
+Clazz_defineMethod (c$, "renderFeature", 
+function (g, seq, fstart, fend, featureColour, start, end, y1) {
+this.updateAvConfig ();
+if (((fstart <= end) && (fend >= start))) {
+if (fstart < start) {
+fstart = start;
+}if (fend >= end) {
+fend = end;
+}var pady = (y1 + this.av_charHeight) - Clazz_doubleToInt (this.av_charHeight / 5);
+for (this.i = fstart; this.i <= fend; this.i++) {
+this.s = seq.getCharAt (this.i);
+if (jalview.util.Comparison.isGap (this.s)) {
+continue;
+}g.setColor (featureColour);
+g.fillRect ((this.i - start) * this.av_charWidth, y1, this.av_charWidth, this.av_charHeight);
+if (this.offscreenRender || !this.av_validCharWidth) {
+continue;
+}g.setColor (java.awt.Color.white);
+this.charOffset = Clazz_doubleToInt ((this.av_charWidth - this.fm.charWidth (this.s)) / 2);
+awt2swing.Util.drawString (g, String.valueOf (this.s), this.charOffset + (this.av_charWidth * (this.i - start)), pady);
+}
+}}, "java.awt.Graphics,jalview.datamodel.SequenceI,~N,~N,java.awt.Color,~N,~N,~N");
+Clazz_defineMethod (c$, "renderScoreFeature", 
+function (g, seq, fstart, fend, featureColour, start, end, y1, bs) {
+this.updateAvConfig ();
+if (((fstart <= end) && (fend >= start))) {
+if (fstart < start) {
+fstart = start;
+}if (fend >= end) {
+fend = end;
+}var pady = (y1 + this.av_charHeight) - Clazz_doubleToInt (this.av_charHeight / 5);
+var ystrt = 0;
+var yend = this.av_charHeight;
+if (bs[0] != 0) {
+if (bs[1] < 128) {
+yend = Clazz_doubleToInt (this.av_charHeight * (128 - bs[1]) / 512);
+ystrt = this.av_charHeight - Clazz_doubleToInt (yend / 2);
+} else {
+ystrt = Clazz_doubleToInt (this.av_charHeight / 2);
+yend = Clazz_doubleToInt (this.av_charHeight * (bs[1] - 128) / 512);
+}} else {
+yend = Clazz_doubleToInt (this.av_charHeight * bs[1] / 255);
+ystrt = this.av_charHeight - yend;
+}for (this.i = fstart; this.i <= fend; this.i++) {
+this.s = seq.getCharAt (this.i);
+if (jalview.util.Comparison.isGap (this.s)) {
+continue;
+}g.setColor (featureColour);
+var x = (this.i - start) * this.av_charWidth;
+g.drawRect (x, y1, this.av_charWidth, this.av_charHeight);
+g.fillRect (x, y1 + ystrt, this.av_charWidth, yend);
+if (this.offscreenRender || !this.av_validCharWidth) {
+continue;
+}g.setColor (java.awt.Color.black);
+this.charOffset = Clazz_doubleToInt ((this.av_charWidth - this.fm.charWidth (this.s)) / 2);
+awt2swing.Util.drawString (g, String.valueOf (this.s), this.charOffset + (this.av_charWidth * (this.i - start)), pady);
+}
+}}, "java.awt.Graphics,jalview.datamodel.SequenceI,~N,~N,java.awt.Color,~N,~N,~N,~A");
+Clazz_defineMethod (c$, "findFeatureColour", 
+function (initialCol, seq, res) {
+return  new java.awt.Color (this.findFeatureColour (initialCol.getRGB (), seq, res));
+}, "java.awt.Color,jalview.datamodel.SequenceI,~N");
+Clazz_defineMethod (c$, "findFeatureColour", 
+function (initialCol, seq, column) {
+if (!this.av.isShowSequenceFeatures ()) {
+return initialCol;
+}var sequenceFeatures = seq.getSequenceFeatures ();
+if (seq !== this.lastSeq) {
+this.lastSeq = seq;
+this.lastSequenceFeatures = sequenceFeatures;
+if (this.lastSequenceFeatures != null) {
+this.sfSize = this.lastSequenceFeatures.length;
+}} else {
+if (this.lastSequenceFeatures !== sequenceFeatures) {
+this.lastSequenceFeatures = sequenceFeatures;
+if (this.lastSequenceFeatures != null) {
+this.sfSize = this.lastSequenceFeatures.length;
+}}}if (this.lastSequenceFeatures == null || this.sfSize == 0) {
+return initialCol;
+}if (jalview.util.Comparison.isGap (this.lastSeq.getCharAt (column))) {
+return java.awt.Color.white.getRGB ();
+}if (this.transparency != 1.0 && this.offscreenImage == null) {
+this.offscreenImage =  new java.awt.image.BufferedImage (1, 1, 2);
+}this.currentColour = null;
+this.offscreenRender = true;
+if (this.offscreenImage != null) {
+this.offscreenImage.setRGB (0, 0, initialCol);
+this.drawSequence (this.offscreenImage.getGraphics (), this.lastSeq, column, column, 0);
+return this.offscreenImage.getRGB (0, 0);
+} else {
+this.drawSequence (null, this.lastSeq, this.lastSeq.findPosition (column), -1, -1);
+if (this.currentColour == null) {
+return initialCol;
+} else {
+return (this.currentColour).intValue ();
+}}}, "~N,jalview.datamodel.SequenceI,~N");
+Clazz_defineMethod (c$, "drawSequence", 
+function (g, seq, start, end, y1) {
+var sequenceFeatures = seq.getSequenceFeatures ();
+if (sequenceFeatures == null || sequenceFeatures.length == 0) {
+return;
+}if (g != null) {
+this.fm = g.getFontMetrics ();
+}this.updateFeatures ();
+if (this.lastSeq == null || seq !== this.lastSeq || sequenceFeatures !== this.lastSequenceFeatures) {
+this.lastSeq = seq;
+this.lastSequenceFeatures = sequenceFeatures;
+}if (this.transparency != 1 && g != null) {
+var g2 = g;
+g2.setComposite (java.awt.AlphaComposite.getInstance (3, this.transparency));
+}if (!this.offscreenRender) {
+this.spos = this.lastSeq.findPosition (start);
+this.epos = this.lastSeq.findPosition (end);
+}this.sfSize = this.lastSequenceFeatures.length;
+var type;
+for (var renderIndex = 0; renderIndex < this.renderOrder.length; renderIndex++) {
+type = this.renderOrder[renderIndex];
+if (type == null || !this.showFeatureOfType (type)) {
+continue;
+}for (this.sfindex = 0; this.sfindex < this.sfSize; this.sfindex++) {
+var sequenceFeature = this.lastSequenceFeatures[this.sfindex];
+if (!sequenceFeature.type.equals (type)) {
+continue;
+}if (this.featureGroups != null && sequenceFeature.featureGroup != null && sequenceFeature.featureGroup.length != 0 && this.featureGroups.containsKey (sequenceFeature.featureGroup) && !this.featureGroups.get (sequenceFeature.featureGroup).booleanValue ()) {
+continue;
+}if (!this.offscreenRender && (sequenceFeature.getBegin () > this.epos || sequenceFeature.getEnd () < this.spos)) {
+continue;
+}if (this.offscreenRender && this.offscreenImage == null) {
+if (sequenceFeature.begin <= start && sequenceFeature.end >= start) {
+this.currentColour =  new Integer (this.getColour (sequenceFeature).getRGB ());
+}} else if (sequenceFeature.type.equals ("disulfide bond")) {
+this.renderFeature (g, seq, seq.findIndex (sequenceFeature.begin) - 1, seq.findIndex (sequenceFeature.begin) - 1, this.getColour (sequenceFeature), start, end, y1);
+this.renderFeature (g, seq, seq.findIndex (sequenceFeature.end) - 1, seq.findIndex (sequenceFeature.end) - 1, this.getColour (sequenceFeature), start, end, y1);
+} else if (this.showFeature (sequenceFeature)) {
+if (this.av_isShowSeqFeatureHeight && !Float.isNaN (sequenceFeature.score)) {
+this.renderScoreFeature (g, seq, seq.findIndex (sequenceFeature.begin) - 1, seq.findIndex (sequenceFeature.end) - 1, this.getColour (sequenceFeature), start, end, y1, this.normaliseScore (sequenceFeature));
+} else {
+this.renderFeature (g, seq, seq.findIndex (sequenceFeature.begin) - 1, seq.findIndex (sequenceFeature.end) - 1, this.getColour (sequenceFeature), start, end, y1);
+}}}
+}
+if (this.transparency != 1.0 && g != null && this.transparencyAvailable) {
+var g2 = g;
+g2.setComposite (java.awt.AlphaComposite.getInstance (3, 1.0));
+}}, "java.awt.Graphics,jalview.datamodel.SequenceI,~N,~N,~N");
+Clazz_defineMethod (c$, "setTransparencyAvailable", 
+function (isTransparencyAvailable) {
+this.transparencyAvailable = isTransparencyAvailable;
+}, "~B");
+Clazz_overrideMethod (c$, "isTransparencyAvailable", 
+function () {
+return this.transparencyAvailable;
+});
+Clazz_overrideMethod (c$, "featuresAdded", 
+function () {
+this.lastSeq = null;
+this.findAllFeatures ();
+});
+});
+Clazz_declarePackage ("jalview.viewmodel.seqfeatures");
+Clazz_load (["jalview.api.FeatureRenderer", "java.beans.PropertyChangeSupport", "java.lang.Boolean", "java.util.Hashtable", "java.util.concurrent.ConcurrentHashMap"], "jalview.viewmodel.seqfeatures.FeatureRendererModel", ["jalview.schemes.GraduatedColor", "$.UserColourScheme", "jalview.util.QuickSort", "jalview.viewmodel.seqfeatures.FeatureRendererSettings", "$.FeaturesDisplayed", "java.awt.Color", "java.lang.Error", "$.Float", "java.util.ArrayList", "$.Arrays"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.transparency = 1.0;
+this.featureColours = null;
+this.featureGroups = null;
+this.currentColour = null;
+this.renderOrder = null;
+this.changeSupport = null;
+this.av = null;
+this.minmax = null;
+this.newFeatureAdded = false;
+this.findingFeatures = false;
+this.firing = null;
+this.featureOrder = null;
+Clazz_instantialize (this, arguments);
+}, jalview.viewmodel.seqfeatures, "FeatureRendererModel", null, jalview.api.FeatureRenderer);
+Clazz_prepareFields (c$, function () {
+this.featureColours =  new java.util.concurrent.ConcurrentHashMap ();
+this.featureGroups =  new java.util.concurrent.ConcurrentHashMap ();
+this.changeSupport =  new java.beans.PropertyChangeSupport (this);
+this.minmax =  new java.util.Hashtable ();
+this.firing = Boolean.FALSE;
+});
+Clazz_overrideMethod (c$, "getViewport", 
+function () {
+return this.av;
+});
+Clazz_defineMethod (c$, "getSettings", 
+function () {
+return  new jalview.viewmodel.seqfeatures.FeatureRendererSettings (this);
+});
+Clazz_defineMethod (c$, "transferSettings", 
+function (fr) {
+this.renderOrder = fr.renderOrder;
+this.featureGroups = fr.featureGroups;
+this.featureColours = fr.featureColours;
+this.transparency = fr.transparency;
+this.featureOrder = fr.featureOrder;
+}, "jalview.viewmodel.seqfeatures.FeatureRendererSettings");
+Clazz_defineMethod (c$, "transferSettings", 
+function (_fr) {
+var fr = _fr;
+var frs =  new jalview.viewmodel.seqfeatures.FeatureRendererSettings (fr);
+this.renderOrder = frs.renderOrder;
+this.featureGroups = frs.featureGroups;
+this.featureColours = frs.featureColours;
+this.transparency = frs.transparency;
+this.featureOrder = frs.featureOrder;
+if (this.av != null && this.av !== fr.getViewport ()) {
+if (_fr.getFeaturesDisplayed () != null) {
+var fd = this.getFeaturesDisplayed ();
+if (fd == null) {
+this.setFeaturesDisplayedFrom (_fr.getFeaturesDisplayed ());
+} else {
+{
+fd.clear ();
+var fdisp = _fr.getFeaturesDisplayed ().getVisibleFeatures ();
+while (fdisp.hasNext ()) {
+fd.setVisible (fdisp.next ());
+}
+}}}}}, "jalview.api.FeatureRenderer");
+Clazz_defineMethod (c$, "setFeaturesDisplayedFrom", 
+function (featuresDisplayed) {
+this.av.setFeaturesDisplayed ( new jalview.viewmodel.seqfeatures.FeaturesDisplayed (featuresDisplayed));
+}, "jalview.api.FeaturesDisplayedI");
+Clazz_overrideMethod (c$, "setVisible", 
+function (featureType) {
+var fdi = this.av.getFeaturesDisplayed ();
+if (fdi == null) {
+this.av.setFeaturesDisplayed (fdi =  new jalview.viewmodel.seqfeatures.FeaturesDisplayed ());
+}if (!fdi.isRegistered (featureType)) {
+this.pushFeatureType (java.util.Arrays.asList ( Clazz_newArray (-1, [featureType])));
+}fdi.setVisible (featureType);
+}, "~S");
+Clazz_overrideMethod (c$, "setAllVisible", 
+function (featureTypes) {
+var fdi = this.av.getFeaturesDisplayed ();
+if (fdi == null) {
+this.av.setFeaturesDisplayed (fdi =  new jalview.viewmodel.seqfeatures.FeaturesDisplayed ());
+}var nft =  new java.util.ArrayList ();
+for (var featureType, $featureType = featureTypes.iterator (); $featureType.hasNext () && ((featureType = $featureType.next ()) || true);) {
+if (!fdi.isRegistered (featureType)) {
+nft.add (featureType);
+}}
+if (nft.size () > 0) {
+this.pushFeatureType (nft);
+}fdi.setAllVisible (featureTypes);
+}, "java.util.List");
+Clazz_defineMethod (c$, "pushFeatureType", 
+ function (types) {
+var ts = types.size ();
+var neworder =  new Array ((this.renderOrder == null ? 0 : this.renderOrder.length) + ts);
+types.toArray (neworder);
+if (this.renderOrder != null) {
+System.arraycopy (neworder, 0, neworder, this.renderOrder.length, ts);
+System.arraycopy (this.renderOrder, 0, neworder, 0, this.renderOrder.length);
+}this.renderOrder = neworder;
+}, "java.util.List");
+Clazz_defineMethod (c$, "getMinMax", 
+function () {
+return this.minmax;
+});
+Clazz_defineMethod (c$, "normaliseScore", 
+function (sequenceFeature) {
+var mm = (this.minmax.get (sequenceFeature.type))[0];
+var r =  Clazz_newByteArray (-1, [0, 255]);
+if (mm != null) {
+if (r[0] != 0 || mm[0] < 0.0) {
+r[0] = 1;
+r[1] = Clazz_doubleToByte (Clazz_doubleToInt (128.0) + 127.0 * (sequenceFeature.score / mm[1]));
+} else {
+r[1] = Clazz_floatToByte (Clazz_doubleToInt (255.0) * (sequenceFeature.score / mm[1]));
+}}return r;
+}, "jalview.datamodel.SequenceFeature");
+Clazz_defineMethod (c$, "updateFeatures", 
+function () {
+if (this.av.getFeaturesDisplayed () == null || this.renderOrder == null || this.newFeatureAdded) {
+this.findAllFeatures ();
+if (this.av.getFeaturesDisplayed ().getVisibleFeatureCount () < 1) {
+return false;
+}}return true;
+});
+Clazz_defineMethod (c$, "findAllFeatures", 
+function () {
+{
+if (this.firing.equals (Boolean.FALSE)) {
+this.firing = Boolean.TRUE;
+this.findAllFeatures (true);
+this.changeSupport.firePropertyChange ("changeSupport", null, null);
+this.firing = Boolean.FALSE;
+}}});
+Clazz_overrideMethod (c$, "findFeaturesAtRes", 
+function (sequence, res) {
+var tmp =  new java.util.ArrayList ();
+var features = sequence.getSequenceFeatures ();
+if (features != null) {
+for (var i = 0; i < features.length; i++) {
+if (!this.av.areFeaturesDisplayed () || !this.av.getFeaturesDisplayed ().isVisible (features[i].getType ())) {
+continue;
+}if (features[i].featureGroup != null && this.featureGroups != null && this.featureGroups.containsKey (features[i].featureGroup) && !this.featureGroups.get (features[i].featureGroup).booleanValue ()) {
+continue;
+}if ((features[i].getBegin () <= res) && (features[i].getEnd () >= res)) {
+tmp.add (features[i]);
+}}
+}return tmp;
+}, "jalview.datamodel.SequenceI,~N");
+Clazz_defineMethod (c$, "findAllFeatures", 
+function (newMadeVisible) {
+this.newFeatureAdded = false;
+if (this.findingFeatures) {
+this.newFeatureAdded = true;
+return;
+}this.findingFeatures = true;
+if (this.av.getFeaturesDisplayed () == null) {
+this.av.setFeaturesDisplayed ( new jalview.viewmodel.seqfeatures.FeaturesDisplayed ());
+}var featuresDisplayed = this.av.getFeaturesDisplayed ();
+var allfeatures =  new java.util.ArrayList ();
+var oldfeatures =  new java.util.ArrayList ();
+if (this.renderOrder != null) {
+for (var i = 0; i < this.renderOrder.length; i++) {
+if (this.renderOrder[i] != null) {
+oldfeatures.add (this.renderOrder[i]);
+}}
+}if (this.minmax == null) {
+this.minmax =  new java.util.Hashtable ();
+}var alignment = this.av.getAlignment ();
+for (var i = 0; i < alignment.getHeight (); i++) {
+var asq = alignment.getSequenceAt (i);
+var features = asq.getSequenceFeatures ();
+if (features == null) {
+continue;
+}var index = 0;
+while (index < features.length) {
+if (!featuresDisplayed.isRegistered (features[index].getType ())) {
+var fgrp = features[index].getFeatureGroup ();
+if (fgrp != null) {
+var groupDisplayed = this.featureGroups.get (fgrp);
+if (groupDisplayed == null) {
+groupDisplayed = Boolean.$valueOf (newMadeVisible);
+this.featureGroups.put (fgrp, groupDisplayed);
+}if (!groupDisplayed.booleanValue ()) {
+index++;
+continue;
+}}if (!(features[index].begin == 0 && features[index].end == 0)) {
+if (newMadeVisible && !oldfeatures.contains (features[index].getType ())) {
+featuresDisplayed.setVisible (features[index].getType ());
+this.setOrder (features[index].getType (), 0);
+}}}if (!allfeatures.contains (features[index].getType ())) {
+allfeatures.add (features[index].getType ());
+}if (!Float.isNaN (features[index].score)) {
+var nonpos = features[index].getBegin () >= 1 ? 0 : 1;
+var mm = this.minmax.get (features[index].getType ());
+if (mm == null) {
+mm =  Clazz_newArray (-1, [null, null]);
+this.minmax.put (features[index].getType (), mm);
+}if (mm[nonpos] == null) {
+mm[nonpos] =  Clazz_newFloatArray (-1, [features[index].score, features[index].score]);
+} else {
+if (mm[nonpos][0] > features[index].score) {
+mm[nonpos][0] = features[index].score;
+}if (mm[nonpos][1] < features[index].score) {
+mm[nonpos][1] = features[index].score;
+}}}index++;
+}
+}
+this.updateRenderOrder (allfeatures);
+this.findingFeatures = false;
+}, "~B");
+Clazz_defineMethod (c$, "updateRenderOrder", 
+ function (allFeatures) {
+var allfeatures =  new java.util.ArrayList (allFeatures);
+var oldRender = this.renderOrder;
+this.renderOrder =  new Array (allfeatures.size ());
+var mmrange;
+var fc = null;
+var initOrders = (this.featureOrder == null);
+var opos = 0;
+if (oldRender != null && oldRender.length > 0) {
+for (var j = 0; j < oldRender.length; j++) {
+if (oldRender[j] != null) {
+if (initOrders) {
+this.setOrder (oldRender[j], (1 - (1 + j) / oldRender.length));
+}if (allfeatures.contains (oldRender[j])) {
+this.renderOrder[opos++] = oldRender[j];
+allfeatures.remove (oldRender[j]);
+if (this.minmax != null) {
+mmrange = this.minmax.get (oldRender[j]);
+if (mmrange != null) {
+fc = this.featureColours.get (oldRender[j]);
+if (fc != null && Clazz_instanceOf (fc, jalview.schemes.GraduatedColor) && (fc).isAutoScale ()) {
+(fc).updateBounds ((mmrange)[0][0], (mmrange)[0][1]);
+}}}}}}
+}if (allfeatures.size () == 0) {
+return;
+}var i = allfeatures.size () - 1;
+var iSize = i;
+var sort = false;
+var newf =  new Array (allfeatures.size ());
+var sortOrder =  Clazz_newFloatArray (allfeatures.size (), 0);
+for (var newfeat, $newfeat = allfeatures.iterator (); $newfeat.hasNext () && ((newfeat = $newfeat.next ()) || true);) {
+newf[i] = newfeat;
+if (this.minmax != null) {
+mmrange = this.minmax.get (newf[i]);
+if (mmrange != null) {
+fc = this.featureColours.get (newf[i]);
+if (fc != null && Clazz_instanceOf (fc, jalview.schemes.GraduatedColor) && (fc).isAutoScale ()) {
+(fc).updateBounds ((mmrange)[0][0], (mmrange)[0][1]);
+}}}if (initOrders || !this.featureOrder.containsKey (newf[i])) {
+var denom = initOrders ? allfeatures.size () : this.featureOrder.size ();
+this.setOrder (newf[i], i / denom);
+}sortOrder[i] = 2 - (this.featureOrder.get (newf[i])).floatValue ();
+if (i < iSize) {
+sort = sort || sortOrder[i] > sortOrder[i + 1];
+}i--;
+}
+if (iSize > 1 && sort) {
+jalview.util.QuickSort.sortFloatObject (sortOrder, newf);
+}sortOrder = null;
+System.arraycopy (newf, 0, this.renderOrder, opos, newf.length);
+}, "java.util.List");
+Clazz_overrideMethod (c$, "getFeatureStyle", 
+function (featureType) {
+var fc = this.featureColours.get (featureType);
+if (fc == null) {
+var ucs =  new jalview.schemes.UserColourScheme ();
+var col = ucs.createColourFromName (featureType);
+this.featureColours.put (featureType, fc = col);
+}return fc;
+}, "~S");
+Clazz_defineMethod (c$, "getColour", 
+function (featureType) {
+var fc = this.getFeatureStyle (featureType);
+if (Clazz_instanceOf (fc, java.awt.Color)) {
+return fc;
+} else {
+if (Clazz_instanceOf (fc, jalview.schemes.GraduatedColor)) {
+return (fc).getMaxColor ();
+}}throw  new Error ("Implementation Error: Unrecognised render object " + fc.getClass () + " for features of type " + featureType);
+}, "~S");
+Clazz_defineMethod (c$, "getColour", 
+function (feature) {
+var fc = this.getFeatureStyle (feature.getType ());
+if (Clazz_instanceOf (fc, java.awt.Color)) {
+return fc;
+} else {
+if (Clazz_instanceOf (fc, jalview.schemes.GraduatedColor)) {
+return (fc).findColor (feature);
+}}throw  new Error ("Implementation Error: Unrecognised render object " + fc.getClass () + " for features of type " + feature.getType ());
+}, "jalview.datamodel.SequenceFeature");
+Clazz_defineMethod (c$, "showFeature", 
+function (sequenceFeature) {
+var fc = this.getFeatureStyle (sequenceFeature.type);
+if (Clazz_instanceOf (fc, jalview.schemes.GraduatedColor)) {
+return (fc).isColored (sequenceFeature);
+} else {
+return true;
+}}, "jalview.datamodel.SequenceFeature");
+Clazz_defineMethod (c$, "showFeatureOfType", 
+function (type) {
+return this.av.getFeaturesDisplayed ().isVisible (type);
+}, "~S");
+Clazz_overrideMethod (c$, "setColour", 
+function (featureType, col) {
+{
+this.featureColours.put (featureType, col);
+}}, "~S,~O");
+Clazz_defineMethod (c$, "setTransparency", 
+function (value) {
+this.transparency = value;
+}, "~N");
+Clazz_defineMethod (c$, "getTransparency", 
+function () {
+return this.transparency;
+});
+Clazz_defineMethod (c$, "setOrder", 
+function (type, position) {
+if (this.featureOrder == null) {
+this.featureOrder =  new java.util.Hashtable ();
+}this.featureOrder.put (type,  new Float (position));
+return position;
+}, "~S,~N");
+Clazz_defineMethod (c$, "getOrder", 
+function (type) {
+if (this.featureOrder != null) {
+if (this.featureOrder.containsKey (type)) {
+return (this.featureOrder.get (type)).floatValue ();
+}}return -1;
+}, "~S");
+Clazz_overrideMethod (c$, "getFeatureColours", 
+function () {
+return  new java.util.concurrent.ConcurrentHashMap (this.featureColours);
+});
+Clazz_defineMethod (c$, "setFeaturePriority", 
+function (data) {
+this.setFeaturePriority (data, true);
+}, "~A");
+Clazz_defineMethod (c$, "setFeaturePriority", 
+function (data, visibleNew) {
+var av_featuresdisplayed = null;
+if (visibleNew) {
+if ((av_featuresdisplayed = this.av.getFeaturesDisplayed ()) != null) {
+this.av.getFeaturesDisplayed ().clear ();
+} else {
+this.av.setFeaturesDisplayed (av_featuresdisplayed =  new jalview.viewmodel.seqfeatures.FeaturesDisplayed ());
+}} else {
+av_featuresdisplayed = this.av.getFeaturesDisplayed ();
+}if (data == null) {
+return;
+}this.renderOrder =  new Array (data.length);
+if (data.length > 0) {
+for (var i = 0; i < data.length; i++) {
+var type = data[i][0].toString ();
+this.setColour (type, data[i][1]);
+if ((data[i][2]).booleanValue ()) {
+av_featuresdisplayed.setVisible (type);
+}this.renderOrder[data.length - i - 1] = type;
+}
+}}, "~A,~B");
+Clazz_defineMethod (c$, "addPropertyChangeListener", 
+function (listener) {
+this.changeSupport.addPropertyChangeListener (listener);
+}, "java.beans.PropertyChangeListener");
+Clazz_defineMethod (c$, "removePropertyChangeListener", 
+function (listener) {
+this.changeSupport.removePropertyChangeListener (listener);
+}, "java.beans.PropertyChangeListener");
+Clazz_defineMethod (c$, "getAllFeatureColours", 
+function () {
+return this.featureColours.keySet ();
+});
+Clazz_defineMethod (c$, "clearRenderOrder", 
+function () {
+this.renderOrder = null;
+});
+Clazz_defineMethod (c$, "hasRenderOrder", 
+function () {
+return this.renderOrder != null;
+});
+Clazz_defineMethod (c$, "getRenderOrder", 
+function () {
+if (this.renderOrder == null) {
+return java.util.Arrays.asList ( Clazz_newArray (-1, []));
+}return java.util.Arrays.asList (this.renderOrder);
+});
+Clazz_defineMethod (c$, "getFeatureGroupsSize", 
+function () {
+return this.featureGroups != null ? 0 : this.featureGroups.size ();
+});
+Clazz_overrideMethod (c$, "getFeatureGroups", 
+function () {
+return (this.featureGroups == null) ? java.util.Arrays.asList ( new Array (0)) : java.util.Arrays.asList (this.featureGroups.keySet ().toArray ( new Array (0)));
+});
+Clazz_defineMethod (c$, "checkGroupVisibility", 
+function (group, newGroupsVisible) {
+if (this.featureGroups == null) {
+}if (this.featureGroups.containsKey (group)) {
+return this.featureGroups.get (group).booleanValue ();
+}if (newGroupsVisible) {
+this.featureGroups.put (group,  new Boolean (true));
+return true;
+}return false;
+}, "~S,~B");
+Clazz_overrideMethod (c$, "getGroups", 
+function (visible) {
+if (this.featureGroups != null) {
+var gp =  new java.util.ArrayList ();
+for (var grp, $grp = this.featureGroups.keySet ().iterator (); $grp.hasNext () && ((grp = $grp.next ()) || true);) {
+var state = this.featureGroups.get (grp);
+if (state.booleanValue () == visible) {
+gp.add (grp);
+}}
+return gp;
+}return null;
+}, "~B");
+Clazz_defineMethod (c$, "setGroupVisibility", 
+function (group, visible) {
+this.featureGroups.put (group,  new Boolean (visible));
+}, "~S,~B");
+Clazz_defineMethod (c$, "setGroupVisibility", 
+function (toset, visible) {
+if (toset != null && toset.size () > 0 && this.featureGroups != null) {
+var rdrw = false;
+for (var gst, $gst = toset.iterator (); $gst.hasNext () && ((gst = $gst.next ()) || true);) {
+var st = this.featureGroups.get (gst);
+this.featureGroups.put (gst,  new Boolean (visible));
+if (st != null) {
+rdrw = rdrw || (visible != st.booleanValue ());
+}}
+if (rdrw) {
+}}}, "java.util.List,~B");
+Clazz_overrideMethod (c$, "getDisplayedFeatureCols", 
+function () {
+var fcols =  new java.util.Hashtable ();
+if (this.getViewport ().getFeaturesDisplayed () == null) {
+return fcols;
+}var en = this.getViewport ().getFeaturesDisplayed ().getVisibleFeatures ();
+while (en.hasNext ()) {
+var col = en.next ();
+fcols.put (col, this.getColour (col));
+}
+return fcols;
+});
+Clazz_defineMethod (c$, "getFeaturesDisplayed", 
+function () {
+return this.av.getFeaturesDisplayed ();
+});
+Clazz_overrideMethod (c$, "getDisplayedFeatureTypes", 
+function () {
+var typ = null;
+typ = this.getRenderOrder ().toArray ( new Array (0));
+var feature_disp = this.av.getFeaturesDisplayed ();
+if (feature_disp != null) {
+{
+for (var i = 0; i < typ.length; i++) {
+if (!feature_disp.isVisible (typ[i])) {
+typ[i] = null;
+}}
+}}return typ;
+});
+Clazz_overrideMethod (c$, "getDisplayedFeatureGroups", 
+function () {
+var gps = null;
+var _gps =  new java.util.ArrayList ();
+var en = this.getFeatureGroups ().iterator ();
+var g = 0;
+var valid = false;
+while (en.hasNext ()) {
+var gp = en.next ();
+if (this.checkGroupVisibility (gp, false)) {
+valid = true;
+_gps.add (gp);
+}if (!valid) {
+return null;
+} else {
+gps =  new Array (_gps.size ());
+_gps.toArray (gps);
+}}
+return gps;
+});
+});
+Clazz_declarePackage ("jalview.api");
+Clazz_declareInterface (jalview.api, "FeatureRenderer");
+// BH concurrent version; copy of java.util.HashMap
+Clazz_declarePackage ("java.util.concurrent");
+Clazz_load(["java.util.AbstractMap","$.AbstractSet","$.Iterator","$.Map","$.MapEntry"],"java.util.concurrent.ConcurrentHashMap",["java.lang.IllegalArgumentException","$.IllegalStateException","java.util.AbstractCollection","$.Arrays","$.ConcurrentModificationException","java.util.MapEntry.Type","java.util.NoSuchElementException"],function(){
+c$=Clazz_decorateAsClass(function(){
+this.elementCount=0;
+this.elementData=null;
+this.loadFactor=0;
+this.threshold=0;
+this.modCount=0;
+Clazz_instantialize(this,arguments);
+},java.util.concurrent,"ConcurrentHashMap",java.util.AbstractMap,[java.util.Map,Cloneable,java.io.Serializable]);
+Clazz_defineMethod(c$,"newElementArray",
+function(s){
+return new Array(s);
+},"~N");
+//Clazz_makeConstructor(c$,
+//function(){
+//this.construct(16);
+//});
+//Clazz_makeConstructor(c$,
+//function(capacity){
+//Clazz_superConstructor(this,java.util.ConcurrentHashMap,[]);
+//if(capacity>=0){
+//this.elementCount=0;
+//this.elementData=this.newElementArray(capacity==0?1:capacity);
+//this.loadFactor=0.75;
+//this.computeMaxSize();
+//}else{
+//throw new IllegalArgumentException();
+//}},"~N");
+Clazz_makeConstructor(c$,
+function(){
+this.construct(16);
+});
+Clazz_makeConstructor(c$,
+function(capacity){
+Clazz_superConstructor(this,java.util.concurrent.ConcurrentHashMap,[]);
+if(capacity>=0){
+this.elementCount=0;
+this.elementData=this.newElementArray(capacity==0?1:capacity);
+this.loadFactor=0.75;
+this.computeMaxSize();
+}else{
+throw new IllegalArgumentException();
+}},"~N");
+Clazz_makeConstructor(c$,
+function(capacity,loadFactor){
+Clazz_superConstructor(this,java.util.concurrent.ConcurrentHashMap,[]);
+if(capacity>=0&&loadFactor>0){
+this.elementCount=0;
+this.elementData=this.newElementArray(capacity==0?1:capacity);
+this.loadFactor=loadFactor;
+this.computeMaxSize();
+}else{
+throw new IllegalArgumentException();
+}},"~N,~N");
+Clazz_makeConstructor(c$,
+function(map){
+this.construct(map.size()<6?11:map.size()*2);
+Clazz_superCall(this,java.util.concurrent.ConcurrentHashMap,"putAll",[map]);
+},"java.util.Map");
+
+
+/*
+Clazz_makeConstructor(c$,
+function(capacity,loadFactor){
+this.doConstruct(capacity,loadFactor);
+},"~N,~N");
+
+Clazz_defineMethod(c$, "doConstruct",
+function(capacity,loadFactor) {
+capacity || (capacity = 16);
+loadFactor || (loadFactor = 0.75);
+if (typeof capacity != "number") {
+ var map = capacity;
+ this.loadFactor=loadFactor;
+ this.elementData=this.newElementArray(map.size()<6?11:map.size()*2);
+ this.computeMaxSize();
+ this.putAllHM(map);
+ return;
+}
+
+//Clazz_superConstructor(this,java.util.ConcurrentHashMap,[]);
+if(capacity>=0&&loadFactor>0){
+this.elementData=this.newElementArray(capacity==0?1:capacity);
+this.loadFactor=loadFactor;
+this.computeMaxSize();
+}else{
+throw new IllegalArgumentException();
+}
+},"~N,~N");
+
+//Clazz_makeConstructor(c$,
+//function(map){
+//this.construct(map.size()<6?11:map.size()*2);
+//Clazz_superCall(this,java.util.ConcurrentHashMap,"putAll",[map]);
+//},"java.util.Map");
+
+*/
+Clazz_overrideMethod(c$,"clear",
+function(){
+if(this.elementCount>0){
+this.elementCount=0;
+java.util.Arrays.fill(this.elementData,null);
+this.modCount++;
+}});
+Clazz_defineMethod(c$,"clone",
+function(){
+  return this.cloneHM();
+});
+
+Clazz_defineMethod(c$,"cloneHM",
+function(){
+try{
+var map=this.cloneAM();//Clazz_superCall(this,java.util.concurrent.ConcurrentHashMap,"clone",[]);
+map.elementData=this.newElementArray(this.elementData.length);
+var entry;
+for(var i=0;i<this.elementData.length;i++){
+if((entry=this.elementData[i])!=null){
+map.elementData[i]=entry.clone();
+}}
+return map;
+}catch(e){
+if(Clazz_instanceOf(e,CloneNotSupportedException)){
+return null;
+}else{
+throw e;
+}
+}
+});
+
+Clazz_defineMethod(c$,"computeMaxSize",
+($fz=function(){
+this.threshold=Math.round((this.elementData.length*this.loadFactor));
+},$fz.isPrivate=true,$fz));
+Clazz_overrideMethod(c$,"containsKey",
+function(key){
+return this.getEntry(key)!=null;
+},"~O");
+Clazz_defineMethod(c$,"keysEqual",
+function(k1,entry){
+var k1Hash=k1==null?0:k1.hashCode();
+if(k1Hash!=entry.origKeyHash){
+return false;
+}if(k1==null&&entry.key==null){
+return true;
+}return k1.equals(entry.key);
+},"~O,java.util.concurrent.ConcurrentHashMap.Entry");
+Clazz_overrideMethod(c$,"containsValue",
+function(value){
+if(value!=null){
+for(var i=this.elementData.length;--i>=0;){
+var entry=this.elementData[i];
+while(entry!=null){
+if(value.equals(entry.value)){
+return true;
+}entry=entry.next;
+}
+}
+}else{
+for(var i=this.elementData.length;--i>=0;){
+var entry=this.elementData[i];
+while(entry!=null){
+if(entry.value==null){
+return true;
+}entry=entry.next;
+}
+}
+}return false;
+},"~O");
+Clazz_overrideMethod(c$,"entrySet",
+function(){
+return new java.util.concurrent.ConcurrentHashMap.ConcurrentHashMapEntrySet(this);
+});
+Clazz_overrideMethod(c$,"get",
+function(key){
+var m=this.getEntry(key);
+if(m!=null){
+return m.value;
+}return null;
+},"~O");
+Clazz_defineMethod(c$,"getEntry",
+function(key){
+var index=this.getModuloHash(key);
+return this.findEntry(key,index);
+},"~O");
+Clazz_defineMethod(c$,"getModuloHash",
+function(key){
+if(key==null){
+return 0;
+}return(key.hashCode()&0x7FFFFFFF)%this.elementData.length;
+},"~O");
+Clazz_defineMethod(c$,"findEntry",
+function(key,index){
+var m;
+m=this.elementData[index];
+if(key!=null){
+while(m!=null&&!this.keysEqual(key,m)){
+m=m.next;
+}
+}else{
+while(m!=null&&m.key!=null){
+m=m.next;
+}
+}return m;
+},"~O,~N");
+Clazz_overrideMethod(c$,"isEmpty",
+function(){
+return this.elementCount==0;
+});
+Clazz_overrideMethod(c$,"keySet",
+function(){
+if(this.$keySet==null){
+this.$keySet=((Clazz_isClassDefined("java.util.concurrent.ConcurrentHashMap$1")?0:java.util.concurrent.ConcurrentHashMap.$ConcurrentHashMap$1$()),Clazz_innerTypeInstance(java.util.concurrent.ConcurrentHashMap$1,this,null));
+}return this.$keySet;
+});
+Clazz_overrideMethod(c$,"put",
+function(key,value){
+var index=this.getModuloHash(key);
+var entry=this.findEntry(key,index);
+if(entry==null){
+this.modCount++;
+if(++this.elementCount>this.threshold){
+this.rehash();
+index=key==null?0:(key.hashCode()&0x7FFFFFFF)%this.elementData.length;
+}entry=this.createEntry(key,index,value);
+return null;
+}var result=entry.value;
+entry.value=value;
+return result;
+},"~O,~O");
+Clazz_defineMethod(c$,"createEntry",
+function(key,index,value){
+var entry=new java.util.concurrent.ConcurrentHashMap.Entry(key,value);
+entry.next=this.elementData[index];
+this.elementData[index]=entry;
+return entry;
+},"~O,~N,~O");
+Clazz_defineMethod(c$,"putAll",
+function(map){
+if(!map.isEmpty()){
+var capacity=this.elementCount+map.size();
+if(capacity>this.threshold){
+this.rehash(capacity);
+}
+this.putAllHM(map);
+
+}},"java.util.Map");
+Clazz_defineMethod(c$,"rehash",
+function(capacity){
+var length=(capacity==0?1:capacity<<1);
+var newData=this.newElementArray(length);
+for(var i=0;i<this.elementData.length;i++){
+var entry=this.elementData[i];
+while(entry!=null){
+var key=entry.key;
+var index=key==null?0:(key.hashCode()&0x7FFFFFFF)%length;
+var next=entry.next;
+entry.next=newData[index];
+newData[index]=entry;
+entry=next;
+}
+}
+this.elementData=newData;
+this.computeMaxSize();
+},"~N");
+Clazz_defineMethod(c$,"rehash",
+function(){
+this.rehash(this.elementData.length);
+});
+Clazz_overrideMethod(c$,"remove",
+function(key){
+var entry=this.removeEntry(key);
+if(entry!=null){
+return entry.value;
+}return null;
+},"~O");
+Clazz_defineMethod(c$,"removeEntry",
+function(key){
+var index=0;
+var entry;
+var last=null;
+if(key!=null){
+index=(key.hashCode()&0x7FFFFFFF)%this.elementData.length;
+entry=this.elementData[index];
+while(entry!=null&&!this.keysEqual(key,entry)){
+last=entry;
+entry=entry.next;
+}
+}else{
+entry=this.elementData[0];
+while(entry!=null&&entry.key!=null){
+last=entry;
+entry=entry.next;
+}
+}if(entry==null){
+return null;
+}if(last==null){
+this.elementData[index]=entry.next;
+}else{
+last.next=entry.next;
+}this.modCount++;
+this.elementCount--;
+return entry;
+},"~O");
+Clazz_overrideMethod(c$,"size",
+function(){
+return this.elementCount;
+});
+Clazz_overrideMethod(c$,"values",
+function(){
+if(this.valuesCollection==null){
+this.valuesCollection=((Clazz_isClassDefined("java.util.concurrent.ConcurrentHashMap$2")?0:java.util.concurrent.ConcurrentHashMap.$ConcurrentHashMap$2$()),Clazz_innerTypeInstance(java.util.concurrent.ConcurrentHashMap$2,this,null));
+}return this.valuesCollection;
+});
+c$.$ConcurrentHashMap$1$=function(){
+Clazz_pu$h(self.c$);
+c$=Clazz_declareAnonymous(java.util.concurrent,"ConcurrentHashMap$1",java.util.AbstractSet);
+Clazz_overrideMethod(c$,"contains",
+function(object){
+return this.b$["java.util.concurrent.ConcurrentHashMap"].containsKey(object);
+},"~O");
+Clazz_overrideMethod(c$,"size",
+function(){
+return this.b$["java.util.concurrent.ConcurrentHashMap"].size();
+});
+Clazz_overrideMethod(c$,"clear",
+function(){
+this.b$["java.util.concurrent.ConcurrentHashMap"].clear();
+});
+Clazz_overrideMethod(c$,"remove",
+function(key){
+if(this.b$["java.util.concurrent.ConcurrentHashMap"].containsKey(key)){
+this.b$["java.util.concurrent.ConcurrentHashMap"].remove(key);
+return true;
+}return false;
+},"~O");
+Clazz_overrideMethod(c$,"iterator",
+function(){
+return new java.util.concurrent.ConcurrentHashMap.ConcurrentHashMapIterator(((Clazz_isClassDefined("java.util.concurrent.ConcurrentHashMap$1$1")?0:java.util.concurrent.ConcurrentHashMap.$ConcurrentHashMap$1$1$()),Clazz_innerTypeInstance(java.util.concurrent.ConcurrentHashMap$1$1,this,null)),this.b$["java.util.concurrent.ConcurrentHashMap"]);
+});
+c$=Clazz_p0p();
+};
+c$.$ConcurrentHashMap$1$1$=function(){
+Clazz_pu$h(self.c$);
+c$=Clazz_declareAnonymous(java.util.concurrent,"ConcurrentHashMap$1$1",null,java.util.MapEntry.Type);
+Clazz_overrideMethod(c$,"get",
+function(entry){
+return entry.key;
+},"java.util.MapEntry");
+c$=Clazz_p0p();
+};
+c$.$ConcurrentHashMap$2$=function(){
+Clazz_pu$h(self.c$);
+c$=Clazz_declareAnonymous(java.util.concurrent,"ConcurrentHashMap$2",java.util.AbstractCollection);
+Clazz_overrideMethod(c$,"contains",
+function(object){
+return this.b$["java.util.concurrent.ConcurrentHashMap"].containsValue(object);
+},"~O");
+Clazz_overrideMethod(c$,"size",
+function(){
+return this.b$["java.util.concurrent.ConcurrentHashMap"].size();
+});
+Clazz_overrideMethod(c$,"clear",
+function(){
+this.b$["java.util.concurrent.ConcurrentHashMap"].clear();
+});
+Clazz_overrideMethod(c$,"iterator",
+function(){
+return new java.util.concurrent.ConcurrentHashMap.ConcurrentHashMapIterator(((Clazz_isClassDefined("java.util.concurrent.ConcurrentHashMap$2$1")?0:java.util.concurrent.ConcurrentHashMap.$ConcurrentHashMap$2$1$()),Clazz_innerTypeInstance(java.util.concurrent.ConcurrentHashMap$2$1,this,null)),this.b$["java.util.concurrent.ConcurrentHashMap"]);
+});
+c$=Clazz_p0p();
+};
+c$.$ConcurrentHashMap$2$1$=function(){
+Clazz_pu$h(self.c$);
+c$=Clazz_declareAnonymous(java.util.concurrent,"ConcurrentHashMap$2$1",null,java.util.MapEntry.Type);
+Clazz_overrideMethod(c$,"get",
+function(entry){
+return entry.value;
+},"java.util.MapEntry");
+c$=Clazz_p0p();
+};
+Clazz_pu$h(self.c$);
+c$=Clazz_decorateAsClass(function(){
+this.origKeyHash=0;
+this.next=null;
+Clazz_instantialize(this,arguments);
+},java.util.concurrent.ConcurrentHashMap,"Entry",java.util.MapEntry);
+Clazz_makeConstructor(c$,
+function(a,b){
+Clazz_superConstructor(this,java.util.concurrent.ConcurrentHashMap.Entry,[a,b]);
+this.origKeyHash=(a==null?0:a.hashCode());
+},"~O,~O");
+Clazz_defineMethod(c$,"clone",
+function(){
+var a=Clazz_superCall(this,java.util.concurrent.ConcurrentHashMap.Entry,"clone",[]);
+if(this.next!=null){
+a.next=this.next.clone();
+}return a;
+});
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_decorateAsClass(function(){
+this.position=0;
+this.expectedModCount=0;
+this.type=null;
+this.canRemove=false;
+this.entry=null;
+this.lastEntry=null;
+this.associatedMap=null;
+Clazz_instantialize(this,arguments);
+},java.util.concurrent.ConcurrentHashMap,"ConcurrentHashMapIterator",null,java.util.Iterator);
+Clazz_makeConstructor(c$,
+function(a,b){
+this.associatedMap=b;
+this.type=a;
+this.expectedModCount=b.modCount;
+},"java.util.MapEntry.Type,java.util.concurrent.ConcurrentHashMap");
+Clazz_overrideMethod(c$,"hasNext",
+function(){
+if(this.entry!=null){
+return true;
+}while(this.position<this.associatedMap.elementData.length){
+if(this.associatedMap.elementData[this.position]==null){
+this.position++;
+}else{
+return true;
+}}
+return false;
+});
+Clazz_defineMethod(c$,"checkConcurrentMod",
+function(){
+if(this.expectedModCount!=this.associatedMap.modCount){
+throw new java.util.ConcurrentModificationException();
+}});
+Clazz_overrideMethod(c$,"next",
+function(){
+this.checkConcurrentMod();
+if(!this.hasNext()){
+throw new java.util.NoSuchElementException();
+}var a;
+if(this.entry==null){
+a=this.lastEntry=this.associatedMap.elementData[this.position++];
+this.entry=this.lastEntry.next;
+}else{
+if(this.lastEntry.next!==this.entry){
+this.lastEntry=this.lastEntry.next;
+}a=this.entry;
+this.entry=this.entry.next;
+}this.canRemove=true;
+return this.type.get(a);
+});
+Clazz_overrideMethod(c$,"remove",
+function(){
+this.checkConcurrentMod();
+if(!this.canRemove){
+throw new IllegalStateException();
+}this.canRemove=false;
+this.associatedMap.modCount++;
+if(this.lastEntry.next===this.entry){
+while(this.associatedMap.elementData[--this.position]==null){
+;}
+this.associatedMap.elementData[this.position]=this.associatedMap.elementData[this.position].next;
+this.entry=null;
+}else{
+this.lastEntry.next=this.entry;
+}this.associatedMap.elementCount--;
+this.expectedModCount++;
+});
+c$=Clazz_p0p();
+Clazz_pu$h(self.c$);
+c$=Clazz_decorateAsClass(function(){
+this.associatedMap=null;
+Clazz_instantialize(this,arguments);
+},java.util.concurrent.ConcurrentHashMap,"ConcurrentHashMapEntrySet",java.util.AbstractSet);
+Clazz_makeConstructor(c$,
+function(a){
+Clazz_superConstructor(this,java.util.concurrent.ConcurrentHashMap.ConcurrentHashMapEntrySet,[]);
+this.associatedMap=a;
+},"java.util.concurrent.ConcurrentHashMap");
+Clazz_defineMethod(c$,"hashMap",
+function(){
+return this.associatedMap;
+});
+Clazz_overrideMethod(c$,"size",
+function(){
+return this.associatedMap.elementCount;
+});
+Clazz_overrideMethod(c$,"clear",
+function(){
+this.associatedMap.clear();
+});
+Clazz_overrideMethod(c$,"remove",
+function(a){
+if(this.contains(a)){
+this.associatedMap.remove((a).getKey());
+return true;
+}return false;
+},"~O");
+Clazz_overrideMethod(c$,"contains",
+function(a){
+if(Clazz_instanceOf(a,java.util.Map.Entry)){
+var b=this.associatedMap.getEntry((a).getKey());
+return a.equals(b);
+}return false;
+},"~O");
+Clazz_overrideMethod(c$,"iterator",
+function(){
+return new java.util.concurrent.ConcurrentHashMap.ConcurrentHashMapIterator(((Clazz_isClassDefined("java.util.concurrent.ConcurrentHashMap$ConcurrentHashMapEntrySet$1")?0:java.util.concurrent.ConcurrentHashMap.ConcurrentHashMapEntrySet.$ConcurrentHashMap$ConcurrentHashMapEntrySet$1$()),Clazz_innerTypeInstance(java.util.concurrent.ConcurrentHashMap$ConcurrentHashMapEntrySet$1,this,null)),this.associatedMap);
+});
+c$.$ConcurrentHashMap$ConcurrentHashMapEntrySet$1$=function(){
+Clazz_pu$h(self.c$);
+c$=Clazz_declareAnonymous(java.util.concurrent,"ConcurrentHashMap$ConcurrentHashMapEntrySet$1",null,java.util.MapEntry.Type);
+Clazz_overrideMethod(c$,"get",
+function(a){
+return a;
+},"java.util.MapEntry");
+c$=Clazz_p0p();
+};
+c$=Clazz_p0p();
+Clazz_defineStatics(c$,
+"DEFAULT_SIZE",16);
+});
+Clazz_declarePackage ("jalview.viewmodel.seqfeatures");
+Clazz_load (null, "jalview.viewmodel.seqfeatures.FeatureRendererSettings", ["jalview.schemes.GraduatedColor", "java.util.Arrays", "java.util.concurrent.ConcurrentHashMap"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.renderOrder = null;
+this.featureGroups = null;
+this.featureColours = null;
+this.transparency = 0;
+this.featureOrder = null;
+Clazz_instantialize (this, arguments);
+}, jalview.viewmodel.seqfeatures, "FeatureRendererSettings", null, Cloneable);
+Clazz_makeConstructor (c$, 
+function (renderOrder, featureGroups, featureColours, transparency, featureOrder) {
+this.renderOrder = java.util.Arrays.copyOf (renderOrder, renderOrder.length);
+this.featureGroups =  new java.util.concurrent.ConcurrentHashMap (featureGroups);
+this.featureColours =  new java.util.concurrent.ConcurrentHashMap (featureColours);
+this.transparency = transparency;
+this.featureOrder =  new java.util.concurrent.ConcurrentHashMap (featureOrder);
+}, "~A,java.util.Hashtable,java.util.Hashtable,~N,java.util.Hashtable");
+Clazz_makeConstructor (c$, 
+function (fr) {
+this.renderOrder = null;
+this.featureGroups =  new java.util.concurrent.ConcurrentHashMap ();
+this.featureColours =  new java.util.concurrent.ConcurrentHashMap ();
+this.featureOrder =  new java.util.concurrent.ConcurrentHashMap ();
+if (fr.renderOrder != null) {
+this.renderOrder =  new Array (fr.renderOrder.length);
+System.arraycopy (fr.renderOrder, 0, this.renderOrder, 0, fr.renderOrder.length);
+}if (fr.featureGroups != null) {
+this.featureGroups =  new java.util.concurrent.ConcurrentHashMap (fr.featureGroups);
+}if (fr.featureColours != null) {
+this.featureColours =  new java.util.concurrent.ConcurrentHashMap (fr.featureColours);
+}var en = fr.featureColours.keySet ().iterator ();
+while (en.hasNext ()) {
+var next = en.next ();
+var val = this.featureColours.get (next);
+if (Clazz_instanceOf (val, jalview.schemes.GraduatedColor)) {
+this.featureColours.put (next,  new jalview.schemes.GraduatedColor (val));
+}}
+this.transparency = fr.transparency;
+if (fr.featureOrder != null) {
+this.featureOrder =  new java.util.concurrent.ConcurrentHashMap (fr.featureOrder);
+}}, "jalview.viewmodel.seqfeatures.FeatureRendererModel");
+});
+Clazz_declarePackage ("jalview.viewmodel.seqfeatures");
+Clazz_load (["jalview.api.FeaturesDisplayedI", "java.util.HashSet"], "jalview.viewmodel.seqfeatures.FeaturesDisplayed", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.featuresDisplayed = null;
+this.featuresRegistered = null;
+Clazz_instantialize (this, arguments);
+}, jalview.viewmodel.seqfeatures, "FeaturesDisplayed", null, jalview.api.FeaturesDisplayedI);
+Clazz_prepareFields (c$, function () {
+this.featuresDisplayed =  new java.util.HashSet ();
+this.featuresRegistered =  new java.util.HashSet ();
+});
+Clazz_makeConstructor (c$, 
+function (featuresDisplayed2) {
+var fdisp = featuresDisplayed2.getVisibleFeatures ();
+var ftype;
+while (fdisp.hasNext ()) {
+ftype = fdisp.next ();
+this.featuresDisplayed.add (ftype);
+this.featuresRegistered.add (ftype);
+}
+}, "jalview.api.FeaturesDisplayedI");
+Clazz_makeConstructor (c$, 
+function () {
+});
+Clazz_defineMethod (c$, "getVisibleFeatures", 
+function () {
+return this.featuresDisplayed.iterator ();
+});
+Clazz_overrideMethod (c$, "isVisible", 
+function (featureType) {
+return this.featuresDisplayed.contains (featureType);
+}, "~S");
+Clazz_overrideMethod (c$, "areVisible", 
+function (featureTypes) {
+return this.featuresDisplayed.containsAll (featureTypes);
+}, "java.util.Collection");
+Clazz_overrideMethod (c$, "clear", 
+function () {
+this.featuresDisplayed.clear ();
+this.featuresRegistered.clear ();
+});
+Clazz_overrideMethod (c$, "setAllVisible", 
+function (makeVisible) {
+this.featuresDisplayed.addAll (makeVisible);
+this.featuresRegistered.addAll (makeVisible);
+}, "java.util.Collection");
+Clazz_overrideMethod (c$, "setAllRegisteredVisible", 
+function () {
+this.featuresDisplayed.addAll (this.featuresRegistered);
+});
+Clazz_overrideMethod (c$, "setVisible", 
+function (featureType) {
+this.featuresDisplayed.add (featureType);
+this.featuresRegistered.add (featureType);
+}, "~S");
+Clazz_overrideMethod (c$, "isRegistered", 
+function (type) {
+return this.featuresRegistered.contains (type);
+}, "~S");
+Clazz_overrideMethod (c$, "getVisibleFeatureCount", 
+function () {
+return this.featuresDisplayed.size ();
+});
+Clazz_overrideMethod (c$, "getRegisterdFeaturesCount", 
+function () {
+return this.featuresRegistered.size ();
+});
+});
+Clazz_declarePackage ("jalview.api");
+Clazz_declareInterface (jalview.api, "FeaturesDisplayedI");
+Clazz_declarePackage ("java.awt");
+Clazz_load (["java.awt.Composite"], "java.awt.AlphaComposite", ["java.lang.Float", "$.IllegalArgumentException", "jssun.java2d.SunCompositeContext"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.extraAlpha = 0;
+this.rule = 0;
+Clazz_instantialize (this, arguments);
+}, java.awt, "AlphaComposite", null, java.awt.Composite);
+Clazz_makeConstructor (c$, 
+ function (rule) {
+this.construct (rule, 1.0);
+}, "~N");
+Clazz_makeConstructor (c$, 
+ function (rule, alpha) {
+if (alpha < 0.0 || alpha > 1.0) {
+throw  new IllegalArgumentException ("alpha value out of range");
+}if (rule < 1 || rule > 12) {
+throw  new IllegalArgumentException ("unknown composite rule");
+}this.rule = rule;
+this.extraAlpha = alpha;
+}, "~N,~N");
+c$.getInstance = Clazz_defineMethod (c$, "getInstance", 
+function (rule) {
+switch (rule) {
+case 1:
+return java.awt.AlphaComposite.Clear;
+case 2:
+return java.awt.AlphaComposite.Src;
+case 9:
+return java.awt.AlphaComposite.Dst;
+case 3:
+return java.awt.AlphaComposite.SrcOver;
+case 4:
+return java.awt.AlphaComposite.DstOver;
+case 5:
+return java.awt.AlphaComposite.SrcIn;
+case 6:
+return java.awt.AlphaComposite.DstIn;
+case 7:
+return java.awt.AlphaComposite.SrcOut;
+case 8:
+return java.awt.AlphaComposite.DstOut;
+case 10:
+return java.awt.AlphaComposite.SrcAtop;
+case 11:
+return java.awt.AlphaComposite.DstAtop;
+case 12:
+return java.awt.AlphaComposite.Xor;
+default:
+throw  new IllegalArgumentException ("unknown composite rule");
+}
+}, "~N");
+c$.getInstance = Clazz_defineMethod (c$, "getInstance", 
+function (rule, alpha) {
+if (alpha == 1.0) {
+return java.awt.AlphaComposite.getInstance (rule);
+}return  new java.awt.AlphaComposite (rule, alpha);
+}, "~N,~N");
+Clazz_overrideMethod (c$, "createContext", 
+function (srcColorModel, dstColorModel, hints) {
+return  new jssun.java2d.SunCompositeContext (this, srcColorModel, dstColorModel);
+}, "java.awt.image.ColorModel,java.awt.image.ColorModel,java.awt.RenderingHints");
+Clazz_defineMethod (c$, "getAlpha", 
+function () {
+return this.extraAlpha;
+});
+Clazz_defineMethod (c$, "getRule", 
+function () {
+return this.rule;
+});
+Clazz_defineMethod (c$, "derive", 
+function (rule) {
+return (this.rule == rule) ? this : java.awt.AlphaComposite.getInstance (rule, this.extraAlpha);
+}, "~N");
+Clazz_defineMethod (c$, "derive", 
+function (alpha) {
+return (this.extraAlpha == alpha) ? this : java.awt.AlphaComposite.getInstance (this.rule, alpha);
+}, "~N");
+Clazz_overrideMethod (c$, "hashCode", 
+function () {
+return (Float.floatToIntBits (this.extraAlpha) * 31 + this.rule);
+});
+Clazz_overrideMethod (c$, "equals", 
+function (obj) {
+if (!(Clazz_instanceOf (obj, java.awt.AlphaComposite))) {
+return false;
+}var ac = obj;
+if (this.rule != ac.rule) {
+return false;
+}if (this.extraAlpha != ac.extraAlpha) {
+return false;
+}return true;
+}, "~O");
+Clazz_defineStatics (c$,
+"CLEAR", 1,
+"SRC", 2,
+"DST", 9,
+"SRC_OVER", 3,
+"DST_OVER", 4,
+"SRC_IN", 5,
+"DST_IN", 6,
+"SRC_OUT", 7,
+"DST_OUT", 8,
+"SRC_ATOP", 10,
+"DST_ATOP", 11,
+"XOR", 12);
+c$.Clear = c$.prototype.Clear =  new java.awt.AlphaComposite (1);
+c$.Src = c$.prototype.Src =  new java.awt.AlphaComposite (2);
+c$.Dst = c$.prototype.Dst =  new java.awt.AlphaComposite (9);
+c$.SrcOver = c$.prototype.SrcOver =  new java.awt.AlphaComposite (3);
+c$.DstOver = c$.prototype.DstOver =  new java.awt.AlphaComposite (4);
+c$.SrcIn = c$.prototype.SrcIn =  new java.awt.AlphaComposite (5);
+c$.DstIn = c$.prototype.DstIn =  new java.awt.AlphaComposite (6);
+c$.SrcOut = c$.prototype.SrcOut =  new java.awt.AlphaComposite (7);
+c$.DstOut = c$.prototype.DstOut =  new java.awt.AlphaComposite (8);
+c$.SrcAtop = c$.prototype.SrcAtop =  new java.awt.AlphaComposite (10);
+c$.DstAtop = c$.prototype.DstAtop =  new java.awt.AlphaComposite (11);
+c$.Xor = c$.prototype.Xor =  new java.awt.AlphaComposite (12);
+Clazz_defineStatics (c$,
+"MIN_RULE", 1,
+"MAX_RULE", 12);
+});
+Clazz_declarePackage ("java.awt");
+Clazz_declareInterface (java.awt, "Composite");
+Clazz_declarePackage ("jssun.java2d");
+Clazz_load (["java.awt.CompositeContext"], "jssun.java2d.SunCompositeContext", ["java.lang.NullPointerException", "java.awt.image.BufferedImage", "$.WritableRaster", "jssun.java2d.loops.CompositeType"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.srcCM = null;
+this.dstCM = null;
+this.composite = null;
+this.comptype = null;
+Clazz_instantialize (this, arguments);
+}, jssun.java2d, "SunCompositeContext", null, java.awt.CompositeContext);
+Clazz_makeConstructor (c$, 
+function (ac, s, d) {
+if (s == null) {
+throw  new NullPointerException ("Source color model cannot be null");
+}if (d == null) {
+throw  new NullPointerException ("Destination color model cannot be null");
+}this.srcCM = s;
+this.dstCM = d;
+this.composite = ac;
+this.comptype = jssun.java2d.loops.CompositeType.forAlphaComposite (ac);
+}, "java.awt.AlphaComposite,java.awt.image.ColorModel,java.awt.image.ColorModel");
+Clazz_overrideMethod (c$, "dispose", 
+function () {
+});
+Clazz_overrideMethod (c$, "compose", 
+function (srcArg, dstIn, dstOut) {
+var src;
+var w;
+var h;
+if (dstIn !== dstOut) {
+dstOut.setDataElementsRaster (0, 0, dstIn);
+}if (Clazz_instanceOf (srcArg, java.awt.image.WritableRaster)) {
+src = srcArg;
+} else {
+src = srcArg.createCompatibleWritableRaster ();
+src.setDataElements (0, 0, srcArg);
+}w = Math.min (src.getWidth (), dstIn.getWidth ());
+h = Math.min (src.getHeight (), dstIn.getHeight ());
+var srcImg =  new java.awt.image.BufferedImage (this.srcCM, src, this.srcCM.isAlphaPremultiplied (), null);
+var dstImg =  new java.awt.image.BufferedImage (this.dstCM, dstOut, this.dstCM.isAlphaPremultiplied (), null);
+}, "java.awt.image.Raster,java.awt.image.Raster,java.awt.image.WritableRaster");
+});
+Clazz_declarePackage ("java.awt");
+Clazz_declareInterface (java.awt, "CompositeContext");
+Clazz_declarePackage ("java.awt.image");
+Clazz_load (["java.awt.Image", "$.Transparency"], "java.awt.image.BufferedImage", ["java.awt.Image", "java.lang.IllegalArgumentException", "$.NullPointerException", "java.util.Hashtable", "java.awt.GraphicsEnvironment", "$.Point", "$.Rectangle", "java.awt.image.ColorModel", "$.DirectColorModel", "$.Raster", "jssun.awt.image.OffScreenImageSource"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.imageType = 0;
+this.colorModel = null;
+this.raster = null;
+this.osis = null;
+this.properties = null;
+this.$isAlphaPremultiplied = false;
+Clazz_instantialize (this, arguments);
+}, java.awt.image, "BufferedImage", java.awt.Image, java.awt.Transparency);
+Clazz_makeConstructor (c$, 
+function (width, height, imageType) {
+Clazz_superConstructor (this, java.awt.image.BufferedImage, []);
+switch (imageType) {
+case 1:
+{
+this.colorModel =  new java.awt.image.DirectColorModel (24, 0x00ff0000, 0x0000ff00, 0x000000ff, 0x0);
+this.raster = this.colorModel.createCompatibleWritableRaster (width, height);
+}break;
+case 2:
+{
+this.colorModel = java.awt.image.ColorModel.getRGBdefault ();
+this.raster = this.colorModel.createCompatibleWritableRaster (width, height);
+}break;
+default:
+throw  new IllegalArgumentException ("Unknown image type " + imageType);
+}
+this.imageType = imageType;
+}, "~N,~N,~N");
+Clazz_makeConstructor (c$, 
+function (cm, raster, isRasterPremultiplied, properties) {
+Clazz_superConstructor (this, java.awt.image.BufferedImage, []);
+if ((raster.minX != 0) || (raster.minY != 0)) {
+throw  new IllegalArgumentException ("Raster " + raster + " has minX or minY not equal to zero: " + raster.minX + " " + raster.minY);
+}this.colorModel = cm;
+this.raster = raster;
+this.properties = properties;
+var cs;
+cs = cm.getColorSpace ();
+}, "java.awt.image.ColorModel,java.awt.image.WritableRaster,~B,java.util.Hashtable");
+Clazz_defineMethod (c$, "getType", 
+function () {
+return this.imageType;
+});
+Clazz_defineMethod (c$, "getColorModel", 
+function () {
+return this.colorModel;
+});
+Clazz_defineMethod (c$, "getRaster", 
+function () {
+return this.raster;
+});
+Clazz_defineMethod (c$, "getRGB", 
+function (x, y) {
+return 0;
+}, "~N,~N");
+Clazz_defineMethod (c$, "getRGB", 
+function (startX, startY, w, h, rgbArray, offset, scansize) {
+return rgbArray;
+}, "~N,~N,~N,~N,~A,~N,~N");
+Clazz_defineMethod (c$, "setRGB", 
+function (x, y, rgb) {
+}, "~N,~N,~N");
+Clazz_defineMethod (c$, "setRGB", 
+function (startX, startY, w, h, rgbArray, offset, scansize) {
+}, "~N,~N,~N,~N,~A,~N,~N");
+Clazz_defineMethod (c$, "getWidth", 
+function () {
+return this.raster.getWidth ();
+});
+Clazz_defineMethod (c$, "getHeight", 
+function () {
+return this.raster.getHeight ();
+});
+Clazz_defineMethod (c$, "getWidth", 
+function (observer) {
+return this.raster.getWidth ();
+}, "java.awt.image.ImageObserver");
+Clazz_defineMethod (c$, "getHeight", 
+function (observer) {
+return this.raster.getHeight ();
+}, "java.awt.image.ImageObserver");
+Clazz_overrideMethod (c$, "getSource", 
+function () {
+if (this.osis == null) {
+if (this.properties == null) {
+this.properties =  new java.util.Hashtable ();
+}this.osis =  new jssun.awt.image.OffScreenImageSource (this, this.properties);
+}return this.osis;
+});
+Clazz_defineMethod (c$, "getProperty", 
+function (name, observer) {
+return this.getProperty (name);
+}, "~S,java.awt.image.ImageObserver");
+Clazz_defineMethod (c$, "getProperty", 
+function (name) {
+if (name == null) {
+throw  new NullPointerException ("null property name is not allowed");
+}if (this.properties == null) {
+return java.awt.Image.UndefinedProperty;
+}var o = this.properties.get (name);
+if (o == null) {
+o = java.awt.Image.UndefinedProperty;
+}return o;
+}, "~S");
+Clazz_overrideMethod (c$, "getGraphics", 
+function () {
+return this.createGraphics ();
+});
+Clazz_defineMethod (c$, "createGraphics", 
+function () {
+var env = java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment ();
+return env.createGraphics (this);
+});
+Clazz_defineMethod (c$, "getSubimage", 
+function (x, y, w, h) {
+return  new java.awt.image.BufferedImage (this.colorModel, this.raster.createWritableChild (x, y, w, h, 0, 0, null), this.colorModel.isAlphaPremultiplied (), this.properties);
+}, "~N,~N,~N,~N");
+Clazz_defineMethod (c$, "isAlphaPremultiplied", 
+function () {
+return false;
+});
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return  String.instantialize ("BufferedImage@" + Integer.toHexString (this.hashCode ()) + ": type = " + this.imageType + " " + this.colorModel + " " + this.raster);
+});
+Clazz_defineMethod (c$, "getSources", 
+function () {
+return null;
+});
+Clazz_defineMethod (c$, "getPropertyNames", 
+function () {
+return null;
+});
+Clazz_defineMethod (c$, "getMinX", 
+function () {
+return this.raster.getMinX ();
+});
+Clazz_defineMethod (c$, "getMinY", 
+function () {
+return this.raster.getMinY ();
+});
+Clazz_defineMethod (c$, "getSampleModel", 
+function () {
+return this.raster.getSampleModel ();
+});
+Clazz_defineMethod (c$, "getNumXTiles", 
+function () {
+return 1;
+});
+Clazz_defineMethod (c$, "getNumYTiles", 
+function () {
+return 1;
+});
+Clazz_defineMethod (c$, "getMinTileX", 
+function () {
+return 0;
+});
+Clazz_defineMethod (c$, "getMinTileY", 
+function () {
+return 0;
+});
+Clazz_defineMethod (c$, "getTileWidth", 
+function () {
+return this.raster.getWidth ();
+});
+Clazz_defineMethod (c$, "getTileHeight", 
+function () {
+return this.raster.getHeight ();
+});
+Clazz_defineMethod (c$, "getTileGridXOffset", 
+function () {
+return 0;
+});
+Clazz_defineMethod (c$, "getTileGridYOffset", 
+function () {
+return 0;
+});
+Clazz_defineMethod (c$, "getTile", 
+function (tileX, tileY) {
+return this.raster;
+}, "~N,~N");
+Clazz_defineMethod (c$, "getData", 
+function () {
+var width = this.raster.getWidth ();
+var height = this.raster.getHeight ();
+var startX = this.raster.getMinX ();
+var startY = this.raster.getMinY ();
+var wr = java.awt.image.Raster.createWritableRaster (this.raster.getSampleModel (),  new java.awt.Point (this.raster.getSampleModelTranslateX (), this.raster.getSampleModelTranslateY ()));
+var tdata = null;
+for (var i = startY; i < startY + height; i++) {
+tdata = this.raster.getDataElements (startX, i, width, 1, tdata);
+wr.setDataElements (startX, i, width, 1, tdata);
+}
+return wr;
+});
+Clazz_defineMethod (c$, "getData", 
+function (rect) {
+var sm = this.raster.getSampleModel ();
+var nsm = sm.createCompatibleSampleModel (rect.width, rect.height);
+var wr = java.awt.image.Raster.createWritableRaster (nsm, rect.getLocation ());
+var width = rect.width;
+var height = rect.height;
+var startX = rect.x;
+var startY = rect.y;
+var tdata = null;
+for (var i = startY; i < startY + height; i++) {
+tdata = this.raster.getDataElements (startX, i, width, 1, tdata);
+wr.setDataElements (startX, i, width, 1, tdata);
+}
+return wr;
+}, "java.awt.Rectangle");
+Clazz_defineMethod (c$, "copyData", 
+function (outRaster) {
+if (outRaster == null) {
+return this.getData ();
+}var width = outRaster.getWidth ();
+var height = outRaster.getHeight ();
+var startX = outRaster.getMinX ();
+var startY = outRaster.getMinY ();
+var tdata = null;
+for (var i = startY; i < startY + height; i++) {
+tdata = this.raster.getDataElements (startX, i, width, 1, tdata);
+outRaster.setDataElements (startX, i, width, 1, tdata);
+}
+return outRaster;
+}, "java.awt.image.WritableRaster");
+Clazz_defineMethod (c$, "setData", 
+function (r) {
+var width = r.getWidth ();
+var height = r.getHeight ();
+var startX = r.getMinX ();
+var startY = r.getMinY ();
+var tdata = null;
+var rclip =  new java.awt.Rectangle (startX, startY, width, height);
+var bclip =  new java.awt.Rectangle (0, 0, this.raster.width, this.raster.height);
+var intersect = rclip.intersection (bclip);
+if (intersect.isEmpty ()) {
+return;
+}width = intersect.width;
+height = intersect.height;
+startX = intersect.x;
+startY = intersect.y;
+for (var i = startY; i < startY + height; i++) {
+tdata = r.getPixels (startX, i, width, 1, tdata);
+this.raster.setPixels (startX, i, width, 1, tdata);
+}
+}, "java.awt.image.Raster");
+Clazz_overrideMethod (c$, "getTransparency", 
+function () {
+return this.colorModel.getTransparency ();
+});
+Clazz_defineStatics (c$,
+"TYPE_CUSTOM", 0,
+"TYPE_INT_RGB", 1,
+"TYPE_INT_ARGB", 2);
+});
+Clazz_declarePackage ("java.awt");
+c$ = Clazz_decorateAsClass (function () {
+this.accelerationPriority = .5;
+Clazz_instantialize (this, arguments);
+}, java.awt, "Image");
+Clazz_defineMethod (c$, "getScaledInstance", 
+function (width, height, hints) {
+return null;
+}, "~N,~N,~N");
+Clazz_defineMethod (c$, "flush", 
+function () {
+});
+Clazz_defineMethod (c$, "setAccelerationPriority", 
+function (priority) {
+}, "~N");
+Clazz_defineMethod (c$, "getAccelerationPriority", 
+function () {
+return this.accelerationPriority;
+});
+c$.UndefinedProperty = c$.prototype.UndefinedProperty =  new Clazz._O ();
+Clazz_defineStatics (c$,
+"SCALE_DEFAULT", 1,
+"SCALE_FAST", 2,
+"SCALE_SMOOTH", 4,
+"SCALE_REPLICATE", 8,
+"SCALE_AREA_AVERAGING", 16);
+Clazz_declarePackage ("java.awt.image");
+Clazz_load (["java.awt.image.PackedColorModel"], "java.awt.image.DirectColorModel", ["java.lang.ClassCastException", "$.IllegalArgumentException", "$.UnsupportedOperationException", "java.awt.color.ColorSpace", "java.awt.image.ColorModel", "$.Raster"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.red_mask = 0;
+this.green_mask = 0;
+this.blue_mask = 0;
+this.alpha_mask = 0;
+this.is_LinearRGB = false;
+this.lRGBprecision = 0;
+this.tosRGB8LUT = null;
+this.fromsRGB8LUT8 = null;
+this.fromsRGB8LUT16 = null;
+Clazz_instantialize (this, arguments);
+}, java.awt.image, "DirectColorModel", java.awt.image.PackedColorModel);
+Clazz_makeConstructor (c$, 
+function (bits, rmask, gmask, bmask) {
+this.construct (bits, rmask, gmask, bmask, 0);
+}, "~N,~N,~N,~N");
+Clazz_makeConstructor (c$, 
+function (bits, rmask, gmask, bmask, amask) {
+Clazz_superConstructor (this, java.awt.image.DirectColorModel, [java.awt.color.ColorSpace.getInstance (1000), bits, rmask, gmask, bmask, amask, false, amask == 0 ? 1 : 3, java.awt.image.ColorModel.getDefaultTransferType (bits)]);
+}, "~N,~N,~N,~N,~N");
+Clazz_makeConstructor (c$, 
+function (space, bits, rmask, gmask, bmask, amask, isAlphaPremultiplied, transferType) {
+Clazz_superConstructor (this, java.awt.image.DirectColorModel, [space, bits, rmask, gmask, bmask, amask, isAlphaPremultiplied, amask == 0 ? 1 : 3, transferType]);
+}, "java.awt.color.ColorSpace,~N,~N,~N,~N,~N,~B,~N");
+Clazz_defineMethod (c$, "getRedMask", 
+function () {
+return this.maskArray[0];
+});
+Clazz_defineMethod (c$, "getGreenMask", 
+function () {
+return this.maskArray[1];
+});
+Clazz_defineMethod (c$, "getBlueMask", 
+function () {
+return this.maskArray[2];
+});
+Clazz_defineMethod (c$, "getAlphaMask", 
+function () {
+if (this.supportsAlpha) {
+return this.maskArray[3];
+} else {
+return 0;
+}});
+Clazz_defineMethod (c$, "getDefaultRGBComponents", 
+ function (pixel) {
+var components = this.getComponents (pixel, null, 0);
+var norm = this.getNormalizedComponents (components, 0, null, 0);
+return this.colorSpace.toRGB (norm);
+}, "~N");
+Clazz_defineMethod (c$, "getsRGBComponentFromsRGB", 
+ function (pixel, idx) {
+var c = ((pixel & this.maskArray[idx]) >>> this.maskOffsets[idx]);
+if (this.$isAlphaPremultiplied) {
+var a = ((pixel & this.maskArray[3]) >>> this.maskOffsets[3]);
+c = (a == 0) ? 0 : Clazz_floatToInt (((c * this.scaleFactors[idx]) * 255.0 / (a * this.scaleFactors[3])) + 0.5);
+} else if (this.scaleFactors[idx] != 1.0) {
+c = Clazz_floatToInt ((c * this.scaleFactors[idx]) + 0.5);
+}return c;
+}, "~N,~N");
+Clazz_defineMethod (c$, "getsRGBComponentFromLinearRGB", 
+ function (pixel, idx) {
+var c = ((pixel & this.maskArray[idx]) >>> this.maskOffsets[idx]);
+if (this.$isAlphaPremultiplied) {
+var factor = ((1 << this.lRGBprecision) - 1);
+var a = ((pixel & this.maskArray[3]) >>> this.maskOffsets[3]);
+c = (a == 0) ? 0 : Clazz_floatToInt (((c * this.scaleFactors[idx]) * factor / (a * this.scaleFactors[3])) + 0.5);
+} else if (this.nBits[idx] != this.lRGBprecision) {
+if (this.lRGBprecision == 16) {
+c = Clazz_floatToInt ((c * this.scaleFactors[idx] * 257.0) + 0.5);
+} else {
+c = Clazz_floatToInt ((c * this.scaleFactors[idx]) + 0.5);
+}}return this.tosRGB8LUT[c] & 0xff;
+}, "~N,~N");
+Clazz_defineMethod (c$, "getRed", 
+function (pixel) {
+if (this.is_sRGB) {
+return this.getsRGBComponentFromsRGB (pixel, 0);
+} else if (this.is_LinearRGB) {
+return this.getsRGBComponentFromLinearRGB (pixel, 0);
+}var rgb = this.getDefaultRGBComponents (pixel);
+return Clazz_floatToInt (rgb[0] * 255.0 + 0.5);
+}, "~N");
+Clazz_defineMethod (c$, "getGreen", 
+function (pixel) {
+if (this.is_sRGB) {
+return this.getsRGBComponentFromsRGB (pixel, 1);
+} else if (this.is_LinearRGB) {
+return this.getsRGBComponentFromLinearRGB (pixel, 1);
+}var rgb = this.getDefaultRGBComponents (pixel);
+return Clazz_floatToInt (rgb[1] * 255.0 + 0.5);
+}, "~N");
+Clazz_defineMethod (c$, "getBlue", 
+function (pixel) {
+if (this.is_sRGB) {
+return this.getsRGBComponentFromsRGB (pixel, 2);
+} else if (this.is_LinearRGB) {
+return this.getsRGBComponentFromLinearRGB (pixel, 2);
+}var rgb = this.getDefaultRGBComponents (pixel);
+return Clazz_floatToInt (rgb[2] * 255.0 + 0.5);
+}, "~N");
+Clazz_defineMethod (c$, "getAlpha", 
+function (pixel) {
+if (!this.supportsAlpha) return 255;
+var a = ((pixel & this.maskArray[3]) >>> this.maskOffsets[3]);
+if (this.scaleFactors[3] != 1.0) {
+a = Clazz_floatToInt (a * this.scaleFactors[3] + 0.5);
+}return a;
+}, "~N");
+Clazz_defineMethod (c$, "getRGB", 
+function (pixel) {
+if (this.is_sRGB || this.is_LinearRGB) {
+return (this.getAlpha (pixel) << 24) | (this.getRed (pixel) << 16) | (this.getGreen (pixel) << 8) | (this.getBlue (pixel) << 0);
+}var rgb = this.getDefaultRGBComponents (pixel);
+return (this.getAlpha (pixel) << 24) | ((Clazz_floatToInt (rgb[0] * 255.0 + 0.5)) << 16) | ((Clazz_floatToInt (rgb[1] * 255.0 + 0.5)) << 8) | ((Clazz_floatToInt (rgb[2] * 255.0 + 0.5)) << 0);
+}, "~N");
+Clazz_defineMethod (c$, "getRed", 
+function (inData) {
+var pixel = 0;
+switch (this.transferType) {
+case 0:
+var bdata = inData;
+pixel = bdata[0] & 0xff;
+break;
+case 3:
+var idata = inData;
+pixel = idata[0];
+break;
+default:
+throw  new UnsupportedOperationException ("This method has not been " + "implemented for transferType " + this.transferType);
+}
+return this.getRed (pixel);
+}, "~O");
+Clazz_defineMethod (c$, "getGreen", 
+function (inData) {
+var pixel = 0;
+switch (this.transferType) {
+case 0:
+var bdata = inData;
+pixel = bdata[0] & 0xff;
+break;
+case 3:
+var idata = inData;
+pixel = idata[0];
+break;
+default:
+throw  new UnsupportedOperationException ("This method has not been " + "implemented for transferType " + this.transferType);
+}
+return this.getGreen (pixel);
+}, "~O");
+Clazz_defineMethod (c$, "getBlue", 
+function (inData) {
+var pixel = 0;
+switch (this.transferType) {
+case 0:
+var bdata = inData;
+pixel = bdata[0] & 0xff;
+break;
+case 3:
+var idata = inData;
+pixel = idata[0];
+break;
+default:
+throw  new UnsupportedOperationException ("This method has not been " + "implemented for transferType " + this.transferType);
+}
+return this.getBlue (pixel);
+}, "~O");
+Clazz_defineMethod (c$, "getAlpha", 
+function (inData) {
+var pixel = 0;
+switch (this.transferType) {
+case 0:
+var bdata = inData;
+pixel = bdata[0] & 0xff;
+break;
+case 3:
+var idata = inData;
+pixel = idata[0];
+break;
+default:
+throw  new UnsupportedOperationException ("This method has not been " + "implemented for transferType " + this.transferType);
+}
+return this.getAlpha (pixel);
+}, "~O");
+Clazz_defineMethod (c$, "getRGB", 
+function (inData) {
+var pixel = 0;
+switch (this.transferType) {
+case 0:
+var bdata = inData;
+pixel = bdata[0] & 0xff;
+break;
+case 3:
+var idata = inData;
+pixel = idata[0];
+break;
+default:
+throw  new UnsupportedOperationException ("This method has not been " + "implemented for transferType " + this.transferType);
+}
+return this.getRGB (pixel);
+}, "~O");
+Clazz_defineMethod (c$, "getDataElements", 
+function (rgb, pixel) {
+var intpixel = null;
+if (this.transferType == 3 && pixel != null) {
+intpixel = pixel;
+intpixel[0] = 0;
+} else {
+intpixel =  Clazz_newIntArray (1, 0);
+}var defaultCM = java.awt.image.ColorModel.getRGBdefault ();
+if (this === defaultCM || this.equals (defaultCM)) {
+intpixel[0] = rgb;
+return intpixel;
+}var red;
+var grn;
+var blu;
+var alp;
+red = (rgb >> 16) & 0xff;
+grn = (rgb >> 8) & 0xff;
+blu = rgb & 0xff;
+if (this.is_sRGB || this.is_LinearRGB) {
+var precision;
+var factor;
+if (this.is_LinearRGB) {
+if (this.lRGBprecision == 8) {
+red = this.fromsRGB8LUT8[red] & 0xff;
+grn = this.fromsRGB8LUT8[grn] & 0xff;
+blu = this.fromsRGB8LUT8[blu] & 0xff;
+precision = 8;
+factor = 0.003921569;
+} else {
+red = this.fromsRGB8LUT16[red] & 0xffff;
+grn = this.fromsRGB8LUT16[grn] & 0xffff;
+blu = this.fromsRGB8LUT16[blu] & 0xffff;
+precision = 16;
+factor = 1.5259022E-5;
+}} else {
+precision = 8;
+factor = 0.003921569;
+}if (this.supportsAlpha) {
+alp = (rgb >> 24) & 0xff;
+if (this.$isAlphaPremultiplied) {
+factor *= (alp * (0.003921569));
+precision = -1;
+}if (this.nBits[3] != 8) {
+alp = Clazz_floatToInt ((alp * (0.003921569) * ((1 << this.nBits[3]) - 1)) + 0.5);
+if (alp > ((1 << this.nBits[3]) - 1)) {
+alp = (1 << this.nBits[3]) - 1;
+}}intpixel[0] = alp << this.maskOffsets[3];
+}if (this.nBits[0] != precision) {
+red = Clazz_floatToInt ((red * factor * ((1 << this.nBits[0]) - 1)) + 0.5);
+}if (this.nBits[1] != precision) {
+grn = Clazz_floatToInt ((grn * factor * ((1 << this.nBits[1]) - 1)) + 0.5);
+}if (this.nBits[2] != precision) {
+blu = Clazz_floatToInt ((blu * factor * ((1 << this.nBits[2]) - 1)) + 0.5);
+}} else {
+var norm =  Clazz_newFloatArray (3, 0);
+var factor = 0.003921569;
+norm[0] = red * factor;
+norm[1] = grn * factor;
+norm[2] = blu * factor;
+norm = this.colorSpace.fromRGB (norm);
+if (this.supportsAlpha) {
+alp = (rgb >> 24) & 0xff;
+if (this.$isAlphaPremultiplied) {
+factor *= alp;
+for (var i = 0; i < 3; i++) {
+norm[i] *= factor;
+}
+}if (this.nBits[3] != 8) {
+alp = Clazz_floatToInt ((alp * (0.003921569) * ((1 << this.nBits[3]) - 1)) + 0.5);
+if (alp > ((1 << this.nBits[3]) - 1)) {
+alp = (1 << this.nBits[3]) - 1;
+}}intpixel[0] = alp << this.maskOffsets[3];
+}red = Clazz_floatToInt ((norm[0] * ((1 << this.nBits[0]) - 1)) + 0.5);
+grn = Clazz_floatToInt ((norm[1] * ((1 << this.nBits[1]) - 1)) + 0.5);
+blu = Clazz_floatToInt ((norm[2] * ((1 << this.nBits[2]) - 1)) + 0.5);
+}if (this.maxBits > 23) {
+if (red > ((1 << this.nBits[0]) - 1)) {
+red = (1 << this.nBits[0]) - 1;
+}if (grn > ((1 << this.nBits[1]) - 1)) {
+grn = (1 << this.nBits[1]) - 1;
+}if (blu > ((1 << this.nBits[2]) - 1)) {
+blu = (1 << this.nBits[2]) - 1;
+}}intpixel[0] |= (red << this.maskOffsets[0]) | (grn << this.maskOffsets[1]) | (blu << this.maskOffsets[2]);
+switch (this.transferType) {
+case 0:
+{
+var bdata;
+if (pixel == null) {
+bdata =  Clazz_newByteArray (1, 0);
+} else {
+bdata = pixel;
+}bdata[0] = (0xff & intpixel[0]);
+return bdata;
+}case 3:
+return intpixel;
+}
+throw  new UnsupportedOperationException ("This method has not been " + "implemented for transferType " + this.transferType);
+}, "~N,~O");
+Clazz_defineMethod (c$, "getComponents", 
+function (pixel, components, offset) {
+if (components == null) {
+components =  Clazz_newIntArray (offset + this.numComponents, 0);
+}for (var i = 0; i < this.numComponents; i++) {
+components[offset + i] = (pixel & this.maskArray[i]) >>> this.maskOffsets[i];
+}
+return components;
+}, "~N,~A,~N");
+Clazz_defineMethod (c$, "getComponents", 
+function (pixel, components, offset) {
+var intpixel = 0;
+switch (this.transferType) {
+case 0:
+var bdata = pixel;
+intpixel = bdata[0] & 0xff;
+break;
+case 3:
+var idata = pixel;
+intpixel = idata[0];
+break;
+default:
+throw  new UnsupportedOperationException ("This method has not been " + "implemented for transferType " + this.transferType);
+}
+return this.getComponents (intpixel, components, offset);
+}, "~O,~A,~N");
+Clazz_overrideMethod (c$, "createCompatibleWritableRaster", 
+function (w, h) {
+if ((w <= 0) || (h <= 0)) {
+throw  new IllegalArgumentException ("Width (" + w + ") and height (" + h + ") cannot be <= 0");
+}var bandmasks;
+if (this.supportsAlpha) {
+bandmasks =  Clazz_newIntArray (4, 0);
+bandmasks[3] = this.alpha_mask;
+} else {
+bandmasks =  Clazz_newIntArray (3, 0);
+}bandmasks[0] = this.red_mask;
+bandmasks[1] = this.green_mask;
+bandmasks[2] = this.blue_mask;
+if (this.pixel_bits > 8) {
+return java.awt.image.Raster.createPackedRaster (3, w, h, bandmasks, null);
+} else {
+return java.awt.image.Raster.createPackedRaster (0, w, h, bandmasks, null);
+}}, "~N,~N");
+Clazz_defineMethod (c$, "getDataElement", 
+function (components, offset) {
+var pixel = 0;
+for (var i = 0; i < this.numComponents; i++) {
+pixel |= ((components[offset + i] << this.maskOffsets[i]) & this.maskArray[i]);
+}
+return pixel;
+}, "~A,~N");
+Clazz_defineMethod (c$, "getDataElements", 
+function (components, offset, obj) {
+var pixel = 0;
+for (var i = 0; i < this.numComponents; i++) {
+pixel |= ((components[offset + i] << this.maskOffsets[i]) & this.maskArray[i]);
+}
+switch (this.transferType) {
+case 0:
+if (Clazz_instanceOf (obj, Array)) {
+var bdata = obj;
+bdata[0] = (pixel & 0xff);
+return bdata;
+} else {
+var bdata =  Clazz_newByteArray (-1, [(pixel & 0xff)]);
+return bdata;
+}case 3:
+if (Clazz_instanceOf (obj, Array)) {
+var idata = obj;
+idata[0] = pixel;
+return idata;
+} else {
+var idata =  Clazz_newIntArray (-1, [pixel]);
+return idata;
+}default:
+throw  new ClassCastException ("This method has not been " + "implemented for transferType " + this.transferType);
+}
+}, "~A,~N,~O");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return  String.instantialize ("DirectColorModel: rmask=" + Integer.toHexString (this.red_mask) + " gmask=" + Integer.toHexString (this.green_mask) + " bmask=" + Integer.toHexString (this.blue_mask) + " amask=" + Integer.toHexString (this.alpha_mask));
+});
+});
+Clazz_declarePackage ("java.awt.image");
+Clazz_load (["java.awt.image.ColorModel"], "java.awt.image.PackedColorModel", ["java.lang.IllegalArgumentException"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.maskArray = null;
+this.maskOffsets = null;
+this.scaleFactors = null;
+Clazz_instantialize (this, arguments);
+}, java.awt.image, "PackedColorModel", java.awt.image.ColorModel);
+Clazz_makeConstructor (c$, 
+function (space, bits, colorMaskArray, alphaMask, isAlphaPremultiplied, trans, transferType) {
+Clazz_superConstructor (this, java.awt.image.PackedColorModel, [bits, java.awt.image.PackedColorModel.createBitsArray (colorMaskArray, alphaMask), space, (alphaMask == 0 ? false : true), isAlphaPremultiplied, trans, transferType]);
+if (bits < 1 || bits > 32) {
+throw  new IllegalArgumentException ("Number of bits must be between 1 and 32.");
+}this.maskArray =  Clazz_newIntArray (this.numComponents, 0);
+this.maskOffsets =  Clazz_newIntArray (this.numComponents, 0);
+this.scaleFactors =  Clazz_newFloatArray (this.numComponents, 0);
+for (var i = 0; i < this.numColorComponents; i++) {
+this.DecomposeMask (colorMaskArray[i], i, space.getName (i));
+}
+if (alphaMask != 0) {
+this.DecomposeMask (alphaMask, this.numColorComponents, "alpha");
+if (this.nBits[this.numComponents - 1] == 1) {
+this.transparency = 2;
+}}}, "java.awt.color.ColorSpace,~N,~A,~N,~B,~N,~N");
+Clazz_makeConstructor (c$, 
+function (space, bits, rmask, gmask, bmask, amask, isAlphaPremultiplied, trans, transferType) {
+Clazz_superConstructor (this, java.awt.image.PackedColorModel, [bits, java.awt.image.PackedColorModel.createBitsArray (rmask, gmask, bmask, amask), space, (amask == 0 ? false : true), isAlphaPremultiplied, trans, transferType]);
+if (space.getType () != 5) {
+throw  new IllegalArgumentException ("ColorSpace must be TYPE_RGB.");
+}this.maskArray =  Clazz_newIntArray (this.numComponents, 0);
+this.maskOffsets =  Clazz_newIntArray (this.numComponents, 0);
+this.scaleFactors =  Clazz_newFloatArray (this.numComponents, 0);
+this.DecomposeMask (rmask, 0, "red");
+this.DecomposeMask (gmask, 1, "green");
+this.DecomposeMask (bmask, 2, "blue");
+if (amask != 0) {
+this.DecomposeMask (amask, 3, "alpha");
+if (this.nBits[3] == 1) {
+this.transparency = 2;
+}}}, "java.awt.color.ColorSpace,~N,~N,~N,~N,~N,~B,~N,~N");
+Clazz_defineMethod (c$, "getMask", 
+function (index) {
+return this.maskArray[index];
+}, "~N");
+Clazz_defineMethod (c$, "getMasks", 
+function () {
+return this.maskArray.clone ();
+});
+Clazz_defineMethod (c$, "DecomposeMask", 
+ function (mask, idx, componentName) {
+var off = 0;
+var count = this.nBits[idx];
+this.maskArray[idx] = mask;
+if (mask != 0) {
+while ((mask & 1) == 0) {
+mask >>>= 1;
+off++;
+}
+}if (off + count > this.pixel_bits) {
+throw  new IllegalArgumentException (componentName + " mask " + Integer.toHexString (this.maskArray[idx]) + " overflows pixel (expecting " + this.pixel_bits + " bits");
+}this.maskOffsets[idx] = off;
+if (count == 0) {
+this.scaleFactors[idx] = 256.0;
+} else {
+this.scaleFactors[idx] = 255.0 / ((1 << count) - 1);
+}}, "~N,~N,~S");
+Clazz_defineMethod (c$, "equals", 
+function (obj) {
+if (!(Clazz_instanceOf (obj, java.awt.image.PackedColorModel))) {
+return false;
+}if (!Clazz_superCall (this, java.awt.image.PackedColorModel, "equals", [obj])) {
+return false;
+}var cm = obj;
+var numC = cm.getNumComponents ();
+if (numC != this.numComponents) {
+return false;
+}for (var i = 0; i < numC; i++) {
+if (this.maskArray[i] != cm.getMask (i)) {
+return false;
+}}
+return true;
+}, "~O");
+c$.createBitsArray = Clazz_defineMethod (c$, "createBitsArray", 
+ function (colorMaskArray, alphaMask) {
+var numColors = colorMaskArray.length;
+var numAlpha = (alphaMask == 0 ? 0 : 1);
+var arr =  Clazz_newIntArray (numColors + numAlpha, 0);
+for (var i = 0; i < numColors; i++) {
+arr[i] = java.awt.image.PackedColorModel.countBits (colorMaskArray[i]);
+if (arr[i] < 0) {
+throw  new IllegalArgumentException ("Noncontiguous color mask (" + Integer.toHexString (colorMaskArray[i]) + "at index " + i);
+}}
+if (alphaMask != 0) {
+arr[numColors] = java.awt.image.PackedColorModel.countBits (alphaMask);
+if (arr[numColors] < 0) {
+throw  new IllegalArgumentException ("Noncontiguous alpha mask (" + Integer.toHexString (alphaMask));
+}}return arr;
+}, "~A,~N");
+c$.createBitsArray = Clazz_defineMethod (c$, "createBitsArray", 
+ function (rmask, gmask, bmask, amask) {
+var arr =  Clazz_newIntArray (3 + (amask == 0 ? 0 : 1), 0);
+arr[0] = java.awt.image.PackedColorModel.countBits (rmask);
+arr[1] = java.awt.image.PackedColorModel.countBits (gmask);
+arr[2] = java.awt.image.PackedColorModel.countBits (bmask);
+if (arr[0] < 0) {
+throw  new IllegalArgumentException ("Noncontiguous red mask (" + Integer.toHexString (rmask));
+} else if (arr[1] < 0) {
+throw  new IllegalArgumentException ("Noncontiguous green mask (" + Integer.toHexString (gmask));
+} else if (arr[2] < 0) {
+throw  new IllegalArgumentException ("Noncontiguous blue mask (" + Integer.toHexString (bmask));
+}if (amask != 0) {
+arr[3] = java.awt.image.PackedColorModel.countBits (amask);
+if (arr[3] < 0) {
+throw  new IllegalArgumentException ("Noncontiguous alpha mask (" + Integer.toHexString (amask));
+}}return arr;
+}, "~N,~N,~N,~N");
+c$.countBits = Clazz_defineMethod (c$, "countBits", 
+ function (mask) {
+var count = 0;
+if (mask != 0) {
+while ((mask & 1) == 0) {
+mask >>>= 1;
+}
+while ((mask & 1) == 1) {
+mask >>>= 1;
+count++;
+}
+}if (mask != 0) {
+return -1;
+}return count;
+}, "~N");
+});
+Clazz_declarePackage ("java.awt.image");
+Clazz_load (["java.awt.image.MultiPixelPackedSampleModel", "$.SinglePixelPackedSampleModel"], "java.awt.image.Raster", ["java.lang.IllegalArgumentException", "$.NullPointerException", "java.awt.Point", "$.Rectangle", "java.awt.image.DataBuffer", "$.DataBufferByte", "$.DataBufferInt", "$.RasterFormatException", "swingjs.api.Interface"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.sampleModel = null;
+this.dataBuffer = null;
+this.minX = 0;
+this.minY = 0;
+this.width = 0;
+this.height = 0;
+this.sampleModelTranslateX = 0;
+this.sampleModelTranslateY = 0;
+this.numBands = 0;
+this.numDataElements = 0;
+this.parent = null;
+Clazz_instantialize (this, arguments);
+}, java.awt.image, "Raster");
+c$.createPackedRaster = Clazz_defineMethod (c$, "createPackedRaster", 
+function (dataType, w, h, bandMasks, location) {
+var d;
+switch (dataType) {
+case 0:
+d =  new java.awt.image.DataBufferByte (w * h);
+break;
+case 3:
+d =  new java.awt.image.DataBufferInt (w * h);
+break;
+default:
+throw  new IllegalArgumentException ("Unsupported data type " + dataType);
+}
+return java.awt.image.Raster.createPackedRaster (d, w, h, w, bandMasks, location);
+}, "~N,~N,~N,~A,java.awt.Point");
+c$.createPackedRaster = Clazz_defineMethod (c$, "createPackedRaster", 
+function (dataType, w, h, bands, bitsPerBand, location) {
+var d;
+if (bands <= 0) {
+throw  new IllegalArgumentException ("Number of bands (" + bands + ") must be greater than 0");
+}if (bitsPerBand <= 0) {
+throw  new IllegalArgumentException ("Bits per band (" + bitsPerBand + ") must be greater than 0");
+}if (bands != 1) {
+var masks =  Clazz_newIntArray (bands, 0);
+var mask = (1 << bitsPerBand) - 1;
+var shift = (bands - 1) * bitsPerBand;
+if (shift + bitsPerBand > java.awt.image.DataBuffer.getDataTypeSize (dataType)) {
+throw  new IllegalArgumentException ("bitsPerBand(" + bitsPerBand + ") * bands is " + " greater than data type " + "size.");
+}switch (dataType) {
+case 0:
+case 3:
+break;
+default:
+throw  new IllegalArgumentException ("Unsupported data type " + dataType);
+}
+for (var i = 0; i < bands; i++) {
+masks[i] = mask << shift;
+shift = shift - bitsPerBand;
+}
+return java.awt.image.Raster.createPackedRaster (dataType, w, h, masks, location);
+} else {
+var fw = w;
+switch (dataType) {
+case 0:
+d =  new java.awt.image.DataBufferByte (Clazz_doubleToInt (Math.ceil (fw / (Clazz_doubleToInt (8 / bitsPerBand)))) * h);
+break;
+case 3:
+d =  new java.awt.image.DataBufferInt (Clazz_doubleToInt (Math.ceil (fw / (Clazz_doubleToInt (32 / bitsPerBand)))) * h);
+break;
+default:
+throw  new IllegalArgumentException ("Unsupported data type " + dataType);
+}
+return java.awt.image.Raster.createPackedRaster (d, w, h, bitsPerBand, location);
+}}, "~N,~N,~N,~N,~N,java.awt.Point");
+c$.createPackedRaster = Clazz_defineMethod (c$, "createPackedRaster", 
+function (dataBuffer, w, h, scanlineStride, bandMasks, location) {
+if (dataBuffer == null) {
+throw  new NullPointerException ("DataBuffer cannot be null");
+}if (location == null) {
+location =  new java.awt.Point (0, 0);
+}var dataType = dataBuffer.getDataType ();
+var sppsm =  new java.awt.image.SinglePixelPackedSampleModel (dataType, w, h, scanlineStride, bandMasks);
+switch (dataType) {
+case 0:
+case 3:
+break;
+default:
+throw  new IllegalArgumentException ("Unsupported data type " + dataType);
+}
+var r = swingjs.api.Interface.getInstance ("jssun.awt.image." + (dataType == 0 ? "Byte" : "Integer") + "InterleavedRaster", true);
+r.setParams (sppsm, dataBuffer, location);
+return r;
+}, "java.awt.image.DataBuffer,~N,~N,~N,~A,java.awt.Point");
+c$.createPackedRaster = Clazz_defineMethod (c$, "createPackedRaster", 
+function (dataBuffer, w, h, bitsPerPixel, location) {
+if (dataBuffer == null) {
+throw  new NullPointerException ("DataBuffer cannot be null");
+}if (location == null) {
+location =  new java.awt.Point (0, 0);
+}var dataType = dataBuffer.getDataType ();
+if (dataType != 0 && dataType != 3) {
+throw  new IllegalArgumentException ("Unsupported data type " + dataType);
+}if (dataBuffer.getNumBanks () != 1) {
+throw  new java.awt.image.RasterFormatException ("DataBuffer for packed Rasters must only have 1 bank.");
+}var mppsm =  new java.awt.image.MultiPixelPackedSampleModel (dataType, w, h, bitsPerPixel);
+if (dataType == 0 && (bitsPerPixel == 1 || bitsPerPixel == 2 || bitsPerPixel == 4)) {
+return  new jssun.awt.image.BytePackedRaster (mppsm, dataBuffer, location);
+} else {
+return  new jssun.awt.image.SunWritableRaster (mppsm, dataBuffer, location);
+}}, "java.awt.image.DataBuffer,~N,~N,~N,java.awt.Point");
+c$.createRaster = Clazz_defineMethod (c$, "createRaster", 
+function (sm, db, location) {
+if ((sm == null) || (db == null)) {
+throw  new NullPointerException ("SampleModel and DataBuffer cannot be null");
+}if (location == null) {
+location =  new java.awt.Point (0, 0);
+}var dataType = sm.getDataType ();
+if (Clazz_instanceOf (sm, java.awt.image.MultiPixelPackedSampleModel) && dataType == 0 && sm.getSampleSize (0) < 8) {
+return  new jssun.awt.image.BytePackedRaster (sm, db, location);
+}return  new java.awt.image.Raster (sm, db, location);
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");
+c$.createWritableRaster = Clazz_defineMethod (c$, "createWritableRaster", 
+function (sm, location) {
+if (location == null) {
+location =  new java.awt.Point (0, 0);
+}return java.awt.image.Raster.createWritableRaster (sm, sm.createDataBuffer (), location);
+}, "java.awt.image.SampleModel,java.awt.Point");
+c$.createWritableRaster = Clazz_defineMethod (c$, "createWritableRaster", 
+function (sm, db, location) {
+if ((sm == null) || (db == null)) {
+throw  new NullPointerException ("SampleModel and DataBuffer cannot be null");
+}if (location == null) {
+location =  new java.awt.Point (0, 0);
+}var dataType = sm.getDataType ();
+if (Clazz_instanceOf (sm, java.awt.image.MultiPixelPackedSampleModel) && dataType == 0 && sm.getSampleSize (0) < 8) {
+return  new jssun.awt.image.BytePackedRaster (sm, db, location);
+}return  new jssun.awt.image.SunWritableRaster (sm, db, location);
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");
+Clazz_makeConstructor (c$, 
+function (sampleModel, origin) {
+this.setRaster (sampleModel, sampleModel.createDataBuffer (),  new java.awt.Rectangle (origin.x, origin.y, sampleModel.getWidth (), sampleModel.getHeight ()), origin, null);
+}, "java.awt.image.SampleModel,java.awt.Point");
+Clazz_makeConstructor (c$, 
+function (sampleModel, dataBuffer, origin) {
+this.setRaster (sampleModel, dataBuffer,  new java.awt.Rectangle (origin.x, origin.y, sampleModel.getWidth (), sampleModel.getHeight ()), origin, null);
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");
+Clazz_makeConstructor (c$, 
+function () {
+});
+Clazz_makeConstructor (c$, 
+function (sampleModel, dataBuffer, aRegion, sampleModelTranslate, parent) {
+this.setRaster (sampleModel, dataBuffer, aRegion, sampleModelTranslate, parent);
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,java.awt.image.Raster");
+Clazz_defineMethod (c$, "setRaster", 
+function (sampleModel, dataBuffer, aRegion, sampleModelTranslate, parent) {
+if ((sampleModel == null) || (dataBuffer == null) || (aRegion == null) || (sampleModelTranslate == null)) {
+throw  new NullPointerException ("SampleModel, dataBuffer, aRegion and sampleModelTranslate cannot be null");
+}this.sampleModel = sampleModel;
+this.dataBuffer = dataBuffer;
+this.minX = aRegion.x;
+this.minY = aRegion.y;
+this.width = aRegion.width;
+this.height = aRegion.height;
+if (this.width <= 0 || this.height <= 0) {
+throw  new java.awt.image.RasterFormatException ("negative or zero " + ((this.width <= 0) ? "width" : "height"));
+}if ((this.minX + this.width) < this.minX) {
+throw  new java.awt.image.RasterFormatException ("overflow condition for X coordinates of Raster");
+}if ((this.minY + this.height) < this.minY) {
+throw  new java.awt.image.RasterFormatException ("overflow condition for Y coordinates of Raster");
+}this.sampleModelTranslateX = sampleModelTranslate.x;
+this.sampleModelTranslateY = sampleModelTranslate.y;
+this.numBands = sampleModel.getNumBands ();
+this.numDataElements = sampleModel.getNumDataElements ();
+this.parent = parent;
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,java.awt.image.Raster");
+Clazz_defineMethod (c$, "getParent", 
+function () {
+return this.parent;
+});
+Clazz_defineMethod (c$, "getSampleModelTranslateX", 
+function () {
+return this.sampleModelTranslateX;
+});
+Clazz_defineMethod (c$, "getSampleModelTranslateY", 
+function () {
+return this.sampleModelTranslateY;
+});
+Clazz_defineMethod (c$, "createCompatibleWritableRaster", 
+function () {
+return  new jssun.awt.image.SunWritableRaster (this.sampleModel,  new java.awt.Point (0, 0));
+});
+Clazz_defineMethod (c$, "createCompatibleWritableRaster", 
+function (w, h) {
+if (w <= 0 || h <= 0) {
+throw  new java.awt.image.RasterFormatException ("negative " + ((w <= 0) ? "width" : "height"));
+}var sm = this.sampleModel.createCompatibleSampleModel (w, h);
+return  new jssun.awt.image.SunWritableRaster (sm,  new java.awt.Point (0, 0));
+}, "~N,~N");
+Clazz_defineMethod (c$, "createCompatibleWritableRaster", 
+function (rect) {
+if (rect == null) {
+throw  new NullPointerException ("Rect cannot be null");
+}return this.createCompatibleWritableRaster (rect.x, rect.y, rect.width, rect.height);
+}, "java.awt.Rectangle");
+Clazz_defineMethod (c$, "createCompatibleWritableRaster", 
+function (x, y, w, h) {
+var ret = this.createCompatibleWritableRaster (w, h);
+return ret.createWritableChild (0, 0, w, h, x, y, null);
+}, "~N,~N,~N,~N");
+Clazz_defineMethod (c$, "createTranslatedChild", 
+function (childMinX, childMinY) {
+return this.createChild (this.minX, this.minY, this.width, this.height, childMinX, childMinY, null);
+}, "~N,~N");
+Clazz_defineMethod (c$, "createChild", 
+function (parentX, parentY, width, height, childMinX, childMinY, bandList) {
+if (parentX < this.minX) {
+throw  new java.awt.image.RasterFormatException ("parentX lies outside raster");
+}if (parentY < this.minY) {
+throw  new java.awt.image.RasterFormatException ("parentY lies outside raster");
+}if ((parentX + width < parentX) || (parentX + width > this.width + this.minX)) {
+throw  new java.awt.image.RasterFormatException ("(parentX + width) is outside raster");
+}if ((parentY + height < parentY) || (parentY + height > this.height + this.minY)) {
+throw  new java.awt.image.RasterFormatException ("(parentY + height) is outside raster");
+}var subSampleModel;
+if (bandList == null) {
+subSampleModel = this.sampleModel;
+} else {
+subSampleModel = this.sampleModel.createSubsetSampleModel (bandList);
+}var deltaX = childMinX - parentX;
+var deltaY = childMinY - parentY;
+return  new java.awt.image.Raster (subSampleModel, this.getDataBuffer (),  new java.awt.Rectangle (childMinX, childMinY, width, height),  new java.awt.Point (this.sampleModelTranslateX + deltaX, this.sampleModelTranslateY + deltaY), this);
+}, "~N,~N,~N,~N,~N,~N,~A");
+Clazz_defineMethod (c$, "getBounds", 
+function () {
+return  new java.awt.Rectangle (this.minX, this.minY, this.width, this.height);
+});
+Clazz_defineMethod (c$, "getMinX", 
+function () {
+return this.minX;
+});
+Clazz_defineMethod (c$, "getMinY", 
+function () {
+return this.minY;
+});
+Clazz_defineMethod (c$, "getWidth", 
+function () {
+return this.width;
+});
+Clazz_defineMethod (c$, "getHeight", 
+function () {
+return this.height;
+});
+Clazz_defineMethod (c$, "getNumBands", 
+function () {
+return this.numBands;
+});
+Clazz_defineMethod (c$, "getNumDataElements", 
+function () {
+return this.sampleModel.getNumDataElements ();
+});
+Clazz_defineMethod (c$, "getTransferType", 
+function () {
+return this.sampleModel.getTransferType ();
+});
+Clazz_defineMethod (c$, "getDataBuffer", 
+function () {
+return this.dataBuffer;
+});
+Clazz_defineMethod (c$, "getSampleModel", 
+function () {
+return this.sampleModel;
+});
+Clazz_defineMethod (c$, "getDataElements", 
+function (x, y, outData) {
+return this.sampleModel.getDataElements (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, outData, this.dataBuffer);
+}, "~N,~N,~O");
+Clazz_defineMethod (c$, "getDataElements", 
+function (x, y, w, h, outData) {
+return this.sampleModel.getDataElements (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, w, h, outData, this.dataBuffer);
+}, "~N,~N,~N,~N,~O");
+Clazz_defineMethod (c$, "getPixel", 
+function (x, y, iArray) {
+return this.sampleModel.getPixel (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, iArray, this.dataBuffer);
+}, "~N,~N,~A");
+Clazz_defineMethod (c$, "getPixel", 
+function (x, y, fArray) {
+return this.sampleModel.getPixel (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, fArray, this.dataBuffer);
+}, "~N,~N,~A");
+Clazz_defineMethod (c$, "getPixel", 
+function (x, y, dArray) {
+return this.sampleModel.getPixel (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, dArray, this.dataBuffer);
+}, "~N,~N,~A");
+Clazz_defineMethod (c$, "getPixels", 
+function (x, y, w, h, iArray) {
+return this.sampleModel.getPixels (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, w, h, iArray, this.dataBuffer);
+}, "~N,~N,~N,~N,~A");
+Clazz_defineMethod (c$, "getPixels", 
+function (x, y, w, h, fArray) {
+return this.sampleModel.getPixels (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, w, h, fArray, this.dataBuffer);
+}, "~N,~N,~N,~N,~A");
+Clazz_defineMethod (c$, "getPixels", 
+function (x, y, w, h, dArray) {
+return this.sampleModel.getPixels (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, w, h, dArray, this.dataBuffer);
+}, "~N,~N,~N,~N,~A");
+Clazz_defineMethod (c$, "getSample", 
+function (x, y, b) {
+return this.sampleModel.getSample (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, b, this.dataBuffer);
+}, "~N,~N,~N");
+Clazz_defineMethod (c$, "getSampleFloat", 
+function (x, y, b) {
+return this.sampleModel.getSampleFloat (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, b, this.dataBuffer);
+}, "~N,~N,~N");
+Clazz_defineMethod (c$, "getSampleDouble", 
+function (x, y, b) {
+return this.sampleModel.getSampleDouble (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, b, this.dataBuffer);
+}, "~N,~N,~N");
+Clazz_defineMethod (c$, "getSamples", 
+function (x, y, w, h, b, iArray) {
+return this.sampleModel.getSamples (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, w, h, b, iArray, this.dataBuffer);
+}, "~N,~N,~N,~N,~N,~A");
+Clazz_defineMethod (c$, "getSamples", 
+function (x, y, w, h, b, fArray) {
+return this.sampleModel.getSamples (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, w, h, b, fArray, this.dataBuffer);
+}, "~N,~N,~N,~N,~N,~A");
+Clazz_defineMethod (c$, "getSamples", 
+function (x, y, w, h, b, dArray) {
+return this.sampleModel.getSamples (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, w, h, b, dArray, this.dataBuffer);
+}, "~N,~N,~N,~N,~N,~A");
+});
+Clazz_declarePackage ("java.awt.image");
+Clazz_load (["java.awt.image.SampleModel"], "java.awt.image.MultiPixelPackedSampleModel", ["java.lang.ArrayIndexOutOfBoundsException", "$.IllegalArgumentException", "java.awt.image.DataBuffer", "$.DataBufferByte", "$.DataBufferInt", "$.RasterFormatException"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.pixelBitStride = 0;
+this.bitMask = 0;
+this.pixelsPerDataElement = 0;
+this.dataElementSize = 0;
+this.dataBitOffset = 0;
+this.scanlineStride = 0;
+Clazz_instantialize (this, arguments);
+}, java.awt.image, "MultiPixelPackedSampleModel", java.awt.image.SampleModel);
+Clazz_makeConstructor (c$, 
+function (dataType, w, h, numberOfBits) {
+this.construct (dataType, w, h, numberOfBits, Clazz_doubleToInt ((w * numberOfBits + java.awt.image.DataBuffer.getDataTypeSize (dataType) - 1) / java.awt.image.DataBuffer.getDataTypeSize (dataType)), 0);
+if (dataType != 0 && dataType != 3) {
+throw  new IllegalArgumentException ("Unsupported data type " + dataType);
+}}, "~N,~N,~N,~N");
+Clazz_makeConstructor (c$, 
+function (dataType, w, h, numberOfBits, scanlineStride, dataBitOffset) {
+Clazz_superConstructor (this, java.awt.image.MultiPixelPackedSampleModel, [dataType, w, h, 1]);
+if (dataType != 0 && dataType != 3) {
+throw  new IllegalArgumentException ("Unsupported data type " + dataType);
+}this.dataType = dataType;
+this.pixelBitStride = numberOfBits;
+this.scanlineStride = scanlineStride;
+this.dataBitOffset = dataBitOffset;
+this.dataElementSize = java.awt.image.DataBuffer.getDataTypeSize (dataType);
+this.pixelsPerDataElement = Clazz_doubleToInt (this.dataElementSize / numberOfBits);
+if (this.pixelsPerDataElement * numberOfBits != this.dataElementSize) {
+throw  new java.awt.image.RasterFormatException ("MultiPixelPackedSampleModel does not allow pixels to span data element boundaries");
+}this.bitMask = (1 << numberOfBits) - 1;
+}, "~N,~N,~N,~N,~N,~N");
+Clazz_overrideMethod (c$, "createCompatibleSampleModel", 
+function (w, h) {
+var sampleModel =  new java.awt.image.MultiPixelPackedSampleModel (this.dataType, w, h, this.pixelBitStride);
+return sampleModel;
+}, "~N,~N");
+Clazz_overrideMethod (c$, "createDataBuffer", 
+function () {
+var dataBuffer = null;
+var size = this.scanlineStride * this.height;
+switch (this.dataType) {
+case 0:
+dataBuffer =  new java.awt.image.DataBufferByte (size + Clazz_doubleToInt ((this.dataBitOffset + 7) / 8));
+break;
+case 3:
+dataBuffer =  new java.awt.image.DataBufferInt (size + Clazz_doubleToInt ((this.dataBitOffset + 31) / 32));
+break;
+}
+return dataBuffer;
+});
+Clazz_overrideMethod (c$, "getNumDataElements", 
+function () {
+return 1;
+});
+Clazz_defineMethod (c$, "getSampleSize", 
+function () {
+var sampleSize =  Clazz_newIntArray (-1, [this.pixelBitStride]);
+return sampleSize;
+});
+Clazz_defineMethod (c$, "getSampleSize", 
+function (band) {
+return this.pixelBitStride;
+}, "~N");
+Clazz_defineMethod (c$, "getOffset", 
+function (x, y) {
+var offset = y * this.scanlineStride;
+offset += Clazz_doubleToInt ((x * this.pixelBitStride + this.dataBitOffset) / this.dataElementSize);
+return offset;
+}, "~N,~N");
+Clazz_defineMethod (c$, "getBitOffset", 
+function (x) {
+return (x * this.pixelBitStride + this.dataBitOffset) % this.dataElementSize;
+}, "~N");
+Clazz_defineMethod (c$, "getScanlineStride", 
+function () {
+return this.scanlineStride;
+});
+Clazz_defineMethod (c$, "getPixelBitStride", 
+function () {
+return this.pixelBitStride;
+});
+Clazz_defineMethod (c$, "getDataBitOffset", 
+function () {
+return this.dataBitOffset;
+});
+Clazz_overrideMethod (c$, "getTransferType", 
+function () {
+return 3;
+});
+Clazz_overrideMethod (c$, "createSubsetSampleModel", 
+function (bands) {
+if (bands != null) {
+if (bands.length != 1) throw  new java.awt.image.RasterFormatException ("MultiPixelPackedSampleModel has only one band.");
+}var sm = this.createCompatibleSampleModel (this.width, this.height);
+return sm;
+}, "~A");
+Clazz_overrideMethod (c$, "getSample", 
+function (x, y, b, data) {
+if ((x < 0) || (y < 0) || (x >= this.width) || (y >= this.height) || (b != 0)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var bitnum = this.dataBitOffset + x * this.pixelBitStride;
+var element = data.getElem (y * this.scanlineStride + Clazz_doubleToInt (bitnum / this.dataElementSize));
+var shift = this.dataElementSize - (bitnum & (this.dataElementSize - 1)) - this.pixelBitStride;
+return (element >> shift) & this.bitMask;
+}, "~N,~N,~N,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "setSample", 
+function (x, y, b, s, data) {
+if ((x < 0) || (y < 0) || (x >= this.width) || (y >= this.height) || (b != 0)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var bitnum = this.dataBitOffset + x * this.pixelBitStride;
+var index = y * this.scanlineStride + (Clazz_doubleToInt (bitnum / this.dataElementSize));
+var shift = this.dataElementSize - (bitnum & (this.dataElementSize - 1)) - this.pixelBitStride;
+var element = data.getElem (index);
+element &= ~(this.bitMask << shift);
+element |= (s & this.bitMask) << shift;
+data.setElem (index, element);
+}, "~N,~N,~N,~N,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "getDataElements", 
+function (x, y, obj, data) {
+if ((x < 0) || (y < 0) || (x >= this.width) || (y >= this.height)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var type = this.getTransferType ();
+var bitnum = this.dataBitOffset + x * this.pixelBitStride;
+var shift = this.dataElementSize - (bitnum & (this.dataElementSize - 1)) - this.pixelBitStride;
+var element = 0;
+switch (type) {
+case 0:
+var bdata;
+if (obj == null) bdata =  Clazz_newByteArray (1, 0);
+ else bdata = obj;
+element = data.getElem (y * this.scanlineStride + Clazz_doubleToInt (bitnum / this.dataElementSize));
+bdata[0] = ((element >> shift) & this.bitMask);
+obj = bdata;
+break;
+case 3:
+var idata;
+if (obj == null) idata =  Clazz_newIntArray (1, 0);
+ else idata = obj;
+element = data.getElem (y * this.scanlineStride + Clazz_doubleToInt (bitnum / this.dataElementSize));
+idata[0] = (element >> shift) & this.bitMask;
+obj = idata;
+break;
+}
+return obj;
+}, "~N,~N,~O,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "getPixel", 
+function (x, y, iArray, data) {
+if ((x < 0) || (y < 0) || (x >= this.width) || (y >= this.height)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var pixels;
+if (iArray != null) {
+pixels = iArray;
+} else {
+pixels =  Clazz_newIntArray (this.numBands, 0);
+}var bitnum = this.dataBitOffset + x * this.pixelBitStride;
+var element = data.getElem (y * this.scanlineStride + Clazz_doubleToInt (bitnum / this.dataElementSize));
+var shift = this.dataElementSize - (bitnum & (this.dataElementSize - 1)) - this.pixelBitStride;
+pixels[0] = (element >> shift) & this.bitMask;
+return pixels;
+}, "~N,~N,~A,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "setDataElements", 
+function (x, y, obj, data) {
+if ((x < 0) || (y < 0) || (x >= this.width) || (y >= this.height)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var type = this.getTransferType ();
+var bitnum = this.dataBitOffset + x * this.pixelBitStride;
+var index = y * this.scanlineStride + (Clazz_doubleToInt (bitnum / this.dataElementSize));
+var shift = this.dataElementSize - (bitnum & (this.dataElementSize - 1)) - this.pixelBitStride;
+var element = data.getElem (index);
+element &= ~(this.bitMask << shift);
+switch (type) {
+case 0:
+var barray = obj;
+element |= (((barray[0]) & 0xff) & this.bitMask) << shift;
+data.setElem (index, element);
+break;
+case 3:
+var iarray = obj;
+element |= (iarray[0] & this.bitMask) << shift;
+data.setElem (index, element);
+break;
+}
+}, "~N,~N,~O,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "setPixel", 
+function (x, y, iArray, data) {
+if ((x < 0) || (y < 0) || (x >= this.width) || (y >= this.height)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var bitnum = this.dataBitOffset + x * this.pixelBitStride;
+var index = y * this.scanlineStride + (Clazz_doubleToInt (bitnum / this.dataElementSize));
+var shift = this.dataElementSize - (bitnum & (this.dataElementSize - 1)) - this.pixelBitStride;
+var element = data.getElem (index);
+element &= ~(this.bitMask << shift);
+element |= (iArray[0] & this.bitMask) << shift;
+data.setElem (index, element);
+}, "~N,~N,~A,java.awt.image.DataBuffer");
+Clazz_overrideMethod (c$, "equals", 
+function (o) {
+if ((o == null) || !(Clazz_instanceOf (o, java.awt.image.MultiPixelPackedSampleModel))) {
+return false;
+}var that = o;
+return this.width == that.width && this.height == that.height && this.numBands == that.numBands && this.dataType == that.dataType && this.pixelBitStride == that.pixelBitStride && this.bitMask == that.bitMask && this.pixelsPerDataElement == that.pixelsPerDataElement && this.dataElementSize == that.dataElementSize && this.dataBitOffset == that.dataBitOffset && this.scanlineStride == that.scanlineStride;
+}, "~O");
+Clazz_overrideMethod (c$, "hashCode", 
+function () {
+var hash = 0;
+hash = this.width;
+hash <<= 8;
+hash ^= this.height;
+hash <<= 8;
+hash ^= this.numBands;
+hash <<= 8;
+hash ^= this.dataType;
+hash <<= 8;
+hash ^= this.pixelBitStride;
+hash <<= 8;
+hash ^= this.bitMask;
+hash <<= 8;
+hash ^= this.pixelsPerDataElement;
+hash <<= 8;
+hash ^= this.dataElementSize;
+hash <<= 8;
+hash ^= this.dataBitOffset;
+hash <<= 8;
+hash ^= this.scanlineStride;
+return hash;
+});
+});
+Clazz_declarePackage ("java.awt.image");
+Clazz_load (null, "java.awt.image.SampleModel", ["java.lang.IllegalArgumentException"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.width = 0;
+this.height = 0;
+this.numBands = 0;
+this.dataType = 0;
+Clazz_instantialize (this, arguments);
+}, java.awt.image, "SampleModel");
+Clazz_makeConstructor (c$, 
+function (dataType, w, h, numBands) {
+var size = w * h;
+if (w <= 0 || h <= 0) {
+throw  new IllegalArgumentException ("Width (" + w + ") and height (" + h + ") must be > 0");
+}if (size >= 2147483647) {
+throw  new IllegalArgumentException ("Dimensions (width=" + w + " height=" + h + ") are too large");
+}if (dataType < 0 || (dataType > 3 && dataType != 32)) {
+throw  new IllegalArgumentException ("Unsupported dataType: " + dataType);
+}if (numBands <= 0) {
+throw  new IllegalArgumentException ("Number of bands must be > 0");
+}this.dataType = dataType;
+this.width = w;
+this.height = h;
+this.numBands = numBands;
+}, "~N,~N,~N,~N");
+Clazz_defineMethod (c$, "getWidth", 
+function () {
+return this.width;
+});
+Clazz_defineMethod (c$, "getHeight", 
+function () {
+return this.height;
+});
+Clazz_defineMethod (c$, "getNumBands", 
+function () {
+return this.numBands;
+});
+Clazz_defineMethod (c$, "getDataType", 
+function () {
+return this.dataType;
+});
+Clazz_defineMethod (c$, "getTransferType", 
+function () {
+return this.dataType;
+});
+Clazz_defineMethod (c$, "getPixel", 
+function (x, y, iArray, data) {
+var pixels;
+if (iArray != null) pixels = iArray;
+ else pixels =  Clazz_newIntArray (this.numBands, 0);
+for (var i = 0; i < this.numBands; i++) {
+pixels[i] = this.getSample (x, y, i, data);
+}
+return pixels;
+}, "~N,~N,~A,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "getDataElements", 
+function (x, y, w, h, obj, data) {
+var type = this.getTransferType ();
+var numDataElems = this.getNumDataElements ();
+var cnt = 0;
+var o = null;
+switch (type) {
+case 0:
+var btemp;
+var bdata;
+if (obj == null) bdata =  Clazz_newByteArray (numDataElems * w * h, 0);
+ else bdata = obj;
+for (var i = y; i < y + h; i++) {
+for (var j = x; j < x + w; j++) {
+o = this.getDataElements (j, i, o, data);
+btemp = o;
+for (var k = 0; k < numDataElems; k++) {
+bdata[cnt++] = btemp[k];
+}
+}
+}
+obj = bdata;
+break;
+case 2:
+var sdata;
+var stemp;
+if (obj == null) sdata =  Clazz_newShortArray (numDataElems * w * h, 0);
+ else sdata = obj;
+for (var i = y; i < y + h; i++) {
+for (var j = x; j < x + w; j++) {
+o = this.getDataElements (j, i, o, data);
+stemp = o;
+for (var k = 0; k < numDataElems; k++) {
+sdata[cnt++] = stemp[k];
+}
+}
+}
+obj = sdata;
+break;
+case 3:
+var idata;
+var itemp;
+if (obj == null) idata =  Clazz_newIntArray (numDataElems * w * h, 0);
+ else idata = obj;
+for (var i = y; i < y + h; i++) {
+for (var j = x; j < x + w; j++) {
+o = this.getDataElements (j, i, o, data);
+itemp = o;
+for (var k = 0; k < numDataElems; k++) {
+idata[cnt++] = itemp[k];
+}
+}
+}
+obj = idata;
+break;
+}
+return obj;
+}, "~N,~N,~N,~N,~O,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "setDataElements", 
+function (x, y, w, h, obj, data) {
+var cnt = 0;
+var type = this.getTransferType ();
+var numDataElems = this.getNumDataElements ();
+switch (type) {
+case 0:
+var barray = obj;
+var btemp =  Clazz_newByteArray (numDataElems, 0);
+for (var i = y; i < y + h; i++) {
+for (var j = x; j < x + w; j++) {
+for (var k = 0; k < numDataElems; k++) {
+btemp[k] = barray[cnt++];
+}
+this.setDataElements (j, i, btemp, data);
+}
+}
+break;
+case 3:
+var iArray = obj;
+var itemp =  Clazz_newIntArray (numDataElems, 0);
+for (var i = y; i < y + h; i++) {
+for (var j = x; j < x + w; j++) {
+for (var k = 0; k < numDataElems; k++) {
+itemp[k] = iArray[cnt++];
+}
+this.setDataElements (j, i, itemp, data);
+}
+}
+break;
+}
+}, "~N,~N,~N,~N,~O,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "getPixels", 
+function (x, y, w, h, iArray, data) {
+var pixels;
+var Offset = 0;
+if (iArray != null) pixels = iArray;
+ else pixels =  Clazz_newIntArray (this.numBands * w * h, 0);
+for (var i = y; i < (h + y); i++) {
+for (var j = x; j < (w + x); j++) {
+for (var k = 0; k < this.numBands; k++) {
+pixels[Offset++] = this.getSample (j, i, k, data);
+}
+}
+}
+return pixels;
+}, "~N,~N,~N,~N,~A,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "getSampleFloat", 
+function (x, y, b, data) {
+var sample;
+sample = this.getSample (x, y, b, data);
+return sample;
+}, "~N,~N,~N,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "getSampleDouble", 
+function (x, y, b, data) {
+var sample;
+sample = this.getSample (x, y, b, data);
+return sample;
+}, "~N,~N,~N,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "getSamples", 
+function (x, y, w, h, b, iArray, data) {
+var pixels;
+var Offset = 0;
+if (iArray != null) pixels = iArray;
+ else pixels =  Clazz_newIntArray (w * h, 0);
+for (var i = y; i < (h + y); i++) {
+for (var j = x; j < (w + x); j++) {
+pixels[Offset++] = this.getSample (j, i, b, data);
+}
+}
+return pixels;
+}, "~N,~N,~N,~N,~N,~A,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "setPixel", 
+function (x, y, iArray, data) {
+for (var i = 0; i < this.numBands; i++) this.setSample (x, y, i, iArray[i], data);
+
+}, "~N,~N,~A,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "setPixel", 
+function (x, y, fArray, data) {
+for (var i = 0; i < this.numBands; i++) this.setSample (x, y, i, fArray[i], data);
+
+}, "~N,~N,~A,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "setPixels", 
+function (x, y, w, h, iArray, data) {
+var Offset = 0;
+for (var i = y; i < (y + h); i++) {
+for (var j = x; j < (x + w); j++) {
+for (var k = 0; k < this.numBands; k++) {
+this.setSample (j, i, k, iArray[Offset++], data);
+}
+}
+}
+}, "~N,~N,~N,~N,~A,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "setSamples", 
+function (x, y, w, h, b, iArray, data) {
+var Offset = 0;
+for (var i = y; i < (y + h); i++) {
+for (var j = x; j < (x + w); j++) {
+this.setSample (j, i, b, iArray[Offset++], data);
+}
+}
+}, "~N,~N,~N,~N,~N,~A,java.awt.image.DataBuffer");
+});
+Clazz_declarePackage ("java.awt.image");
+Clazz_load (null, "java.awt.image.DataBuffer", ["java.lang.ArrayIndexOutOfBoundsException", "$.IllegalArgumentException", "jssun.java2d.StateTrackable", "$.StateTrackableDelegate"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.dataType = 0;
+this.banks = 0;
+this.offset = 0;
+this.size = 0;
+this.offsets = null;
+this.theTrackable = null;
+Clazz_instantialize (this, arguments);
+}, java.awt.image, "DataBuffer");
+c$.getDataTypeSize = Clazz_defineMethod (c$, "getDataTypeSize", 
+function (type) {
+if (type < 0 || type > 3) {
+throw  new IllegalArgumentException ("Unknown data type " + type);
+}return java.awt.image.DataBuffer.dataTypeSize[type];
+}, "~N");
+Clazz_makeConstructor (c$, 
+function (dataType, size) {
+this.construct (jssun.java2d.StateTrackable.State.UNTRACKABLE, dataType, size);
+}, "~N,~N");
+Clazz_makeConstructor (c$, 
+function (initialState, dataType, size) {
+this.theTrackable = jssun.java2d.StateTrackableDelegate.createInstance (initialState);
+this.dataType = dataType;
+this.banks = 1;
+this.size = size;
+this.offset = 0;
+this.offsets =  Clazz_newIntArray (1, 0);
+}, "jssun.java2d.StateTrackable.State,~N,~N");
+Clazz_makeConstructor (c$, 
+function (dataType, size, numBanks) {
+this.construct (jssun.java2d.StateTrackable.State.UNTRACKABLE, dataType, size, numBanks);
+}, "~N,~N,~N");
+Clazz_makeConstructor (c$, 
+function (initialState, dataType, size, numBanks) {
+this.theTrackable = jssun.java2d.StateTrackableDelegate.createInstance (initialState);
+this.dataType = dataType;
+this.banks = numBanks;
+this.size = size;
+this.offset = 0;
+this.offsets =  Clazz_newIntArray (this.banks, 0);
+}, "jssun.java2d.StateTrackable.State,~N,~N,~N");
+Clazz_makeConstructor (c$, 
+function (dataType, size, numBanks, offset) {
+this.construct (jssun.java2d.StateTrackable.State.UNTRACKABLE, dataType, size, numBanks, offset);
+}, "~N,~N,~N,~N");
+Clazz_makeConstructor (c$, 
+function (initialState, dataType, size, numBanks, offset) {
+this.theTrackable = jssun.java2d.StateTrackableDelegate.createInstance (initialState);
+this.dataType = dataType;
+this.banks = numBanks;
+this.size = size;
+this.offset = offset;
+this.offsets =  Clazz_newIntArray (numBanks, 0);
+for (var i = 0; i < numBanks; i++) {
+this.offsets[i] = offset;
+}
+}, "jssun.java2d.StateTrackable.State,~N,~N,~N,~N");
+Clazz_makeConstructor (c$, 
+function (dataType, size, numBanks, offsets) {
+this.construct (jssun.java2d.StateTrackable.State.UNTRACKABLE, dataType, size, numBanks, offsets);
+}, "~N,~N,~N,~A");
+Clazz_makeConstructor (c$, 
+function (initialState, dataType, size, numBanks, offsets) {
+if (numBanks != offsets.length) {
+throw  new ArrayIndexOutOfBoundsException ("Number of banks does not match number of bank offsets");
+}this.theTrackable = jssun.java2d.StateTrackableDelegate.createInstance (initialState);
+this.dataType = dataType;
+this.banks = numBanks;
+this.size = size;
+this.offset = offsets[0];
+this.offsets = offsets.clone ();
+}, "jssun.java2d.StateTrackable.State,~N,~N,~N,~A");
+Clazz_defineMethod (c$, "getDataType", 
+function () {
+return this.dataType;
+});
+Clazz_defineMethod (c$, "getSize", 
+function () {
+return this.size;
+});
+Clazz_defineMethod (c$, "getOffset", 
+function () {
+return this.offset;
+});
+Clazz_defineMethod (c$, "getOffsets", 
+function () {
+return this.offsets.clone ();
+});
+Clazz_defineMethod (c$, "getNumBanks", 
+function () {
+return this.banks;
+});
+Clazz_defineMethod (c$, "getElem", 
+function (i) {
+return this.getElem (0, i);
+}, "~N");
+Clazz_defineMethod (c$, "setElem", 
+function (i, val) {
+this.setElem (0, i, val);
+}, "~N,~N");
+Clazz_defineMethod (c$, "getElemFloat", 
+function (i) {
+return this.getElem (i);
+}, "~N");
+Clazz_defineMethod (c$, "getElemFloat", 
+function (bank, i) {
+return this.getElem (bank, i);
+}, "~N,~N");
+Clazz_defineMethod (c$, "setElemFloat", 
+function (i, val) {
+this.setElem (i, Clazz_floatToInt (val));
+}, "~N,~N");
+Clazz_defineMethod (c$, "setElemFloat", 
+function (bank, i, val) {
+this.setElem (bank, i, Clazz_floatToInt (val));
+}, "~N,~N,~N");
+Clazz_defineMethod (c$, "getElemDouble", 
+function (i) {
+return this.getElem (i);
+}, "~N");
+Clazz_defineMethod (c$, "getElemDouble", 
+function (bank, i) {
+return this.getElem (bank, i);
+}, "~N,~N");
+Clazz_defineMethod (c$, "setElemDouble", 
+function (i, val) {
+this.setElem (i, Clazz_doubleToInt (val));
+}, "~N,~N");
+Clazz_defineMethod (c$, "setElemDouble", 
+function (bank, i, val) {
+this.setElem (bank, i, Clazz_doubleToInt (val));
+}, "~N,~N,~N");
+c$.toIntArray = Clazz_defineMethod (c$, "toIntArray", 
+function (obj) {
+if (Clazz_instanceOf (obj, Array)) {
+return obj;
+} else if (obj == null) {
+return null;
+} else if (Clazz_instanceOf (obj, Array)) {
+var sdata = obj;
+var idata =  Clazz_newIntArray (sdata.length, 0);
+for (var i = 0; i < sdata.length; i++) {
+idata[i] = sdata[i] & 0xffff;
+}
+return idata;
+} else if (Clazz_instanceOf (obj, Array)) {
+var bdata = obj;
+var idata =  Clazz_newIntArray (bdata.length, 0);
+for (var i = 0; i < bdata.length; i++) {
+idata[i] = 0xff & bdata[i];
+}
+return idata;
+}return null;
+}, "~O");
+Clazz_defineStatics (c$,
+"TYPE_BYTE", 0,
+"TYPE_SHORT", 2,
+"TYPE_INT", 3,
+"TYPE_UNDEFINED", 32,
+"dataTypeSize",  Clazz_newIntArray (-1, [8, 16, 16, 32, 32, 64]));
+});
+Clazz_declarePackage ("jssun.java2d");
+Clazz_load (["java.lang.Enum"], "jssun.java2d.StateTrackable", null, function () {
+Clazz_declareInterface (jssun.java2d, "StateTrackable");
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (jssun.java2d.StateTrackable, "State", Enum);
+Clazz_defineEnumConstant (c$, "IMMUTABLE", 0, []);
+Clazz_defineEnumConstant (c$, "STABLE", 1, []);
+Clazz_defineEnumConstant (c$, "DYNAMIC", 2, []);
+Clazz_defineEnumConstant (c$, "UNTRACKABLE", 3, []);
+c$ = Clazz_p0p ();
+});
+Clazz_declarePackage ("jssun.java2d");
+Clazz_load (["jssun.java2d.StateTrackable"], "jssun.java2d.StateTrackableDelegate", ["java.lang.IllegalStateException", "$.InternalError", "jssun.java2d.StateTracker"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.theState = null;
+this.theTracker = null;
+this.numDynamicAgents = 0;
+Clazz_instantialize (this, arguments);
+}, jssun.java2d, "StateTrackableDelegate", null, jssun.java2d.StateTrackable);
+c$.createInstance = Clazz_defineMethod (c$, "createInstance", 
+function (state) {
+switch (state) {
+case jssun.java2d.StateTrackable.State.UNTRACKABLE:
+return jssun.java2d.StateTrackableDelegate.UNTRACKABLE_DELEGATE;
+case jssun.java2d.StateTrackable.State.STABLE:
+return  new jssun.java2d.StateTrackableDelegate (jssun.java2d.StateTrackable.State.STABLE);
+case jssun.java2d.StateTrackable.State.DYNAMIC:
+return  new jssun.java2d.StateTrackableDelegate (jssun.java2d.StateTrackable.State.DYNAMIC);
+case jssun.java2d.StateTrackable.State.IMMUTABLE:
+return jssun.java2d.StateTrackableDelegate.IMMUTABLE_DELEGATE;
+default:
+throw  new InternalError ("unknown state");
+}
+}, "jssun.java2d.StateTrackable.State");
+Clazz_makeConstructor (c$, 
+ function (state) {
+this.theState = state;
+}, "jssun.java2d.StateTrackable.State");
+Clazz_overrideMethod (c$, "getState", 
+function () {
+return this.theState;
+});
+Clazz_overrideMethod (c$, "getStateTracker", 
+function () {
+var st = this.theTracker;
+if (st == null) {
+switch (this.theState) {
+case jssun.java2d.StateTrackable.State.IMMUTABLE:
+st = jssun.java2d.StateTracker.ALWAYS_CURRENT;
+break;
+case jssun.java2d.StateTrackable.State.STABLE:
+st = ((Clazz_isClassDefined ("jssun.java2d.StateTrackableDelegate$1") ? 0 : jssun.java2d.StateTrackableDelegate.$StateTrackableDelegate$1$ ()), Clazz_innerTypeInstance (jssun.java2d.StateTrackableDelegate$1, this, null));
+break;
+case jssun.java2d.StateTrackable.State.DYNAMIC:
+case jssun.java2d.StateTrackable.State.UNTRACKABLE:
+st = jssun.java2d.StateTracker.NEVER_CURRENT;
+break;
+}
+this.theTracker = st;
+}return st;
+});
+Clazz_defineMethod (c$, "setImmutable", 
+function () {
+if (this.theState === jssun.java2d.StateTrackable.State.UNTRACKABLE || this.theState === jssun.java2d.StateTrackable.State.DYNAMIC) {
+throw  new IllegalStateException ("UNTRACKABLE or DYNAMIC objects cannot become IMMUTABLE");
+}this.theState = jssun.java2d.StateTrackable.State.IMMUTABLE;
+this.theTracker = null;
+});
+Clazz_defineMethod (c$, "setUntrackable", 
+function () {
+if (this.theState === jssun.java2d.StateTrackable.State.IMMUTABLE) {
+throw  new IllegalStateException ("IMMUTABLE objects cannot become UNTRACKABLE");
+}this.theState = jssun.java2d.StateTrackable.State.UNTRACKABLE;
+this.theTracker = null;
+});
+Clazz_defineMethod (c$, "addDynamicAgent", 
+function () {
+if (this.theState === jssun.java2d.StateTrackable.State.IMMUTABLE) {
+throw  new IllegalStateException ("Cannot change state from IMMUTABLE");
+}++this.numDynamicAgents;
+if (this.theState === jssun.java2d.StateTrackable.State.STABLE) {
+this.theState = jssun.java2d.StateTrackable.State.DYNAMIC;
+this.theTracker = null;
+}});
+Clazz_defineMethod (c$, "removeDynamicAgent", 
+function () {
+if (--this.numDynamicAgents == 0 && this.theState === jssun.java2d.StateTrackable.State.DYNAMIC) {
+this.theState = jssun.java2d.StateTrackable.State.STABLE;
+this.theTracker = null;
+}});
+Clazz_defineMethod (c$, "markDirty", 
+function () {
+this.theTracker = null;
+});
+c$.$StateTrackableDelegate$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jssun.java2d, "StateTrackableDelegate$1", null, jssun.java2d.StateTracker);
+Clazz_overrideMethod (c$, "isCurrent", 
+function () {
+return (this.b$["jssun.java2d.StateTrackableDelegate"].theTracker === this);
+});
+c$ = Clazz_p0p ();
+};
+c$.UNTRACKABLE_DELEGATE = c$.prototype.UNTRACKABLE_DELEGATE =  new jssun.java2d.StateTrackableDelegate (jssun.java2d.StateTrackable.State.UNTRACKABLE);
+c$.IMMUTABLE_DELEGATE = c$.prototype.IMMUTABLE_DELEGATE =  new jssun.java2d.StateTrackableDelegate (jssun.java2d.StateTrackable.State.IMMUTABLE);
+});
+Clazz_declarePackage ("jssun.java2d");
+c$ = Clazz_declareInterface (jssun.java2d, "StateTracker");
+c$.$StateTracker$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jssun.java2d, "StateTracker$1", null, jssun.java2d.StateTracker);
+Clazz_overrideMethod (c$, "isCurrent", 
+function () {
+return true;
+});
+c$ = Clazz_p0p ();
+};
+c$.$StateTracker$2$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jssun.java2d, "StateTracker$2", null, jssun.java2d.StateTracker);
+Clazz_overrideMethod (c$, "isCurrent", 
+function () {
+return false;
+});
+c$ = Clazz_p0p ();
+};
+c$.ALWAYS_CURRENT = c$.prototype.ALWAYS_CURRENT = ((Clazz_isClassDefined ("jssun.java2d.StateTracker$1") ? 0 : jssun.java2d.StateTracker.$StateTracker$1$ ()), Clazz_innerTypeInstance (jssun.java2d.StateTracker$1, this, null));
+c$.NEVER_CURRENT = c$.prototype.NEVER_CURRENT = ((Clazz_isClassDefined ("jssun.java2d.StateTracker$2") ? 0 : jssun.java2d.StateTracker.$StateTracker$2$ ()), Clazz_innerTypeInstance (jssun.java2d.StateTracker$2, this, null));
+Clazz_declarePackage ("java.awt.image");
+Clazz_load (["java.awt.image.DataBuffer"], "java.awt.image.DataBufferByte", ["JU.AU", "jssun.java2d.StateTrackable"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.data = null;
+this.bankdata = null;
+Clazz_instantialize (this, arguments);
+}, java.awt.image, "DataBufferByte", java.awt.image.DataBuffer);
+Clazz_makeConstructor (c$, 
+function (size) {
+Clazz_superConstructor (this, java.awt.image.DataBufferByte, [jssun.java2d.StateTrackable.State.STABLE, 0, size]);
+this.data =  Clazz_newByteArray (size, 0);
+this.bankdata =  Clazz_newByteArray (1, 0);
+this.bankdata[0] = this.data;
+}, "~N");
+Clazz_makeConstructor (c$, 
+function (size, numBanks) {
+Clazz_superConstructor (this, java.awt.image.DataBufferByte, [jssun.java2d.StateTrackable.State.STABLE, 0, size, numBanks]);
+this.bankdata =  Clazz_newByteArray (numBanks, 0);
+for (var i = 0; i < numBanks; i++) {
+this.bankdata[i] =  Clazz_newByteArray (size, 0);
+}
+this.data = this.bankdata[0];
+}, "~N,~N");
+Clazz_makeConstructor (c$, 
+function (dataArray, size) {
+Clazz_superConstructor (this, java.awt.image.DataBufferByte, [jssun.java2d.StateTrackable.State.UNTRACKABLE, 0, size]);
+if (JU.AU.isAI (dataArray)) {
+this.data = dataArray;
+this.bankdata =  Clazz_newByteArray (1, 0);
+this.bankdata[0] = this.data;
+} else {
+this.banks = dataArray.length;
+this.bankdata = dataArray.clone ();
+this.data = this.bankdata[0];
+}}, "~A,~N");
+Clazz_makeConstructor (c$, 
+function (dataArray, size, offset) {
+Clazz_superConstructor (this, java.awt.image.DataBufferByte, [jssun.java2d.StateTrackable.State.UNTRACKABLE, 0, size, 1, offset]);
+this.data = dataArray;
+this.bankdata =  Clazz_newByteArray (1, 0);
+this.bankdata[0] = this.data;
+}, "~A,~N,~N");
+Clazz_makeConstructor (c$, 
+function (dataArray, size, offsets) {
+Clazz_superConstructor (this, java.awt.image.DataBufferByte, [jssun.java2d.StateTrackable.State.UNTRACKABLE, 0, size, dataArray.length, offsets]);
+this.bankdata = dataArray.clone ();
+this.data = this.bankdata[0];
+}, "~A,~N,~A");
+Clazz_defineMethod (c$, "getData", 
+function () {
+this.theTrackable.setUntrackable ();
+return this.data;
+});
+Clazz_defineMethod (c$, "getData", 
+function (bank) {
+this.theTrackable.setUntrackable ();
+return this.bankdata[bank];
+}, "~N");
+Clazz_defineMethod (c$, "getBankData", 
+function () {
+this.theTrackable.setUntrackable ();
+return this.bankdata.clone ();
+});
+Clazz_defineMethod (c$, "getElem", 
+function (i) {
+return (this.data[i + this.offset]) & 0xff;
+}, "~N");
+Clazz_defineMethod (c$, "getElem", 
+function (bank, i) {
+return (this.bankdata[bank][i + this.offsets[bank]]) & 0xff;
+}, "~N,~N");
+Clazz_defineMethod (c$, "setElem", 
+function (i, val) {
+this.data[i + this.offset] = val;
+this.theTrackable.markDirty ();
+}, "~N,~N");
+Clazz_defineMethod (c$, "setElem", 
+function (bank, i, val) {
+this.bankdata[bank][i + this.offsets[bank]] = val;
+this.theTrackable.markDirty ();
+}, "~N,~N,~N");
+});
+Clazz_declarePackage ("java.awt.image");
+Clazz_load (["java.awt.image.DataBuffer"], "java.awt.image.DataBufferInt", ["JU.AU", "jssun.java2d.StateTrackable"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.data = null;
+this.bankdata = null;
+Clazz_instantialize (this, arguments);
+}, java.awt.image, "DataBufferInt", java.awt.image.DataBuffer);
+Clazz_makeConstructor (c$, 
+function (size) {
+Clazz_superConstructor (this, java.awt.image.DataBufferInt, [jssun.java2d.StateTrackable.State.STABLE, 3, size]);
+this.data =  Clazz_newIntArray (size, 0);
+this.bankdata =  Clazz_newIntArray (1, 0);
+this.bankdata[0] = this.data;
+}, "~N");
+Clazz_makeConstructor (c$, 
+function (size, numBanks) {
+Clazz_superConstructor (this, java.awt.image.DataBufferInt, [jssun.java2d.StateTrackable.State.STABLE, 3, size, numBanks]);
+this.bankdata =  Clazz_newIntArray (numBanks, 0);
+for (var i = 0; i < numBanks; i++) {
+this.bankdata[i] =  Clazz_newIntArray (size, 0);
+}
+this.data = this.bankdata[0];
+}, "~N,~N");
+Clazz_makeConstructor (c$, 
+function (dataArray, size) {
+Clazz_superConstructor (this, java.awt.image.DataBufferInt, [jssun.java2d.StateTrackable.State.UNTRACKABLE, 3, size]);
+if (JU.AU.isAI (dataArray)) {
+this.data = dataArray;
+this.bankdata =  Clazz_newIntArray (1, 0);
+this.bankdata[0] = this.data;
+} else {
+this.banks = dataArray.length;
+this.bankdata = dataArray.clone ();
+this.data = this.bankdata[0];
+}}, "~A,~N");
+Clazz_makeConstructor (c$, 
+function (dataArray, size, offset) {
+Clazz_superConstructor (this, java.awt.image.DataBufferInt, [jssun.java2d.StateTrackable.State.UNTRACKABLE, 3, size, 1, offset]);
+this.data = dataArray;
+this.bankdata =  Clazz_newIntArray (1, 0);
+this.bankdata[0] = this.data;
+}, "~A,~N,~N");
+Clazz_makeConstructor (c$, 
+function (dataArray, size, offsets) {
+Clazz_superConstructor (this, java.awt.image.DataBufferInt, [jssun.java2d.StateTrackable.State.UNTRACKABLE, 3, size, dataArray.length, offsets]);
+this.bankdata = dataArray.clone ();
+this.data = this.bankdata[0];
+}, "~A,~N,~A");
+Clazz_defineMethod (c$, "getData", 
+function () {
+this.theTrackable.setUntrackable ();
+return this.data;
+});
+Clazz_defineMethod (c$, "getData", 
+function (bank) {
+this.theTrackable.setUntrackable ();
+return this.bankdata[bank];
+}, "~N");
+Clazz_defineMethod (c$, "getBankData", 
+function () {
+this.theTrackable.setUntrackable ();
+return this.bankdata.clone ();
+});
+Clazz_defineMethod (c$, "getElem", 
+function (i) {
+return this.data[i + this.offset];
+}, "~N");
+Clazz_defineMethod (c$, "getElem", 
+function (bank, i) {
+return this.bankdata[bank][i + this.offsets[bank]];
+}, "~N,~N");
+Clazz_defineMethod (c$, "setElem", 
+function (i, val) {
+this.data[i + this.offset] = val;
+this.theTrackable.markDirty ();
+}, "~N,~N");
+Clazz_defineMethod (c$, "setElem", 
+function (bank, i, val) {
+this.bankdata[bank][i + this.offsets[bank]] = val;
+this.theTrackable.markDirty ();
+}, "~N,~N,~N");
+});
+Clazz_declarePackage ("java.awt.image");
+Clazz_load (["java.lang.RuntimeException"], "java.awt.image.RasterFormatException", null, function () {
+c$ = Clazz_declareType (java.awt.image, "RasterFormatException", RuntimeException);
+});
+Clazz_declarePackage ("java.awt.image");
+Clazz_load (["java.awt.image.SampleModel"], "java.awt.image.SinglePixelPackedSampleModel", ["java.lang.ArrayIndexOutOfBoundsException", "$.IllegalArgumentException", "java.util.Arrays", "java.awt.image.DataBufferByte", "$.DataBufferInt", "$.RasterFormatException"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.bitMasks = null;
+this.bitOffsets = null;
+this.bitSizes = null;
+this.maxBitSize = 0;
+this.scanlineStride = 0;
+Clazz_instantialize (this, arguments);
+}, java.awt.image, "SinglePixelPackedSampleModel", java.awt.image.SampleModel);
+Clazz_makeConstructor (c$, 
+function (dataType, w, h, bitMasks) {
+this.construct (dataType, w, h, w, bitMasks);
+if (dataType != 0 && dataType != 3) {
+throw  new IllegalArgumentException ("Unsupported data type " + dataType);
+}}, "~N,~N,~N,~A");
+Clazz_makeConstructor (c$, 
+function (dataType, w, h, scanlineStride, bitMasks) {
+Clazz_superConstructor (this, java.awt.image.SinglePixelPackedSampleModel, [dataType, w, h, bitMasks.length]);
+if (dataType != 0 && dataType != 3) {
+throw  new IllegalArgumentException ("Unsupported data type " + dataType);
+}this.dataType = dataType;
+this.bitMasks = bitMasks.clone ();
+this.scanlineStride = scanlineStride;
+this.bitOffsets =  Clazz_newIntArray (this.numBands, 0);
+this.bitSizes =  Clazz_newIntArray (this.numBands, 0);
+this.maxBitSize = 0;
+for (var i = 0; i < this.numBands; i++) {
+var bitOffset = 0;
+var bitSize = 0;
+var mask;
+mask = bitMasks[i];
+if (mask != 0) {
+while ((mask & 1) == 0) {
+mask = mask >>> 1;
+bitOffset++;
+}
+while ((mask & 1) == 1) {
+mask = mask >>> 1;
+bitSize++;
+}
+if (mask != 0) {
+throw  new IllegalArgumentException ("Mask " + bitMasks[i] + " must be contiguous");
+}}this.bitOffsets[i] = bitOffset;
+this.bitSizes[i] = bitSize;
+if (bitSize > this.maxBitSize) {
+this.maxBitSize = bitSize;
+}}
+}, "~N,~N,~N,~N,~A");
+Clazz_overrideMethod (c$, "getNumDataElements", 
+function () {
+return 1;
+});
+Clazz_defineMethod (c$, "getBufferSize", 
+ function () {
+var size = this.scanlineStride * (this.height - 1) + this.width;
+return size;
+});
+Clazz_overrideMethod (c$, "createCompatibleSampleModel", 
+function (w, h) {
+var sampleModel =  new java.awt.image.SinglePixelPackedSampleModel (this.dataType, w, h, this.bitMasks);
+return sampleModel;
+}, "~N,~N");
+Clazz_overrideMethod (c$, "createDataBuffer", 
+function () {
+var dataBuffer = null;
+var size = this.getBufferSize ();
+switch (this.dataType) {
+case 0:
+dataBuffer =  new java.awt.image.DataBufferByte (size);
+break;
+case 3:
+dataBuffer =  new java.awt.image.DataBufferInt (size);
+break;
+}
+return dataBuffer;
+});
+Clazz_defineMethod (c$, "getSampleSize", 
+function () {
+var mask;
+var sampleSize =  Clazz_newIntArray (this.numBands, 0);
+for (var i = 0; i < this.numBands; i++) {
+sampleSize[i] = 0;
+mask = this.bitMasks[i] >>> this.bitOffsets[i];
+while ((mask & 1) != 0) {
+sampleSize[i]++;
+mask = mask >>> 1;
+}
+}
+return sampleSize;
+});
+Clazz_defineMethod (c$, "getSampleSize", 
+function (band) {
+var sampleSize = 0;
+var mask = this.bitMasks[band] >>> this.bitOffsets[band];
+while ((mask & 1) != 0) {
+sampleSize++;
+mask = mask >>> 1;
+}
+return sampleSize;
+}, "~N");
+Clazz_defineMethod (c$, "getOffset", 
+function (x, y) {
+var offset = y * this.scanlineStride + x;
+return offset;
+}, "~N,~N");
+Clazz_defineMethod (c$, "getBitOffsets", 
+function () {
+return this.bitOffsets.clone ();
+});
+Clazz_defineMethod (c$, "getBitMasks", 
+function () {
+return this.bitMasks.clone ();
+});
+Clazz_defineMethod (c$, "getScanlineStride", 
+function () {
+return this.scanlineStride;
+});
+Clazz_overrideMethod (c$, "createSubsetSampleModel", 
+function (bands) {
+if (bands.length > this.numBands) throw  new java.awt.image.RasterFormatException ("There are only " + this.numBands + " bands");
+var newBitMasks =  Clazz_newIntArray (bands.length, 0);
+for (var i = 0; i < bands.length; i++) newBitMasks[i] = this.bitMasks[bands[i]];
+
+return  new java.awt.image.SinglePixelPackedSampleModel (this.dataType, this.width, this.height, this.scanlineStride, newBitMasks);
+}, "~A");
+Clazz_defineMethod (c$, "getDataElements", 
+function (x, y, obj, data) {
+if ((x < 0) || (y < 0) || (x >= this.width) || (y >= this.height)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var type = this.getTransferType ();
+switch (type) {
+case 0:
+var bdata;
+if (obj == null) bdata =  Clazz_newByteArray (1, 0);
+ else bdata = obj;
+bdata[0] = data.getElem (y * this.scanlineStride + x);
+obj = bdata;
+break;
+case 3:
+var idata;
+if (obj == null) idata =  Clazz_newIntArray (1, 0);
+ else idata = obj;
+idata[0] = data.getElem (y * this.scanlineStride + x);
+obj = idata;
+break;
+}
+return obj;
+}, "~N,~N,~O,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "getPixel", 
+function (x, y, iArray, data) {
+if ((x < 0) || (y < 0) || (x >= this.width) || (y >= this.height)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var pixels;
+if (iArray == null) {
+pixels =  Clazz_newIntArray (this.numBands, 0);
+} else {
+pixels = iArray;
+}var value = data.getElem (y * this.scanlineStride + x);
+for (var i = 0; i < this.numBands; i++) {
+pixels[i] = (value & this.bitMasks[i]) >>> this.bitOffsets[i];
+}
+return pixels;
+}, "~N,~N,~A,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "getPixels", 
+function (x, y, w, h, iArray, data) {
+if ((x < 0) || (y < 0) || (x + w > this.width) || (y + h > this.height)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var pixels;
+if (iArray != null) {
+pixels = iArray;
+} else {
+pixels =  Clazz_newIntArray (w * h * this.numBands, 0);
+}var lineOffset = y * this.scanlineStride + x;
+var dstOffset = 0;
+for (var i = 0; i < h; i++) {
+for (var j = 0; j < w; j++) {
+var value = data.getElem (lineOffset + j);
+for (var k = 0; k < this.numBands; k++) {
+pixels[dstOffset++] = ((value & this.bitMasks[k]) >>> this.bitOffsets[k]);
+}
+}
+lineOffset += this.scanlineStride;
+}
+return pixels;
+}, "~N,~N,~N,~N,~A,java.awt.image.DataBuffer");
+Clazz_overrideMethod (c$, "getSample", 
+function (x, y, b, data) {
+if ((x < 0) || (y < 0) || (x >= this.width) || (y >= this.height)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var sample = data.getElem (y * this.scanlineStride + x);
+return ((sample & this.bitMasks[b]) >>> this.bitOffsets[b]);
+}, "~N,~N,~N,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "getSamples", 
+function (x, y, w, h, b, iArray, data) {
+if ((x < 0) || (y < 0) || (x + w > this.width) || (y + h > this.height)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var samples;
+if (iArray != null) {
+samples = iArray;
+} else {
+samples =  Clazz_newIntArray (w * h, 0);
+}var lineOffset = y * this.scanlineStride + x;
+var dstOffset = 0;
+for (var i = 0; i < h; i++) {
+for (var j = 0; j < w; j++) {
+var value = data.getElem (lineOffset + j);
+samples[dstOffset++] = ((value & this.bitMasks[b]) >>> this.bitOffsets[b]);
+}
+lineOffset += this.scanlineStride;
+}
+return samples;
+}, "~N,~N,~N,~N,~N,~A,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "setDataElements", 
+function (x, y, obj, data) {
+if ((x < 0) || (y < 0) || (x >= this.width) || (y >= this.height)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var type = this.getTransferType ();
+switch (type) {
+case 0:
+var barray = obj;
+data.setElem (y * this.scanlineStride + x, (barray[0]) & 0xff);
+break;
+case 3:
+var iarray = obj;
+data.setElem (y * this.scanlineStride + x, iarray[0]);
+break;
+}
+}, "~N,~N,~O,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "setPixel", 
+function (x, y, iArray, data) {
+if ((x < 0) || (y < 0) || (x >= this.width) || (y >= this.height)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var lineOffset = y * this.scanlineStride + x;
+var value = data.getElem (lineOffset);
+for (var i = 0; i < this.numBands; i++) {
+value &= ~this.bitMasks[i];
+value |= ((iArray[i] << this.bitOffsets[i]) & this.bitMasks[i]);
+}
+data.setElem (lineOffset, value);
+}, "~N,~N,~A,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "setPixels", 
+function (x, y, w, h, iArray, data) {
+if ((x < 0) || (y < 0) || (x + w > this.width) || (y + h > this.height)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var lineOffset = y * this.scanlineStride + x;
+var srcOffset = 0;
+for (var i = 0; i < h; i++) {
+for (var j = 0; j < w; j++) {
+var value = data.getElem (lineOffset + j);
+for (var k = 0; k < this.numBands; k++) {
+value &= ~this.bitMasks[k];
+var srcValue = iArray[srcOffset++];
+value |= ((srcValue << this.bitOffsets[k]) & this.bitMasks[k]);
+}
+data.setElem (lineOffset + j, value);
+}
+lineOffset += this.scanlineStride;
+}
+}, "~N,~N,~N,~N,~A,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "setSample", 
+function (x, y, b, s, data) {
+if ((x < 0) || (y < 0) || (x >= this.width) || (y >= this.height)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var value = data.getElem (y * this.scanlineStride + x);
+value &= ~this.bitMasks[b];
+value |= (s << this.bitOffsets[b]) & this.bitMasks[b];
+data.setElem (y * this.scanlineStride + x, value);
+}, "~N,~N,~N,~N,java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "setSamples", 
+function (x, y, w, h, b, iArray, data) {
+if ((x < 0) || (y < 0) || (x + w > this.width) || (y + h > this.height)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var lineOffset = y * this.scanlineStride + x;
+var srcOffset = 0;
+for (var i = 0; i < h; i++) {
+for (var j = 0; j < w; j++) {
+var value = data.getElem (lineOffset + j);
+value &= ~this.bitMasks[b];
+var sample = iArray[srcOffset++];
+value |= (sample << this.bitOffsets[b]) & this.bitMasks[b];
+data.setElem (lineOffset + j, value);
+}
+lineOffset += this.scanlineStride;
+}
+}, "~N,~N,~N,~N,~N,~A,java.awt.image.DataBuffer");
+Clazz_overrideMethod (c$, "equals", 
+function (o) {
+if ((o == null) || !(Clazz_instanceOf (o, java.awt.image.SinglePixelPackedSampleModel))) {
+return false;
+}var that = o;
+return this.width == that.width && this.height == that.height && this.numBands == that.numBands && this.dataType == that.dataType && java.util.Arrays.equals (this.bitMasks, that.bitMasks) && java.util.Arrays.equals (this.bitOffsets, that.bitOffsets) && java.util.Arrays.equals (this.bitSizes, that.bitSizes) && this.maxBitSize == that.maxBitSize && this.scanlineStride == that.scanlineStride;
+}, "~O");
+Clazz_overrideMethod (c$, "hashCode", 
+function () {
+var hash = 0;
+hash = this.width;
+hash <<= 8;
+hash ^= this.height;
+hash <<= 8;
+hash ^= this.numBands;
+hash <<= 8;
+hash ^= this.dataType;
+hash <<= 8;
+for (var i = 0; i < this.bitMasks.length; i++) {
+hash ^= this.bitMasks[i];
+hash <<= 8;
+}
+for (var i = 0; i < this.bitOffsets.length; i++) {
+hash ^= this.bitOffsets[i];
+hash <<= 8;
+}
+for (var i = 0; i < this.bitSizes.length; i++) {
+hash ^= this.bitSizes[i];
+hash <<= 8;
+}
+hash ^= this.maxBitSize;
+hash <<= 8;
+hash ^= this.scanlineStride;
+return hash;
+});
+});
+Clazz_declarePackage ("jssun.awt.image");
+Clazz_load (["java.awt.image.ImageProducer"], "jssun.awt.image.OffScreenImageSource", ["java.util.Hashtable"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.image = null;
+this.width = 0;
+this.height = 0;
+this.properties = null;
+this.theConsumer = null;
+Clazz_instantialize (this, arguments);
+}, jssun.awt.image, "OffScreenImageSource", null, java.awt.image.ImageProducer);
+Clazz_makeConstructor (c$, 
+function (image, properties) {
+this.image = image;
+if (properties != null) {
+this.properties = properties;
+} else {
+this.properties =  new java.util.Hashtable ();
+}this.width = image.getWidth ();
+this.height = image.getHeight ();
+}, "java.awt.image.BufferedImage,java.util.Hashtable");
+Clazz_makeConstructor (c$, 
+function (image) {
+this.construct (image, null);
+}, "java.awt.image.BufferedImage");
+Clazz_overrideMethod (c$, "addConsumer", 
+function (ic) {
+this.theConsumer = ic;
+this.produce ();
+}, "java.awt.image.ImageConsumer");
+Clazz_overrideMethod (c$, "isConsumer", 
+function (ic) {
+return (ic === this.theConsumer);
+}, "java.awt.image.ImageConsumer");
+Clazz_overrideMethod (c$, "removeConsumer", 
+function (ic) {
+if (this.theConsumer === ic) {
+this.theConsumer = null;
+}}, "java.awt.image.ImageConsumer");
+Clazz_overrideMethod (c$, "startProduction", 
+function (ic) {
+this.addConsumer (ic);
+}, "java.awt.image.ImageConsumer");
+Clazz_overrideMethod (c$, "requestTopDownLeftRightResend", 
+function (ic) {
+}, "java.awt.image.ImageConsumer");
+Clazz_defineMethod (c$, "sendPixels", 
+ function () {
+var cm = this.image.getColorModel ();
+});
+Clazz_defineMethod (c$, "produce", 
+ function () {
+try {
+this.theConsumer.setDimensions (this.image.getWidth (), this.image.getHeight ());
+this.theConsumer.setProperties (this.properties);
+this.sendPixels ();
+this.theConsumer.imageComplete (2);
+} catch (e) {
+if (Clazz_exceptionOf (e, NullPointerException)) {
+if (this.theConsumer != null) {
+this.theConsumer.imageComplete (1);
+}} else {
+throw e;
+}
+}
+});
+});
+Clazz_declarePackage ("java.awt.image");
+Clazz_load (["java.awt.image.Raster"], "java.awt.image.WritableRaster", ["java.lang.ArrayIndexOutOfBoundsException", "java.awt.Point", "$.Rectangle", "java.awt.image.RasterFormatException"], function () {
+c$ = Clazz_declareType (java.awt.image, "WritableRaster", java.awt.image.Raster);
+Clazz_defineMethod (c$, "setParams", 
+function (model, dataBuffer, origin) {
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, java.awt.image.WritableRaster, []);
+});
+Clazz_makeConstructor (c$, 
+function (sampleModel, origin) {
+Clazz_superConstructor (this, java.awt.image.WritableRaster, []);
+this.setRaster (sampleModel, sampleModel.createDataBuffer (),  new java.awt.Rectangle (origin.x, origin.y, sampleModel.getWidth (), sampleModel.getHeight ()), origin, null);
+}, "java.awt.image.SampleModel,java.awt.Point");
+Clazz_makeConstructor (c$, 
+function (sampleModel, dataBuffer, origin) {
+Clazz_superConstructor (this, java.awt.image.WritableRaster, []);
+this.setRaster (sampleModel, dataBuffer,  new java.awt.Rectangle (origin.x, origin.y, sampleModel.getWidth (), sampleModel.getHeight ()), origin, null);
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");
+Clazz_makeConstructor (c$, 
+function (sampleModel, dataBuffer, aRegion, sampleModelTranslate, parent) {
+Clazz_superConstructor (this, java.awt.image.WritableRaster, []);
+this.setRaster (sampleModel, dataBuffer, aRegion, sampleModelTranslate, parent);
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,java.awt.image.Raster");
+Clazz_defineMethod (c$, "getWritableParent", 
+function () {
+return this.parent;
+});
+Clazz_defineMethod (c$, "createWritableTranslatedChild", 
+function (childMinX, childMinY) {
+return this.createWritableChild (this.minX, this.minY, this.width, this.height, childMinX, childMinY, null);
+}, "~N,~N");
+Clazz_defineMethod (c$, "createWritableChild", 
+function (parentX, parentY, w, h, childMinX, childMinY, bandList) {
+if (parentX < this.minX) {
+throw  new java.awt.image.RasterFormatException ("parentX lies outside raster");
+}if (parentY < this.minY) {
+throw  new java.awt.image.RasterFormatException ("parentY lies outside raster");
+}if ((parentX + w < parentX) || (parentX + w > this.width + this.minX)) {
+throw  new java.awt.image.RasterFormatException ("(parentX + width) is outside raster");
+}if ((parentY + h < parentY) || (parentY + h > this.height + this.minY)) {
+throw  new java.awt.image.RasterFormatException ("(parentY + height) is outside raster");
+}var sm;
+if (bandList != null) {
+sm = this.sampleModel.createSubsetSampleModel (bandList);
+} else {
+sm = this.sampleModel;
+}var deltaX = childMinX - parentX;
+var deltaY = childMinY - parentY;
+return  new java.awt.image.WritableRaster (sm, this.getDataBuffer (),  new java.awt.Rectangle (childMinX, childMinY, w, h),  new java.awt.Point (this.sampleModelTranslateX + deltaX, this.sampleModelTranslateY + deltaY), this);
+}, "~N,~N,~N,~N,~N,~N,~A");
+Clazz_defineMethod (c$, "setDataElements", 
+function (x, y, inData) {
+if (Clazz_instanceOf (inData, java.awt.image.Raster)) {
+this.setDataElementsRaster (x, y, inData);
+} else {
+this.sampleModel.setDataElements (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, inData, this.dataBuffer);
+}}, "~N,~N,~O");
+Clazz_defineMethod (c$, "setDataElementsRaster", 
+function (x, y, inRaster) {
+var dstOffX = x + inRaster.getMinX ();
+var dstOffY = y + inRaster.getMinY ();
+var width = inRaster.getWidth ();
+var height = inRaster.getHeight ();
+if ((dstOffX < this.minX) || (dstOffY < this.minY) || (dstOffX + width > this.minX + this.width) || (dstOffY + height > this.minY + this.height)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var srcOffX = inRaster.getMinX ();
+var srcOffY = inRaster.getMinY ();
+var tdata = null;
+for (var startY = 0; startY < height; startY++) {
+tdata = inRaster.getDataElements (srcOffX, srcOffY + startY, width, 1, tdata);
+this.setDataElements (dstOffX, dstOffY + startY, width, 1, tdata);
+}
+}, "~N,~N,java.awt.image.Raster");
+Clazz_defineMethod (c$, "setDataElements", 
+function (x, y, w, h, inData) {
+this.sampleModel.setDataElements (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, w, h, inData, this.dataBuffer);
+}, "~N,~N,~N,~N,~O");
+Clazz_defineMethod (c$, "setRect", 
+function (srcRaster) {
+this.setRect (0, 0, srcRaster);
+}, "java.awt.image.Raster");
+Clazz_defineMethod (c$, "setRect", 
+function (dx, dy, srcRaster) {
+var width = srcRaster.getWidth ();
+var height = srcRaster.getHeight ();
+var srcOffX = srcRaster.getMinX ();
+var srcOffY = srcRaster.getMinY ();
+var dstOffX = dx + srcOffX;
+var dstOffY = dy + srcOffY;
+if (dstOffX < this.minX) {
+var skipX = this.minX - dstOffX;
+width -= skipX;
+srcOffX += skipX;
+dstOffX = this.minX;
+}if (dstOffY < this.minY) {
+var skipY = this.minY - dstOffY;
+height -= skipY;
+srcOffY += skipY;
+dstOffY = this.minY;
+}if (dstOffX + width > this.minX + this.width) {
+width = this.minX + this.width - dstOffX;
+}if (dstOffY + height > this.minY + this.height) {
+height = this.minY + this.height - dstOffY;
+}if (width <= 0 || height <= 0) {
+return;
+}switch (srcRaster.getSampleModel ().getDataType ()) {
+case 0:
+case 3:
+var iData = null;
+for (var startY = 0; startY < height; startY++) {
+iData = srcRaster.getPixels (srcOffX, srcOffY + startY, width, 1, iData);
+this.setPixels (dstOffX, dstOffY + startY, width, 1, iData);
+}
+break;
+}
+}, "~N,~N,java.awt.image.Raster");
+Clazz_defineMethod (c$, "setPixel", 
+function (x, y, iArray) {
+this.sampleModel.setPixel (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, iArray, this.dataBuffer);
+}, "~N,~N,~A");
+Clazz_defineMethod (c$, "setPixel", 
+function (x, y, fArray) {
+this.sampleModel.setPixel (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, fArray, this.dataBuffer);
+}, "~N,~N,~A");
+Clazz_defineMethod (c$, "setPixel", 
+function (x, y, dArray) {
+this.sampleModel.setPixel (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, dArray, this.dataBuffer);
+}, "~N,~N,~A");
+Clazz_defineMethod (c$, "setPixels", 
+function (x, y, w, h, iArray) {
+this.sampleModel.setPixels (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, w, h, iArray, this.dataBuffer);
+}, "~N,~N,~N,~N,~A");
+Clazz_defineMethod (c$, "setPixels", 
+function (x, y, w, h, fArray) {
+this.sampleModel.setPixels (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, w, h, fArray, this.dataBuffer);
+}, "~N,~N,~N,~N,~A");
+Clazz_defineMethod (c$, "setPixels", 
+function (x, y, w, h, dArray) {
+this.sampleModel.setPixels (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, w, h, dArray, this.dataBuffer);
+}, "~N,~N,~N,~N,~A");
+Clazz_defineMethod (c$, "setSample", 
+function (x, y, b, s) {
+this.sampleModel.setSample (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, b, s, this.dataBuffer);
+}, "~N,~N,~N,~N");
+Clazz_defineMethod (c$, "setSample", 
+function (x, y, b, s) {
+this.sampleModel.setSample (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, b, s, this.dataBuffer);
+}, "~N,~N,~N,~N");
+Clazz_defineMethod (c$, "setSample", 
+function (x, y, b, s) {
+this.sampleModel.setSample (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, b, s, this.dataBuffer);
+}, "~N,~N,~N,~N");
+Clazz_defineMethod (c$, "setSamples", 
+function (x, y, w, h, b, iArray) {
+this.sampleModel.setSamples (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, w, h, b, iArray, this.dataBuffer);
+}, "~N,~N,~N,~N,~N,~A");
+Clazz_defineMethod (c$, "setSamples", 
+function (x, y, w, h, b, fArray) {
+this.sampleModel.setSamples (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, w, h, b, fArray, this.dataBuffer);
+}, "~N,~N,~N,~N,~N,~A");
+Clazz_defineMethod (c$, "setSamples", 
+function (x, y, w, h, b, dArray) {
+this.sampleModel.setSamples (x - this.sampleModelTranslateX, y - this.sampleModelTranslateY, w, h, b, dArray, this.dataBuffer);
+}, "~N,~N,~N,~N,~N,~A");
+});
+Clazz_declarePackage ("jssun.java2d.loops");
+Clazz_load (null, "jssun.java2d.loops.CompositeType", ["java.lang.InternalError"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.uniqueID = 0;
+this.desc = null;
+this.next = null;
+Clazz_instantialize (this, arguments);
+}, jssun.java2d.loops, "CompositeType");
+Clazz_defineMethod (c$, "deriveSubType", 
+function (desc) {
+return  new jssun.java2d.loops.CompositeType (this, desc);
+}, "~S");
+c$.forAlphaComposite = Clazz_defineMethod (c$, "forAlphaComposite", 
+function (ac) {
+switch (ac.getRule ()) {
+case 1:
+return jssun.java2d.loops.CompositeType.Clear;
+case 2:
+if (ac.getAlpha () >= 1.0) {
+return jssun.java2d.loops.CompositeType.SrcNoEa;
+} else {
+return jssun.java2d.loops.CompositeType.Src;
+}case 9:
+return jssun.java2d.loops.CompositeType.Dst;
+case 3:
+if (ac.getAlpha () >= 1.0) {
+return jssun.java2d.loops.CompositeType.SrcOverNoEa;
+} else {
+return jssun.java2d.loops.CompositeType.SrcOver;
+}case 4:
+return jssun.java2d.loops.CompositeType.DstOver;
+case 5:
+return jssun.java2d.loops.CompositeType.SrcIn;
+case 6:
+return jssun.java2d.loops.CompositeType.DstIn;
+case 7:
+return jssun.java2d.loops.CompositeType.SrcOut;
+case 8:
+return jssun.java2d.loops.CompositeType.DstOut;
+case 10:
+return jssun.java2d.loops.CompositeType.SrcAtop;
+case 11:
+return jssun.java2d.loops.CompositeType.DstAtop;
+case 12:
+return jssun.java2d.loops.CompositeType.AlphaXor;
+default:
+throw  new InternalError ("Unrecognized alpha rule");
+}
+}, "java.awt.AlphaComposite");
+Clazz_makeConstructor (c$, 
+ function (parent, desc) {
+this.next = parent;
+this.desc = desc;
+this.uniqueID = jssun.java2d.loops.CompositeType.makeUniqueID ();
+}, "jssun.java2d.loops.CompositeType,~S");
+c$.makeUniqueID = Clazz_defineMethod (c$, "makeUniqueID", 
+ function () {
+if (jssun.java2d.loops.CompositeType.unusedUID > 255) {
+throw  new InternalError ("composite type id overflow");
+}return jssun.java2d.loops.CompositeType.unusedUID++;
+});
+Clazz_defineMethod (c$, "getUniqueID", 
+function () {
+return this.uniqueID;
+});
+Clazz_defineMethod (c$, "getDescriptor", 
+function () {
+return this.desc;
+});
+Clazz_defineMethod (c$, "getSuperType", 
+function () {
+return this.next;
+});
+Clazz_overrideMethod (c$, "hashCode", 
+function () {
+return this.desc.hashCode ();
+});
+Clazz_defineMethod (c$, "isDerivedFrom", 
+function (other) {
+var comptype = this;
+do {
+if (comptype.desc === other.desc) {
+return true;
+}comptype = comptype.next;
+} while (comptype != null);
+return false;
+}, "jssun.java2d.loops.CompositeType");
+Clazz_overrideMethod (c$, "equals", 
+function (o) {
+if (Clazz_instanceOf (o, jssun.java2d.loops.CompositeType)) {
+return ((o).uniqueID == this.uniqueID);
+}return false;
+}, "~O");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return this.desc;
+});
+Clazz_defineStatics (c$,
+"DESC_ANY", "Any CompositeContext",
+"DESC_XOR", "XOR mode",
+"DESC_CLEAR", "Porter-Duff Clear",
+"DESC_SRC", "Porter-Duff Src",
+"DESC_DST", "Porter-Duff Dst",
+"DESC_SRC_OVER", "Porter-Duff Src Over Dst",
+"DESC_DST_OVER", "Porter-Duff Dst Over Src",
+"DESC_SRC_IN", "Porter-Duff Src In Dst",
+"DESC_DST_IN", "Porter-Duff Dst In Src",
+"DESC_SRC_OUT", "Porter-Duff Src HeldOutBy Dst",
+"DESC_DST_OUT", "Porter-Duff Dst HeldOutBy Src",
+"DESC_SRC_ATOP", "Porter-Duff Src Atop Dst",
+"DESC_DST_ATOP", "Porter-Duff Dst Atop Src",
+"DESC_ALPHA_XOR", "Porter-Duff Xor",
+"DESC_SRC_NO_EA", "Porter-Duff Src, No Extra Alpha",
+"DESC_SRC_OVER_NO_EA", "Porter-Duff SrcOverDst, No Extra Alpha",
+"DESC_ANY_ALPHA", "Any AlphaComposite Rule");
+c$.Any = c$.prototype.Any =  new jssun.java2d.loops.CompositeType (null, "Any CompositeContext");
+c$.General = c$.prototype.General = jssun.java2d.loops.CompositeType.Any;
+c$.AnyAlpha = c$.prototype.AnyAlpha = jssun.java2d.loops.CompositeType.General.deriveSubType ("Any AlphaComposite Rule");
+c$.Xor = c$.prototype.Xor = jssun.java2d.loops.CompositeType.General.deriveSubType ("XOR mode");
+c$.Clear = c$.prototype.Clear = jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType ("Porter-Duff Clear");
+c$.Src = c$.prototype.Src = jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType ("Porter-Duff Src");
+c$.Dst = c$.prototype.Dst = jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType ("Porter-Duff Dst");
+c$.SrcOver = c$.prototype.SrcOver = jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType ("Porter-Duff Src Over Dst");
+c$.DstOver = c$.prototype.DstOver = jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType ("Porter-Duff Dst Over Src");
+c$.SrcIn = c$.prototype.SrcIn = jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType ("Porter-Duff Src In Dst");
+c$.DstIn = c$.prototype.DstIn = jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType ("Porter-Duff Dst In Src");
+c$.SrcOut = c$.prototype.SrcOut = jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType ("Porter-Duff Src HeldOutBy Dst");
+c$.DstOut = c$.prototype.DstOut = jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType ("Porter-Duff Dst HeldOutBy Src");
+c$.SrcAtop = c$.prototype.SrcAtop = jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType ("Porter-Duff Src Atop Dst");
+c$.DstAtop = c$.prototype.DstAtop = jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType ("Porter-Duff Dst Atop Src");
+c$.AlphaXor = c$.prototype.AlphaXor = jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType ("Porter-Duff Xor");
+c$.SrcNoEa = c$.prototype.SrcNoEa = jssun.java2d.loops.CompositeType.Src.deriveSubType ("Porter-Duff Src, No Extra Alpha");
+c$.SrcOverNoEa = c$.prototype.SrcOverNoEa = jssun.java2d.loops.CompositeType.SrcOver.deriveSubType ("Porter-Duff SrcOverDst, No Extra Alpha");
+Clazz_defineStatics (c$,
+"unusedUID", 1);
+});
+Clazz_declarePackage ("awt2swing");
+Clazz_load (["javax.swing.JScrollPane"], "awt2swing.ScrollPane", null, function () {
+c$ = Clazz_declareType (awt2swing, "ScrollPane", javax.swing.JScrollPane);
+});
+Clazz_declarePackage ("javax.swing");
+Clazz_load (["javax.swing.JComponent", "$.JScrollBar", "$.ScrollPaneConstants", "javax.swing.plaf.UIResource"], "javax.swing.JScrollPane", ["java.lang.Boolean", "$.ClassCastException", "$.IllegalArgumentException", "java.awt.Point", "$.Rectangle", "javax.swing.JViewport", "$.ScrollPaneLayout", "$.Scrollable", "$.SwingUtilities", "$.UIManager"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.viewportBorder = null;
+this.verticalScrollBarPolicy = 20;
+this.horizontalScrollBarPolicy = 30;
+this.viewport = null;
+this.verticalScrollBar = null;
+this.horizontalScrollBar = null;
+this.rowHeader = null;
+this.columnHeader = null;
+this.lowerLeft = null;
+this.lowerRight = null;
+this.upperLeft = null;
+this.upperRight = null;
+this.wheelScrollState = true;
+if (!Clazz_isClassDefined ("javax.swing.JScrollPane.ScrollBar")) {
+javax.swing.JScrollPane.$JScrollPane$ScrollBar$ ();
+}
+Clazz_instantialize (this, arguments);
+}, javax.swing, "JScrollPane", javax.swing.JComponent, javax.swing.ScrollPaneConstants);
+Clazz_makeConstructor (c$, 
+function (view, vsbPolicy, hsbPolicy) {
+Clazz_superConstructor (this, javax.swing.JScrollPane, []);
+this.setLayout ( new javax.swing.ScrollPaneLayout.UIResource ());
+this.setVerticalScrollBarPolicy (vsbPolicy);
+this.setHorizontalScrollBarPolicy (hsbPolicy);
+this.setViewport (this.createViewport ());
+this.setVerticalScrollBar (this.createVerticalScrollBar ());
+this.setHorizontalScrollBar (this.createHorizontalScrollBar ());
+if (view != null) {
+this.setViewportView (view);
+}this.setUIProperty ("opaque", new Boolean (true));
+this.updateUI ();
+if (!this.getComponentOrientation ().isLeftToRight ()) {
+this.viewport.setViewPosition ( new java.awt.Point (2147483647, 0));
+}}, "java.awt.Component,~N,~N");
+Clazz_makeConstructor (c$, 
+function (view) {
+this.construct (view, 20, 30);
+}, "java.awt.Component");
+Clazz_makeConstructor (c$, 
+function (vsbPolicy, hsbPolicy) {
+this.construct (null, vsbPolicy, hsbPolicy);
+}, "~N,~N");
+Clazz_makeConstructor (c$, 
+function () {
+this.construct (null, 20, 30);
+});
+Clazz_overrideMethod (c$, "getUI", 
+function () {
+return this.ui;
+});
+Clazz_overrideMethod (c$, "updateUI", 
+function () {
+this.setUI (javax.swing.UIManager.getUI (this));
+});
+Clazz_overrideMethod (c$, "getUIClassID", 
+function () {
+return "ScrollPaneUI";
+});
+Clazz_defineMethod (c$, "setLayout", 
+function (layout) {
+if (Clazz_instanceOf (layout, javax.swing.ScrollPaneLayout)) {
+Clazz_superCall (this, javax.swing.JScrollPane, "setLayout", [layout]);
+(layout).syncWithScrollPane (this);
+} else if (layout == null) {
+Clazz_superCall (this, javax.swing.JScrollPane, "setLayout", [layout]);
+} else {
+var s = "layout of JScrollPane must be a ScrollPaneLayout";
+throw  new ClassCastException (s);
+}}, "java.awt.LayoutManager");
+Clazz_overrideMethod (c$, "isValidateRoot", 
+function () {
+return true;
+});
+Clazz_defineMethod (c$, "getVerticalScrollBarPolicy", 
+function () {
+return this.verticalScrollBarPolicy;
+});
+Clazz_defineMethod (c$, "setVerticalScrollBarPolicy", 
+function (policy) {
+switch (policy) {
+case 20:
+case 21:
+case 22:
+break;
+default:
+throw  new IllegalArgumentException ("invalid verticalScrollBarPolicy");
+}
+var old = this.verticalScrollBarPolicy;
+this.verticalScrollBarPolicy = policy;
+this.firePropertyChangeInt ("verticalScrollBarPolicy", old, policy);
+this.revalidate ();
+this.repaint ();
+}, "~N");
+Clazz_defineMethod (c$, "getHorizontalScrollBarPolicy", 
+function () {
+return this.horizontalScrollBarPolicy;
+});
+Clazz_defineMethod (c$, "setHorizontalScrollBarPolicy", 
+function (policy) {
+switch (policy) {
+case 30:
+case 31:
+case 32:
+break;
+default:
+throw  new IllegalArgumentException ("invalid horizontalScrollBarPolicy");
+}
+var old = this.horizontalScrollBarPolicy;
+this.horizontalScrollBarPolicy = policy;
+this.firePropertyChangeInt ("horizontalScrollBarPolicy", old, policy);
+this.revalidate ();
+this.repaint ();
+}, "~N");
+Clazz_defineMethod (c$, "getViewportBorder", 
+function () {
+return this.viewportBorder;
+});
+Clazz_defineMethod (c$, "setViewportBorder", 
+function (viewportBorder) {
+var oldValue = this.viewportBorder;
+this.viewportBorder = viewportBorder;
+this.firePropertyChangeObject ("viewportBorder", oldValue, viewportBorder);
+}, "javax.swing.border.Border");
+Clazz_defineMethod (c$, "getViewportBorderBounds", 
+function () {
+var borderR =  new java.awt.Rectangle (this.getSize ());
+var insets = this.getInsets ();
+borderR.x = insets.left;
+borderR.y = insets.top;
+borderR.width -= insets.left + insets.right;
+borderR.height -= insets.top + insets.bottom;
+var leftToRight = javax.swing.SwingUtilities.isLeftToRight (this);
+var colHead = this.getColumnHeader ();
+if ((colHead != null) && (colHead.isVisible ())) {
+var colHeadHeight = colHead.getHeight ();
+borderR.y += colHeadHeight;
+borderR.height -= colHeadHeight;
+}var rowHead = this.getRowHeader ();
+if ((rowHead != null) && (rowHead.isVisible ())) {
+var rowHeadWidth = rowHead.getWidth ();
+if (leftToRight) {
+borderR.x += rowHeadWidth;
+}borderR.width -= rowHeadWidth;
+}var vsb = this.getVerticalScrollBar ();
+if ((vsb != null) && (vsb.isVisible ())) {
+var vsbWidth = vsb.getWidth ();
+if (!leftToRight) {
+borderR.x += vsbWidth;
+}borderR.width -= vsbWidth;
+}var hsb = this.getHorizontalScrollBar ();
+if ((hsb != null) && (hsb.isVisible ())) {
+borderR.height -= hsb.getHeight ();
+}return borderR;
+});
+Clazz_defineMethod (c$, "createHorizontalScrollBar", 
+function () {
+return Clazz_innerTypeInstance (javax.swing.JScrollPane.ScrollBar, this, null, 0);
+});
+Clazz_defineMethod (c$, "getHorizontalScrollBar", 
+function () {
+return this.horizontalScrollBar;
+});
+Clazz_defineMethod (c$, "setHorizontalScrollBar", 
+function (horizontalScrollBar) {
+var old = this.getHorizontalScrollBar ();
+this.horizontalScrollBar = horizontalScrollBar;
+if (horizontalScrollBar != null) {
+this.add (horizontalScrollBar, "HORIZONTAL_SCROLLBAR");
+} else if (old != null) {
+this.remove (old);
+}this.firePropertyChangeObject ("horizontalScrollBar", old, horizontalScrollBar);
+this.revalidate ();
+this.repaint ();
+}, "javax.swing.JScrollBar");
+Clazz_defineMethod (c$, "createVerticalScrollBar", 
+function () {
+return Clazz_innerTypeInstance (javax.swing.JScrollPane.ScrollBar, this, null, 1);
+});
+Clazz_defineMethod (c$, "getVerticalScrollBar", 
+function () {
+return this.verticalScrollBar;
+});
+Clazz_defineMethod (c$, "setVerticalScrollBar", 
+function (verticalScrollBar) {
+var old = this.getVerticalScrollBar ();
+this.verticalScrollBar = verticalScrollBar;
+this.add (verticalScrollBar, "VERTICAL_SCROLLBAR");
+this.firePropertyChangeObject ("verticalScrollBar", old, verticalScrollBar);
+this.revalidate ();
+this.repaint ();
+}, "javax.swing.JScrollBar");
+Clazz_defineMethod (c$, "createViewport", 
+function () {
+return  new javax.swing.JViewport ();
+});
+Clazz_defineMethod (c$, "getViewport", 
+function () {
+return this.viewport;
+});
+Clazz_defineMethod (c$, "setViewport", 
+function (viewport) {
+var old = this.getViewport ();
+this.viewport = viewport;
+if (viewport != null) {
+this.add (viewport, "VIEWPORT");
+} else if (old != null) {
+this.remove (old);
+}this.firePropertyChangeObject ("viewport", old, viewport);
+this.revalidate ();
+this.repaint ();
+}, "javax.swing.JViewport");
+Clazz_defineMethod (c$, "setViewportView", 
+function (view) {
+if (this.getViewport () == null) {
+this.setViewport (this.createViewport ());
+}this.getViewport ().setView (view);
+}, "java.awt.Component");
+Clazz_defineMethod (c$, "getRowHeader", 
+function () {
+return this.rowHeader;
+});
+Clazz_defineMethod (c$, "setRowHeader", 
+function (rowHeader) {
+var old = this.getRowHeader ();
+this.rowHeader = rowHeader;
+if (rowHeader != null) {
+this.add (rowHeader, "ROW_HEADER");
+} else if (old != null) {
+this.remove (old);
+}this.firePropertyChangeObject ("rowHeader", old, rowHeader);
+this.revalidate ();
+this.repaint ();
+}, "javax.swing.JViewport");
+Clazz_defineMethod (c$, "setRowHeaderView", 
+function (view) {
+if (this.getRowHeader () == null) {
+this.setRowHeader (this.createViewport ());
+}this.getRowHeader ().setView (view);
+}, "java.awt.Component");
+Clazz_defineMethod (c$, "getColumnHeader", 
+function () {
+return this.columnHeader;
+});
+Clazz_defineMethod (c$, "setColumnHeader", 
+function (columnHeader) {
+var old = this.getColumnHeader ();
+this.columnHeader = columnHeader;
+if (columnHeader != null) {
+this.add (columnHeader, "COLUMN_HEADER");
+} else if (old != null) {
+this.remove (old);
+}this.firePropertyChangeObject ("columnHeader", old, columnHeader);
+this.revalidate ();
+this.repaint ();
+}, "javax.swing.JViewport");
+Clazz_defineMethod (c$, "setColumnHeaderView", 
+function (view) {
+if (this.getColumnHeader () == null) {
+this.setColumnHeader (this.createViewport ());
+}this.getColumnHeader ().setView (view);
+}, "java.awt.Component");
+Clazz_defineMethod (c$, "getCorner", 
+function (key) {
+var isLeftToRight = this.getComponentOrientation ().isLeftToRight ();
+if (key.equals ("LOWER_LEADING_CORNER")) {
+key = isLeftToRight ? "LOWER_LEFT_CORNER" : "LOWER_RIGHT_CORNER";
+} else if (key.equals ("LOWER_TRAILING_CORNER")) {
+key = isLeftToRight ? "LOWER_RIGHT_CORNER" : "LOWER_LEFT_CORNER";
+} else if (key.equals ("UPPER_LEADING_CORNER")) {
+key = isLeftToRight ? "UPPER_LEFT_CORNER" : "UPPER_RIGHT_CORNER";
+} else if (key.equals ("UPPER_TRAILING_CORNER")) {
+key = isLeftToRight ? "UPPER_RIGHT_CORNER" : "UPPER_LEFT_CORNER";
+}if (key.equals ("LOWER_LEFT_CORNER")) {
+return this.lowerLeft;
+} else if (key.equals ("LOWER_RIGHT_CORNER")) {
+return this.lowerRight;
+} else if (key.equals ("UPPER_LEFT_CORNER")) {
+return this.upperLeft;
+} else if (key.equals ("UPPER_RIGHT_CORNER")) {
+return this.upperRight;
+} else {
+return null;
+}}, "~S");
+Clazz_defineMethod (c$, "setCorner", 
+function (key, corner) {
+var old;
+var isLeftToRight = this.getComponentOrientation ().isLeftToRight ();
+if (key.equals ("LOWER_LEADING_CORNER")) {
+key = isLeftToRight ? "LOWER_LEFT_CORNER" : "LOWER_RIGHT_CORNER";
+} else if (key.equals ("LOWER_TRAILING_CORNER")) {
+key = isLeftToRight ? "LOWER_RIGHT_CORNER" : "LOWER_LEFT_CORNER";
+} else if (key.equals ("UPPER_LEADING_CORNER")) {
+key = isLeftToRight ? "UPPER_LEFT_CORNER" : "UPPER_RIGHT_CORNER";
+} else if (key.equals ("UPPER_TRAILING_CORNER")) {
+key = isLeftToRight ? "UPPER_RIGHT_CORNER" : "UPPER_LEFT_CORNER";
+}if (key.equals ("LOWER_LEFT_CORNER")) {
+old = this.lowerLeft;
+this.lowerLeft = corner;
+} else if (key.equals ("LOWER_RIGHT_CORNER")) {
+old = this.lowerRight;
+this.lowerRight = corner;
+} else if (key.equals ("UPPER_LEFT_CORNER")) {
+old = this.upperLeft;
+this.upperLeft = corner;
+} else if (key.equals ("UPPER_RIGHT_CORNER")) {
+old = this.upperRight;
+this.upperRight = corner;
+} else {
+throw  new IllegalArgumentException ("invalid corner key");
+}if (old != null) {
+this.remove (old);
+}if (corner != null) {
+this.add (corner, key);
+}this.firePropertyChangeObject (key, old, corner);
+this.revalidate ();
+this.repaint ();
+}, "~S,java.awt.Component");
+Clazz_defineMethod (c$, "setComponentOrientation", 
+function (co) {
+Clazz_superCall (this, javax.swing.JScrollPane, "setComponentOrientation", [co]);
+if (this.verticalScrollBar != null) this.verticalScrollBar.setComponentOrientation (co);
+if (this.horizontalScrollBar != null) this.horizontalScrollBar.setComponentOrientation (co);
+}, "java.awt.ComponentOrientation");
+Clazz_defineMethod (c$, "isWheelScrollingEnabled", 
+function () {
+return this.wheelScrollState;
+});
+Clazz_defineMethod (c$, "setWheelScrollingEnabled", 
+function (handleWheel) {
+var old = this.wheelScrollState;
+this.wheelScrollState = handleWheel;
+this.firePropertyChangeBool ("wheelScrollingEnabled", old, handleWheel);
+}, "~B");
+Clazz_defineMethod (c$, "paramString", 
+function () {
+var viewportBorderString = (this.viewportBorder != null ? this.viewportBorder.toString () : "");
+var viewportString = (this.viewport != null ? this.viewport.toString () : "");
+var verticalScrollBarPolicyString;
+if (this.verticalScrollBarPolicy == 20) {
+verticalScrollBarPolicyString = "VERTICAL_SCROLLBAR_AS_NEEDED";
+} else if (this.verticalScrollBarPolicy == 21) {
+verticalScrollBarPolicyString = "VERTICAL_SCROLLBAR_NEVER";
+} else if (this.verticalScrollBarPolicy == 22) {
+verticalScrollBarPolicyString = "VERTICAL_SCROLLBAR_ALWAYS";
+} else verticalScrollBarPolicyString = "";
+var horizontalScrollBarPolicyString;
+if (this.horizontalScrollBarPolicy == 30) {
+horizontalScrollBarPolicyString = "HORIZONTAL_SCROLLBAR_AS_NEEDED";
+} else if (this.horizontalScrollBarPolicy == 31) {
+horizontalScrollBarPolicyString = "HORIZONTAL_SCROLLBAR_NEVER";
+} else if (this.horizontalScrollBarPolicy == 32) {
+horizontalScrollBarPolicyString = "HORIZONTAL_SCROLLBAR_ALWAYS";
+} else horizontalScrollBarPolicyString = "";
+var horizontalScrollBarString = (this.horizontalScrollBar != null ? this.horizontalScrollBar.toString () : "");
+var verticalScrollBarString = (this.verticalScrollBar != null ? this.verticalScrollBar.toString () : "");
+var columnHeaderString = (this.columnHeader != null ? this.columnHeader.toString () : "");
+var rowHeaderString = (this.rowHeader != null ? this.rowHeader.toString () : "");
+var lowerLeftString = (this.lowerLeft != null ? this.lowerLeft.toString () : "");
+var lowerRightString = (this.lowerRight != null ? this.lowerRight.toString () : "");
+var upperLeftString = (this.upperLeft != null ? this.upperLeft.toString () : "");
+var upperRightString = (this.upperRight != null ? this.upperRight.toString () : "");
+return Clazz_superCall (this, javax.swing.JScrollPane, "paramString", []) + ",columnHeader=" + columnHeaderString + ",horizontalScrollBar=" + horizontalScrollBarString + ",horizontalScrollBarPolicy=" + horizontalScrollBarPolicyString + ",lowerLeft=" + lowerLeftString + ",lowerRight=" + lowerRightString + ",rowHeader=" + rowHeaderString + ",upperLeft=" + upperLeftString + ",upperRight=" + upperRightString + ",verticalScrollBar=" + verticalScrollBarString + ",verticalScrollBarPolicy=" + verticalScrollBarPolicyString + ",viewport=" + viewportString + ",viewportBorder=" + viewportBorderString;
+});
+c$.$JScrollPane$ScrollBar$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.unitIncrementSet = false;
+this.blockIncrementSet = false;
+Clazz_instantialize (this, arguments);
+}, javax.swing.JScrollPane, "ScrollBar", javax.swing.JScrollBar, javax.swing.plaf.UIResource);
+Clazz_makeConstructor (c$, 
+function (a) {
+Clazz_superConstructor (this, javax.swing.JScrollPane.ScrollBar, [a]);
+this.putClientProperty ("JScrollBar.fastWheelScrolling", Boolean.TRUE);
+}, "~N");
+Clazz_defineMethod (c$, "setUnitIncrement", 
+function (a) {
+this.unitIncrementSet = true;
+this.putClientProperty ("JScrollBar.fastWheelScrolling", null);
+Clazz_superCall (this, javax.swing.JScrollPane.ScrollBar, "setUnitIncrement", [a]);
+}, "~N");
+Clazz_defineMethod (c$, "getUnitIncrement", 
+function (a) {
+var b = this.b$["javax.swing.JScrollPane"].getViewport ();
+if (!this.unitIncrementSet && (b != null) && (Clazz_instanceOf (b.getView (), javax.swing.Scrollable))) {
+var c = (b.getView ());
+var d = b.getViewRect ();
+return c.getScrollableUnitIncrement (d, this.getOrientation (), a);
+} else {
+return Clazz_superCall (this, javax.swing.JScrollPane.ScrollBar, "getUnitIncrement", [a]);
+}}, "~N");
+Clazz_defineMethod (c$, "setBlockIncrement", 
+function (a) {
+this.blockIncrementSet = true;
+this.putClientProperty ("JScrollBar.fastWheelScrolling", null);
+Clazz_superCall (this, javax.swing.JScrollPane.ScrollBar, "setBlockIncrement", [a]);
+}, "~N");
+Clazz_defineMethod (c$, "getBlockIncrement", 
+function (a) {
+var b = this.b$["javax.swing.JScrollPane"].getViewport ();
+if (this.blockIncrementSet || b == null) {
+return Clazz_superCall (this, javax.swing.JScrollPane.ScrollBar, "getBlockIncrement", [a]);
+} else if (Clazz_instanceOf (b.getView (), javax.swing.Scrollable)) {
+var c = (b.getView ());
+var d = b.getViewRect ();
+return c.getScrollableBlockIncrement (d, this.getOrientation (), a);
+} else if (this.getOrientation () == 1) {
+return b.getExtentSize ().height;
+} else {
+return b.getExtentSize ().width;
+}}, "~N");
+c$ = Clazz_p0p ();
+};
+Clazz_defineStatics (c$,
+"$uiClassID", "ScrollPaneUI");
+});
+Clazz_declarePackage ("javax.swing");
+c$ = Clazz_declareInterface (javax.swing, "ScrollPaneConstants");
+Clazz_defineStatics (c$,
+"VIEWPORT", "VIEWPORT",
+"VERTICAL_SCROLLBAR", "VERTICAL_SCROLLBAR",
+"HORIZONTAL_SCROLLBAR", "HORIZONTAL_SCROLLBAR",
+"ROW_HEADER", "ROW_HEADER",
+"COLUMN_HEADER", "COLUMN_HEADER",
+"LOWER_LEFT_CORNER", "LOWER_LEFT_CORNER",
+"LOWER_RIGHT_CORNER", "LOWER_RIGHT_CORNER",
+"UPPER_LEFT_CORNER", "UPPER_LEFT_CORNER",
+"UPPER_RIGHT_CORNER", "UPPER_RIGHT_CORNER",
+"LOWER_LEADING_CORNER", "LOWER_LEADING_CORNER",
+"LOWER_TRAILING_CORNER", "LOWER_TRAILING_CORNER",
+"UPPER_LEADING_CORNER", "UPPER_LEADING_CORNER",
+"UPPER_TRAILING_CORNER", "UPPER_TRAILING_CORNER",
+"VERTICAL_SCROLLBAR_POLICY", "VERTICAL_SCROLLBAR_POLICY",
+"HORIZONTAL_SCROLLBAR_POLICY", "HORIZONTAL_SCROLLBAR_POLICY",
+"VERTICAL_SCROLLBAR_AS_NEEDED", 20,
+"VERTICAL_SCROLLBAR_NEVER", 21,
+"VERTICAL_SCROLLBAR_ALWAYS", 22,
+"HORIZONTAL_SCROLLBAR_AS_NEEDED", 30,
+"HORIZONTAL_SCROLLBAR_NEVER", 31,
+"HORIZONTAL_SCROLLBAR_ALWAYS", 32);
+Clazz_declarePackage ("javax.swing");
+Clazz_load (["java.awt.LayoutManager", "javax.swing.ScrollPaneConstants", "javax.swing.plaf.UIResource"], "javax.swing.ScrollPaneLayout", ["java.lang.IllegalArgumentException", "java.awt.Dimension", "$.Insets", "$.Rectangle", "javax.swing.Scrollable", "$.SwingUtilities", "$.UIManager"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.viewport = null;
+this.vsb = null;
+this.hsb = null;
+this.rowHead = null;
+this.colHead = null;
+this.lowerLeft = null;
+this.lowerRight = null;
+this.upperLeft = null;
+this.upperRight = null;
+this.vsbPolicy = 20;
+this.hsbPolicy = 30;
+Clazz_instantialize (this, arguments);
+}, javax.swing, "ScrollPaneLayout", null, [java.awt.LayoutManager, javax.swing.ScrollPaneConstants]);
+Clazz_defineMethod (c$, "syncWithScrollPane", 
+function (sp) {
+this.viewport = sp.getViewport ();
+this.vsb = sp.getVerticalScrollBar ();
+this.hsb = sp.getHorizontalScrollBar ();
+this.rowHead = sp.getRowHeader ();
+this.colHead = sp.getColumnHeader ();
+this.lowerLeft = sp.getCorner ("LOWER_LEFT_CORNER");
+this.lowerRight = sp.getCorner ("LOWER_RIGHT_CORNER");
+this.upperLeft = sp.getCorner ("UPPER_LEFT_CORNER");
+this.upperRight = sp.getCorner ("UPPER_RIGHT_CORNER");
+this.vsbPolicy = sp.getVerticalScrollBarPolicy ();
+this.hsbPolicy = sp.getHorizontalScrollBarPolicy ();
+}, "javax.swing.JScrollPane");
+Clazz_defineMethod (c$, "addSingletonComponent", 
+function (oldC, newC) {
+if ((oldC != null) && (oldC !== newC)) {
+oldC.getParent ().remove (oldC);
+}return newC;
+}, "java.awt.Component,java.awt.Component");
+Clazz_overrideMethod (c$, "addLayoutComponent", 
+function (s, c) {
+if (s.equals ("VIEWPORT")) {
+this.viewport = this.addSingletonComponent (this.viewport, c);
+} else if (s.equals ("VERTICAL_SCROLLBAR")) {
+this.vsb = this.addSingletonComponent (this.vsb, c);
+} else if (s.equals ("HORIZONTAL_SCROLLBAR")) {
+this.hsb = this.addSingletonComponent (this.hsb, c);
+} else if (s.equals ("ROW_HEADER")) {
+this.rowHead = this.addSingletonComponent (this.rowHead, c);
+} else if (s.equals ("COLUMN_HEADER")) {
+this.colHead = this.addSingletonComponent (this.colHead, c);
+} else if (s.equals ("LOWER_LEFT_CORNER")) {
+this.lowerLeft = this.addSingletonComponent (this.lowerLeft, c);
+} else if (s.equals ("LOWER_RIGHT_CORNER")) {
+this.lowerRight = this.addSingletonComponent (this.lowerRight, c);
+} else if (s.equals ("UPPER_LEFT_CORNER")) {
+this.upperLeft = this.addSingletonComponent (this.upperLeft, c);
+} else if (s.equals ("UPPER_RIGHT_CORNER")) {
+this.upperRight = this.addSingletonComponent (this.upperRight, c);
+} else {
+throw  new IllegalArgumentException ("invalid layout key " + s);
+}}, "~S,java.awt.Component");
+Clazz_overrideMethod (c$, "removeLayoutComponent", 
+function (c) {
+if (c === this.viewport) {
+this.viewport = null;
+} else if (c === this.vsb) {
+this.vsb = null;
+} else if (c === this.hsb) {
+this.hsb = null;
+} else if (c === this.rowHead) {
+this.rowHead = null;
+} else if (c === this.colHead) {
+this.colHead = null;
+} else if (c === this.lowerLeft) {
+this.lowerLeft = null;
+} else if (c === this.lowerRight) {
+this.lowerRight = null;
+} else if (c === this.upperLeft) {
+this.upperLeft = null;
+} else if (c === this.upperRight) {
+this.upperRight = null;
+}}, "java.awt.Component");
+Clazz_defineMethod (c$, "getVerticalScrollBarPolicy", 
+function () {
+return this.vsbPolicy;
+});
+Clazz_defineMethod (c$, "setVerticalScrollBarPolicy", 
+function (x) {
+switch (x) {
+case 20:
+case 21:
+case 22:
+this.vsbPolicy = x;
+break;
+default:
+throw  new IllegalArgumentException ("invalid verticalScrollBarPolicy");
+}
+}, "~N");
+Clazz_defineMethod (c$, "getHorizontalScrollBarPolicy", 
+function () {
+return this.hsbPolicy;
+});
+Clazz_defineMethod (c$, "setHorizontalScrollBarPolicy", 
+function (x) {
+switch (x) {
+case 30:
+case 31:
+case 32:
+this.hsbPolicy = x;
+break;
+default:
+throw  new IllegalArgumentException ("invalid horizontalScrollBarPolicy");
+}
+}, "~N");
+Clazz_defineMethod (c$, "getViewport", 
+function () {
+return this.viewport;
+});
+Clazz_defineMethod (c$, "getHorizontalScrollBar", 
+function () {
+return this.hsb;
+});
+Clazz_defineMethod (c$, "getVerticalScrollBar", 
+function () {
+return this.vsb;
+});
+Clazz_defineMethod (c$, "getRowHeader", 
+function () {
+return this.rowHead;
+});
+Clazz_defineMethod (c$, "getColumnHeader", 
+function () {
+return this.colHead;
+});
+Clazz_defineMethod (c$, "getCorner", 
+function (key) {
+if (key.equals ("LOWER_LEFT_CORNER")) {
+return this.lowerLeft;
+} else if (key.equals ("LOWER_RIGHT_CORNER")) {
+return this.lowerRight;
+} else if (key.equals ("UPPER_LEFT_CORNER")) {
+return this.upperLeft;
+} else if (key.equals ("UPPER_RIGHT_CORNER")) {
+return this.upperRight;
+} else {
+return null;
+}}, "~S");
+Clazz_overrideMethod (c$, "preferredLayoutSize", 
+function (parent) {
+var scrollPane = parent;
+this.vsbPolicy = scrollPane.getVerticalScrollBarPolicy ();
+this.hsbPolicy = scrollPane.getHorizontalScrollBarPolicy ();
+var insets = parent.getInsets ();
+var prefWidth = insets.left + insets.right;
+var prefHeight = insets.top + insets.bottom;
+var extentSize = null;
+var viewSize = null;
+var view = null;
+if (this.viewport != null) {
+extentSize = this.viewport.getPreferredSize ();
+view = this.viewport.getView ();
+if (view != null) {
+viewSize = view.getPreferredSize ();
+} else {
+viewSize =  new java.awt.Dimension (0, 0);
+}}if (extentSize != null) {
+prefWidth += extentSize.width;
+prefHeight += extentSize.height;
+}var viewportBorder = scrollPane.getViewportBorder ();
+if (viewportBorder != null) {
+var vpbInsets = viewportBorder.getBorderInsets (parent);
+prefWidth += vpbInsets.left + vpbInsets.right;
+prefHeight += vpbInsets.top + vpbInsets.bottom;
+}if ((this.rowHead != null) && this.rowHead.isVisible ()) {
+prefWidth += this.rowHead.getPreferredSize ().width;
+}if ((this.colHead != null) && this.colHead.isVisible ()) {
+prefHeight += this.colHead.getPreferredSize ().height;
+}if ((this.vsb != null) && (this.vsbPolicy != 21)) {
+if (this.vsbPolicy == 22) {
+prefWidth += this.vsb.getPreferredSize ().width;
+} else if ((viewSize != null) && (extentSize != null)) {
+var canScroll = true;
+if (Clazz_instanceOf (view, javax.swing.Scrollable)) {
+canScroll = !(view).getScrollableTracksViewportHeight ();
+}if (canScroll && (viewSize.height > extentSize.height)) {
+prefWidth += this.vsb.getPreferredSize ().width;
+}}}if ((this.hsb != null) && (this.hsbPolicy != 31)) {
+if (this.hsbPolicy == 32) {
+prefHeight += this.hsb.getPreferredSize ().height;
+} else if ((viewSize != null) && (extentSize != null)) {
+var canScroll = true;
+if (Clazz_instanceOf (view, javax.swing.Scrollable)) {
+canScroll = !(view).getScrollableTracksViewportWidth ();
+}if (canScroll && (viewSize.width > extentSize.width)) {
+prefHeight += this.hsb.getPreferredSize ().height;
+}}}return  new java.awt.Dimension (prefWidth, prefHeight);
+}, "java.awt.Container");
+Clazz_overrideMethod (c$, "minimumLayoutSize", 
+function (parent) {
+var scrollPane = parent;
+this.vsbPolicy = scrollPane.getVerticalScrollBarPolicy ();
+this.hsbPolicy = scrollPane.getHorizontalScrollBarPolicy ();
+var insets = parent.getInsets ();
+var minWidth = insets.left + insets.right;
+var minHeight = insets.top + insets.bottom;
+if (this.viewport != null) {
+var size = this.viewport.getMinimumSize ();
+minWidth += size.width;
+minHeight += size.height;
+}var viewportBorder = scrollPane.getViewportBorder ();
+if (viewportBorder != null) {
+var vpbInsets = viewportBorder.getBorderInsets (parent);
+minWidth += vpbInsets.left + vpbInsets.right;
+minHeight += vpbInsets.top + vpbInsets.bottom;
+}if ((this.rowHead != null) && this.rowHead.isVisible ()) {
+var size = this.rowHead.getMinimumSize ();
+minWidth += size.width;
+minHeight = Math.max (minHeight, size.height);
+}if ((this.colHead != null) && this.colHead.isVisible ()) {
+var size = this.colHead.getMinimumSize ();
+minWidth = Math.max (minWidth, size.width);
+minHeight += size.height;
+}if ((this.vsb != null) && (this.vsbPolicy != 21)) {
+var size = this.vsb.getMinimumSize ();
+minWidth += size.width;
+minHeight = Math.max (minHeight, size.height);
+}if ((this.hsb != null) && (this.hsbPolicy != 31)) {
+var size = this.hsb.getMinimumSize ();
+minWidth = Math.max (minWidth, size.width);
+minHeight += size.height;
+}return  new java.awt.Dimension (minWidth, minHeight);
+}, "java.awt.Container");
+Clazz_overrideMethod (c$, "layoutContainer", 
+function (parent) {
+var scrollPane = parent;
+this.vsbPolicy = scrollPane.getVerticalScrollBarPolicy ();
+this.hsbPolicy = scrollPane.getHorizontalScrollBarPolicy ();
+var availR = scrollPane.getBounds ();
+availR.x = availR.y = 0;
+var insets = parent.getInsets ();
+availR.x = insets.left;
+availR.y = insets.top;
+availR.width -= insets.left + insets.right;
+availR.height -= insets.top + insets.bottom;
+var leftToRight = javax.swing.SwingUtilities.isLeftToRight (scrollPane);
+var colHeadR =  new java.awt.Rectangle (0, availR.y, 0, 0);
+if ((this.colHead != null) && (this.colHead.isVisible ())) {
+var colHeadHeight = Math.min (availR.height, this.colHead.getPreferredSize ().height);
+colHeadR.height = colHeadHeight;
+availR.y += colHeadHeight;
+availR.height -= colHeadHeight;
+}var rowHeadR =  new java.awt.Rectangle (0, 0, 0, 0);
+if ((this.rowHead != null) && (this.rowHead.isVisible ())) {
+var rowHeadWidth = Math.min (availR.width, this.rowHead.getPreferredSize ().width);
+rowHeadR.width = rowHeadWidth;
+availR.width -= rowHeadWidth;
+if (leftToRight) {
+rowHeadR.x = availR.x;
+availR.x += rowHeadWidth;
+} else {
+rowHeadR.x = availR.x + availR.width;
+}}var viewportBorder = scrollPane.getViewportBorder ();
+var vpbInsets;
+if (viewportBorder != null) {
+vpbInsets = viewportBorder.getBorderInsets (parent);
+availR.x += vpbInsets.left;
+availR.y += vpbInsets.top;
+availR.width -= vpbInsets.left + vpbInsets.right;
+availR.height -= vpbInsets.top + vpbInsets.bottom;
+} else {
+vpbInsets =  new java.awt.Insets (0, 0, 0, 0);
+}var view = (this.viewport != null) ? this.viewport.getView () : null;
+var viewPrefSize = (view != null) ? view.getPreferredSize () :  new java.awt.Dimension (0, 0);
+var extentSize = (this.viewport != null) ? this.viewport.toViewCoordinates (availR.getSize ()) :  new java.awt.Dimension (0, 0);
+var viewTracksViewportWidth = false;
+var viewTracksViewportHeight = false;
+var isEmpty = (availR.width < 0 || availR.height < 0);
+var sv;
+if (!isEmpty && Clazz_instanceOf (view, javax.swing.Scrollable)) {
+sv = view;
+viewTracksViewportWidth = sv.getScrollableTracksViewportWidth ();
+viewTracksViewportHeight = sv.getScrollableTracksViewportHeight ();
+} else {
+sv = null;
+}var vsbR =  new java.awt.Rectangle (0, availR.y - vpbInsets.top, 0, 0);
+var vsbNeeded;
+if (isEmpty) {
+vsbNeeded = false;
+} else if (this.vsbPolicy == 22) {
+vsbNeeded = true;
+} else if (this.vsbPolicy == 21) {
+vsbNeeded = false;
+} else {
+vsbNeeded = !viewTracksViewportHeight && (viewPrefSize.height > extentSize.height);
+}if ((this.vsb != null) && vsbNeeded) {
+this.adjustForVSB (true, availR, vsbR, vpbInsets, leftToRight);
+extentSize = this.viewport.toViewCoordinates (availR.getSize ());
+}var hsbR =  new java.awt.Rectangle (availR.x - vpbInsets.left, 0, 0, 0);
+var hsbNeeded;
+if (isEmpty) {
+hsbNeeded = false;
+} else if (this.hsbPolicy == 32) {
+hsbNeeded = true;
+} else if (this.hsbPolicy == 31) {
+hsbNeeded = false;
+} else {
+hsbNeeded = !viewTracksViewportWidth && (viewPrefSize.width > extentSize.width);
+}if ((this.hsb != null) && hsbNeeded) {
+this.adjustForHSB (true, availR, hsbR, vpbInsets);
+if ((this.vsb != null) && !vsbNeeded && (this.vsbPolicy != 21)) {
+extentSize = this.viewport.toViewCoordinates (availR.getSize ());
+vsbNeeded = viewPrefSize.height > extentSize.height;
+if (vsbNeeded) {
+this.adjustForVSB (true, availR, vsbR, vpbInsets, leftToRight);
+}}}if (this.viewport != null) {
+this.viewport.setBounds (availR);
+if (sv != null) {
+extentSize = this.viewport.toViewCoordinates (availR.getSize ());
+var oldHSBNeeded = hsbNeeded;
+var oldVSBNeeded = vsbNeeded;
+viewTracksViewportWidth = sv.getScrollableTracksViewportWidth ();
+viewTracksViewportHeight = sv.getScrollableTracksViewportHeight ();
+if (this.vsb != null && this.vsbPolicy == 20) {
+var newVSBNeeded = !viewTracksViewportHeight && (viewPrefSize.height > extentSize.height);
+if (newVSBNeeded != vsbNeeded) {
+vsbNeeded = newVSBNeeded;
+this.adjustForVSB (vsbNeeded, availR, vsbR, vpbInsets, leftToRight);
+extentSize = this.viewport.toViewCoordinates (availR.getSize ());
+}}if (this.hsb != null && this.hsbPolicy == 30) {
+var newHSBbNeeded = !viewTracksViewportWidth && (viewPrefSize.width > extentSize.width);
+if (newHSBbNeeded != hsbNeeded) {
+hsbNeeded = newHSBbNeeded;
+this.adjustForHSB (hsbNeeded, availR, hsbR, vpbInsets);
+if ((this.vsb != null) && !vsbNeeded && (this.vsbPolicy != 21)) {
+extentSize = this.viewport.toViewCoordinates (availR.getSize ());
+vsbNeeded = viewPrefSize.height > extentSize.height;
+if (vsbNeeded) {
+this.adjustForVSB (true, availR, vsbR, vpbInsets, leftToRight);
+}}}}if (oldHSBNeeded != hsbNeeded || oldVSBNeeded != vsbNeeded) {
+this.viewport.setBounds (availR);
+}}}vsbR.height = availR.height + vpbInsets.top + vpbInsets.bottom;
+hsbR.width = availR.width + vpbInsets.left + vpbInsets.right;
+rowHeadR.height = availR.height + vpbInsets.top + vpbInsets.bottom;
+rowHeadR.y = availR.y - vpbInsets.top;
+colHeadR.width = availR.width + vpbInsets.left + vpbInsets.right;
+colHeadR.x = availR.x - vpbInsets.left;
+if (this.rowHead != null) {
+this.rowHead.setBounds (rowHeadR);
+}if (this.colHead != null) {
+this.colHead.setBounds (colHeadR);
+}if (this.vsb != null) {
+if (vsbNeeded) {
+if (this.colHead != null && javax.swing.UIManager.getBoolean ("ScrollPane.fillUpperCorner")) {
+if ((leftToRight && this.upperRight == null) || (!leftToRight && this.upperLeft == null)) {
+vsbR.y = colHeadR.y;
+vsbR.height += colHeadR.height;
+}}this.vsb.setVisible (true);
+this.vsb.setBounds (vsbR);
+} else {
+this.vsb.setVisible (false);
+}}if (this.hsb != null) {
+if (hsbNeeded) {
+if (this.rowHead != null && javax.swing.UIManager.getBoolean ("ScrollPane.fillLowerCorner")) {
+if ((leftToRight && this.lowerLeft == null) || (!leftToRight && this.lowerRight == null)) {
+if (leftToRight) {
+hsbR.x = rowHeadR.x;
+}hsbR.width += rowHeadR.width;
+}}this.hsb.setVisible (true);
+this.hsb.setBounds (hsbR);
+} else {
+this.hsb.setVisible (false);
+}}if (this.lowerLeft != null) {
+this.lowerLeft.setBounds (leftToRight ? rowHeadR.x : vsbR.x, hsbR.y, leftToRight ? rowHeadR.width : vsbR.width, hsbR.height);
+}if (this.lowerRight != null) {
+this.lowerRight.setBounds (leftToRight ? vsbR.x : rowHeadR.x, hsbR.y, leftToRight ? vsbR.width : rowHeadR.width, hsbR.height);
+}if (this.upperLeft != null) {
+this.upperLeft.setBounds (leftToRight ? rowHeadR.x : vsbR.x, colHeadR.y, leftToRight ? rowHeadR.width : vsbR.width, colHeadR.height);
+}if (this.upperRight != null) {
+this.upperRight.setBounds (leftToRight ? vsbR.x : rowHeadR.x, colHeadR.y, leftToRight ? vsbR.width : rowHeadR.width, colHeadR.height);
+}}, "java.awt.Container");
+Clazz_defineMethod (c$, "adjustForVSB", 
+ function (wantsVSB, available, vsbR, vpbInsets, leftToRight) {
+var oldWidth = vsbR.width;
+if (wantsVSB) {
+var vsbWidth = Math.max (0, Math.min (this.vsb.getPreferredSize ().width, available.width));
+available.width -= vsbWidth;
+vsbR.width = vsbWidth;
+if (leftToRight) {
+vsbR.x = available.x + available.width + vpbInsets.right;
+} else {
+vsbR.x = available.x - vpbInsets.left;
+available.x += vsbWidth;
+}} else {
+available.width += oldWidth;
+}}, "~B,java.awt.Rectangle,java.awt.Rectangle,java.awt.Insets,~B");
+Clazz_defineMethod (c$, "adjustForHSB", 
+ function (wantsHSB, available, hsbR, vpbInsets) {
+var oldHeight = hsbR.height;
+if (wantsHSB) {
+var hsbHeight = Math.max (0, Math.min (available.height, this.hsb.getPreferredSize ().height));
+available.height -= hsbHeight;
+hsbR.y = available.y + available.height + vpbInsets.bottom;
+hsbR.height = hsbHeight;
+} else {
+available.height += oldHeight;
+}}, "~B,java.awt.Rectangle,java.awt.Rectangle,java.awt.Insets");
+Clazz_defineMethod (c$, "getViewportBorderBounds", 
+function (scrollpane) {
+return scrollpane.getViewportBorderBounds ();
+}, "javax.swing.JScrollPane");
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (javax.swing.ScrollPaneLayout, "UIResource", javax.swing.ScrollPaneLayout, javax.swing.plaf.UIResource);
+c$ = Clazz_p0p ();
+});
+Clazz_declarePackage ("jalview.io");
+Clazz_load (["jalview.io.AlignFile", "java.lang.Enum", "$.Exception"], "jalview.io.FeaturesFile", ["jalview.analysis.SequenceIdMatcher", "jalview.datamodel.AlignedCodonFrame", "$.SequenceDummy", "$.SequenceFeature", "jalview.jsdev.GenericFileAdapter", "jalview.schemes.GraduatedColor", "$.UserColourScheme", "jalview.util.Format", "$.MapList", "$.ParseHtmlBodyAndLinks", "java.awt.Color", "java.lang.Float", "$.StringBuffer", "java.util.ArrayList", "$.Arrays", "$.HashMap", "$.Hashtable", "$.StringTokenizer", "$.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.doGffSource = true;
+this.gffversion = 0;
+if (!Clazz_isClassDefined ("jalview.io.FeaturesFile.InvalidGFF3FieldException")) {
+jalview.io.FeaturesFile.$FeaturesFile$InvalidGFF3FieldException$ ();
+}
+this.lastmatchedAl = null;
+this.matcher = null;
+Clazz_instantialize (this, arguments);
+}, jalview.io, "FeaturesFile", jalview.io.AlignFile);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.io.FeaturesFile, []);
+});
+Clazz_defineMethod (c$, "parse", 
+function (align, colours, removeHTML) {
+return this.parse (align, colours, null, removeHTML, false);
+}, "jalview.datamodel.AlignmentI,java.util.Hashtable,~B");
+Clazz_defineMethod (c$, "parse", 
+function (align, colours, removeHTML, relaxedIdMatching) {
+return this.parse (align, colours, null, removeHTML, relaxedIdMatching);
+}, "jalview.datamodel.AlignmentI,java.util.Map,~B,~B");
+Clazz_defineMethod (c$, "parse", 
+function (align, colours, featureLink, removeHTML) {
+return this.parse (align, colours, featureLink, removeHTML, false);
+}, "jalview.datamodel.AlignmentI,java.util.Map,java.util.Map,~B");
+Clazz_defineMethod (c$, "parse", 
+function (align, colours, featureLink, removeHTML, relaxedIdmatching) {
+var line = null;
+try {
+var seq = null;
+var newseqs =  new java.util.ArrayList ();
+var type;
+var desc;
+var token = null;
+var index;
+var start;
+var end;
+var score;
+var st;
+var sf;
+var featureGroup = null;
+var groupLink = null;
+var typeLink =  new java.util.Hashtable ();
+var GFFFile = true;
+var gffProps =  new java.util.HashMap ();
+while ((line = this.nextLine ()) != null) {
+if (line.startsWith ("#")) {
+if (line.startsWith ("##")) {
+this.processGffPragma (line, gffProps, align, newseqs);
+line = "";
+}continue;
+}st =  new java.util.StringTokenizer (line, "\t");
+if (st.countTokens () == 1) {
+if (line.trim ().equalsIgnoreCase ("GFF")) {
+GFFFile = true;
+continue;
+}}if (st.countTokens () > 1 && st.countTokens () < 4) {
+GFFFile = false;
+type = st.nextToken ();
+if (type.equalsIgnoreCase ("startgroup")) {
+featureGroup = st.nextToken ();
+if (st.hasMoreElements ()) {
+groupLink = st.nextToken ();
+featureLink.put (featureGroup, groupLink);
+}} else if (type.equalsIgnoreCase ("endgroup")) {
+st.nextToken ();
+featureGroup = null;
+groupLink = null;
+} else {
+var colour = null;
+var colscheme = st.nextToken ();
+if (colscheme.indexOf ("|") > -1 || colscheme.trim ().equalsIgnoreCase ("label")) {
+var gcol =  new java.util.StringTokenizer (colscheme, "|", true);
+var threshtype = -1;
+var min = 1.4E-45;
+var max = 3.4028235E38;
+var threshval = NaN;
+var labelCol = false;
+var mincol = gcol.nextToken ();
+if (mincol === "|") {
+System.err.println ("Expected either 'label' or a colour specification in the line: " + line);
+continue;
+}var maxcol = null;
+if (mincol.toLowerCase ().indexOf ("label") == 0) {
+labelCol = true;
+mincol = (gcol.hasMoreTokens () ? gcol.nextToken () : null);
+mincol = (gcol.hasMoreTokens () ? gcol.nextToken () : null);
+}var abso = null;
+var minval;
+var maxval;
+if (mincol != null) {
+if (mincol.equals ("|")) {
+mincol = "";
+} else {
+gcol.nextToken ();
+}maxcol = gcol.nextToken ();
+if (maxcol.equals ("|")) {
+maxcol = "";
+} else {
+gcol.nextToken ();
+}abso = gcol.nextToken ();
+gcol.nextToken ();
+if (abso.toLowerCase ().indexOf ("abso") != 0) {
+minval = abso;
+abso = null;
+} else {
+minval = gcol.nextToken ();
+gcol.nextToken ();
+}maxval = gcol.nextToken ();
+if (gcol.hasMoreTokens ()) {
+gcol.nextToken ();
+}try {
+if (minval.length > 0) {
+min =  new Float (minval).floatValue ();
+}} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+System.err.println ("Couldn't parse the minimum value for graduated colour for type (" + colscheme + ") - did you misspell 'auto' for the optional automatic colour switch ?");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+try {
+if (maxval.length > 0) {
+max =  new Float (maxval).floatValue ();
+}} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+System.err.println ("Couldn't parse the maximum value for graduated colour for type (" + colscheme + ")");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+} else {
+mincol = "FFFFFF";
+maxcol = "000000";
+}try {
+colour =  new jalview.schemes.GraduatedColor ( new jalview.schemes.UserColourScheme (mincol).findColour ('A'),  new jalview.schemes.UserColourScheme (maxcol).findColour ('A'), min, max);
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+System.err.println ("Couldn't parse the graduated colour scheme (" + colscheme + ")");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+if (colour != null) {
+(colour).setColourByLabel (labelCol);
+(colour).setAutoScaled (abso == null);
+var ttype = null;
+var tval = null;
+if (gcol.hasMoreTokens ()) {
+ttype = gcol.nextToken ();
+if (ttype.toLowerCase ().startsWith ("below")) {
+(colour).setThreshType (0);
+} else if (ttype.toLowerCase ().startsWith ("above")) {
+(colour).setThreshType (1);
+} else {
+(colour).setThreshType (-1);
+if (!ttype.toLowerCase ().startsWith ("no")) {
+System.err.println ("Ignoring unrecognised threshold type : " + ttype);
+}}}if ((colour).getThreshType () != -1) {
+try {
+gcol.nextToken ();
+tval = gcol.nextToken ();
+(colour).setThresh ( new Float (tval).floatValue ());
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+System.err.println ("Couldn't parse threshold value as a float: (" + tval + ")");
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+}if (gcol.hasMoreTokens ()) {
+System.err.println ("Ignoring additional tokens in parameters in graduated colour specification\n");
+while (gcol.hasMoreTokens ()) {
+System.err.println ("|" + gcol.nextToken ());
+}
+System.err.println ("\n");
+}}} else {
+var ucs =  new jalview.schemes.UserColourScheme (colscheme);
+colour = ucs.findColour ('A');
+}if (colour != null) {
+colours.put (type, colour);
+}if (st.hasMoreElements ()) {
+var link = st.nextToken ();
+typeLink.put (type, link);
+if (featureLink == null) {
+featureLink =  new java.util.Hashtable ();
+}featureLink.put (type, link);
+}}continue;
+}var seqId = "";
+while (st.hasMoreElements ()) {
+if (GFFFile) {
+seqId = token = st.nextToken ();
+seq = this.findName (align, seqId, relaxedIdmatching, newseqs);
+if (seq != null) {
+desc = st.nextToken ();
+var group = null;
+if (this.doGffSource && desc.indexOf (' ') == -1) {
+group =  String.instantialize (desc);
+}type = st.nextToken ();
+try {
+var stt = st.nextToken ();
+if (stt.length == 0 || stt.equals ("-")) {
+start = 0;
+} else {
+start = Integer.parseInt (stt);
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+start = 0;
+} else {
+throw ex;
+}
+}
+try {
+var stt = st.nextToken ();
+if (stt.length == 0 || stt.equals ("-")) {
+end = 0;
+} else {
+end = Integer.parseInt (stt);
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+end = 0;
+} else {
+throw ex;
+}
+}
+if (end == 0) {
+start = 0;
+}try {
+score =  new Float (st.nextToken ()).floatValue ();
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+score = 0;
+} else {
+throw ex;
+}
+}
+sf =  new jalview.datamodel.SequenceFeature (type, desc, start, end, score, group);
+try {
+sf.setValue ("STRAND", st.nextToken ());
+sf.setValue ("FRAME", st.nextToken ());
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+if (st.hasMoreTokens ()) {
+var attributes =  new StringBuffer ();
+var sep = false;
+while (st.hasMoreTokens ()) {
+attributes.append ((sep ? "\t" : "") + st.nextElement ());
+sep = true;
+}
+sf.setValue ("ATTRIBUTES", attributes.toString ());
+}if (this.processOrAddSeqFeature (align, newseqs, seq, sf, GFFFile, relaxedIdmatching)) {
+while ((seq = align.findName (seq, seqId, true)) != null) {
+seq.addSequenceFeature ( new jalview.datamodel.SequenceFeature (sf));
+}
+}break;
+}}if (GFFFile && seq == null) {
+desc = token;
+} else {
+desc = st.nextToken ();
+}if (!st.hasMoreTokens ()) {
+System.err.println ("DEBUG: Run out of tokens when trying to identify the destination for the feature.. giving up.");
+return false;
+}token = st.nextToken ();
+if (!token.equals ("ID_NOT_SPECIFIED")) {
+seq = this.findName (align, seqId = token, relaxedIdmatching, null);
+st.nextToken ();
+} else {
+seqId = null;
+try {
+index = Integer.parseInt (st.nextToken ());
+seq = align.getSequenceAt (index);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+seq = null;
+} else {
+throw ex;
+}
+}
+}if (seq == null) {
+System.out.println ("Sequence not found: " + line);
+break;
+}start = Integer.parseInt (st.nextToken ());
+end = Integer.parseInt (st.nextToken ());
+type = st.nextToken ();
+if (!colours.containsKey (type)) {
+var ucs =  new jalview.schemes.UserColourScheme (type);
+colours.put (type, ucs.findColour ('A'));
+}sf =  new jalview.datamodel.SequenceFeature (type, desc, "", start, end, featureGroup);
+if (st.hasMoreTokens ()) {
+try {
+score =  new Float (st.nextToken ()).floatValue ();
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+score = 0;
+} else {
+throw ex;
+}
+}
+sf.setScore (score);
+}if (groupLink != null && removeHTML) {
+sf.addLink (groupLink);
+sf.description += "%LINK%";
+}if (typeLink.containsKey (type) && removeHTML) {
+sf.addLink (typeLink.get (type).toString ());
+sf.description += "%LINK%";
+}this.parseDescriptionHTML (sf, removeHTML);
+seq.addSequenceFeature (sf);
+while (seqId != null && (seq = align.findName (seq, seqId, false)) != null) {
+seq.addSequenceFeature ( new jalview.datamodel.SequenceFeature (sf));
+}
+GFFFile = false;
+}
+}
+this.resetMatcher ();
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+this.warningMessage = ((this.warningMessage == null) ? "" : this.warningMessage) + "Parsing error at\n" + line;
+System.out.println ("Error parsing feature file: " + ex + "\n" + line);
+ex.printStackTrace (System.err);
+this.resetMatcher ();
+return false;
+} else {
+throw ex;
+}
+}
+return true;
+}, "jalview.datamodel.AlignmentI,java.util.Map,java.util.Map,~B,~B");
+Clazz_defineMethod (c$, "processGffPragma", 
+ function (line, gffProps, align, newseqs) {
+var spacepos = line.indexOf (' ');
+var pragma = spacepos == -1 ? line.substring (2).trim () : line.substring (2, spacepos);
+var gffpragma = jalview.io.FeaturesFile.GFFPRAGMA.get (pragma.toLowerCase ());
+if (gffpragma == null) {
+return;
+}switch (gffpragma) {
+case jalview.io.FeaturesFile.GffPragmas.gff_version:
+try {
+this.gffversion = Integer.parseInt (line.substring (spacepos + 1));
+} finally {
+}
+break;
+case jalview.io.FeaturesFile.GffPragmas.feature_ontology:
+break;
+case jalview.io.FeaturesFile.GffPragmas.attribute_ontology:
+break;
+case jalview.io.FeaturesFile.GffPragmas.source_ontology:
+break;
+case jalview.io.FeaturesFile.GffPragmas.species_build:
+break;
+case jalview.io.FeaturesFile.GffPragmas.hash:
+break;
+case jalview.io.FeaturesFile.GffPragmas.fasta:
+this.process_as_fasta (align, newseqs);
+break;
+default:
+System.err.println ("Ignoring unknown pragma:\n" + line);
+}
+}, "~S,java.util.Map,jalview.datamodel.AlignmentI,java.util.ArrayList");
+Clazz_defineMethod (c$, "process_as_fasta", 
+ function (align, newseqs) {
+try {
+this.mark ();
+} catch (q) {
+if (Clazz_exceptionOf (q, java.io.IOException)) {
+} else {
+throw q;
+}
+}
+var parser = jalview.jsdev.GenericFileAdapter.getFile ("FastaFile", []);
+var includedseqs = parser.getSeqs ();
+var smatcher =  new jalview.analysis.SequenceIdMatcher (newseqs);
+for (var p = 0, pSize = includedseqs.size (); p < pSize; p++) {
+var dummyseq = smatcher.findIdMatch (includedseqs.get (p));
+if (dummyseq != null) {
+var mseq = includedseqs.get (p);
+if (Clazz_instanceOf (dummyseq, jalview.datamodel.SequenceDummy)) {
+(dummyseq).become (mseq);
+includedseqs.set (p, dummyseq);
+}}}
+for (var seq, $seq = includedseqs.iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+align.addSequence (seq);
+}
+}, "jalview.datamodel.AlignmentI,java.util.List");
+Clazz_defineMethod (c$, "processOrAddSeqFeature", 
+function (align, newseqs, seq, sf, gFFFile, relaxedIdMatching) {
+var attr = sf.getValue ("ATTRIBUTES");
+var add = true;
+if (gFFFile && attr != null) {
+var nattr = 8;
+for (var attset, $attset = 0, $$attset = attr.$plit ("\t"); $attset < $$attset.length && ((attset = $$attset[$attset]) || true); $attset++) {
+if (attset == null || attset.trim ().length == 0) {
+continue;
+}nattr++;
+var set =  new java.util.HashMap ();
+for (var pair, $pair = 0, $$pair = attset.trim ().$plit (";"); $pair < $$pair.length && ((pair = $$pair[$pair]) || true); $pair++) {
+pair = pair.trim ();
+if (pair.length == 0) {
+continue;
+}var eqpos = pair.indexOf ('=');
+var sppos = pair.indexOf (' ');
+var key = null;
+var value = null;
+if (sppos > -1 && (eqpos == -1 || sppos < eqpos)) {
+key = pair.substring (0, sppos);
+value = pair.substring (sppos + 1);
+} else {
+if (eqpos > -1 && (sppos == -1 || eqpos < sppos)) {
+key = pair.substring (0, eqpos);
+value = pair.substring (eqpos + 1);
+} else {
+key = pair;
+}}if (key != null) {
+var vals = set.get (key);
+if (vals == null) {
+vals =  new java.util.ArrayList ();
+set.put (key, vals);
+}if (value != null) {
+vals.add (value.trim ());
+}}}
+try {
+add = new Boolean (add & this.processGffKey (set, nattr, seq, sf, align, newseqs, relaxedIdMatching)).valueOf ();
+} catch (ivfe) {
+if (Clazz_exceptionOf (ivfe, jalview.io.FeaturesFile.InvalidGFF3FieldException)) {
+System.err.println (ivfe);
+} else {
+throw ivfe;
+}
+}
+}
+}if (add) {
+seq.addSequenceFeature (sf);
+}return add;
+}, "jalview.datamodel.AlignmentI,java.util.List,jalview.datamodel.SequenceI,jalview.datamodel.SequenceFeature,~B,~B");
+Clazz_defineMethod (c$, "processGffKey", 
+function (set, nattr, seq, sf, align, newseqs, relaxedIdMatching) {
+var attr;
+if (sf.getType ().equals ("similarity")) {
+var strand = sf.getStrand ();
+var querySeq = this.findNames (align, newseqs, relaxedIdMatching, set.get (attr = "Query"));
+if (querySeq == null || querySeq.size () != 1) {
+throw Clazz_innerTypeInstance (jalview.io.FeaturesFile.InvalidGFF3FieldException, this, null, attr, set, "Expecting exactly one sequence in Query field (got " + set.get (attr) + ")");
+}if (set.containsKey (attr = "Align")) {
+var alco =  new jalview.datamodel.AlignedCodonFrame ();
+var codonmapping = this.constructCodonMappingFromAlign (set, attr, strand);
+alco.addMap (seq, querySeq.get (0), codonmapping);
+align.addCodonFrame (alco);
+return false;
+}}return true;
+}, "java.util.Map,~N,jalview.datamodel.SequenceI,jalview.datamodel.SequenceFeature,jalview.datamodel.AlignmentI,java.util.List,~B");
+Clazz_defineMethod (c$, "constructCodonMappingFromAlign", 
+ function (set, attr, strand) {
+if (strand == 0) {
+throw Clazz_innerTypeInstance (jalview.io.FeaturesFile.InvalidGFF3FieldException, this, null, attr, set, "Invalid strand for a codon mapping (cannot be 0)");
+}var fromrange =  new java.util.ArrayList ();
+var torange =  new java.util.ArrayList ();
+var lastppos = 0;
+var lastpframe = 0;
+for (var range, $range = set.get (attr).iterator (); $range.hasNext () && ((range = $range.next ()) || true);) {
+var ints =  new java.util.ArrayList ();
+var st =  new java.util.StringTokenizer (range, " ");
+while (st.hasMoreTokens ()) {
+var num = st.nextToken ();
+try {
+ints.add ( new Integer (num));
+} catch (nfe) {
+if (Clazz_exceptionOf (nfe, NumberFormatException)) {
+throw Clazz_innerTypeInstance (jalview.io.FeaturesFile.InvalidGFF3FieldException, this, null, attr, set, "Invalid number in field " + num);
+} else {
+throw nfe;
+}
+}
+}
+if (ints.size () != 3) {
+throw Clazz_innerTypeInstance (jalview.io.FeaturesFile.InvalidGFF3FieldException, this, null, attr, set, "Invalid number of fields for this attribute (" + ints.size () + ")");
+}fromrange.add ( new Integer (ints.get (0).intValue ()));
+fromrange.add ( new Integer (ints.get (0).intValue () + strand * ints.get (2).intValue ()));
+if (ints.get (1).equals (new Integer (lastppos)) && lastpframe > 0) {
+lastppos += (ints.get (2)).intValue () / 3;
+lastpframe = (ints.get (2)).intValue () % 3;
+torange.set (torange.size () - 1,  new Integer (lastppos));
+} else {
+torange.add (ints.get (1));
+lastppos = (ints.get (1)).intValue () + (ints.get (2)).intValue () / 3;
+lastpframe = (ints.get (2)).intValue () % 3;
+torange.add ( new Integer (lastppos));
+}}
+if (fromrange.size () % 2 == 1) {
+throw Clazz_innerTypeInstance (jalview.io.FeaturesFile.InvalidGFF3FieldException, this, null, attr, set, "Couldn't parse the DNA alignment range correctly");
+}if (torange.size () % 2 == 1) {
+throw Clazz_innerTypeInstance (jalview.io.FeaturesFile.InvalidGFF3FieldException, this, null, attr, set, "Couldn't parse the protein alignment range correctly");
+}var frommap =  Clazz_newIntArray (fromrange.size (), 0);
+var tomap =  Clazz_newIntArray (torange.size (), 0);
+var p = 0;
+for (var ip, $ip = fromrange.iterator (); $ip.hasNext () && ((ip = $ip.next ()) || true);) {
+frommap[p++] = ip.intValue ();
+}
+p = 0;
+for (var ip, $ip = torange.iterator (); $ip.hasNext () && ((ip = $ip.next ()) || true);) {
+tomap[p++] = ip.intValue ();
+}
+return  new jalview.util.MapList (frommap, tomap, 3, 1);
+}, "java.util.Map,~S,~N");
+Clazz_defineMethod (c$, "findNames", 
+ function (align, newseqs, relaxedIdMatching, list) {
+var found =  new java.util.ArrayList ();
+for (var seqId, $seqId = list.iterator (); $seqId.hasNext () && ((seqId = $seqId.next ()) || true);) {
+var seq = this.findName (align, seqId, relaxedIdMatching, newseqs);
+if (seq != null) {
+found.add (seq);
+}}
+return found;
+}, "jalview.datamodel.AlignmentI,java.util.List,~B,java.util.List");
+Clazz_defineMethod (c$, "resetMatcher", 
+ function () {
+this.lastmatchedAl = null;
+this.matcher = null;
+});
+Clazz_defineMethod (c$, "findName", 
+ function (align, seqId, relaxedIdMatching, newseqs) {
+var match = null;
+if (relaxedIdMatching) {
+if (this.lastmatchedAl !== align) {
+this.matcher =  new jalview.analysis.SequenceIdMatcher ((this.lastmatchedAl = align).getSequencesArray ());
+if (newseqs != null) {
+this.matcher.addAll (newseqs);
+}}match = this.matcher.findIdMatch (seqId);
+} else {
+match = align.findName (seqId, true);
+if (match == null && newseqs != null) {
+for (var m, $m = newseqs.iterator (); $m.hasNext () && ((m = $m.next ()) || true);) {
+if (seqId.equals (m.getName ())) {
+return m;
+}}
+}}if (match == null && newseqs != null) {
+match =  new jalview.datamodel.SequenceDummy (seqId);
+if (relaxedIdMatching) {
+this.matcher.addAll (java.util.Arrays.asList ( Clazz_newArray (-1, [match])));
+}newseqs.add (match);
+}return match;
+}, "jalview.datamodel.AlignmentI,~S,~B,java.util.List");
+Clazz_defineMethod (c$, "parseDescriptionHTML", 
+function (sf, removeHTML) {
+if (sf.getDescription () == null) {
+return;
+}var parsed =  new jalview.util.ParseHtmlBodyAndLinks (sf.getDescription (), removeHTML, this.newline);
+sf.description = (removeHTML) ? parsed.getNonHtmlContent () : sf.description;
+for (var link, $link = parsed.getLinks ().iterator (); $link.hasNext () && ((link = $link.next ()) || true);) {
+sf.addLink (link);
+}
+}, "jalview.datamodel.SequenceFeature,~B");
+Clazz_defineMethod (c$, "printJalviewFormat", 
+function (seqs, visible) {
+return this.printJalviewFormat (seqs, visible, true, true);
+}, "~A,java.util.Map");
+Clazz_defineMethod (c$, "printJalviewFormat", 
+function (seqs, visible, visOnly, nonpos) {
+var out =  new StringBuffer ();
+var next;
+var featuresGen = false;
+if (visOnly && !nonpos && (visible == null || visible.size () < 1)) {
+return "No Features Visible";
+}if (visible != null && visOnly) {
+var en = visible.keySet ().iterator ();
+var type;
+var color;
+while (en.hasNext ()) {
+type = en.next ().toString ();
+if (Clazz_instanceOf (visible.get (type), jalview.schemes.GraduatedColor)) {
+var gc = visible.get (type);
+color = (gc.isColourByLabel () ? "label|" : "") + jalview.util.Format.getHexString (gc.getMinColor ()) + "|" + jalview.util.Format.getHexString (gc.getMaxColor ()) + (gc.isAutoScale () ? "|" : "|abso|") + gc.getMin () + "|" + gc.getMax () + "|";
+if (gc.getThreshType () != -1) {
+if (gc.getThreshType () == 0) {
+color += "below";
+} else {
+if (gc.getThreshType () != 1) {
+System.err.println ("WARNING: Unsupported threshold type (" + gc.getThreshType () + ") : Assuming 'above'");
+}color += "above";
+}color += "|" + gc.getThresh ();
+} else {
+color += "none";
+}} else if (Clazz_instanceOf (visible.get (type), java.awt.Color)) {
+color = jalview.util.Format.getHexString (visible.get (type));
+} else {
+color = jalview.util.Format.getHexString ( new java.awt.Color (Integer.parseInt (visible.get (type).toString ())));
+}out.append (type);
+out.append ("\t");
+out.append (color);
+out.append (this.newline);
+}
+}var groups =  new java.util.Vector ();
+var groupIndex = 0;
+var isnonpos = false;
+for (var i = 0; i < seqs.length; i++) {
+next = seqs[i].getSequenceFeatures ();
+if (next != null) {
+for (var j = 0; j < next.length; j++) {
+isnonpos = next[j].begin == 0 && next[j].end == 0;
+if ((!nonpos && isnonpos) || (!isnonpos && visOnly && !visible.containsKey (next[j].type))) {
+continue;
+}if (next[j].featureGroup != null && !groups.contains (next[j].featureGroup)) {
+groups.addElement (next[j].featureGroup);
+}}
+}}
+var group = null;
+do {
+if (groups.size () > 0 && groupIndex < groups.size ()) {
+group = groups.elementAt (groupIndex).toString ();
+out.append (this.newline);
+out.append ("STARTGROUP\t");
+out.append (group);
+out.append (this.newline);
+} else {
+group = null;
+}for (var i = 0; i < seqs.length; i++) {
+next = seqs[i].getSequenceFeatures ();
+if (next != null) {
+for (var j = 0; j < next.length; j++) {
+isnonpos = next[j].begin == 0 && next[j].end == 0;
+if ((!nonpos && isnonpos) || (!isnonpos && visOnly && !visible.containsKey (next[j].type))) {
+continue;
+}if (group != null && (next[j].featureGroup == null || !next[j].featureGroup.equals (group))) {
+continue;
+}if (group == null && next[j].featureGroup != null) {
+continue;
+}featuresGen = true;
+if (next[j].description == null || next[j].description.equals ("")) {
+out.append (next[j].type + "\t");
+} else {
+if (next[j].links != null && next[j].getDescription ().indexOf ("<html>") == -1) {
+out.append ("<html>");
+}out.append (next[j].description + " ");
+if (next[j].links != null) {
+for (var l = 0; l < next[j].links.size (); l++) {
+var label = next[j].links.elementAt (l).toString ();
+var href = label.substring (label.indexOf ("|") + 1);
+label = label.substring (0, label.indexOf ("|"));
+if (next[j].description.indexOf (href) == -1) {
+out.append ("<a href=\"" + href + "\">" + label + "</a>");
+}}
+if (next[j].getDescription ().indexOf ("</html>") == -1) {
+out.append ("</html>");
+}}out.append ("\t");
+}out.append (seqs[i].getName ());
+out.append ("\t-1\t");
+out.append ("" + next[j].begin);
+out.append ("\t");
+out.append ("" + next[j].end);
+out.append ("\t");
+out.append (next[j].type);
+if (!Float.isNaN (next[j].score)) {
+out.append ("\t");
+out.append (next[j].score);
+}out.append (this.newline);
+}
+}}
+if (group != null) {
+out.append ("ENDGROUP\t");
+out.append (group);
+out.append (this.newline);
+groupIndex++;
+} else {
+break;
+}} while (groupIndex < groups.size () + 1);
+if (!featuresGen) {
+return "No Features Visible";
+}return out.toString ();
+}, "~A,java.util.Map,~B,~B");
+Clazz_defineMethod (c$, "printGFFFormat", 
+function (seqs, visible) {
+return this.printGFFFormat (seqs, visible, true, true);
+}, "~A,java.util.Map");
+Clazz_defineMethod (c$, "printGFFFormat", 
+function (seqs, visible, visOnly, nonpos) {
+var out =  new StringBuffer ();
+var next;
+var source;
+var isnonpos;
+for (var i = 0; i < seqs.length; i++) {
+if (seqs[i].getSequenceFeatures () != null) {
+next = seqs[i].getSequenceFeatures ();
+for (var j = 0; j < next.length; j++) {
+isnonpos = next[j].begin == 0 && next[j].end == 0;
+if ((!nonpos && isnonpos) || (!isnonpos && visOnly && !visible.containsKey (next[j].type))) {
+continue;
+}source = next[j].featureGroup;
+if (source == null) {
+source = next[j].getDescription ();
+}out.append (seqs[i].getName ());
+out.append ("\t");
+out.append (source);
+out.append ("\t");
+out.append (next[j].type);
+out.append ("\t");
+out.append ("" + next[j].begin);
+out.append ("\t");
+out.append ("" + next[j].end);
+out.append ("\t");
+out.append (next[j].score);
+out.append ("\t");
+if (next[j].getValue ("STRAND") != null) {
+out.append (next[j].getValue ("STRAND"));
+out.append ("\t");
+} else {
+out.append (".\t");
+}if (next[j].getValue ("FRAME") != null) {
+out.append (next[j].getValue ("FRAME"));
+} else {
+out.append (".");
+}if (next[j].getValue ("ATTRIBUTES") != null) {
+out.append (next[j].getValue ("ATTRIBUTES"));
+}out.append (this.newline);
+}
+}}
+return out.toString ();
+}, "~A,java.util.Map,~B,~B");
+Clazz_defineMethod (c$, "parse", 
+function () {
+});
+Clazz_overrideMethod (c$, "print", 
+function () {
+return "USE printGFFFormat() or printJalviewFormat()";
+});
+c$.$FeaturesFile$InvalidGFF3FieldException$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.field = null;
+this.value = null;
+Clazz_instantialize (this, arguments);
+}, jalview.io.FeaturesFile, "InvalidGFF3FieldException", Exception);
+Clazz_makeConstructor (c$, 
+function (a, b, c) {
+Clazz_superConstructor (this, jalview.io.FeaturesFile.InvalidGFF3FieldException, [c + " (Field was " + a + " and value was " + b.get (a).toString ()]);
+this.field = a;
+this.value = b.get (a).toString ();
+}, "~S,java.util.Map,~S");
+c$ = Clazz_p0p ();
+};
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareType (jalview.io.FeaturesFile, "GffPragmas", Enum);
+Clazz_defineEnumConstant (c$, "gff_version", 0, []);
+Clazz_defineEnumConstant (c$, "sequence_region", 1, []);
+Clazz_defineEnumConstant (c$, "feature_ontology", 2, []);
+Clazz_defineEnumConstant (c$, "attribute_ontology", 3, []);
+Clazz_defineEnumConstant (c$, "source_ontology", 4, []);
+Clazz_defineEnumConstant (c$, "species_build", 5, []);
+Clazz_defineEnumConstant (c$, "fasta", 6, []);
+Clazz_defineEnumConstant (c$, "hash", 7, []);
+c$ = Clazz_p0p ();
+Clazz_defineStatics (c$,
+"GFFPRAGMA", null);
+{
+jalview.io.FeaturesFile.GFFPRAGMA =  new java.util.HashMap ();
+jalview.io.FeaturesFile.GFFPRAGMA.put ("sequence-region", jalview.io.FeaturesFile.GffPragmas.sequence_region);
+jalview.io.FeaturesFile.GFFPRAGMA.put ("feature-ontology", jalview.io.FeaturesFile.GffPragmas.feature_ontology);
+jalview.io.FeaturesFile.GFFPRAGMA.put ("#", jalview.io.FeaturesFile.GffPragmas.hash);
+jalview.io.FeaturesFile.GFFPRAGMA.put ("fasta", jalview.io.FeaturesFile.GffPragmas.fasta);
+jalview.io.FeaturesFile.GFFPRAGMA.put ("species-build", jalview.io.FeaturesFile.GffPragmas.species_build);
+jalview.io.FeaturesFile.GFFPRAGMA.put ("source-ontology", jalview.io.FeaturesFile.GffPragmas.source_ontology);
+jalview.io.FeaturesFile.GFFPRAGMA.put ("attribute-ontology", jalview.io.FeaturesFile.GffPragmas.attribute_ontology);
+}});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["jalview.datamodel.Sequence", "$.SequenceI"], "jalview.datamodel.SequenceDummy", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.dummy = true;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "SequenceDummy", jalview.datamodel.Sequence, jalview.datamodel.SequenceI);
+Clazz_makeConstructor (c$, 
+function (sequenceId) {
+Clazz_superConstructor (this, jalview.datamodel.SequenceDummy, [sequenceId, "THISAPLACEHOLDER"]);
+}, "~S");
+Clazz_defineMethod (c$, "become", 
+function (mseq) {
+this.initSeqFrom (mseq, null);
+this.dummy = false;
+}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "isDummy", 
+function () {
+return this.dummy;
+});
+});
+Clazz_declarePackage ("java.awt.event");
+Clazz_load (["java.awt.event.MouseListener", "$.MouseMotionListener", "$.MouseWheelListener"], "java.awt.event.MouseAdapter", null, function () {
+c$ = Clazz_declareType (java.awt.event, "MouseAdapter", null, [java.awt.event.MouseListener, java.awt.event.MouseWheelListener, java.awt.event.MouseMotionListener]);
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mousePressed", 
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseWheelMoved", 
+function (e) {
+}, "java.awt.event.MouseWheelEvent");
+Clazz_overrideMethod (c$, "mouseDragged", 
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseMoved", 
+function (e) {
+}, "java.awt.event.MouseEvent");
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Checkbox", "$.Panel", "jalview.api.FeatureSettingsControllerI", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.ItemListener", "$.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.FeatureSettings", ["awt2swing.Button", "$.Frame", "$.Label", "$.MenuItem", "$.PopupMenu", "$.ScrollPane", "$.Scrollbar", "$.Util", "jalview.appletgui.FeatureColourChooser", "$.UserDefinedColours", "jalview.bin.JalviewLite", "jalview.schemes.GraduatedColor", "jalview.util.MessageManager", "java.awt.BorderLayout", "$.Color", "$.Font", "$.GridLayout", "$.Toolkit", "java.awt.event.WindowAdapter", "java.lang.Boolean", "$.Error", "java.util.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.fr = null;
+this.ap = null;
+this.av = null;
+this.frame = null;
+this.groupPanel = null;
+this.featurePanel = null;
+this.scrollPane = null;
+this.linkImage = null;
+this.transparency = null;
+this.groupItemListener = null;
+this.selectedCheck = null;
+this.dragging = false;
+if (!Clazz_isClassDefined ("jalview.appletgui.FeatureSettings.MyCheckbox")) {
+jalview.appletgui.FeatureSettings.$FeatureSettings$MyCheckbox$ ();
+}
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "FeatureSettings", awt2swing.Panel, [java.awt.event.ItemListener, java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.ActionListener, java.awt.event.AdjustmentListener, jalview.api.FeatureSettingsControllerI]);
+Clazz_prepareFields (c$, function () {
+this.featurePanel =  new awt2swing.Panel ();
+this.groupItemListener = ((Clazz_isClassDefined ("jalview.appletgui.FeatureSettings$1") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$1$ ()), Clazz_innerTypeInstance (jalview.appletgui.FeatureSettings$1, this, null));
+});
+Clazz_makeConstructor (c$, 
+function (ap) {
+Clazz_superConstructor (this, jalview.appletgui.FeatureSettings, []);
+this.ap = ap;
+this.av = ap.av;
+ap.av.featureSettings = this;
+this.fr = ap.seqPanel.seqCanvas.getFeatureRenderer ();
+this.transparency =  new awt2swing.Scrollbar (0, 100 - Clazz_floatToInt (this.fr.getTransparency () * 100), 1, 1, 100);
+if (this.fr.isTransparencyAvailable ()) {
+this.transparency.addAdjustmentListener (this);
+} else {
+this.transparency.setEnabled (false);
+}var url = this.getClass ().getResource ("/images/link.gif");
+if (url != null) {
+this.linkImage = java.awt.Toolkit.getDefaultToolkit ().getImage (url);
+}if (this.av.isShowSequenceFeatures () || !this.fr.hasRenderOrder ()) {
+this.fr.findAllFeatures (true);
+}this.discoverAllFeatureData ();
+this.setLayout ( new java.awt.BorderLayout ());
+this.scrollPane =  new awt2swing.ScrollPane ();
+this.scrollPane.add (this.featurePanel);
+if (this.fr.getAllFeatureColours () != null && this.fr.getAllFeatureColours ().size () > 0) {
+this.add (this.scrollPane, "Center");
+}var invert =  new awt2swing.Button ("Invert Selection");
+invert.addActionListener (this);
+var lowerPanel =  new awt2swing.Panel ( new java.awt.GridLayout (2, 1, 5, 10));
+lowerPanel.add (invert);
+var tPanel =  new awt2swing.Panel ( new java.awt.BorderLayout ());
+if (this.fr.isTransparencyAvailable ()) {
+tPanel.add (this.transparency, "Center");
+tPanel.add ( new awt2swing.Label ("Transparency"), "East");
+} else {
+tPanel.add ( new awt2swing.Label ("Transparency not available in this web browser"), "Center");
+}lowerPanel.add (tPanel, "South");
+this.add (lowerPanel, "South");
+if (this.groupPanel != null) {
+this.groupPanel.setLayout ( new java.awt.GridLayout (Clazz_doubleToInt ((this.fr.getFeatureGroupsSize ()) / 4) + 1, 4));
+this.groupPanel.validate ();
+this.add (this.groupPanel, "North");
+}this.frame =  new awt2swing.Frame ();
+this.frame.add (this);
+var me = this;
+this.frame.addWindowListener (((Clazz_isClassDefined ("jalview.appletgui.FeatureSettings$2") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$2$ ()), Clazz_innerTypeInstance (jalview.appletgui.FeatureSettings$2, this, Clazz_cloneFinals ("me", me))));
+var height = this.featurePanel.getComponentCount () * 50 + 60;
+height = Math.max (200, height);
+height = Math.min (400, height);
+var width = 300;
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.feature_settings"), width, height);
+}, "jalview.appletgui.AlignmentPanel");
+Clazz_defineMethod (c$, "PaintComponent", 
+function (g) {
+g.setColor (java.awt.Color.black);
+awt2swing.Util.drawString (g, jalview.util.MessageManager.getString ("label.no_features_added_to_this_alignment"), 10, 20);
+awt2swing.Util.drawString (g, jalview.util.MessageManager.getString ("label.features_can_be_added_from_searches_1"), 10, 40);
+awt2swing.Util.drawString (g, jalview.util.MessageManager.getString ("label.features_can_be_added_from_searches_2"), 10, 60);
+}, "java.awt.Graphics");
+Clazz_defineMethod (c$, "popupSort", 
+function (check, minmax, x, y) {
+var type = check.type;
+var typeCol = this.fr.getFeatureStyle (type);
+var men =  new awt2swing.PopupMenu (jalview.util.MessageManager.formatMessage ("label.settings_for_type",  Clazz_newArray (-1, [type])));
+var scr =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.sort_by_score"));
+men.add (scr);
+var me = this;
+scr.addActionListener (((Clazz_isClassDefined ("jalview.appletgui.FeatureSettings$3") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$3$ ()), Clazz_innerTypeInstance (jalview.appletgui.FeatureSettings$3, this, Clazz_cloneFinals ("me", me, "type", type))));
+var dens =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.sort_by_density"));
+dens.addActionListener (((Clazz_isClassDefined ("jalview.appletgui.FeatureSettings$4") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$4$ ()), Clazz_innerTypeInstance (jalview.appletgui.FeatureSettings$4, this, Clazz_cloneFinals ("me", me, "type", type))));
+men.add (dens);
+if (minmax != null) {
+var typeMinMax = minmax.get (type);
+if (typeMinMax != null && (typeMinMax)[0] != null) {
+var mxcol =  new awt2swing.MenuItem ((Clazz_instanceOf (typeCol, java.awt.Color)) ? "Graduated Colour" : "Single Colour");
+men.add (mxcol);
+mxcol.addActionListener (((Clazz_isClassDefined ("jalview.appletgui.FeatureSettings$5") ? 0 : jalview.appletgui.FeatureSettings.$FeatureSettings$5$ ()), Clazz_innerTypeInstance (jalview.appletgui.FeatureSettings$5, this, Clazz_cloneFinals ("typeCol", typeCol, "me", me, "type", type, "check", check))));
+}}this.featurePanel.add (men);
+men.show (this.featurePanel, x, y);
+}, "jalview.appletgui.FeatureSettings.MyCheckbox,java.util.Hashtable,~N,~N");
+Clazz_overrideMethod (c$, "discoverAllFeatureData", 
+function () {
+if (this.fr.getAllFeatureColours () != null && this.fr.getAllFeatureColours ().size () > 0) {
+this.rebuildGroups ();
+}this.resetTable (false);
+});
+Clazz_defineMethod (c$, "rebuildGroups", 
+function () {
+var rdrw = false;
+if (this.groupPanel == null) {
+this.groupPanel =  new awt2swing.Panel ();
+} else {
+rdrw = true;
+this.groupPanel.removeAll ();
+}for (var group, $group = this.fr.getFeatureGroups ().iterator (); $group.hasNext () && ((group = $group.next ()) || true);) {
+var vis = this.fr.checkGroupVisibility (group, false);
+var check = Clazz_innerTypeInstance (jalview.appletgui.FeatureSettings.MyCheckbox, this, null, group, vis, (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (group)));
+check.addMouseListener (this);
+check.setFont ( new java.awt.Font ("Serif", 1, 12));
+check.addItemListener (this.groupItemListener);
+check.setVisible (vis);
+this.groupPanel.add (check);
+}
+if (rdrw) {
+this.groupPanel.validate ();
+}});
+Clazz_defineMethod (c$, "resetTable", 
+function (groupsChanged) {
+var tmpfeatures;
+var group = null;
+var type;
+var visibleChecks =  new java.util.Vector ();
+var alignment = this.av.getAlignment ();
+for (var i = 0; i < alignment.getHeight (); i++) {
+if (alignment.getSequenceAt (i).getSequenceFeatures () == null) {
+continue;
+}tmpfeatures = alignment.getSequenceAt (i).getSequenceFeatures ();
+var index = 0;
+while (index < tmpfeatures.length) {
+group = tmpfeatures[index].featureGroup;
+if (group == null || this.fr.checkGroupVisibility (group, true)) {
+type = tmpfeatures[index].getType ();
+if (!visibleChecks.contains (type)) {
+visibleChecks.addElement (type);
+}}index++;
+}
+}
+var comps;
+var cSize = this.featurePanel.getComponentCount ();
+var check;
+for (var i = 0; i < cSize; i++) {
+comps = this.featurePanel.getComponents ();
+check = comps[i];
+if (!visibleChecks.contains (check.type)) {
+this.featurePanel.remove (i);
+cSize--;
+i--;
+}}
+if (this.fr.getRenderOrder () != null) {
+var rol = this.fr.getRenderOrder ();
+for (var ro = rol.size () - 1; ro > -1; ro--) {
+var item = rol.get (ro);
+if (!visibleChecks.contains (item)) {
+continue;
+}visibleChecks.removeElement (item);
+this.addCheck (false, item);
+}
+}var en = visibleChecks.elements ();
+while (en.hasMoreElements ()) {
+this.addCheck (groupsChanged, en.nextElement ().toString ());
+}
+this.featurePanel.setLayout ( new java.awt.GridLayout (this.featurePanel.getComponentCount (), 1, 10, 5));
+this.featurePanel.validate ();
+if (this.scrollPane != null) {
+this.scrollPane.validate ();
+}this.itemStateChanged (null);
+}, "~B");
+Clazz_defineMethod (c$, "addCheck", 
+function (groupsChanged, type) {
+var addCheck;
+var comps = this.featurePanel.getComponents ();
+var check;
+addCheck = true;
+for (var i = 0; i < this.featurePanel.getComponentCount (); i++) {
+check = comps[i];
+if (check.type.equals (type)) {
+addCheck = false;
+break;
+}}
+if (addCheck) {
+var selected = false;
+if (groupsChanged || this.av.getFeaturesDisplayed ().isVisible (type)) {
+selected = true;
+}check = Clazz_innerTypeInstance (jalview.appletgui.FeatureSettings.MyCheckbox, this, null, type, selected, (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (type)), this.fr.getFeatureStyle (type));
+check.addMouseListener (this);
+check.addMouseMotionListener (this);
+check.addItemListener (this);
+if (groupsChanged) {
+this.featurePanel.add (check, 0);
+} else {
+this.featurePanel.add (check);
+}}}, "~B,~S");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (evt) {
+for (var i = 0; i < this.featurePanel.getComponentCount (); i++) {
+var check = this.featurePanel.getComponent (i);
+check.setState (!check.getState ());
+}
+this.selectionChanged ();
+}, "java.awt.event.ActionEvent");
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (evt) {
+this.selectionChanged ();
+}, "java.awt.event.ItemEvent");
+Clazz_defineMethod (c$, "selectionChanged", 
+function () {
+var comps = this.featurePanel.getComponents ();
+var cSize = comps.length;
+var tmp =  Clazz_newArray (cSize, 3, null);
+var tmpSize = 0;
+for (var i = 0; i < cSize; i++) {
+var check = comps[i];
+tmp[tmpSize][0] = check.type;
+tmp[tmpSize][1] = this.fr.getFeatureStyle (check.type);
+tmp[tmpSize][2] =  new Boolean (check.getState ());
+tmpSize++;
+}
+var data =  Clazz_newArray (tmpSize, 3, null);
+System.arraycopy (tmp, 0, data, 0, tmpSize);
+this.fr.setFeaturePriority (data);
+this.ap.paintAlignment (true);
+});
+Clazz_overrideMethod (c$, "mousePressed", 
+function (evt) {
+this.selectedCheck = evt.getSource ();
+if (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (this.selectedCheck.type)) {
+if (evt.getX () > this.selectedCheck.stringWidth + 20) {
+evt.consume ();
+}}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseDragged", 
+function (evt) {
+if ((evt.getSource ()).getParent () !== this.featurePanel) {
+return;
+}this.dragging = true;
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (evt) {
+if ((evt.getSource ()).getParent () !== this.featurePanel) {
+return;
+}var comp = null;
+var target = null;
+var height = evt.getY () + evt.getComponent ().getLocation ().y;
+if (height > this.featurePanel.getSize ().height) {
+comp = this.featurePanel.getComponent (this.featurePanel.getComponentCount () - 1);
+} else if (height < 0) {
+comp = this.featurePanel.getComponent (0);
+} else {
+comp = this.featurePanel.getComponentAt (evt.getX (), evt.getY () + evt.getComponent ().getLocation ().y);
+}if (comp != null && Clazz_instanceOf (comp, awt2swing.Checkbox)) {
+target = comp;
+}if (this.selectedCheck != null && target != null && this.selectedCheck !== target) {
+var targetIndex = -1;
+for (var i = 0; i < this.featurePanel.getComponentCount (); i++) {
+if (target === this.featurePanel.getComponent (i)) {
+targetIndex = i;
+break;
+}}
+this.featurePanel.remove (this.selectedCheck);
+this.featurePanel.add (this.selectedCheck, targetIndex);
+this.featurePanel.validate ();
+this.itemStateChanged (null);
+}}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "setUserColour", 
+function (feature, originalColour) {
+if (Clazz_instanceOf (originalColour, java.awt.Color) || Clazz_instanceOf (originalColour, jalview.schemes.GraduatedColor)) {
+this.fr.setColour (feature, originalColour);
+} else {
+throw  new Error (jalview.util.MessageManager.getString ("error.implementation_error_unsupported_feature_colour_object"));
+}this.refreshTable ();
+}, "~S,~O");
+Clazz_defineMethod (c$, "refreshTable", 
+function () {
+this.featurePanel.removeAll ();
+this.resetTable (false);
+this.ap.paintAlignment (true);
+});
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (evt) {
+var check = evt.getSource ();
+if ((evt.getModifiers () & 4) != 0) {
+this.popupSort (check, this.fr.getMinMax (), evt.getX (), evt.getY ());
+}if (this.fr.featureLinks != null && this.fr.featureLinks.containsKey (check.type)) {
+if (evt.getX () > check.stringWidth + 20) {
+evt.consume ();
+var link = this.fr.featureLinks.get (check.type).toString ();
+this.ap.alignFrame.showURL (link.substring (link.indexOf ("|") + 1), link.substring (0, link.indexOf ("|")));
+}}if (check.getParent () !== this.featurePanel) {
+return;
+}if (evt.getClickCount () > 1) {
+var fcol = this.fr.getFeatureStyle (check.type);
+if (Clazz_instanceOf (fcol, java.awt.Color)) {
+ new jalview.appletgui.UserDefinedColours (this, check.type, fcol);
+} else {
+ new jalview.appletgui.FeatureColourChooser (this, check.type);
+check.updateColor (this.fr.getFeatureStyle (check.type));
+}}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseMoved", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "adjustmentValueChanged", 
+function (evt) {
+this.fr.setTransparency ((100 - this.transparency.getValue ()) / 100);
+this.ap.seqPanel.seqCanvas.repaint ();
+}, "java.awt.event.AdjustmentEvent");
+c$.$FeatureSettings$MyCheckbox$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.type = null;
+this.stringWidth = 0;
+this.hasLink = false;
+this.gcol = null;
+this.col = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui.FeatureSettings, "MyCheckbox", awt2swing.Checkbox);
+Clazz_defineMethod (c$, "updateColor", 
+function (a) {
+if (Clazz_instanceOf (a, java.awt.Color)) {
+this.col = a;
+this.gcol = null;
+} else if (Clazz_instanceOf (a, jalview.schemes.GraduatedColor)) {
+this.gcol = a;
+this.col = null;
+} else {
+throw  new Error (jalview.util.MessageManager.getString ("error.invalid_colour_for_mycheckbox"));
+}if (this.col != null) {
+this.setBackground (this.col);
+} else {
+var b = this.type;
+if (this.gcol.getThreshType () != -1) {
+b += " " + ((this.gcol.getThreshType () == 1) ? "(>)" : "(<)");
+}if (this.gcol.isColourByLabel ()) {
+this.setBackground (java.awt.Color.white);
+b += " (by Label)";
+} else {
+this.setBackground (this.gcol.getMinColor ());
+}this.setLabel (b);
+}this.repaint ();
+}, "~O");
+Clazz_makeConstructor (c$, 
+function (a, b, c) {
+Clazz_superConstructor (this, jalview.appletgui.FeatureSettings.MyCheckbox, [a, b]);
+this.type = a;
+var d = this.b$["jalview.appletgui.FeatureSettings"].av.nullFrame.getFontMetrics (this.b$["jalview.appletgui.FeatureSettings"].av.nullFrame.getFont ());
+this.stringWidth = d.stringWidth (a);
+this.hasLink = c;
+}, "~S,~B,~B");
+Clazz_makeConstructor (c$, 
+function (a, b, c, d) {
+this.construct (a, b, c);
+this.updateColor (d);
+}, "~S,~B,~B,~O");
+Clazz_defineMethod (c$, "PaintComponent", 
+function (a) {
+var b = this.getSize ();
+if (this.gcol != null) {
+if (this.gcol.isColourByLabel ()) {
+a.setColor (java.awt.Color.white);
+a.fillRect (Clazz_doubleToInt (b.width / 2), 0, Clazz_doubleToInt (b.width / 2), b.height);
+} else {
+var c = this.gcol.getMaxColor ();
+a.setColor (c);
+a.fillRect (Clazz_doubleToInt (b.width / 2), 0, Clazz_doubleToInt (b.width / 2), b.height);
+}}if (this.hasLink) {
+a.drawImage (this.b$["jalview.appletgui.FeatureSettings"].linkImage, this.stringWidth + 25, Clazz_doubleToInt ((this.getSize ().height - this.b$["jalview.appletgui.FeatureSettings"].linkImage.getHeight (this)) / 2), this);
+}}, "java.awt.Graphics");
+c$ = Clazz_p0p ();
+};
+c$.$FeatureSettings$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "FeatureSettings$1", null, java.awt.event.ItemListener);
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (evt) {
+var source = evt.getSource ();
+this.b$["jalview.appletgui.FeatureSettings"].fr.setGroupVisibility (source.getLabel (), source.getState ());
+this.b$["jalview.appletgui.FeatureSettings"].ap.seqPanel.seqCanvas.repaint ();
+if (this.b$["jalview.appletgui.FeatureSettings"].ap.overviewPanel != null) {
+this.b$["jalview.appletgui.FeatureSettings"].ap.overviewPanel.updateOverviewImage ();
+}this.b$["jalview.appletgui.FeatureSettings"].resetTable (true);
+return;
+}, "java.awt.event.ItemEvent");
+c$ = Clazz_p0p ();
+};
+c$.$FeatureSettings$2$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "FeatureSettings$2", java.awt.event.WindowAdapter);
+Clazz_overrideMethod (c$, "windowClosing", 
+function (e) {
+if (this.f$.me.av.featureSettings === this.f$.me) {
+this.f$.me.av.featureSettings = null;
+this.f$.me.ap = null;
+this.f$.me.av = null;
+}}, "java.awt.event.WindowEvent");
+c$ = Clazz_p0p ();
+};
+c$.$FeatureSettings$3$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "FeatureSettings$3", null, java.awt.event.ActionListener);
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.f$.me.ap.alignFrame.avc.sortAlignmentByFeatureScore ( Clazz_newArray (-1, [this.f$.type]));
+}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+};
+c$.$FeatureSettings$4$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "FeatureSettings$4", null, java.awt.event.ActionListener);
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.f$.me.ap.alignFrame.avc.sortAlignmentByFeatureDensity ( Clazz_newArray (-1, [this.f$.type]));
+}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+};
+c$.$FeatureSettings$5$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "FeatureSettings$5", null, java.awt.event.ActionListener);
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (e) {
+if (Clazz_instanceOf (this.f$.typeCol, java.awt.Color)) {
+ new jalview.appletgui.FeatureColourChooser (this.f$.me, this.f$.type);
+this.f$.check.updateColor (this.b$["jalview.appletgui.FeatureSettings"].fr.getFeatureStyle (this.f$.type));
+} else {
+ new jalview.appletgui.UserDefinedColours (this.f$.me, this.f$.check.type, (this.f$.typeCol));
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("jalview.api");
+Clazz_declareInterface (jalview.api, "FeatureSettingsControllerI");
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener", "java.lang.Thread", "java.util.Vector"], "jalview.appletgui.IdPanel", ["jalview.appletgui.APopupMenu", "$.IdCanvas", "$.PaintRefresher", "$.Tooltip", "jalview.datamodel.SequenceGroup", "jalview.util.UrlLink", "java.awt.BorderLayout", "java.lang.Float", "$.StringBuffer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.idCanvas = null;
+this.av = null;
+this.alignPanel = null;
+this.scrollThread = null;
+this.lastid = -1;
+this.mouseDragging = false;
+this.links = null;
+this.tooltip = null;
+if (!Clazz_isClassDefined ("jalview.appletgui.IdPanel.ScrollThread")) {
+jalview.appletgui.IdPanel.$IdPanel$ScrollThread$ ();
+}
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "IdPanel", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
+Clazz_prepareFields (c$, function () {
+this.links =  new java.util.Vector ();
+});
+Clazz_makeConstructor (c$, 
+function (av, parent) {
+Clazz_superConstructor (this, jalview.appletgui.IdPanel, []);
+this.setName ("idPanel");
+this.av = av;
+this.alignPanel = parent;
+this.idCanvas =  new jalview.appletgui.IdCanvas (av);
+this.setLayout ( new java.awt.BorderLayout ());
+this.add (this.idCanvas, "Center");
+this.idCanvas.addMouseListener (this);
+this.idCanvas.addMouseMotionListener (this);
+if (av.applet != null) {
+av.applet.getLinkParams (this.links);
+}{
+var srsPos = this.links.indexOf ("SRS|http://srs.ebi.ac.uk/srsbin/cgi-bin/wgetz?-newId+(([uniprot-all:$SEQUENCE_ID$]))+-view+SwissEntry");
+if (srsPos > -1) {
+this.links.setElementAt ("EMBL-EBI Search|http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$", srsPos);
+}}if (this.links.size () < 1) {
+this.links =  new java.util.Vector ();
+this.links.addElement ("EMBL-EBI Search|http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$");
+}}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+Clazz_overrideMethod (c$, "mouseMoved", 
+function (e) {
+var seq = this.alignPanel.seqPanel.findSeq (e);
+var sequence = this.av.getAlignment ().getSequenceAt (seq);
+var tooltiptext =  new StringBuffer ();
+if (sequence != null) {
+if (sequence.getDescription () != null) {
+tooltiptext.append (sequence.getDescription ());
+tooltiptext.append ("\n");
+}var sf = sequence.getSequenceFeatures ();
+for (var sl = 0; sf != null && sl < sf.length; sl++) {
+if (sf[sl].begin == sf[sl].end && sf[sl].begin == 0) {
+var nl = false;
+if (sf[sl].getFeatureGroup () != null) {
+tooltiptext.append (sf[sl].getFeatureGroup ());
+nl = true;
+};if (sf[sl].getType () != null) {
+tooltiptext.append (" ");
+tooltiptext.append (sf[sl].getType ());
+nl = true;
+};if (sf[sl].getDescription () != null) {
+tooltiptext.append (" ");
+tooltiptext.append (sf[sl].getDescription ());
+nl = true;
+};if (!Float.isNaN (sf[sl].getScore ()) && sf[sl].getScore () != 0) {
+tooltiptext.append (" Score = ");
+tooltiptext.append (sf[sl].getScore ());
+nl = true;
+};if (sf[sl].getStatus () != null && sf[sl].getStatus ().length > 0) {
+tooltiptext.append (" (");
+tooltiptext.append (sf[sl].getStatus ());
+tooltiptext.append (")");
+nl = true;
+};if (nl) {
+tooltiptext.append ("\n");
+}}}
+}if (tooltiptext.length () == 0) {
+if (this.tooltip != null) {
+this.tooltip.setVisible (false);
+}this.tooltip = null;
+tooltiptext = null;
+return;
+}if (this.tooltip == null) {
+this.tooltip =  new jalview.appletgui.Tooltip (sequence.getDisplayId (true) + "\n" + tooltiptext.toString (), this.idCanvas);
+} else {
+this.tooltip.setTip (sequence.getDisplayId (true) + "\n" + tooltiptext.toString ());
+}tooltiptext = null;
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseDragged", 
+function (e) {
+this.mouseDragging = true;
+var seq = Math.max (0, this.alignPanel.seqPanel.findSeq (e));
+if (seq < this.lastid) {
+this.selectSeqs (this.lastid - 1, seq);
+} else if (seq > this.lastid) {
+this.selectSeqs (this.lastid + 1, seq);
+}this.lastid = seq;
+this.alignPanel.paintAlignment (false);
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (e) {
+if (e.getClickCount () < 2) {
+return;
+}var seq = this.alignPanel.seqPanel.findSeq (e);
+var sq = this.av.getAlignment ().getSequenceAt (seq);
+if (sq == null) {
+return;
+}var id = sq.getName ();
+var target = null;
+var url = null;
+var i = 0;
+while (url == null && i < this.links.size ()) {
+url = this.links.elementAt (i++).toString ();
+var urlLink = null;
+try {
+urlLink =  new jalview.util.UrlLink (url);
+target = urlLink.getTarget ();
+} catch (foo) {
+if (Clazz_exceptionOf (foo, Exception)) {
+System.err.println ("Exception for URLLink '" + url + "'");
+foo.printStackTrace ();
+url = null;
+continue;
+} else {
+throw foo;
+}
+}
+;if (!urlLink.isValid ()) {
+System.err.println (urlLink.getInvalidMessage ());
+url = null;
+continue;
+}var urls = urlLink.makeUrls (id, true);
+if (urls == null || urls[0] == null || urls[0].length < 1) {
+url = null;
+continue;
+}url = urls[1];
+}
+try {
+this.alignPanel.alignFrame.showURL (url, target);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (e) {
+if (this.scrollThread != null) {
+this.scrollThread.running = false;
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (e) {
+if (this.av.getWrapAlignment ()) {
+return;
+}if (this.mouseDragging && e.getY () < 0 && this.av.getStartSeq () > 0) {
+this.scrollThread = Clazz_innerTypeInstance (jalview.appletgui.IdPanel.ScrollThread, this, null, true);
+}if (this.mouseDragging && e.getY () >= this.getSize ().height && this.av.getAlignment ().getHeight () > this.av.getEndSeq ()) {
+this.scrollThread = Clazz_innerTypeInstance (jalview.appletgui.IdPanel.ScrollThread, this, null, false);
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mousePressed", 
+function (e) {
+if (e.getClickCount () > 1) {
+return;
+}var y = e.getY ();
+if (this.av.getWrapAlignment ()) {
+y -= 2 * this.av.getCharHeight ();
+}var seq = this.alignPanel.seqPanel.findSeq (e);
+if ((e.getModifiers () & 4) == 4) {
+var sq = this.av.getAlignment ().getSequenceAt (seq);
+var nlinks =  new java.util.Vector ();
+for (var l = 0, lSize = this.links.size (); l < lSize; l++) {
+nlinks.addElement (this.links.elementAt (l));
+}
+var sf = sq == null ? null : sq.getSequenceFeatures ();
+for (var sl = 0; sf != null && sl < sf.length; sl++) {
+if (sf[sl].begin == sf[sl].end && sf[sl].begin == 0) {
+if (sf[sl].links != null && sf[sl].links.size () > 0) {
+for (var l = 0, lSize = sf[sl].links.size (); l < lSize; l++) {
+nlinks.addElement (sf[sl].links.elementAt (l));
+}
+}}}
+var popup =  new jalview.appletgui.APopupMenu (this.alignPanel, sq, nlinks);
+this.add (popup);
+popup.show (this, e.getX (), e.getY ());
+return;
+}if ((this.av.getSelectionGroup () == null) || ((!e.isControlDown () && !e.isShiftDown ()) && this.av.getSelectionGroup () != null)) {
+this.av.setSelectionGroup ( new jalview.datamodel.SequenceGroup ());
+this.av.getSelectionGroup ().setStartRes (0);
+this.av.getSelectionGroup ().setEndRes (this.av.getAlignment ().getWidth () - 1);
+}if (e.isShiftDown () && this.lastid != -1) {
+this.selectSeqs (this.lastid, seq);
+} else {
+this.selectSeq (seq);
+}this.alignPanel.paintAlignment (false);
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "selectSeq", 
+function (seq) {
+this.lastid = seq;
+var pickedSeq = this.av.getAlignment ().getSequenceAt (seq);
+this.av.getSelectionGroup ().addOrRemove (pickedSeq, true);
+}, "~N");
+Clazz_defineMethod (c$, "selectSeqs", 
+function (start, end) {
+this.lastid = start;
+if (end >= this.av.getAlignment ().getHeight ()) {
+end = this.av.getAlignment ().getHeight () - 1;
+}if (end < start) {
+var tmp = start;
+start = end;
+end = tmp;
+this.lastid = end;
+}if (this.av.getSelectionGroup () == null) {
+this.av.setSelectionGroup ( new jalview.datamodel.SequenceGroup ());
+}for (var i = start; i <= end; i++) {
+this.av.getSelectionGroup ().addSequence (this.av.getAlignment ().getSequenceAt (i), i == end);
+}
+}, "~N,~N");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (e) {
+if (this.scrollThread != null) {
+this.scrollThread.running = false;
+}if (this.av.getSelectionGroup () != null) {
+this.av.getSelectionGroup ().recalcConservation ();
+}this.mouseDragging = false;
+jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
+this.av.sendSelection ();
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "highlightSearchResults", 
+function (list) {
+this.idCanvas.setHighlighted (list);
+if (list == null) {
+return;
+}var index = this.av.getAlignment ().findIndex (list.get (0));
+if (this.av.getStartSeq () > index || this.av.getEndSeq () < index) {
+this.alignPanel.setScrollValues (this.av.getStartRes (), index);
+}}, "java.util.List");
+c$.$IdPanel$ScrollThread$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.running = false;
+this.up = true;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui.IdPanel, "ScrollThread", Thread);
+Clazz_makeConstructor (c$, 
+function (a) {
+Clazz_superConstructor (this, jalview.appletgui.IdPanel.ScrollThread, []);
+this.up = a;
+this.start ();
+}, "~B");
+Clazz_defineMethod (c$, "stopScrolling", 
+function () {
+this.running = false;
+});
+Clazz_overrideMethod (c$, "run", 
+function () {
+this.running = true;
+while (this.running) {
+if (this.b$["jalview.appletgui.IdPanel"].alignPanel.scrollUp (this.up)) {
+var a = this.b$["jalview.appletgui.IdPanel"].av.getStartSeq ();
+if (!this.up) {
+a = this.b$["jalview.appletgui.IdPanel"].av.getEndSeq ();
+}if (a < this.b$["jalview.appletgui.IdPanel"].lastid) {
+this.b$["jalview.appletgui.IdPanel"].selectSeqs (this.b$["jalview.appletgui.IdPanel"].lastid - 1, a);
+} else if (a > this.b$["jalview.appletgui.IdPanel"].lastid && a < this.b$["jalview.appletgui.IdPanel"].av.getAlignment ().getHeight ()) {
+this.b$["jalview.appletgui.IdPanel"].selectSeqs (this.b$["jalview.appletgui.IdPanel"].lastid + 1, a);
+}this.b$["jalview.appletgui.IdPanel"].lastid = a;
+} else {
+this.running = false;
+}this.b$["jalview.appletgui.IdPanel"].alignPanel.paintAlignment (true);
+try {
+Thread.sleep (100);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}
+});
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.PopupMenu", "java.awt.event.ActionListener", "$.ItemListener", "awt2swing.CheckboxMenuItem", "$.Menu", "$.MenuItem", "jalview.util.MessageManager"], "jalview.appletgui.APopupMenu", ["awt2swing.Frame", "jalview.analysis.AAFrequency", "$.AlignmentAnnotationUtils", "$.AlignmentUtils", "$.Conservation", "jalview.appletgui.AppletJmol", "$.CutAndPasteTransfer", "$.EditNameDialog", "$.SliderPanel", "$.UserDefinedColours", "jalview.bin.JalviewLite", "jalview.commands.ChangeCaseCommand", "$.EditCommand", "jalview.datamodel.SequenceFeature", "jalview.io.AppletFormatAdapter", "$.SequenceAnnotationReport", "jalview.schemes.Blosum62ColourScheme", "$.BuriedColourScheme", "$.ClustalxColourScheme", "$.HelixColourScheme", "$.HydrophobicColourScheme", "$.NucleotideColourScheme", "$.PIDColourScheme", "$.ResidueProperties", "$.StrandColourScheme", "$.TaylorColourScheme", "$.TurnColourScheme", "$.ZappoColourScheme", "jalview.util.DBRefUtils", "$.UrlLink", "java.lang.StringBuffer", "$.StringBuilder", "java.util.Arrays", "$.Collections", "$.LinkedHashMap", "$.TreeMap"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.groupMenu = null;
+this.editGroupName = null;
+this.clustalColour = null;
+this.zappoColour = null;
+this.taylorColour = null;
+this.hydrophobicityColour = null;
+this.helixColour = null;
+this.strandColour = null;
+this.turnColour = null;
+this.buriedColour = null;
+this.abovePIDColour = null;
+this.userDefinedColour = null;
+this.PIDColour = null;
+this.BLOSUM62Colour = null;
+this.noColourmenuItem = null;
+this.conservationMenuItem = null;
+this.ap = null;
+this.unGroupMenuItem = null;
+this.createGroupMenuItem = null;
+this.nucleotideMenuItem = null;
+this.colourMenu = null;
+this.showBoxes = null;
+this.showText = null;
+this.showColourText = null;
+this.displayNonconserved = null;
+this.seqShowAnnotationsMenu = null;
+this.seqHideAnnotationsMenu = null;
+this.seqAddReferenceAnnotations = null;
+this.groupShowAnnotationsMenu = null;
+this.groupHideAnnotationsMenu = null;
+this.groupAddReferenceAnnotations = null;
+this.editMenu = null;
+this.copy = null;
+this.cut = null;
+this.toUpper = null;
+this.toLower = null;
+this.toggleCase = null;
+this.outputmenu = null;
+this.seqMenu = null;
+this.pdb = null;
+this.hideSeqs = null;
+this.repGroup = null;
+this.sequenceName = null;
+this.sequenceFeature = null;
+this.editSequence = null;
+this.sequenceDetails = null;
+this.selSeqDetails = null;
+this.makeReferenceSeq = null;
+this.seq = null;
+this.revealAll = null;
+this.revealSeq = null;
+this.revealSeq_index = -1;
+this.menu1 = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "APopupMenu", awt2swing.PopupMenu, [java.awt.event.ActionListener, java.awt.event.ItemListener]);
+Clazz_prepareFields (c$, function () {
+this.groupMenu =  new awt2swing.Menu ();
+this.editGroupName =  new awt2swing.MenuItem ();
+this.clustalColour =  new awt2swing.MenuItem ();
+this.zappoColour =  new awt2swing.MenuItem ();
+this.taylorColour =  new awt2swing.MenuItem ();
+this.hydrophobicityColour =  new awt2swing.MenuItem ();
+this.helixColour =  new awt2swing.MenuItem ();
+this.strandColour =  new awt2swing.MenuItem ();
+this.turnColour =  new awt2swing.MenuItem ();
+this.buriedColour =  new awt2swing.MenuItem ();
+this.abovePIDColour =  new awt2swing.CheckboxMenuItem ();
+this.userDefinedColour =  new awt2swing.MenuItem ();
+this.PIDColour =  new awt2swing.MenuItem ();
+this.BLOSUM62Colour =  new awt2swing.MenuItem ();
+this.noColourmenuItem =  new awt2swing.MenuItem ();
+this.conservationMenuItem =  new awt2swing.CheckboxMenuItem ();
+this.unGroupMenuItem =  new awt2swing.MenuItem ();
+this.createGroupMenuItem =  new awt2swing.MenuItem ();
+this.nucleotideMenuItem =  new awt2swing.MenuItem ();
+this.colourMenu =  new awt2swing.Menu ();
+this.showBoxes =  new awt2swing.CheckboxMenuItem ();
+this.showText =  new awt2swing.CheckboxMenuItem ();
+this.showColourText =  new awt2swing.CheckboxMenuItem ();
+this.displayNonconserved =  new awt2swing.CheckboxMenuItem ();
+this.seqShowAnnotationsMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("label.show_annotations"));
+this.seqHideAnnotationsMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("label.hide_annotations"));
+this.seqAddReferenceAnnotations =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.add_reference_annotations"));
+this.groupShowAnnotationsMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("label.show_annotations"));
+this.groupHideAnnotationsMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("label.hide_annotations"));
+this.groupAddReferenceAnnotations =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.add_reference_annotations"));
+this.editMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.edit"));
+this.copy =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.copy"));
+this.cut =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.cut"));
+this.toUpper =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.to_upper_case"));
+this.toLower =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.to_lower_case"));
+this.toggleCase =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.toggle_case"));
+this.outputmenu =  new awt2swing.Menu ();
+this.seqMenu =  new awt2swing.Menu ();
+this.pdb =  new awt2swing.MenuItem ();
+this.hideSeqs =  new awt2swing.MenuItem ();
+this.repGroup =  new awt2swing.MenuItem ();
+this.sequenceName =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.edit_name_description"));
+this.sequenceFeature =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.create_sequence_feature"));
+this.editSequence =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.edit_sequence"));
+this.sequenceDetails =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.sequence_details") + "...");
+this.selSeqDetails =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.sequence_details") + "...");
+this.makeReferenceSeq =  new awt2swing.MenuItem ();
+this.revealAll =  new awt2swing.MenuItem ();
+this.revealSeq =  new awt2swing.MenuItem ();
+this.menu1 =  new awt2swing.Menu ();
+});
+Clazz_makeConstructor (c$, 
+function (apanel, seq, links) {
+Clazz_superConstructor (this, jalview.appletgui.APopupMenu, []);
+this.ap = apanel;
+this.seq = seq;
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+for (var i = 0; i < jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS.length; i++) {
+var item =  new awt2swing.MenuItem (jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS[i]);
+item.addActionListener (this);
+this.outputmenu.add (item);
+}
+this.buildAnnotationSubmenus ();
+var sg = this.ap.av.getSelectionGroup ();
+if (sg != null && sg.getSize () > 0) {
+this.editGroupName.setLabel (jalview.util.MessageManager.formatMessage ("label.name_param",  Clazz_newArray (-1, [sg.getName ()])));
+this.showText.setState (sg.getDisplayText ());
+this.showColourText.setState (sg.getColourText ());
+this.showBoxes.setState (sg.getDisplayBoxes ());
+this.displayNonconserved.setState (sg.getShowNonconserved ());
+if (!this.ap.av.getAlignment ().getGroups ().contains (sg)) {
+this.menu1.setLabel (jalview.util.MessageManager.getString ("action.edit_new_group"));
+this.groupMenu.remove (this.unGroupMenuItem);
+} else {
+this.menu1.setLabel (jalview.util.MessageManager.getString ("action.edit_group"));
+this.groupMenu.remove (this.createGroupMenuItem);
+}} else {
+this.remove (this.hideSeqs);
+this.remove (this.groupMenu);
+}if (links != null && links.size () > 0) {
+var linkMenu =  new awt2swing.Menu (jalview.util.MessageManager.getString ("action.link"));
+for (var i = 0; i < links.size (); i++) {
+var link = links.elementAt (i);
+var urlLink =  new jalview.util.UrlLink (link);
+if (!urlLink.isValid ()) {
+System.err.println (urlLink.getInvalidMessage ());
+continue;
+}var target = urlLink.getTarget ();
+var label = urlLink.getLabel ();
+if (seq != null && urlLink.isDynamic ()) {
+var dbr = jalview.util.DBRefUtils.selectRefs (seq.getDBRef (),  Clazz_newArray (-1, [target]));
+var id = seq.getName ();
+var descr = seq.getDescription ();
+if (descr != null && descr.length < 1) {
+descr = null;
+}if (dbr != null) {
+for (var r = 0; r < dbr.length; r++) {
+if (id != null && dbr[r].getAccessionId ().equals (id)) {
+id = null;
+}var urls = urlLink.makeUrls (dbr[r].getAccessionId (), true);
+if (urls != null) {
+for (var u = 0; u < urls.length; u += 2) {
+this.addshowLink (linkMenu, label + "|" + urls[u], urls[u + 1]);
+}
+}}
+}if (id != null) {
+var urls = urlLink.makeUrls (id, true);
+if (urls != null) {
+for (var u = 0; u < urls.length; u += 2) {
+this.addshowLink (linkMenu, label, urls[u + 1]);
+}
+}}if (descr != null && urlLink.getRegexReplace () != null) {
+var urls = urlLink.makeUrls (descr, true);
+if (urls != null) {
+for (var u = 0; u < urls.length; u += 2) {
+this.addshowLink (linkMenu, label, urls[u + 1]);
+}
+}}} else {
+this.addshowLink (linkMenu, target, urlLink.getUrl_prefix ());
+}}
+if (linkMenu.getItemCount () > 0) {
+if (seq != null) {
+this.seqMenu.add (linkMenu);
+} else {
+this.add (linkMenu);
+}}}if (seq != null) {
+this.seqMenu.setLabel (seq.getName ());
+if (seq === this.ap.av.getAlignment ().getSeqrep ()) {
+this.makeReferenceSeq.setLabel (jalview.util.MessageManager.getString ("action.unmark_as_reference"));
+} else {
+this.makeReferenceSeq.setLabel (jalview.util.MessageManager.getString ("action.set_as_reference"));
+}this.repGroup.setLabel (jalview.util.MessageManager.formatMessage ("label.represent_group_with",  Clazz_newArray (-1, [seq.getName ()])));
+} else {
+this.remove (this.seqMenu);
+}if (!this.ap.av.hasHiddenRows ()) {
+this.remove (this.revealAll);
+this.remove (this.revealSeq);
+} else {
+var index = this.ap.av.getAlignment ().findIndex (seq);
+if (this.ap.av.adjustForHiddenSeqs (index) - this.ap.av.adjustForHiddenSeqs (index - 1) > 1) {
+this.revealSeq_index = index;
+} else {
+this.remove (this.revealSeq);
+}}}, "jalview.appletgui.AlignmentPanel,jalview.datamodel.SequenceI,java.util.Vector");
+Clazz_defineMethod (c$, "buildAnnotationSubmenus", 
+ function () {
+var selectedSequence = (this.seq == null ? java.util.Collections.emptyList () : java.util.Arrays.asList ([this.seq]));
+this.buildAnnotationTypesMenus (this.seqShowAnnotationsMenu, this.seqHideAnnotationsMenu, selectedSequence);
+this.configureReferenceAnnotationsMenu (this.seqAddReferenceAnnotations, selectedSequence);
+var selectedGroup = (this.ap.av.getSelectionGroup () == null ? java.util.Collections.emptyList () : this.ap.av.getSelectionGroup ().getSequences ());
+this.buildAnnotationTypesMenus (this.groupShowAnnotationsMenu, this.groupHideAnnotationsMenu, selectedGroup);
+this.configureReferenceAnnotationsMenu (this.groupAddReferenceAnnotations, selectedGroup);
+});
+Clazz_defineMethod (c$, "configureReferenceAnnotationsMenu", 
+ function (menuItem, forSequences) {
+menuItem.setEnabled (false);
+var tipEntries =  new java.util.TreeMap ();
+var candidates =  new java.util.LinkedHashMap ();
+var al = this.ap.av.getAlignment ();
+jalview.analysis.AlignmentUtils.findAddableReferenceAnnotations (forSequences, tipEntries, candidates, al);
+if (!candidates.isEmpty ()) {
+var tooltip =  new StringBuilder (64);
+tooltip.append (jalview.util.MessageManager.getString ("label.add_annotations_for"));
+menuItem.setEnabled (true);
+menuItem.addActionListener (((Clazz_isClassDefined ("jalview.appletgui.APopupMenu$1") ? 0 : jalview.appletgui.APopupMenu.$APopupMenu$1$ ()), Clazz_innerTypeInstance (jalview.appletgui.APopupMenu$1, this, Clazz_cloneFinals ("candidates", candidates))));
+}}, "awt2swing.MenuItem,java.util.List");
+Clazz_defineMethod (c$, "addReferenceAnnotations_actionPerformed", 
+function (candidates) {
+var selectionGroup = this.ap.av.getSelectionGroup ();
+var alignment = this.ap.getAlignment ();
+jalview.analysis.AlignmentUtils.addReferenceAnnotations (candidates, alignment, selectionGroup);
+this.refresh ();
+}, "java.util.Map");
+Clazz_defineMethod (c$, "addshowLink", 
+ function (linkMenu, target, url) {
+this.addshowLink (linkMenu, target, target, url);
+}, "awt2swing.Menu,~S,~S");
+Clazz_defineMethod (c$, "addshowLink", 
+ function (linkMenu, target, label, url) {
+var item =  new awt2swing.MenuItem (label);
+item.addActionListener (((Clazz_isClassDefined ("jalview.appletgui.APopupMenu$2") ? 0 : jalview.appletgui.APopupMenu.$APopupMenu$2$ ()), Clazz_innerTypeInstance (jalview.appletgui.APopupMenu$2, this, Clazz_cloneFinals ("url", url, "target", target))));
+linkMenu.add (item);
+}, "awt2swing.Menu,~S,~S,~S");
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (evt) {
+if (evt.getSource () === this.abovePIDColour) {
+this.abovePIDColour_itemStateChanged ();
+} else if (evt.getSource () === this.showColourText) {
+this.showColourText_itemStateChanged ();
+} else if (evt.getSource () === this.showText) {
+this.showText_itemStateChanged ();
+} else if (evt.getSource () === this.showBoxes) {
+this.showBoxes_itemStateChanged ();
+} else if (evt.getSource () === this.displayNonconserved) {
+this.showNonconserved_itemStateChanged ();
+}}, "java.awt.event.ItemEvent");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (evt) {
+var source = evt.getSource ();
+if (source === this.clustalColour) {
+this.clustalColour_actionPerformed ();
+} else if (source === this.zappoColour) {
+this.zappoColour_actionPerformed ();
+} else if (source === this.taylorColour) {
+this.taylorColour_actionPerformed ();
+} else if (source === this.hydrophobicityColour) {
+this.hydrophobicityColour_actionPerformed ();
+} else if (source === this.helixColour) {
+this.helixColour_actionPerformed ();
+} else if (source === this.strandColour) {
+this.strandColour_actionPerformed ();
+} else if (source === this.turnColour) {
+this.turnColour_actionPerformed ();
+} else if (source === this.buriedColour) {
+this.buriedColour_actionPerformed ();
+} else if (source === this.nucleotideMenuItem) {
+this.nucleotideMenuItem_actionPerformed ();
+} else if (source === this.userDefinedColour) {
+this.userDefinedColour_actionPerformed ();
+} else if (source === this.PIDColour) {
+this.PIDColour_actionPerformed ();
+} else if (source === this.BLOSUM62Colour) {
+this.BLOSUM62Colour_actionPerformed ();
+} else if (source === this.noColourmenuItem) {
+this.noColourmenuItem_actionPerformed ();
+} else if (source === this.conservationMenuItem) {
+this.conservationMenuItem_itemStateChanged ();
+} else if (source === this.unGroupMenuItem) {
+this.unGroupMenuItem_actionPerformed ();
+} else if (source === this.createGroupMenuItem) {
+this.createGroupMenuItem_actionPerformed ();
+} else if (source === this.sequenceName) {
+this.editName ();
+} else if (source === this.makeReferenceSeq) {
+this.makeReferenceSeq_actionPerformed ();
+} else if (source === this.sequenceDetails) {
+this.showSequenceDetails ();
+} else if (source === this.selSeqDetails) {
+this.showSequenceSelectionDetails ();
+} else if (source === this.pdb) {
+this.addPDB ();
+} else if (source === this.hideSeqs) {
+this.hideSequences (false);
+} else if (source === this.repGroup) {
+this.hideSequences (true);
+} else if (source === this.revealSeq) {
+this.ap.av.showSequence (this.revealSeq_index);
+} else if (source === this.revealAll) {
+this.ap.av.showAllHiddenSeqs ();
+} else if (source === this.editGroupName) {
+var dialog =  new jalview.appletgui.EditNameDialog (this.getGroup ().getName (), this.getGroup ().getDescription (), "       Group Name", "Group Description", this.ap.alignFrame, "Edit Group Name / Description", 500, 100, true);
+if (dialog.accept) {
+this.getGroup ().setName (dialog.getName ().$replace (' ', '_'));
+this.getGroup ().setDescription (dialog.getDescription ());
+}} else if (source === this.copy) {
+this.ap.alignFrame.copy_actionPerformed ();
+} else if (source === this.cut) {
+this.ap.alignFrame.cut_actionPerformed ();
+} else if (source === this.editSequence) {
+var sg = this.ap.av.getSelectionGroup ();
+if (sg != null) {
+if (this.seq == null) {
+this.seq = sg.getSequenceAt (0);
+}var dialog =  new jalview.appletgui.EditNameDialog (this.seq.getSequenceAsString (sg.getStartRes (), sg.getEndRes () + 1), null, "Edit Sequence ", null, this.ap.alignFrame, "Edit Sequence", 500, 100, true);
+if (dialog.accept) {
+var editCommand =  new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("label.edit_sequences"), jalview.commands.EditCommand.Action.REPLACE, dialog.getName ().$replace (' ', this.ap.av.getGapCharacter ()), sg.getSequencesAsArray (this.ap.av.getHiddenRepSequences ()), sg.getStartRes (), sg.getEndRes () + 1, this.ap.av.getAlignment ());
+this.ap.alignFrame.addHistoryItem (editCommand);
+this.ap.av.firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());
+}}} else if (source === this.toUpper || source === this.toLower || source === this.toggleCase) {
+var sg = this.ap.av.getSelectionGroup ();
+if (sg != null) {
+var startEnd = this.ap.av.getVisibleRegionBoundaries (sg.getStartRes (), sg.getEndRes () + 1);
+var description;
+var caseChange;
+if (source === this.toggleCase) {
+description = "Toggle Case";
+caseChange = jalview.commands.ChangeCaseCommand.TOGGLE_CASE;
+} else if (source === this.toUpper) {
+description = "To Upper Case";
+caseChange = jalview.commands.ChangeCaseCommand.TO_UPPER;
+} else {
+description = "To Lower Case";
+caseChange = jalview.commands.ChangeCaseCommand.TO_LOWER;
+}var caseCommand =  new jalview.commands.ChangeCaseCommand (description, sg.getSequencesAsArray (this.ap.av.getHiddenRepSequences ()), startEnd, caseChange);
+this.ap.alignFrame.addHistoryItem (caseCommand);
+this.ap.av.firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());
+}} else if (source === this.sequenceFeature) {
+var sg = this.ap.av.getSelectionGroup ();
+if (sg == null) {
+return;
+}var rsize = 0;
+var gSize = sg.getSize ();
+var rseqs;
+var seqs =  new Array (gSize);
+var tfeatures;
+var features =  new Array (gSize);
+for (var i = 0; i < gSize; i++) {
+var start = sg.getSequenceAt (i).findPosition (sg.getStartRes ());
+var end = sg.findEndRes (sg.getSequenceAt (i));
+if (start <= end) {
+seqs[rsize] = sg.getSequenceAt (i);
+features[rsize] =  new jalview.datamodel.SequenceFeature (null, null, null, start, end, "Jalview");
+rsize++;
+}}
+rseqs =  new Array (rsize);
+tfeatures =  new Array (rsize);
+System.arraycopy (seqs, 0, rseqs, 0, rsize);
+System.arraycopy (features, 0, tfeatures, 0, rsize);
+features = tfeatures;
+seqs = rseqs;
+if (this.ap.seqPanel.seqCanvas.getFeatureRenderer ().amendFeatures (seqs, features, true, this.ap)) {
+this.ap.alignFrame.sequenceFeatures.setState (true);
+this.ap.av.setShowSequenceFeatures (true);
+;this.ap.highlightSearchResults (null);
+}} else {
+this.outputText (evt);
+}}, "java.awt.event.ActionEvent");
+Clazz_defineMethod (c$, "outputText", 
+function (e) {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (true, this.ap.alignFrame);
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.selection_output_command",  Clazz_newArray (-1, [e.getActionCommand ()])), 600, 500);
+cap.setText ( new jalview.io.AppletFormatAdapter ().formatSequences (e.getActionCommand (), this.ap.av.getShowJVSuffix (), this.ap, true));
+}, "java.awt.event.ActionEvent");
+Clazz_defineMethod (c$, "showSequenceSelectionDetails", 
+function () {
+this.createSequenceDetailsReport (this.ap.av.getSequenceSelection ());
+});
+Clazz_defineMethod (c$, "showSequenceDetails", 
+function () {
+this.createSequenceDetailsReport ( Clazz_newArray (-1, [this.seq]));
+});
+Clazz_defineMethod (c$, "createSequenceDetailsReport", 
+function (sequences) {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (false, this.ap.alignFrame);
+var contents =  new StringBuffer ();
+for (var seq, $seq = 0, $$seq = sequences; $seq < $$seq.length && ((seq = $$seq[$seq]) || true); $seq++) {
+contents.append (jalview.util.MessageManager.formatMessage ("label.annotation_for_displayid",  Clazz_newArray (-1, [seq.getDisplayId (true)])));
+ new jalview.io.SequenceAnnotationReport (null).createSequenceAnnotationReport (contents, seq, true, true, false, (this.ap.seqPanel.seqCanvas.fr != null) ? this.ap.seqPanel.seqCanvas.fr.getMinMax () : null);
+contents.append ("</p>");
+}
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, "Sequence Details for " + (sequences.length == 1 ? sequences[0].getDisplayId (true) : "Selection"), 600, 500);
+cap.setText (jalview.util.MessageManager.formatMessage ("label.html_content",  Clazz_newArray (-1, [contents.toString ()])));
+}, "~A");
+Clazz_defineMethod (c$, "editName", 
+function () {
+var dialog =  new jalview.appletgui.EditNameDialog (this.seq.getName (), this.seq.getDescription (), "       Sequence Name", "Sequence Description", this.ap.alignFrame, "Edit Sequence Name / Description", 500, 100, true);
+if (dialog.accept) {
+this.seq.setName (dialog.getName ());
+this.seq.setDescription (dialog.getDescription ());
+this.ap.paintAlignment (false);
+}});
+Clazz_defineMethod (c$, "addPDB", 
+function () {
+if (this.seq.getPDBId () != null) {
+var entry = this.seq.getPDBId ().firstElement ();
+if (this.ap.av.applet.jmolAvailable) {
+ new jalview.appletgui.AppletJmol (entry,  Clazz_newArray (-1, [this.seq]), null, this.ap, jalview.io.AppletFormatAdapter.URL);
+}} else {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (true, this.ap.alignFrame);
+cap.setText (jalview.util.MessageManager.getString ("label.paste_pdb_file"));
+cap.setPDBImport (this.seq);
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.formatMessage ("label.paste_pdb_file_for_sequence",  Clazz_newArray (-1, [this.seq.getName ()])), 400, 300);
+}});
+Clazz_defineMethod (c$, "jbInit", 
+ function () {
+this.groupMenu.setLabel (jalview.util.MessageManager.getString ("label.selection"));
+this.sequenceFeature.addActionListener (this);
+this.editGroupName.addActionListener (this);
+this.unGroupMenuItem.setLabel (jalview.util.MessageManager.getString ("action.remove_group"));
+this.unGroupMenuItem.addActionListener (this);
+this.createGroupMenuItem.setLabel (jalview.util.MessageManager.getString ("action.create_group"));
+this.createGroupMenuItem.addActionListener (this);
+this.nucleotideMenuItem.setLabel (jalview.util.MessageManager.getString ("label.nucleotide"));
+this.nucleotideMenuItem.addActionListener (this);
+this.conservationMenuItem.addItemListener (this);
+this.abovePIDColour.addItemListener (this);
+this.colourMenu.setLabel (jalview.util.MessageManager.getString ("label.group_colour"));
+this.showBoxes.setLabel (jalview.util.MessageManager.getString ("action.boxes"));
+this.showBoxes.setState (true);
+this.showBoxes.addItemListener (this);
+this.sequenceName.addActionListener (this);
+this.sequenceDetails.addActionListener (this);
+this.selSeqDetails.addActionListener (this);
+this.displayNonconserved.setLabel (jalview.util.MessageManager.getString ("label.show_non_conversed"));
+this.displayNonconserved.setState (false);
+this.displayNonconserved.addItemListener (this);
+this.showText.setLabel (jalview.util.MessageManager.getString ("action.text"));
+this.showText.addItemListener (this);
+this.showColourText.setLabel (jalview.util.MessageManager.getString ("label.colour_text"));
+this.showColourText.addItemListener (this);
+this.outputmenu.setLabel (jalview.util.MessageManager.getString ("label.out_to_textbox"));
+this.seqMenu.setLabel (jalview.util.MessageManager.getString ("label.sequence"));
+this.pdb.setLabel (jalview.util.MessageManager.getString ("label.view_pdb_structure"));
+this.hideSeqs.setLabel (jalview.util.MessageManager.getString ("action.hide_sequences"));
+this.repGroup.setLabel (jalview.util.MessageManager.formatMessage ("label.represent_group_with",  Clazz_newArray (-1, [""])));
+this.revealAll.setLabel (jalview.util.MessageManager.getString ("action.reveal_all"));
+this.revealSeq.setLabel (jalview.util.MessageManager.getString ("action.reveal_sequences"));
+this.menu1.setLabel (jalview.util.MessageManager.getString ("label.group") + ":");
+this.add (this.groupMenu);
+this.add (this.seqMenu);
+this.add (this.hideSeqs);
+this.add (this.revealSeq);
+this.add (this.revealAll);
+this.groupMenu.add (this.groupShowAnnotationsMenu);
+this.groupMenu.add (this.groupHideAnnotationsMenu);
+this.groupMenu.add (this.groupAddReferenceAnnotations);
+this.groupMenu.add (this.editMenu);
+this.groupMenu.add (this.outputmenu);
+this.groupMenu.add (this.sequenceFeature);
+this.groupMenu.add (this.createGroupMenuItem);
+this.groupMenu.add (this.unGroupMenuItem);
+this.groupMenu.add (this.menu1);
+this.colourMenu.add (this.noColourmenuItem);
+this.colourMenu.add (this.clustalColour);
+this.colourMenu.add (this.BLOSUM62Colour);
+this.colourMenu.add (this.PIDColour);
+this.colourMenu.add (this.zappoColour);
+this.colourMenu.add (this.taylorColour);
+this.colourMenu.add (this.hydrophobicityColour);
+this.colourMenu.add (this.helixColour);
+this.colourMenu.add (this.strandColour);
+this.colourMenu.add (this.turnColour);
+this.colourMenu.add (this.buriedColour);
+this.colourMenu.add (this.nucleotideMenuItem);
+this.colourMenu.add (this.userDefinedColour);
+this.colourMenu.addSeparator ();
+this.colourMenu.add (this.abovePIDColour);
+this.colourMenu.add (this.conservationMenuItem);
+this.noColourmenuItem.setLabel (jalview.util.MessageManager.getString ("label.none"));
+this.noColourmenuItem.addActionListener (this);
+this.clustalColour.setLabel (jalview.util.MessageManager.getString ("label.clustalx_colours"));
+this.clustalColour.addActionListener (this);
+this.zappoColour.setLabel (jalview.util.MessageManager.getString ("label.zappo"));
+this.zappoColour.addActionListener (this);
+this.taylorColour.setLabel (jalview.util.MessageManager.getString ("label.taylor"));
+this.taylorColour.addActionListener (this);
+this.hydrophobicityColour.setLabel (jalview.util.MessageManager.getString ("label.hydrophobicity"));
+this.hydrophobicityColour.addActionListener (this);
+this.helixColour.setLabel (jalview.util.MessageManager.getString ("label.helix_propensity"));
+this.helixColour.addActionListener (this);
+this.strandColour.setLabel (jalview.util.MessageManager.getString ("label.strand_propensity"));
+this.strandColour.addActionListener (this);
+this.turnColour.setLabel (jalview.util.MessageManager.getString ("label.turn_propensity"));
+this.turnColour.addActionListener (this);
+this.buriedColour.setLabel (jalview.util.MessageManager.getString ("label.buried_index"));
+this.buriedColour.addActionListener (this);
+this.abovePIDColour.setLabel (jalview.util.MessageManager.getString ("label.above_identity_percentage"));
+this.userDefinedColour.setLabel (jalview.util.MessageManager.getString ("action.user_defined"));
+this.userDefinedColour.addActionListener (this);
+this.PIDColour.setLabel (jalview.util.MessageManager.getString ("action.percentage_identity"));
+this.PIDColour.addActionListener (this);
+this.BLOSUM62Colour.setLabel ("BLOSUM62");
+this.BLOSUM62Colour.addActionListener (this);
+this.conservationMenuItem.setLabel (jalview.util.MessageManager.getString ("label.conservation"));
+this.editMenu.add (this.copy);
+this.copy.addActionListener (this);
+this.editMenu.add (this.cut);
+this.cut.addActionListener (this);
+this.editMenu.add (this.editSequence);
+this.editSequence.addActionListener (this);
+this.editMenu.add (this.toUpper);
+this.toUpper.addActionListener (this);
+this.editMenu.add (this.toLower);
+this.toLower.addActionListener (this);
+this.editMenu.add (this.toggleCase);
+this.seqMenu.add (this.seqShowAnnotationsMenu);
+this.seqMenu.add (this.seqHideAnnotationsMenu);
+this.seqMenu.add (this.seqAddReferenceAnnotations);
+this.seqMenu.add (this.sequenceName);
+this.seqMenu.add (this.makeReferenceSeq);
+if (!this.ap.av.applet.useXtrnalSviewer) {
+this.seqMenu.add (this.pdb);
+}this.seqMenu.add (this.repGroup);
+this.menu1.add (this.editGroupName);
+this.menu1.add (this.colourMenu);
+this.menu1.add (this.showBoxes);
+this.menu1.add (this.showText);
+this.menu1.add (this.showColourText);
+this.menu1.add (this.displayNonconserved);
+this.toggleCase.addActionListener (this);
+this.pdb.addActionListener (this);
+this.hideSeqs.addActionListener (this);
+this.repGroup.addActionListener (this);
+this.revealAll.addActionListener (this);
+this.revealSeq.addActionListener (this);
+this.makeReferenceSeq.addActionListener (this);
+});
+Clazz_defineMethod (c$, "refresh", 
+function () {
+this.ap.paintAlignment (true);
+});
+Clazz_defineMethod (c$, "clustalColour_actionPerformed", 
+function () {
+var sg = this.getGroup ();
+sg.cs =  new jalview.schemes.ClustalxColourScheme (sg, this.ap.av.getHiddenRepSequences ());
+this.refresh ();
+});
+Clazz_defineMethod (c$, "zappoColour_actionPerformed", 
+function () {
+this.getGroup ().cs =  new jalview.schemes.ZappoColourScheme ();
+this.refresh ();
+});
+Clazz_defineMethod (c$, "taylorColour_actionPerformed", 
+function () {
+this.getGroup ().cs =  new jalview.schemes.TaylorColourScheme ();
+this.refresh ();
+});
+Clazz_defineMethod (c$, "hydrophobicityColour_actionPerformed", 
+function () {
+this.getGroup ().cs =  new jalview.schemes.HydrophobicColourScheme ();
+this.refresh ();
+});
+Clazz_defineMethod (c$, "helixColour_actionPerformed", 
+function () {
+this.getGroup ().cs =  new jalview.schemes.HelixColourScheme ();
+this.refresh ();
+});
+Clazz_defineMethod (c$, "strandColour_actionPerformed", 
+function () {
+this.getGroup ().cs =  new jalview.schemes.StrandColourScheme ();
+this.refresh ();
+});
+Clazz_defineMethod (c$, "turnColour_actionPerformed", 
+function () {
+this.getGroup ().cs =  new jalview.schemes.TurnColourScheme ();
+this.refresh ();
+});
+Clazz_defineMethod (c$, "buriedColour_actionPerformed", 
+function () {
+this.getGroup ().cs =  new jalview.schemes.BuriedColourScheme ();
+this.refresh ();
+});
+Clazz_defineMethod (c$, "nucleotideMenuItem_actionPerformed", 
+function () {
+this.getGroup ().cs =  new jalview.schemes.NucleotideColourScheme ();
+this.refresh ();
+});
+Clazz_defineMethod (c$, "abovePIDColour_itemStateChanged", 
+function () {
+var sg = this.getGroup ();
+if (sg.cs == null) {
+return;
+}if (this.abovePIDColour.getState ()) {
+sg.cs.setConsensus (jalview.analysis.AAFrequency.calculate (sg.getSequences (this.ap.av.getHiddenRepSequences ()), 0, this.ap.av.getAlignment ().getWidth ()));
+var threshold = jalview.appletgui.SliderPanel.setPIDSliderSource (this.ap, sg.cs, this.getGroup ().getName ());
+sg.cs.setThreshold (threshold, this.ap.av.isIgnoreGapsConsensus ());
+jalview.appletgui.SliderPanel.showPIDSlider ();
+} else {
+sg.cs.setThreshold (0, this.ap.av.isIgnoreGapsConsensus ());
+}this.refresh ();
+});
+Clazz_defineMethod (c$, "userDefinedColour_actionPerformed", 
+function () {
+ new jalview.appletgui.UserDefinedColours (this.ap, this.getGroup ());
+});
+Clazz_defineMethod (c$, "PIDColour_actionPerformed", 
+function () {
+var sg = this.getGroup ();
+sg.cs =  new jalview.schemes.PIDColourScheme ();
+sg.cs.setConsensus (jalview.analysis.AAFrequency.calculate (sg.getSequences (this.ap.av.getHiddenRepSequences ()), 0, this.ap.av.getAlignment ().getWidth ()));
+this.refresh ();
+});
+Clazz_defineMethod (c$, "BLOSUM62Colour_actionPerformed", 
+function () {
+var sg = this.getGroup ();
+sg.cs =  new jalview.schemes.Blosum62ColourScheme ();
+sg.cs.setConsensus (jalview.analysis.AAFrequency.calculate (sg.getSequences (this.ap.av.getHiddenRepSequences ()), 0, this.ap.av.getAlignment ().getWidth ()));
+this.refresh ();
+});
+Clazz_defineMethod (c$, "noColourmenuItem_actionPerformed", 
+function () {
+this.getGroup ().cs = null;
+this.refresh ();
+});
+Clazz_defineMethod (c$, "conservationMenuItem_itemStateChanged", 
+function () {
+var sg = this.getGroup ();
+if (sg.cs == null) {
+return;
+}if (this.conservationMenuItem.getState ()) {
+sg.cs.setConservation (jalview.analysis.Conservation.calculateConservation ("Group", jalview.schemes.ResidueProperties.propHash, 3, sg.getSequences (this.ap.av.getHiddenRepSequences ()), 0, this.ap.av.getAlignment ().getWidth (), false, this.ap.av.getConsPercGaps (), false));
+jalview.appletgui.SliderPanel.setConservationSlider (this.ap, sg.cs, sg.getName ());
+jalview.appletgui.SliderPanel.showConservationSlider ();
+} else {
+sg.cs.setConservation (null);
+}this.refresh ();
+});
+Clazz_defineMethod (c$, "getGroup", 
+function () {
+var sg = this.ap.av.getSelectionGroup ();
+if (sg != null) {
+this.ap.av.getAlignment ().addGroup (sg);
+}return sg;
+});
+Clazz_defineMethod (c$, "unGroupMenuItem_actionPerformed", 
+function () {
+var sg = this.ap.av.getSelectionGroup ();
+this.ap.av.getAlignment ().deleteGroup (sg);
+this.ap.av.setSelectionGroup (null);
+this.ap.paintAlignment (true);
+});
+Clazz_defineMethod (c$, "createGroupMenuItem_actionPerformed", 
+function () {
+this.getGroup ();
+this.refresh ();
+});
+Clazz_defineMethod (c$, "showColourText_itemStateChanged", 
+function () {
+this.getGroup ().setColourText (this.showColourText.getState ());
+this.refresh ();
+});
+Clazz_defineMethod (c$, "showText_itemStateChanged", 
+function () {
+this.getGroup ().setDisplayText (this.showText.getState ());
+this.refresh ();
+});
+Clazz_defineMethod (c$, "makeReferenceSeq_actionPerformed", 
+function () {
+if (!this.ap.av.getAlignment ().hasSeqrep ()) {
+this.ap.av.setDisplayReferenceSeq (true);
+this.ap.av.setColourByReferenceSeq (true);
+this.ap.av.getAlignment ().setSeqrep (this.seq);
+} else {
+if (this.ap.av.getAlignment ().getSeqrep () === this.seq) {
+this.ap.av.getAlignment ().setSeqrep (null);
+} else {
+this.ap.av.getAlignment ().setSeqrep (this.seq);
+}}this.refresh ();
+});
+Clazz_defineMethod (c$, "showNonconserved_itemStateChanged", 
+function () {
+this.getGroup ().setShowNonconserved (this.displayNonconserved.getState ());
+this.refresh ();
+});
+Clazz_defineMethod (c$, "showBoxes_itemStateChanged", 
+function () {
+this.getGroup ().setDisplayBoxes (this.showBoxes.getState ());
+this.refresh ();
+});
+Clazz_defineMethod (c$, "hideSequences", 
+function (representGroup) {
+var sg = this.ap.av.getSelectionGroup ();
+if (sg == null || sg.getSize () < 1) {
+this.ap.av.hideSequence ( Clazz_newArray (-1, [this.seq]));
+return;
+}this.ap.av.setSelectionGroup (null);
+if (representGroup) {
+this.ap.av.hideRepSequences (this.seq, sg);
+return;
+}var gsize = sg.getSize ();
+var hseqs;
+hseqs =  new Array (gsize);
+var index = 0;
+for (var i = 0; i < gsize; i++) {
+hseqs[index++] = sg.getSequenceAt (i);
+}
+this.ap.av.hideSequence (hseqs);
+this.ap.av.sendSelection ();
+}, "~B");
+Clazz_defineMethod (c$, "buildAnnotationTypesMenus", 
+function (showMenu, hideMenu, forSequences) {
+showMenu.removeAll ();
+hideMenu.removeAll ();
+var all = java.util.Arrays.asList (["All"]);
+this.addAnnotationTypeToShowHide (showMenu, forSequences, "", all, true, true);
+this.addAnnotationTypeToShowHide (hideMenu, forSequences, "", all, true, false);
+showMenu.addSeparator ();
+hideMenu.addSeparator ();
+var annotations = this.ap.getAlignment ().getAlignmentAnnotation ();
+var shownTypes =  new java.util.LinkedHashMap ();
+var hiddenTypes =  new java.util.LinkedHashMap ();
+jalview.analysis.AlignmentAnnotationUtils.getShownHiddenTypes (shownTypes, hiddenTypes, jalview.analysis.AlignmentAnnotationUtils.asList (annotations), forSequences);
+for (var calcId, $calcId = hiddenTypes.keySet ().iterator (); $calcId.hasNext () && ((calcId = $calcId.next ()) || true);) {
+for (var type, $type = hiddenTypes.get (calcId).iterator (); $type.hasNext () && ((type = $type.next ()) || true);) {
+this.addAnnotationTypeToShowHide (showMenu, forSequences, calcId, type, false, true);
+}
+}
+showMenu.setEnabled (!hiddenTypes.isEmpty ());
+for (var calcId, $calcId = shownTypes.keySet ().iterator (); $calcId.hasNext () && ((calcId = $calcId.next ()) || true);) {
+for (var type, $type = shownTypes.get (calcId).iterator (); $type.hasNext () && ((type = $type.next ()) || true);) {
+this.addAnnotationTypeToShowHide (hideMenu, forSequences, calcId, type, false, false);
+}
+}
+hideMenu.setEnabled (!shownTypes.isEmpty ());
+}, "awt2swing.Menu,awt2swing.Menu,java.util.List");
+Clazz_defineMethod (c$, "addAnnotationTypeToShowHide", 
+function (showOrHideMenu, forSequences, calcId, types, allTypes, actionIsShow) {
+var label = types.toString ();
+label = label.substring (1, label.length - 1);
+var item =  new awt2swing.MenuItem (label);
+item.addActionListener (((Clazz_isClassDefined ("jalview.appletgui.APopupMenu$3") ? 0 : jalview.appletgui.APopupMenu.$APopupMenu$3$ ()), Clazz_innerTypeInstance (jalview.appletgui.APopupMenu$3, this, Clazz_cloneFinals ("types", types, "forSequences", forSequences, "allTypes", allTypes, "actionIsShow", actionIsShow))));
+showOrHideMenu.add (item);
+}, "awt2swing.Menu,java.util.List,~S,java.util.List,~B,~B");
+c$.$APopupMenu$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "APopupMenu$1", null, java.awt.event.ActionListener);
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.APopupMenu"].addReferenceAnnotations_actionPerformed (this.f$.candidates);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+};
+c$.$APopupMenu$2$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "APopupMenu$2", null, java.awt.event.ActionListener);
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.APopupMenu"].ap.alignFrame.showURL (this.f$.url, this.f$.target);
+}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+};
+c$.$APopupMenu$3$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "APopupMenu$3", null, java.awt.event.ActionListener);
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (e) {
+jalview.analysis.AlignmentUtils.showOrHideSequenceAnnotations (this.b$["jalview.appletgui.APopupMenu"].ap.getAlignment (), this.f$.types, this.f$.forSequences, this.f$.allTypes, this.f$.actionIsShow);
+this.b$["jalview.appletgui.APopupMenu"].refresh ();
+}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+};
+Clazz_defineStatics (c$,
+"ALL_ANNOTATIONS", "All");
+});
+Clazz_declarePackage ("jalview.analysis");
+Clazz_load (null, "jalview.analysis.AlignmentAnnotationUtils", ["java.util.ArrayList", "$.Arrays", "$.BitSet", "$.Collections", "$.HashMap"], function () {
+c$ = Clazz_declareType (jalview.analysis, "AlignmentAnnotationUtils");
+c$.getShownHiddenTypes = Clazz_defineMethod (c$, "getShownHiddenTypes", 
+function (shownTypes, hiddenTypes, annotations, forSequences) {
+var visibleGraphGroups = jalview.analysis.AlignmentAnnotationUtils.getVisibleLineGraphGroups (annotations);
+var groupLabels =  new java.util.HashMap ();
+var addedToShown =  new java.util.ArrayList ();
+var addedToHidden =  new java.util.ArrayList ();
+for (var aa, $aa = annotations.iterator (); $aa.hasNext () && ((aa = $aa.next ()) || true);) {
+if (aa.annotations == null) {
+continue;
+}if (forSequences != null && (aa.sequenceRef != null && forSequences.contains (aa.sequenceRef))) {
+var calcId = aa.getCalcId ();
+var labelAsList =  new java.util.ArrayList ();
+var displayLabel = aa.label;
+labelAsList.add (displayLabel);
+if (aa.graph == 2 && aa.graphGroup > -1) {
+if (!groupLabels.containsKey (calcId)) {
+groupLabels.put (calcId,  new java.util.HashMap ());
+}var groupLabelsForCalcId = groupLabels.get (calcId);
+if (groupLabelsForCalcId.containsKey (new Integer (aa.graphGroup))) {
+if (!groupLabelsForCalcId.get (new Integer (aa.graphGroup)).contains (displayLabel)) {
+groupLabelsForCalcId.get (new Integer (aa.graphGroup)).add (displayLabel);
+}} else {
+groupLabelsForCalcId.put (new Integer (aa.graphGroup), labelAsList);
+}} else {
+var rememberAs = calcId + "!" + displayLabel;
+if (aa.visible && !addedToShown.contains (rememberAs)) {
+if (!shownTypes.containsKey (calcId)) {
+shownTypes.put (calcId,  new java.util.ArrayList ());
+}shownTypes.get (calcId).add (labelAsList);
+addedToShown.add (rememberAs);
+} else {
+if (!aa.visible && !addedToHidden.contains (rememberAs)) {
+if (!hiddenTypes.containsKey (calcId)) {
+hiddenTypes.put (calcId,  new java.util.ArrayList ());
+}hiddenTypes.get (calcId).add (labelAsList);
+addedToHidden.add (rememberAs);
+}}}}}
+for (var calcId, $calcId = groupLabels.keySet ().iterator (); $calcId.hasNext () && ((calcId = $calcId.next ()) || true);) {
+for (var group, $group = groupLabels.get (calcId).keySet ().iterator (); $group.hasNext () && ((group = $group.next ()) || true);) {
+var groupLabel = groupLabels.get (calcId).get (new Integer (group));
+java.util.Collections.sort (groupLabel);
+if (visibleGraphGroups.get (group)) {
+if (!shownTypes.containsKey (calcId)) {
+shownTypes.put (calcId,  new java.util.ArrayList ());
+}if (!shownTypes.get (calcId).contains (groupLabel)) {
+shownTypes.get (calcId).add (groupLabel);
+}} else {
+if (!hiddenTypes.containsKey (calcId)) {
+hiddenTypes.put (calcId,  new java.util.ArrayList ());
+}if (!hiddenTypes.get (calcId).contains (groupLabel)) {
+hiddenTypes.get (calcId).add (groupLabel);
+}}}
+}
+}, "java.util.Map,java.util.Map,java.util.List,java.util.List");
+c$.getVisibleLineGraphGroups = Clazz_defineMethod (c$, "getVisibleLineGraphGroups", 
+function (annotations) {
+var result =  new java.util.BitSet ();
+for (var ann, $ann = annotations.iterator (); $ann.hasNext () && ((ann = $ann.next ()) || true);) {
+if (ann.graph == 2 && ann.visible) {
+var gg = ann.graphGroup;
+if (gg > -1) {
+result.set (gg);
+}}}
+return result;
+}, "java.util.List");
+c$.asList = Clazz_defineMethod (c$, "asList", 
+function (anns) {
+return (anns == null ? java.util.Collections.emptyList () : java.util.Arrays.asList (anns));
+}, "~A");
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.MouseListener", "awt2swing.Button", "$.Checkbox", "$.Label", "$.Scrollbar", "$.TextField", "java.awt.BorderLayout", "$.FlowLayout"], "jalview.appletgui.SliderPanel", ["awt2swing.Frame", "jalview.bin.JalviewLite", "jalview.util.MessageManager", "java.awt.Color", "$.Font", "java.awt.event.WindowAdapter"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.ap = null;
+this.forConservation = true;
+this.cs = null;
+this.slider = null;
+this.valueField = null;
+this.label = null;
+this.jPanel1 = null;
+this.jPanel2 = null;
+this.applyButton = null;
+this.undoButton = null;
+this.flowLayout1 = null;
+this.allGroupsCheck = null;
+this.borderLayout1 = null;
+this.borderLayout2 = null;
+this.flowLayout2 = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "SliderPanel", awt2swing.Panel, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.MouseListener]);
+Clazz_prepareFields (c$, function () {
+this.slider =  new awt2swing.Scrollbar ();
+this.valueField =  new awt2swing.TextField ();
+this.label =  new awt2swing.Label ();
+this.jPanel1 =  new awt2swing.Panel ();
+this.jPanel2 =  new awt2swing.Panel ();
+this.applyButton =  new awt2swing.Button ();
+this.undoButton =  new awt2swing.Button ();
+this.flowLayout1 =  new java.awt.FlowLayout ();
+this.allGroupsCheck =  new awt2swing.Checkbox ();
+this.borderLayout1 =  new java.awt.BorderLayout ();
+this.borderLayout2 =  new java.awt.BorderLayout ();
+this.flowLayout2 =  new java.awt.FlowLayout ();
+});
+c$.setConservationSlider = Clazz_defineMethod (c$, "setConservationSlider", 
+function (ap, cs, source) {
+var sp = null;
+if (jalview.appletgui.SliderPanel.conservationSlider == null) {
+sp =  new jalview.appletgui.SliderPanel (ap, cs.getConservationInc (), true, cs);
+jalview.appletgui.SliderPanel.conservationSlider =  new awt2swing.Frame ();
+jalview.appletgui.SliderPanel.conservationSlider.add (sp);
+} else {
+sp = jalview.appletgui.SliderPanel.conservationSlider.getComponent (0);
+sp.cs = cs;
+}jalview.appletgui.SliderPanel.conservationSlider.setTitle (jalview.util.MessageManager.formatMessage ("label.conservation_colour_increment",  Clazz_newArray (-1, [source])));
+if (ap.av.getAlignment ().getGroups () != null) {
+sp.setAllGroupsCheckEnabled (true);
+} else {
+sp.setAllGroupsCheckEnabled (false);
+}return sp.getValue ();
+}, "jalview.appletgui.AlignmentPanel,jalview.schemes.ColourSchemeI,~S");
+c$.showConservationSlider = Clazz_defineMethod (c$, "showConservationSlider", 
+function () {
+try {
+jalview.appletgui.SliderPanel.PIDSlider.setVisible (false);
+jalview.appletgui.SliderPanel.PIDSlider = null;
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+if (!jalview.appletgui.SliderPanel.conservationSlider.isVisible ()) {
+jalview.bin.JalviewLite.addFrame (jalview.appletgui.SliderPanel.conservationSlider, jalview.appletgui.SliderPanel.conservationSlider.getTitle (), 420, 100);
+jalview.appletgui.SliderPanel.conservationSlider.addWindowListener (((Clazz_isClassDefined ("jalview.appletgui.SliderPanel$1") ? 0 : jalview.appletgui.SliderPanel.$SliderPanel$1$ ()), Clazz_innerTypeInstance (jalview.appletgui.SliderPanel$1, this, null)));
+}});
+c$.setPIDSliderSource = Clazz_defineMethod (c$, "setPIDSliderSource", 
+function (ap, cs, source) {
+var pid = null;
+if (jalview.appletgui.SliderPanel.PIDSlider == null) {
+pid =  new jalview.appletgui.SliderPanel (ap, 50, false, cs);
+jalview.appletgui.SliderPanel.PIDSlider =  new awt2swing.Frame ();
+jalview.appletgui.SliderPanel.PIDSlider.add (pid);
+} else {
+pid = jalview.appletgui.SliderPanel.PIDSlider.getComponent (0);
+pid.cs = cs;
+}jalview.appletgui.SliderPanel.PIDSlider.setTitle (jalview.util.MessageManager.formatMessage ("label.percentage_identity_thereshold",  Clazz_newArray (-1, [source])));
+if (ap.av.getAlignment ().getGroups () != null) {
+pid.setAllGroupsCheckEnabled (true);
+} else {
+pid.setAllGroupsCheckEnabled (false);
+}return pid.getValue ();
+}, "jalview.appletgui.AlignmentPanel,jalview.schemes.ColourSchemeI,~S");
+c$.showPIDSlider = Clazz_defineMethod (c$, "showPIDSlider", 
+function () {
+try {
+jalview.appletgui.SliderPanel.conservationSlider.setVisible (false);
+jalview.appletgui.SliderPanel.conservationSlider = null;
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+if (!jalview.appletgui.SliderPanel.PIDSlider.isVisible ()) {
+jalview.bin.JalviewLite.addFrame (jalview.appletgui.SliderPanel.PIDSlider, jalview.appletgui.SliderPanel.PIDSlider.getTitle (), 420, 100);
+jalview.appletgui.SliderPanel.PIDSlider.addWindowListener (((Clazz_isClassDefined ("jalview.appletgui.SliderPanel$2") ? 0 : jalview.appletgui.SliderPanel.$SliderPanel$2$ ()), Clazz_innerTypeInstance (jalview.appletgui.SliderPanel$2, this, null)));
+}});
+Clazz_makeConstructor (c$, 
+function (ap, value, forConserve, cs) {
+Clazz_superConstructor (this, jalview.appletgui.SliderPanel, []);
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.ap = ap;
+this.cs = cs;
+this.forConservation = forConserve;
+this.undoButton.setVisible (false);
+this.applyButton.setVisible (false);
+if (this.forConservation) {
+this.label.setText (jalview.util.MessageManager.getString ("label.modify_conservation_visibility"));
+this.slider.setMinimum (0);
+this.slider.setMaximum (50 + this.slider.getVisibleAmount ());
+this.slider.setUnitIncrement (1);
+} else {
+this.label.setText (jalview.util.MessageManager.getString ("label.colour_residues_above_occurence"));
+this.slider.setMinimum (0);
+this.slider.setMaximum (100 + this.slider.getVisibleAmount ());
+this.slider.setBlockIncrement (1);
+}this.slider.addAdjustmentListener (this);
+this.slider.addMouseListener (this);
+this.slider.setValue (value);
+this.valueField.setText (value + "");
+}, "jalview.appletgui.AlignmentPanel,~N,~B,jalview.schemes.ColourSchemeI");
+Clazz_defineMethod (c$, "valueChanged", 
+function (i) {
+if (this.cs == null) {
+return;
+}var toChange = this.cs;
+var allGroups = null;
+if (this.allGroupsCheck.getState ()) {
+allGroups = this.ap.av.getAlignment ().getGroups ().listIterator ();
+}while (toChange != null) {
+if (this.forConservation) {
+toChange.setConservationInc (i);
+} else {
+toChange.setThreshold (i, this.ap.av.isIgnoreGapsConsensus ());
+}if (allGroups != null && allGroups.hasNext ()) {
+while ((toChange = allGroups.next ().cs) == null && allGroups.hasNext ()) {
+;}
+} else {
+toChange = null;
+}}
+this.ap.seqPanel.seqCanvas.repaint ();
+}, "~N");
+Clazz_defineMethod (c$, "setAllGroupsCheckEnabled", 
+function (b) {
+this.allGroupsCheck.setEnabled (b);
+}, "~B");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.applyButton) {
+this.applyButton_actionPerformed ();
+} else if (evt.getSource () === this.undoButton) {
+this.undoButton_actionPerformed ();
+} else if (evt.getSource () === this.valueField) {
+this.valueField_actionPerformed ();
+}}, "java.awt.event.ActionEvent");
+Clazz_overrideMethod (c$, "adjustmentValueChanged", 
+function (evt) {
+this.valueField.setText (this.slider.getValue () + "");
+this.valueChanged (this.slider.getValue ());
+}, "java.awt.event.AdjustmentEvent");
+Clazz_defineMethod (c$, "valueField_actionPerformed", 
+function () {
+try {
+var i = Integer.parseInt (this.valueField.getText ());
+this.slider.setValue (i);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+this.valueField.setText (this.slider.getValue () + "");
+} else {
+throw ex;
+}
+}
+});
+Clazz_defineMethod (c$, "setValue", 
+function (value) {
+this.slider.setValue (value);
+}, "~N");
+Clazz_defineMethod (c$, "getValue", 
+function () {
+return Integer.parseInt (this.valueField.getText ());
+});
+Clazz_defineMethod (c$, "jbInit", 
+ function () {
+this.setLayout (this.borderLayout2);
+this.slider.setBackground (java.awt.Color.white);
+this.slider.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.slider.setOrientation (0);
+this.valueField.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.valueField.setText ("   ");
+this.valueField.addActionListener (this);
+this.valueField.setColumns (3);
+this.label.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.label.setText (jalview.util.MessageManager.getString ("label.set_this_label_text"));
+this.jPanel1.setLayout (this.borderLayout1);
+this.jPanel2.setLayout (this.flowLayout1);
+this.applyButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.applyButton.setLabel (jalview.util.MessageManager.getString ("action.apply"));
+this.applyButton.addActionListener (this);
+this.undoButton.setEnabled (false);
+this.undoButton.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.undoButton.setLabel (jalview.util.MessageManager.getString ("action.undo"));
+this.undoButton.addActionListener (this);
+this.allGroupsCheck.setEnabled (false);
+this.allGroupsCheck.setFont ( new java.awt.Font ("Verdana", 0, 11));
+this.allGroupsCheck.setLabel (jalview.util.MessageManager.getString ("action.apply_threshold_all_groups"));
+this.allGroupsCheck.setName (jalview.util.MessageManager.getString ("action.apply_all_groups"));
+this.setBackground (java.awt.Color.white);
+this.setForeground (java.awt.Color.black);
+this.jPanel2.add (this.label, null);
+this.jPanel2.add (this.applyButton, null);
+this.jPanel2.add (this.undoButton, null);
+this.jPanel2.add (this.allGroupsCheck);
+this.jPanel1.add (this.valueField, "East");
+this.jPanel1.add (this.slider, "Center");
+this.add (this.jPanel1, "South");
+this.add (this.jPanel2, "Center");
+});
+Clazz_defineMethod (c$, "applyButton_actionPerformed", 
+function () {
+});
+Clazz_defineMethod (c$, "undoButton_actionPerformed", 
+function () {
+});
+Clazz_overrideMethod (c$, "mousePressed", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (evt) {
+this.ap.paintAlignment (true);
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+c$.$SliderPanel$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "SliderPanel$1", java.awt.event.WindowAdapter);
+Clazz_overrideMethod (c$, "windowClosing", 
+function (e) {
+jalview.appletgui.SliderPanel.conservationSlider = null;
+}, "java.awt.event.WindowEvent");
+c$ = Clazz_p0p ();
+};
+c$.$SliderPanel$2$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "SliderPanel$2", java.awt.event.WindowAdapter);
+Clazz_overrideMethod (c$, "windowClosing", 
+function (e) {
+jalview.appletgui.SliderPanel.PIDSlider = null;
+}, "java.awt.event.WindowEvent");
+c$ = Clazz_p0p ();
+};
+Clazz_defineStatics (c$,
+"conservationSlider", null,
+"PIDSlider", null);
+});
+Clazz_declarePackage ("jalview.commands");
+Clazz_load (["jalview.commands.CommandI"], "jalview.commands.ChangeCaseCommand", ["java.lang.StringBuffer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.description = null;
+this.caseChange = -1;
+this.seqs = null;
+this.regions = null;
+Clazz_instantialize (this, arguments);
+}, jalview.commands, "ChangeCaseCommand", null, jalview.commands.CommandI);
+Clazz_makeConstructor (c$, 
+function (description, seqs, regions, caseChange) {
+this.description = description;
+this.seqs = seqs;
+this.regions = regions;
+this.caseChange = caseChange;
+this.doCommand (null);
+}, "~S,~A,java.util.List,~N");
+Clazz_overrideMethod (c$, "getDescription", 
+function () {
+return this.description;
+});
+Clazz_overrideMethod (c$, "getSize", 
+function () {
+return 1;
+});
+Clazz_overrideMethod (c$, "doCommand", 
+function (views) {
+this.changeCase (true);
+}, "~A");
+Clazz_overrideMethod (c$, "undoCommand", 
+function (views) {
+this.changeCase (false);
+}, "~A");
+Clazz_defineMethod (c$, "changeCase", 
+function (doCommand) {
+var sequence;
+var start;
+var end;
+var nextChar;
+for (var r, $r = this.regions.iterator (); $r.hasNext () && ((r = $r.next ()) || true);) {
+start = r[0];
+for (var s = 0; s < this.seqs.length; s++) {
+sequence = this.seqs[s].getSequenceAsString ();
+var newSeq =  new StringBuffer ();
+if (r[1] > sequence.length) {
+end = sequence.length;
+} else {
+end = r[1];
+}if (start > 0) {
+newSeq.append (sequence.substring (0, start));
+}if ((this.caseChange == jalview.commands.ChangeCaseCommand.TO_UPPER && doCommand) || (this.caseChange == jalview.commands.ChangeCaseCommand.TO_LOWER && !doCommand)) {
+newSeq.append (sequence.substring (start, end).toUpperCase ());
+} else if ((this.caseChange == jalview.commands.ChangeCaseCommand.TO_LOWER && doCommand) || (this.caseChange == jalview.commands.ChangeCaseCommand.TO_UPPER && !doCommand)) {
+newSeq.append (sequence.substring (start, end).toLowerCase ());
+} else {
+for (var c = start; c < end; c++) {
+nextChar = sequence.charAt (c);
+if ('a' <= nextChar && nextChar <= 'z') {
+nextChar = String.fromCharCode (nextChar.charCodeAt (0) - (32));
+} else if ('A' <= nextChar && nextChar <= 'Z') {
+nextChar = String.fromCharCode (nextChar.charCodeAt (0) + (32));
+}newSeq.append (nextChar);
+}
+}if (end < sequence.length) {
+newSeq.append (sequence.substring (end));
+}this.seqs[s].setSequence (newSeq.toString ());
+}
+}
+}, "~B");
+Clazz_defineStatics (c$,
+"TO_LOWER", 0,
+"TO_UPPER", 1,
+"TOGGLE_CASE", 2);
+});
+Clazz_declarePackage ("jalview.io");
+Clazz_load (null, "jalview.io.SequenceAnnotationReport", ["jalview.util.DBRefUtils", "$.UrlLink", "java.lang.Float", "java.util.ArrayList"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.linkImageURL = null;
+Clazz_instantialize (this, arguments);
+}, jalview.io, "SequenceAnnotationReport");
+Clazz_makeConstructor (c$, 
+function (linkImageURL) {
+this.linkImageURL = linkImageURL;
+}, "~S");
+Clazz_defineMethod (c$, "appendFeatures", 
+function (tooltipText2, rpos, features) {
+this.appendFeatures (tooltipText2, rpos, features, null);
+}, "StringBuffer,~N,java.util.List");
+Clazz_defineMethod (c$, "appendFeatures", 
+function (tooltipText2, rpos, features, minmax) {
+var tmpString;
+if (features != null) {
+for (var feature, $feature = features.iterator (); $feature.hasNext () && ((feature = $feature.next ()) || true);) {
+if (feature.getType ().equals ("disulfide bond")) {
+if (feature.getBegin () == rpos || feature.getEnd () == rpos) {
+if (tooltipText2.length () > 6) {
+tooltipText2.append ("<br>");
+}tooltipText2.append ("disulfide bond " + feature.getBegin () + ":" + feature.getEnd ());
+}} else {
+if (tooltipText2.length () > 6) {
+tooltipText2.append ("<br>");
+}var linkOnly = feature.getValue ("linkonly") != null;
+if (!linkOnly) {
+tooltipText2.append (feature.getType () + " ");
+if (rpos != 0) {
+tooltipText2.append ("" + feature.begin);
+}if (feature.begin != feature.end) {
+tooltipText2.append (" " + feature.end);
+}if (feature.getDescription () != null && !feature.description.equals (feature.getType ())) {
+tmpString = feature.getDescription ();
+var tmp2up = tmpString.toUpperCase ();
+var startTag = tmp2up.indexOf ("<HTML>");
+if (startTag > -1) {
+tmpString = tmpString.substring (startTag + 6);
+tmp2up = tmp2up.substring (startTag + 6);
+}var endTag = tmp2up.indexOf ("</BODY>");
+if (endTag > -1) {
+tmpString = tmpString.substring (0, endTag);
+tmp2up = tmp2up.substring (0, endTag);
+}endTag = tmp2up.indexOf ("</HTML>");
+if (endTag > -1) {
+tmpString = tmpString.substring (0, endTag);
+}if (startTag > -1) {
+tooltipText2.append ("; " + tmpString);
+} else {
+if (tmpString.indexOf ("<") > -1 || tmpString.indexOf (">") > -1) {
+tmpString = tmpString.replaceAll ("<", "&lt;");
+tmpString = tmpString.replaceAll (">", "&gt;");
+tooltipText2.append ("; ");
+tooltipText2.append (tmpString);
+} else {
+tooltipText2.append ("; " + tmpString);
+}}}if (!Float.isNaN (feature.getScore ())) {
+var rng = (minmax == null) ? null : (minmax.get (feature.getType ()));
+if (rng != null && rng[0] != null && rng[0][0] != rng[0][1]) {
+tooltipText2.append (" Score=" + feature.getScore ());
+}}if (feature.getValue ("status") != null) {
+var status = feature.getValue ("status").toString ();
+if (status.length > 0) {
+tooltipText2.append ("; (" + feature.getValue ("status") + ")");
+}}}}if (feature.links != null) {
+if (this.linkImageURL != null) {
+tooltipText2.append (" <img src=\"" + this.linkImageURL + "\">");
+} else {
+for (var urlstring, $urlstring = feature.links.iterator (); $urlstring.hasNext () && ((urlstring = $urlstring.next ()) || true);) {
+try {
+for (var urllink, $urllink = 0, $$urllink = this.createLinksFrom (null, urlstring); $urllink < $$urllink.length && ((urllink = $$urllink[$urllink]) || true); $urllink++) {
+tooltipText2.append ("<br/> <a href=\"" + urllink[3] + "\" target=\"" + urllink[0] + "\">" + (urllink[0].toLowerCase ().equals (urllink[1].toLowerCase ()) ? urllink[0] : (urllink[0] + ":" + urllink[1])) + "</a></br>");
+}
+} catch (x) {
+if (Clazz_exceptionOf (x, Exception)) {
+System.err.println ("problem when creating links from " + urlstring);
+x.printStackTrace ();
+} else {
+throw x;
+}
+}
+}
+}}}
+}}, "StringBuffer,~N,java.util.List,java.util.Hashtable");
+Clazz_defineMethod (c$, "createLinksFrom", 
+function (seq, link) {
+var urlSets =  new java.util.ArrayList ();
+var uniques =  new java.util.ArrayList ();
+var urlLink =  new jalview.util.UrlLink (link);
+if (!urlLink.isValid ()) {
+System.err.println (urlLink.getInvalidMessage ());
+return null;
+}var target = urlLink.getTarget ();
+var label = urlLink.getLabel ();
+if (seq != null && urlLink.isDynamic ()) {
+var dbr = jalview.util.DBRefUtils.selectRefs (seq.getDBRef (),  Clazz_newArray (-1, [target]));
+var id = seq.getName ();
+var descr = seq.getDescription ();
+if (descr != null && descr.length < 1) {
+descr = null;
+}if (dbr != null) {
+for (var r = 0; r < dbr.length; r++) {
+if (id != null && dbr[r].getAccessionId ().equals (id)) {
+id = null;
+}var urls = urlLink.makeUrls (dbr[r].getAccessionId (), true);
+if (urls != null) {
+for (var u = 0; u < urls.length; u += 2) {
+var unq = urls[u] + "|" + urls[u + 1];
+if (!uniques.contains (unq)) {
+urlSets.add ( Clazz_newArray (-1, [target, label, urls[u], urls[u + 1]]));
+uniques.add (unq);
+}}
+}}
+}if (id != null) {
+var urls = urlLink.makeUrls (id, true);
+if (urls != null) {
+for (var u = 0; u < urls.length; u += 2) {
+var unq = urls[u] + "|" + urls[u + 1];
+if (!uniques.contains (unq)) {
+urlSets.add ( Clazz_newArray (-1, [target, label, urls[u], urls[u + 1]]));
+uniques.add (unq);
+}}
+}}if (descr != null && urlLink.getRegexReplace () != null) {
+var urls = urlLink.makeUrls (descr, true);
+if (urls != null) {
+for (var u = 0; u < urls.length; u += 2) {
+var unq = urls[u] + "|" + urls[u + 1];
+if (!uniques.contains (unq)) {
+urlSets.add ( Clazz_newArray (-1, [target, label, urls[u], urls[u + 1]]));
+uniques.add (unq);
+}}
+}}} else {
+var unq = label + "|" + urlLink.getUrl_prefix ();
+if (!uniques.contains (unq)) {
+uniques.add (unq);
+urlSets.add ( Clazz_newArray (-1, [target, label, null, urlLink.getUrl_prefix ()]));
+}}return urlSets.toArray ( Clazz_newArray (-1, []));
+}, "jalview.datamodel.SequenceI,~S");
+Clazz_defineMethod (c$, "createSequenceAnnotationReport", 
+function (tip, sequence, showDbRefs, showNpFeats, minmax) {
+this.createSequenceAnnotationReport (tip, sequence, showDbRefs, showNpFeats, true, minmax);
+}, "StringBuffer,jalview.datamodel.SequenceI,~B,~B,java.util.Hashtable");
+Clazz_defineMethod (c$, "createSequenceAnnotationReport", 
+function (tip, sequence, showDbRefs, showNpFeats, tableWrap, minmax) {
+var tmp;
+tip.append ("<i>");
+var maxWidth = 0;
+if (sequence.getDescription () != null) {
+tmp = sequence.getDescription ();
+tip.append ("<br>" + tmp);
+maxWidth = Math.max (maxWidth, tmp.length);
+}var ds = sequence;
+while (ds.getDatasetSequence () != null) {
+ds = ds.getDatasetSequence ();
+}
+var dbrefs = ds.getDBRef ();
+if (showDbRefs && dbrefs != null) {
+for (var i = 0; i < dbrefs.length; i++) {
+tip.append ("<br>");
+tmp = dbrefs[i].getSource () + " " + dbrefs[i].getAccessionId ();
+tip.append (tmp);
+maxWidth = Math.max (maxWidth, tmp.length);
+}
+}var features = sequence.getSequenceFeatures ();
+if (showNpFeats && features != null) {
+for (var i = 0; i < features.length; i++) {
+if (features[i].begin == 0 && features[i].end == 0) {
+var sz = -tip.length ();
+var tfeat =  new java.util.ArrayList ();
+tfeat.add (features[i]);
+this.appendFeatures (tip, 0, tfeat, minmax);
+sz += tip.length ();
+maxWidth = Math.max (maxWidth, sz);
+}}
+}if (tableWrap && maxWidth > 60) {
+tip.insert (0, "<table width=350 border=0><tr><td><i>");
+tip.append ("</i></td></tr></table>");
+}}, "StringBuffer,jalview.datamodel.SequenceI,~B,~B,~B,java.util.Hashtable");
+});
+Clazz_declarePackage ("jalview.util");
+Clazz_load (null, "jalview.util.UrlLink", ["jalview.jsdev.RegExp", "java.util.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.url_suffix = null;
+this.url_prefix = null;
+this.target = null;
+this.label = null;
+this.regexReplace = null;
+this.dynamic = false;
+this.invalidMessage = null;
+Clazz_instantialize (this, arguments);
+}, jalview.util, "UrlLink");
+Clazz_makeConstructor (c$, 
+function (link) {
+var sep = link.indexOf ("|");
+var psqid = link.indexOf ("$SEQUENCE_ID");
+if (psqid > -1) {
+this.dynamic = true;
+var p = sep;
+do {
+sep = p;
+p = link.indexOf ("|", sep + 1);
+} while (p > sep && p < psqid);
+this.label = link.substring (0, sep);
+if (this.label.indexOf ("|") > -1) {
+this.target = this.label.substring (0, this.label.indexOf ("|"));
+} else if (this.label.indexOf (" ") > 2) {
+this.target = this.label.substring (0, this.label.indexOf (" "));
+} else {
+this.target = this.label;
+}this.url_prefix = link.substring (sep + 1, psqid);
+if (link.indexOf ("$SEQUENCE_ID=/") == psqid && (p = link.indexOf ("/=$", psqid + 14)) > psqid + 14) {
+this.url_suffix = link.substring (p + 3);
+this.regexReplace = link.substring (psqid + 14, p);
+try {
+var rg = jalview.jsdev.RegExp.perlCode ("/" + this.regexReplace + "/");
+if (rg == null) {
+this.invalidMessage = "Invalid Regular Expression : '" + this.regexReplace + "'\n";
+}} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+this.invalidMessage = "Invalid Regular Expression : '" + this.regexReplace + "'\n";
+} else {
+throw e;
+}
+}
+} else {
+this.regexReplace = null;
+if (link.indexOf ("$SEQUENCE_ID$") == psqid) {
+this.url_suffix = link.substring (psqid + 13);
+this.regexReplace = null;
+} else {
+this.invalidMessage = "Warning: invalid regex structure for URL link : " + link;
+}}} else {
+this.target = link.substring (0, sep);
+this.label = link.substring (0, sep = link.lastIndexOf ("|"));
+this.url_prefix = link.substring (sep + 1);
+this.regexReplace = null;
+this.url_suffix = null;
+}}, "~S");
+Clazz_defineMethod (c$, "getUrl_suffix", 
+function () {
+return this.url_suffix;
+});
+Clazz_defineMethod (c$, "getUrl_prefix", 
+function () {
+return this.url_prefix;
+});
+Clazz_defineMethod (c$, "getTarget", 
+function () {
+return this.target;
+});
+Clazz_defineMethod (c$, "getLabel", 
+function () {
+return this.label;
+});
+Clazz_defineMethod (c$, "getRegexReplace", 
+function () {
+return this.regexReplace;
+});
+Clazz_defineMethod (c$, "getInvalidMessage", 
+function () {
+return this.invalidMessage;
+});
+Clazz_defineMethod (c$, "isValid", 
+function () {
+return this.invalidMessage == null;
+});
+Clazz_defineMethod (c$, "makeUrls", 
+function (idstring, onlyIfMatches) {
+if (this.dynamic) {
+if (this.regexReplace != null) {
+var rg = jalview.jsdev.RegExp.perlCode ("/" + this.regexReplace + "/");
+if (rg.search (idstring)) {
+var ns = rg.numSubs ();
+if (ns == 0) {
+return  Clazz_newArray (-1, [rg.stringMatchedI (ns), this.url_prefix + rg.stringMatched () + this.url_suffix]);
+} else {
+for (var s = 0; s <= rg.numSubs (); s++) {
+System.err.println ("Sub " + s + " : " + rg.matchedFromI (s) + " : " + rg.matchedToI (s) + " : '" + rg.stringMatchedI (s) + "'");
+}
+var subs =  new java.util.Vector ();
+var s = 0;
+while (s <= ns) {
+if (s + 1 <= ns && rg.matchedToI (s) > -1 && rg.matchedToI (s + 1) > -1 && rg.matchedToI (s + 1) < rg.matchedToI (s)) {
+var r = s + 1;
+var mtch = "";
+while (r <= ns && rg.matchedToI (r) <= rg.matchedToI (s)) {
+if (rg.matchedFromI (r) > -1) {
+mtch += rg.stringMatchedI (r);
+}r++;
+}
+if (mtch.length > 0) {
+subs.addElement (mtch);
+subs.addElement (this.url_prefix + mtch + this.url_suffix);
+}s = r;
+} else {
+if (rg.matchedFromI (s) > -1) {
+subs.addElement (rg.stringMatchedI (s));
+subs.addElement (this.url_prefix + rg.stringMatchedI (s) + this.url_suffix);
+}s++;
+}}
+var res =  new Array (subs.size ());
+for (var r = 0, rs = subs.size (); r < rs; r++) {
+res[r] = subs.elementAt (r);
+}
+subs.removeAllElements ();
+return res;
+}}if (onlyIfMatches) {
+return null;
+}}if (idstring.indexOf ("|") > -1) {
+idstring = idstring.substring (idstring.lastIndexOf ("|") + 1);
+}return  Clazz_newArray (-1, [idstring, this.url_prefix + idstring + this.url_suffix]);
+} else {
+return  Clazz_newArray (-1, ["", this.url_prefix]);
+}}, "~S,~B");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return this.label + "|" + this.url_prefix + (this.dynamic ? ("$SEQUENCE_ID" + ((this.regexReplace != null) ? "=" + this.regexReplace + "=$" : "$")) : "") + ((this.url_suffix == null) ? "" : this.url_suffix);
+});
+Clazz_defineMethod (c$, "isDynamic", 
+function () {
+return this.dynamic;
+});
+Clazz_defineMethod (c$, "setLabel", 
+function (newlabel) {
+this.label = newlabel;
+}, "~S");
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel"], "jalview.appletgui.IdCanvas", ["awt2swing.Util", "jalview.appletgui.AnnotationLabels", "$.AnnotationPanel", "$.PaintRefresher", "java.awt.Color", "$.Font"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.av = null;
+this.showScores = true;
+this.maxIdLength = -1;
+this.maxIdStr = null;
+this.image = null;
+this.gg = null;
+this.imgHeight = 0;
+this.$fastPaint = false;
+this.searchResults = null;
+this.avcharHeight = 0;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "IdCanvas", awt2swing.Panel);
+Clazz_makeConstructor (c$, 
+function (av) {
+Clazz_superConstructor (this, jalview.appletgui.IdCanvas, []);
+this.setLayout (null);
+this.av = av;
+jalview.appletgui.PaintRefresher.Register (this, av.getSequenceSetId ());
+}, "jalview.appletgui.AlignViewport");
+Clazz_defineMethod (c$, "drawIdString", 
+function (gg, hiddenRows, s, i, starty, ypos) {
+var charHeight = this.av.getCharHeight ();
+if (this.searchResults != null && this.searchResults.contains (s)) {
+gg.setColor (java.awt.Color.black);
+gg.fillRect (0, ((i - starty) * charHeight) + ypos, this.getSize ().width, charHeight);
+gg.setColor (java.awt.Color.white);
+} else if (this.av.getSelectionGroup () != null && this.av.getSelectionGroup ().getSequences (null).contains (s)) {
+gg.setColor (java.awt.Color.lightGray);
+gg.fillRect (0, ((i - starty) * charHeight) + ypos, this.getSize ().width, charHeight);
+gg.setColor (java.awt.Color.white);
+} else {
+gg.setColor (this.av.getSequenceColour (s));
+gg.fillRect (0, ((i - starty) * charHeight) + ypos, this.getSize ().width, charHeight);
+gg.setColor (java.awt.Color.black);
+}awt2swing.Util.drawString (gg, s.getDisplayId (this.av.getShowJVSuffix ()), 0, ((i - starty) * charHeight) + ypos + charHeight - (Clazz_doubleToInt (charHeight / 5)));
+if (hiddenRows) {
+this.drawMarker (i, starty, ypos);
+}}, "java.awt.Graphics,~B,jalview.datamodel.SequenceI,~N,~N,~N");
+Clazz_defineMethod (c$, "fastPaint", 
+function (vertical) {
+if (this.gg == null) {
+this.repaint ();
+return;
+}this.gg.copyArea (0, 0, this.getSize ().width, this.imgHeight, 0, -vertical * this.av.getCharHeight ());
+var ss = this.av.startSeq;
+var es = this.av.endSeq;
+var transY = 0;
+if (vertical > 0) {
+ss = es - vertical;
+if (ss < this.av.startSeq) {
+ss = this.av.startSeq;
+} else {
+transY = this.imgHeight - vertical * this.av.getCharHeight ();
+}} else if (vertical < 0) {
+es = ss - vertical;
+if (es > this.av.endSeq) {
+es = this.av.endSeq;
+}}this.gg.translate (0, transY);
+this.drawIds (ss, es);
+this.gg.translate (0, -transY);
+this.$fastPaint = true;
+this.repaint ();
+}, "~N");
+Clazz_overrideMethod (c$, "paintComponent", 
+function (g) {
+if (this.getSize ().height < 0 || this.getSize ().width < 0) {
+return;
+}if (this.$fastPaint) {
+this.$fastPaint = false;
+g.drawImage (this.image, 0, 0, this);
+return;
+}this.imgHeight = this.getSize ().height;
+this.imgHeight -= this.imgHeight % this.av.getCharHeight ();
+if (this.imgHeight < 1) {
+return;
+}if (this.image == null || this.imgHeight != this.image.getHeight (this)) {
+this.image = this.createImage (this.getSize ().width, this.imgHeight);
+this.gg = this.image.getGraphics ();
+this.gg.setFont (this.av.getFont ());
+}this.gg.setColor (java.awt.Color.white);
+var italic =  new java.awt.Font (this.av.getFont ().getName (), 2, this.av.getFont ().getSize ());
+this.gg.setFont (italic);
+this.gg.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+this.drawIds (this.av.startSeq, this.av.endSeq);
+g.drawImage (this.image, 0, 0, this);
+}, "java.awt.Graphics");
+Clazz_defineMethod (c$, "drawIds", 
+function (starty, endy) {
+var italic =  new java.awt.Font (this.av.getFont ().getName (), 2, this.av.getFont ().getSize ());
+this.avcharHeight = this.av.getCharHeight ();
+this.gg.setFont (italic);
+var currentColor = java.awt.Color.white;
+var currentTextColor = java.awt.Color.black;
+var doHiddenCheck = this.av.isDisplayReferenceSeq () || this.av.hasHiddenRows ();
+var hiddenRows = this.av.hasHiddenRows () && this.av.getShowHiddenMarkers ();
+if (this.av.getWrapAlignment ()) {
+var maxwidth = this.av.getAlignment ().getWidth ();
+var alheight = this.av.getAlignment ().getHeight ();
+if (this.av.hasHiddenColumns ()) {
+maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;
+}var annotationHeight = 0;
+var labels = null;
+if (this.av.isShowAnnotation ()) {
+var ap =  new jalview.appletgui.AnnotationPanel (this.av);
+annotationHeight = ap.adjustPanelHeight ();
+labels =  new jalview.appletgui.AnnotationLabels (this.av);
+}var hgap = this.avcharHeight;
+if (this.av.getScaleAboveWrapped ()) {
+hgap += this.avcharHeight;
+}var cHeight = alheight * this.avcharHeight + hgap + annotationHeight;
+var rowSize = this.av.getEndRes () - this.av.getStartRes ();
+for (var ypos = hgap, row = this.av.startRes; (ypos <= this.getSize ().height) && (row < maxwidth); ypos += cHeight, row += rowSize) {
+for (var i = starty; i < alheight; i++) {
+var s = this.av.getAlignment ().getSequenceAt (i);
+this.gg.setFont (italic);
+if (doHiddenCheck) {
+this.setHiddenFont (s);
+}this.drawIdString (this.gg, hiddenRows, s, i, 0, ypos);
+}
+if (labels != null) {
+this.gg.translate (0, ypos + (alheight * this.avcharHeight));
+labels.drawComponent (this.gg, this.getSize ().width);
+this.gg.translate (0, -ypos - (alheight * this.avcharHeight));
+}}
+} else {
+var seq;
+for (var i = starty; i < endy; i++) {
+seq = this.av.getAlignment ().getSequenceAt (i);
+if (seq == null) {
+continue;
+}this.gg.setFont (italic);
+if (doHiddenCheck) {
+this.setHiddenFont (seq);
+}if ((this.searchResults != null) && this.searchResults.contains (seq)) {
+currentColor = java.awt.Color.black;
+currentTextColor = java.awt.Color.white;
+} else if ((this.av.getSelectionGroup () != null) && this.av.getSelectionGroup ().getSequences (null).contains (seq)) {
+currentColor = java.awt.Color.lightGray;
+currentTextColor = java.awt.Color.black;
+} else {
+currentColor = this.av.getSequenceColour (seq);
+currentTextColor = java.awt.Color.black;
+}this.gg.setColor (currentColor);
+this.gg.fillRect (0, (i - starty) * this.avcharHeight, this.getSize ().width, this.avcharHeight);
+this.gg.setColor (currentTextColor);
+awt2swing.Util.drawString (this.gg, seq.getDisplayId (this.av.getShowJVSuffix ()), 0, (((i - starty) * this.avcharHeight) + this.avcharHeight) - (Clazz_doubleToInt (this.avcharHeight / 5)));
+if (hiddenRows) {
+this.drawMarker (i, starty, 0);
+}}
+}}, "~N,~N");
+Clazz_defineMethod (c$, "setHighlighted", 
+function (list) {
+this.searchResults = list;
+this.repaint ();
+}, "java.util.List");
+Clazz_defineMethod (c$, "drawMarker", 
+function (i, starty, yoffset) {
+var hseqs = this.av.getAlignment ().getHiddenSequences ().hiddenSequences;
+var hSize = hseqs.length;
+var hiddenIndex = i;
+var lastIndex = i - 1;
+var nextIndex = i + 1;
+for (var j = 0; j < hSize; j++) {
+if (hseqs[j] != null) {
+if (j - 1 < hiddenIndex) {
+hiddenIndex++;
+}if (j - 1 < lastIndex) {
+lastIndex++;
+}if (j - 1 < nextIndex) {
+nextIndex++;
+}}}
+var below = (hiddenIndex > lastIndex + 1);
+var above = (nextIndex > hiddenIndex + 1);
+this.gg.setColor (java.awt.Color.blue);
+if (below) {
+this.gg.fillPolygon ( Clazz_newIntArray (-1, [this.getSize ().width - this.avcharHeight, this.getSize ().width - this.avcharHeight, this.getSize ().width]),  Clazz_newIntArray (-1, [(i - starty) * this.avcharHeight + yoffset, (i - starty) * this.avcharHeight + yoffset + Clazz_doubleToInt (this.avcharHeight / 4), (i - starty) * this.avcharHeight + yoffset]), 3);
+}if (above) {
+this.gg.fillPolygon ( Clazz_newIntArray (-1, [this.getSize ().width - this.avcharHeight, this.getSize ().width - this.avcharHeight, this.getSize ().width]),  Clazz_newIntArray (-1, [(i - starty + 1) * this.avcharHeight + yoffset, (i - starty + 1) * this.avcharHeight + yoffset - Clazz_doubleToInt (this.avcharHeight / 4), (i - starty + 1) * this.avcharHeight + yoffset]), 3);
+}}, "~N,~N,~N");
+Clazz_defineMethod (c$, "setHiddenFont", 
+function (seq) {
+var bold =  new java.awt.Font (this.av.getFont ().getName (), 1, this.av.getFont ().getSize ());
+if (this.av.isHiddenRepSequence (seq)) {
+this.gg.setFont (bold);
+return true;
+}return false;
+}, "jalview.datamodel.SequenceI");
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.IdwidthAdjuster", ["java.awt.Color", "$.Toolkit"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.active = false;
+this.oldX = 0;
+this.image = null;
+this.ap = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "IdwidthAdjuster", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
+Clazz_makeConstructor (c$, 
+function (ap) {
+Clazz_superConstructor (this, jalview.appletgui.IdwidthAdjuster, []);
+this.setName ("IdwidthAdjuster");
+this.setLayout (null);
+this.ap = ap;
+var url = this.getClass ().getResource ("/images/idwidth.gif");
+if (url != null) {
+this.image = java.awt.Toolkit.getDefaultToolkit ().getImage (url);
+}this.addMouseListener (this);
+this.addMouseMotionListener (this);
+}, "jalview.appletgui.AlignmentPanel");
+Clazz_overrideMethod (c$, "mousePressed", 
+function (evt) {
+this.oldX = evt.getX ();
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (evt) {
+this.active = false;
+this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (evt) {
+this.active = true;
+this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (evt) {
+this.active = false;
+this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseDragged", 
+function (evt) {
+this.active = true;
+var d = this.ap.idPanel.idCanvas.getSize ();
+var dif = evt.getX () - this.oldX;
+var newWidth = d.width + dif;
+if (newWidth > 20 || dif > 0) {
+this.ap.setIdWidth (newWidth, d.height);
+this.setSize (newWidth, this.getSize ().height);
+this.oldX = evt.getX ();
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseMoved", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "PaintComponent", 
+function (g) {
+g.setColor (java.awt.Color.white);
+g.fillRect (0, 0, this.getSize ().width, this.getSize ().height);
+if (this.active) {
+if (this.image != null) {
+g.drawImage (this.image, this.getSize ().width - 20, 2, this);
+}}}, "java.awt.Graphics");
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.ScalePanel", ["awt2swing.MenuItem", "$.PopupMenu", "$.Util", "jalview.datamodel.SequenceGroup", "jalview.util.MessageManager", "java.awt.Color", "java.awt.event.ActionListener"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.offy = 4;
+this.$width = 0;
+this.av = null;
+this.ap = null;
+this.stretchingGroup = false;
+this.min = 0;
+this.max = 0;
+this.mouseDragging = false;
+this.reveal = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "ScalePanel", awt2swing.Panel, [java.awt.event.MouseMotionListener, java.awt.event.MouseListener]);
+Clazz_makeConstructor (c$, 
+function (av, ap) {
+Clazz_superConstructor (this, jalview.appletgui.ScalePanel, []);
+this.setName ("scalePanel");
+this.setLayout (null);
+this.av = av;
+this.ap = ap;
+this.addMouseListener (this);
+this.addMouseMotionListener (this);
+}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+Clazz_overrideMethod (c$, "mousePressed", 
+function (evt) {
+var x = (Clazz_doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
+var res;
+if (this.av.hasHiddenColumns ()) {
+res = this.av.getColumnSelection ().adjustForHiddenColumns (x);
+} else {
+res = x;
+}this.min = res;
+this.max = res;
+if ((evt.getModifiers () & 4) == 4) {
+var pop =  new awt2swing.PopupMenu ();
+if (this.reveal != null) {
+var item =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.reveal"));
+item.addActionListener (((Clazz_isClassDefined ("jalview.appletgui.ScalePanel$1") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$1$ ()), Clazz_innerTypeInstance (jalview.appletgui.ScalePanel$1, this, null)));
+pop.add (item);
+if (this.av.getColumnSelection ().hasManyHiddenColumns ()) {
+item =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("action.reveal_all"));
+item.addActionListener (((Clazz_isClassDefined ("jalview.appletgui.ScalePanel$2") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$2$ ()), Clazz_innerTypeInstance (jalview.appletgui.ScalePanel$2, this, null)));
+pop.add (item);
+}this.add (pop);
+pop.show (this, evt.getX (), evt.getY ());
+} else if (this.av.getColumnSelection ().contains (res)) {
+var item =  new awt2swing.MenuItem (jalview.util.MessageManager.getString ("label.hide_columns"));
+item.addActionListener (((Clazz_isClassDefined ("jalview.appletgui.ScalePanel$3") ? 0 : jalview.appletgui.ScalePanel.$ScalePanel$3$ ()), Clazz_innerTypeInstance (jalview.appletgui.ScalePanel$3, this, Clazz_cloneFinals ("res", res))));
+pop.add (item);
+this.add (pop);
+pop.show (this, evt.getX (), evt.getY ());
+}} else {
+if (!evt.isControlDown () && !evt.isShiftDown ()) {
+this.av.getColumnSelection ().clear ();
+}this.av.getColumnSelection ().addElement (res);
+var sg =  new jalview.datamodel.SequenceGroup ();
+for (var i = 0; i < this.av.getAlignment ().getSequences ().size (); i++) {
+sg.addSequence (this.av.getAlignment ().getSequenceAt (i), false);
+}
+sg.setStartRes (res);
+sg.setEndRes (res);
+this.av.setSelectionGroup (sg);
+if (evt.isShiftDown ()) {
+var min = Math.min (this.av.getColumnSelection ().getMin (), res);
+var max = Math.max (this.av.getColumnSelection ().getMax (), res);
+for (var i = min; i < max; i++) {
+this.av.getColumnSelection ().addElement (i);
+}
+sg.setStartRes (min);
+sg.setEndRes (max);
+}}this.ap.paintAlignment (true);
+this.av.sendSelection ();
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (evt) {
+this.mouseDragging = false;
+var res = (Clazz_doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
+if (res > this.av.getAlignment ().getWidth ()) {
+res = this.av.getAlignment ().getWidth () - 1;
+}if (this.av.hasHiddenColumns ()) {
+res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
+}if (!this.stretchingGroup) {
+this.ap.paintAlignment (false);
+return;
+}var sg = this.av.getSelectionGroup ();
+if (res > sg.getStartRes ()) {
+sg.setEndRes (res);
+} else if (res < sg.getStartRes ()) {
+sg.setStartRes (res);
+}this.stretchingGroup = false;
+this.ap.paintAlignment (false);
+this.av.sendSelection ();
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseDragged", 
+function (evt) {
+this.mouseDragging = true;
+var res = (Clazz_doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
+if (res < 0) {
+res = 0;
+}if (this.av.hasHiddenColumns ()) {
+res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
+}if (res > this.av.getAlignment ().getWidth ()) {
+res = this.av.getAlignment ().getWidth () - 1;
+}if (res < this.min) {
+this.min = res;
+}if (res > this.max) {
+this.max = res;
+}var sg = this.av.getSelectionGroup ();
+if (sg != null) {
+this.stretchingGroup = true;
+if (!this.av.getColumnSelection ().contains (res)) {
+this.av.getColumnSelection ().addElement (res);
+}if (res > sg.getStartRes ()) {
+sg.setEndRes (res);
+}if (res < sg.getStartRes ()) {
+sg.setStartRes (res);
+}var col;
+for (var i = this.min; i <= this.max; i++) {
+col = this.av.getColumnSelection ().adjustForHiddenColumns (i);
+if ((col < sg.getStartRes ()) || (col > sg.getEndRes ())) {
+this.av.getColumnSelection ().removeElement (col);
+} else {
+this.av.getColumnSelection ().addElement (col);
+}}
+this.ap.paintAlignment (false);
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (evt) {
+if (this.mouseDragging) {
+this.ap.seqPanel.scrollCanvas (null);
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (evt) {
+if (this.mouseDragging) {
+this.ap.seqPanel.scrollCanvas (evt);
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseMoved", 
+function (evt) {
+if (!this.av.hasHiddenColumns ()) {
+return;
+}var res = (Clazz_doubleToInt (evt.getX () / this.av.getCharWidth ())) + this.av.getStartRes ();
+res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
+this.reveal = null;
+for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
+if (res + 1 == region[0] || res - 1 == region[1]) {
+this.reveal = region;
+break;
+}}
+this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "paintComponent", 
+function (g) {
+if (this.av.getWrapAlignment ()) return;
+this.drawScale (g, this.av.getStartRes (), this.av.getEndRes (), this.getSize ().width, this.getSize ().height);
+}, "java.awt.Graphics");
+Clazz_defineMethod (c$, "drawScale", 
+function (gg, startx, endx, width, height) {
+gg.setFont (this.av.getFont ());
+gg.setColor (java.awt.Color.white);
+gg.fillRect (0, 0, width, height);
+gg.setColor (java.awt.Color.black);
+var cs = this.av.getColumnSelection ();
+gg.setColor ( new java.awt.Color (220, 0, 0));
+var avcharWidth = this.av.getCharWidth ();
+var avcharHeight = this.av.getCharHeight ();
+for (var i = 0; i < cs.size (); i++) {
+var sel = cs.columnAt (i);
+if (this.av.hasHiddenColumns ()) {
+sel = this.av.getColumnSelection ().findColumnPosition (sel);
+}if ((sel >= startx) && (sel <= endx)) {
+gg.fillRect ((sel - startx) * avcharWidth, 0, avcharWidth, this.getSize ().height);
+}}
+gg.setColor (java.awt.Color.black);
+var scalestartx = (Clazz_doubleToInt (startx / 10)) * 10;
+var fm = gg.getFontMetrics (this.av.getFont ());
+var y = avcharHeight - fm.getDescent ();
+if ((scalestartx % 10) == 0) {
+scalestartx += 5;
+}var string;
+var maxX = 0;
+for (var i = scalestartx; i < endx; i += 5) {
+if ((i % 10) == 0) {
+string = String.valueOf (this.av.getColumnSelection ().adjustForHiddenColumns (i));
+if ((i - startx - 1) * avcharWidth > maxX) {
+awt2swing.Util.drawString (gg, string, (i - startx - 1) * avcharWidth, y);
+maxX = (i - startx + 1) * avcharWidth + fm.stringWidth (string);
+}gg.drawLine (((i - startx - 1) * avcharWidth) + (Clazz_doubleToInt (avcharWidth / 2)), y + 2, ((i - startx - 1) * avcharWidth) + (Clazz_doubleToInt (avcharWidth / 2)), y + (fm.getDescent () * 2));
+} else {
+gg.drawLine (((i - startx - 1) * avcharWidth) + (Clazz_doubleToInt (avcharWidth / 2)), y + fm.getDescent (), ((i - startx - 1) * avcharWidth) + (Clazz_doubleToInt (avcharWidth / 2)), y + (fm.getDescent () * 2));
+}}
+if (this.av.hasHiddenColumns ()) {
+gg.setColor (java.awt.Color.blue);
+var res;
+if (this.av.getShowHiddenMarkers ()) {
+for (var i = 0; i < this.av.getColumnSelection ().getHiddenColumns ().size (); i++) {
+res = this.av.getColumnSelection ().findHiddenRegionPosition (i) - startx;
+if (res < 0 || res > endx - scalestartx) {
+continue;
+}gg.fillPolygon ( Clazz_newIntArray (-1, [res * avcharWidth - Clazz_doubleToInt (avcharHeight / 4), res * avcharWidth + Clazz_doubleToInt (avcharHeight / 4), res * avcharWidth]),  Clazz_newIntArray (-1, [y - Clazz_doubleToInt (avcharHeight / 2), y - Clazz_doubleToInt (avcharHeight / 2), y + 8]), 3);
+}
+}if (this.reveal != null && this.reveal[0] > startx && this.reveal[0] < endx) {
+awt2swing.Util.drawString (gg, jalview.util.MessageManager.getString ("label.reveal_columns"), this.reveal[0] * avcharWidth, 0);
+}}}, "java.awt.Graphics,~N,~N,~N,~N");
+c$.$ScalePanel$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "ScalePanel$1", null, java.awt.event.ActionListener);
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.ScalePanel"].av.showColumn (this.b$["jalview.appletgui.ScalePanel"].reveal[0]);
+this.b$["jalview.appletgui.ScalePanel"].reveal = null;
+this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);
+if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {
+this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+};
+c$.$ScalePanel$2$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "ScalePanel$2", null, java.awt.event.ActionListener);
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.ScalePanel"].av.showAllHiddenColumns ();
+this.b$["jalview.appletgui.ScalePanel"].reveal = null;
+this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);
+if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {
+this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+};
+c$.$ScalePanel$3$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "ScalePanel$3", null, java.awt.event.ActionListener);
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.ScalePanel"].av.hideColumns (this.f$.res, this.f$.res);
+if (this.b$["jalview.appletgui.ScalePanel"].av.getSelectionGroup () != null && this.b$["jalview.appletgui.ScalePanel"].av.getSelectionGroup ().getSize () == this.b$["jalview.appletgui.ScalePanel"].av.getAlignment ().getHeight ()) {
+this.b$["jalview.appletgui.ScalePanel"].av.setSelectionGroup (null);
+}this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment (true);
+if (this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel != null) {
+this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage ();
+}}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "jalview.structure.SelectionListener", "$.SequenceListener", "java.awt.event.MouseListener", "$.MouseMotionListener", "java.lang.Thread"], "jalview.appletgui.SeqPanel", ["jalview.api.AlignViewportI", "jalview.appletgui.APopupMenu", "$.AlignViewport", "$.PaintRefresher", "$.SeqCanvas", "$.SliderPanel", "$.Tooltip", "jalview.commands.EditCommand", "jalview.datamodel.ColumnSelection", "$.SearchResults", "$.SequenceGroup", "jalview.schemes.ResidueProperties", "jalview.structure.StructureSelectionManager", "jalview.util.Comparison", "$.MappingUtils", "$.MessageManager", "java.awt.BorderLayout", "$.Font", "java.lang.StringBuffer", "$.StringBuilder", "java.util.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.seqCanvas = null;
+this.ap = null;
+this.lastres = 0;
+this.startseq = 0;
+this.av = null;
+this.seqEditOccurred = false;
+this.scrollThread = null;
+this.mouseDragging = false;
+this.editingSeqs = false;
+this.groupEditing = false;
+this.oldSeq = -1;
+this.changeEndSeq = false;
+this.changeStartSeq = false;
+this.changeEndRes = false;
+this.changeStartRes = false;
+this.stretchGroup = null;
+this.keyboardNo1 = null;
+this.keyboardNo2 = null;
+this.mouseWheelPressed = false;
+this.lastMousePress = null;
+this.editCommand = null;
+this.ssm = null;
+this.startWrapBlock = -1;
+this.wrappedBlock = -1;
+this.lastMessage = null;
+this.tooltip = null;
+if (!Clazz_isClassDefined ("jalview.appletgui.SeqPanel.ScrollThread")) {
+jalview.appletgui.SeqPanel.$SeqPanel$ScrollThread$ ();
+}
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "SeqPanel", awt2swing.Panel, [java.awt.event.MouseMotionListener, java.awt.event.MouseListener, jalview.structure.SequenceListener, jalview.structure.SelectionListener]);
+Clazz_makeConstructor (c$, 
+function (avp, p) {
+Clazz_superConstructor (this, jalview.appletgui.SeqPanel, []);
+this.av = avp;
+this.setName ("seqPanel");
+this.seqCanvas =  new jalview.appletgui.SeqCanvas (avp);
+this.setLayout ( new java.awt.BorderLayout ());
+this.add (this.seqCanvas);
+this.ap = p;
+this.seqCanvas.addMouseMotionListener (this);
+this.seqCanvas.addMouseListener (this);
+this.ssm = jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.av.applet);
+this.ssm.addStructureViewerListener (this);
+this.ssm.addSelectionListener (this);
+this.seqCanvas.repaint ();
+}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+Clazz_defineMethod (c$, "endEditing", 
+function () {
+if (this.editCommand != null && this.editCommand.getSize () > 0) {
+this.ap.alignFrame.addHistoryItem (this.editCommand);
+this.av.firePropertyChange ("alignment", null, this.av.getAlignment ().getSequences ());
+}this.startseq = -1;
+this.lastres = -1;
+this.editingSeqs = false;
+this.groupEditing = false;
+this.keyboardNo1 = null;
+this.keyboardNo2 = null;
+this.editCommand = null;
+});
+Clazz_defineMethod (c$, "setCursorRow", 
+function () {
+this.seqCanvas.cursorY = this.getKeyboardNo1 () - 1;
+this.scrollToVisible ();
+});
+Clazz_defineMethod (c$, "setCursorColumn", 
+function () {
+this.seqCanvas.cursorX = this.getKeyboardNo1 () - 1;
+this.scrollToVisible ();
+});
+Clazz_defineMethod (c$, "setCursorRowAndColumn", 
+function () {
+if (this.keyboardNo2 == null) {
+this.keyboardNo2 =  new StringBuffer ();
+} else {
+this.seqCanvas.cursorX = this.getKeyboardNo1 () - 1;
+this.seqCanvas.cursorY = this.getKeyboardNo2 () - 1;
+this.scrollToVisible ();
+}});
+Clazz_defineMethod (c$, "setCursorPosition", 
+function () {
+var sequence = this.av.getAlignment ().getSequenceAt (this.seqCanvas.cursorY);
+this.seqCanvas.cursorX = sequence.findIndex (this.getKeyboardNo1 ()) - 1;
+this.scrollToVisible ();
+});
+Clazz_defineMethod (c$, "moveCursor", 
+function (dx, dy) {
+this.seqCanvas.cursorX += dx;
+this.seqCanvas.cursorY += dy;
+if (this.av.hasHiddenColumns () && !this.av.getColumnSelection ().isVisible (this.seqCanvas.cursorX)) {
+var original = this.seqCanvas.cursorX - dx;
+var maxWidth = this.av.getAlignment ().getWidth ();
+while (!this.av.getColumnSelection ().isVisible (this.seqCanvas.cursorX) && this.seqCanvas.cursorX < maxWidth && this.seqCanvas.cursorX > 0) {
+this.seqCanvas.cursorX += dx;
+}
+if (this.seqCanvas.cursorX >= maxWidth || !this.av.getColumnSelection ().isVisible (this.seqCanvas.cursorX)) {
+this.seqCanvas.cursorX = original;
+}}this.scrollToVisible ();
+}, "~N,~N");
+Clazz_defineMethod (c$, "scrollToVisible", 
+function () {
+if (this.seqCanvas.cursorX < 0) {
+this.seqCanvas.cursorX = 0;
+} else if (this.seqCanvas.cursorX > this.av.getAlignment ().getWidth () - 1) {
+this.seqCanvas.cursorX = this.av.getAlignment ().getWidth () - 1;
+}if (this.seqCanvas.cursorY < 0) {
+this.seqCanvas.cursorY = 0;
+} else if (this.seqCanvas.cursorY > this.av.getAlignment ().getHeight () - 1) {
+this.seqCanvas.cursorY = this.av.getAlignment ().getHeight () - 1;
+}this.endEditing ();
+if (this.av.getWrapAlignment ()) {
+this.ap.scrollToWrappedVisible (this.seqCanvas.cursorX);
+} else {
+while (this.seqCanvas.cursorY < this.av.startSeq) {
+this.ap.scrollUp (true);
+}
+while (this.seqCanvas.cursorY + 1 > this.av.endSeq) {
+this.ap.scrollUp (false);
+}
+while (this.seqCanvas.cursorX < this.av.getColumnSelection ().adjustForHiddenColumns (this.av.startRes)) {
+if (!this.ap.scrollRight (false)) {
+break;
+}}
+while (this.seqCanvas.cursorX > this.av.getColumnSelection ().adjustForHiddenColumns (this.av.endRes)) {
+if (!this.ap.scrollRight (true)) {
+break;
+}}
+}this.setStatusMessage (this.av.getAlignment ().getSequenceAt (this.seqCanvas.cursorY), this.seqCanvas.cursorX, this.seqCanvas.cursorY);
+this.seqCanvas.repaint ();
+});
+Clazz_defineMethod (c$, "setSelectionAreaAtCursor", 
+function (topLeft) {
+var sequence = this.av.getAlignment ().getSequenceAt (this.seqCanvas.cursorY);
+if (this.av.getSelectionGroup () != null) {
+var sg = this.av.getSelectionGroup ();
+var min = this.av.getAlignment ().getHeight ();
+var max = 0;
+for (var i = 0; i < sg.getSize (); i++) {
+var index = this.av.getAlignment ().findIndex (sg.getSequenceAt (i));
+if (index > max) {
+max = index;
+}if (index < min) {
+min = index;
+}}
+max++;
+if (topLeft) {
+sg.setStartRes (this.seqCanvas.cursorX);
+if (sg.getEndRes () < this.seqCanvas.cursorX) {
+sg.setEndRes (this.seqCanvas.cursorX);
+}min = this.seqCanvas.cursorY;
+} else {
+sg.setEndRes (this.seqCanvas.cursorX);
+if (sg.getStartRes () > this.seqCanvas.cursorX) {
+sg.setStartRes (this.seqCanvas.cursorX);
+}max = this.seqCanvas.cursorY + 1;
+}if (min > max) {
+this.av.setSelectionGroup (null);
+} else {
+sg.clear ();
+for (var i = min; i < max; i++) {
+sg.addSequence (this.av.getAlignment ().getSequenceAt (i), false);
+}
+}}if (this.av.getSelectionGroup () == null) {
+var sg =  new jalview.datamodel.SequenceGroup ();
+sg.setStartRes (this.seqCanvas.cursorX);
+sg.setEndRes (this.seqCanvas.cursorX);
+sg.addSequence (sequence, false);
+this.av.setSelectionGroup (sg);
+}this.ap.paintAlignment (false);
+this.av.sendSelection ();
+}, "~B");
+Clazz_defineMethod (c$, "insertGapAtCursor", 
+function (group) {
+this.groupEditing = group;
+this.startseq = this.seqCanvas.cursorY;
+this.lastres = this.seqCanvas.cursorX;
+this.editSequence (true, this.seqCanvas.cursorX + this.getKeyboardNo1 ());
+this.endEditing ();
+}, "~B");
+Clazz_defineMethod (c$, "deleteGapAtCursor", 
+function (group) {
+this.groupEditing = group;
+this.startseq = this.seqCanvas.cursorY;
+this.lastres = this.seqCanvas.cursorX + this.getKeyboardNo1 ();
+this.editSequence (false, this.seqCanvas.cursorX);
+this.endEditing ();
+}, "~B");
+Clazz_defineMethod (c$, "numberPressed", 
+function (value) {
+if (this.keyboardNo1 == null) {
+this.keyboardNo1 =  new StringBuffer ();
+}if (this.keyboardNo2 != null) {
+this.keyboardNo2.append (value);
+} else {
+this.keyboardNo1.append (value);
+}}, "~S");
+Clazz_defineMethod (c$, "getKeyboardNo1", 
+function () {
+try {
+if (this.keyboardNo1 != null) {
+var value = Integer.parseInt (this.keyboardNo1.toString ());
+this.keyboardNo1 = null;
+return value;
+}} catch (x) {
+if (Clazz_exceptionOf (x, Exception)) {
+} else {
+throw x;
+}
+}
+this.keyboardNo1 = null;
+return 1;
+});
+Clazz_defineMethod (c$, "getKeyboardNo2", 
+function () {
+try {
+if (this.keyboardNo2 != null) {
+var value = Integer.parseInt (this.keyboardNo2.toString ());
+this.keyboardNo2 = null;
+return value;
+}} catch (x) {
+if (Clazz_exceptionOf (x, Exception)) {
+} else {
+throw x;
+}
+}
+this.keyboardNo2 = null;
+return 1;
+});
+Clazz_defineMethod (c$, "setStatusMessage", 
+function (sequence, res, seq) {
+var text =  new StringBuilder (32);
+var seqno = seq == -1 ? "" : " " + (seq + 1);
+text.append ("Sequence" + seqno + " ID: " + sequence.getName ());
+var residue = null;
+var displayChar = String.valueOf (sequence.getCharAt (res));
+if (this.av.getAlignment ().isNucleotide ()) {
+residue = jalview.schemes.ResidueProperties.nucleotideName.get (displayChar);
+if (residue != null) {
+text.append (" Nucleotide: ").append (residue);
+}} else {
+residue = "X".equalsIgnoreCase (displayChar) ? "X" : jalview.schemes.ResidueProperties.aa2Triplet.get (displayChar);
+if (residue != null) {
+text.append (" Residue: ").append (residue);
+}}var pos = -1;
+if (residue != null) {
+pos = sequence.findPosition (res);
+text.append (" (").append (Integer.toString (pos)).append (")");
+}this.ap.alignFrame.setStatus (text.toString ());
+}, "jalview.datamodel.SequenceI,~N,~N");
+Clazz_defineMethod (c$, "setStatusMessage", 
+ function (results) {
+var matches = results.getResults ();
+if (!matches.isEmpty ()) {
+var m = matches.get (0);
+var seq = m.getSequence ();
+var sequenceIndex = this.av.getAlignment ().findIndex (seq);
+var start = m.getStart () - 1;
+this.setStatusMessage (seq, start, sequenceIndex);
+}}, "jalview.datamodel.SearchResults");
+Clazz_overrideMethod (c$, "mousePressed", 
+function (evt) {
+this.lastMousePress = evt.getPoint ();
+if ((evt.getModifiers () & 8) == 8 && !this.av.MAC) {
+this.mouseWheelPressed = true;
+return;
+}if (evt.isShiftDown () || evt.isControlDown () || evt.isAltDown ()) {
+if (evt.isControlDown () || evt.isAltDown ()) {
+this.groupEditing = true;
+}this.editingSeqs = true;
+} else {
+this.doMousePressedDefineMode (evt);
+return;
+}var seq = this.findSeq (evt);
+var res = this.findRes (evt);
+if (seq < 0 || res < 0) {
+return;
+}if ((seq < this.av.getAlignment ().getHeight ()) && (res < this.av.getAlignment ().getSequenceAt (seq).getLength ())) {
+this.startseq = seq;
+this.lastres = res;
+} else {
+this.startseq = -1;
+this.lastres = -1;
+}return;
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (evt) {
+var sequence = this.av.getAlignment ().getSequenceAt (this.findSeq (evt));
+if (evt.getClickCount () > 1) {
+if (this.av.getSelectionGroup () != null && this.av.getSelectionGroup ().getSize () == 1 && this.av.getSelectionGroup ().getEndRes () - this.av.getSelectionGroup ().getStartRes () < 2) {
+this.av.setSelectionGroup (null);
+}var features = this.findFeaturesAtRes (sequence, sequence.findPosition (this.findRes (evt)));
+if (features != null && features.length > 0) {
+var highlight =  new jalview.datamodel.SearchResults ();
+highlight.addResult (sequence, features[0].getBegin (), features[0].getEnd ());
+this.seqCanvas.highlightSearchResults (highlight);
+}if (features != null && features.length > 0) {
+this.seqCanvas.getFeatureRenderer ().amendFeatures ( Clazz_newArray (-1, [sequence]), features, false, this.ap);
+this.seqCanvas.highlightSearchResults (null);
+}}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (evt) {
+this.mouseDragging = false;
+this.mouseWheelPressed = false;
+this.ap.paintAlignment (true);
+if (!this.editingSeqs) {
+this.doMouseReleasedDefineMode (evt);
+return;
+}this.endEditing ();
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "findRes", 
+function (evt) {
+var res = 0;
+var x = evt.getX ();
+if (this.av.getWrapAlignment ()) {
+var hgap = this.av.getCharHeight ();
+if (this.av.getScaleAboveWrapped ()) {
+hgap += this.av.getCharHeight ();
+}var cHeight = this.av.getAlignment ().getHeight () * this.av.getCharHeight () + hgap + this.seqCanvas.getAnnotationHeight ();
+var y = evt.getY ();
+y -= hgap;
+x -= this.seqCanvas.LABEL_WEST;
+var cwidth = this.seqCanvas.getWrappedCanvasWidth (this.getSize ().width);
+if (cwidth < 1) {
+return 0;
+}this.wrappedBlock = Clazz_doubleToInt (y / cHeight);
+this.wrappedBlock += Clazz_doubleToInt (this.av.getStartRes () / cwidth);
+res = this.wrappedBlock * cwidth + Clazz_doubleToInt (x / this.av.getCharWidth ());
+} else {
+res = (Clazz_doubleToInt (x / this.av.getCharWidth ())) + this.av.getStartRes ();
+}if (this.av.hasHiddenColumns ()) {
+res = this.av.getColumnSelection ().adjustForHiddenColumns (res);
+}return res;
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "findSeq", 
+function (evt) {
+var sqnum = this.findAlRow (evt);
+return (sqnum < 0) ? 0 : sqnum;
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "findAlRow", 
+ function (evt) {
+var seq = 0;
+var y = evt.getY ();
+if (this.av.getWrapAlignment ()) {
+var hgap = this.av.getCharHeight ();
+if (this.av.getScaleAboveWrapped ()) {
+hgap += this.av.getCharHeight ();
+}var cHeight = this.av.getAlignment ().getHeight () * this.av.getCharHeight () + hgap + this.seqCanvas.getAnnotationHeight ();
+y -= hgap;
+seq = Math.min (Clazz_doubleToInt ((y % cHeight) / this.av.getCharHeight ()), this.av.getAlignment ().getHeight () - 1);
+if (seq < 0) {
+seq = -1;
+}} else {
+seq = Math.min ((Clazz_doubleToInt (y / this.av.getCharHeight ())) + this.av.getStartSeq (), this.av.getAlignment ().getHeight () - 1);
+if (seq < 0) {
+seq = -1;
+}}return seq;
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "doMousePressed", 
+function (evt) {
+var seq = this.findSeq (evt);
+var res = this.findRes (evt);
+if (seq < this.av.getAlignment ().getHeight () && res < this.av.getAlignment ().getSequenceAt (seq).getLength ()) {
+this.startseq = seq;
+this.lastres = res;
+} else {
+this.startseq = -1;
+this.lastres = -1;
+}return;
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseOverSequence", 
+function (sequence, index, pos) {
+var tmp = sequence.hashCode () + index + "";
+if (this.lastMessage == null || !this.lastMessage.equals (tmp)) {
+this.ssm.mouseOverSequence (sequence, index, pos, this.av);
+}this.lastMessage = tmp;
+}, "jalview.datamodel.SequenceI,~N,~N");
+Clazz_overrideMethod (c$, "highlightSequence", 
+function (results) {
+if (this.av.isFollowHighlight ()) {
+if (this.ap.scrollToPosition (results, true)) {
+this.ap.alignFrame.repaint ();
+}}this.setStatusMessage (results);
+this.seqCanvas.highlightSearchResults (results);
+}, "jalview.datamodel.SearchResults");
+Clazz_overrideMethod (c$, "getVamsasSource", 
+function () {
+return this.ap == null ? null : this.ap.av;
+});
+Clazz_overrideMethod (c$, "updateColours", 
+function (seq, index) {
+System.out.println ("update the seqPanel colours");
+}, "jalview.datamodel.SequenceI,~N");
+Clazz_overrideMethod (c$, "mouseMoved", 
+function (evt) {
+var res = this.findRes (evt);
+var seq = this.findSeq (evt);
+if (seq >= this.av.getAlignment ().getHeight () || seq < 0 || res < 0) {
+if (this.tooltip != null) {
+this.tooltip.setTip ("");
+}return;
+}var sequence = this.av.getAlignment ().getSequenceAt (seq);
+if (res > sequence.getLength ()) {
+if (this.tooltip != null) {
+this.tooltip.setTip ("");
+}return;
+}var respos = sequence.findPosition (res);
+if (this.ssm != null) {
+this.mouseOverSequence (sequence, res, respos);
+}var text =  new StringBuilder ();
+text.append ("Sequence ").append (Integer.toString (seq + 1)).append (" ID: ").append (sequence.getName ());
+var obj = null;
+var ch = String.valueOf (sequence.getCharAt (res));
+if (this.av.getAlignment ().isNucleotide ()) {
+obj = jalview.schemes.ResidueProperties.nucleotideName.get (ch);
+if (obj != null) {
+text.append (" Nucleotide: ").append (obj);
+}} else {
+obj = "X".equalsIgnoreCase (ch) ? "X" : jalview.schemes.ResidueProperties.aa2Triplet.get (ch);
+if (obj != null) {
+text.append (" Residue: ").append (obj);
+}}if (obj != null) {
+text.append (" (").append (Integer.toString (respos)).append (")");
+}this.ap.alignFrame.setStatus (text.toString ());
+var tooltipText =  new StringBuilder ();
+var groups = this.av.getAlignment ().findAllGroups (sequence);
+if (groups != null) {
+for (var g = 0; g < groups.length; g++) {
+if (groups[g].getStartRes () <= res && groups[g].getEndRes () >= res) {
+if (!groups[g].getName ().startsWith ("JTreeGroup") && !groups[g].getName ().startsWith ("JGroup")) {
+tooltipText.append (groups[g].getName ()).append (" ");
+}if (groups[g].getDescription () != null) {
+tooltipText.append (groups[g].getDescription ());
+}tooltipText.append ("\n");
+}}
+}var allFeatures = this.findFeaturesAtRes (sequence, sequence.findPosition (res));
+var index = 0;
+while (index < allFeatures.length) {
+var sf = allFeatures[index];
+tooltipText.append (sf.getType () + " " + sf.begin + ":" + sf.end);
+if (sf.getDescription () != null) {
+tooltipText.append (" " + sf.getDescription ());
+}if (sf.getValue ("status") != null) {
+var status = sf.getValue ("status").toString ();
+if (status.length > 0) {
+tooltipText.append (" (" + sf.getValue ("status") + ")");
+}}tooltipText.append ("\n");
+index++;
+}
+if (this.tooltip == null) {
+this.tooltip =  new jalview.appletgui.Tooltip (tooltipText.toString (), this.seqCanvas);
+} else {
+this.tooltip.setTip (tooltipText.toString ());
+}}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "findFeaturesAtRes", 
+function (sequence, res) {
+var tmp =  new java.util.Vector ();
+var features = sequence.getSequenceFeatures ();
+if (features != null) {
+for (var i = 0; i < features.length; i++) {
+if (this.av.getFeaturesDisplayed () == null || !this.av.getFeaturesDisplayed ().isVisible (features[i].getType ())) {
+continue;
+}if (features[i].featureGroup != null && !this.seqCanvas.fr.checkGroupVisibility (features[i].featureGroup, false)) {
+continue;
+}if ((features[i].getBegin () <= res) && (features[i].getEnd () >= res)) {
+tmp.addElement (features[i]);
+}}
+}features =  new Array (tmp.size ());
+tmp.copyInto (features);
+return features;
+}, "jalview.datamodel.SequenceI,~N");
+Clazz_overrideMethod (c$, "mouseDragged", 
+function (evt) {
+if (this.mouseWheelPressed) {
+var oldWidth = this.av.getCharWidth ();
+if (Math.abs (evt.getY () - this.lastMousePress.y) > Math.abs (evt.getX () - this.lastMousePress.x)) {
+var fontSize = this.av.font.getSize ();
+if (evt.getY () < this.lastMousePress.y && this.av.getCharHeight () > 1) {
+fontSize--;
+} else if (evt.getY () > this.lastMousePress.y) {
+fontSize++;
+}if (fontSize < 1) {
+fontSize = 1;
+}this.av.setFont ( new java.awt.Font (this.av.font.getName (), this.av.font.getStyle (), fontSize));
+this.av.setCharWidth (oldWidth);
+} else {
+if (evt.getX () < this.lastMousePress.x && this.av.getCharWidth () > 1) {
+this.av.setCharWidth (this.av.getCharWidth () - 1);
+} else if (evt.getX () > this.lastMousePress.x) {
+this.av.setCharWidth (this.av.getCharWidth () + 1);
+}if (this.av.getCharWidth () < 1) {
+this.av.setCharWidth (1);
+}}this.ap.fontChanged ();
+var fm = this.getFontMetrics (this.av.getFont ());
+this.av.validCharWidth = fm.charWidth ('M') <= this.av.getCharWidth ();
+this.lastMousePress = evt.getPoint ();
+this.ap.paintAlignment (false);
+this.ap.annotationPanel.image = null;
+return;
+}if (!this.editingSeqs) {
+this.doMouseDraggedDefineMode (evt);
+return;
+}var res = this.findRes (evt);
+if (res < 0) {
+res = 0;
+}if ((this.lastres == -1) || (this.lastres == res)) {
+return;
+}if ((res < this.av.getAlignment ().getWidth ()) && (res < this.lastres)) {
+this.editSequence (false, res);
+} else {
+this.editSequence (true, res);
+}this.mouseDragging = true;
+if (this.scrollThread != null) {
+this.scrollThread.setEvent (evt);
+}}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "editSequence", 
+function (insertGap, startres) {
+var fixedLeft = -1;
+var fixedRight = -1;
+var fixedColumns = false;
+var sg = this.av.getSelectionGroup ();
+var seq = this.av.getAlignment ().getSequenceAt (this.startseq);
+if (!this.groupEditing && this.av.hasHiddenRows ()) {
+if (this.av.isHiddenRepSequence (seq)) {
+sg = this.av.getRepresentedSequences (seq);
+this.groupEditing = true;
+}}var message =  new StringBuffer ();
+if (this.groupEditing) {
+message.append (jalview.util.MessageManager.getString ("action.edit_group")).append (":");
+if (this.editCommand == null) {
+this.editCommand =  new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("action.edit_group"));
+}} else {
+message.append (jalview.util.MessageManager.getString ("label.edit_sequence")).append (" " + seq.getName ());
+var label = seq.getName ();
+if (label.length > 10) {
+label = label.substring (0, 10);
+}if (this.editCommand == null) {
+this.editCommand =  new jalview.commands.EditCommand (jalview.util.MessageManager.formatMessage ("label.edit_params",  Clazz_newArray (-1, [label])));
+}}if (insertGap) {
+message.append (" insert ");
+} else {
+message.append (" delete ");
+}message.append (Math.abs (startres - this.lastres) + " gaps.");
+this.ap.alignFrame.setStatus (message.toString ());
+if (this.groupEditing || (sg != null && sg.getSequences (this.av.getHiddenRepSequences ()).contains (seq))) {
+fixedColumns = true;
+if (sg == null) {
+if (!this.av.isHiddenRepSequence (seq)) {
+this.endEditing ();
+return;
+}sg = this.av.getRepresentedSequences (seq);
+}fixedLeft = sg.getStartRes ();
+fixedRight = sg.getEndRes ();
+if ((startres < fixedLeft && this.lastres >= fixedLeft) || (startres >= fixedLeft && this.lastres < fixedLeft) || (startres > fixedRight && this.lastres <= fixedRight) || (startres <= fixedRight && this.lastres > fixedRight)) {
+this.endEditing ();
+return;
+}if (fixedLeft > startres) {
+fixedRight = fixedLeft - 1;
+fixedLeft = 0;
+} else if (fixedRight < startres) {
+fixedLeft = fixedRight;
+fixedRight = -1;
+}}if (this.av.hasHiddenColumns ()) {
+fixedColumns = true;
+var y1 = this.av.getColumnSelection ().getHiddenBoundaryLeft (startres);
+var y2 = this.av.getColumnSelection ().getHiddenBoundaryRight (startres);
+if ((insertGap && startres > y1 && this.lastres < y1) || (!insertGap && startres < y2 && this.lastres > y2)) {
+this.endEditing ();
+return;
+}if (fixedLeft < y1 && (fixedRight > y2 || fixedRight == -1)) {
+if (startres >= y2) {
+fixedLeft = y2;
+} else {
+fixedRight = y2 - 1;
+}}}if (this.groupEditing) {
+var groupSeqs = sg.getSequences (this.av.getHiddenRepSequences ()).toArray ( new Array (0));
+if (insertGap) {
+if (sg.getStartRes () == 0 && sg.getEndRes () == fixedRight && sg.getEndRes () == this.av.getAlignment ().getWidth () - 1) {
+sg.setEndRes (this.av.getAlignment ().getWidth () + startres - this.lastres);
+fixedRight = sg.getEndRes ();
+}var blank = false;
+for (fixedRight = fixedRight; fixedRight > this.lastres; fixedRight--) {
+blank = true;
+for (var gs, $gs = 0, $$gs = groupSeqs; $gs < $$gs.length && ((gs = $$gs[$gs]) || true); $gs++) {
+for (var j = 0; j < startres - this.lastres; j++) {
+if (!jalview.util.Comparison.isGap (gs.getCharAt (fixedRight - j))) {
+blank = false;
+break;
+}}
+}
+if (blank) {
+break;
+}}
+if (!blank) {
+if (sg.getSize () == this.av.getAlignment ().getHeight ()) {
+if ((this.av.hasHiddenColumns () && startres < this.av.getColumnSelection ().getHiddenBoundaryRight (startres))) {
+this.endEditing ();
+return;
+}var alWidth = this.av.getAlignment ().getWidth ();
+if (this.av.hasHiddenRows ()) {
+var hwidth = this.av.getAlignment ().getHiddenSequences ().getWidth ();
+if (hwidth > alWidth) {
+alWidth = hwidth;
+}}sg.setEndRes (sg.getEndRes () + startres - this.lastres);
+fixedRight = alWidth + startres - this.lastres;
+} else {
+this.endEditing ();
+return;
+}}} else if (!insertGap) {
+for (var gs, $gs = 0, $$gs = groupSeqs; $gs < $$gs.length && ((gs = $$gs[$gs]) || true); $gs++) {
+for (var j = startres; j < this.lastres; j++) {
+if (gs.getLength () <= j) {
+continue;
+}if (!jalview.util.Comparison.isGap (gs.getCharAt (j))) {
+this.endEditing ();
+return;
+}}
+}
+}if (insertGap) {
+if (fixedColumns && fixedRight != -1) {
+for (var j = this.lastres; j < startres; j++) {
+this.insertChar (j, groupSeqs, fixedRight);
+}
+} else {
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP, groupSeqs, startres, startres - this.lastres, this.av.getAlignment (), true);
+}} else {
+if (fixedColumns && fixedRight != -1) {
+for (var j = this.lastres; j > startres; j--) {
+this.deleteChar (startres, groupSeqs, fixedRight);
+}
+} else {
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, groupSeqs, startres, this.lastres - startres, this.av.getAlignment (), true);
+}}} else {
+if (insertGap) {
+if (fixedColumns && fixedRight != -1) {
+for (var j = this.lastres; j < startres; j++) {
+this.insertChar (j,  Clazz_newArray (-1, [seq]), fixedRight);
+}
+} else {
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP,  Clazz_newArray (-1, [seq]), this.lastres, startres - this.lastres, this.av.getAlignment (), true);
+}} else {
+if (fixedColumns && fixedRight != -1) {
+for (var j = this.lastres; j > startres; j--) {
+if (!jalview.util.Comparison.isGap (seq.getCharAt (startres))) {
+this.endEditing ();
+break;
+}this.deleteChar (startres,  Clazz_newArray (-1, [seq]), fixedRight);
+}
+} else {
+var max = 0;
+for (var m = startres; m < this.lastres; m++) {
+if (!jalview.util.Comparison.isGap (seq.getCharAt (m))) {
+break;
+}max++;
+}
+if (max > 0) {
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP,  Clazz_newArray (-1, [seq]), startres, max, this.av.getAlignment (), true);
+}}}}this.lastres = startres;
+this.seqCanvas.repaint ();
+}, "~B,~N");
+Clazz_defineMethod (c$, "insertChar", 
+function (j, seq, fixedColumn) {
+var blankColumn = fixedColumn;
+for (var s = 0; s < seq.length; s++) {
+for (blankColumn = fixedColumn; blankColumn > j; blankColumn--) {
+if (jalview.util.Comparison.isGap (seq[s].getCharAt (blankColumn))) {
+break;
+}}
+if (blankColumn <= j) {
+blankColumn = fixedColumn;
+this.endEditing ();
+return;
+}}
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seq, blankColumn, 1, this.av.getAlignment (), true);
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP, seq, j, 1, this.av.getAlignment (), true);
+}, "~N,~A,~N");
+Clazz_defineMethod (c$, "deleteChar", 
+function (j, seq, fixedColumn) {
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seq, j, 1, this.av.getAlignment (), true);
+this.editCommand.appendEdit (jalview.commands.EditCommand.Action.INSERT_GAP, seq, fixedColumn, 1, this.av.getAlignment (), true);
+}, "~N,~A,~N");
+Clazz_defineMethod (c$, "doMousePressedDefineMode", 
+function (evt) {
+if (this.scrollThread != null) {
+this.scrollThread.running = false;
+this.scrollThread = null;
+}var res = this.findRes (evt);
+var seq = this.findSeq (evt);
+this.oldSeq = seq;
+this.startWrapBlock = this.wrappedBlock;
+if (seq == -1) {
+return;
+}var sequence = this.av.getAlignment ().getSequenceAt (seq);
+if (sequence == null || res > sequence.getLength ()) {
+return;
+}this.stretchGroup = this.av.getSelectionGroup ();
+if (this.stretchGroup == null) {
+this.stretchGroup = this.av.getAlignment ().findGroup (sequence);
+if (this.stretchGroup != null && res > this.stretchGroup.getStartRes () && res < this.stretchGroup.getEndRes ()) {
+this.av.setSelectionGroup (this.stretchGroup);
+} else {
+this.stretchGroup = null;
+}} else if (!this.stretchGroup.getSequences (null).contains (sequence) || this.stretchGroup.getStartRes () > res || this.stretchGroup.getEndRes () < res) {
+this.stretchGroup = null;
+var allGroups = this.av.getAlignment ().findAllGroups (sequence);
+if (allGroups != null) {
+for (var i = 0; i < allGroups.length; i++) {
+if (allGroups[i].getStartRes () <= res && allGroups[i].getEndRes () >= res) {
+this.stretchGroup = allGroups[i];
+break;
+}}
+}this.av.setSelectionGroup (this.stretchGroup);
+}if ((evt.getModifiers () & 4) == 4) {
+var allFeatures = this.findFeaturesAtRes (sequence, sequence.findPosition (res));
+var links = null;
+if (allFeatures != null) {
+for (var i = 0; i < allFeatures.length; i++) {
+if (allFeatures[i].links != null) {
+if (links == null) {
+links =  new java.util.Vector ();
+}for (var j = 0; j < allFeatures[i].links.size (); j++) {
+links.addElement (allFeatures[i].links.elementAt (j));
+}
+}}
+}var popup =  new jalview.appletgui.APopupMenu (this.ap, null, links);
+this.add (popup);
+popup.show (this, evt.getX (), evt.getY ());
+return;
+}if (this.av.cursorMode) {
+this.seqCanvas.cursorX = this.findRes (evt);
+this.seqCanvas.cursorY = this.findSeq (evt);
+this.seqCanvas.repaint ();
+return;
+}if (this.stretchGroup == null) {
+var sg =  new jalview.datamodel.SequenceGroup ();
+sg.setStartRes (res);
+sg.setEndRes (res);
+sg.addSequence (sequence, false);
+this.av.setSelectionGroup (sg);
+this.stretchGroup = sg;
+if (this.av.getConservationSelected ()) {
+jalview.appletgui.SliderPanel.setConservationSlider (this.ap, this.av.getGlobalColourScheme (), "Background");
+}if (this.av.getAbovePIDThreshold ()) {
+jalview.appletgui.SliderPanel.setPIDSliderSource (this.ap, this.av.getGlobalColourScheme (), "Background");
+}}}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "doMouseReleasedDefineMode", 
+function (evt) {
+if (this.stretchGroup == null) {
+return;
+}this.stretchGroup.recalcConservation ();
+if (this.stretchGroup.cs != null) {
+this.stretchGroup.cs.alignmentChanged (this.stretchGroup, this.av.getHiddenRepSequences ());
+if (this.stretchGroup.cs.conservationApplied ()) {
+jalview.appletgui.SliderPanel.setConservationSlider (this.ap, this.stretchGroup.cs, this.stretchGroup.getName ());
+} else {
+jalview.appletgui.SliderPanel.setPIDSliderSource (this.ap, this.stretchGroup.cs, this.stretchGroup.getName ());
+}}this.changeEndRes = false;
+this.changeStartRes = false;
+this.stretchGroup = null;
+jalview.appletgui.PaintRefresher.Refresh (this.ap, this.av.getSequenceSetId ());
+this.ap.paintAlignment (true);
+this.av.sendSelection ();
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "doMouseDraggedDefineMode", 
+function (evt) {
+var res = this.findRes (evt);
+var y = this.findSeq (evt);
+if (this.wrappedBlock != this.startWrapBlock) {
+return;
+}if (this.stretchGroup == null) {
+return;
+}this.mouseDragging = true;
+if (y > this.av.getAlignment ().getHeight ()) {
+y = this.av.getAlignment ().getHeight () - 1;
+}if (res >= this.av.getAlignment ().getWidth ()) {
+res = this.av.getAlignment ().getWidth () - 1;
+}if (this.stretchGroup.getEndRes () == res) {
+this.changeEndRes = true;
+} else if (this.stretchGroup.getStartRes () == res) {
+this.changeStartRes = true;
+}if (res < 0) {
+res = 0;
+}if (this.changeEndRes) {
+if (res > (this.stretchGroup.getStartRes () - 1)) {
+this.stretchGroup.setEndRes (res);
+}} else if (this.changeStartRes) {
+if (res < (this.stretchGroup.getEndRes () + 1)) {
+this.stretchGroup.setStartRes (res);
+}}var dragDirection = 0;
+if (y > this.oldSeq) {
+dragDirection = 1;
+} else if (y < this.oldSeq) {
+dragDirection = -1;
+}while ((y != this.oldSeq) && (this.oldSeq > -1) && (y < this.av.getAlignment ().getHeight ())) {
+var seq = this.av.getAlignment ().getSequenceAt (this.oldSeq);
+this.oldSeq += dragDirection;
+if (this.oldSeq < 0) {
+break;
+}var nextSeq = this.av.getAlignment ().getSequenceAt (this.oldSeq);
+if (this.stretchGroup.getSequences (null).contains (nextSeq)) {
+this.stretchGroup.deleteSequence (seq, false);
+} else {
+if (seq != null) {
+this.stretchGroup.addSequence (seq, false);
+}this.stretchGroup.addSequence (nextSeq, false);
+}}
+if (this.oldSeq < 0) {
+this.oldSeq = -1;
+}if (res > this.av.endRes || res < this.av.startRes || y < this.av.startSeq || y > this.av.endSeq) {
+this.mouseExited (evt);
+}if (this.scrollThread != null) {
+this.scrollThread.setEvent (evt);
+}this.seqCanvas.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (e) {
+if (this.oldSeq < 0) {
+this.oldSeq = 0;
+}if (this.scrollThread != null) {
+this.scrollThread.running = false;
+this.scrollThread = null;
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (e) {
+if (this.av.getWrapAlignment ()) {
+return;
+}if (this.mouseDragging && this.scrollThread == null) {
+this.scrollThread = Clazz_innerTypeInstance (jalview.appletgui.SeqPanel.ScrollThread, this, null);
+}}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "scrollCanvas", 
+function (evt) {
+if (evt == null) {
+if (this.scrollThread != null) {
+this.scrollThread.running = false;
+this.scrollThread = null;
+}this.mouseDragging = false;
+} else {
+if (this.scrollThread == null) {
+this.scrollThread = Clazz_innerTypeInstance (jalview.appletgui.SeqPanel.ScrollThread, this, null);
+}this.mouseDragging = true;
+this.scrollThread.setEvent (evt);
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "selection", 
+function (seqsel, colsel, source) {
+if (this.av != null && (this.av === source || !this.av.followSelection || (Clazz_instanceOf (source, jalview.appletgui.AlignViewport) && (source).getSequenceSetId ().equals (this.av.getSequenceSetId ())))) {
+return;
+}if (this.selectionFromTranslation (seqsel, colsel, source)) {
+return;
+}var repaint = false;
+var copycolsel = true;
+if (this.av.getSelectionGroup () == null || !this.av.isSelectionGroupChanged (true)) {
+var sgroup = null;
+if (seqsel != null && seqsel.getSize () > 0) {
+if (this.av.getAlignment () == null) {
+System.out.println ("Selection message: alignviewport av SeqSetId=" + this.av.getSequenceSetId () + " ViewId=" + this.av.getViewId () + " 's alignment is NULL! returning immediatly.");
+return;
+}sgroup = seqsel.intersect (this.av.getAlignment (), (this.av.hasHiddenRows ()) ? this.av.getHiddenRepSequences () : null);
+if ((sgroup == null || sgroup.getSize () == 0) && (colsel == null || colsel.size () == 0)) {
+copycolsel = false;
+}}if (sgroup != null && sgroup.getSize () > 0) {
+this.av.setSelectionGroup (sgroup);
+} else {
+this.av.setSelectionGroup (null);
+}repaint = this.av.isSelectionGroupChanged (true);
+}if (copycolsel && (this.av.getColumnSelection () == null || !this.av.isColSelChanged (true))) {
+if (colsel == null || colsel.size () == 0) {
+if (this.av.getColumnSelection () != null) {
+this.av.getColumnSelection ().clear ();
+}} else {
+if (this.av.getColumnSelection () == null) {
+this.av.setColumnSelection ( new jalview.datamodel.ColumnSelection (colsel));
+} else {
+this.av.getColumnSelection ().setElementsFrom (colsel);
+}}repaint = new Boolean (repaint | this.av.isColSelChanged (true)).valueOf ();
+}if (copycolsel && this.av.hasHiddenColumns () && (this.av.getColumnSelection () == null || this.av.getColumnSelection ().getHiddenColumns () == null)) {
+System.err.println ("Bad things");
+}if (repaint) {
+this.ap.scalePanelHolder.repaint ();
+this.ap.repaint ();
+}}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");
+Clazz_defineMethod (c$, "scrollTo", 
+function (row, column) {
+row = row < 0 ? this.ap.av.startSeq : row;
+column = column < 0 ? this.ap.av.startRes : column;
+this.ap.scrollTo (column, column, row, true, true);
+}, "~N,~N");
+Clazz_defineMethod (c$, "scrollToRow", 
+function (row) {
+row = row < 0 ? this.ap.av.startSeq : row;
+this.ap.scrollTo (this.ap.av.startRes, this.ap.av.startRes, row, true, true);
+}, "~N");
+Clazz_defineMethod (c$, "scrollToColumn", 
+function (column) {
+column = column < 0 ? this.ap.av.startRes : column;
+this.ap.scrollTo (column, column, this.ap.av.startSeq, true, true);
+}, "~N");
+Clazz_defineMethod (c$, "selectionFromTranslation", 
+function (seqsel, colsel, source) {
+if (!(Clazz_instanceOf (source, jalview.api.AlignViewportI))) {
+return false;
+}var sourceAv = source;
+if (sourceAv.getCodingComplement () !== this.av && this.av.getCodingComplement () !== sourceAv) {
+return false;
+}var sg = jalview.util.MappingUtils.mapSequenceGroup (seqsel, sourceAv, this.av);
+this.av.setSelectionGroup (sg);
+this.av.isSelectionGroupChanged (true);
+var cs = jalview.util.MappingUtils.mapColumnSelection (colsel, sourceAv, this.av);
+this.av.setColumnSelection (cs);
+this.av.isColSelChanged (true);
+this.ap.scalePanelHolder.repaint ();
+this.ap.repaint ();
+return true;
+}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");
+c$.$SeqPanel$ScrollThread$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.evt = null;
+this.running = false;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui.SeqPanel, "ScrollThread", Thread);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.appletgui.SeqPanel.ScrollThread, []);
+this.start ();
+});
+Clazz_defineMethod (c$, "setEvent", 
+function (a) {
+this.evt = a;
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "stopScrolling", 
+function () {
+this.running = false;
+});
+Clazz_overrideMethod (c$, "run", 
+function () {
+this.running = true;
+while (this.running) {
+if (this.evt != null) {
+if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getY () < 0 && this.b$["jalview.appletgui.SeqPanel"].av.getStartSeq () > 0) {
+this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollUp (true);
+}if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getY () >= this.b$["jalview.appletgui.SeqPanel"].getSize ().height && this.b$["jalview.appletgui.SeqPanel"].av.getAlignment ().getHeight () > this.b$["jalview.appletgui.SeqPanel"].av.getEndSeq ()) {
+this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollUp (false);
+}if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getX () < 0) {
+this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollRight (false);
+} else if (this.b$["jalview.appletgui.SeqPanel"].mouseDragging && this.evt.getX () >= this.b$["jalview.appletgui.SeqPanel"].getSize ().width) {
+this.running = this.b$["jalview.appletgui.SeqPanel"].ap.scrollRight (true);
+}}try {
+Thread.sleep (75);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+}
+});
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("jalview.structure");
+Clazz_declareInterface (jalview.structure, "SelectionListener");
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel"], "jalview.appletgui.SeqCanvas", ["awt2swing.Util", "jalview.appletgui.AnnotationPanel", "$.FeatureRenderer", "$.PaintRefresher", "$.SequenceRenderer", "jalview.util.Comparison", "java.awt.Color"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.fr = null;
+this.sr = null;
+this.img = null;
+this.gg = null;
+this.imgWidth = 0;
+this.imgHeight = 0;
+this.av = null;
+this.searchResults = null;
+this.$fastPaint = false;
+this.cursorX = 0;
+this.cursorY = 0;
+this.avcharHeight = 0;
+this.avcharWidth = 0;
+this.lastsr = 0;
+this.LABEL_WEST = 0;
+this.LABEL_EAST = 0;
+this.annotations = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "SeqCanvas", awt2swing.Panel);
+Clazz_makeConstructor (c$, 
+function (av) {
+Clazz_superConstructor (this, jalview.appletgui.SeqCanvas, []);
+this.av = av;
+this.fr =  new jalview.appletgui.FeatureRenderer (av);
+this.sr =  new jalview.appletgui.SequenceRenderer (av);
+jalview.appletgui.PaintRefresher.Register (this, av.getSequenceSetId ());
+this.updateViewport ();
+}, "jalview.appletgui.AlignViewport");
+Clazz_defineMethod (c$, "updateViewport", 
+ function () {
+this.avcharHeight = this.av.getCharHeight ();
+this.avcharWidth = this.av.getCharWidth ();
+});
+Clazz_defineMethod (c$, "getViewport", 
+function () {
+return this.av;
+});
+Clazz_defineMethod (c$, "getFeatureRenderer", 
+function () {
+return this.fr;
+});
+Clazz_defineMethod (c$, "getSequenceRenderer", 
+function () {
+return this.sr;
+});
+Clazz_defineMethod (c$, "drawNorthScale", 
+ function (g, startx, endx, ypos) {
+var scalestartx = startx - startx % 10 + 10;
+g.setColor (java.awt.Color.black);
+for (var i = scalestartx; i < endx; i += 10) {
+var value = i;
+if (this.av.hasHiddenColumns ()) {
+value = this.av.getColumnSelection ().adjustForHiddenColumns (value);
+}awt2swing.Util.drawString (g, String.valueOf (value), (i - startx - 1) * this.avcharWidth, ypos - (Clazz_doubleToInt (this.avcharHeight / 2)));
+g.drawLine (((i - startx - 1) * this.avcharWidth) + (Clazz_doubleToInt (this.avcharWidth / 2)), (ypos + 2) - (Clazz_doubleToInt (this.avcharHeight / 2)), ((i - startx - 1) * this.avcharWidth) + (Clazz_doubleToInt (this.avcharWidth / 2)), ypos - 2);
+}
+}, "java.awt.Graphics,~N,~N,~N");
+Clazz_defineMethod (c$, "drawWestScale", 
+ function (g, startx, endx, ypos) {
+var fm = this.getFontMetrics (this.av.getFont ());
+ypos += this.avcharHeight;
+if (this.av.hasHiddenColumns ()) {
+startx = this.av.getColumnSelection ().adjustForHiddenColumns (startx);
+endx = this.av.getColumnSelection ().adjustForHiddenColumns (endx);
+}var maxwidth = this.av.getAlignment ().getWidth ();
+if (this.av.hasHiddenColumns ()) {
+maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;
+}for (var i = 0; i < this.av.getAlignment ().getHeight (); i++) {
+var seq = this.av.getAlignment ().getSequenceAt (i);
+var index = startx;
+var value = -1;
+while (index < endx) {
+if (jalview.util.Comparison.isGap (seq.getCharAt (index))) {
+index++;
+continue;
+}value = this.av.getAlignment ().getSequenceAt (i).findPosition (index);
+break;
+}
+if (value != -1) {
+var x = this.LABEL_WEST - fm.stringWidth (String.valueOf (value)) - Clazz_doubleToInt (this.avcharWidth / 2);
+awt2swing.Util.drawString (g, value + "", x, (ypos + (i * this.avcharHeight)) - (Clazz_doubleToInt (this.avcharHeight / 5)));
+}}
+}, "java.awt.Graphics,~N,~N,~N");
+Clazz_defineMethod (c$, "drawEastScale", 
+ function (g, startx, endx, ypos) {
+ypos += this.avcharHeight;
+if (this.av.hasHiddenColumns ()) {
+endx = this.av.getColumnSelection ().adjustForHiddenColumns (endx);
+}var seq;
+for (var i = 0; i < this.av.getAlignment ().getHeight (); i++) {
+seq = this.av.getAlignment ().getSequenceAt (i);
+var index = endx;
+var value = -1;
+while (index > startx) {
+if (jalview.util.Comparison.isGap (seq.getCharAt (index))) {
+index--;
+continue;
+}value = seq.findPosition (index);
+break;
+}
+if (value != -1) {
+awt2swing.Util.drawString (g, String.valueOf (value), 0, (ypos + (i * this.avcharHeight)) - (Clazz_doubleToInt (this.avcharHeight / 5)));
+}}
+}, "java.awt.Graphics,~N,~N,~N");
+Clazz_defineMethod (c$, "fastPaint", 
+function (horizontal, vertical) {
+if (this.$fastPaint || this.gg == null) {
+return;
+}this.updateViewport ();
+if (this.lastsr + horizontal != this.av.startRes) {
+horizontal = this.av.startRes - this.lastsr;
+}this.lastsr = this.av.startRes;
+this.$fastPaint = true;
+this.gg.copyArea (horizontal * this.avcharWidth, vertical * this.avcharHeight, this.imgWidth - horizontal * this.avcharWidth, this.imgHeight - vertical * this.avcharHeight, -horizontal * this.avcharWidth, -vertical * this.avcharHeight);
+var sr = this.av.startRes;
+var er = this.av.endRes;
+var ss = this.av.startSeq;
+var es = this.av.endSeq;
+var transX = 0;
+var transY = 0;
+if (horizontal > 0) {
+transX = (er - sr - horizontal) * this.avcharWidth;
+sr = er - horizontal;
+} else if (horizontal < 0) {
+er = sr - horizontal;
+} else if (vertical > 0) {
+ss = es - vertical;
+if (ss < this.av.startSeq) {
+ss = this.av.startSeq;
+} else {
+transY = this.imgHeight - vertical * this.avcharHeight;
+}} else if (vertical < 0) {
+es = ss - vertical;
+if (es > this.av.endSeq) {
+es = this.av.endSeq;
+}}this.gg.translate (transX, transY);
+this.drawPanel (this.gg, sr, er, ss, es, 0);
+this.gg.translate (-transX, -transY);
+this.repaint ();
+}, "~N,~N");
+Clazz_overrideMethod (c$, "paintComponent", 
+function (g) {
+if (this.img != null && (this.$fastPaint || (this.getSize ().width != g.getClipBounds ().width) || (this.getSize ().height != g.getClipBounds ().height))) {
+g.drawImage (this.img, 0, 0, this);
+this.$fastPaint = false;
+return;
+}if (this.$fastPaint) {
+g.drawImage (this.img, 0, 0, this);
+this.$fastPaint = false;
+return;
+}this.updateViewport ();
+this.imgWidth = this.getSize ().width;
+this.imgHeight = this.getSize ().height;
+this.imgWidth -= this.imgWidth % this.avcharWidth;
+this.imgHeight -= this.imgHeight % this.avcharHeight;
+if (this.imgWidth < 1 || this.imgHeight < 1) {
+return;
+}if (this.img == null || this.imgWidth != this.img.getWidth (this) || this.imgHeight != this.img.getHeight (this)) {
+this.img = this.createImage (this.imgWidth, this.imgHeight);
+this.gg = this.img.getGraphics ();
+this.gg.setFont (this.av.getFont ());
+}this.gg.setColor (java.awt.Color.white);
+this.gg.fillRect (0, 0, this.imgWidth, this.imgHeight);
+if (this.av.getWrapAlignment ()) {
+this.drawWrappedPanel (this.gg, this.imgWidth, this.imgHeight, this.av.startRes);
+} else {
+this.drawPanel (this.gg, this.av.startRes, this.av.endRes, this.av.startSeq, this.av.endSeq, 0);
+}g.drawImage (this.img, 0, 0, this);
+}, "java.awt.Graphics");
+Clazz_defineMethod (c$, "getWrappedCanvasWidth", 
+function (cwidth) {
+cwidth -= cwidth % this.av.getCharWidth ();
+var fm = this.getFontMetrics (this.av.getFont ());
+this.LABEL_EAST = 0;
+this.LABEL_WEST = 0;
+if (this.av.getScaleRightWrapped ()) {
+this.LABEL_EAST = fm.stringWidth (this.getMask ());
+}if (this.av.getScaleLeftWrapped ()) {
+this.LABEL_WEST = fm.stringWidth (this.getMask ());
+}return Clazz_doubleToInt ((cwidth - this.LABEL_EAST - this.LABEL_WEST) / this.av.getCharWidth ());
+}, "~N");
+Clazz_defineMethod (c$, "getMask", 
+function () {
+var mask = "0";
+var maxWidth = 0;
+var tmp;
+var alignment = this.av.getAlignment ();
+for (var i = 0; i < alignment.getHeight (); i++) {
+tmp = alignment.getSequenceAt (i).getEnd ();
+if (tmp > maxWidth) {
+maxWidth = tmp;
+}}
+for (var i = maxWidth; i > 0; i /= 10) {
+mask += "0";
+}
+return mask;
+});
+Clazz_defineMethod (c$, "drawWrappedPanel", 
+ function (g, canvasWidth, canvasHeight, startRes) {
+var al = this.av.getAlignment ();
+var fm = this.getFontMetrics (this.av.getFont ());
+if (this.av.getScaleRightWrapped ()) {
+this.LABEL_EAST = fm.stringWidth (this.getMask ());
+}if (this.av.getScaleLeftWrapped ()) {
+this.LABEL_WEST = fm.stringWidth (this.getMask ());
+}var hgap = this.avcharHeight;
+if (this.av.getScaleAboveWrapped ()) {
+hgap += this.avcharHeight;
+}var cWidth = Clazz_doubleToInt ((canvasWidth - this.LABEL_EAST - this.LABEL_WEST) / this.avcharWidth);
+var cHeight = this.av.getAlignment ().getHeight () * this.avcharHeight;
+this.av.setWrappedWidth (cWidth);
+this.av.endRes = this.av.startRes + cWidth;
+var endx;
+var ypos = hgap;
+var maxwidth = this.av.getAlignment ().getWidth () - 1;
+if (this.av.hasHiddenColumns ()) {
+maxwidth = this.av.getColumnSelection ().findColumnPosition (maxwidth) - 1;
+}while ((ypos <= canvasHeight) && (startRes < maxwidth)) {
+endx = startRes + cWidth - 1;
+if (endx > maxwidth) {
+endx = maxwidth;
+}g.setColor (java.awt.Color.black);
+if (this.av.getScaleLeftWrapped ()) {
+this.drawWestScale (g, startRes, endx, ypos);
+}if (this.av.getScaleRightWrapped ()) {
+g.translate (canvasWidth - this.LABEL_EAST, 0);
+this.drawEastScale (g, startRes, endx, ypos);
+g.translate (-(canvasWidth - this.LABEL_EAST), 0);
+}g.translate (this.LABEL_WEST, 0);
+if (this.av.getScaleAboveWrapped ()) {
+this.drawNorthScale (g, startRes, endx, ypos);
+}if (this.av.hasHiddenColumns () && this.av.getShowHiddenMarkers ()) {
+g.setColor (java.awt.Color.blue);
+var res;
+for (var i = 0; i < this.av.getColumnSelection ().getHiddenColumns ().size (); i++) {
+res = this.av.getColumnSelection ().findHiddenRegionPosition (i) - startRes;
+if (res < 0 || res > endx - startRes) {
+continue;
+}this.gg.fillPolygon ( Clazz_newIntArray (-1, [res * this.avcharWidth - Clazz_doubleToInt (this.avcharHeight / 4), res * this.avcharWidth + Clazz_doubleToInt (this.avcharHeight / 4), res * this.avcharWidth]),  Clazz_newIntArray (-1, [ypos - (Clazz_doubleToInt (this.avcharHeight / 2)), ypos - (Clazz_doubleToInt (this.avcharHeight / 2)), ypos - (Clazz_doubleToInt (this.avcharHeight / 2)) + 8]), 3);
+}
+}if (g.getClip () == null) {
+g.setClip (0, 0, cWidth * this.avcharWidth, canvasHeight);
+}this.drawPanel (g, startRes, endx, 0, al.getHeight (), ypos);
+g.setClip (null);
+if (this.av.isShowAnnotation ()) {
+g.translate (0, cHeight + ypos + 4);
+if (this.annotations == null) {
+this.annotations =  new jalview.appletgui.AnnotationPanel (this.av);
+}this.annotations.drawComponent (g, startRes, endx + 1);
+g.translate (0, -cHeight - ypos - 4);
+}g.translate (-this.LABEL_WEST, 0);
+ypos += cHeight + this.getAnnotationHeight () + hgap;
+startRes += cWidth;
+}
+}, "java.awt.Graphics,~N,~N,~N");
+Clazz_defineMethod (c$, "getAnnotationHeight", 
+function () {
+if (!this.av.isShowAnnotation ()) {
+return 0;
+}if (this.annotations == null) {
+this.annotations =  new jalview.appletgui.AnnotationPanel (this.av);
+}return this.annotations.adjustPanelHeight ();
+});
+Clazz_defineMethod (c$, "drawPanel", 
+ function (g1, startRes, endRes, startSeq, endSeq, offset) {
+if (!this.av.hasHiddenColumns ()) {
+this.draw (g1, startRes, endRes, startSeq, endSeq, offset);
+} else {
+var screenY = 0;
+var blockStart = startRes;
+var blockEnd = endRes;
+if (this.av.hasHiddenColumns ()) {
+for (var region, $region = this.av.getColumnSelection ().getHiddenColumns ().iterator (); $region.hasNext () && ((region = $region.next ()) || true);) {
+var hideStart = region[0];
+var hideEnd = region[1];
+if (hideStart <= blockStart) {
+blockStart += (hideEnd - hideStart) + 1;
+continue;
+}blockEnd = hideStart - 1;
+g1.translate (screenY * this.avcharWidth, 0);
+this.draw (g1, blockStart, blockEnd, startSeq, endSeq, offset);
+if (this.av.getShowHiddenMarkers ()) {
+g1.setColor (java.awt.Color.blue);
+g1.drawLine ((blockEnd - blockStart + 1) * this.avcharWidth - 1, 0 + offset, (blockEnd - blockStart + 1) * this.avcharWidth - 1, (endSeq - startSeq) * this.avcharHeight + offset);
+}g1.translate (-screenY * this.avcharWidth, 0);
+screenY += blockEnd - blockStart + 1;
+blockStart = hideEnd + 1;
+}
+}if (screenY <= (endRes - startRes)) {
+blockEnd = blockStart + (endRes - startRes) - screenY;
+g1.translate (screenY * this.avcharWidth, 0);
+this.draw (g1, blockStart, blockEnd, startSeq, endSeq, offset);
+g1.translate (-screenY * this.avcharWidth, 0);
+}}}, "java.awt.Graphics,~N,~N,~N,~N,~N");
+Clazz_defineMethod (c$, "draw", 
+function (g, startRes, endRes, startSeq, endSeq, offset) {
+g.setFont (this.av.getFont ());
+this.sr.prepare (g, this.av.isRenderGaps ());
+this.updateViewport ();
+var nextSeq;
+for (var i = startSeq; i < endSeq; i++) {
+nextSeq = this.av.getAlignment ().getSequenceAt (i);
+if (nextSeq == null) {
+continue;
+}this.sr.drawSequence (nextSeq, this.av.getAlignment ().findAllGroups (nextSeq), startRes, endRes, offset + ((i - startSeq) * this.avcharHeight));
+if (this.av.isShowSequenceFeatures ()) {
+this.fr.drawSequence (g, nextSeq, startRes, endRes, offset + ((i - startSeq) * this.avcharHeight));
+}if (this.searchResults != null) {
+var visibleResults = this.searchResults.getResults (nextSeq, startRes, endRes);
+if (visibleResults != null) {
+for (var r = 0; r < visibleResults.length; r += 2) {
+this.sr.drawHighlightedText (nextSeq, visibleResults[r], visibleResults[r + 1], (visibleResults[r] - startRes) * this.avcharWidth, offset + ((i - startSeq) * this.avcharHeight));
+}
+}}if (this.av.cursorMode && this.cursorY == i && this.cursorX >= startRes && this.cursorX <= endRes) {
+this.sr.drawCursor (nextSeq, this.cursorX, (this.cursorX - startRes) * this.avcharWidth, offset + ((i - startSeq) * this.avcharHeight));
+}}
+if (this.av.getSelectionGroup () != null || this.av.getAlignment ().getGroups ().size () > 0) {
+this.drawGroupsBoundaries (g, startRes, endRes, startSeq, endSeq, offset);
+}}, "java.awt.Graphics,~N,~N,~N,~N,~N");
+Clazz_defineMethod (c$, "drawGroupsBoundaries", 
+ function (g, startRes, endRes, startSeq, endSeq, offset) {
+var group = this.av.getSelectionGroup ();
+var sx = -1;
+var sy = -1;
+var ex = -1;
+var groupIndex = -1;
+if ((group == null) && (this.av.getAlignment ().getGroups ().size () > 0)) {
+group = this.av.getAlignment ().getGroups ().get (0);
+groupIndex = 0;
+}if (group != null) {
+do {
+var oldY = -1;
+var i = 0;
+var inGroup = false;
+var top = -1;
+var bottom = -1;
+var alHeight = this.av.getAlignment ().getHeight () - 1;
+for (i = startSeq; i < endSeq; i++) {
+sx = (group.getStartRes () - startRes) * this.avcharWidth;
+sy = offset + ((i - startSeq) * this.avcharHeight);
+ex = (((group.getEndRes () + 1) - group.getStartRes ()) * this.avcharWidth) - 1;
+if (sx + ex < 0 || sx > this.imgWidth) {
+continue;
+}if ((sx <= (endRes - startRes) * this.avcharWidth) && group.getSequences (null).contains (this.av.getAlignment ().getSequenceAt (i))) {
+if ((bottom == -1) && (i >= alHeight || !group.getSequences (null).contains (this.av.getAlignment ().getSequenceAt (i + 1)))) {
+bottom = sy + this.avcharHeight;
+}if (!inGroup) {
+if (((top == -1) && (i == 0)) || !group.getSequences (null).contains (this.av.getAlignment ().getSequenceAt (i - 1))) {
+top = sy;
+}oldY = sy;
+inGroup = true;
+if (group === this.av.getSelectionGroup ()) {
+g.setColor (java.awt.Color.red);
+} else {
+g.setColor (group.getOutlineColour ());
+}}} else {
+if (inGroup) {
+if (sx >= 0 && sx < this.imgWidth) {
+g.drawLine (sx, oldY, sx, sy);
+}if (sx + ex < this.imgWidth) {
+g.drawLine (sx + ex, oldY, sx + ex, sy);
+}if (sx < 0) {
+ex += sx;
+sx = 0;
+}if (sx + ex > this.imgWidth) {
+ex = this.imgWidth;
+} else if (sx + ex >= (endRes - startRes + 1) * this.avcharWidth) {
+ex = (endRes - startRes + 1) * this.avcharWidth;
+}if (top != -1) {
+g.drawLine (sx, top, sx + ex, top);
+top = -1;
+}if (bottom != -1) {
+g.drawLine (sx, bottom, sx + ex, bottom);
+bottom = -1;
+}inGroup = false;
+}}}
+if (inGroup) {
+sy = offset + ((i - startSeq) * this.avcharHeight);
+if (sx >= 0 && sx < this.imgWidth) {
+g.drawLine (sx, oldY, sx, sy);
+}if (sx + ex < this.imgWidth) {
+g.drawLine (sx + ex, oldY, sx + ex, sy);
+}if (sx < 0) {
+ex += sx;
+sx = 0;
+}if (sx + ex > this.imgWidth) {
+ex = this.imgWidth;
+} else if (sx + ex >= (endRes - startRes + 1) * this.avcharWidth) {
+ex = (endRes - startRes + 1) * this.avcharWidth;
+}if (top != -1) {
+g.drawLine (sx, top, sx + ex, top);
+top = -1;
+}if (bottom != -1) {
+g.drawLine (sx, bottom - 1, sx + ex, bottom - 1);
+bottom = -1;
+}inGroup = false;
+}groupIndex++;
+if (groupIndex >= this.av.getAlignment ().getGroups ().size ()) {
+break;
+}group = this.av.getAlignment ().getGroups ().get (groupIndex);
+} while (groupIndex < this.av.getAlignment ().getGroups ().size ());
+}}, "java.awt.Graphics,~N,~N,~N,~N,~N");
+Clazz_defineMethod (c$, "highlightSearchResults", 
+function (results) {
+this.searchResults = results;
+this.repaint ();
+}, "jalview.datamodel.SearchResults");
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["jalview.api.SequenceRenderer"], "jalview.appletgui.SequenceRenderer", ["awt2swing.Util", "jalview.util.Comparison", "java.awt.Color", "$.Font"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.av = null;
+this.fm = null;
+this.renderGaps = true;
+this.currentSequenceGroup = null;
+this.allGroups = null;
+this.resBoxColour = null;
+this.graphics = null;
+this.forOverview = false;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "SequenceRenderer", null, jalview.api.SequenceRenderer);
+Clazz_makeConstructor (c$, 
+function (av) {
+this.av = av;
+}, "jalview.appletgui.AlignViewport");
+Clazz_defineMethod (c$, "prepare", 
+function (g, renderGaps) {
+this.graphics = g;
+this.fm = g.getFontMetrics ();
+this.renderGaps = renderGaps;
+}, "java.awt.Graphics,~B");
+Clazz_overrideMethod (c$, "getResidueBoxColour", 
+function (seq, i) {
+this.allGroups = this.av.getAlignment ().findAllGroups (seq);
+if (this.inCurrentSequenceGroup (i)) {
+if (this.currentSequenceGroup.getDisplayBoxes ()) {
+this.getBoxColour (this.currentSequenceGroup.cs, seq, i);
+}} else if (this.av.getShowBoxes ()) {
+this.getBoxColour (this.av.getGlobalColourScheme (), seq, i);
+}return this.resBoxColour;
+}, "jalview.datamodel.SequenceI,~N");
+Clazz_overrideMethod (c$, "getResidueColour", 
+function (seq, position, fr) {
+var col = this.getResidueBoxColour (seq, position);
+if (fr != null) {
+col = fr.findFeatureColour (col, seq, position);
+}return col;
+}, "jalview.datamodel.SequenceI,~N,jalview.api.FeatureRenderer");
+Clazz_defineMethod (c$, "getBoxColour", 
+function (cs, seq, i) {
+if (cs != null) {
+this.resBoxColour = cs.findColourSeq (seq.getCharAt (i), i, seq);
+} else if (this.forOverview && !jalview.util.Comparison.isGap (seq.getCharAt (i))) {
+this.resBoxColour = java.awt.Color.lightGray;
+} else {
+this.resBoxColour = java.awt.Color.white;
+}}, "jalview.schemes.ColourSchemeI,jalview.datamodel.SequenceI,~N");
+Clazz_defineMethod (c$, "findSequenceColour", 
+function (seq, i) {
+this.allGroups = this.av.getAlignment ().findAllGroups (seq);
+this.drawBoxes (seq, i, i, 0);
+return this.resBoxColour;
+}, "jalview.datamodel.SequenceI,~N");
+Clazz_defineMethod (c$, "drawSequence", 
+function (seq, sg, start, end, y1) {
+if (seq == null) {
+return;
+}this.allGroups = sg;
+this.drawBoxes (seq, start, end, y1);
+if (this.av.validCharWidth) {
+this.drawText (seq, start, end, y1);
+}}, "jalview.datamodel.SequenceI,~A,~N,~N,~N");
+Clazz_defineMethod (c$, "drawBoxes", 
+function (seq, start, end, y1) {
+var i = start;
+var length = seq.getLength ();
+var curStart = -1;
+var curWidth = this.av.getCharWidth ();
+var avCharWidth = this.av.getCharWidth ();
+var avCharHeight = this.av.getCharHeight ();
+var tempColour = null;
+while (i <= end) {
+this.resBoxColour = java.awt.Color.white;
+if (i < length) {
+if (this.inCurrentSequenceGroup (i)) {
+if (this.currentSequenceGroup.getDisplayBoxes ()) {
+this.getBoxColour (this.currentSequenceGroup.cs, seq, i);
+}} else if (this.av.getShowBoxes ()) {
+this.getBoxColour (this.av.getGlobalColourScheme (), seq, i);
+}}if (this.resBoxColour !== tempColour) {
+if (tempColour != null) {
+this.graphics.fillRect (avCharWidth * (curStart - start), y1, curWidth, avCharHeight);
+}this.graphics.setColor (this.resBoxColour);
+curStart = i;
+curWidth = avCharWidth;
+tempColour = this.resBoxColour;
+} else {
+curWidth += avCharWidth;
+}i++;
+}
+this.graphics.fillRect (avCharWidth * (curStart - start), y1, curWidth, avCharHeight);
+}, "jalview.datamodel.SequenceI,~N,~N,~N");
+Clazz_defineMethod (c$, "drawText", 
+function (seq, start, end, y1) {
+var avCharWidth = this.av.getCharWidth ();
+var avCharHeight = this.av.getCharHeight ();
+var boldFont = null;
+var bold = false;
+if (this.av.isUpperCasebold ()) {
+boldFont =  new java.awt.Font (this.av.getFont ().getName (), 1, avCharHeight);
+this.graphics.setFont (this.av.getFont ());
+}y1 += avCharHeight - Clazz_doubleToInt (avCharHeight / 5);
+var charOffset = 0;
+if (end + 1 >= seq.getLength ()) {
+end = seq.getLength () - 1;
+}var s = ' ';
+var srep = this.av.isDisplayReferenceSeq ();
+for (var i = start; i <= end; i++) {
+this.graphics.setColor (java.awt.Color.black);
+s = seq.getCharAt (i);
+if (!this.renderGaps && jalview.util.Comparison.isGap (s)) {
+continue;
+}if (this.inCurrentSequenceGroup (i)) {
+if (!this.currentSequenceGroup.getDisplayText ()) {
+continue;
+}if (this.currentSequenceGroup.getColourText ()) {
+this.getBoxColour (this.currentSequenceGroup.cs, seq, i);
+this.graphics.setColor (this.resBoxColour.darker ());
+}if (this.currentSequenceGroup.getShowNonconserved ()) {
+s = this.getDisplayChar (srep, i, s, '.');
+}} else {
+if (!this.av.getShowText ()) {
+continue;
+}if (this.av.getColourText ()) {
+this.getBoxColour (this.av.getGlobalColourScheme (), seq, i);
+if (this.av.getShowBoxes ()) {
+this.graphics.setColor (this.resBoxColour.darker ());
+} else {
+this.graphics.setColor (this.resBoxColour);
+}}if (this.av.getShowUnconserved ()) {
+s = this.getDisplayChar (srep, i, s, '.');
+}}if (this.av.isUpperCasebold ()) {
+this.fm = this.graphics.getFontMetrics ();
+if ('A' <= s && s <= 'Z') {
+if (!bold) {
+this.graphics.setFont (boldFont);
+}bold = true;
+} else if (bold) {
+this.graphics.setFont (this.av.font);
+bold = false;
+}}charOffset = Clazz_doubleToInt ((avCharWidth - this.fm.charWidth (s)) / 2);
+awt2swing.Util.drawString (this.graphics, String.valueOf (s), charOffset + avCharWidth * (i - start), y1);
+}
+}, "jalview.datamodel.SequenceI,~N,~N,~N");
+Clazz_defineMethod (c$, "getDisplayChar", 
+ function (usesrep, position, s, c) {
+var conschar = (usesrep) ? this.av.getAlignment ().getSeqrep ().getCharAt (position) : this.av.getAlignmentConsensusAnnotation ().annotations[position].displayCharacter.charAt (0);
+if (conschar != '-' && s == conschar) {
+s = c;
+}return s;
+}, "~B,~N,~S,~S");
+Clazz_defineMethod (c$, "inCurrentSequenceGroup", 
+function (res) {
+if (this.allGroups == null) {
+return false;
+}for (var i = 0; i < this.allGroups.length; i++) {
+if (this.allGroups[i].getStartRes () <= res && this.allGroups[i].getEndRes () >= res) {
+this.currentSequenceGroup = this.allGroups[i];
+return true;
+}}
+return false;
+}, "~N");
+Clazz_defineMethod (c$, "drawHighlightedText", 
+function (seq, start, end, x1, y1) {
+var avCharWidth = this.av.getCharWidth ();
+var avCharHeight = this.av.getCharHeight ();
+var pady = Clazz_doubleToInt (avCharHeight / 5);
+var charOffset = 0;
+this.graphics.setColor (java.awt.Color.black);
+this.graphics.fillRect (x1, y1, avCharWidth * (end - start + 1), avCharHeight);
+this.graphics.setColor (java.awt.Color.white);
+var s = '~';
+if (this.av.validCharWidth) {
+for (var i = start; i <= end; i++) {
+if (i < seq.getLength ()) {
+s = seq.getCharAt (i);
+}charOffset = Clazz_doubleToInt ((avCharWidth - this.fm.charWidth (s)) / 2);
+awt2swing.Util.drawString (this.graphics, String.valueOf (s), charOffset + x1 + avCharWidth * (i - start), y1 + avCharHeight - pady);
+}
+}}, "jalview.datamodel.SequenceI,~N,~N,~N,~N");
+Clazz_defineMethod (c$, "drawCursor", 
+function (seq, res, x1, y1) {
+var pady = Clazz_doubleToInt (this.av.getCharHeight () / 5);
+var charOffset = 0;
+this.graphics.setColor (java.awt.Color.black);
+this.graphics.fillRect (x1, y1, this.av.getCharWidth (), this.av.getCharHeight ());
+this.graphics.setColor (java.awt.Color.white);
+this.graphics.setColor (java.awt.Color.white);
+var s = seq.getCharAt (res);
+if (this.av.validCharWidth) {
+charOffset = Clazz_doubleToInt ((this.av.getCharWidth () - this.fm.charWidth (s)) / 2);
+awt2swing.Util.drawString (this.graphics, String.valueOf (s), charOffset + x1, (y1 + this.av.getCharHeight ()) - pady);
+}}, "jalview.datamodel.SequenceI,~N,~N,~N");
+});
+Clazz_declarePackage ("jalview.api");
+Clazz_declareInterface (jalview.api, "SequenceRenderer");
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "jalview.appletgui.AnnotationRowFilter", "$.TitledPanel", "java.awt.event.ActionListener", "$.AdjustmentListener", "$.ItemListener", "$.MouseListener", "awt2swing.Checkbox", "$.Choice", "$.TextField", "java.awt.BorderLayout", "$.CardLayout"], "jalview.appletgui.AnnotationColumnChooser", ["awt2swing.Frame", "jalview.bin.JalviewLite", "jalview.datamodel.ColumnSelection", "$.GraphLine", "jalview.util.MessageManager", "jalview.viewmodel.annotationfilter.AnnotationFilterParameter", "java.awt.Color", "$.Dimension", "java.awt.event.MouseAdapter", "$.TextListener", "java.lang.Float", "java.util.Vector", "javax.swing.JPanel"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.annotations = null;
+this.actionPanel = null;
+this.thresholdPanel = null;
+this.switchableViewsPanel = null;
+this.switchableViewsLayout = null;
+this.noGraphFilterView = null;
+this.graphFilterView = null;
+this.annotationComboBoxPanel = null;
+this.borderLayout1 = null;
+this.gBorderLayout = null;
+this.ngBorderLayout = null;
+this.threshold = null;
+this.gStructureFilterPanel = null;
+this.ngStructureFilterPanel = null;
+this.currentStructureFilterPanel = null;
+this.currentSearchPanel = null;
+this.gSearchPanel = null;
+this.ngSearchPanel = null;
+this.currentFurtherActionPanel = null;
+this.gFurtherActionPanel = null;
+this.ngFurtherActionPanel = null;
+this.actionOption = 1;
+this.oldColumnSelection = null;
+if (!Clazz_isClassDefined ("jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel")) {
+jalview.appletgui.AnnotationColumnChooser.$AnnotationColumnChooser$FurtherActionPanel$ ();
+}
+if (!Clazz_isClassDefined ("jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel")) {
+jalview.appletgui.AnnotationColumnChooser.$AnnotationColumnChooser$StructureFilterPanel$ ();
+}
+if (!Clazz_isClassDefined ("jalview.appletgui.AnnotationColumnChooser.SearchPanel")) {
+jalview.appletgui.AnnotationColumnChooser.$AnnotationColumnChooser$SearchPanel$ ();
+}
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "AnnotationColumnChooser", jalview.appletgui.AnnotationRowFilter, [java.awt.event.ActionListener, java.awt.event.AdjustmentListener, java.awt.event.ItemListener, java.awt.event.MouseListener]);
+Clazz_prepareFields (c$, function () {
+this.annotations =  new awt2swing.Choice ();
+this.actionPanel =  new awt2swing.Panel ();
+this.thresholdPanel =  new jalview.appletgui.TitledPanel ();
+this.switchableViewsPanel =  new awt2swing.Panel ( new java.awt.CardLayout ());
+this.switchableViewsLayout = (this.switchableViewsPanel.getLayout ());
+this.noGraphFilterView =  new awt2swing.Panel ();
+this.graphFilterView =  new awt2swing.Panel ();
+this.annotationComboBoxPanel =  new awt2swing.Panel ();
+this.borderLayout1 =  new java.awt.BorderLayout ();
+this.gBorderLayout =  new java.awt.BorderLayout ();
+this.ngBorderLayout =  new java.awt.BorderLayout ();
+this.threshold =  new awt2swing.Choice ();
+});
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.appletgui.AnnotationColumnChooser, []);
+try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+});
+Clazz_makeConstructor (c$, 
+function (av, ap) {
+Clazz_superConstructor (this, jalview.appletgui.AnnotationColumnChooser, [av, ap]);
+this.frame =  new awt2swing.Frame ();
+this.frame.add (this);
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.select_by_annotation"), 520, 215);
+this.slider.addAdjustmentListener (this);
+this.slider.addMouseListener (this);
+if (av.getAlignment ().getAlignmentAnnotation () == null) {
+return;
+}this.setOldColumnSelection (av.getColumnSelection ());
+this.adjusting = true;
+var list =  new java.util.Vector ();
+var index = 1;
+for (var i = 0; i < av.getAlignment ().getAlignmentAnnotation ().length; i++) {
+var label = av.getAlignment ().getAlignmentAnnotation ()[i].label;
+if (!list.contains (label)) {
+list.addElement (label);
+} else {
+list.addElement (label + "_" + (index++));
+}}
+for (var i = 0; i < list.size (); i++) {
+this.annotations.addItem (list.elementAt (i).toString ());
+}
+this.populateThresholdComboBox (this.threshold);
+if (av.getAnnotationColumnSelectionState () != null) {
+this.currentSearchPanel = av.getAnnotationColumnSelectionState ().getCurrentSearchPanel ();
+this.currentStructureFilterPanel = av.getAnnotationColumnSelectionState ().getCurrentStructureFilterPanel ();
+this.annotations.select (new Integer (av.getAnnotationColumnSelectionState ().getAnnotations ().getSelectedIndex ()));
+this.threshold.select (new Integer (av.getAnnotationColumnSelectionState ().getThreshold ().getSelectedIndex ()));
+this.actionOption = av.getAnnotationColumnSelectionState ().getActionOption ();
+}try {
+this.jbInit ();
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+this.adjusting = false;
+this.updateView ();
+this.frame.invalidate ();
+this.frame.pack ();
+}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+Clazz_defineMethod (c$, "jbInit", 
+ function () {
+this.ok.setLabel (jalview.util.MessageManager.getString ("action.ok"));
+this.cancel.setLabel (jalview.util.MessageManager.getString ("action.cancel"));
+this.thresholdValue.setEnabled (false);
+this.thresholdValue.setColumns (7);
+this.ok.addActionListener (this);
+this.cancel.addActionListener (this);
+this.annotations.addItemListener (this);
+this.thresholdValue.addActionListener (this);
+this.threshold.addItemListener (this);
+this.slider.setBackground (java.awt.Color.white);
+this.slider.setEnabled (false);
+this.slider.setPreferredSize ( new java.awt.Dimension (100, 32));
+this.thresholdPanel.setBackground (java.awt.Color.white);
+this.actionPanel.setBackground (java.awt.Color.white);
+this.graphFilterView.setLayout (this.gBorderLayout);
+this.graphFilterView.setBackground (java.awt.Color.white);
+this.noGraphFilterView.setLayout (this.ngBorderLayout);
+this.noGraphFilterView.setBackground (java.awt.Color.white);
+this.annotationComboBoxPanel.setBackground (java.awt.Color.white);
+this.gSearchPanel = Clazz_innerTypeInstance (jalview.appletgui.AnnotationColumnChooser.SearchPanel, this, null, this);
+this.ngSearchPanel = Clazz_innerTypeInstance (jalview.appletgui.AnnotationColumnChooser.SearchPanel, this, null, this);
+this.gFurtherActionPanel = Clazz_innerTypeInstance (jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel, this, null, this);
+this.ngFurtherActionPanel = Clazz_innerTypeInstance (jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel, this, null, this);
+this.gStructureFilterPanel = Clazz_innerTypeInstance (jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel, this, null, this);
+this.ngStructureFilterPanel = Clazz_innerTypeInstance (jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel, this, null, this);
+this.thresholdPanel.setTitle ("Threshold Filter");
+this.thresholdPanel.add (this.getThreshold ());
+this.thresholdPanel.add (this.slider);
+this.thresholdPanel.add (this.thresholdValue);
+this.actionPanel.add (this.ok);
+this.actionPanel.add (this.cancel);
+var staticPanel =  new javax.swing.JPanel ();
+staticPanel.setLayout ( new java.awt.BorderLayout ());
+staticPanel.setBackground (java.awt.Color.white);
+staticPanel.add (this.gSearchPanel, "North");
+staticPanel.add (this.gStructureFilterPanel, "South");
+this.graphFilterView.add (staticPanel, "North");
+this.graphFilterView.add (this.thresholdPanel, "Center");
+this.graphFilterView.add (this.gFurtherActionPanel, "South");
+this.noGraphFilterView.add (this.ngSearchPanel, "First");
+this.noGraphFilterView.add (this.ngStructureFilterPanel, "Center");
+this.noGraphFilterView.add (this.ngFurtherActionPanel, "Center");
+this.annotationComboBoxPanel.add (this.getAnnotations ());
+this.switchableViewsPanel.add (this.noGraphFilterView, jalview.appletgui.AnnotationColumnChooser.NO_GRAPH_VIEW);
+this.switchableViewsPanel.add (this.graphFilterView, jalview.appletgui.AnnotationColumnChooser.GRAPH_VIEW);
+this.setLayout (this.borderLayout1);
+this.add (this.annotationComboBoxPanel, "First");
+this.add (this.switchableViewsPanel, "Center");
+this.add (this.actionPanel, "South");
+this.selectedAnnotationChanged ();
+this.validate ();
+});
+Clazz_overrideMethod (c$, "reset", 
+function () {
+if (this.getOldColumnSelection () != null) {
+this.av.getColumnSelection ().clear ();
+if (this.av.getAnnotationColumnSelectionState () != null) {
+var oldSelection = this.av.getAnnotationColumnSelectionState ().getOldColumnSelection ();
+if (oldSelection != null && oldSelection.getHiddenColumns () != null && !oldSelection.getHiddenColumns ().isEmpty ()) {
+for (var itr = oldSelection.getHiddenColumns ().iterator (); itr.hasNext (); ) {
+var positions = itr.next ();
+this.av.hideColumns (positions[0], positions[1]);
+}
+}this.av.setColumnSelection (oldSelection);
+}this.ap.paintAlignment (true);
+}});
+Clazz_overrideMethod (c$, "adjustmentValueChanged", 
+function (evt) {
+if (!this.adjusting) {
+this.thresholdValue.setText ((this.slider.getValue () / 1000) + "");
+this.valueChanged (!this.sliderDragging);
+}}, "java.awt.event.AdjustmentEvent");
+Clazz_defineMethod (c$, "addSliderMouseListeners", 
+function () {
+this.slider.addMouseListener (((Clazz_isClassDefined ("jalview.appletgui.AnnotationColumnChooser$1") ? 0 : jalview.appletgui.AnnotationColumnChooser.$AnnotationColumnChooser$1$ ()), Clazz_innerTypeInstance (jalview.appletgui.AnnotationColumnChooser$1, this, null)));
+});
+Clazz_overrideMethod (c$, "valueChanged", 
+function (updateAllAnnotation) {
+if (this.slider.isEnabled ()) {
+this.getCurrentAnnotation ().threshold.value = this.slider.getValue () / 1000;
+this.updateView ();
+this.ap.paintAlignment (false);
+}}, "~B");
+Clazz_defineMethod (c$, "getThreshold", 
+function () {
+return this.threshold;
+});
+Clazz_defineMethod (c$, "setThreshold", 
+function (threshold) {
+this.threshold = threshold;
+}, "awt2swing.Choice");
+Clazz_defineMethod (c$, "getAnnotations", 
+function () {
+return this.annotations;
+});
+Clazz_defineMethod (c$, "setAnnotations", 
+function (annotations) {
+this.annotations = annotations;
+}, "awt2swing.Choice");
+Clazz_overrideMethod (c$, "updateView", 
+function () {
+if (this.adjusting) {
+return;
+}var filterParams =  new jalview.viewmodel.annotationfilter.AnnotationFilterParameter ();
+this.setCurrentAnnotation (this.av.getAlignment ().getAlignmentAnnotation ()[this.getAnnotations ().getSelectedIndex ()]);
+var selectedThresholdItem = this.getSelectedThresholdItem (this.getThreshold ().getSelectedIndex ());
+this.slider.setEnabled (true);
+this.thresholdValue.setEnabled (true);
+if (selectedThresholdItem == -1) {
+this.slider.setEnabled (false);
+this.thresholdValue.setEnabled (false);
+this.thresholdValue.setText ("");
+} else if (selectedThresholdItem != -1) {
+if (this.getCurrentAnnotation ().threshold == null) {
+this.getCurrentAnnotation ().setThreshold ( new jalview.datamodel.GraphLine ((this.getCurrentAnnotation ().graphMax - this.getCurrentAnnotation ().graphMin) / 2, "Threshold", java.awt.Color.black));
+}this.adjusting = true;
+var range = this.getCurrentAnnotation ().graphMax * 1000 - this.getCurrentAnnotation ().graphMin * 1000;
+this.slider.setMinimum (Clazz_floatToInt (this.getCurrentAnnotation ().graphMin * 1000));
+this.slider.setMaximum (Clazz_floatToInt (this.getCurrentAnnotation ().graphMax * 1000));
+this.slider.setValue (Clazz_floatToInt (this.getCurrentAnnotation ().threshold.value * 1000));
+this.thresholdValue.setText (this.getCurrentAnnotation ().threshold.value + "");
+this.slider.setEnabled (true);
+this.thresholdValue.setEnabled (true);
+this.adjusting = false;
+filterParams.setThresholdType (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.NO_THRESHOLD);
+if (this.getCurrentAnnotation ().graph != 0) {
+filterParams.setThresholdValue (this.getCurrentAnnotation ().threshold.value);
+if (selectedThresholdItem == 1) {
+filterParams.setThresholdType (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.ABOVE_THRESHOLD);
+} else if (selectedThresholdItem == 0) {
+filterParams.setThresholdType (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.BELOW_THRESHOLD);
+}}}if (this.currentStructureFilterPanel != null) {
+if (this.currentStructureFilterPanel.alphaHelix.getState ()) {
+filterParams.setFilterAlphaHelix (true);
+}if (this.currentStructureFilterPanel.betaStrand.getState ()) {
+filterParams.setFilterBetaSheet (true);
+}if (this.currentStructureFilterPanel.turn.getState ()) {
+filterParams.setFilterTurn (true);
+}}if (this.currentSearchPanel != null) {
+if (!this.currentSearchPanel.searchBox.getText ().isEmpty ()) {
+this.currentSearchPanel.description.setEnabled (true);
+this.currentSearchPanel.displayName.setEnabled (true);
+filterParams.setRegexString (this.currentSearchPanel.searchBox.getText ());
+if (this.currentSearchPanel.displayName.getState ()) {
+filterParams.addRegexSearchField (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DISPLAY_STRING);
+}if (this.currentSearchPanel.description.getState ()) {
+filterParams.addRegexSearchField (jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DESCRIPTION);
+}} else {
+this.currentSearchPanel.description.setEnabled (false);
+this.currentSearchPanel.displayName.setEnabled (false);
+}}this.av.getColumnSelection ().filterAnnotations (this.getCurrentAnnotation ().annotations, filterParams);
+this.av.showAllHiddenColumns ();
+if (this.getActionOption () == jalview.appletgui.AnnotationColumnChooser.ACTION_OPTION_HIDE) {
+this.av.hideSelectedColumns ();
+}filterParams = null;
+this.av.setAnnotationColumnSelectionState (this);
+this.ap.paintAlignment (true);
+});
+Clazz_defineMethod (c$, "getOldColumnSelection", 
+function () {
+return this.oldColumnSelection;
+});
+Clazz_defineMethod (c$, "setOldColumnSelection", 
+function (currentColumnSelection) {
+if (currentColumnSelection != null) {
+this.oldColumnSelection =  new jalview.datamodel.ColumnSelection (currentColumnSelection);
+}}, "jalview.datamodel.ColumnSelection");
+Clazz_defineMethod (c$, "getCurrentFutherActionPanel", 
+function () {
+return this.currentFurtherActionPanel;
+});
+Clazz_defineMethod (c$, "setCurrentFutherActionPanel", 
+function (currentFutherActionPanel) {
+this.currentFurtherActionPanel = currentFutherActionPanel;
+}, "jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel");
+Clazz_defineMethod (c$, "getCurrentSearchPanel", 
+function () {
+return this.currentSearchPanel;
+});
+Clazz_defineMethod (c$, "setCurrentSearchPanel", 
+function (currentSearchPanel) {
+this.currentSearchPanel = currentSearchPanel;
+}, "jalview.appletgui.AnnotationColumnChooser.SearchPanel");
+Clazz_defineMethod (c$, "getActionOption", 
+function () {
+return this.actionOption;
+});
+Clazz_defineMethod (c$, "setActionOption", 
+function (actionOption) {
+this.actionOption = actionOption;
+}, "~N");
+Clazz_defineMethod (c$, "getCurrentStructureFilterPanel", 
+function () {
+return this.currentStructureFilterPanel;
+});
+Clazz_defineMethod (c$, "setCurrentStructureFilterPanel", 
+function (currentStructureFilterPanel) {
+this.currentStructureFilterPanel = currentStructureFilterPanel;
+}, "jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel");
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (e) {
+if (e.getSource () === this.annotations) {
+this.selectedAnnotationChanged ();
+} else if (e.getSource () === this.threshold) {
+this.threshold_actionPerformed (null);
+}}, "java.awt.event.ItemEvent");
+Clazz_defineMethod (c$, "selectedAnnotationChanged", 
+function () {
+var currentView = jalview.appletgui.AnnotationColumnChooser.NO_GRAPH_VIEW;
+if (this.av.getAlignment ().getAlignmentAnnotation ()[this.getAnnotations ().getSelectedIndex ()].graph != 0) {
+currentView = jalview.appletgui.AnnotationColumnChooser.GRAPH_VIEW;
+}this.gSearchPanel.syncState ();
+this.gFurtherActionPanel.syncState ();
+this.gStructureFilterPanel.syncState ();
+this.ngSearchPanel.syncState ();
+this.ngFurtherActionPanel.syncState ();
+this.ngStructureFilterPanel.syncState ();
+this.switchableViewsLayout.show (this.switchableViewsPanel, currentView);
+this.updateView ();
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.thresholdValue) {
+try {
+var f =  new Float (this.thresholdValue.getText ()).floatValue ();
+this.slider.setValue (Clazz_floatToInt (f * 1000));
+this.adjustmentValueChanged (null);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+} else if (evt.getSource () === this.ok) {
+this.ok_actionPerformed (null);
+} else if (evt.getSource () === this.cancel) {
+this.cancel_actionPerformed (null);
+} else if (evt.getSource () === this.thresholdValue) {
+this.thresholdValue_actionPerformed (null);
+} else {
+this.updateView ();
+}}, "java.awt.event.ActionEvent");
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mousePressed", 
+function (e) {
+if (e.getSource () === this.slider) {
+this.updateView ();
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (e) {
+if (e.getSource () === this.slider) {
+this.updateView ();
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (e) {
+if (e.getSource () === this.slider) {
+this.updateView ();
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (e) {
+if (e.getSource () === this.slider) {
+this.updateView ();
+}}, "java.awt.event.MouseEvent");
+c$.$AnnotationColumnChooser$FurtherActionPanel$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.aColChooser = null;
+this.furtherAction = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui.AnnotationColumnChooser, "FurtherActionPanel", awt2swing.Panel, java.awt.event.ItemListener);
+Clazz_prepareFields (c$, function () {
+this.furtherAction =  new awt2swing.Choice ();
+});
+Clazz_makeConstructor (c$, 
+function (a) {
+Clazz_superConstructor (this, jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel, []);
+this.aColChooser = a;
+this.furtherAction.addItem ("Select");
+this.furtherAction.addItem ("Hide");
+this.furtherAction.addItemListener (this);
+this.syncState ();
+this.add (this.furtherAction);
+}, "jalview.appletgui.AnnotationColumnChooser");
+Clazz_defineMethod (c$, "syncState", 
+function () {
+if (this.aColChooser.getActionOption () == jalview.appletgui.AnnotationColumnChooser.ACTION_OPTION_HIDE) {
+this.furtherAction.select ("Hide");
+} else {
+this.furtherAction.select ("Select");
+}});
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (a) {
+this.aColChooser.setCurrentFutherActionPanel (this);
+if (this.furtherAction.getSelectedItem ().toString ().equalsIgnoreCase ("Select")) {
+this.b$["jalview.appletgui.AnnotationColumnChooser"].setActionOption (1);
+this.b$["jalview.appletgui.AnnotationColumnChooser"].updateView ();
+} else {
+this.b$["jalview.appletgui.AnnotationColumnChooser"].setActionOption (jalview.appletgui.AnnotationColumnChooser.ACTION_OPTION_HIDE);
+this.b$["jalview.appletgui.AnnotationColumnChooser"].updateView ();
+}}, "java.awt.event.ItemEvent");
+c$ = Clazz_p0p ();
+};
+c$.$AnnotationColumnChooser$StructureFilterPanel$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.aColChooser = null;
+this.alphaHelix = null;
+this.betaStrand = null;
+this.turn = null;
+this.all = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui.AnnotationColumnChooser, "StructureFilterPanel", jalview.appletgui.TitledPanel, java.awt.event.ItemListener);
+Clazz_prepareFields (c$, function () {
+this.alphaHelix =  new awt2swing.Checkbox ();
+this.betaStrand =  new awt2swing.Checkbox ();
+this.turn =  new awt2swing.Checkbox ();
+this.all =  new awt2swing.Checkbox ();
+});
+Clazz_makeConstructor (c$, 
+function (a) {
+Clazz_superConstructor (this, jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel, []);
+this.aColChooser = a;
+this.alphaHelix.setLabel (jalview.util.MessageManager.getString ("label.alpha_helix"));
+this.alphaHelix.setBackground (java.awt.Color.white);
+this.alphaHelix.addItemListener (this);
+this.betaStrand.setLabel (jalview.util.MessageManager.getString ("label.beta_strand"));
+this.betaStrand.setBackground (java.awt.Color.white);
+this.betaStrand.addItemListener (this);
+this.turn.setLabel (jalview.util.MessageManager.getString ("label.turn"));
+this.turn.setBackground (java.awt.Color.white);
+this.turn.addItemListener (this);
+this.all.setLabel (jalview.util.MessageManager.getString ("label.select_all"));
+this.all.setBackground (java.awt.Color.white);
+this.all.addItemListener (this);
+this.setBackground (java.awt.Color.white);
+this.setTitle ("Structure Filter");
+this.add (this.all);
+this.add (this.alphaHelix);
+this.add (this.betaStrand);
+this.add (this.turn);
+}, "jalview.appletgui.AnnotationColumnChooser");
+Clazz_defineMethod (c$, "alphaHelix_actionPerformed", 
+function () {
+this.updateSelectAllState ();
+this.aColChooser.setCurrentStructureFilterPanel (this);
+this.aColChooser.updateView ();
+});
+Clazz_defineMethod (c$, "betaStrand_actionPerformed", 
+function () {
+this.updateSelectAllState ();
+this.aColChooser.setCurrentStructureFilterPanel (this);
+this.aColChooser.updateView ();
+});
+Clazz_defineMethod (c$, "turn_actionPerformed", 
+function () {
+this.updateSelectAllState ();
+this.aColChooser.setCurrentStructureFilterPanel (this);
+this.aColChooser.updateView ();
+});
+Clazz_defineMethod (c$, "all_actionPerformed", 
+function () {
+if (this.all.getState ()) {
+this.alphaHelix.setState (true);
+this.betaStrand.setState (true);
+this.turn.setState (true);
+} else {
+this.alphaHelix.setState (false);
+this.betaStrand.setState (false);
+this.turn.setState (false);
+}this.aColChooser.setCurrentStructureFilterPanel (this);
+this.aColChooser.updateView ();
+});
+Clazz_defineMethod (c$, "updateSelectAllState", 
+function () {
+if (this.alphaHelix.getState () && this.betaStrand.getState () && this.turn.getState ()) {
+this.all.setState (true);
+} else {
+this.all.setState (false);
+}});
+Clazz_defineMethod (c$, "syncState", 
+function () {
+var a = this.aColChooser.getCurrentStructureFilterPanel ();
+if (a != null) {
+this.alphaHelix.setState (a.alphaHelix.getState ());
+this.betaStrand.setState (a.betaStrand.getState ());
+this.turn.setState (a.turn.getState ());
+if (a.all.getState ()) {
+this.all.setState (true);
+this.alphaHelix.setState (true);
+this.betaStrand.setState (true);
+this.turn.setState (true);
+}}});
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (a) {
+if (a.getSource () === this.alphaHelix) {
+this.alphaHelix_actionPerformed ();
+} else if (a.getSource () === this.betaStrand) {
+this.betaStrand_actionPerformed ();
+} else if (a.getSource () === this.turn) {
+this.turn_actionPerformed ();
+} else if (a.getSource () === this.all) {
+this.all_actionPerformed ();
+}}, "java.awt.event.ItemEvent");
+c$ = Clazz_p0p ();
+};
+c$.$AnnotationColumnChooser$SearchPanel$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.aColChooser = null;
+this.displayName = null;
+this.description = null;
+this.searchBox = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui.AnnotationColumnChooser, "SearchPanel", jalview.appletgui.TitledPanel, java.awt.event.ItemListener);
+Clazz_prepareFields (c$, function () {
+this.displayName =  new awt2swing.Checkbox ();
+this.description =  new awt2swing.Checkbox ();
+this.searchBox =  new awt2swing.TextField (10);
+});
+Clazz_makeConstructor (c$, 
+function (a) {
+Clazz_superConstructor (this, jalview.appletgui.AnnotationColumnChooser.SearchPanel, []);
+this.aColChooser = a;
+this.searchBox.addTextListener (((Clazz_isClassDefined ("jalview.appletgui.AnnotationColumnChooser$SearchPanel$1") ? 0 : jalview.appletgui.AnnotationColumnChooser.SearchPanel.$AnnotationColumnChooser$SearchPanel$1$ ()), Clazz_innerTypeInstance (jalview.appletgui.AnnotationColumnChooser$SearchPanel$1, this, null)));
+this.displayName.setLabel (jalview.util.MessageManager.getString ("label.display_name"));
+this.displayName.setEnabled (false);
+this.displayName.addItemListener (this);
+this.description.setLabel (jalview.util.MessageManager.getString ("label.description"));
+this.description.setEnabled (false);
+this.description.addItemListener (this);
+this.setTitle ("Search Filter");
+this.syncState ();
+this.add (this.searchBox);
+this.add (this.displayName);
+this.add (this.description);
+}, "jalview.appletgui.AnnotationColumnChooser");
+Clazz_defineMethod (c$, "displayNameCheckboxAction", 
+function () {
+this.aColChooser.setCurrentSearchPanel (this);
+this.aColChooser.updateView ();
+});
+Clazz_defineMethod (c$, "discriptionCheckboxAction", 
+function () {
+this.aColChooser.setCurrentSearchPanel (this);
+this.aColChooser.updateView ();
+});
+Clazz_defineMethod (c$, "searchStringAction", 
+function () {
+this.aColChooser.setCurrentSearchPanel (this);
+this.aColChooser.updateView ();
+});
+Clazz_defineMethod (c$, "syncState", 
+function () {
+var a = this.aColChooser.getCurrentSearchPanel ();
+if (a != null) {
+this.description.setEnabled (a.description.isEnabled ());
+this.description.setState (a.description.getState ());
+this.displayName.setEnabled (a.displayName.isEnabled ());
+this.displayName.setState (a.displayName.getState ());
+this.searchBox.setText (a.searchBox.getText ());
+}});
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (a) {
+if (a.getSource () === this.displayName) {
+this.displayNameCheckboxAction ();
+} else if (a.getSource () === this.description) {
+this.discriptionCheckboxAction ();
+}}, "java.awt.event.ItemEvent");
+c$.$AnnotationColumnChooser$SearchPanel$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "AnnotationColumnChooser$SearchPanel$1", null, java.awt.event.TextListener);
+Clazz_overrideMethod (c$, "textValueChanged", 
+function (a) {
+this.b$["jalview.appletgui.AnnotationColumnChooser.SearchPanel"].searchStringAction ();
+}, "java.awt.event.TextEvent");
+c$ = Clazz_p0p ();
+};
+c$ = Clazz_p0p ();
+};
+c$.$AnnotationColumnChooser$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "AnnotationColumnChooser$1", java.awt.event.MouseAdapter);
+Clazz_defineMethod (c$, "mousePressed", 
+function (e) {
+this.b$["jalview.appletgui.AnnotationColumnChooser"].sliderDragging = true;
+Clazz_superCall (this, jalview.appletgui.AnnotationColumnChooser$1, "mousePressed", [e]);
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "mouseDragged", 
+function (e) {
+this.b$["jalview.appletgui.AnnotationColumnChooser"].sliderDragging = true;
+Clazz_superCall (this, jalview.appletgui.AnnotationColumnChooser$1, "mouseDragged", [e]);
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (evt) {
+if (this.b$["jalview.appletgui.AnnotationColumnChooser"].sliderDragging) {
+this.b$["jalview.appletgui.AnnotationColumnChooser"].sliderDragging = false;
+this.b$["jalview.appletgui.AnnotationColumnChooser"].valueChanged (true);
+}this.b$["jalview.appletgui.AnnotationColumnChooser"].ap.paintAlignment (true);
+}, "java.awt.event.MouseEvent");
+c$ = Clazz_p0p ();
+};
+Clazz_defineStatics (c$,
+"ACTION_OPTION_SELECT", 1,
+"ACTION_OPTION_HIDE", 2,
+"NO_GRAPH_VIEW", "0",
+"GRAPH_VIEW", "1");
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "$.Button", "$.Checkbox", "$.Scrollbar", "$.TextField"], "jalview.appletgui.AnnotationRowFilter", ["jalview.util.MessageManager", "java.lang.Float", "java.util.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.av = null;
+this.ap = null;
+this.annmap = null;
+this.enableSeqAss = false;
+this.currentAnnotation = null;
+this.adjusting = false;
+this.currentColours = null;
+this.minColour = null;
+this.maxColour = null;
+this.seqAssociated = null;
+this.thresholdIsMin = null;
+this.slider = null;
+this.thresholdValue = null;
+this.frame = null;
+this.ok = null;
+this.cancel = null;
+this.sliderDragging = false;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "AnnotationRowFilter", awt2swing.Panel);
+Clazz_prepareFields (c$, function () {
+this.currentColours =  new awt2swing.Checkbox ();
+this.minColour =  new awt2swing.Panel ();
+this.maxColour =  new awt2swing.Panel ();
+this.seqAssociated =  new awt2swing.Checkbox ();
+this.thresholdIsMin =  new awt2swing.Checkbox ();
+this.slider =  new awt2swing.Scrollbar (0);
+this.thresholdValue =  new awt2swing.TextField (20);
+this.ok =  new awt2swing.Button ();
+this.cancel =  new awt2swing.Button ();
+});
+Clazz_makeConstructor (c$, 
+function (av, ap) {
+Clazz_superConstructor (this, jalview.appletgui.AnnotationRowFilter, []);
+this.av = av;
+this.ap = ap;
+}, "jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.appletgui.AnnotationRowFilter, []);
+});
+Clazz_defineMethod (c$, "getAnnotationItems", 
+function (isSeqAssociated) {
+var list =  new java.util.Vector ();
+var index = 1;
+var anmap =  Clazz_newIntArray (this.av.getAlignment ().getAlignmentAnnotation ().length, 0);
+for (var i = 0; i < this.av.getAlignment ().getAlignmentAnnotation ().length; i++) {
+if (this.av.getAlignment ().getAlignmentAnnotation ()[i].sequenceRef == null) {
+if (isSeqAssociated) {
+continue;
+}} else {
+this.enableSeqAss = true;
+}var label = this.av.getAlignment ().getAlignmentAnnotation ()[i].label;
+if (!list.contains (label)) {
+anmap[list.size ()] = i;
+list.add (label);
+} else {
+if (!isSeqAssociated) {
+anmap[list.size ()] = i;
+list.add (label + "_" + (index++));
+}}}
+this.annmap =  Clazz_newIntArray (list.size (), 0);
+System.arraycopy (anmap, 0, this.annmap, 0, this.annmap.length);
+return list;
+}, "~B");
+Clazz_defineMethod (c$, "getSelectedThresholdItem", 
+function (indexValue) {
+var selectedThresholdItem = -1;
+if (indexValue == 1) {
+selectedThresholdItem = 1;
+} else if (indexValue == 2) {
+selectedThresholdItem = 0;
+}return selectedThresholdItem;
+}, "~N");
+Clazz_defineMethod (c$, "modelChanged", 
+function () {
+this.seqAssociated.setEnabled (this.enableSeqAss);
+});
+Clazz_defineMethod (c$, "ok_actionPerformed", 
+function (e) {
+this.updateView ();
+this.frame.setVisible (false);
+}, "java.awt.event.ActionEvent");
+Clazz_defineMethod (c$, "cancel_actionPerformed", 
+function (e) {
+this.reset ();
+this.ap.paintAlignment (true);
+this.frame.setVisible (false);
+}, "java.awt.event.ActionEvent");
+Clazz_defineMethod (c$, "thresholdCheck_actionPerformed", 
+function (e) {
+this.updateView ();
+}, "java.awt.event.ActionEvent");
+Clazz_defineMethod (c$, "annotations_actionPerformed", 
+function (e) {
+this.updateView ();
+}, "java.awt.event.ActionEvent");
+Clazz_defineMethod (c$, "threshold_actionPerformed", 
+function (e) {
+this.updateView ();
+}, "java.awt.event.ActionEvent");
+Clazz_defineMethod (c$, "thresholdValue_actionPerformed", 
+function (e) {
+try {
+var f = Float.parseFloat (this.thresholdValue.getText ());
+this.slider.setValue (Clazz_floatToInt (f * 1000));
+this.updateView ();
+} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+}, "java.awt.event.ActionEvent");
+Clazz_defineMethod (c$, "populateThresholdComboBox", 
+function (threshold) {
+threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_no_thereshold"));
+threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_above_thereshold"));
+threshold.addItem (jalview.util.MessageManager.getString ("label.threshold_feature_below_thereshold"));
+}, "awt2swing.Choice");
+Clazz_defineMethod (c$, "getCurrentAnnotation", 
+function () {
+return this.currentAnnotation;
+});
+Clazz_defineMethod (c$, "setCurrentAnnotation", 
+function (currentAnnotation) {
+this.currentAnnotation = currentAnnotation;
+}, "jalview.datamodel.AlignmentAnnotation");
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "java.awt.Insets"], "jalview.appletgui.TitledPanel", ["awt2swing.Util"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.title = null;
+this.$insets = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "TitledPanel", awt2swing.Panel);
+Clazz_prepareFields (c$, function () {
+this.$insets =  new java.awt.Insets (10, 10, 10, 10);
+});
+Clazz_makeConstructor (c$, 
+function () {
+this.construct ("");
+});
+Clazz_makeConstructor (c$, 
+function (title) {
+Clazz_superConstructor (this, jalview.appletgui.TitledPanel, []);
+this.setTitle (title);
+}, "~S");
+Clazz_defineMethod (c$, "getInsets", 
+function () {
+return this.$insets;
+});
+Clazz_defineMethod (c$, "paintComponent", 
+function (g) {
+Clazz_superCall (this, jalview.appletgui.TitledPanel, "paintComponent", [g]);
+g.setColor (this.getForeground ());
+g.drawRect (5, 5, this.getWidth () - 10, this.getHeight () - 10);
+var width = g.getFontMetrics ().stringWidth (this.getTitle ());
+g.setColor (this.getBackground ());
+g.fillRect (10, 0, width, 10);
+g.setColor (this.getForeground ());
+awt2swing.Util.drawString (g, this.getTitle (), 10, 10);
+}, "java.awt.Graphics");
+Clazz_defineMethod (c$, "getTitle", 
+function () {
+return this.title;
+});
+Clazz_defineMethod (c$, "setTitle", 
+function (title) {
+this.title = title;
+}, "~S");
+});
+Clazz_declarePackage ("java.awt");
+Clazz_load (["java.awt.LayoutManager2", "java.io.ObjectStreamField", "java.util.Hashtable", "$.Vector"], "java.awt.CardLayout", ["java.lang.IllegalArgumentException", "java.awt.Dimension"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.vector = null;
+if (!Clazz_isClassDefined ("java.awt.CardLayout.Card")) {
+java.awt.CardLayout.$CardLayout$Card$ ();
+}
+this.currentCard = 0;
+this.hgap = 0;
+this.vgap = 0;
+Clazz_instantialize (this, arguments);
+}, java.awt, "CardLayout", null, [java.awt.LayoutManager2, java.io.Serializable]);
+Clazz_prepareFields (c$, function () {
+this.vector =  new java.util.Vector ();
+});
+Clazz_makeConstructor (c$, 
+function () {
+this.construct (0, 0);
+});
+Clazz_makeConstructor (c$, 
+function (hgap, vgap) {
+this.hgap = hgap;
+this.vgap = vgap;
+}, "~N,~N");
+Clazz_defineMethod (c$, "getHgap", 
+function () {
+return this.hgap;
+});
+Clazz_defineMethod (c$, "setHgap", 
+function (hgap) {
+this.hgap = hgap;
+}, "~N");
+Clazz_defineMethod (c$, "getVgap", 
+function () {
+return this.vgap;
+});
+Clazz_defineMethod (c$, "setVgap", 
+function (vgap) {
+this.vgap = vgap;
+}, "~N");
+Clazz_defineMethod (c$, "addLayoutComponent", 
+function (comp, constraints) {
+{
+if (constraints == null) {
+constraints = "";
+}if (Clazz_instanceOf (constraints, String)) {
+this.addLayoutComponent (constraints, comp);
+} else {
+throw  new IllegalArgumentException ("cannot add to layout: constraint must be a string");
+}}}, "java.awt.Component,~O");
+Clazz_defineMethod (c$, "addLayoutComponent", 
+function (name, comp) {
+{
+if (!this.vector.isEmpty ()) {
+comp.setVisible (false);
+}for (var i = 0; i < this.vector.size (); i++) {
+if ((this.vector.get (i)).name.equals (name)) {
+(this.vector.get (i)).comp = comp;
+return;
+}}
+this.vector.add (Clazz_innerTypeInstance (java.awt.CardLayout.Card, this, null, name, comp));
+}}, "~S,java.awt.Component");
+Clazz_overrideMethod (c$, "removeLayoutComponent", 
+function (comp) {
+{
+for (var i = 0; i < this.vector.size (); i++) {
+if ((this.vector.get (i)).comp === comp) {
+if (comp.isVisible () && (comp.getParent () != null)) {
+this.next (comp.getParent ());
+}this.vector.remove (i);
+if (this.currentCard > i) {
+this.currentCard--;
+}break;
+}}
+}}, "java.awt.Component");
+Clazz_overrideMethod (c$, "preferredLayoutSize", 
+function (parent) {
+{
+var insets = parent.getInsets ();
+var ncomponents = parent.getComponentCount ();
+var w = 0;
+var h = 0;
+for (var i = 0; i < ncomponents; i++) {
+var comp = parent.getComponent (i);
+var d = comp.getPreferredSize ();
+if (d.width > w) {
+w = d.width;
+}if (d.height > h) {
+h = d.height;
+}}
+return  new java.awt.Dimension (insets.left + insets.right + w + this.hgap * 2, insets.top + insets.bottom + h + this.vgap * 2);
+}}, "java.awt.Container");
+Clazz_overrideMethod (c$, "minimumLayoutSize", 
+function (parent) {
+{
+var insets = parent.getInsets ();
+var ncomponents = parent.getComponentCount ();
+var w = 0;
+var h = 0;
+for (var i = 0; i < ncomponents; i++) {
+var comp = parent.getComponent (i);
+var d = comp.getMinimumSize ();
+if (d.width > w) {
+w = d.width;
+}if (d.height > h) {
+h = d.height;
+}}
+return  new java.awt.Dimension (insets.left + insets.right + w + this.hgap * 2, insets.top + insets.bottom + h + this.vgap * 2);
+}}, "java.awt.Container");
+Clazz_overrideMethod (c$, "maximumLayoutSize", 
+function (target) {
+return  new java.awt.Dimension (2147483647, 2147483647);
+}, "java.awt.Container");
+Clazz_overrideMethod (c$, "getLayoutAlignmentX", 
+function (parent) {
+return 0.5;
+}, "java.awt.Container");
+Clazz_overrideMethod (c$, "getLayoutAlignmentY", 
+function (parent) {
+return 0.5;
+}, "java.awt.Container");
+Clazz_overrideMethod (c$, "invalidateLayout", 
+function (target) {
+}, "java.awt.Container");
+Clazz_overrideMethod (c$, "layoutContainer", 
+function (parent) {
+{
+var insets = parent.getInsets ();
+var ncomponents = parent.getComponentCount ();
+var comp = null;
+var currentFound = false;
+for (var i = 0; i < ncomponents; i++) {
+comp = parent.getComponent (i);
+comp.setBounds (this.hgap + insets.left, this.vgap + insets.top, parent.width - (this.hgap * 2 + insets.left + insets.right), parent.height - (this.vgap * 2 + insets.top + insets.bottom));
+if (comp.isVisible ()) {
+currentFound = true;
+}}
+if (!currentFound && ncomponents > 0) {
+parent.getComponent (0).setVisible (true);
+}}}, "java.awt.Container");
+Clazz_defineMethod (c$, "checkLayout", 
+function (parent) {
+if (parent.getLayout () !== this) {
+throw  new IllegalArgumentException ("wrong parent for CardLayout");
+}}, "java.awt.Container");
+Clazz_defineMethod (c$, "first", 
+function (parent) {
+{
+this.checkLayout (parent);
+var ncomponents = parent.getComponentCount ();
+for (var i = 0; i < ncomponents; i++) {
+var comp = parent.getComponent (i);
+if (comp.isVisible ()) {
+comp.setVisible (false);
+break;
+}}
+if (ncomponents > 0) {
+this.currentCard = 0;
+parent.getComponent (0).setVisible (true);
+parent.validate ();
+}}}, "java.awt.Container");
+Clazz_defineMethod (c$, "next", 
+function (parent) {
+{
+this.checkLayout (parent);
+var ncomponents = parent.getComponentCount ();
+for (var i = 0; i < ncomponents; i++) {
+var comp = parent.getComponent (i);
+if (comp.isVisible ()) {
+comp.setVisible (false);
+this.currentCard = (i + 1) % ncomponents;
+comp = parent.getComponent (this.currentCard);
+comp.setVisible (true);
+parent.validate ();
+return;
+}}
+this.showDefaultComponent (parent);
+}}, "java.awt.Container");
+Clazz_defineMethod (c$, "previous", 
+function (parent) {
+{
+this.checkLayout (parent);
+var ncomponents = parent.getComponentCount ();
+for (var i = 0; i < ncomponents; i++) {
+var comp = parent.getComponent (i);
+if (comp.isVisible ()) {
+comp.setVisible (false);
+this.currentCard = ((i > 0) ? i - 1 : ncomponents - 1);
+comp = parent.getComponent (this.currentCard);
+comp.setVisible (true);
+parent.validate ();
+return;
+}}
+this.showDefaultComponent (parent);
+}}, "java.awt.Container");
+Clazz_defineMethod (c$, "showDefaultComponent", 
+function (parent) {
+if (parent.getComponentCount () > 0) {
+this.currentCard = 0;
+parent.getComponent (0).setVisible (true);
+parent.validate ();
+}}, "java.awt.Container");
+Clazz_defineMethod (c$, "last", 
+function (parent) {
+{
+this.checkLayout (parent);
+var ncomponents = parent.getComponentCount ();
+for (var i = 0; i < ncomponents; i++) {
+var comp = parent.getComponent (i);
+if (comp.isVisible ()) {
+comp.setVisible (false);
+break;
+}}
+if (ncomponents > 0) {
+this.currentCard = ncomponents - 1;
+parent.getComponent (this.currentCard).setVisible (true);
+parent.validate ();
+}}}, "java.awt.Container");
+Clazz_defineMethod (c$, "show", 
+function (parent, name) {
+{
+this.checkLayout (parent);
+var next = null;
+var ncomponents = this.vector.size ();
+for (var i = 0; i < ncomponents; i++) {
+var card = this.vector.get (i);
+if (card.name.equals (name)) {
+next = card.comp;
+this.currentCard = i;
+break;
+}}
+if ((next != null) && !next.isVisible ()) {
+ncomponents = parent.getComponentCount ();
+for (var i = 0; i < ncomponents; i++) {
+var comp = parent.getComponent (i);
+if (comp.isVisible ()) {
+comp.setVisible (false);
+break;
+}}
+next.setVisible (true);
+parent.validate ();
+}}}, "java.awt.Container,~S");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return this.getClass ().getName () + "[hgap=" + this.hgap + ",vgap=" + this.vgap + "]";
+});
+c$.$CardLayout$Card$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.name = null;
+this.comp = null;
+Clazz_instantialize (this, arguments);
+}, java.awt.CardLayout, "Card", null, java.io.Serializable);
+Clazz_makeConstructor (c$, 
+function (a, b) {
+this.name = a;
+this.comp = b;
+}, "~S,java.awt.Component");
+c$ = Clazz_p0p ();
+};
+c$.serialPersistentFields = c$.prototype.serialPersistentFields =  Clazz_newArray (-1, [ new java.io.ObjectStreamField ("tab", java.util.Hashtable),  new java.io.ObjectStreamField ("hgap", Integer.TYPE),  new java.io.ObjectStreamField ("vgap", Integer.TYPE),  new java.io.ObjectStreamField ("vector", java.util.Vector),  new java.io.ObjectStreamField ("currentCard", Integer.TYPE)]);
+});
+Clazz_load(null,"java.io.ObjectStreamField",["java.lang.Boolean","$.Byte","$.Character","$.Double","$.Float","$.Long","$.NullPointerException","$.Short","java.util.Arrays"],function(){
+c$=Clazz_decorateAsClass(function(){
+this.name=null;
+this.type=null;
+this.offset=0;
+this.typeString=null;
+this.unshared=false;
+this.isDeserialized=false;
+Clazz_instantialize(this,arguments);
+},java.io,"ObjectStreamField",null,Comparable);
+Clazz_makeConstructor(c$,
+function(name,cl){
+if(name==null||cl==null){
+throw new NullPointerException();
+}this.name=name;
+this.type=cl;
+},"~S,Class");
+Clazz_makeConstructor(c$,
+function(name,cl,unshared){
+if(name==null||cl==null){
+throw new NullPointerException();
+}this.name=name;
+this.type=cl;
+this.unshared=unshared;
+},"~S,Class,~B");
+Clazz_makeConstructor(c$,
+function(signature,name){
+if(name==null){
+throw new NullPointerException();
+}this.name=name;
+this.typeString=signature.$replace('.', '/');
+this.isDeserialized=true;
+},"~S,~S");
+Clazz_overrideMethod(c$,"compareTo",
+function(o){
+var f=o;
+var thisPrimitive=this.isPrimitive();
+var fPrimitive=f.isPrimitive();
+if(thisPrimitive!=fPrimitive){
+return thisPrimitive?-1:1;
+}return this.getName().compareTo(f.getName());
+},"~O");
+Clazz_overrideMethod(c$,"equals",
+function(arg0){
+return this.compareTo(arg0)==0;
+},"~O");
+Clazz_overrideMethod(c$,"hashCode",
+function(){
+return this.getName().hashCode();
+});
+Clazz_defineMethod(c$,"getName",
+function(){
+return this.name;
+});
+Clazz_defineMethod(c$,"getOffset",
+function(){
+return this.offset;
+});
+Clazz_defineMethod(c$,"getTypeInternal",
+($fz=function(){
+return this.type;
+},$fz.isPrivate=true,$fz));
+Clazz_defineMethod(c$,"getType",
+function(){
+var cl=this.getTypeInternal();
+if(this.isDeserialized&&!cl.isPrimitive()){
+return Clazz._O;
+}return cl;
+});
+Clazz_defineMethod(c$,"getTypeCode",
+function(){
+var t=this.getTypeInternal();
+if(t===Integer.TYPE){
+return'I';
+}if(t===Byte.TYPE){
+return'B';
+}if(t===Character.TYPE){
+return'C';
+}if(t===Short.TYPE){
+return'S';
+}if(t===Boolean.TYPE){
+return'Z';
+}if(t===Long.TYPE){
+return'J';
+}if(t===Float.TYPE){
+return'F';
+}if(t===Double.TYPE){
+return'D';
+}if(t.isArray()){
+return'[';
+}return'L';
+});
+Clazz_defineMethod(c$,"getTypeString",
+function(){
+if(this.isPrimitive()){
+return null;
+}if(this.typeString==null){
+var t=this.getTypeInternal();
+var typeName=t.getName().$replace('.', '/');
+var str=(t.isArray())?typeName:("L"+typeName+';');
+this.typeString=str.intern();
+}return this.typeString;
+});
+Clazz_defineMethod(c$,"isPrimitive",
+function(){
+var t=this.getTypeInternal();
+return t!=null&&t.isPrimitive();
+});
+Clazz_defineMethod(c$,"setOffset",
+function(newValue){
+this.offset=newValue;
+},"~N");
+Clazz_overrideMethod(c$,"toString",
+function(){
+return this.getClass().getName()+'(' + this.getName () + ':' + this.getTypeInternal () + ')';
+});
+c$.sortFields=Clazz_defineMethod(c$,"sortFields",
+function(fields){
+if(fields.length>1){
+var fieldDescComparator=((Clazz_isClassDefined("java.io.ObjectStreamField$1")?0:java.io.ObjectStreamField.$ObjectStreamField$1$()),Clazz_innerTypeInstance(java.io.ObjectStreamField$1,this,null));
+java.util.Arrays.sort(fields,fieldDescComparator);
+}},"~A");
+Clazz_defineMethod(c$,"resolve",
+function(loader){
+if(this.typeString.length==1){
+switch(this.typeString.charAt(0)){
+case'I':
+this.type=Integer.TYPE;
+return;
+case'B':
+this.type=Byte.TYPE;
+return;
+case'C':
+this.type=Character.TYPE;
+return;
+case'S':
+this.type=Short.TYPE;
+return;
+case'Z':
+this.type=Boolean.TYPE;
+return;
+case'J':
+this.type=Long.TYPE;
+return;
+case'F':
+this.type=Float.TYPE;
+return;
+case'D':
+this.type=Double.TYPE;
+return;
+}
+}var className=this.typeString.$replace('/', '.');
+if((className.charAt(0)).charCodeAt(0)==('L').charCodeAt(0)){
+className=className.substring(1,className.length-1);
+}try{
+var cl=Clazz._4Name(className,false,loader);
+this.type=cl;
+}catch(e){
+if(Clazz_instanceOf(e,ClassNotFoundException)){
+}else{
+throw e;
+}
+}
+},"ClassLoader");
+Clazz_defineMethod(c$,"isUnshared",
+function(){
+return this.unshared;
+});
+c$.$ObjectStreamField$1$=function(){
+Clazz_pu$h(self.c$);
+c$=Clazz_declareAnonymous(java.io,"ObjectStreamField$1",null,java.util.Comparator);
+Clazz_overrideMethod(c$,"compare",
+function(f1,f2){
+return f1.compareTo(f2);
+},"java.io.ObjectStreamField,java.io.ObjectStreamField");
+c$=Clazz_p0p();
+};
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "java.awt.event.ActionListener", "awt2swing.Button", "$.Checkbox", "$.Label", "$.TextField", "java.awt.GridLayout"], "jalview.appletgui.Finder", ["awt2swing.Frame", "jalview.analysis.Finder", "jalview.bin.JalviewLite", "jalview.datamodel.SequenceFeature", "jalview.util.MessageManager", "java.awt.Font", "$.Rectangle", "java.awt.event.KeyAdapter", "$.WindowAdapter"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.av = null;
+this.ap = null;
+this.frame = null;
+this.searchResults = null;
+this.seqIndex = 0;
+this.resIndex = -1;
+this.jLabel1 = null;
+this.textfield = null;
+this.findAll = null;
+this.findNext = null;
+this.actionsPanel = null;
+this.gridLayout1 = null;
+this.createNewGroup = null;
+this.caseSensitive = null;
+this.searchDescription = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "Finder", awt2swing.Panel, java.awt.event.ActionListener);
+Clazz_prepareFields (c$, function () {
+this.jLabel1 =  new awt2swing.Label ();
+this.textfield =  new awt2swing.TextField ();
+this.findAll =  new awt2swing.Button ();
+this.findNext =  new awt2swing.Button ();
+this.actionsPanel =  new awt2swing.Panel ();
+this.gridLayout1 =  new java.awt.GridLayout ();
+this.createNewGroup =  new awt2swing.Button ();
+this.caseSensitive =  new awt2swing.Checkbox ();
+this.searchDescription =  new awt2swing.Checkbox ();
+});
+Clazz_makeConstructor (c$, 
+function (ap) {
+Clazz_superConstructor (this, jalview.appletgui.Finder, []);
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.av = ap.av;
+this.ap = ap;
+this.frame =  new awt2swing.Frame ();
+this.frame.add (this);
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("action.find"), 340, 120);
+this.frame.repaint ();
+this.frame.addWindowListener (((Clazz_isClassDefined ("jalview.appletgui.Finder$1") ? 0 : jalview.appletgui.Finder.$Finder$1$ ()), Clazz_innerTypeInstance (jalview.appletgui.Finder$1, this, Clazz_cloneFinals ("ap", ap))));
+this.textfield.requestFocus ();
+}, "jalview.appletgui.AlignmentPanel");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.textfield) {
+this.doSearch (false);
+} else if (evt.getSource () === this.findNext) {
+this.doSearch (false);
+} else if (evt.getSource () === this.findAll) {
+this.resIndex = -1;
+this.seqIndex = 0;
+this.doSearch (true);
+} else if (evt.getSource () === this.createNewGroup) {
+this.createNewGroup_actionPerformed ();
+}}, "java.awt.event.ActionEvent");
+Clazz_defineMethod (c$, "createNewGroup_actionPerformed", 
+function () {
+var seqs =  new Array (this.searchResults.getSize ());
+var features =  new Array (this.searchResults.getSize ());
+for (var i = 0; i < this.searchResults.getSize (); i++) {
+seqs[i] = this.searchResults.getResultSequence (i);
+features[i] =  new jalview.datamodel.SequenceFeature (this.textfield.getText ().trim (), "Search Results", null, this.searchResults.getResultStart (i), this.searchResults.getResultEnd (i), "Search Results");
+}
+if (this.ap.seqPanel.seqCanvas.getFeatureRenderer ().amendFeatures (seqs, features, true, this.ap)) {
+this.ap.alignFrame.sequenceFeatures.setState (true);
+this.av.setShowSequenceFeatures (true);
+this.ap.highlightSearchResults (null);
+}});
+Clazz_defineMethod (c$, "doSearch", 
+function (findAll) {
+if (this.ap.av.applet.currentAlignFrame != null) {
+this.ap = this.ap.av.applet.currentAlignFrame.alignPanel;
+this.av = this.ap.av;
+}this.createNewGroup.setEnabled (false);
+var finder =  new jalview.analysis.Finder (this.av.getAlignment (), this.av.getSelectionGroup (), this.seqIndex, this.resIndex);
+finder.setCaseSensitive (this.caseSensitive.getState ());
+finder.setIncludeDescription (this.searchDescription.getState ());
+finder.setFindAll (findAll);
+var searchString = this.textfield.getText ();
+finder.find (searchString);
+this.seqIndex = finder.getSeqIndex ();
+this.resIndex = finder.getResIndex ();
+this.searchResults = finder.getSearchResults ();
+var idMatch = finder.getIdMatch ();
+var haveResults = false;
+if ((idMatch.size () > 0)) {
+haveResults = true;
+this.ap.idPanel.highlightSearchResults (idMatch);
+} else {
+this.ap.idPanel.highlightSearchResults (null);
+}if (this.searchResults.getSize () > 0) {
+haveResults = true;
+this.createNewGroup.setEnabled (true);
+} else {
+this.searchResults = null;
+}this.ap.highlightSearchResults (this.searchResults);
+if (!haveResults) {
+this.ap.alignFrame.setStatus (jalview.util.MessageManager.getString ("label.finished_searching"));
+this.resIndex = -1;
+this.seqIndex = 0;
+} else {
+if (findAll) {
+var message = (idMatch.size () > 0) ? "" + idMatch.size () + " IDs" : "";
+if (idMatch.size () > 0 && this.searchResults != null && this.searchResults.getSize () > 0) {
+message += " and ";
+}if (this.searchResults != null) {
+message += this.searchResults.getSize () + " subsequence matches.";
+}this.ap.alignFrame.setStatus (jalview.util.MessageManager.formatMessage ("label.search_results",  Clazz_newArray (-1, [searchString, message])));
+} else {
+this.ap.alignFrame.setStatus (jalview.util.MessageManager.formatMessage ("label.found_match_for",  Clazz_newArray (-1, [searchString])));
+}}}, "~B");
+Clazz_defineMethod (c$, "jbInit", 
+ function () {
+this.jLabel1.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.jLabel1.setText (jalview.util.MessageManager.getString ("action.find"));
+this.jLabel1.setBounds ( new java.awt.Rectangle (3, 30, 34, 15));
+this.setLayout (null);
+this.textfield.setFont ( new java.awt.Font ("Verdana", 0, 10));
+this.textfield.setText ("");
+this.textfield.setBounds ( new java.awt.Rectangle (40, 17, 133, 21));
+this.textfield.addKeyListener (((Clazz_isClassDefined ("jalview.appletgui.Finder$2") ? 0 : jalview.appletgui.Finder.$Finder$2$ ()), Clazz_innerTypeInstance (jalview.appletgui.Finder$2, this, null)));
+this.textfield.addActionListener (this);
+this.findAll.setFont ( new java.awt.Font ("Verdana", 0, 10));
+this.findAll.setLabel (jalview.util.MessageManager.getString ("action.find_all"));
+this.findAll.addActionListener (this);
+this.findNext.setEnabled (false);
+this.findNext.setFont ( new java.awt.Font ("Verdana", 0, 10));
+this.findNext.setLabel (jalview.util.MessageManager.getString ("action.find_next"));
+this.findNext.addActionListener (this);
+this.actionsPanel.setBounds ( new java.awt.Rectangle (195, 5, 141, 64));
+this.actionsPanel.setLayout (this.gridLayout1);
+this.gridLayout1.setHgap (0);
+this.gridLayout1.setRows (3);
+this.gridLayout1.setVgap (2);
+this.createNewGroup.setEnabled (false);
+this.createNewGroup.setFont ( new java.awt.Font ("Verdana", 0, 10));
+this.createNewGroup.setLabel (jalview.util.MessageManager.getString ("label.new_feature"));
+this.createNewGroup.addActionListener (this);
+this.caseSensitive.setLabel (jalview.util.MessageManager.getString ("label.match_case"));
+this.caseSensitive.setBounds ( new java.awt.Rectangle (30, 39, 126, 23));
+this.searchDescription.setLabel (jalview.util.MessageManager.getString ("label.include_description"));
+this.searchDescription.setBounds ( new java.awt.Rectangle (30, 59, 170, 23));
+this.actionsPanel.add (this.findNext, null);
+this.actionsPanel.add (this.findAll, null);
+this.actionsPanel.add (this.createNewGroup, null);
+this.add (this.caseSensitive);
+this.add (this.textfield, null);
+this.add (this.jLabel1, null);
+this.add (this.actionsPanel, null);
+this.add (this.searchDescription);
+});
+Clazz_defineMethod (c$, "textfield_keyTyped", 
+function (e) {
+this.findNext.setEnabled (true);
+}, "java.awt.event.KeyEvent");
+c$.$Finder$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "Finder$1", java.awt.event.WindowAdapter);
+Clazz_overrideMethod (c$, "windowClosing", 
+function (evt) {
+this.f$.ap.highlightSearchResults (null);
+}, "java.awt.event.WindowEvent");
+c$ = Clazz_p0p ();
+};
+c$.$Finder$2$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "Finder$2", java.awt.event.KeyAdapter);
+Clazz_overrideMethod (c$, "keyTyped", 
+function (e) {
+this.b$["jalview.appletgui.Finder"].textfield_keyTyped (e);
+}, "java.awt.event.KeyEvent");
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("jalview.analysis");
+Clazz_load (null, "jalview.analysis.Finder", ["jalview.datamodel.SearchResults", "jalview.jsdev.RegExp", "jalview.util.Comparison", "java.lang.StringBuffer", "java.util.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.searchResults = null;
+this.alignment = null;
+this.selection = null;
+this.idMatch = null;
+this.caseSensitive = false;
+this.includeDescription = false;
+this.findAll = false;
+this.regex = null;
+this.seqIndex = 0;
+this.resIndex = -1;
+Clazz_instantialize (this, arguments);
+}, jalview.analysis, "Finder");
+Clazz_makeConstructor (c$, 
+function (alignment, selection) {
+this.alignment = alignment;
+this.selection = selection;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");
+Clazz_makeConstructor (c$, 
+function (alignment, selectionGroup, seqIndex, resIndex) {
+this.construct (alignment, selectionGroup);
+this.seqIndex = seqIndex;
+this.resIndex = resIndex;
+}, "jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup,~N,~N");
+Clazz_defineMethod (c$, "find", 
+function (searchString) {
+var hasResults = false;
+if (!this.caseSensitive) {
+searchString = searchString.toUpperCase ();
+}this.regex = jalview.jsdev.RegExp.newRegex ([searchString]);
+this.regex.setIgnoreCase (!this.caseSensitive);
+this.searchResults =  new jalview.datamodel.SearchResults ();
+this.idMatch =  new java.util.Vector ();
+var seq;
+var item = null;
+var found = false;
+var end = this.alignment.getHeight ();
+if (this.selection != null) {
+if ((this.selection.getSize () < 1) || ((this.selection.getEndRes () - this.selection.getStartRes ()) < 2)) {
+this.selection = null;
+}}while (!found && (this.seqIndex < end)) {
+seq = this.alignment.getSequenceAt (this.seqIndex);
+if ((this.selection != null && this.selection.getSize () > 0) && !this.selection.getSequences (null).contains (seq)) {
+this.seqIndex++;
+this.resIndex = -1;
+continue;
+}if (this.resIndex < 0) {
+this.resIndex = 0;
+try {
+var res = Integer.parseInt (searchString);
+if (seq.getEnd () >= res) {
+this.searchResults.addResult (seq, res, res);
+hasResults = true;
+if (!this.findAll) {
+found = true;
+break;
+}}} catch (ex) {
+if (Clazz_exceptionOf (ex, NumberFormatException)) {
+} else {
+throw ex;
+}
+}
+if (this.regex.search (seq.getName ())) {
+this.idMatch.addElement (seq);
+hasResults = true;
+if (!this.findAll) {
+found = true;
+break;
+}}if (this.isIncludeDescription () && seq.getDescription () != null && this.regex.search (seq.getDescription ())) {
+this.idMatch.addElement (seq);
+hasResults = true;
+if (!this.findAll) {
+found = true;
+break;
+}}}item = seq.getSequenceAsString ();
+if ((this.selection != null) && (this.selection.getEndRes () < this.alignment.getWidth () - 1)) {
+item = item.substring (0, this.selection.getEndRes () + 1);
+}var noGapsSB =  new StringBuffer ();
+var insertCount = 0;
+var spaces =  new java.util.Vector ();
+for (var j = 0; j < item.length; j++) {
+if (!jalview.util.Comparison.isGap (item.charAt (j))) {
+noGapsSB.append (item.charAt (j));
+spaces.addElement ( new Integer (insertCount));
+} else {
+insertCount++;
+}}
+var noGaps = noGapsSB.toString ();
+for (var r = this.resIndex; r < noGaps.length; r++) {
+if (this.regex.searchFrom (noGaps, r)) {
+this.resIndex = this.regex.matchedFrom ();
+if ((this.selection != null && this.selection.getSize () > 0) && ((this.resIndex + Integer.parseInt (spaces.elementAt (this.resIndex).toString ())) < this.selection.getStartRes ())) {
+continue;
+}var sres = seq.findPosition (this.resIndex + Integer.parseInt (spaces.elementAt (this.resIndex).toString ()));
+var eres = seq.findPosition (this.regex.matchedTo () - 1 + Integer.parseInt (spaces.elementAt (this.regex.matchedTo () - 1).toString ()));
+this.searchResults.addResult (seq, sres, eres);
+hasResults = true;
+if (!this.findAll) {
+found = true;
+this.resIndex++;
+break;
+}r = this.resIndex;
+} else {
+break;
+}}
+if (!found) {
+this.seqIndex++;
+this.resIndex = -1;
+}}
+return hasResults;
+}, "~S");
+Clazz_defineMethod (c$, "getAlignment", 
+function () {
+return this.alignment;
+});
+Clazz_defineMethod (c$, "setAlignment", 
+function (alignment) {
+this.alignment = alignment;
+}, "jalview.datamodel.AlignmentI");
+Clazz_defineMethod (c$, "isCaseSensitive", 
+function () {
+return this.caseSensitive;
+});
+Clazz_defineMethod (c$, "setCaseSensitive", 
+function (caseSensitive) {
+this.caseSensitive = caseSensitive;
+}, "~B");
+Clazz_defineMethod (c$, "isFindAll", 
+function () {
+return this.findAll;
+});
+Clazz_defineMethod (c$, "setFindAll", 
+function (findAll) {
+this.findAll = findAll;
+}, "~B");
+Clazz_defineMethod (c$, "getSelection", 
+function () {
+return this.selection;
+});
+Clazz_defineMethod (c$, "setSelection", 
+function (selection) {
+this.selection = selection;
+}, "jalview.datamodel.SequenceGroup");
+Clazz_defineMethod (c$, "getIdMatch", 
+function () {
+return this.idMatch;
+});
+Clazz_defineMethod (c$, "getRegex", 
+function () {
+return this.regex;
+});
+Clazz_defineMethod (c$, "getSearchResults", 
+function () {
+return this.searchResults;
+});
+Clazz_defineMethod (c$, "getResIndex", 
+function () {
+return this.resIndex;
+});
+Clazz_defineMethod (c$, "setResIndex", 
+function (resIndex) {
+this.resIndex = resIndex;
+}, "~N");
+Clazz_defineMethod (c$, "getSeqIndex", 
+function () {
+return this.seqIndex;
+});
+Clazz_defineMethod (c$, "setSeqIndex", 
+function (seqIndex) {
+this.seqIndex = seqIndex;
+}, "~N");
+Clazz_defineMethod (c$, "isIncludeDescription", 
+function () {
+return this.includeDescription;
+});
+Clazz_defineMethod (c$, "setIncludeDescription", 
+function (includeDescription) {
+this.includeDescription = includeDescription;
+}, "~B");
+});
+Clazz_declarePackage ("java.awt.event");
+Clazz_load (["java.awt.event.KeyListener"], "java.awt.event.KeyAdapter", null, function () {
+c$ = Clazz_declareType (java.awt.event, "KeyAdapter", null, java.awt.event.KeyListener);
+Clazz_overrideMethod (c$, "keyTyped", 
+function (e) {
+}, "java.awt.event.KeyEvent");
+Clazz_overrideMethod (c$, "keyPressed", 
+function (e) {
+}, "java.awt.event.KeyEvent");
+Clazz_overrideMethod (c$, "keyReleased", 
+function (e) {
+}, "java.awt.event.KeyEvent");
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "java.awt.event.ItemListener", "awt2swing.Button", "$.Checkbox", "$.Choice", "java.awt.Font"], "jalview.appletgui.FontChooser", ["awt2swing.Frame", "$.Label", "jalview.appletgui.JVDialog", "jalview.bin.JalviewLite", "jalview.util.MessageManager", "java.awt.BorderLayout", "$.Color", "$.FlowLayout", "$.Toolkit", "java.awt.event.ActionListener"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.fontSize = null;
+this.fontStyle = null;
+this.fontName = null;
+this.scaleAsCdna = null;
+this.ok = null;
+this.cancel = null;
+this.ap = null;
+this.tp = null;
+this.oldFont = null;
+this.oldCharWidth = 0;
+this.oldScaleProtein = false;
+this.lastSelected = null;
+this.lastSelStyle = 0;
+this.lastSelSize = 0;
+this.$init = true;
+this.frame = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "FontChooser", awt2swing.Panel, java.awt.event.ItemListener);
+Clazz_prepareFields (c$, function () {
+this.fontSize =  new awt2swing.Choice ();
+this.fontStyle =  new awt2swing.Choice ();
+this.fontName =  new awt2swing.Choice ();
+this.scaleAsCdna =  new awt2swing.Checkbox ();
+this.ok =  new awt2swing.Button ();
+this.cancel =  new awt2swing.Button ();
+});
+Clazz_makeConstructor (c$, 
+function (tp) {
+Clazz_superConstructor (this, jalview.appletgui.FontChooser, []);
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.tp = tp;
+this.oldFont = tp.getTreeFont ();
+this.init ();
+}, "jalview.appletgui.TreePanel");
+Clazz_makeConstructor (c$, 
+function (ap) {
+Clazz_superConstructor (this, jalview.appletgui.FontChooser, []);
+this.ap = ap;
+this.oldFont = ap.av.getFont ();
+this.oldCharWidth = ap.av.getViewStyle ().getCharWidth ();
+this.oldScaleProtein = ap.av.getViewStyle ().isScaleProteinAsCdna ();
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.init ();
+}, "jalview.appletgui.AlignmentPanel");
+Clazz_defineMethod (c$, "init", 
+function () {
+var fonts = java.awt.Toolkit.getDefaultToolkit ().getFontList ();
+for (var i = 0; i < fonts.length; i++) {
+this.fontName.addItem (fonts[i]);
+}
+for (var i = 1; i < 31; i++) {
+this.fontSize.addItem (i + "");
+}
+this.fontStyle.addItem ("plain");
+this.fontStyle.addItem ("bold");
+this.fontStyle.addItem ("italic");
+this.fontName.select (this.oldFont.getName ());
+this.fontSize.select (this.oldFont.getSize () + "");
+this.fontStyle.select (new Integer (this.oldFont.getStyle ()));
+this.frame =  new awt2swing.Frame ();
+this.frame.add (this);
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("action.change_font"), 440, 115);
+this.$init = false;
+});
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (evt) {
+var source = evt.getSource ();
+if (source === this.fontName) {
+this.fontName_actionPerformed ();
+} else if (source === this.fontSize) {
+this.fontSize_actionPerformed ();
+} else if (source === this.fontStyle) {
+this.fontStyle_actionPerformed ();
+} else if (source === this.scaleAsCdna) {
+this.scaleAsCdna_actionPerformed ();
+}}, "java.awt.event.ItemEvent");
+Clazz_defineMethod (c$, "ok_actionPerformed", 
+function () {
+this.frame.setVisible (false);
+if (this.ap != null) {
+if (this.ap.getOverviewPanel () != null) {
+this.ap.getOverviewPanel ().updateOverviewImage ();
+}}});
+Clazz_defineMethod (c$, "cancel_actionPerformed", 
+function () {
+if (this.ap != null) {
+this.ap.av.setScaleProteinAsCdna (this.oldScaleProtein);
+if (this.ap.av.getCodingComplement () != null) {
+this.ap.av.getCodingComplement ().setScaleProteinAsCdna (this.oldScaleProtein);
+this.ap.alignFrame.getSplitFrame ().repaint ();
+}this.ap.av.setFont (this.oldFont);
+var style = this.ap.av.getViewStyle ();
+if (style.getCharWidth () != this.oldCharWidth) {
+style.setCharWidth (this.oldCharWidth);
+this.ap.av.setViewStyle (style);
+}this.ap.paintAlignment (true);
+} else if (this.tp != null) {
+this.tp.setTreeFont (this.oldFont);
+this.tp.treeCanvas.repaint ();
+}this.fontName.select (this.oldFont.getName ());
+this.fontSize.select (this.oldFont.getSize () + "");
+this.fontStyle.select (new Integer (this.oldFont.getStyle ()));
+this.frame.setVisible (false);
+});
+Clazz_defineMethod (c$, "changeFont", 
+function () {
+if (this.lastSelected == null) {
+this.lastSelected = this.oldFont;
+this.lastSelSize = this.oldFont.getSize ();
+this.lastSelStyle = this.oldFont.getStyle ();
+}var newFont =  new java.awt.Font (this.fontName.getSelectedItem ().toString (), this.fontStyle.getSelectedIndex (), Integer.parseInt (this.fontSize.getSelectedItem ().toString ()));
+var fm = this.getGraphics ().getFontMetrics (newFont);
+var mw = fm.getStringBounds ("M", this.getGraphics ()).getWidth ();
+var iw = fm.getStringBounds ("I", this.getGraphics ()).getWidth ();
+if (mw < 1 || iw < 1) {
+this.fontName.select (this.lastSelected.getName ());
+this.fontStyle.select (new Integer (this.lastSelStyle));
+this.fontSize.select ("" + this.lastSelSize);
+var d =  new jalview.appletgui.JVDialog (this.frame, jalview.util.MessageManager.getString ("label.invalid_font"), true, 350, 200);
+var mp =  new awt2swing.Panel ();
+d.cancel.setVisible (false);
+mp.setLayout ( new java.awt.FlowLayout ());
+mp.add ( new awt2swing.Label ("Font doesn't have letters defined\nso cannot be used\nwith alignment data."));
+d.setMainPanel (mp);
+d.setVisible (true);
+return;
+}if (this.tp != null) {
+this.tp.setTreeFont (newFont);
+} else if (this.ap != null) {
+this.ap.av.setFont (newFont);
+this.ap.fontChanged ();
+}this.lastSelected = newFont;
+});
+Clazz_defineMethod (c$, "fontName_actionPerformed", 
+function () {
+if (this.$init) {
+return;
+}this.changeFont ();
+});
+Clazz_defineMethod (c$, "fontSize_actionPerformed", 
+function () {
+if (this.$init) {
+return;
+}this.changeFont ();
+});
+Clazz_defineMethod (c$, "fontStyle_actionPerformed", 
+function () {
+if (this.$init) {
+return;
+}this.changeFont ();
+});
+Clazz_defineMethod (c$, "jbInit", 
+ function () {
+this.setLayout ( new java.awt.BorderLayout ());
+this.setBackground (java.awt.Color.white);
+var fontLabel =  new awt2swing.Label (jalview.util.MessageManager.getString ("label.font"));
+fontLabel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+fontLabel.setAlignment (4);
+this.fontSize.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.fontSize.addItemListener (this);
+this.fontStyle.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.fontStyle.addItemListener (this);
+var sizeLabel =  new awt2swing.Label (jalview.util.MessageManager.getString ("label.size"));
+sizeLabel.setAlignment (4);
+sizeLabel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+var styleLabel =  new awt2swing.Label (jalview.util.MessageManager.getString ("label.style"));
+styleLabel.setAlignment (4);
+styleLabel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.fontName.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.fontName.addItemListener (this);
+this.scaleAsCdna.setLabel (jalview.util.MessageManager.getString ("label.scale_as_cdna"));
+this.scaleAsCdna.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.scaleAsCdna.addItemListener (this);
+this.scaleAsCdna.setState (this.ap.av.isScaleProteinAsCdna ());
+this.ok.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.ok.setLabel (jalview.util.MessageManager.getString ("action.ok"));
+this.ok.addActionListener (((Clazz_isClassDefined ("jalview.appletgui.FontChooser$1") ? 0 : jalview.appletgui.FontChooser.$FontChooser$1$ ()), Clazz_innerTypeInstance (jalview.appletgui.FontChooser$1, this, null)));
+this.cancel.setFont (jalview.appletgui.FontChooser.VERDANA_11PT);
+this.cancel.setLabel (jalview.util.MessageManager.getString ("action.cancel"));
+this.cancel.addActionListener (((Clazz_isClassDefined ("jalview.appletgui.FontChooser$2") ? 0 : jalview.appletgui.FontChooser.$FontChooser$2$ ()), Clazz_innerTypeInstance (jalview.appletgui.FontChooser$2, this, null)));
+var fontPanel =  new awt2swing.Panel ();
+fontPanel.setLayout ( new java.awt.BorderLayout ());
+var stylePanel =  new awt2swing.Panel ();
+stylePanel.setLayout ( new java.awt.BorderLayout ());
+var sizePanel =  new awt2swing.Panel ();
+sizePanel.setLayout ( new java.awt.BorderLayout ());
+var scalePanel =  new awt2swing.Panel ();
+scalePanel.setLayout ( new java.awt.BorderLayout ());
+var okCancelPanel =  new awt2swing.Panel ();
+var optionsPanel =  new awt2swing.Panel ();
+fontPanel.setBackground (java.awt.Color.white);
+stylePanel.setBackground (java.awt.Color.white);
+sizePanel.setBackground (java.awt.Color.white);
+okCancelPanel.setBackground (java.awt.Color.white);
+optionsPanel.setBackground (java.awt.Color.white);
+fontPanel.add (fontLabel, "West");
+fontPanel.add (this.fontName, "Center");
+stylePanel.add (styleLabel, "West");
+stylePanel.add (this.fontStyle, "Center");
+sizePanel.add (sizeLabel, "West");
+sizePanel.add (this.fontSize, "Center");
+scalePanel.add (this.scaleAsCdna, "Center");
+okCancelPanel.add (this.ok, null);
+okCancelPanel.add (this.cancel, null);
+optionsPanel.add (fontPanel, null);
+optionsPanel.add (sizePanel, null);
+optionsPanel.add (stylePanel, null);
+this.add (optionsPanel, "North");
+if (this.ap.alignFrame.getSplitFrame () != null) {
+this.add (scalePanel, "Center");
+}this.add (okCancelPanel, "South");
+});
+Clazz_defineMethod (c$, "scaleAsCdna_actionPerformed", 
+function () {
+this.ap.av.setScaleProteinAsCdna (this.scaleAsCdna.getState ());
+this.ap.av.getCodingComplement ().setScaleProteinAsCdna (this.scaleAsCdna.getState ());
+this.ap.alignFrame.getSplitFrame ().adjustLayout ();
+this.ap.paintAlignment (true);
+this.ap.alignFrame.getSplitFrame ().repaint ();
+});
+c$.$FontChooser$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "FontChooser$1", null, java.awt.event.ActionListener);
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.FontChooser"].ok_actionPerformed ();
+}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+};
+c$.$FontChooser$2$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "FontChooser$2", null, java.awt.event.ActionListener);
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (e) {
+this.b$["jalview.appletgui.FontChooser"].cancel_actionPerformed ();
+}, "java.awt.event.ActionEvent");
+c$ = Clazz_p0p ();
+};
+c$.VERDANA_11PT = c$.prototype.VERDANA_11PT =  new java.awt.Font ("Verdana", 0, 11);
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener"], "jalview.appletgui.OverviewPanel", ["awt2swing.Frame", "jalview.appletgui.FeatureRenderer", "$.SequenceRenderer", "java.awt.Color", "$.Dimension", "java.awt.event.ComponentAdapter", "java.lang.Thread"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.miniMe = null;
+this.offscreen = null;
+this.av = null;
+this.ap = null;
+this.scalew = 1;
+this.scaleh = 1;
+this.$width = 0;
+this.sequencesHeight = 0;
+this.graphHeight = 20;
+this.boxX = -1;
+this.boxY = -1;
+this.boxWidth = -1;
+this.boxHeight = -1;
+this.resizing = false;
+this.sr = null;
+this.fr = null;
+this.nullFrame = null;
+this.resizeAgain = false;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "OverviewPanel", awt2swing.Panel, [Runnable, java.awt.event.MouseMotionListener, java.awt.event.MouseListener]);
+Clazz_makeConstructor (c$, 
+function (ap) {
+Clazz_superConstructor (this, jalview.appletgui.OverviewPanel, []);
+this.av = ap.av;
+this.ap = ap;
+this.setLayout (null);
+this.nullFrame =  new awt2swing.Frame ();
+this.nullFrame.addNotify ();
+this.sr =  new jalview.appletgui.SequenceRenderer (this.av);
+this.sr.graphics = this.nullFrame.getGraphics ();
+this.sr.renderGaps = false;
+this.sr.forOverview = true;
+this.fr =  new jalview.appletgui.FeatureRenderer (this.av);
+var initialScale = this.av.getAlignment ().getWidth () / this.av.getAlignment ().getHeight ();
+if (this.av.getSequenceConsensusHash () == null) {
+this.graphHeight = 0;
+}if (this.av.getAlignment ().getWidth () > this.av.getAlignment ().getHeight ()) {
+this.$width = 400;
+this.sequencesHeight = Clazz_floatToInt (400 / initialScale);
+if (this.sequencesHeight < 40) {
+this.sequencesHeight = 40;
+}} else {
+this.$width = Clazz_floatToInt (400 * initialScale);
+this.sequencesHeight = 300;
+if (this.$width < 120) {
+this.$width = 120;
+}}this.setSize ( new java.awt.Dimension (this.$width, this.sequencesHeight + this.graphHeight));
+this.addComponentListener (((Clazz_isClassDefined ("jalview.appletgui.OverviewPanel$1") ? 0 : jalview.appletgui.OverviewPanel.$OverviewPanel$1$ ()), Clazz_innerTypeInstance (jalview.appletgui.OverviewPanel$1, this, null)));
+this.addMouseMotionListener (this);
+this.addMouseListener (this);
+this.updateOverviewImage ();
+}, "jalview.appletgui.AlignmentPanel");
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseMoved", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mousePressed", 
+function (evt) {
+this.boxX = evt.getX ();
+this.boxY = evt.getY ();
+this.checkValid ();
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (evt) {
+this.boxX = evt.getX ();
+this.boxY = evt.getY ();
+this.checkValid ();
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseDragged", 
+function (evt) {
+this.boxX = evt.getX ();
+this.boxY = evt.getY ();
+this.checkValid ();
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "checkValid", 
+function () {
+if (this.boxY < 0) {
+this.boxY = 0;
+}if (this.boxY > (this.sequencesHeight - this.boxHeight)) {
+this.boxY = this.sequencesHeight - this.boxHeight + 1;
+}if (this.boxX < 0) {
+this.boxX = 0;
+}if (this.boxX > (this.$width - this.boxWidth)) {
+if (this.av.hasHiddenColumns ()) {
+this.boxWidth = Clazz_floatToInt ((this.av.endRes - this.av.startRes + 1) * this.av.getCharWidth () * this.scalew);
+}this.boxX = this.$width - this.boxWidth;
+}var col = Clazz_floatToInt (this.boxX / this.scalew / this.av.getCharWidth ());
+var row = Clazz_floatToInt (this.boxY / this.scaleh / this.av.getCharHeight ());
+if (this.av.hasHiddenColumns ()) {
+if (!this.av.getColumnSelection ().isVisible (col)) {
+return;
+}col = this.av.getColumnSelection ().findColumnPosition (col);
+}if (this.av.hasHiddenRows ()) {
+row = this.av.getAlignment ().getHiddenSequences ().findIndexWithoutHiddenSeqs (row);
+}this.ap.setScrollValues (col, row);
+this.ap.paintAlignment (false);
+});
+Clazz_defineMethod (c$, "updateOverviewImage", 
+function () {
+if (this.resizing) {
+this.resizeAgain = true;
+return;
+}if (this.av.isShowSequenceFeatures ()) {
+this.fr.transferSettings (this.ap.seqPanel.seqCanvas.fr);
+}this.resizing = true;
+if ((this.getSize ().width > 0) && (this.getSize ().height > 0)) {
+this.$width = this.getSize ().width;
+this.sequencesHeight = this.getSize ().height - this.graphHeight;
+}this.setSize ( new java.awt.Dimension (this.$width, this.sequencesHeight + this.graphHeight));
+var thread =  new Thread (this);
+thread.start ();
+this.repaint ();
+});
+Clazz_overrideMethod (c$, "run", 
+function () {
+this.miniMe = null;
+var alwidth = this.av.getAlignment ().getWidth ();
+var alheight = this.av.getAlignment ().getHeight ();
+if (this.av.isShowSequenceFeatures ()) {
+this.fr.transferSettings (this.ap.seqPanel.seqCanvas.getFeatureRenderer ());
+}if (this.getSize ().width > 0 && this.getSize ().height > 0) {
+this.$width = this.getSize ().width;
+this.sequencesHeight = this.getSize ().height - this.graphHeight;
+}this.setSize ( new java.awt.Dimension (this.$width, this.sequencesHeight + this.graphHeight));
+var fullsizeWidth = alwidth * this.av.getCharWidth ();
+var fullsizeHeight = alheight * this.av.getCharHeight ();
+this.scalew = this.$width / fullsizeWidth;
+this.scaleh = this.sequencesHeight / fullsizeHeight;
+this.miniMe = this.nullFrame.createImage (this.$width, this.sequencesHeight + this.graphHeight);
+this.offscreen = this.nullFrame.createImage (this.$width, this.sequencesHeight + this.graphHeight);
+var mg = this.miniMe.getGraphics ();
+var sampleCol = alwidth / this.$width;
+var sampleRow = alheight / this.sequencesHeight;
+var lastcol = 0;
+var lastrow = 0;
+var xstart = 0;
+var ystart = 0;
+var color = java.awt.Color.yellow;
+var row;
+var col;
+var sameRow = 0;
+var sameCol = 0;
+var seq;
+var hasHiddenRows = this.av.hasHiddenRows ();
+var hasHiddenCols = this.av.hasHiddenColumns ();
+var hiddenRow = false;
+var alignment = this.av.getAlignment ();
+for (row = 0; row <= this.sequencesHeight; row++) {
+if (Clazz_floatToInt (row * sampleRow) == lastrow) {
+sameRow++;
+continue;
+}hiddenRow = false;
+if (hasHiddenRows) {
+seq = alignment.getHiddenSequences ().getHiddenSequence (lastrow);
+if (seq == null) {
+var index = alignment.getHiddenSequences ().findIndexWithoutHiddenSeqs (lastrow);
+seq = alignment.getSequenceAt (index);
+} else {
+hiddenRow = true;
+}} else {
+seq = alignment.getSequenceAt (lastrow);
+}for (col = 0; col < this.$width; col++) {
+if (Clazz_floatToInt (col * sampleCol) == lastcol && Clazz_floatToInt (row * sampleRow) == lastrow) {
+sameCol++;
+continue;
+}lastcol = Clazz_floatToInt (col * sampleCol);
+if (seq.getLength () > lastcol) {
+color = this.sr.getResidueBoxColour (seq, lastcol);
+if (this.av.isShowSequenceFeatures ()) {
+color = this.fr.findFeatureColour (color, seq, lastcol);
+}} else {
+color = java.awt.Color.white;
+}if (hiddenRow || (hasHiddenCols && !this.av.getColumnSelection ().isVisible (lastcol))) {
+color = color.darker ().darker ();
+}mg.setColor (color);
+if (sameCol == 1 && sameRow == 1) {
+mg.drawLine (xstart, ystart, xstart, ystart);
+} else {
+mg.fillRect (xstart, ystart, sameCol, sameRow);
+}xstart = col;
+sameCol = 1;
+}
+lastrow = Clazz_floatToInt (row * sampleRow);
+ystart = row;
+sameRow = 1;
+}
+if (this.av.getAlignmentConservationAnnotation () != null) {
+for (col = 0; col < this.$width; col++) {
+lastcol = Clazz_floatToInt (col * sampleCol);
+{
+mg.translate (col, this.sequencesHeight);
+this.ap.annotationPanel.renderer.drawGraph (mg, this.av.getAlignmentConservationAnnotation (), this.av.getAlignmentConservationAnnotation ().annotations, Clazz_floatToInt (sampleCol) + 1, this.graphHeight, Clazz_floatToInt (col * sampleCol), Clazz_floatToInt (col * sampleCol) + 1);
+mg.translate (-col, -this.sequencesHeight);
+}}
+}System.gc ();
+this.resizing = false;
+this.setBoxPosition ();
+if (this.resizeAgain) {
+this.resizeAgain = false;
+this.updateOverviewImage ();
+}});
+Clazz_defineMethod (c$, "setBoxPosition", 
+function () {
+var fullsizeWidth = this.av.getAlignment ().getWidth () * this.av.getCharWidth ();
+var fullsizeHeight = (this.av.getAlignment ().getHeight () + this.av.getAlignment ().getHiddenSequences ().getSize ()) * this.av.getCharHeight ();
+var startRes = this.av.getStartRes ();
+var endRes = this.av.getEndRes ();
+if (this.av.hasHiddenColumns ()) {
+startRes = this.av.getColumnSelection ().adjustForHiddenColumns (startRes);
+endRes = this.av.getColumnSelection ().adjustForHiddenColumns (endRes);
+}var startSeq = this.av.startSeq;
+var endSeq = this.av.endSeq;
+if (this.av.hasHiddenRows ()) {
+startSeq = this.av.getAlignment ().getHiddenSequences ().adjustForHiddenSeqs (startSeq);
+endSeq = this.av.getAlignment ().getHiddenSequences ().adjustForHiddenSeqs (endSeq);
+}this.scalew = this.$width / fullsizeWidth;
+this.scaleh = this.sequencesHeight / fullsizeHeight;
+this.boxX = Clazz_floatToInt (startRes * this.av.getCharWidth () * this.scalew);
+this.boxY = Clazz_floatToInt (startSeq * this.av.getCharHeight () * this.scaleh);
+if (this.av.hasHiddenColumns ()) {
+this.boxWidth = Clazz_floatToInt ((endRes - startRes + 1) * this.av.getCharWidth () * this.scalew);
+} else {
+this.boxWidth = Clazz_floatToInt ((endRes - startRes + 1) * this.av.getCharWidth () * this.scalew);
+}this.boxHeight = Clazz_floatToInt ((endSeq - startSeq) * this.av.getCharHeight () * this.scaleh);
+this.repaint ();
+});
+Clazz_overrideMethod (c$, "update", 
+function (g) {
+this.paint (g);
+}, "java.awt.Graphics");
+Clazz_overrideMethod (c$, "paintComponent", 
+function (g) {
+var og = this.offscreen.getGraphics ();
+if (this.miniMe != null) {
+og.drawImage (this.miniMe, 0, 0, this);
+og.setColor (java.awt.Color.red);
+og.drawRect (this.boxX, this.boxY, this.boxWidth, this.boxHeight);
+og.drawRect (this.boxX + 1, this.boxY + 1, this.boxWidth - 2, this.boxHeight - 2);
+g.drawImage (this.offscreen, 0, 0, this);
+}}, "java.awt.Graphics");
+c$.$OverviewPanel$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "OverviewPanel$1", java.awt.event.ComponentAdapter);
+Clazz_overrideMethod (c$, "componentResized", 
+function (evt) {
+if (this.b$["jalview.appletgui.OverviewPanel"].getSize ().width != this.b$["jalview.appletgui.OverviewPanel"].$width || this.b$["jalview.appletgui.OverviewPanel"].getSize ().height != this.b$["jalview.appletgui.OverviewPanel"].sequencesHeight + this.b$["jalview.appletgui.OverviewPanel"].graphHeight) {
+this.b$["jalview.appletgui.OverviewPanel"].updateOverviewImage ();
+}}, "java.awt.event.ComponentEvent");
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["jalview.appletgui.EmbmenuFrame", "java.awt.event.ActionListener", "$.ItemListener", "awt2swing.Button", "$.CheckboxMenuItem", "$.Choice", "$.Label", "$.Menu", "$.MenuBar", "$.MenuItem", "$.Panel", "java.awt.BorderLayout", "$.FlowLayout"], "jalview.appletgui.PCAPanel", ["awt2swing.Frame", "jalview.appletgui.AlignFrame", "$.CutAndPasteTransfer", "$.RotatableCanvas", "jalview.bin.JalviewLite", "jalview.datamodel.Alignment", "jalview.util.MessageManager", "jalview.viewmodel.PCAModel", "java.awt.Color", "$.Font", "java.lang.Thread"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.rc = null;
+this.av = null;
+this.pcaModel = null;
+this.top = 0;
+this.jPanel2 = null;
+this.jLabel1 = null;
+this.jLabel2 = null;
+this.jLabel3 = null;
+this.xCombobox = null;
+this.yCombobox = null;
+this.zCombobox = null;
+this.resetButton = null;
+this.flowLayout1 = null;
+this.borderLayout1 = null;
+this.menuBar1 = null;
+this.menu1 = null;
+this.menu2 = null;
+this.calcSettings = null;
+this.labels = null;
+this.protSetting = null;
+this.nuclSetting = null;
+this.values = null;
+this.inputData = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "PCAPanel", jalview.appletgui.EmbmenuFrame, [Runnable, java.awt.event.ActionListener, java.awt.event.ItemListener]);
+Clazz_prepareFields (c$, function () {
+this.jPanel2 =  new awt2swing.Panel ();
+this.jLabel1 =  new awt2swing.Label ();
+this.jLabel2 =  new awt2swing.Label ();
+this.jLabel3 =  new awt2swing.Label ();
+this.xCombobox =  new awt2swing.Choice ();
+this.yCombobox =  new awt2swing.Choice ();
+this.zCombobox =  new awt2swing.Choice ();
+this.resetButton =  new awt2swing.Button ();
+this.flowLayout1 =  new java.awt.FlowLayout ();
+this.borderLayout1 =  new java.awt.BorderLayout ();
+this.menuBar1 =  new awt2swing.MenuBar ();
+this.menu1 =  new awt2swing.Menu ();
+this.menu2 =  new awt2swing.Menu ();
+this.calcSettings =  new awt2swing.Menu ();
+this.labels =  new awt2swing.CheckboxMenuItem ();
+this.protSetting =  new awt2swing.CheckboxMenuItem ();
+this.nuclSetting =  new awt2swing.CheckboxMenuItem ();
+this.values =  new awt2swing.MenuItem ();
+this.inputData =  new awt2swing.MenuItem ();
+});
+Clazz_makeConstructor (c$, 
+function (av) {
+Clazz_superConstructor (this, jalview.appletgui.PCAPanel, []);
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+for (var i = 1; i < 8; i++) {
+this.xCombobox.addItem ("dim " + i);
+this.yCombobox.addItem ("dim " + i);
+this.zCombobox.addItem ("dim " + i);
+}
+this.av = av;
+var selected = av.getSelectionGroup () != null && av.getSelectionGroup ().getSize () > 0;
+var seqstrings = av.getAlignmentView (selected);
+var nucleotide = av.getAlignment ().isNucleotide ();
+var seqs;
+if (!selected) {
+seqs = av.getAlignment ().getSequencesArray ();
+} else {
+seqs = av.getSelectionGroup ().getSequencesInOrder (av.getAlignment ());
+}var sq = seqstrings.getSequences ();
+var length = sq[0].getWidth ();
+for (var i = 0; i < seqs.length; i++) {
+if (sq[i].getWidth () != length) {
+System.out.println ("Sequences must be equal length for PCA analysis");
+return;
+}}
+this.pcaModel =  new jalview.viewmodel.PCAModel (seqstrings, seqs, nucleotide);
+this.rc =  new jalview.appletgui.RotatableCanvas (av);
+this.embedMenuIfNeeded (this.rc);
+this.add (this.rc, "Center");
+jalview.bin.JalviewLite.addFrame (this, jalview.util.MessageManager.getString ("label.principal_component_analysis"), 475, 400);
+var worker =  new Thread (this);
+worker.start ();
+}, "jalview.appletgui.AlignViewport");
+Clazz_overrideMethod (c$, "run", 
+function () {
+this.calcSettings.setEnabled (false);
+this.rc.setEnabled (false);
+try {
+this.nuclSetting.setState (this.pcaModel.isNucleotide ());
+this.protSetting.setState (!this.pcaModel.isNucleotide ());
+this.pcaModel.run ();
+this.xCombobox.select (new Integer (0));
+this.yCombobox.select (new Integer (1));
+this.zCombobox.select (new Integer (2));
+this.pcaModel.updateRc (this.rc);
+this.top = this.pcaModel.getTop ();
+} catch (x) {
+if (Clazz_exceptionOf (x, OutOfMemoryError)) {
+System.err.println ("Out of memory when calculating PCA.");
+return;
+} else {
+throw x;
+}
+}
+this.calcSettings.setEnabled (true);
+this.rc.setEnabled (true);
+this.rc.repaint ();
+this.repaint ();
+});
+Clazz_defineMethod (c$, "doDimensionChange", 
+function () {
+if (this.top == 0) {
+return;
+}var dim1 = this.top - this.xCombobox.getSelectedIndex ();
+var dim2 = this.top - this.yCombobox.getSelectedIndex ();
+var dim3 = this.top - this.zCombobox.getSelectedIndex ();
+this.pcaModel.updateRcView (dim1, dim2, dim3);
+this.rc.img = null;
+this.rc.rotmat.setIdentity ();
+this.rc.initAxes ();
+this.rc.paint (this.rc.getGraphics ());
+});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.inputData) {
+this.showOriginalData ();
+}if (evt.getSource () === this.resetButton) {
+this.xCombobox.select (new Integer (0));
+this.yCombobox.select (new Integer (1));
+this.zCombobox.select (new Integer (2));
+this.doDimensionChange ();
+}if (evt.getSource () === this.values) {
+this.values_actionPerformed ();
+}}, "java.awt.event.ActionEvent");
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (evt) {
+if (evt.getSource () === this.xCombobox) {
+this.xCombobox_actionPerformed ();
+} else if (evt.getSource () === this.yCombobox) {
+this.yCombobox_actionPerformed ();
+} else if (evt.getSource () === this.zCombobox) {
+this.zCombobox_actionPerformed ();
+} else if (evt.getSource () === this.labels) {
+this.labels_itemStateChanged (evt);
+} else if (evt.getSource () === this.nuclSetting) {
+if (!this.pcaModel.isNucleotide ()) {
+this.pcaModel.setNucleotide (true);
+ new Thread (this).start ();
+}} else if (evt.getSource () === this.protSetting) {
+if (this.pcaModel.isNucleotide ()) {
+this.pcaModel.setNucleotide (false);
+ new Thread (this).start ();
+}}}, "java.awt.event.ItemEvent");
+Clazz_defineMethod (c$, "xCombobox_actionPerformed", 
+function () {
+this.doDimensionChange ();
+});
+Clazz_defineMethod (c$, "yCombobox_actionPerformed", 
+function () {
+this.doDimensionChange ();
+});
+Clazz_defineMethod (c$, "zCombobox_actionPerformed", 
+function () {
+this.doDimensionChange ();
+});
+Clazz_defineMethod (c$, "values_actionPerformed", 
+function () {
+var cap =  new jalview.appletgui.CutAndPasteTransfer (false, null);
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, jalview.util.MessageManager.getString ("label.pca_details"), 500, 500);
+cap.setText (this.pcaModel.getDetails ());
+});
+Clazz_defineMethod (c$, "showOriginalData", 
+function () {
+var gc = '-';
+try {
+gc = this.av.getGapCharacter ();
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+;var alAndColsel = this.pcaModel.getSeqtrings ().getAlignmentAndColumnSelection (gc);
+if (alAndColsel != null && alAndColsel[0] != null) {
+var al =  new jalview.datamodel.Alignment (alAndColsel[0]);
+var af =  new jalview.appletgui.AlignFrame (al, this.av.applet, "Original Data for PCA", false);
+af.viewport.setHiddenColumns (alAndColsel[1]);
+}});
+Clazz_defineMethod (c$, "labels_itemStateChanged", 
+function (itemEvent) {
+this.rc.showLabels (this.labels.getState ());
+}, "java.awt.event.ItemEvent");
+Clazz_defineMethod (c$, "jbInit", 
+ function () {
+this.setLayout (this.borderLayout1);
+this.jPanel2.setLayout (this.flowLayout1);
+this.jLabel1.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.jLabel1.setText ("x=");
+this.jLabel2.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.jLabel2.setText ("y=");
+this.jLabel3.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.jLabel3.setText ("z=");
+this.jPanel2.setBackground (java.awt.Color.white);
+this.zCombobox.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.zCombobox.addItemListener (this);
+this.yCombobox.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.yCombobox.addItemListener (this);
+this.xCombobox.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.xCombobox.addItemListener (this);
+this.resetButton.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.resetButton.setLabel (jalview.util.MessageManager.getString ("action.reset"));
+this.resetButton.addActionListener (this);
+this.setMenuBar (this.menuBar1);
+this.menu1.setLabel (jalview.util.MessageManager.getString ("action.file"));
+this.menu2.setLabel (jalview.util.MessageManager.getString ("action.view"));
+this.calcSettings.setLabel (jalview.util.MessageManager.getString ("action.change_params"));
+this.labels.setLabel (jalview.util.MessageManager.getString ("label.labels"));
+this.labels.addItemListener (this);
+this.values.setLabel (jalview.util.MessageManager.getString ("label.output_values"));
+this.values.addActionListener (this);
+this.inputData.setLabel (jalview.util.MessageManager.getString ("label.input_data"));
+this.nuclSetting.setLabel (jalview.util.MessageManager.getString ("label.nucleotide_matrix"));
+this.nuclSetting.addItemListener (this);
+this.protSetting.setLabel (jalview.util.MessageManager.getString ("label.protein_matrix"));
+this.protSetting.addItemListener (this);
+this.add (this.jPanel2, "South");
+this.jPanel2.add (this.jLabel1, null);
+this.jPanel2.add (this.xCombobox, null);
+this.jPanel2.add (this.jLabel2, null);
+this.jPanel2.add (this.yCombobox, null);
+this.jPanel2.add (this.jLabel3, null);
+this.jPanel2.add (this.zCombobox, null);
+this.jPanel2.add (this.resetButton, null);
+this.menuBar1.add (this.menu1);
+this.menuBar1.add (this.menu2);
+this.menuBar1.add (this.calcSettings);
+this.menu2.add (this.labels);
+this.menu1.add (this.values);
+this.menu1.add (this.inputData);
+this.calcSettings.add (this.nuclSetting);
+this.calcSettings.add (this.protSetting);
+this.inputData.addActionListener (this);
+});
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "jalview.api.RotatableCanvasI", "java.awt.event.KeyListener", "$.MouseListener", "$.MouseMotionListener", "jalview.math.RotatableMatrix"], "jalview.appletgui.RotatableCanvas", ["awt2swing.Util", "jalview.appletgui.PaintRefresher", "jalview.datamodel.SequenceGroup", "jalview.util.Format", "$.MessageManager", "java.awt.Color", "$.Dimension", "$.Font"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.idmat = null;
+this.objmat = null;
+this.rotmat = null;
+this.tooltip = null;
+this.toolx = 0;
+this.tooly = 0;
+this.$drawAxes = true;
+this.omx = 0;
+this.mx = 0;
+this.omy = 0;
+this.my = 0;
+this.img = null;
+this.ig = null;
+this.prefsize = null;
+this.centre = null;
+this.$width = null;
+this.max = null;
+this.min = null;
+this.maxwidth = 0;
+this.scale = 0;
+this.npoint = 0;
+this.points = null;
+this.orig = null;
+this.axes = null;
+this.startx = 0;
+this.starty = 0;
+this.lastx = 0;
+this.lasty = 0;
+this.rectx1 = 0;
+this.recty1 = 0;
+this.rectx2 = 0;
+this.recty2 = 0;
+this.scalefactor = 1;
+this.av = null;
+this.$showLabels = false;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "RotatableCanvas", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener, java.awt.event.KeyListener, jalview.api.RotatableCanvasI]);
+Clazz_prepareFields (c$, function () {
+this.idmat =  new jalview.math.RotatableMatrix (3, 3);
+this.objmat =  new jalview.math.RotatableMatrix (3, 3);
+this.rotmat =  new jalview.math.RotatableMatrix (3, 3);
+this.centre =  Clazz_newFloatArray (3, 0);
+this.$width =  Clazz_newFloatArray (3, 0);
+this.max =  Clazz_newFloatArray (3, 0);
+this.min =  Clazz_newFloatArray (3, 0);
+});
+Clazz_makeConstructor (c$, 
+function (av) {
+Clazz_superConstructor (this, jalview.appletgui.RotatableCanvas, []);
+this.av = av;
+}, "jalview.viewmodel.AlignmentViewport");
+Clazz_defineMethod (c$, "showLabels", 
+function (b) {
+this.$showLabels = b;
+this.repaint ();
+}, "~B");
+Clazz_overrideMethod (c$, "setPoints", 
+function (points, npoint) {
+this.points = points;
+this.npoint = npoint;
+jalview.appletgui.PaintRefresher.Register (this, this.av.getSequenceSetId ());
+this.prefsize = this.getPreferredSize ();
+this.orig =  Clazz_newFloatArray (npoint, 3, 0);
+for (var i = 0; i < npoint; i++) {
+var sp = points.elementAt (i);
+for (var j = 0; j < 3; j++) {
+this.orig[i][j] = sp.coord[j];
+}
+}
+for (var i = 0; i < 3; i++) {
+for (var j = 0; j < 3; j++) {
+if (i != j) {
+this.idmat.addElement (i, j, 0);
+this.objmat.addElement (i, j, 0);
+this.rotmat.addElement (i, j, 0);
+} else {
+this.idmat.addElement (i, j, 0);
+this.objmat.addElement (i, j, 0);
+this.rotmat.addElement (i, j, 0);
+}}
+}
+this.axes =  Clazz_newFloatArray (3, 3, 0);
+this.initAxes ();
+this.findCentre ();
+this.findWidth ();
+this.scale = this.findScale ();
+this.addMouseListener (this);
+this.addKeyListener (this);
+this.addMouseMotionListener (this);
+}, "java.util.Vector,~N");
+Clazz_defineMethod (c$, "initAxes", 
+function () {
+for (var i = 0; i < 3; i++) {
+for (var j = 0; j < 3; j++) {
+if (i != j) {
+this.axes[i][j] = 0;
+} else {
+this.axes[i][j] = 1;
+}}
+}
+});
+Clazz_defineMethod (c$, "findWidth", 
+function () {
+this.max =  Clazz_newFloatArray (3, 0);
+this.min =  Clazz_newFloatArray (3, 0);
+this.max[0] = -1.0E30;
+this.max[1] = -1.0E30;
+this.max[2] = -1.0E30;
+this.min[0] = 1e30;
+this.min[1] = 1e30;
+this.min[2] = 1e30;
+for (var i = 0; i < 3; i++) {
+for (var j = 0; j < this.npoint; j++) {
+var sp = this.points.elementAt (j);
+if (sp.coord[i] >= this.max[i]) {
+this.max[i] = sp.coord[i];
+}if (sp.coord[i] <= this.min[i]) {
+this.min[i] = sp.coord[i];
+}}
+}
+this.$width[0] = Math.abs (this.max[0] - this.min[0]);
+this.$width[1] = Math.abs (this.max[1] - this.min[1]);
+this.$width[2] = Math.abs (this.max[2] - this.min[2]);
+this.maxwidth = this.$width[0];
+if (this.$width[1] > this.$width[0]) {
+this.maxwidth = this.$width[1];
+}if (this.$width[2] > this.$width[1]) {
+this.maxwidth = this.$width[2];
+}});
+Clazz_defineMethod (c$, "findScale", 
+function () {
+var dim;
+var width;
+var height;
+if (this.getSize ().width != 0) {
+width = this.getSize ().width;
+height = this.getSize ().height;
+} else {
+width = this.prefsize.width;
+height = this.prefsize.height;
+}if (width < height) {
+dim = width;
+} else {
+dim = height;
+}return dim * this.scalefactor / (2 * this.maxwidth);
+});
+Clazz_defineMethod (c$, "findCentre", 
+function () {
+this.findWidth ();
+this.centre[0] = (this.max[0] + this.min[0]) / 2;
+this.centre[1] = (this.max[1] + this.min[1]) / 2;
+this.centre[2] = (this.max[2] + this.min[2]) / 2;
+});
+Clazz_overrideMethod (c$, "getPreferredSize", 
+function () {
+if (this.prefsize != null) {
+return this.prefsize;
+} else {
+return  new java.awt.Dimension (400, 400);
+}});
+Clazz_overrideMethod (c$, "getMinimumSize", 
+function () {
+return this.getPreferredSize ();
+});
+Clazz_overrideMethod (c$, "update", 
+function (g) {
+this.paint (g);
+}, "java.awt.Graphics");
+Clazz_defineMethod (c$, "PaintComponent", 
+function (g) {
+if (this.points == null) {
+g.setFont ( new java.awt.Font ("Verdana", 0, 18));
+awt2swing.Util.drawString (g, jalview.util.MessageManager.getString ("label.calculating_pca") + "....", 20, Clazz_doubleToInt (this.getSize ().height / 2));
+} else {
+if ((this.img == null) || (this.prefsize.width != this.getSize ().width) || (this.prefsize.height != this.getSize ().height)) {
+this.prefsize.width = this.getSize ().width;
+this.prefsize.height = this.getSize ().height;
+this.scale = this.findScale ();
+this.img = this.createImage (this.getSize ().width, this.getSize ().height);
+this.ig = this.img.getGraphics ();
+}this.drawBackground (this.ig, java.awt.Color.black);
+this.drawScene (this.ig);
+if (this.$drawAxes == true) {
+this.drawAxes (this.ig);
+}if (this.tooltip != null) {
+this.ig.setColor (java.awt.Color.red);
+awt2swing.Util.drawString (this.ig, this.tooltip, this.toolx, this.tooly);
+}g.drawImage (this.img, 0, 0, this);
+}}, "java.awt.Graphics");
+Clazz_defineMethod (c$, "drawAxes", 
+function (g) {
+g.setColor (java.awt.Color.yellow);
+for (var i = 0; i < 3; i++) {
+g.drawLine (Clazz_doubleToInt (this.getSize ().width / 2), Clazz_doubleToInt (this.getSize ().height / 2), Clazz_floatToInt (this.axes[i][0] * this.scale * this.max[0] + Clazz_doubleToInt (this.getSize ().width / 2)), Clazz_floatToInt (this.axes[i][1] * this.scale * this.max[1] + Clazz_doubleToInt (this.getSize ().height / 2)));
+}
+}, "java.awt.Graphics");
+Clazz_defineMethod (c$, "drawBackground", 
+function (g, col) {
+g.setColor (col);
+g.fillRect (0, 0, this.prefsize.width, this.prefsize.height);
+}, "java.awt.Graphics,java.awt.Color");
+Clazz_defineMethod (c$, "drawScene", 
+function (g) {
+var halfwidth = Clazz_doubleToInt (this.getSize ().width / 2);
+var halfheight = Clazz_doubleToInt (this.getSize ().height / 2);
+for (var i = 0; i < this.npoint; i++) {
+var sp = this.points.elementAt (i);
+var x = Clazz_floatToInt ((sp.coord[0] - this.centre[0]) * this.scale) + halfwidth;
+var y = Clazz_floatToInt ((sp.coord[1] - this.centre[1]) * this.scale) + halfheight;
+var z = sp.coord[1] - this.centre[2];
+if (this.av.getSequenceColour (sp.sequence) === java.awt.Color.black) {
+g.setColor (java.awt.Color.white);
+} else {
+g.setColor (this.av.getSequenceColour (sp.sequence));
+}if (this.av.getSelectionGroup () != null) {
+if (this.av.getSelectionGroup ().getSequences (null).contains ((this.points.elementAt (i)).sequence)) {
+g.setColor (java.awt.Color.gray);
+}}if (z < 0) {
+g.setColor (g.getColor ().darker ());
+}g.fillRect (x - 3, y - 3, 6, 6);
+if (this.$showLabels) {
+g.setColor (java.awt.Color.red);
+awt2swing.Util.drawString (g, (this.points.elementAt (i)).sequence.getName (), x - 3, y - 4);
+}}
+}, "java.awt.Graphics");
+Clazz_defineMethod (c$, "minimumsize", 
+function () {
+return this.prefsize;
+});
+Clazz_defineMethod (c$, "preferredsize", 
+function () {
+return this.prefsize;
+});
+Clazz_overrideMethod (c$, "keyTyped", 
+function (evt) {
+}, "java.awt.event.KeyEvent");
+Clazz_overrideMethod (c$, "keyReleased", 
+function (evt) {
+}, "java.awt.event.KeyEvent");
+Clazz_overrideMethod (c$, "keyPressed", 
+function (evt) {
+if (evt.getKeyCode () == 38) {
+this.scalefactor = (this.scalefactor * 1.1);
+this.scale = this.findScale ();
+} else if (evt.getKeyCode () == 40) {
+this.scalefactor = (this.scalefactor * 0.9);
+this.scale = this.findScale ();
+} else if (evt.getKeyChar () == 's') {
+System.err.println ("DEBUG: Rectangle selection");
+if (this.rectx2 != -1 && this.recty2 != -1) {
+this.rectSelect (this.rectx1, this.recty1, this.rectx2, this.recty2);
+}}this.repaint ();
+}, "java.awt.event.KeyEvent");
+Clazz_defineMethod (c$, "printPoints", 
+function () {
+for (var i = 0; i < this.npoint; i++) {
+var sp = this.points.elementAt (i);
+jalview.util.Format.printLong (System.out, "%5d ", i);
+for (var j = 0; j < 3; j++) {
+jalview.util.Format.printDouble (System.out, "%13.3f  ", sp.coord[j]);
+}
+System.out.println ();
+}
+});
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (evt) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mousePressed", 
+function (evt) {
+var x = evt.getX ();
+var y = evt.getY ();
+this.mx = x;
+this.my = y;
+this.omx = this.mx;
+this.omy = this.my;
+this.startx = x;
+this.starty = y;
+this.rectx1 = x;
+this.recty1 = y;
+this.rectx2 = -1;
+this.recty2 = -1;
+var found = this.findPoint (x, y);
+if (found != null) {
+if (this.av.getSelectionGroup () != null) {
+this.av.getSelectionGroup ().addOrRemove (found, true);
+this.av.getSelectionGroup ().setEndRes (this.av.getAlignment ().getWidth () - 1);
+} else {
+this.av.setSelectionGroup ( new jalview.datamodel.SequenceGroup ());
+this.av.getSelectionGroup ().addOrRemove (found, true);
+this.av.getSelectionGroup ().setEndRes (this.av.getAlignment ().getWidth () - 1);
+}jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
+this.av.sendSelection ();
+}this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseMoved", 
+function (evt) {
+var found = this.findPoint (evt.getX (), evt.getY ());
+if (found == null) {
+this.tooltip = null;
+} else {
+this.tooltip = found.getName ();
+this.toolx = evt.getX ();
+this.tooly = evt.getY ();
+}this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseDragged", 
+function (evt) {
+this.mx = evt.getX ();
+this.my = evt.getY ();
+this.rotmat.setIdentity ();
+this.rotmat.rotate (this.my - this.omy, 'x');
+this.rotmat.rotate (this.mx - this.omx, 'y');
+for (var i = 0; i < this.npoint; i++) {
+var sp = this.points.elementAt (i);
+sp.coord[0] -= this.centre[0];
+sp.coord[1] -= this.centre[1];
+sp.coord[2] -= this.centre[2];
+sp.coord = this.rotmat.vectorMultiply (sp.coord);
+sp.coord[0] += this.centre[0];
+sp.coord[1] += this.centre[1];
+sp.coord[2] += this.centre[2];
+}
+for (var i = 0; i < 3; i++) {
+this.axes[i] = this.rotmat.vectorMultiply (this.axes[i]);
+}
+this.omx = this.mx;
+this.omy = this.my;
+this.paint (this.getGraphics ());
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "rectSelect", 
+function (x1, y1, x2, y2) {
+for (var i = 0; i < this.npoint; i++) {
+var sp = this.points.elementAt (i);
+var tmp1 = Clazz_doubleToInt ((sp.coord[0] - this.centre[0]) * this.scale + this.getSize ().width / 2.0);
+var tmp2 = Clazz_doubleToInt ((sp.coord[1] - this.centre[1]) * this.scale + this.getSize ().height / 2.0);
+if (tmp1 > x1 && tmp1 < x2 && tmp2 > y1 && tmp2 < y2) {
+if (this.av != null) {
+if (!this.av.getSelectionGroup ().getSequences (null).contains (sp.sequence)) {
+this.av.getSelectionGroup ().addSequence (sp.sequence, true);
+}}}}
+}, "~N,~N,~N,~N");
+Clazz_defineMethod (c$, "findPoint", 
+function (x, y) {
+var halfwidth = Clazz_doubleToInt (this.getSize ().width / 2);
+var halfheight = Clazz_doubleToInt (this.getSize ().height / 2);
+var found = -1;
+for (var i = 0; i < this.npoint; i++) {
+var sp = this.points.elementAt (i);
+var px = Clazz_floatToInt ((sp.coord[0] - this.centre[0]) * this.scale) + halfwidth;
+var py = Clazz_floatToInt ((sp.coord[1] - this.centre[1]) * this.scale) + halfheight;
+if (Math.abs (px - x) < 3 && Math.abs (py - y) < 3) {
+found = i;
+}}
+if (found != -1) {
+return (this.points.elementAt (found)).sequence;
+} else {
+return null;
+}}, "~N,~N");
+});
+Clazz_declarePackage ("jalview.api");
+Clazz_declareInterface (jalview.api, "RotatableCanvasI");
+Clazz_declarePackage ("jalview.math");
+c$ = Clazz_decorateAsClass (function () {
+this.matrix = null;
+this.temp = null;
+this.rot = null;
+Clazz_instantialize (this, arguments);
+}, jalview.math, "RotatableMatrix");
+Clazz_makeConstructor (c$, 
+function (rows, cols) {
+this.matrix =  Clazz_newFloatArray (rows, cols, 0);
+this.temp =  Clazz_newFloatArray (3, 0);
+this.rot =  Clazz_newFloatArray (3, 3, 0);
+}, "~N,~N");
+Clazz_defineMethod (c$, "addElement", 
+function (i, j, value) {
+this.matrix[i][j] = value;
+}, "~N,~N,~N");
+Clazz_defineMethod (c$, "print", 
+function () {
+System.out.println (this.matrix[0][0] + " " + this.matrix[0][1] + " " + this.matrix[0][2]);
+System.out.println (this.matrix[1][0] + " " + this.matrix[1][1] + " " + this.matrix[1][2]);
+System.out.println (this.matrix[2][0] + " " + this.matrix[2][1] + " " + this.matrix[2][2]);
+});
+Clazz_defineMethod (c$, "rotate", 
+function (degrees, axis) {
+var costheta = Math.cos ((degrees * 3.141592653589793) / 180.0);
+var sintheta = Math.sin ((degrees * 3.141592653589793) / 180.0);
+if (axis == 'z') {
+this.rot[0][0] = costheta;
+this.rot[0][1] = -sintheta;
+this.rot[0][2] = 0.0;
+this.rot[1][0] = sintheta;
+this.rot[1][1] = costheta;
+this.rot[1][2] = 0.0;
+this.rot[2][0] = 0.0;
+this.rot[2][1] = 0.0;
+this.rot[2][2] = 1.0;
+this.preMultiply (this.rot);
+}if (axis == 'x') {
+this.rot[0][0] = 1.0;
+this.rot[0][1] = 0.0;
+this.rot[0][2] = 0.0;
+this.rot[1][0] = 0.0;
+this.rot[1][1] = costheta;
+this.rot[1][2] = sintheta;
+this.rot[2][0] = 0.0;
+this.rot[2][1] = -sintheta;
+this.rot[2][2] = costheta;
+this.preMultiply (this.rot);
+}if (axis == 'y') {
+this.rot[0][0] = costheta;
+this.rot[0][1] = 0.0;
+this.rot[0][2] = -sintheta;
+this.rot[1][0] = 0.0;
+this.rot[1][1] = 1.0;
+this.rot[1][2] = 0.0;
+this.rot[2][0] = sintheta;
+this.rot[2][1] = 0.0;
+this.rot[2][2] = costheta;
+this.preMultiply (this.rot);
+}}, "~N,~S");
+Clazz_defineMethod (c$, "vectorMultiply", 
+function (vect) {
+this.temp[0] = vect[0];
+this.temp[1] = vect[1];
+this.temp[2] = vect[2];
+for (var i = 0; i < 3; i++) {
+this.temp[i] = (this.matrix[i][0] * vect[0]) + (this.matrix[i][1] * vect[1]) + (this.matrix[i][2] * vect[2]);
+}
+vect[0] = this.temp[0];
+vect[1] = this.temp[1];
+vect[2] = this.temp[2];
+return vect;
+}, "~A");
+Clazz_defineMethod (c$, "preMultiply", 
+function (mat) {
+var tmp =  Clazz_newFloatArray (3, 3, 0);
+for (var i = 0; i < 3; i++) {
+for (var j = 0; j < 3; j++) {
+tmp[i][j] = (mat[i][0] * this.matrix[0][j]) + (mat[i][1] * this.matrix[1][j]) + (mat[i][2] * this.matrix[2][j]);
+}
+}
+for (var i = 0; i < 3; i++) {
+for (var j = 0; j < 3; j++) {
+this.matrix[i][j] = tmp[i][j];
+}
+}
+}, "~A");
+Clazz_defineMethod (c$, "postMultiply", 
+function (mat) {
+var tmp =  Clazz_newFloatArray (3, 3, 0);
+for (var i = 0; i < 3; i++) {
+for (var j = 0; j < 3; j++) {
+tmp[i][j] = (this.matrix[i][0] * mat[0][j]) + (this.matrix[i][1] * mat[1][j]) + (this.matrix[i][2] * mat[2][j]);
+}
+}
+for (var i = 0; i < 3; i++) {
+for (var j = 0; j < 3; j++) {
+this.matrix[i][j] = tmp[i][j];
+}
+}
+}, "~A");
+Clazz_defineMethod (c$, "setIdentity", 
+function () {
+this.matrix[0][0] = 1.0;
+this.matrix[1][1] = 1.0;
+this.matrix[2][2] = 1.0;
+this.matrix[0][1] = 0.0;
+this.matrix[0][2] = 0.0;
+this.matrix[1][0] = 0.0;
+this.matrix[1][2] = 0.0;
+this.matrix[2][0] = 0.0;
+this.matrix[2][1] = 0.0;
+});
+Clazz_declarePackage ("jalview.viewmodel");
+Clazz_load (null, "jalview.viewmodel.PCAModel", ["jalview.analysis.PCA", "jalview.datamodel.SequencePoint", "java.lang.StringBuffer", "java.util.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.pca = null;
+this.top = 0;
+this.seqstrings = null;
+this.seqs = null;
+this.score_matrix = null;
+this.nucleotide = false;
+this.points = null;
+this.jvCalcMode = true;
+Clazz_instantialize (this, arguments);
+}, jalview.viewmodel, "PCAModel");
+Clazz_makeConstructor (c$, 
+function (seqstrings2, seqs2, nucleotide2) {
+this.seqstrings = seqstrings2;
+this.seqs = seqs2;
+this.nucleotide = nucleotide2;
+this.score_matrix = nucleotide2 ? "PID" : "BLOSUM62";
+}, "jalview.datamodel.AlignmentView,~A,~B");
+Clazz_defineMethod (c$, "isJvCalcMode", 
+function () {
+return this.jvCalcMode;
+});
+Clazz_defineMethod (c$, "run", 
+function () {
+this.pca =  new jalview.analysis.PCA (this.seqstrings.getSequenceStrings (' '), this.nucleotide, this.score_matrix);
+this.pca.setJvCalcMode (this.jvCalcMode);
+this.pca.run ();
+var ii = 0;
+while ((ii < this.seqs.length) && (this.seqs[ii] != null)) {
+ii++;
+}
+var comps =  Clazz_newDoubleArray (ii, ii, 0);
+for (var i = 0; i < ii; i++) {
+if (this.pca.getEigenvalue (i) > 1e-4) {
+comps[i] = this.pca.component (i);
+}}
+this.top = this.pca.getM ().rows - 1;
+this.points =  new java.util.Vector ();
+var scores = this.pca.getComponents (this.top - 1, this.top - 2, this.top - 3, 100);
+for (var i = 0; i < this.pca.getM ().rows; i++) {
+var sp =  new jalview.datamodel.SequencePoint (this.seqs[i], scores[i]);
+this.points.addElement (sp);
+}
+});
+Clazz_defineMethod (c$, "updateRc", 
+function (rc) {
+rc.setPoints (this.points, this.pca.getM ().rows);
+}, "jalview.api.RotatableCanvasI");
+Clazz_defineMethod (c$, "isNucleotide", 
+function () {
+return this.nucleotide;
+});
+Clazz_defineMethod (c$, "setNucleotide", 
+function (nucleotide) {
+this.nucleotide = nucleotide;
+}, "~B");
+Clazz_defineMethod (c$, "getTop", 
+function () {
+return this.top;
+});
+Clazz_defineMethod (c$, "updateRcView", 
+function (dim1, dim2, dim3) {
+var scores = this.pca.getComponents (dim1 - 1, dim2 - 1, dim3 - 1, 100);
+for (var i = 0; i < this.pca.getM ().rows; i++) {
+(this.points.elementAt (i)).coord = scores[i];
+}
+}, "~N,~N,~N");
+Clazz_defineMethod (c$, "getDetails", 
+function () {
+return this.pca.getDetails ();
+});
+Clazz_defineMethod (c$, "getSeqtrings", 
+function () {
+return this.seqstrings;
+});
+Clazz_defineMethod (c$, "getPointsasCsv", 
+function (transformed, xdim, ydim, zdim) {
+var csv =  new StringBuffer ();
+csv.append ("\"Sequence\"");
+if (transformed) {
+csv.append (",");
+csv.append ("" + xdim);
+csv.append (",");
+csv.append ("" + ydim);
+csv.append (",");
+csv.append ("" + zdim);
+} else {
+for (var d = 1, dmax = this.pca.component (1).length; d <= dmax; d++) {
+csv.append ("," + d);
+}
+}csv.append ("\n");
+for (var s = 0; s < this.seqs.length; s++) {
+csv.append ("\"" + this.seqs[s].getName () + "\"");
+var fl;
+if (!transformed) {
+fl = this.pca.component (s);
+for (var d = fl.length - 1; d >= 0; d--) {
+csv.append (",");
+csv.append (fl[d]);
+}
+} else {
+fl = this.getPointPosition (s);
+for (var d = 0; d < fl.length; d++) {
+csv.append (",");
+csv.append (fl[d]);
+}
+}csv.append ("\n");
+}
+return csv.toString ();
+}, "~B,~N,~N,~N");
+Clazz_defineMethod (c$, "getPointPosition", 
+function (s) {
+var pts =  Clazz_newDoubleArray (3, 0);
+var p = this.points.elementAt (s).coord;
+pts[0] = p[0];
+pts[1] = p[1];
+pts[2] = p[2];
+return pts;
+}, "~N");
+Clazz_defineMethod (c$, "setJvCalcMode", 
+function (state) {
+this.jvCalcMode = state;
+}, "~B");
+Clazz_defineMethod (c$, "getScore_matrix", 
+function () {
+return this.score_matrix;
+});
+Clazz_defineMethod (c$, "setScore_matrix", 
+function (score_matrix) {
+this.score_matrix = score_matrix;
+}, "~S");
+});
+Clazz_declarePackage ("jalview.analysis");
+Clazz_load (["java.lang.StringBuffer"], "jalview.analysis.PCA", ["jalview.datamodel.BinarySequence", "jalview.math.Matrix", "jalview.schemes.ResidueProperties"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.m = null;
+this.symm = null;
+this.m2 = null;
+this.eigenvalue = null;
+this.eigenvector = null;
+this.details = null;
+this.jvCalcMode = true;
+Clazz_instantialize (this, arguments);
+}, jalview.analysis, "PCA", null, Runnable);
+Clazz_prepareFields (c$, function () {
+this.details =  new StringBuffer ();
+});
+Clazz_makeConstructor (c$, 
+function (s) {
+this.construct (s, false);
+}, "~A");
+Clazz_makeConstructor (c$, 
+function (s, nucleotides) {
+this.construct (s, nucleotides, null);
+}, "~A,~B");
+Clazz_makeConstructor (c$, 
+function (s, nucleotides, s_m) {
+var bs =  new Array (s.length);
+var ii = 0;
+while ((ii < s.length) && (s[ii] != null)) {
+bs[ii] =  new jalview.datamodel.BinarySequence (s[ii], nucleotides);
+bs[ii].encode ();
+ii++;
+}
+var bs2 =  new Array (s.length);
+ii = 0;
+var smtrx = null;
+var sm = s_m;
+if (sm != null) {
+smtrx = jalview.schemes.ResidueProperties.getScoreMatrix (sm);
+}if (smtrx == null) {
+smtrx = jalview.schemes.ResidueProperties.getScoreMatrix (sm = (nucleotides ? "DNA" : "BLOSUM62"));
+}this.details.append ("PCA calculation using " + sm + " sequence similarity matrix\n========\n\n");
+while ((ii < s.length) && (s[ii] != null)) {
+bs2[ii] =  new jalview.datamodel.BinarySequence (s[ii], nucleotides);
+if (smtrx != null) {
+try {
+bs2[ii].matrixEncode (smtrx);
+} catch (x) {
+if (Clazz_exceptionOf (x, jalview.datamodel.BinarySequence.InvalidSequenceTypeException)) {
+this.details.append ("Unexpected mismatch of sequence type and score matrix. Calculation will not be valid!\n\n");
+} else {
+throw x;
+}
+}
+}ii++;
+}
+var count = 0;
+while ((count < bs.length) && (bs[count] != null)) {
+count++;
+}
+var seqmat =  Clazz_newDoubleArray (count, bs[0].getDBinary ().length, 0);
+var seqmat2 =  Clazz_newDoubleArray (count, bs2[0].getDBinary ().length, 0);
+var i = 0;
+while (i < count) {
+seqmat[i] = bs[i].getDBinary ();
+seqmat2[i] = bs2[i].getDBinary ();
+i++;
+}
+this.m =  new jalview.math.Matrix (seqmat, count, bs[0].getDBinary ().length);
+this.m2 =  new jalview.math.Matrix (seqmat2, count, bs2[0].getDBinary ().length);
+}, "~A,~B,~S");
+Clazz_defineMethod (c$, "getM", 
+function () {
+return this.m;
+});
+Clazz_defineMethod (c$, "getEigenvalue", 
+function (i) {
+return this.eigenvector.d[i];
+}, "~N");
+Clazz_defineMethod (c$, "getComponents", 
+function (l, n, mm, factor) {
+var out =  Clazz_newFloatArray (this.m.rows, 3, 0);
+for (var i = 0; i < this.m.rows; i++) {
+out[i][0] = this.component (i, l) * factor;
+out[i][1] = this.component (i, n) * factor;
+out[i][2] = this.component (i, mm) * factor;
+}
+return out;
+}, "~N,~N,~N,~N");
+Clazz_defineMethod (c$, "component", 
+function (n) {
+var out =  Clazz_newDoubleArray (this.m.rows, 0);
+for (var i = 0; i < this.m.rows; i++) {
+out[i] = this.component (i, n);
+}
+return out;
+}, "~N");
+Clazz_defineMethod (c$, "component", 
+function (row, n) {
+var out = 0.0;
+for (var i = 0; i < this.symm.cols; i++) {
+out += (this.symm.value[row][i] * this.eigenvector.value[i][n]);
+}
+return out / this.eigenvector.d[n];
+}, "~N,~N");
+Clazz_defineMethod (c$, "getDetails", 
+function () {
+return this.details.toString ();
+});
+Clazz_overrideMethod (c$, "run", 
+function () {
+var ps = ((Clazz_isClassDefined ("jalview.analysis.PCA$1") ? 0 : jalview.analysis.PCA.$PCA$1$ ()), Clazz_innerTypeInstance (jalview.analysis.PCA$1, this, null, System.out));
+try {
+this.details.append ("PCA Calculation Mode is " + (this.jvCalcMode ? "Jalview variant" : "Original SeqSpace") + "\n");
+var mt = this.m.transpose ();
+this.details.append (" --- OrigT * Orig ---- \n");
+if (!this.jvCalcMode) {
+this.eigenvector = mt.preMultiply (this.m);
+} else {
+this.eigenvector = mt.preMultiply (this.m2);
+}this.eigenvector.print (ps);
+this.symm = this.eigenvector.copy ();
+this.eigenvector.tred ();
+this.details.append (" ---Tridiag transform matrix ---\n");
+this.details.append (" --- D vector ---\n");
+this.eigenvector.printD (ps);
+ps.println ();
+this.details.append ("--- E vector ---\n");
+this.eigenvector.printE (ps);
+ps.println ();
+this.eigenvector.tqli ();
+} catch (q) {
+if (Clazz_exceptionOf (q, Exception)) {
+q.printStackTrace ();
+this.details.append ("\n*** Unexpected exception when performing PCA ***\n" + q.getLocalizedMessage ());
+this.details.append ("*** Matrices below may not be fully diagonalised. ***\n");
+} else {
+throw q;
+}
+}
+this.details.append (" --- New diagonalization matrix ---\n");
+this.eigenvector.print (ps);
+this.details.append (" --- Eigenvalues ---\n");
+this.eigenvector.printD (ps);
+ps.println ();
+});
+Clazz_defineMethod (c$, "setJvCalcMode", 
+function (calcMode) {
+this.jvCalcMode = calcMode;
+}, "~B");
+c$.$PCA$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.analysis, "PCA$1", java.io.PrintStream);
+Clazz_defineMethod (c$, "print", 
+function (x) {
+this.b$["jalview.analysis.PCA"].details.append (x);
+}, "~S");
+Clazz_defineMethod (c$, "println", 
+function () {
+this.b$["jalview.analysis.PCA"].details.append ("\n");
+});
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_load (["jalview.datamodel.Sequence", "java.lang.Exception"], "jalview.datamodel.BinarySequence", ["jalview.schemes.ResidueProperties"], function () {
+c$ = Clazz_decorateAsClass (function () {
+if (!Clazz_isClassDefined ("jalview.datamodel.BinarySequence.InvalidSequenceTypeException")) {
+jalview.datamodel.BinarySequence.$BinarySequence$InvalidSequenceTypeException$ ();
+}
+this.binary = null;
+this.dbinary = null;
+this.isNa = false;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "BinarySequence", jalview.datamodel.Sequence);
+Clazz_makeConstructor (c$, 
+function (s, isNa) {
+Clazz_superConstructor (this, jalview.datamodel.BinarySequence, ["", s, 0, s.length]);
+this.isNa = isNa;
+}, "~S,~B");
+Clazz_defineMethod (c$, "initMatrixGetNoRes", 
+ function () {
+var nores = (this.isNa) ? 10 : 23;
+this.dbinary =  Clazz_newDoubleArray (this.getSequence ().length * nores, 0);
+for (var i = 0; i < this.dbinary.length; i++) {
+this.dbinary[i] = 0.0;
+}
+return nores;
+});
+Clazz_defineMethod (c$, "getSymbolmatrix", 
+ function () {
+return (this.isNa) ? jalview.schemes.ResidueProperties.nucleotideIndex : jalview.schemes.ResidueProperties.aaIndex;
+});
+Clazz_defineMethod (c$, "encode", 
+function () {
+var nores = this.initMatrixGetNoRes ();
+var sindex = this.getSymbolmatrix ();
+for (var i = 0; i < this.getSequence ().length; i++) {
+var aanum = nores - 1;
+try {
+aanum = sindex[this.getCharAt (i).charCodeAt (0)];
+} catch (e) {
+if (Clazz_exceptionOf (e, NullPointerException)) {
+aanum = nores - 1;
+} else {
+throw e;
+}
+}
+if (aanum >= nores) {
+aanum = nores - 1;
+}this.dbinary[(i * nores) + aanum] = 1.0;
+}
+});
+Clazz_defineMethod (c$, "matrixEncode", 
+function (matrix) {
+if (this.isNa != matrix.isDNA ()) {
+throw Clazz_innerTypeInstance (jalview.datamodel.BinarySequence.InvalidSequenceTypeException, this, null, "matrix " + matrix.getClass ().getCanonicalName () + " is not a valid matrix for " + (this.isNa ? "nucleotide" : "protein") + "sequences");
+}this.matrixEncode (matrix.isDNA () ? jalview.schemes.ResidueProperties.nucleotideIndex : jalview.schemes.ResidueProperties.aaIndex, matrix.getMatrix ());
+}, "jalview.schemes.ScoreMatrix");
+Clazz_defineMethod (c$, "matrixEncode", 
+ function (aaIndex, matrix) {
+var nores = this.initMatrixGetNoRes ();
+for (var i = 0, iSize = this.getSequence ().length; i < iSize; i++) {
+var aanum = nores - 1;
+try {
+aanum = aaIndex[this.getCharAt (i).charCodeAt (0)];
+} catch (e) {
+if (Clazz_exceptionOf (e, NullPointerException)) {
+aanum = nores - 1;
+} else {
+throw e;
+}
+}
+if (aanum >= nores) {
+aanum = nores - 1;
+}for (var j = 0; j < nores; j++) {
+this.dbinary[(i * nores) + j] = matrix[aanum][j];
+}
+}
+}, "~A,~A");
+Clazz_defineMethod (c$, "toBinaryString", 
+function () {
+var out = "";
+for (var i = 0; i < this.binary.length; i++) {
+out += ( new Integer (this.binary[i])).toString ();
+if (i < (this.binary.length - 1)) {
+out += " ";
+}}
+return out;
+});
+Clazz_defineMethod (c$, "getDBinary", 
+function () {
+return this.dbinary;
+});
+c$.$BinarySequence$InvalidSequenceTypeException$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel.BinarySequence, "InvalidSequenceTypeException", Exception);
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("jalview.math");
+Clazz_load (null, "jalview.math.Matrix", ["jalview.util.Format", "$.MessageManager", "java.lang.Exception"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.value = null;
+this.rows = 0;
+this.cols = 0;
+this.d = null;
+this.e = null;
+this.maxIter = 45;
+Clazz_instantialize (this, arguments);
+}, jalview.math, "Matrix");
+Clazz_makeConstructor (c$, 
+function (value, rows, cols) {
+this.rows = rows;
+this.cols = cols;
+this.value = value;
+}, "~A,~N,~N");
+Clazz_defineMethod (c$, "transpose", 
+function () {
+var out =  Clazz_newDoubleArray (this.cols, this.rows, 0);
+for (var i = 0; i < this.cols; i++) {
+for (var j = 0; j < this.rows; j++) {
+out[i][j] = this.value[j][i];
+}
+}
+return  new jalview.math.Matrix (out, this.cols, this.rows);
+});
+Clazz_defineMethod (c$, "print", 
+function (ps) {
+for (var i = 0; i < this.rows; i++) {
+for (var j = 0; j < this.cols; j++) {
+jalview.util.Format.printDouble (ps, "%8.2f", this.value[i][j]);
+}
+ps.println ();
+}
+}, "java.io.PrintStream");
+Clazz_defineMethod (c$, "preMultiply", 
+function ($in) {
+var tmp =  Clazz_newDoubleArray ($in.rows, this.cols, 0);
+for (var i = 0; i < $in.rows; i++) {
+for (var j = 0; j < this.cols; j++) {
+tmp[i][j] = 0.0;
+for (var k = 0; k < $in.cols; k++) {
+tmp[i][j] += ($in.value[i][k] * this.value[k][j]);
+}
+}
+}
+return  new jalview.math.Matrix (tmp, $in.rows, this.cols);
+}, "jalview.math.Matrix");
+Clazz_defineMethod (c$, "vectorPostMultiply", 
+function ($in) {
+var out =  Clazz_newDoubleArray ($in.length, 0);
+for (var i = 0; i < $in.length; i++) {
+out[i] = 0.0;
+for (var k = 0; k < $in.length; k++) {
+out[i] += (this.value[i][k] * $in[k]);
+}
+}
+return out;
+}, "~A");
+Clazz_defineMethod (c$, "postMultiply", 
+function ($in) {
+var out =  Clazz_newDoubleArray (this.rows, $in.cols, 0);
+for (var i = 0; i < this.rows; i++) {
+for (var j = 0; j < $in.cols; j++) {
+out[i][j] = 0.0;
+for (var k = 0; k < this.rows; k++) {
+out[i][j] = out[i][j] + (this.value[i][k] * $in.value[k][j]);
+}
+}
+}
+return  new jalview.math.Matrix (out, this.cols, $in.rows);
+}, "jalview.math.Matrix");
+Clazz_defineMethod (c$, "copy", 
+function () {
+var newmat =  Clazz_newDoubleArray (this.rows, this.cols, 0);
+for (var i = 0; i < this.rows; i++) {
+for (var j = 0; j < this.cols; j++) {
+newmat[i][j] = this.value[i][j];
+}
+}
+return  new jalview.math.Matrix (newmat, this.rows, this.cols);
+});
+Clazz_defineMethod (c$, "tred", 
+function () {
+var n = this.rows;
+var l;
+var k;
+var j;
+var i;
+var scale;
+var hh;
+var h;
+var g;
+var f;
+this.d =  Clazz_newDoubleArray (this.rows, 0);
+this.e =  Clazz_newDoubleArray (this.rows, 0);
+for (i = n; i >= 2; i--) {
+l = i - 1;
+h = 0.0;
+scale = 0.0;
+if (l > 1) {
+for (k = 1; k <= l; k++) {
+scale += Math.abs (this.value[i - 1][k - 1]);
+}
+if (scale == 0.0) {
+this.e[i - 1] = this.value[i - 1][l - 1];
+} else {
+for (k = 1; k <= l; k++) {
+this.value[i - 1][k - 1] /= scale;
+h += (this.value[i - 1][k - 1] * this.value[i - 1][k - 1]);
+}
+f = this.value[i - 1][l - 1];
+if (f > 0) {
+g = -1.0 * Math.sqrt (h);
+} else {
+g = Math.sqrt (h);
+}this.e[i - 1] = scale * g;
+h -= (f * g);
+this.value[i - 1][l - 1] = f - g;
+f = 0.0;
+for (j = 1; j <= l; j++) {
+this.value[j - 1][i - 1] = this.value[i - 1][j - 1] / h;
+g = 0.0;
+for (k = 1; k <= j; k++) {
+g += (this.value[j - 1][k - 1] * this.value[i - 1][k - 1]);
+}
+for (k = j + 1; k <= l; k++) {
+g += (this.value[k - 1][j - 1] * this.value[i - 1][k - 1]);
+}
+this.e[j - 1] = g / h;
+f += (this.e[j - 1] * this.value[i - 1][j - 1]);
+}
+hh = f / (h + h);
+for (j = 1; j <= l; j++) {
+f = this.value[i - 1][j - 1];
+g = this.e[j - 1] - (hh * f);
+this.e[j - 1] = g;
+for (k = 1; k <= j; k++) {
+this.value[j - 1][k - 1] -= ((f * this.e[k - 1]) + (g * this.value[i - 1][k - 1]));
+}
+}
+}} else {
+this.e[i - 1] = this.value[i - 1][l - 1];
+}this.d[i - 1] = h;
+}
+this.d[0] = 0.0;
+this.e[0] = 0.0;
+for (i = 1; i <= n; i++) {
+l = i - 1;
+if (this.d[i - 1] != 0.0) {
+for (j = 1; j <= l; j++) {
+g = 0.0;
+for (k = 1; k <= l; k++) {
+g += (this.value[i - 1][k - 1] * this.value[k - 1][j - 1]);
+}
+for (k = 1; k <= l; k++) {
+this.value[k - 1][j - 1] -= (g * this.value[k - 1][i - 1]);
+}
+}
+}this.d[i - 1] = this.value[i - 1][i - 1];
+this.value[i - 1][i - 1] = 1.0;
+for (j = 1; j <= l; j++) {
+this.value[j - 1][i - 1] = 0.0;
+this.value[i - 1][j - 1] = 0.0;
+}
+}
+});
+Clazz_defineMethod (c$, "tqli", 
+function () {
+var n = this.rows;
+var m;
+var l;
+var iter;
+var i;
+var k;
+var s;
+var r;
+var p;
+;var g;
+var f;
+var dd;
+var c;
+var b;
+for (i = 2; i <= n; i++) {
+this.e[i - 2] = this.e[i - 1];
+}
+this.e[n - 1] = 0.0;
+for (l = 1; l <= n; l++) {
+iter = 0;
+do {
+for (m = l; m <= (n - 1); m++) {
+dd = Math.abs (this.d[m - 1]) + Math.abs (this.d[m]);
+if ((Math.abs (this.e[m - 1]) + dd) == dd) {
+break;
+}}
+if (m != l) {
+iter++;
+if (iter == this.maxIter) {
+throw  new Exception (jalview.util.MessageManager.formatMessage ("exception.matrix_too_many_iteration",  Clazz_newArray (-1, ["tqli", Integer.$valueOf (this.maxIter).toString ()])));
+} else {
+}g = (this.d[l] - this.d[l - 1]) / (2.0 * this.e[l - 1]);
+r = Math.sqrt ((g * g) + 1.0);
+g = this.d[m - 1] - this.d[l - 1] + (this.e[l - 1] / (g + this.sign (r, g)));
+c = 1.0;
+s = c;
+p = 0.0;
+for (i = m - 1; i >= l; i--) {
+f = s * this.e[i - 1];
+b = c * this.e[i - 1];
+if (Math.abs (f) >= Math.abs (g)) {
+c = g / f;
+r = Math.sqrt ((c * c) + 1.0);
+this.e[i] = f * r;
+s = 1.0 / r;
+c *= s;
+} else {
+s = f / g;
+r = Math.sqrt ((s * s) + 1.0);
+this.e[i] = g * r;
+c = 1.0 / r;
+s *= c;
+}g = this.d[i] - p;
+r = ((this.d[i - 1] - g) * s) + (2.0 * c * b);
+p = s * r;
+this.d[i] = g + p;
+g = (c * r) - b;
+for (k = 1; k <= n; k++) {
+f = this.value[k - 1][i];
+this.value[k - 1][i] = (s * this.value[k - 1][i - 1]) + (c * f);
+this.value[k - 1][i - 1] = (c * this.value[k - 1][i - 1]) - (s * f);
+}
+}
+this.d[l - 1] = this.d[l - 1] - p;
+this.e[l - 1] = g;
+this.e[m - 1] = 0.0;
+}} while (m != l);
+}
+});
+Clazz_defineMethod (c$, "tred2", 
+function () {
+var n = this.rows;
+var l;
+var k;
+var j;
+var i;
+var scale;
+var hh;
+var h;
+var g;
+var f;
+this.d =  Clazz_newDoubleArray (this.rows, 0);
+this.e =  Clazz_newDoubleArray (this.rows, 0);
+for (i = n - 1; i >= 1; i--) {
+l = i - 1;
+h = 0.0;
+scale = 0.0;
+if (l > 0) {
+for (k = 0; k < l; k++) {
+scale += Math.abs (this.value[i][k]);
+}
+if (scale == 0.0) {
+this.e[i] = this.value[i][l];
+} else {
+for (k = 0; k < l; k++) {
+this.value[i][k] /= scale;
+h += (this.value[i][k] * this.value[i][k]);
+}
+f = this.value[i][l];
+if (f > 0) {
+g = -1.0 * Math.sqrt (h);
+} else {
+g = Math.sqrt (h);
+}this.e[i] = scale * g;
+h -= (f * g);
+this.value[i][l] = f - g;
+f = 0.0;
+for (j = 0; j < l; j++) {
+this.value[j][i] = this.value[i][j] / h;
+g = 0.0;
+for (k = 0; k < j; k++) {
+g += (this.value[j][k] * this.value[i][k]);
+}
+for (k = j; k < l; k++) {
+g += (this.value[k][j] * this.value[i][k]);
+}
+this.e[j] = g / h;
+f += (this.e[j] * this.value[i][j]);
+}
+hh = f / (h + h);
+for (j = 0; j < l; j++) {
+f = this.value[i][j];
+g = this.e[j] - (hh * f);
+this.e[j] = g;
+for (k = 0; k < j; k++) {
+this.value[j][k] -= ((f * this.e[k]) + (g * this.value[i][k]));
+}
+}
+}} else {
+this.e[i] = this.value[i][l];
+}this.d[i] = h;
+}
+this.d[0] = 0.0;
+this.e[0] = 0.0;
+for (i = 0; i < n; i++) {
+l = i - 1;
+if (this.d[i] != 0.0) {
+for (j = 0; j < l; j++) {
+g = 0.0;
+for (k = 0; k < l; k++) {
+g += (this.value[i][k] * this.value[k][j]);
+}
+for (k = 0; k < l; k++) {
+this.value[k][j] -= (g * this.value[k][i]);
+}
+}
+}this.d[i] = this.value[i][i];
+this.value[i][i] = 1.0;
+for (j = 0; j < l; j++) {
+this.value[j][i] = 0.0;
+this.value[i][j] = 0.0;
+}
+}
+});
+Clazz_defineMethod (c$, "tqli2", 
+function () {
+var n = this.rows;
+var m;
+var l;
+var iter;
+var i;
+var k;
+var s;
+var r;
+var p;
+;var g;
+var f;
+var dd;
+var c;
+var b;
+for (i = 2; i <= n; i++) {
+this.e[i - 2] = this.e[i - 1];
+}
+this.e[n - 1] = 0.0;
+for (l = 1; l <= n; l++) {
+iter = 0;
+do {
+for (m = l; m <= (n - 1); m++) {
+dd = Math.abs (this.d[m - 1]) + Math.abs (this.d[m]);
+if ((Math.abs (this.e[m - 1]) + dd) == dd) {
+break;
+}}
+if (m != l) {
+iter++;
+if (iter == this.maxIter) {
+throw  new Exception (jalview.util.MessageManager.formatMessage ("exception.matrix_too_many_iteration",  Clazz_newArray (-1, ["tqli2", Integer.$valueOf (this.maxIter).toString ()])));
+} else {
+}g = (this.d[l] - this.d[l - 1]) / (2.0 * this.e[l - 1]);
+r = Math.sqrt ((g * g) + 1.0);
+g = this.d[m - 1] - this.d[l - 1] + (this.e[l - 1] / (g + this.sign (r, g)));
+c = 1.0;
+s = c;
+p = 0.0;
+for (i = m - 1; i >= l; i--) {
+f = s * this.e[i - 1];
+b = c * this.e[i - 1];
+if (Math.abs (f) >= Math.abs (g)) {
+c = g / f;
+r = Math.sqrt ((c * c) + 1.0);
+this.e[i] = f * r;
+s = 1.0 / r;
+c *= s;
+} else {
+s = f / g;
+r = Math.sqrt ((s * s) + 1.0);
+this.e[i] = g * r;
+c = 1.0 / r;
+s *= c;
+}g = this.d[i] - p;
+r = ((this.d[i - 1] - g) * s) + (2.0 * c * b);
+p = s * r;
+this.d[i] = g + p;
+g = (c * r) - b;
+for (k = 1; k <= n; k++) {
+f = this.value[k - 1][i];
+this.value[k - 1][i] = (s * this.value[k - 1][i - 1]) + (c * f);
+this.value[k - 1][i - 1] = (c * this.value[k - 1][i - 1]) - (s * f);
+}
+}
+this.d[l - 1] = this.d[l - 1] - p;
+this.e[l - 1] = g;
+this.e[m - 1] = 0.0;
+}} while (m != l);
+}
+});
+Clazz_defineMethod (c$, "sign", 
+function (a, b) {
+if (b < 0) {
+return -Math.abs (a);
+} else {
+return Math.abs (a);
+}}, "~N,~N");
+Clazz_defineMethod (c$, "getColumn", 
+function (n) {
+var out =  Clazz_newDoubleArray (this.rows, 0);
+for (var i = 0; i < this.rows; i++) {
+out[i] = this.value[i][n];
+}
+return out;
+}, "~N");
+Clazz_defineMethod (c$, "printD", 
+function (ps) {
+for (var j = 0; j < this.rows; j++) {
+jalview.util.Format.printDouble (ps, "%15.4e", this.d[j]);
+}
+}, "java.io.PrintStream");
+Clazz_defineMethod (c$, "printE", 
+function (ps) {
+for (var j = 0; j < this.rows; j++) {
+jalview.util.Format.printDouble (ps, "%15.4e", this.e[j]);
+}
+}, "java.io.PrintStream");
+});
+Clazz_declarePackage ("jalview.datamodel");
+c$ = Clazz_decorateAsClass (function () {
+this.isPlaceholder = false;
+this.sequence = null;
+this.coord = null;
+Clazz_instantialize (this, arguments);
+}, jalview.datamodel, "SequencePoint");
+Clazz_makeConstructor (c$, 
+function (sequence, coord) {
+this.sequence = sequence;
+this.coord = coord;
+}, "jalview.datamodel.SequenceI,~A");
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "java.awt.event.ActionListener", "awt2swing.Button", "$.ScrollPane", "$.TextArea", "java.awt.BorderLayout", "java.util.Vector"], "jalview.appletgui.PairwiseAlignPanel", ["jalview.analysis.AlignSeq", "jalview.appletgui.AlignFrame", "jalview.datamodel.Alignment", "jalview.util.Format", "$.MessageManager", "java.awt.Font"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.sequences = null;
+this.ap = null;
+this.scrollPane = null;
+this.textarea = null;
+this.viewInEditorButton = null;
+this.jPanel1 = null;
+this.borderLayout1 = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "PairwiseAlignPanel", awt2swing.Panel, java.awt.event.ActionListener);
+Clazz_prepareFields (c$, function () {
+this.sequences =  new java.util.Vector ();
+this.scrollPane =  new awt2swing.ScrollPane ();
+this.textarea =  new awt2swing.TextArea ();
+this.viewInEditorButton =  new awt2swing.Button ();
+this.jPanel1 =  new awt2swing.Panel ();
+this.borderLayout1 =  new java.awt.BorderLayout ();
+});
+Clazz_makeConstructor (c$, 
+function (ap) {
+Clazz_superConstructor (this, jalview.appletgui.PairwiseAlignPanel, []);
+try {
+this.jbInit ();
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.ap = ap;
+this.sequences =  new java.util.Vector ();
+var seqs;
+var seqStrings = ap.av.getViewAsString (true);
+if (ap.av.getSelectionGroup () == null) {
+seqs = ap.av.getAlignment ().getSequencesArray ();
+} else {
+seqs = ap.av.getSelectionGroup ().getSequencesInOrder (ap.av.getAlignment ());
+}var scores =  Clazz_newFloatArray (seqs.length, seqs.length, 0);
+var totscore = 0;
+var count = ap.av.getSelectionGroup ().getSize ();
+var type = (ap.av.getAlignment ().isNucleotide ()) ? "dna" : "pep";
+var seq;
+for (var i = 1; i < count; i++) {
+for (var j = 0; j < i; j++) {
+var as =  new jalview.analysis.AlignSeq (seqs[i], seqStrings[i], seqs[j], seqStrings[j], type);
+if (as.s1str.length == 0 || as.s2str.length == 0) {
+continue;
+}as.calcScoreMatrix ();
+as.traceAlignment ();
+as.printAlignment (System.out);
+scores[i][j] = as.getMaxScore () / as.getASeq1 ().length;
+totscore = totscore + scores[i][j];
+this.textarea.append (as.getOutput ());
+this.sequences.add (as.getAlignedSeq1 ());
+this.sequences.add (as.getAlignedSeq1 ());
+}
+}
+if (count > 2) {
+System.out.println ("Pairwise alignment scaled similarity score matrix\n");
+for (var i = 0; i < count; i++) {
+jalview.util.Format.print (System.out, "%s \n", ("" + i) + " " + seqs[i].getName ());
+}
+System.out.println ("\n");
+for (var i = 0; i < count; i++) {
+for (var j = 0; j < i; j++) {
+jalview.util.Format.printDouble (System.out, "%7.3f", scores[i][j] / totscore);
+}
+}
+System.out.println ("\n");
+}}, "jalview.appletgui.AlignmentPanel");
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.viewInEditorButton) {
+this.viewInEditorButton_actionPerformed ();
+}}, "java.awt.event.ActionEvent");
+Clazz_defineMethod (c$, "viewInEditorButton_actionPerformed", 
+function () {
+var seq =  new Array (this.sequences.size ());
+for (var i = 0; i < this.sequences.size (); i++) {
+seq[i] = this.sequences.elementAt (i);
+}
+ new jalview.appletgui.AlignFrame ( new jalview.datamodel.Alignment (seq), this.ap.av.applet, "Pairwise Aligned Sequences", false);
+});
+Clazz_defineMethod (c$, "jbInit", 
+ function () {
+this.setLayout (this.borderLayout1);
+this.textarea.setFont ( new java.awt.Font ("Monospaced", 0, 12));
+this.textarea.setText ("");
+this.viewInEditorButton.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.viewInEditorButton.setLabel (jalview.util.MessageManager.getString ("label.view_alignment_editor"));
+this.viewInEditorButton.addActionListener (this);
+this.add (this.scrollPane, "Center");
+this.scrollPane.add (this.textarea);
+this.add (this.jPanel1, "South");
+this.jPanel1.add (this.viewInEditorButton, null);
+});
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["jalview.appletgui.SliderPanel", "java.awt.event.WindowListener", "java.util.Stack"], "jalview.appletgui.RedundancyPanel", ["awt2swing.Frame", "jalview.analysis.AlignSeq", "jalview.appletgui.PaintRefresher", "jalview.bin.JalviewLite", "jalview.commands.EditCommand", "jalview.util.MessageManager", "java.awt.event.AdjustmentListener", "java.lang.Thread", "java.util.ArrayList", "$.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.historyList = null;
+this.redundancy = null;
+this.originalSequences = null;
+this.frame = null;
+this.redundantSeqs = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "RedundancyPanel", jalview.appletgui.SliderPanel, [Runnable, java.awt.event.WindowListener]);
+Clazz_prepareFields (c$, function () {
+this.historyList =  new java.util.Stack ();
+});
+Clazz_makeConstructor (c$, 
+function (ap) {
+Clazz_superConstructor (this, jalview.appletgui.RedundancyPanel, [ap, 0, false, null]);
+this.redundantSeqs =  new java.util.Vector ();
+this.ap = ap;
+this.undoButton.setVisible (true);
+this.applyButton.setVisible (true);
+this.allGroupsCheck.setVisible (false);
+this.label.setText (jalview.util.MessageManager.getString ("label.enter_redundancy_threshold"));
+this.valueField.setText ("100");
+this.slider.setVisibleAmount (1);
+this.slider.setMinimum (0);
+this.slider.setMaximum (100 + this.slider.getVisibleAmount ());
+this.slider.setValue (100);
+this.slider.addAdjustmentListener (((Clazz_isClassDefined ("jalview.appletgui.RedundancyPanel$1") ? 0 : jalview.appletgui.RedundancyPanel.$RedundancyPanel$1$ ()), Clazz_innerTypeInstance (jalview.appletgui.RedundancyPanel$1, this, null)));
+this.frame =  new awt2swing.Frame ();
+this.frame.add (this);
+jalview.bin.JalviewLite.addFrame (this.frame, jalview.util.MessageManager.getString ("label.redundancy_threshold_selection"), 400, 100);
+this.frame.addWindowListener (this);
+var worker =  new Thread (this);
+worker.start ();
+}, "jalview.appletgui.AlignmentPanel");
+Clazz_overrideMethod (c$, "run", 
+function () {
+this.label.setText (jalview.util.MessageManager.getString ("label.calculating"));
+this.slider.setVisible (false);
+this.applyButton.setEnabled (false);
+this.valueField.setVisible (false);
+this.validate ();
+var omitHidden = null;
+var sg = this.ap.av.getSelectionGroup ();
+var height;
+var start;
+var end;
+if ((sg != null) && (sg.getSize () >= 1)) {
+this.originalSequences = sg.getSequencesInOrder (this.ap.av.getAlignment ());
+start = sg.getStartRes ();
+end = sg.getEndRes ();
+} else {
+this.originalSequences = this.ap.av.getAlignment ().getSequencesArray ();
+start = 0;
+end = this.ap.av.getAlignment ().getWidth ();
+}height = this.originalSequences.length;
+this.redundancy = jalview.analysis.AlignSeq.computeRedundancyMatrix (this.originalSequences, omitHidden, start, end, false);
+this.label.setText (jalview.util.MessageManager.getString ("label.enter_redundancy_threshold"));
+this.slider.setVisible (true);
+this.applyButton.setEnabled (true);
+this.valueField.setVisible (true);
+this.validate ();
+this.sliderValueChanged ();
+});
+Clazz_defineMethod (c$, "sliderValueChanged", 
+function () {
+if (this.redundancy == null) {
+return;
+}var value = this.slider.getValue ();
+var redundantSequences =  new java.util.ArrayList ();
+for (var i = 0; i < this.redundancy.length; i++) {
+if (value <= this.redundancy[i]) {
+redundantSequences.add (this.originalSequences[i]);
+}}
+this.ap.idPanel.idCanvas.setHighlighted (redundantSequences);
+jalview.appletgui.PaintRefresher.Refresh (this, this.ap.av.getSequenceSetId (), true, true);
+});
+Clazz_overrideMethod (c$, "applyButton_actionPerformed", 
+function () {
+var del =  new java.util.Vector ();
+this.undoButton.setEnabled (true);
+var value = this.slider.getValue ();
+var sg = this.ap.av.getSelectionGroup ();
+for (var i = 0; i < this.redundancy.length; i++) {
+if (value <= this.redundancy[i]) {
+del.addElement (this.originalSequences[i]);
+}}
+if (del.size () > 0) {
+var deleted =  new Array (del.size ());
+var width = 0;
+for (var i = 0; i < del.size (); i++) {
+deleted[i] = del.elementAt (i);
+if (deleted[i].getLength () > width) {
+width = deleted[i].getLength ();
+}}
+var cut =  new jalview.commands.EditCommand (jalview.util.MessageManager.getString ("action.remove_redundancy"), jalview.commands.EditCommand.Action.CUT, deleted, 0, width, this.ap.av.getAlignment ());
+var alignment = this.ap.av.getAlignment ();
+for (var i = 0; i < del.size (); i++) {
+alignment.deleteSequence (deleted[i]);
+if (sg != null) {
+sg.deleteSequence (deleted[i], false);
+}}
+this.historyList.push (cut);
+this.ap.alignFrame.addHistoryItem (cut);
+jalview.appletgui.PaintRefresher.Refresh (this, this.ap.av.getSequenceSetId (), true, true);
+this.ap.av.firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());
+}});
+Clazz_overrideMethod (c$, "undoButton_actionPerformed", 
+function () {
+var command = this.historyList.pop ();
+command.undoCommand (null);
+if (this.ap.av.getHistoryList ().contains (command)) {
+this.ap.av.getHistoryList ().remove (command);
+this.ap.alignFrame.updateEditMenuBar ();
+this.ap.av.firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());
+}this.ap.paintAlignment (true);
+if (this.historyList.size () == 0) {
+this.undoButton.setEnabled (false);
+}});
+Clazz_defineMethod (c$, "valueField_actionPerformed", 
+function (e) {
+try {
+var i = Integer.parseInt (this.valueField.getText ());
+this.slider.setValue (i);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+this.valueField.setText (this.slider.getValue () + "");
+} else {
+throw ex;
+}
+}
+}, "java.awt.event.ActionEvent");
+Clazz_overrideMethod (c$, "windowOpened", 
+function (evt) {
+}, "java.awt.event.WindowEvent");
+Clazz_overrideMethod (c$, "windowClosing", 
+function (evt) {
+this.ap.idPanel.idCanvas.setHighlighted (null);
+}, "java.awt.event.WindowEvent");
+Clazz_overrideMethod (c$, "windowClosed", 
+function (evt) {
+}, "java.awt.event.WindowEvent");
+Clazz_overrideMethod (c$, "windowActivated", 
+function (evt) {
+}, "java.awt.event.WindowEvent");
+Clazz_overrideMethod (c$, "windowDeactivated", 
+function (evt) {
+}, "java.awt.event.WindowEvent");
+Clazz_overrideMethod (c$, "windowIconified", 
+function (evt) {
+}, "java.awt.event.WindowEvent");
+Clazz_overrideMethod (c$, "windowDeiconified", 
+function (evt) {
+}, "java.awt.event.WindowEvent");
+c$.$RedundancyPanel$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.appletgui, "RedundancyPanel$1", null, java.awt.event.AdjustmentListener);
+Clazz_overrideMethod (c$, "adjustmentValueChanged", 
+function (evt) {
+this.b$["jalview.appletgui.RedundancyPanel"].valueField.setText (this.b$["jalview.appletgui.RedundancyPanel"].slider.getValue () + "");
+this.b$["jalview.appletgui.RedundancyPanel"].sliderValueChanged ();
+}, "java.awt.event.AdjustmentEvent");
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["jalview.appletgui.EmbmenuFrame", "java.awt.event.ActionListener", "$.ItemListener", "java.lang.Thread", "awt2swing.CheckboxMenuItem", "$.Menu", "$.MenuBar", "$.MenuItem", "$.ScrollPane", "java.awt.BorderLayout"], "jalview.appletgui.TreePanel", ["awt2swing.Frame", "jalview.analysis.NJTree", "jalview.api.analysis.ViewBasedAnalysisI", "jalview.appletgui.AlignFrame", "$.CutAndPasteTransfer", "$.FontChooser", "$.TreeCanvas", "jalview.bin.JalviewLite", "jalview.datamodel.Alignment", "jalview.io.NewickFile", "jalview.schemes.ResidueProperties", "jalview.util.MessageManager", "java.awt.Color", "$.Font"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.seq = null;
+this.$type = null;
+this.pwtype = null;
+this.start = 0;
+this.end = 0;
+this.treeCanvas = null;
+this.tree = null;
+this.ap = null;
+this.av = null;
+if (!Clazz_isClassDefined ("jalview.appletgui.TreePanel.TreeLoader")) {
+jalview.appletgui.TreePanel.$TreePanel$TreeLoader$ ();
+}
+this.borderLayout1 = null;
+this.scrollPane = null;
+this.jMenuBar1 = null;
+this.jMenu2 = null;
+this.fontSize = null;
+this.bootstrapMenu = null;
+this.distanceMenu = null;
+this.placeholdersMenu = null;
+this.fitToWindow = null;
+this.fileMenu = null;
+this.newickOutput = null;
+this.inputData = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "TreePanel", jalview.appletgui.EmbmenuFrame, [java.awt.event.ActionListener, java.awt.event.ItemListener]);
+Clazz_prepareFields (c$, function () {
+this.borderLayout1 =  new java.awt.BorderLayout ();
+this.scrollPane =  new awt2swing.ScrollPane ();
+this.jMenuBar1 =  new awt2swing.MenuBar ();
+this.jMenu2 =  new awt2swing.Menu ();
+this.fontSize =  new awt2swing.MenuItem ();
+this.bootstrapMenu =  new awt2swing.CheckboxMenuItem ();
+this.distanceMenu =  new awt2swing.CheckboxMenuItem ();
+this.placeholdersMenu =  new awt2swing.CheckboxMenuItem ();
+this.fitToWindow =  new awt2swing.CheckboxMenuItem ();
+this.fileMenu =  new awt2swing.Menu ();
+this.newickOutput =  new awt2swing.MenuItem ();
+this.inputData =  new awt2swing.MenuItem ();
+});
+Clazz_defineMethod (c$, "getTree", 
+function () {
+return this.tree;
+});
+Clazz_defineMethod (c$, "finalize", 
+function () {
+this.ap = null;
+this.av = null;
+Clazz_superCall (this, jalview.appletgui.TreePanel, "finalize", []);
+});
+Clazz_makeConstructor (c$, 
+function (ap, type, pwtype) {
+Clazz_superConstructor (this, jalview.appletgui.TreePanel, []);
+try {
+this.jbInit ();
+this.setMenuBar (this.jMenuBar1);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+this.initTreePanel (ap, type, pwtype, null);
+}, "jalview.appletgui.AlignmentPanel,~S,~S");
+Clazz_makeConstructor (c$, 
+function (ap, type, pwtype, newtree) {
+Clazz_superConstructor (this, jalview.appletgui.TreePanel, []);
+try {
+this.jbInit ();
+this.setMenuBar (this.jMenuBar1);
+} catch (e) {
+if (Clazz_exceptionOf (e, Exception)) {
+e.printStackTrace ();
+} else {
+throw e;
+}
+}
+this.initTreePanel (ap, type, pwtype, newtree);
+}, "jalview.appletgui.AlignmentPanel,~S,~S,jalview.io.NewickFile");
+Clazz_defineMethod (c$, "initTreePanel", 
+function (ap, type, pwtype, newTree) {
+this.ap = ap;
+this.av = ap.av;
+this.$type = type;
+this.pwtype = pwtype;
+this.treeCanvas =  new jalview.appletgui.TreeCanvas (ap, this.scrollPane);
+var tl = Clazz_innerTypeInstance (jalview.appletgui.TreePanel.TreeLoader, this, null, newTree);
+tl.start ();
+this.embedMenuIfNeeded (this.treeCanvas);
+this.scrollPane.add (this.treeCanvas, "Center");
+}, "jalview.appletgui.AlignmentPanel,~S,~S,jalview.io.NewickFile");
+Clazz_defineMethod (c$, "showOriginalData", 
+function () {
+if (this.tree.seqData != null) {
+var gc = '-';
+try {
+gc = this.av.getGapCharacter ();
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+;var alAndColsel = this.tree.seqData.getAlignmentAndColumnSelection (gc);
+if (alAndColsel != null && alAndColsel[0] != null) {
+var al =  new jalview.datamodel.Alignment (alAndColsel[0]);
+var af =  new jalview.appletgui.AlignFrame (al, this.av.applet, "Original Data for Tree", false);
+af.viewport.setHiddenColumns (alAndColsel[1]);
+}} else {
+System.out.println ("Original Tree Data not available");
+}});
+Clazz_overrideMethod (c$, "actionPerformed", 
+function (evt) {
+if (evt.getSource () === this.newickOutput) {
+this.newickOutput_actionPerformed ();
+} else if (evt.getSource () === this.fontSize) {
+this.fontSize_actionPerformed ();
+} else if (evt.getSource () === this.inputData) {
+this.showOriginalData ();
+}}, "java.awt.event.ActionEvent");
+Clazz_overrideMethod (c$, "itemStateChanged", 
+function (evt) {
+if (evt.getSource () === this.fitToWindow) {
+this.treeCanvas.fitToWindow = this.fitToWindow.getState ();
+} else if (evt.getSource () === this.distanceMenu) {
+this.treeCanvas.setShowDistances (this.distanceMenu.getState ());
+} else if (evt.getSource () === this.bootstrapMenu) {
+this.treeCanvas.setShowBootstrap (this.bootstrapMenu.getState ());
+} else if (evt.getSource () === this.placeholdersMenu) {
+this.treeCanvas.setMarkPlaceholders (this.placeholdersMenu.getState ());
+}this.treeCanvas.repaint ();
+}, "java.awt.event.ItemEvent");
+Clazz_defineMethod (c$, "newickOutput_actionPerformed", 
+function () {
+var fout =  new jalview.io.NewickFile (this.tree.getTopNode ());
+var output = fout.print (false, true);
+var cap =  new jalview.appletgui.CutAndPasteTransfer (false, null);
+cap.setText (output);
+var frame =  new awt2swing.Frame ();
+frame.add (cap);
+jalview.bin.JalviewLite.addFrame (frame, this.$type + " " + this.pwtype, 500, 100);
+});
+Clazz_defineMethod (c$, "getTreeFont", 
+function () {
+return this.treeCanvas.$font;
+});
+Clazz_defineMethod (c$, "setTreeFont", 
+function (font) {
+this.treeCanvas.$font = font;
+this.treeCanvas.repaint ();
+}, "java.awt.Font");
+Clazz_defineMethod (c$, "fontSize_actionPerformed", 
+function () {
+if (this.treeCanvas == null) {
+return;
+} new jalview.appletgui.FontChooser (this);
+});
+Clazz_defineMethod (c$, "jbInit", 
+ function () {
+this.setLayout (this.borderLayout1);
+this.setBackground (java.awt.Color.white);
+this.setFont ( new java.awt.Font ("Verdana", 0, 12));
+this.jMenu2.setLabel (jalview.util.MessageManager.getString ("action.view"));
+this.fontSize.setLabel (jalview.util.MessageManager.getString ("action.font"));
+this.fontSize.addActionListener (this);
+this.bootstrapMenu.setLabel (jalview.util.MessageManager.getString ("label.show_bootstrap_values"));
+this.bootstrapMenu.addItemListener (this);
+this.distanceMenu.setLabel (jalview.util.MessageManager.getString ("label.show_distances"));
+this.distanceMenu.addItemListener (this);
+this.placeholdersMenu.setLabel (jalview.util.MessageManager.getString ("label.mark_unassociated_leaves"));
+this.placeholdersMenu.addItemListener (this);
+this.fitToWindow.setState (true);
+this.fitToWindow.setLabel (jalview.util.MessageManager.getString ("label.fit_to_window"));
+this.fitToWindow.addItemListener (this);
+this.fileMenu.setLabel (jalview.util.MessageManager.getString ("action.file"));
+this.newickOutput.setLabel (jalview.util.MessageManager.getString ("label.newick_format"));
+this.newickOutput.addActionListener (this);
+this.inputData.setLabel (jalview.util.MessageManager.getString ("label.input_data"));
+this.add (this.scrollPane, "Center");
+this.jMenuBar1.add (this.fileMenu);
+this.jMenuBar1.add (this.jMenu2);
+this.jMenu2.add (this.fitToWindow);
+this.jMenu2.add (this.fontSize);
+this.jMenu2.add (this.distanceMenu);
+this.jMenu2.add (this.bootstrapMenu);
+this.jMenu2.add (this.placeholdersMenu);
+this.fileMenu.add (this.newickOutput);
+this.fileMenu.add (this.inputData);
+this.inputData.addActionListener (this);
+});
+c$.$TreePanel$TreeLoader$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.newtree = null;
+this.odata = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui.TreePanel, "TreeLoader", Thread);
+Clazz_makeConstructor (c$, 
+function (a) {
+Clazz_superConstructor (this, jalview.appletgui.TreePanel.TreeLoader, []);
+this.newtree = a;
+}, "jalview.io.NewickFile");
+Clazz_overrideMethod (c$, "run", 
+function () {
+if (this.newtree != null) {
+if (this.odata == null) {
+this.b$["jalview.appletgui.TreePanel"].tree =  new jalview.analysis.NJTree (this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getSequencesArray (), this.newtree);
+} else {
+this.b$["jalview.appletgui.TreePanel"].tree =  new jalview.analysis.NJTree (this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getSequencesArray (), this.odata, this.newtree);
+}} else {
+var a;
+var b;
+var c;
+var d = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup () != null && this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getSize () > 1;
+var e = this.b$["jalview.appletgui.TreePanel"].av.getAlignmentView (d);
+if (!d) {
+a = 0;
+b = this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getWidth ();
+c = this.b$["jalview.appletgui.TreePanel"].av.getAlignment ().getSequencesArray ();
+} else {
+a = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getStartRes ();
+b = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getEndRes () + 1;
+c = this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup ().getSequencesInOrder (this.b$["jalview.appletgui.TreePanel"].av.getAlignment ());
+}var f = jalview.schemes.ResidueProperties.getScoreModel (this.b$["jalview.appletgui.TreePanel"].pwtype);
+if (Clazz_instanceOf (f, jalview.api.analysis.ViewBasedAnalysisI)) {
+try {
+f = f.getClass ().newInstance ();
+(f).configureFromAlignmentView (this.b$["jalview.appletgui.TreePanel"].treeCanvas.ap);
+} catch (q) {
+if (Clazz_exceptionOf (q, Exception)) {
+System.err.println ("Couldn't create a scoremodel instance for " + f.getName ());
+q.printStackTrace ();
+} else {
+throw q;
+}
+}
+this.b$["jalview.appletgui.TreePanel"].tree =  new jalview.analysis.NJTree (c, e, this.b$["jalview.appletgui.TreePanel"].$type, this.b$["jalview.appletgui.TreePanel"].pwtype, f, a, b);
+} else {
+this.b$["jalview.appletgui.TreePanel"].tree =  new jalview.analysis.NJTree (c, e, this.b$["jalview.appletgui.TreePanel"].$type, this.b$["jalview.appletgui.TreePanel"].pwtype, null, a, b);
+}}this.b$["jalview.appletgui.TreePanel"].tree.reCount (this.b$["jalview.appletgui.TreePanel"].tree.getTopNode ());
+this.b$["jalview.appletgui.TreePanel"].tree.findHeight (this.b$["jalview.appletgui.TreePanel"].tree.getTopNode ());
+this.b$["jalview.appletgui.TreePanel"].treeCanvas.setTree (this.b$["jalview.appletgui.TreePanel"].tree);
+if (this.newtree != null) {
+var a = this.newtree.HasDistances () && this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter ("showTreeDistances", this.newtree.HasDistances ());
+var b = this.newtree.HasBootstrap () && this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter ("showTreeBootstraps", this.newtree.HasBootstrap ());
+this.b$["jalview.appletgui.TreePanel"].distanceMenu.setState (a);
+this.b$["jalview.appletgui.TreePanel"].bootstrapMenu.setState (b);
+this.b$["jalview.appletgui.TreePanel"].treeCanvas.setShowBootstrap (b);
+this.b$["jalview.appletgui.TreePanel"].treeCanvas.setShowDistances (a);
+this.b$["jalview.appletgui.TreePanel"].treeCanvas.setMarkPlaceholders (this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter ("showUnlinkedTreeNodes", false));
+}this.b$["jalview.appletgui.TreePanel"].treeCanvas.repaint ();
+this.b$["jalview.appletgui.TreePanel"].av.setCurrentTree (this.b$["jalview.appletgui.TreePanel"].tree);
+});
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("jalview.analysis");
+Clazz_load (["java.util.Vector"], ["jalview.analysis.Cluster", "$.NJTree"], ["jalview.analysis.SequenceIdMatcher", "jalview.datamodel.AlignmentView", "$.CigarArray", "$.NodeTransformI", "$.SeqCigar", "$.Sequence", "$.SequenceI", "$.SequenceNode", "jalview.io.NewickFile", "jalview.schemes.ResidueProperties", "jalview.util.Format", "java.lang.StringBuffer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.$cluster = null;
+this.sequence = null;
+this.seqData = null;
+this.done = null;
+this.noseqs = 0;
+this.noClus = 0;
+this.distance = null;
+this.mini = 0;
+this.minj = 0;
+this.ri = 0;
+this.rj = 0;
+this.groups = null;
+this.maxdist = null;
+this.top = null;
+this.maxDistValue = 0;
+this.maxheight = 0;
+this.ycount = 0;
+this.node = null;
+this.type = null;
+this.pwtype = null;
+this.found = null;
+this.leaves = null;
+this.hasDistances = true;
+this.hasBootstrap = false;
+this.hasRootDistance = true;
+this._lycount = 0;
+this._lylimit = 0;
+Clazz_instantialize (this, arguments);
+}, jalview.analysis, "NJTree");
+Clazz_prepareFields (c$, function () {
+this.groups =  new java.util.Vector ();
+});
+Clazz_makeConstructor (c$, 
+function (seqs, odata, treefile) {
+this.construct (seqs, treefile);
+if (odata != null) {
+this.seqData = odata;
+}}, "~A,jalview.datamodel.AlignmentView,jalview.io.NewickFile");
+Clazz_makeConstructor (c$, 
+function (seqs, treefile) {
+this.sequence = seqs;
+this.top = treefile.getTree ();
+this.hasDistances = treefile.HasDistances ();
+this.hasBootstrap = treefile.HasBootstrap ();
+this.hasRootDistance = treefile.HasRootDistance ();
+this.maxheight = this.findHeight (this.top);
+var algnIds =  new jalview.analysis.SequenceIdMatcher (seqs);
+var leaves =  new java.util.Vector ();
+this.findLeaves (this.top, leaves);
+var i = 0;
+var namesleft = seqs.length;
+var j;
+var nam;
+var realnam;
+var one2many =  new java.util.Vector ();
+var countOne2Many = 0;
+while (i < leaves.size ()) {
+j = leaves.elementAt (i++);
+realnam = j.getName ();
+nam = null;
+if (namesleft > -1) {
+nam = algnIds.findIdMatch (realnam);
+}if (nam != null) {
+j.setElement (nam);
+if (one2many.contains (nam)) {
+countOne2Many++;
+} else {
+one2many.addElement (nam);
+namesleft--;
+}} else {
+j.setElement ( new jalview.datamodel.Sequence (realnam, "THISISAPLACEHLDER"));
+j.setPlaceholder (true);
+}}
+}, "~A,jalview.io.NewickFile");
+Clazz_makeConstructor (c$, 
+function (sequence, seqData, type, pwtype, sm, start, end) {
+this.sequence = sequence;
+this.node =  new java.util.Vector ();
+this.type = type;
+this.pwtype = pwtype;
+if (seqData != null) {
+this.seqData = seqData;
+} else {
+var seqs =  new Array (sequence.length);
+for (var i = 0; i < sequence.length; i++) {
+seqs[i] =  new jalview.datamodel.SeqCigar (sequence[i], start, end);
+}
+var sdata =  new jalview.datamodel.CigarArray (seqs);
+sdata.addOperation ('M', end - start + 1);
+this.seqData =  new jalview.datamodel.AlignmentView (sdata, start);
+}if (!(type.equals ("NJ"))) {
+type = "AV";
+}if (sm == null && !(pwtype.equals ("PID"))) {
+if (jalview.schemes.ResidueProperties.getScoreMatrix (pwtype) == null) {
+pwtype = "BLOSUM62";
+}}var i = 0;
+this.done =  Clazz_newIntArray (sequence.length, 0);
+while ((i < sequence.length) && (sequence[i] != null)) {
+this.done[i] = 0;
+i++;
+}
+this.noseqs = i++;
+this.distance = this.findDistances (sm);
+this.makeLeaves ();
+this.noClus = this.$cluster.size ();
+this.cluster ();
+}, "~A,jalview.datamodel.AlignmentView,~S,~S,jalview.api.analysis.ScoreModelI,~N,~N");
+Clazz_overrideMethod (c$, "toString", 
+function () {
+var fout =  new jalview.io.NewickFile (this.getTopNode ());
+return fout.print (this.isHasBootstrap (), this.isHasDistances (), this.isHasRootDistance ());
+});
+Clazz_defineMethod (c$, "UpdatePlaceHolders", 
+function (list) {
+var leaves =  new java.util.Vector ();
+this.findLeaves (this.top, leaves);
+var sz = leaves.size ();
+var seqmatcher = null;
+var i = 0;
+while (i < sz) {
+var leaf = leaves.elementAt (i++);
+if (list.contains (leaf.element ())) {
+leaf.setPlaceholder (false);
+} else {
+if (seqmatcher == null) {
+var seqs =  new Array (list.size ());
+for (var j = 0; j < seqs.length; j++) {
+seqs[j] = list.get (j);
+}
+seqmatcher =  new jalview.analysis.SequenceIdMatcher (seqs);
+}var nam = seqmatcher.findIdMatch (leaf.getName ());
+if (nam != null) {
+if (!leaf.isPlaceholder ()) {
+}leaf.setPlaceholder (false);
+leaf.setElement (nam);
+} else {
+if (!leaf.isPlaceholder ()) {
+leaf.setElement ( new jalview.datamodel.Sequence (leaf.getName (), "THISISAPLACEHLDER"));
+}leaf.setPlaceholder (true);
+}}}
+}, "java.util.List");
+Clazz_defineMethod (c$, "renameAssociatedNodes", 
+function () {
+this.applyToNodes (((Clazz_isClassDefined ("jalview.analysis.NJTree$1") ? 0 : jalview.analysis.NJTree.$NJTree$1$ ()), Clazz_innerTypeInstance (jalview.analysis.NJTree$1, this, null)));
+});
+Clazz_defineMethod (c$, "cluster", 
+function () {
+while (this.noClus > 2) {
+if (this.type.equals ("NJ")) {
+this.findMinNJDistance ();
+} else {
+this.findMinDistance ();
+}var c = this.joinClusters (this.mini, this.minj);
+this.done[this.minj] = 1;
+this.$cluster.setElementAt (null, this.minj);
+this.$cluster.setElementAt (c, this.mini);
+this.noClus--;
+}
+var onefound = false;
+var one = -1;
+var two = -1;
+for (var i = 0; i < this.noseqs; i++) {
+if (this.done[i] != 1) {
+if (onefound == false) {
+two = i;
+onefound = true;
+} else {
+one = i;
+}}}
+this.joinClusters (one, two);
+this.top = (this.node.elementAt (one));
+this.reCount (this.top);
+this.findHeight (this.top);
+this.findMaxDist (this.top);
+});
+Clazz_defineMethod (c$, "joinClusters", 
+function (i, j) {
+var dist = this.distance[i][j];
+var noi = (this.$cluster.elementAt (i)).value.length;
+var noj = (this.$cluster.elementAt (j)).value.length;
+var value =  Clazz_newIntArray (noi + noj, 0);
+for (var ii = 0; ii < noi; ii++) {
+value[ii] = (this.$cluster.elementAt (i)).value[ii];
+}
+for (var ii = noi; ii < (noi + noj); ii++) {
+value[ii] = (this.$cluster.elementAt (j)).value[ii - noi];
+}
+var c =  new jalview.analysis.Cluster (value);
+this.ri = this.findr (i, j);
+this.rj = this.findr (j, i);
+if (this.type.equals ("NJ")) {
+this.findClusterNJDistance (i, j);
+} else {
+this.findClusterDistance (i, j);
+}var sn =  new jalview.datamodel.SequenceNode ();
+sn.setLeft ((this.node.elementAt (i)));
+sn.setRight ((this.node.elementAt (j)));
+var tmpi = (this.node.elementAt (i));
+var tmpj = (this.node.elementAt (j));
+if (this.type.equals ("NJ")) {
+this.findNewNJDistances (tmpi, tmpj, dist);
+} else {
+this.findNewDistances (tmpi, tmpj, dist);
+}tmpi.setParent (sn);
+tmpj.setParent (sn);
+this.node.setElementAt (sn, i);
+return c;
+}, "~N,~N");
+Clazz_defineMethod (c$, "findNewNJDistances", 
+function (tmpi, tmpj, dist) {
+tmpi.dist = ((dist + this.ri) - this.rj) / 2;
+tmpj.dist = (dist - tmpi.dist);
+if (tmpi.dist < 0) {
+tmpi.dist = 0;
+}if (tmpj.dist < 0) {
+tmpj.dist = 0;
+}}, "jalview.datamodel.SequenceNode,jalview.datamodel.SequenceNode,~N");
+Clazz_defineMethod (c$, "findNewDistances", 
+function (tmpi, tmpj, dist) {
+var ih = 0;
+var jh = 0;
+var sni = tmpi;
+var snj = tmpj;
+while (sni != null) {
+ih = ih + sni.dist;
+sni = sni.left ();
+}
+while (snj != null) {
+jh = jh + snj.dist;
+snj = snj.left ();
+}
+tmpi.dist = ((dist / 2) - ih);
+tmpj.dist = ((dist / 2) - jh);
+}, "jalview.datamodel.SequenceNode,jalview.datamodel.SequenceNode,~N");
+Clazz_defineMethod (c$, "findClusterDistance", 
+function (i, j) {
+var noi = (this.$cluster.elementAt (i)).value.length;
+var noj = (this.$cluster.elementAt (j)).value.length;
+var newdist =  Clazz_newFloatArray (this.noseqs, 0);
+for (var l = 0; l < this.noseqs; l++) {
+if ((l != i) && (l != j)) {
+newdist[l] = ((this.distance[i][l] * noi) + (this.distance[j][l] * noj)) / (noi + noj);
+} else {
+newdist[l] = 0;
+}}
+for (var ii = 0; ii < this.noseqs; ii++) {
+this.distance[i][ii] = newdist[ii];
+this.distance[ii][i] = newdist[ii];
+}
+}, "~N,~N");
+Clazz_defineMethod (c$, "findClusterNJDistance", 
+function (i, j) {
+var newdist =  Clazz_newFloatArray (this.noseqs, 0);
+for (var l = 0; l < this.noseqs; l++) {
+if ((l != i) && (l != j)) {
+newdist[l] = ((this.distance[i][l] + this.distance[j][l]) - this.distance[i][j]) / 2;
+} else {
+newdist[l] = 0;
+}}
+for (var ii = 0; ii < this.noseqs; ii++) {
+this.distance[i][ii] = newdist[ii];
+this.distance[ii][i] = newdist[ii];
+}
+}, "~N,~N");
+Clazz_defineMethod (c$, "findr", 
+function (i, j) {
+var tmp = 1;
+for (var k = 0; k < this.noseqs; k++) {
+if ((k != i) && (k != j) && (this.done[k] != 1)) {
+tmp = tmp + this.distance[i][k];
+}}
+if (this.noClus > 2) {
+tmp = tmp / (this.noClus - 2);
+}return tmp;
+}, "~N,~N");
+Clazz_defineMethod (c$, "findMinNJDistance", 
+function () {
+var min = 100000;
+for (var i = 0; i < (this.noseqs - 1); i++) {
+for (var j = i + 1; j < this.noseqs; j++) {
+if ((this.done[i] != 1) && (this.done[j] != 1)) {
+var tmp = this.distance[i][j] - (this.findr (i, j) + this.findr (j, i));
+if (tmp < min) {
+this.mini = i;
+this.minj = j;
+min = tmp;
+}}}
+}
+return min;
+});
+Clazz_defineMethod (c$, "findMinDistance", 
+function () {
+var min = 100000;
+for (var i = 0; i < (this.noseqs - 1); i++) {
+for (var j = i + 1; j < this.noseqs; j++) {
+if ((this.done[i] != 1) && (this.done[j] != 1)) {
+if (this.distance[i][j] < min) {
+this.mini = i;
+this.minj = j;
+min = this.distance[i][j];
+}}}
+}
+return min;
+});
+Clazz_defineMethod (c$, "findDistances", 
+function (_pwmatrix) {
+var distance =  Clazz_newFloatArray (this.noseqs, this.noseqs, 0);
+if (_pwmatrix == null) {
+_pwmatrix = jalview.schemes.ResidueProperties.getScoreModel (this.pwtype);
+if (_pwmatrix == null) {
+_pwmatrix = jalview.schemes.ResidueProperties.getScoreMatrix ("BLOSUM62");
+}}distance = _pwmatrix.findDistances (this.seqData);
+return distance;
+}, "jalview.api.analysis.ScoreModelI");
+Clazz_defineMethod (c$, "makeLeaves", 
+function () {
+this.$cluster =  new java.util.Vector ();
+for (var i = 0; i < this.noseqs; i++) {
+var sn =  new jalview.datamodel.SequenceNode ();
+sn.setElement (this.sequence[i]);
+sn.setName (this.sequence[i].getName ());
+this.node.addElement (sn);
+var value =  Clazz_newIntArray (1, 0);
+value[0] = i;
+var c =  new jalview.analysis.Cluster (value);
+this.$cluster.addElement (c);
+}
+});
+Clazz_defineMethod (c$, "findLeaves", 
+function (node, leaves) {
+if (node == null) {
+return leaves;
+}if ((node.left () == null) && (node.right () == null)) {
+leaves.addElement (node);
+return leaves;
+} else {
+this.findLeaves (node.left (), leaves);
+this.findLeaves (node.right (), leaves);
+}return leaves;
+}, "jalview.datamodel.SequenceNode,java.util.Vector");
+Clazz_defineMethod (c$, "findLeaf", 
+function (node, count) {
+this.found = this._findLeaf (node, count);
+return this.found;
+}, "jalview.datamodel.SequenceNode,~N");
+Clazz_defineMethod (c$, "_findLeaf", 
+function (node, count) {
+if (node == null) {
+return null;
+}if (node.ycount == count) {
+this.found = node.element ();
+return this.found;
+} else {
+this._findLeaf (node.left (), count);
+this._findLeaf (node.right (), count);
+}return this.found;
+}, "jalview.datamodel.SequenceNode,~N");
+Clazz_defineMethod (c$, "printNode", 
+function (node) {
+if (node == null) {
+return;
+}if ((node.left () == null) && (node.right () == null)) {
+System.out.println ("Leaf = " + (node.element ()).getName ());
+System.out.println ("Dist " + node.dist);
+System.out.println ("Boot " + node.getBootstrap ());
+} else {
+System.out.println ("Dist " + node.dist);
+this.printNode (node.left ());
+this.printNode (node.right ());
+}}, "jalview.datamodel.SequenceNode");
+Clazz_defineMethod (c$, "findMaxDist", 
+function (node) {
+if (node == null) {
+return;
+}if ((node.left () == null) && (node.right () == null)) {
+var dist = node.dist;
+if (dist > this.maxDistValue) {
+this.maxdist = node;
+this.maxDistValue = dist;
+}} else {
+this.findMaxDist (node.left ());
+this.findMaxDist (node.right ());
+}}, "jalview.datamodel.SequenceNode");
+Clazz_defineMethod (c$, "getGroups", 
+function () {
+return this.groups;
+});
+Clazz_defineMethod (c$, "getMaxHeight", 
+function () {
+return this.maxheight;
+});
+Clazz_defineMethod (c$, "groupNodes", 
+function (node, threshold) {
+if (node == null) {
+return;
+}if ((node.height / this.maxheight) > threshold) {
+this.groups.addElement (node);
+} else {
+this.groupNodes (node.left (), threshold);
+this.groupNodes (node.right (), threshold);
+}}, "jalview.datamodel.SequenceNode,~N");
+Clazz_defineMethod (c$, "findHeight", 
+function (node) {
+if (node == null) {
+return this.maxheight;
+}if ((node.left () == null) && (node.right () == null)) {
+node.height = (node.parent ()).height + node.dist;
+if (node.height > this.maxheight) {
+return node.height;
+} else {
+return this.maxheight;
+}} else {
+if (node.parent () != null) {
+node.height = (node.parent ()).height + node.dist;
+} else {
+this.maxheight = 0;
+node.height = 0.0;
+}this.maxheight = this.findHeight ((node.left ()));
+this.maxheight = this.findHeight ((node.right ()));
+}return this.maxheight;
+}, "jalview.datamodel.SequenceNode");
+Clazz_defineMethod (c$, "reRoot", 
+function () {
+if (this.maxdist != null) {
+this.ycount = 0;
+var tmpdist = this.maxdist.dist;
+var sn =  new jalview.datamodel.SequenceNode ();
+sn.setParent (null);
+var snr = this.maxdist.parent ();
+this.changeDirection (snr, this.maxdist);
+System.out.println ("Printing reversed tree");
+this.printN (snr);
+snr.dist = tmpdist / 2;
+this.maxdist.dist = tmpdist / 2;
+snr.setParent (sn);
+this.maxdist.setParent (sn);
+sn.setRight (snr);
+sn.setLeft (this.maxdist);
+this.top = sn;
+this.ycount = 0;
+this.reCount (this.top);
+this.findHeight (this.top);
+}return this.top;
+});
+Clazz_defineMethod (c$, "hasOriginalSequenceData", 
+function () {
+return this.seqData != null;
+});
+Clazz_defineMethod (c$, "printOriginalSequenceData", 
+function (gapChar) {
+if (this.seqData == null) {
+return null;
+}var sb =  new StringBuffer ();
+var seqdatas = this.seqData.getSequenceStrings (gapChar);
+for (var i = 0; i < seqdatas.length; i++) {
+sb.append ( new jalview.util.Format ("%-15s").form (this.sequence[i].getName ()));
+sb.append (" " + seqdatas[i] + "\n");
+}
+return sb.toString ();
+}, "~S");
+Clazz_defineMethod (c$, "printN", 
+function (node) {
+if (node == null) {
+return;
+}if ((node.left () != null) && (node.right () != null)) {
+this.printN (node.left ());
+this.printN (node.right ());
+} else {
+System.out.println (" name = " + (node.element ()).getName ());
+}System.out.println (" dist = " + node.dist + " " + node.count + " " + node.height);
+}, "jalview.datamodel.SequenceNode");
+Clazz_defineMethod (c$, "reCount", 
+function (node) {
+this.ycount = 0;
+this._lycount = 0;
+this._reCount (node);
+}, "jalview.datamodel.SequenceNode");
+Clazz_defineMethod (c$, "_reCount", 
+function (node) {
+if (node == null) {
+return;
+}this._lycount++;
+if ((node.left () != null) && (node.right () != null)) {
+this._reCount (node.left ());
+this._reCount (node.right ());
+var l = node.left ();
+var r = node.right ();
+node.count = l.count + r.count;
+node.ycount = (l.ycount + r.ycount) / 2;
+} else {
+node.count = 1;
+node.ycount = this.ycount++;
+}this._lycount--;
+}, "jalview.datamodel.SequenceNode");
+Clazz_defineMethod (c$, "swapNodes", 
+function (node) {
+if (node == null) {
+return;
+}var tmp = node.left ();
+node.setLeft (node.right ());
+node.setRight (tmp);
+}, "jalview.datamodel.SequenceNode");
+Clazz_defineMethod (c$, "changeDirection", 
+function (node, dir) {
+if (node == null) {
+return;
+}if (node.parent () !== this.top) {
+this.changeDirection (node.parent (), node);
+var tmp = node.parent ();
+if (dir === node.left ()) {
+node.setParent (dir);
+node.setLeft (tmp);
+} else if (dir === node.right ()) {
+node.setParent (dir);
+node.setRight (tmp);
+}} else {
+if (dir === node.left ()) {
+node.setParent (node.left ());
+if (this.top.left () === node) {
+node.setRight (this.top.right ());
+} else {
+node.setRight (this.top.left ());
+}} else {
+node.setParent (node.right ());
+if (this.top.left () === node) {
+node.setLeft (this.top.right ());
+} else {
+node.setLeft (this.top.left ());
+}}}}, "jalview.datamodel.SequenceNode,jalview.datamodel.SequenceNode");
+Clazz_defineMethod (c$, "getMaxDist", 
+function () {
+return this.maxdist;
+});
+Clazz_defineMethod (c$, "getTopNode", 
+function () {
+return this.top;
+});
+Clazz_defineMethod (c$, "isHasDistances", 
+function () {
+return this.hasDistances;
+});
+Clazz_defineMethod (c$, "isHasBootstrap", 
+function () {
+return this.hasBootstrap;
+});
+Clazz_defineMethod (c$, "isHasRootDistance", 
+function () {
+return this.hasRootDistance;
+});
+Clazz_defineMethod (c$, "applyToNodes", 
+function (nodeTransformI) {
+for (var nodes = this.node.elements (); nodes.hasMoreElements (); nodeTransformI.transform (nodes.nextElement ())) {
+;}
+}, "jalview.datamodel.NodeTransformI");
+c$.$NJTree$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.analysis, "NJTree$1", null, jalview.datamodel.NodeTransformI);
+Clazz_defineMethod (c$, "transform", 
+function (node) {
+var el = node.element ();
+if (el != null && Clazz_instanceOf (el, jalview.datamodel.SequenceI)) {
+node.setName ((el).getName ());
+}}, "jalview.datamodel.BinaryNode");
+c$ = Clazz_p0p ();
+};
+c$ = Clazz_decorateAsClass (function () {
+this.value = null;
+Clazz_instantialize (this, arguments);
+}, jalview.analysis, "Cluster");
+Clazz_makeConstructor (c$, 
+function (value) {
+this.value = value;
+}, "~A");
+});
+Clazz_declarePackage ("jalview.datamodel");
+Clazz_declareInterface (jalview.datamodel, "NodeTransformI");
+Clazz_declarePackage ("jalview.appletgui");
+Clazz_load (["awt2swing.Panel", "java.awt.event.MouseListener", "$.MouseMotionListener", "java.util.Hashtable"], "jalview.appletgui.TreeCanvas", ["awt2swing.Util", "jalview.analysis.Conservation", "jalview.appletgui.PaintRefresher", "jalview.datamodel.SequenceGroup", "$.SequenceI", "$.SequenceNode", "jalview.schemes.ColourSchemeProperty", "$.ResidueProperties", "$.UserColourScheme", "jalview.util.Format", "$.MappingUtils", "java.awt.Color", "$.Dimension", "$.Point", "$.Rectangle", "java.util.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.tree = null;
+this.scrollPane = null;
+this.av = null;
+this.$font = null;
+this.fitToWindow = true;
+this.showDistances = false;
+this.showBootstrap = false;
+this.markPlaceholders = false;
+this.offx = 20;
+this.offy = 0;
+this.threshold = 0;
+this.longestName = null;
+this.labelLength = -1;
+this.nameHash = null;
+this.nodeHash = null;
+this.highlightNode = null;
+this.ap = null;
+Clazz_instantialize (this, arguments);
+}, jalview.appletgui, "TreeCanvas", awt2swing.Panel, [java.awt.event.MouseListener, java.awt.event.MouseMotionListener]);
+Clazz_prepareFields (c$, function () {
+this.nameHash =  new java.util.Hashtable ();
+this.nodeHash =  new java.util.Hashtable ();
+});
+Clazz_makeConstructor (c$, 
+function (ap, scroller) {
+Clazz_superConstructor (this, jalview.appletgui.TreeCanvas, []);
+this.ap = ap;
+this.av = ap.av;
+this.$font = this.av.getFont ();
+this.scrollPane = scroller;
+this.addMouseListener (this);
+this.addMouseMotionListener (this);
+this.setLayout (null);
+jalview.appletgui.PaintRefresher.Register (this, this.av.getSequenceSetId ());
+}, "jalview.appletgui.AlignmentPanel,awt2swing.ScrollPane");
+Clazz_defineMethod (c$, "treeSelectionChanged", 
+function (sequence) {
+var selected = this.av.getSelectionGroup ();
+if (selected == null) {
+selected =  new jalview.datamodel.SequenceGroup ();
+this.av.setSelectionGroup (selected);
+}selected.setEndRes (this.av.getAlignment ().getWidth () - 1);
+selected.addOrRemove (sequence, true);
+}, "jalview.datamodel.SequenceI");
+Clazz_defineMethod (c$, "setTree", 
+function (tree) {
+this.tree = tree;
+tree.findHeight (tree.getTopNode ());
+var leaves = tree.findLeaves (tree.getTopNode (),  new java.util.Vector ());
+var has_placeholders = false;
+this.longestName = "";
+for (var i = 0; i < leaves.size (); i++) {
+var lf = leaves.elementAt (i);
+if (lf.isPlaceholder ()) {
+has_placeholders = true;
+}if (this.longestName.length < (lf.element ()).getName ().length) {
+this.longestName = " * " + (lf.element ()).getName ();
+}}
+this.setMarkPlaceholders (has_placeholders);
+}, "jalview.analysis.NJTree");
+Clazz_defineMethod (c$, "drawNode", 
+function (g, node, chunk, scale, width, offx, offy) {
+if (node == null) {
+return;
+}if (node.left () == null && node.right () == null) {
+var height = node.height;
+var dist = node.dist;
+var xstart = Clazz_floatToInt ((height - dist) * scale) + offx;
+var xend = Clazz_floatToInt (height * scale) + offx;
+var ypos = Clazz_floatToInt (node.ycount * chunk) + offy;
+if (Clazz_instanceOf (node.element (), jalview.datamodel.SequenceI)) {
+var seq = node.element ();
+if (this.av.getSequenceColour (seq) === java.awt.Color.white) {
+g.setColor (java.awt.Color.black);
+} else {
+g.setColor (this.av.getSequenceColour (seq).darker ());
+}} else {
+g.setColor (java.awt.Color.black);
+}g.drawLine (xstart, ypos, xend, ypos);
+var nodeLabel = "";
+if (this.showDistances && node.dist > 0) {
+nodeLabel =  new jalview.util.Format ("%-.2f").formDouble (node.dist);
+}if (this.showBootstrap) {
+var btstrap = node.getBootstrap ();
+if (btstrap > -1) {
+if (this.showDistances) {
+nodeLabel = nodeLabel + " : ";
+}nodeLabel = nodeLabel + String.valueOf (node.getBootstrap ());
+}}if (!nodeLabel.equals ("")) {
+awt2swing.Util.drawString (g, nodeLabel, xstart + 2, ypos - 2);
+}var name = (this.markPlaceholders && node.isPlaceholder ()) ? (" * " + node.getName ()) : node.getName ();
+var fm = g.getFontMetrics (this.$font);
+var charWidth = fm.stringWidth (name) + 3;
+var charHeight = fm.getHeight ();
+var rect =  new java.awt.Rectangle (xend + 10, ypos - charHeight, charWidth, charHeight);
+this.nameHash.put (node.element (), rect);
+var selected = this.av.getSelectionGroup ();
+if (selected != null && selected.getSequences (null).contains (node.element ())) {
+g.setColor (java.awt.Color.gray);
+g.fillRect (xend + 10, ypos - charHeight + 3, charWidth, charHeight);
+g.setColor (java.awt.Color.white);
+}awt2swing.Util.drawString (g, name, xend + 10, ypos);
+g.setColor (java.awt.Color.black);
+} else {
+this.drawNode (g, node.left (), chunk, scale, width, offx, offy);
+this.drawNode (g, node.right (), chunk, scale, width, offx, offy);
+var height = node.height;
+var dist = node.dist;
+var xstart = Clazz_floatToInt ((height - dist) * scale) + offx;
+var xend = Clazz_floatToInt (height * scale) + offx;
+var ypos = Clazz_floatToInt (node.ycount * chunk) + offy;
+g.setColor (node.color.darker ());
+g.drawLine (xstart, ypos, xend, ypos);
+if (node === this.highlightNode) {
+g.fillRect (xend - 3, ypos - 3, 6, 6);
+} else {
+g.fillRect (xend - 2, ypos - 2, 4, 4);
+}var ystart = Clazz_floatToInt ((node.left ()).ycount * chunk) + offy;
+var yend = Clazz_floatToInt ((node.right ()).ycount * chunk) + offy;
+var pos =  new java.awt.Rectangle (xend - 2, ypos - 2, 5, 5);
+this.nodeHash.put (node, pos);
+g.drawLine (Clazz_floatToInt (height * scale) + offx, ystart, Clazz_floatToInt (height * scale) + offx, yend);
+var nodeLabel = "";
+if (this.showDistances && (node.dist > 0)) {
+nodeLabel =  new jalview.util.Format ("%-.2f").formDouble (node.dist);
+}if (this.showBootstrap) {
+var btstrap = node.getBootstrap ();
+if (btstrap > -1) {
+if (this.showDistances) {
+nodeLabel = nodeLabel + " : ";
+}nodeLabel = nodeLabel + String.valueOf (node.getBootstrap ());
+}}if (!nodeLabel.equals ("")) {
+awt2swing.Util.drawString (g, nodeLabel, xstart + 2, ypos - 2);
+}}}, "java.awt.Graphics,jalview.datamodel.SequenceNode,~N,~N,~N,~N,~N");
+Clazz_defineMethod (c$, "findElement", 
+function (x, y) {
+var keys = this.nameHash.keys ();
+while (keys.hasMoreElements ()) {
+var ob = keys.nextElement ();
+var rect = this.nameHash.get (ob);
+if (x >= rect.x && x <= (rect.x + rect.width) && y >= rect.y && y <= (rect.y + rect.height)) {
+return ob;
+}}
+keys = this.nodeHash.keys ();
+while (keys.hasMoreElements ()) {
+var ob = keys.nextElement ();
+var rect = this.nodeHash.get (ob);
+if (x >= rect.x && x <= (rect.x + rect.width) && y >= rect.y && y <= (rect.y + rect.height)) {
+return ob;
+}}
+return null;
+}, "~N,~N");
+Clazz_defineMethod (c$, "pickNodes", 
+function (pickBox) {
+var width = this.getSize ().width;
+var height = this.getSize ().height;
+var top = this.tree.getTopNode ();
+var wscale = (width * .8 - this.offx * 2) / this.tree.getMaxHeight ();
+if (top.count == 0) {
+top.count = (top.left ()).count + (top.right ()).count;
+}var chunk = (height - this.offy) / top.count;
+this.pickNode (pickBox, top, chunk, wscale, width, this.offx, this.offy);
+}, "java.awt.Rectangle");
+Clazz_defineMethod (c$, "pickNode", 
+function (pickBox, node, chunk, scale, width, offx, offy) {
+if (node == null) {
+return;
+}if (node.left () == null && node.right () == null) {
+var height = node.height;
+var xend = Clazz_floatToInt (height * scale) + offx;
+var ypos = Clazz_floatToInt (node.ycount * chunk) + offy;
+if (pickBox.contains ( new java.awt.Point (xend, ypos))) {
+if (Clazz_instanceOf (node.element (), jalview.datamodel.SequenceI)) {
+var seq = node.element ();
+var sg = this.av.getSelectionGroup ();
+if (sg != null) {
+sg.addOrRemove (seq, true);
+}}}} else {
+this.pickNode (pickBox, node.left (), chunk, scale, width, offx, offy);
+this.pickNode (pickBox, node.right (), chunk, scale, width, offx, offy);
+}}, "java.awt.Rectangle,jalview.datamodel.SequenceNode,~N,~N,~N,~N,~N");
+Clazz_defineMethod (c$, "setColor", 
+function (node, c) {
+if (node == null) {
+return;
+}if (node.left () == null && node.right () == null) {
+node.color = c;
+if (Clazz_instanceOf (node.element (), jalview.datamodel.SequenceI)) {
+this.av.setSequenceColour (node.element (), c);
+}} else {
+node.color = c;
+this.setColor (node.left (), c);
+this.setColor (node.right (), c);
+}}, "jalview.datamodel.SequenceNode,java.awt.Color");
+Clazz_overrideMethod (c$, "update", 
+function (g) {
+this.paint (g);
+}, "java.awt.Graphics");
+Clazz_overrideMethod (c$, "paintComponent", 
+function (g) {
+if (this.tree == null) {
+return;
+}if (this.nameHash.size () == 0) {
+this.repaint ();
+}var width = this.scrollPane.getSize ().width;
+var height = this.scrollPane.getSize ().height;
+if (!this.fitToWindow) {
+height = g.getFontMetrics (this.$font).getHeight () * this.nameHash.size ();
+}if (this.getSize ().width > width) {
+this.setSize ( new java.awt.Dimension (width, height));
+this.scrollPane.validate ();
+return;
+}this.setSize ( new java.awt.Dimension (width, height));
+g.setFont (this.$font);
+this.draw (g, width, height);
+this.validate ();
+}, "java.awt.Graphics");
+Clazz_defineMethod (c$, "draw", 
+function (g, width, height) {
+this.offy = this.$font.getSize () + 10;
+g.setColor (java.awt.Color.white);
+g.fillRect (0, 0, width, height);
+this.labelLength = g.getFontMetrics (this.$font).stringWidth (this.longestName) + 20;
+var wscale = (width - this.labelLength - this.offx * 2) / this.tree.getMaxHeight ();
+var top = this.tree.getTopNode ();
+if (top.count == 0) {
+top.count = (top.left ()).count + (top.right ()).count;
+}var chunk = (height - this.offy) / top.count;
+this.drawNode (g, this.tree.getTopNode (), chunk, wscale, width, this.offx, this.offy);
+if (this.threshold != 0) {
+if (this.av.getCurrentTree () === this.tree) {
+g.setColor (java.awt.Color.red);
+} else {
+g.setColor (java.awt.Color.gray);
+}var x = Clazz_floatToInt (this.threshold * (this.getSize ().width - this.labelLength - 2 * this.offx) + this.offx);
+g.drawLine (x, 0, x, this.getSize ().height);
+}}, "java.awt.Graphics,~N,~N");
+Clazz_overrideMethod (c$, "mouseReleased", 
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseEntered", 
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseExited", 
+function (e) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseClicked", 
+function (evt) {
+if (this.highlightNode != null) {
+if (evt.getClickCount () > 1) {
+this.tree.swapNodes (this.highlightNode);
+this.tree.reCount (this.tree.getTopNode ());
+this.tree.findHeight (this.tree.getTopNode ());
+} else {
+var leaves =  new java.util.Vector ();
+this.tree.findLeaves (this.highlightNode, leaves);
+for (var i = 0; i < leaves.size (); i++) {
+var seq = (leaves.elementAt (i)).element ();
+this.treeSelectionChanged (seq);
+}
+}jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
+this.repaint ();
+this.av.sendSelection ();
+}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseDragged", 
+function (ect) {
+}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mouseMoved", 
+function (evt) {
+this.av.setCurrentTree (this.tree);
+var ob = this.findElement (evt.getX (), evt.getY ());
+if (Clazz_instanceOf (ob, jalview.datamodel.SequenceNode)) {
+this.highlightNode = ob;
+this.repaint ();
+} else {
+if (this.highlightNode != null) {
+this.highlightNode = null;
+this.repaint ();
+}}}, "java.awt.event.MouseEvent");
+Clazz_overrideMethod (c$, "mousePressed", 
+function (e) {
+this.av.setCurrentTree (this.tree);
+var x = e.getX ();
+var y = e.getY ();
+var ob = this.findElement (x, y);
+if (Clazz_instanceOf (ob, jalview.datamodel.SequenceI)) {
+this.treeSelectionChanged (ob);
+jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
+this.repaint ();
+this.av.sendSelection ();
+return;
+} else if (!(Clazz_instanceOf (ob, jalview.datamodel.SequenceNode))) {
+if (this.tree.getMaxHeight () != 0) {
+this.threshold = (x - this.offx) / (this.getSize ().width - this.labelLength - 2 * this.offx);
+this.tree.getGroups ().removeAllElements ();
+this.tree.groupNodes (this.tree.getTopNode (), this.threshold);
+this.setColor (this.tree.getTopNode (), java.awt.Color.black);
+this.av.setSelectionGroup (null);
+this.av.getAlignment ().deleteAllGroups ();
+this.av.clearSequenceColours ();
+var codingComplement = this.av.getCodingComplement ();
+if (codingComplement != null) {
+codingComplement.setSelectionGroup (null);
+codingComplement.getAlignment ().deleteAllGroups ();
+codingComplement.clearSequenceColours ();
+}this.colourGroups ();
+}}jalview.appletgui.PaintRefresher.Refresh (this, this.av.getSequenceSetId ());
+this.repaint ();
+}, "java.awt.event.MouseEvent");
+Clazz_defineMethod (c$, "colourGroups", 
+function () {
+for (var i = 0; i < this.tree.getGroups ().size (); i++) {
+var col =  new java.awt.Color (Clazz_doubleToInt (Math.random () * 255), Clazz_doubleToInt (Math.random () * 255), Clazz_doubleToInt (Math.random () * 255));
+this.setColor (this.tree.getGroups ().elementAt (i), col.brighter ());
+var l = this.tree.findLeaves (this.tree.getGroups ().elementAt (i),  new java.util.Vector ());
+var sequences =  new java.util.Vector ();
+for (var j = 0; j < l.size (); j++) {
+var s1 = (l.elementAt (j)).element ();
+if (!sequences.contains (s1)) {
+sequences.addElement (s1);
+}}
+var cs = null;
+var sg =  new jalview.datamodel.SequenceGroup (sequences, "", cs, true, true, false, 0, this.av.getAlignment ().getWidth () - 1);
+if (this.av.getGlobalColourScheme () != null) {
+if (Clazz_instanceOf (this.av.getGlobalColourScheme (), jalview.schemes.UserColourScheme)) {
+cs =  new jalview.schemes.UserColourScheme ((this.av.getGlobalColourScheme ()).getColours ());
+} else {
+cs = jalview.schemes.ColourSchemeProperty.getColour (sg, jalview.schemes.ColourSchemeProperty.getColourName (this.av.getGlobalColourScheme ()));
+}if (cs != null) {
+cs.setThreshold (this.av.getGlobalColourScheme ().getThreshold (), this.av.isIgnoreGapsConsensus ());
+}}sg.cs = cs;
+sg.setName ("JTreeGroup:" + sg.hashCode ());
+sg.setIdColour (col);
+if (this.av.getGlobalColourScheme () != null && this.av.getGlobalColourScheme ().conservationApplied ()) {
+var c =  new jalview.analysis.Conservation ("Group", jalview.schemes.ResidueProperties.propHash, 3, sg.getSequences (null), sg.getStartRes (), sg.getEndRes ());
+c.calculate ();
+c.verdict (false, this.av.getConsPercGaps ());
+cs.setConservation (c);
+sg.cs = cs;
+}this.av.getAlignment ().addGroup (sg);
+this.av.getAlignment ().addGroup (sg);
+var codingComplement = this.av.getCodingComplement ();
+if (codingComplement != null) {
+var mappedGroup = jalview.util.MappingUtils.mapSequenceGroup (sg, this.av, codingComplement);
+if (mappedGroup.getSequences ().size () > 0) {
+codingComplement.getAlignment ().addGroup (mappedGroup);
+for (var seq, $seq = mappedGroup.getSequences ().iterator (); $seq.hasNext () && ((seq = $seq.next ()) || true);) {
+codingComplement.setSequenceColour (seq, col);
+}
+}}}
+this.ap.updateAnnotation ();
+if (this.av.getCodingComplement () != null) {
+(this.av.getCodingComplement ()).firePropertyChange ("alignment", null, this.ap.av.getAlignment ().getSequences ());
+}});
+Clazz_defineMethod (c$, "setShowDistances", 
+function (state) {
+this.showDistances = state;
+this.repaint ();
+}, "~B");
+Clazz_defineMethod (c$, "setShowBootstrap", 
+function (state) {
+this.showBootstrap = state;
+this.repaint ();
+}, "~B");
+Clazz_defineMethod (c$, "setMarkPlaceholders", 
+function (state) {
+this.markPlaceholders = state;
+this.repaint ();
+}, "~B");
+Clazz_defineStatics (c$,
+"PLACEHOLDER", " * ");
+});
+Clazz_declarePackage ("jalview.commands");
+Clazz_load (["jalview.commands.EditCommand"], "jalview.commands.RemoveGapColCommand", ["jalview.util.Comparison"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.columnsDeleted = 0;
+Clazz_instantialize (this, arguments);
+}, jalview.commands, "RemoveGapColCommand", jalview.commands.EditCommand);
+Clazz_makeConstructor (c$, 
+function (description, seqs, start, end, al) {
+Clazz_superConstructor (this, jalview.commands.RemoveGapColCommand, []);
+this.description = description;
+var j;
+var jSize = seqs.length;
+var startCol = -1;
+var endCol = -1;
+this.columnsDeleted = 0;
+this.clearEdits ();
+var $delete = true;
+for (var i = start; i <= end; i++) {
+$delete = true;
+for (j = 0; j < jSize; j++) {
+if (seqs[j].getLength () > i) {
+if (!jalview.util.Comparison.isGap (seqs[j].getCharAt (i))) {
+if ($delete) {
+endCol = i;
+}$delete = false;
+break;
+}}}
+if ($delete && startCol == -1) {
+startCol = i;
+}if (!$delete && startCol > -1) {
+this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seqs, startCol - this.columnsDeleted, endCol - startCol, al, false, null);
+this.columnsDeleted += (endCol - startCol);
+startCol = -1;
+endCol = -1;
+}}
+if ($delete && startCol > -1) {
+this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP, seqs, startCol - this.columnsDeleted, end - startCol + 1, al, false, null);
+this.columnsDeleted += (end - startCol + 1);
+}this.performEdit (0, null);
+}, "~S,~A,~N,~N,jalview.datamodel.AlignmentI");
+Clazz_overrideMethod (c$, "getSize", 
+function () {
+return this.columnsDeleted;
+});
+});
+Clazz_declarePackage ("jalview.commands");
+Clazz_load (["jalview.commands.EditCommand"], "jalview.commands.RemoveGapsCommand", ["jalview.util.Comparison"], function () {
+c$ = Clazz_declareType (jalview.commands, "RemoveGapsCommand", jalview.commands.EditCommand);
+Clazz_makeConstructor (c$, 
+function (description, seqs, al) {
+Clazz_superConstructor (this, jalview.commands.RemoveGapsCommand, []);
+this.description = description;
+var width = 0;
+for (var i = 0; i < seqs.length; i++) {
+if (seqs[i].getLength () > width) {
+width = seqs[i].getLength ();
+}}
+this.findGaps (seqs, 0, width, al);
+}, "~S,~A,jalview.datamodel.AlignmentI");
+Clazz_makeConstructor (c$, 
+function (description, seqs, start, end, al) {
+Clazz_superConstructor (this, jalview.commands.RemoveGapsCommand, []);
+this.description = description;
+this.findGaps (seqs, start, end, al);
+}, "~S,~A,~N,~N,jalview.datamodel.AlignmentI");
+Clazz_defineMethod (c$, "findGaps", 
+function (seqs, start, end, al) {
+var startCol = -1;
+var endCol = -1;
+var deletedCols = 0;
+var j;
+var jSize;
+this.clearEdits ();
+var $delete = true;
+var sequence;
+for (var s = 0; s < seqs.length; s++) {
+deletedCols = 0;
+startCol = -1;
+endCol = -1;
+sequence = seqs[s].getSequence (start, end + 1);
+jSize = sequence.length;
+for (j = 0; j < jSize; j++) {
+$delete = true;
+if (!jalview.util.Comparison.isGap (sequence[j])) {
+if ($delete) {
+endCol = j;
+}$delete = false;
+}if ($delete && startCol == -1) {
+startCol = j;
+}if (!$delete && startCol > -1) {
+this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP,  Clazz_newArray (-1, [seqs[s]]), start + startCol - deletedCols, endCol - startCol, al, false, null);
+deletedCols += (endCol - startCol);
+startCol = -1;
+endCol = -1;
+}}
+if ($delete && startCol > -1) {
+this.appendEdit (jalview.commands.EditCommand.Action.DELETE_GAP,  Clazz_newArray (-1, [seqs[s]]), start + startCol - deletedCols, jSize - startCol, al, false, null);
+}}
+this.performEdit (0, null);
+}, "~A,~N,~N,jalview.datamodel.AlignmentI");
+});
+Clazz_declarePackage ("jalview.commands");
+Clazz_load (["jalview.commands.EditCommand"], "jalview.commands.SlideSequencesCommand", ["jalview.util.Comparison"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.gapsInsertedBegin = false;
+Clazz_instantialize (this, arguments);
+}, jalview.commands, "SlideSequencesCommand", jalview.commands.EditCommand);
+Clazz_makeConstructor (c$, 
+function (description, seqsLeft, seqsRight, slideSize, gapChar) {
+Clazz_superConstructor (this, jalview.commands.SlideSequencesCommand, []);
+this.description = description;
+var lSize = seqsLeft.length;
+this.gapsInsertedBegin = false;
+var i;
+var j;
+for (i = 0; i < lSize; i++) {
+for (j = 0; j < slideSize; j++) {
+if (!jalview.util.Comparison.isGap (seqsLeft[i].getCharAt (j))) {
+this.gapsInsertedBegin = true;
+break;
+}}
+}
+var e = null;
+if (!this.gapsInsertedBegin) {
+e = Clazz_innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.DELETE_GAP, seqsLeft, 0, slideSize, gapChar);
+this.setEdit (e);
+} else {
+e = Clazz_innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.INSERT_GAP, seqsRight, 0, slideSize, gapChar);
+this.setEdit (e);
+}jalview.commands.EditCommand.performEdit (e, null);
+}, "~S,~A,~A,~N,~S");
+Clazz_defineMethod (c$, "getGapsInsertedBegin", 
+function () {
+return this.gapsInsertedBegin;
+});
+Clazz_defineMethod (c$, "appendSlideCommand", 
+function (command) {
+var same = false;
+if (command.getEdit (0).seqs.length == this.getEdit (0).seqs.length) {
+same = true;
+for (var i = 0; i < command.getEdit (0).seqs.length; i++) {
+if (this.getEdit (0).seqs[i] !== command.getEdit (0).seqs[i]) {
+same = false;
+}}
+}if (same) {
+command.addEdit (this.getEdit (0));
+}return same;
+}, "jalview.commands.SlideSequencesCommand");
+});
+Clazz_declarePackage ("jalview.commands");
+Clazz_load (["jalview.commands.EditCommand"], "jalview.commands.TrimRegionCommand", null, function () {
+c$ = Clazz_decorateAsClass (function () {
+this.colSel = null;
+this.start = null;
+this.shiftList = null;
+this.selectionGroup = null;
+this.deletedHiddenColumns = null;
+this.columnsDeleted = 0;
+Clazz_instantialize (this, arguments);
+}, jalview.commands, "TrimRegionCommand", jalview.commands.EditCommand);
+Clazz_makeConstructor (c$, 
+function (description, command, seqs, column, al, colSel, selectedRegion) {
+Clazz_superConstructor (this, jalview.commands.TrimRegionCommand, []);
+this.description = description;
+this.selectionGroup = selectedRegion;
+this.colSel = colSel;
+if (command.equalsIgnoreCase (jalview.commands.TrimRegionCommand.TRIM_LEFT)) {
+if (column == 0) {
+return;
+}this.columnsDeleted = column;
+this.setEdit (Clazz_innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.CUT, seqs, 0, column, al));
+} else if (command.equalsIgnoreCase (jalview.commands.TrimRegionCommand.TRIM_RIGHT)) {
+var width = al.getWidth () - column - 1;
+if (width < 2) {
+return;
+}this.columnsDeleted = width - 1;
+this.setEdit (Clazz_innerTypeInstance (jalview.commands.EditCommand.Edit, this, null, jalview.commands.EditCommand.Action.CUT, seqs, column + 1, width, al));
+}var i;
+var isize = this.getEdit (0).seqs.length;
+this.start =  Clazz_newIntArray (isize, 0);
+for (i = 0; i < isize; i++) {
+this.start[i] = this.getEdit (0).seqs[i].getStart ();
+}
+this.performEdit (0, null);
+}, "~S,~S,~A,~N,jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");
+Clazz_defineMethod (c$, "cut", 
+function (command) {
+var column;
+var j;
+var jSize = command.seqs.length;
+for (j = 0; j < jSize; j++) {
+if (command.position == 0) {
+column = command.seqs[j].findPosition (command.number);
+command.seqs[j].setStart (column);
+} else {
+column = command.seqs[j].findPosition (command.position) - 1;
+command.seqs[j].setEnd (column);
+}}
+Clazz_superCall (this, jalview.commands.TrimRegionCommand, "cut", [command, null]);
+if (command.position == 0) {
+this.deletedHiddenColumns = this.colSel.compensateForEdit (0, command.number);
+if (this.selectionGroup != null) {
+this.selectionGroup.adjustForRemoveLeft (command.number);
+}} else {
+this.deletedHiddenColumns = this.colSel.compensateForEdit (command.position, command.number);
+if (this.selectionGroup != null) {
+this.selectionGroup.adjustForRemoveRight (command.position);
+}}}, "jalview.commands.EditCommand.Edit");
+Clazz_defineMethod (c$, "paste", 
+function (command) {
+Clazz_superCall (this, jalview.commands.TrimRegionCommand, "paste", [command, null]);
+var column;
+var j;
+var jSize = command.seqs.length;
+for (j = 0; j < jSize; j++) {
+if (command.position == 0) {
+command.seqs[j].setStart (this.start[j]);
+} else {
+column = command.seqs[j].findPosition (command.number + command.position) - 1;
+command.seqs[j].setEnd (column);
+}}
+if (command.position == 0) {
+this.colSel.compensateForEdit (0, -command.number);
+if (this.selectionGroup != null) {
+this.selectionGroup.adjustForRemoveLeft (-command.number);
+}}if (this.deletedHiddenColumns != null) {
+var region;
+for (var i = 0; i < this.deletedHiddenColumns.size (); i++) {
+region = this.deletedHiddenColumns.get (i);
+this.colSel.hideColumns (region[0], region[1]);
+}
+}}, "jalview.commands.EditCommand.Edit");
+Clazz_overrideMethod (c$, "getSize", 
+function () {
+return this.columnsDeleted;
+});
+Clazz_defineStatics (c$,
+"TRIM_LEFT", "TrimLeft",
+"TRIM_RIGHT", "TrimRight");
+});
+Clazz_declarePackage ("jalview.controller");
+Clazz_load (["jalview.api.AlignViewControllerI"], "jalview.controller.AlignViewController", ["jalview.analysis.AlignmentSorter", "$.Grouping", "jalview.commands.OrderCommand", "jalview.datamodel.ColumnSelection", "jalview.io.FeaturesFile", "jalview.util.MessageManager", "java.awt.Color", "java.util.ArrayList", "$.BitSet"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.viewport = null;
+this.alignPanel = null;
+this.avcg = null;
+Clazz_instantialize (this, arguments);
+}, jalview.controller, "AlignViewController", null, jalview.api.AlignViewControllerI);
+Clazz_overrideMethod (c$, "finalize", 
+function () {
+this.viewport = null;
+this.alignPanel = null;
+this.avcg = null;
+});
+Clazz_makeConstructor (c$, 
+function (alignFrame, viewport, alignPanel) {
+this.avcg = alignFrame;
+this.viewport = viewport;
+this.alignPanel = alignPanel;
+}, "jalview.api.AlignViewControllerGuiI,jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");
+Clazz_overrideMethod (c$, "setViewportAndAlignmentPanel", 
+function (viewport, alignPanel) {
+this.alignPanel = alignPanel;
+this.viewport = viewport;
+}, "jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");
+Clazz_overrideMethod (c$, "makeGroupsFromSelection", 
+function () {
+var sg = this.viewport.getSelectionGroup ();
+var cs = this.viewport.getColumnSelection ();
+var gps = null;
+if (sg != null && (cs == null || cs.getSelected () == null || cs.size () == 0)) {
+gps = jalview.analysis.Grouping.makeGroupsFrom (this.viewport.getSequenceSelection (), this.viewport.getAlignmentView (true).getSequenceStrings (this.viewport.getGapCharacter ()), this.viewport.getAlignment ().getGroups ());
+} else {
+if (cs != null) {
+gps = jalview.analysis.Grouping.makeGroupsFromCols ((sg == null) ? this.viewport.getAlignment ().getSequencesArray () : sg.getSequences ().toArray ( new Array (0)), cs, this.viewport.getAlignment ().getGroups ());
+}}if (gps != null) {
+this.viewport.getAlignment ().deleteAllGroups ();
+this.viewport.clearSequenceColours ();
+this.viewport.setSelectionGroup (null);
+for (var g = 0; g < gps.length; g++) {
+gps[g].setshowSequenceLogo (this.viewport.isShowSequenceLogo ());
+this.viewport.getAlignment ().addGroup (gps[g]);
+var col =  new java.awt.Color (Clazz_doubleToInt (Math.random () * 255), Clazz_doubleToInt (Math.random () * 255), Clazz_doubleToInt (Math.random () * 255));
+col = col.brighter ();
+for (var sq, $sq = gps[g].getSequences (null).iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+this.viewport.setSequenceColour (sq, col);
+}
+}
+return true;
+}return false;
+});
+Clazz_overrideMethod (c$, "createGroup", 
+function () {
+var sg = this.viewport.getSelectionGroup ();
+if (sg != null) {
+this.viewport.getAlignment ().addGroup (sg);
+return true;
+}return false;
+});
+Clazz_overrideMethod (c$, "unGroup", 
+function () {
+var sg = this.viewport.getSelectionGroup ();
+if (sg != null) {
+this.viewport.getAlignment ().deleteGroup (sg);
+return true;
+}return false;
+});
+Clazz_overrideMethod (c$, "deleteGroups", 
+function () {
+if (this.viewport.getAlignment ().getGroups () != null && this.viewport.getAlignment ().getGroups ().size () > 0) {
+this.viewport.getAlignment ().deleteAllGroups ();
+this.viewport.clearSequenceColours ();
+this.viewport.setSelectionGroup (null);
+return true;
+}return false;
+});
+Clazz_overrideMethod (c$, "markColumnsContainingFeatures", 
+function (invert, extendCurrent, toggle, featureType) {
+var bs =  new java.util.BitSet ();
+var alw;
+var alStart;
+var sqcol = (this.viewport.getSelectionGroup () == null ? this.viewport.getAlignment () : this.viewport.getSelectionGroup ());
+alStart = sqcol.getStartRes ();
+alw = sqcol.getEndRes () + 1;
+var seqs = sqcol.getSequences ();
+var nseq = 0;
+for (var sq, $sq = seqs.iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+var tfeat = 0;
+if (sq != null) {
+var sf = sq.getSequenceFeatures ();
+if (sf != null) {
+var ist = sq.findIndex (sq.getStart ());
+var iend = sq.findIndex (sq.getEnd ());
+if (iend < alStart || ist > alw) {
+continue;
+}for (var sfpos, $sfpos = 0, $$sfpos = sf; $sfpos < $$sfpos.length && ((sfpos = $$sfpos[$sfpos]) || true); $sfpos++) {
+if (sfpos != null && (featureType.equals (sfpos.getType ()))) {
+tfeat++;
+var i = sq.findIndex (sfpos.getBegin ());
+var j = sq.findIndex (sfpos.getEnd ());
+if (j < alStart || i > alw) {
+continue;
+}if (i < alStart) {
+i = alStart;
+}if (i < ist) {
+i = ist;
+}if (j > alw) {
+j = alw;
+}for (; i <= j; i++) {
+bs.set (i - 1);
+}
+}}
+}if (tfeat > 0) {
+nseq++;
+}}}
+var cs = this.viewport.getColumnSelection ();
+if (bs.cardinality () > 0 || invert) {
+if (cs == null) {
+cs =  new jalview.datamodel.ColumnSelection ();
+} else {
+if (!extendCurrent) {
+cs.clear ();
+}}if (invert) {
+for (var i = bs.nextClearBit (alStart), ibs = bs.nextSetBit (alStart); i >= alStart && i < (alw); ) {
+if (ibs < 0 || i < ibs) {
+if (toggle && cs.contains (i)) {
+cs.removeElement (i++);
+} else {
+cs.addElement (i++);
+}} else {
+i = bs.nextClearBit (ibs);
+ibs = bs.nextSetBit (i);
+}}
+} else {
+for (var i = bs.nextSetBit (alStart); i >= alStart; i = bs.nextSetBit (i + 1)) {
+if (toggle && cs.contains (i)) {
+cs.removeElement (i);
+} else {
+cs.addElement (i);
+}}
+}this.viewport.setColumnSelection (cs);
+this.alignPanel.paintAlignment (true);
+this.avcg.setStatus (jalview.util.MessageManager.formatMessage ("label.view_controller_toggled_marked",  Clazz_newArray (-1, [(toggle ? jalview.util.MessageManager.getString ("label.toggled") : jalview.util.MessageManager.getString ("label.marked")), (invert ? (Integer.$valueOf ((alw - alStart) - bs.cardinality ()).toString ()) : (Integer.$valueOf (bs.cardinality ()).toString ())), featureType, Integer.$valueOf (nseq).toString ()])));
+return true;
+} else {
+this.avcg.setStatus (jalview.util.MessageManager.formatMessage ("label.no_feature_of_type_found",  Clazz_newArray (-1, [featureType])));
+if (!extendCurrent && cs != null) {
+cs.clear ();
+this.alignPanel.paintAlignment (true);
+}return false;
+}}, "~B,~B,~B,~S");
+Clazz_overrideMethod (c$, "sortAlignmentByFeatureDensity", 
+function (typ) {
+this.sortBy (typ, "Sort by Density", jalview.analysis.AlignmentSorter.FEATURE_DENSITY);
+}, "~A");
+Clazz_defineMethod (c$, "sortBy", 
+function (typ, methodText, method) {
+var fr = this.alignPanel.getFeatureRenderer ();
+if (typ == null) {
+typ = fr == null ? null : fr.getDisplayedFeatureTypes ();
+}var gps = null;
+gps = fr == null ? null : fr.getDisplayedFeatureGroups ();
+if (typ != null) {
+var types =  new java.util.ArrayList ();
+for (var i = 0; i < typ.length; i++) {
+if (typ[i] != null) {
+types.add (typ[i]);
+}typ =  new Array (types.size ());
+types.toArray (typ);
+}
+}if (gps != null) {
+var grps =  new java.util.ArrayList ();
+for (var i = 0; i < gps.length; i++) {
+if (gps[i] != null) {
+grps.add (gps[i]);
+}}
+gps =  new Array (grps.size ());
+grps.toArray (gps);
+}var al = this.viewport.getAlignment ();
+var start;
+var stop;
+var sg = this.viewport.getSelectionGroup ();
+if (sg != null) {
+start = sg.getStartRes ();
+stop = sg.getEndRes ();
+} else {
+start = 0;
+stop = al.getWidth ();
+}var oldOrder = al.getSequencesArray ();
+jalview.analysis.AlignmentSorter.sortByFeature (typ, gps, start, stop, al, method);
+this.avcg.addHistoryItem ( new jalview.commands.OrderCommand (methodText, oldOrder, this.viewport.getAlignment ()));
+this.alignPanel.paintAlignment (true);
+}, "~A,~S,~S");
+Clazz_overrideMethod (c$, "sortAlignmentByFeatureScore", 
+function (typ) {
+this.sortBy (typ, "Sort by Feature Score", jalview.analysis.AlignmentSorter.FEATURE_SCORE);
+}, "~A");
+Clazz_overrideMethod (c$, "parseFeaturesFile", 
+function (file, protocol, relaxedIdMatching) {
+var featuresFile = false;
+try {
+featuresFile =  new jalview.io.FeaturesFile (file, protocol).parse (this.viewport.getAlignment ().getDataset (), this.alignPanel.getFeatureRenderer ().getFeatureColours (), false, relaxedIdMatching);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+if (featuresFile) {
+this.avcg.refreshFeatureUI (true);
+if (this.alignPanel.getFeatureRenderer () != null) {
+this.alignPanel.getFeatureRenderer ().findAllFeatures (true);
+}if (this.avcg.getFeatureSettingsUI () != null) {
+this.avcg.getFeatureSettingsUI ().discoverAllFeatureData ();
+}this.alignPanel.paintAlignment (true);
+}return featuresFile;
+}, "~S,~S,~B");
+});
+Clazz_declarePackage ("jalview.api");
+Clazz_declareInterface (jalview.api, "AlignViewControllerI");
+Clazz_declarePackage ("jalview.analysis");
+Clazz_load (null, "jalview.analysis.Grouping", ["jalview.datamodel.SequenceGroup", "java.lang.StringBuilder", "java.util.ArrayList", "$.HashMap"], function () {
+c$ = Clazz_declareType (jalview.analysis, "Grouping");
+c$.makeGroupsFrom = Clazz_defineMethod (c$, "makeGroupsFrom", 
+function (sequences, selectedChars, list) {
+var gps =  new java.util.HashMap ();
+var width = 0;
+var i;
+var pgroup =  new java.util.HashMap ();
+if (list != null) {
+for (var sg, $sg = list.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+for (var sq, $sq = sg.getSequences (null).iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+pgroup.put (sq.toString (), sg);
+}
+}
+}for (i = 0; i < sequences.length; i++) {
+var schar = selectedChars[i];
+var pgp = pgroup.get ((sequences[i]).toString ());
+if (pgp != null) {
+schar = pgp.getName () + ":" + schar;
+}var svec = gps.get (schar);
+if (svec == null) {
+svec =  new java.util.ArrayList ();
+gps.put (schar, svec);
+}if (width < sequences[i].getLength ()) {
+width = sequences[i].getLength ();
+}svec.add (sequences[i]);
+}
+var groups =  new Array (gps.size ());
+i = 0;
+for (var key, $key = gps.keySet ().iterator (); $key.hasNext () && ((key = $key.next ()) || true);) {
+var group =  new jalview.datamodel.SequenceGroup (gps.get (key), "Subseq: " + key, null, true, true, false, 0, width - 1);
+groups[i++] = group;
+}
+gps.clear ();
+pgroup.clear ();
+return groups;
+}, "~A,~A,java.util.List");
+c$.makeGroupsFromCols = Clazz_defineMethod (c$, "makeGroupsFromCols", 
+function (sequences, cs, list) {
+var gps =  new java.util.HashMap ();
+var pgroup =  new java.util.HashMap ();
+if (list != null) {
+for (var sg, $sg = list.iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+for (var sq, $sq = sg.getSequences (null).iterator (); $sq.hasNext () && ((sq = $sq.next ()) || true);) {
+pgroup.put (sq.toString (), sg);
+}
+}
+}var spos =  Clazz_newIntArray (cs.getSelected ().size (), 0);
+var width = -1;
+var i = 0;
+for (var pos, $pos = cs.getSelected ().iterator (); $pos.hasNext () && ((pos = $pos.next ()) || true);) {
+spos[i++] = pos.intValue ();
+}
+;for (i = 0; i < sequences.length; i++) {
+var slen = sequences[i].getLength ();
+if (width < slen) {
+width = slen;
+}var pgp = pgroup.get ((sequences[i]).toString ());
+var schar =  new StringBuilder ();
+if (pgp != null) {
+schar.append (pgp.getName () + ":");
+}for (var p, $p = 0, $$p = spos; $p < $$p.length && ((p = $$p[$p]) || true); $p++) {
+if (p >= slen) {
+schar.append ("~");
+} else {
+schar.append (sequences[i].getCharAt (p));
+}}
+var svec = gps.get (schar.toString ());
+if (svec == null) {
+svec =  new java.util.ArrayList ();
+gps.put (schar.toString (), svec);
+}svec.add (sequences[i]);
+}
+var groups =  new Array (gps.size ());
+i = 0;
+for (var key, $key = gps.keySet ().iterator (); $key.hasNext () && ((key = $key.next ()) || true);) {
+var group =  new jalview.datamodel.SequenceGroup (gps.get (key), "Subseq: " + key, null, true, true, false, 0, width - 1);
+groups[i++] = group;
+}
+gps.clear ();
+pgroup.clear ();
+return groups;
+}, "~A,jalview.datamodel.ColumnSelection,java.util.List");
+c$.divideByFeature = Clazz_defineMethod (c$, "divideByFeature", 
+function (featureLabels, groupLabels, start, stop, sequences, exgroups, method) {
+}, "~A,~A,~N,~N,~A,java.util.Vector,~S");
+});
+Clazz_declarePackage ("jalview.io");
+Clazz_load (null, "jalview.io.AlignmentProperties", ["java.lang.StringBuffer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.alignment = null;
+Clazz_instantialize (this, arguments);
+}, jalview.io, "AlignmentProperties");
+Clazz_makeConstructor (c$, 
+function (alignment) {
+this.alignment = alignment;
+}, "jalview.datamodel.AlignmentI");
+Clazz_defineMethod (c$, "writeProperties", 
+function (sb, html) {
+var nl = html ? "<br>" : System.getProperty ("line.separator");
+var avg = 0;
+var min = 2147483647;
+var max = 0;
+for (var i = 0; i < this.alignment.getHeight (); i++) {
+var size = 1 + this.alignment.getSequenceAt (i).getEnd () - this.alignment.getSequenceAt (i).getStart ();
+avg += size;
+if (size > max) {
+max = size;
+}if (size < min) {
+min = size;
+}}
+avg = avg / this.alignment.getHeight ();
+sb.append (nl);
+sb.append ("Sequences: " + this.alignment.getHeight ());
+sb.append (nl);
+sb.append ("Minimum Sequence Length: " + min);
+sb.append (nl);
+sb.append ("Maximum Sequence Length: " + max);
+sb.append (nl);
+sb.append ("Average Length: " + Clazz_floatToInt (avg));
+if ((this.alignment).alignmentProperties != null) {
+sb.append (nl);
+sb.append (nl);
+if (html) {
+sb.append ("<table border=\"1\">");
+}var props = (this.alignment).alignmentProperties;
+var en = props.keys ();
+while (en.hasMoreElements ()) {
+var key = en.nextElement ().toString ();
+var vals = props.get (key).toString ();
+if (html) {
+var val =  new StringBuffer ();
+var pos = 0;
+var npos;
+do {
+npos = vals.indexOf ("\n", pos);
+if (npos == -1) {
+val.append (vals.substring (pos));
+} else {
+val.append (vals.substring (pos, npos));
+val.append ("<br>");
+}pos = npos + 1;
+} while (npos != -1);
+sb.append ("<tr><td>" + key + "</td><td>" + val + "</td></tr>");
+} else {
+sb.append (nl + key + "\t" + vals);
+}}
+if (html) {
+sb.append ("</table>");
+}}}, "StringBuffer,~B");
+Clazz_defineMethod (c$, "formatAsString", 
+function () {
+return this.formatReport (false);
+});
+Clazz_defineMethod (c$, "formatReport", 
+function (html) {
+var sb =  new StringBuffer ();
+this.writeProperties (sb, html);
+return sb;
+}, "~B");
+Clazz_defineMethod (c$, "formatAsHtml", 
+function () {
+return this.formatReport (true);
+});
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (null, "jalview.schemes.RNAHelicesColourChooser", ["jalview.schemes.RNAHelicesColour", "java.util.Hashtable", "$.Vector"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.av = null;
+this.ap = null;
+this.oldcs = null;
+this.oldgroupColours = null;
+this.currentAnnotation = null;
+this.adjusting = false;
+Clazz_instantialize (this, arguments);
+}, jalview.schemes, "RNAHelicesColourChooser");
+Clazz_makeConstructor (c$, 
+function (av, ap) {
+this.oldcs = av.getGlobalColourScheme ();
+if (av.getAlignment ().getGroups () != null) {
+this.oldgroupColours =  new java.util.Hashtable ();
+for (var sg, $sg = ap.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (sg.cs != null) {
+this.oldgroupColours.put (sg, sg.cs);
+}}
+}this.av = av;
+this.ap = ap;
+if (Clazz_instanceOf (this.oldcs, jalview.schemes.RNAHelicesColour)) {
+var rhc = this.oldcs;
+}this.adjusting = true;
+var list =  new java.util.Vector ();
+var index = 1;
+for (var i = 0; i < av.getAlignment ().getAlignmentAnnotation ().length; i++) {
+var label = av.getAlignment ().getAlignmentAnnotation ()[i].label;
+if (!list.contains (label)) list.addElement (label);
+ else list.addElement (label + "_" + (index++));
+}
+this.adjusting = false;
+this.changeColour ();
+}, "jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");
+Clazz_defineMethod (c$, "changeColour", 
+function () {
+if (this.adjusting) {
+return;
+}var rhc = null;
+rhc =  new jalview.schemes.RNAHelicesColour (this.av.getAlignment ());
+this.av.setGlobalColourScheme (rhc);
+if (this.av.getAlignment ().getGroups () != null) {
+for (var sg, $sg = this.ap.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+if (sg.cs == null) {
+continue;
+}sg.cs =  new jalview.schemes.RNAHelicesColour (sg);
+}
+}this.ap.paintAlignment (false);
+});
+Clazz_defineMethod (c$, "reset", 
+function () {
+this.av.setGlobalColourScheme (this.oldcs);
+if (this.av.getAlignment ().getGroups () != null) {
+for (var sg, $sg = this.ap.getAlignment ().getGroups ().iterator (); $sg.hasNext () && ((sg = $sg.next ()) || true);) {
+sg.cs = this.oldgroupColours.get (sg);
+}
+}});
+Clazz_defineMethod (c$, "annotations_actionPerformed", 
+function (e) {
+this.changeColour ();
+}, "java.awt.event.ActionEvent");
+});
+Clazz_declarePackage ("jalview.schemes");
+Clazz_load (["jalview.schemes.ResidueColourScheme"], "jalview.schemes.RNAInteractionColourScheme", ["jalview.schemes.ResidueProperties", "java.awt.Color"], function () {
+c$ = Clazz_declareType (jalview.schemes, "RNAInteractionColourScheme", jalview.schemes.ResidueColourScheme);
+Clazz_overrideMethod (c$, "findColour", 
+function (c) {
+return this.colors[jalview.schemes.ResidueProperties.nucleotideIndex[c.charCodeAt (0)]];
+}, "~S");
+Clazz_overrideMethod (c$, "findColourSeq", 
+function (c, j, seq) {
+var currentColour;
+if ((this.threshold == 0) || this.aboveThreshold (c, j)) {
+try {
+currentColour = this.colors[jalview.schemes.ResidueProperties.nucleotideIndex[c.charCodeAt (0)]];
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+return java.awt.Color.white;
+} else {
+throw ex;
+}
+}
+} else {
+return java.awt.Color.white;
+}if (this.conservationColouring) {
+currentColour = this.applyConservation (currentColour, j);
+}return currentColour;
+}, "~S,~N,jalview.datamodel.SequenceI");
+});
+Clazz_declarePackage("java.net");
+c$=Clazz_declareType(java.net,"URLEncoder");
+c$.encode=Clazz_defineMethod(c$,"encode",
+function(s){
+return encodeURIComponent(arguments[0]);
+},"~S");
+c$.encode=Clazz_defineMethod(c$,"encode",
+function(s,enc){
+return encodeURIComponent(arguments[0]);
+},"~S,~S");
+Clazz_defineStatics(c$,
+"digits","0123456789ABCDEF");
+Clazz_declarePackage ("jalview.io");
+Clazz_load (null, "jalview.io.JnetAnnotationMaker", ["jalview.datamodel.AlignmentAnnotation", "$.Annotation", "jalview.util.MessageManager", "java.lang.Exception", "$.Float"], function () {
+c$ = Clazz_declareType (jalview.io, "JnetAnnotationMaker");
+c$.add_annotation = Clazz_defineMethod (c$, "add_annotation", 
+function (prediction, al, firstSeq, noMsa) {
+jalview.io.JnetAnnotationMaker.add_annotation (prediction, al, firstSeq, noMsa, Clazz_castNullAs ("Array"));
+}, "jalview.io.AlignFile,jalview.datamodel.AlignmentI,~N,~B");
+c$.add_annotation = Clazz_defineMethod (c$, "add_annotation", 
+function (prediction, al, firstSeq, noMsa, delMap) {
+var i = 0;
+var preds = prediction.getSeqsAsArray ();
+var seqRef = al.getSequenceAt (firstSeq);
+var width = preds[0].getSequence ().length;
+var gapmap = al.getSequenceAt (firstSeq).gapMap ();
+if ((delMap != null && delMap.length > width) || (delMap == null && gapmap.length != width)) {
+throw ( new Exception (jalview.util.MessageManager.formatMessage ("exception.number_of_residues_in_query_sequence_differ_from_prediction",  Clazz_newArray (-1, [(delMap == null ? "" : jalview.util.MessageManager.getString ("label.mapped")), al.getSequenceAt (firstSeq).getName (), al.getSequenceAt (firstSeq).getSequenceAsString (), Integer.$valueOf (width).toString ()]))));
+}var annot;
+var annotations = null;
+var existingAnnotations = 0;
+if (al.getAlignmentAnnotation () != null) {
+existingAnnotations = al.getAlignmentAnnotation ().length;
+}var sol =  new Array (al.getWidth ());
+var firstsol = true;
+while (i < preds.length) {
+var id = preds[i].getName ().toUpperCase ();
+if (id.startsWith ("LUPAS") || id.startsWith ("JNET") || id.startsWith ("JPRED")) {
+if (id.startsWith ("JNETSOL")) {
+var amnt = (id.endsWith ("25") ? 3 : id.endsWith ("5") ? 6 : 9);
+for (var spos = 0; spos < width; spos++) {
+var sposw = (delMap == null) ? gapmap[spos] : gapmap[delMap[spos]];
+if (firstsol) {
+sol[sposw] =  new jalview.datamodel.Annotation (0);
+}if (preds[i].getCharAt (spos) == 'B' && (sol[sposw].value == 0 || sol[sposw].value < amnt)) {
+sol[sposw].value = amnt;
+}}
+firstsol = false;
+} else {
+annotations =  new Array (al.getWidth ());
+if (id.equals ("JNETPRED") || id.equals ("JNETPSSM") || id.equals ("JNETFREQ") || id.equals ("JNETHMM") || id.equals ("JNETALIGN") || id.equals ("JPRED")) {
+if (delMap == null) {
+for (var j = 0; j < width; j++) {
+annotations[gapmap[j]] =  new jalview.datamodel.Annotation ("", "", preds[i].getCharAt (j), 0);
+}
+} else {
+for (var j = 0; j < width; j++) {
+annotations[gapmap[delMap[j]]] =  new jalview.datamodel.Annotation ("", "", preds[i].getCharAt (j), 0);
+}
+}} else if (id.equals ("JNETCONF")) {
+if (delMap == null) {
+for (var j = 0; j < width; j++) {
+var value =  new Float (preds[i].getCharAt (j) + "").floatValue ();
+annotations[gapmap[j]] =  new jalview.datamodel.Annotation (preds[i].getCharAt (j) + "", "", preds[i].getCharAt (j), value);
+}
+} else {
+for (var j = 0; j < width; j++) {
+var value =  new Float (preds[i].getCharAt (j) + "").floatValue ();
+annotations[gapmap[delMap[j]]] =  new jalview.datamodel.Annotation (preds[i].getCharAt (j) + "", "", preds[i].getCharAt (j), value);
+}
+}} else {
+if (delMap == null) {
+for (var j = 0; j < width; j++) {
+annotations[gapmap[j]] =  new jalview.datamodel.Annotation (preds[i].getCharAt (j) + "", "", ' ', 0);
+}
+} else {
+for (var j = 0; j < width; j++) {
+annotations[gapmap[delMap[j]]] =  new jalview.datamodel.Annotation (preds[i].getCharAt (j) + "", "", ' ', 0);
+}
+}}if (id.equals ("JNETCONF")) {
+annot =  new jalview.datamodel.AlignmentAnnotation (preds[i].getName (), "JNet Output", annotations, 0, 10, 1);
+} else {
+annot =  new jalview.datamodel.AlignmentAnnotation (preds[i].getName (), "JNet Output", annotations);
+}if (seqRef != null) {
+annot.createSequenceMapping (seqRef, 1, true);
+seqRef.addAlignmentAnnotation (annot);
+}al.addAnnotation (annot);
+al.setAnnotationIndex (annot, al.getAlignmentAnnotation ().length - existingAnnotations - 1);
+}if (noMsa) {
+al.deleteSequence (preds[i]);
+}}i++;
+}
+if (!firstsol) {
+annot =  new jalview.datamodel.AlignmentAnnotation ("Jnet Burial", "<html>Prediction of Solvent Accessibility<br/>levels are<ul><li>0 - Exposed</li><li>3 - 25% or more S.A. accessible</li><li>6 - 5% or more S.A. accessible</li><li>9 - Buried (<5% exposed)</li></ul>", sol, 0, 9, 1);
+annot.validateRangeAndDisplay ();
+if (seqRef != null) {
+annot.createSequenceMapping (seqRef, 1, true);
+seqRef.addAlignmentAnnotation (annot);
+}al.addAnnotation (annot);
+al.setAnnotationIndex (annot, al.getAlignmentAnnotation ().length - existingAnnotations - 1);
+}}, "jalview.io.AlignFile,jalview.datamodel.AlignmentI,~N,~B,~A");
+});
+Clazz_declarePackage ("jalview.javascript");
+Clazz_load (null, "jalview.javascript.JSFunctionExec", ["jalview.bin.JalviewLite", "java.lang.StringBuffer", "$.Thread", "java.net.MalformedURLException", "$.URL", "netscape.javascript.JSException", "$.JSObject"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.jvlite = null;
+this.jsExecQueue = null;
+this.executor = null;
+Clazz_instantialize (this, arguments);
+}, jalview.javascript, "JSFunctionExec", null, Runnable);
+Clazz_makeConstructor (c$, 
+function (applet) {
+this.jvlite = applet;
+this.jsExecQueue = this.jvlite.getJsExecQueue ();
+this.jvlite.setExecutor (this);
+}, "jalview.bin.JalviewLite");
+Clazz_overrideMethod (c$, "finalize", 
+function () {
+this.jvlite = null;
+this.executor = null;
+if (this.jsExecQueue != null) {
+this.jsExecQueue.clear ();
+}this.jsExecQueue = null;
+});
+Clazz_defineMethod (c$, "stopQueue", 
+function () {
+if (this.jsExecQueue != null) {
+var q = null;
+{
+q = this.jsExecQueue;
+this.jsExecQueue = null;
+}if (q != null) {
+for (var jx, $jx = q.iterator (); $jx.hasNext () && ((jx = $jx.next ()) || true);) {
+jx.jvlite = null;
+}
+q.removeAllElements ();
+{
+q.notifyAll ();
+}}}this.jvlite = null;
+this.executor = null;
+});
+Clazz_defineMethod (c$, "run", 
+function () {
+while (this.jsExecQueue != null) {
+if (this.jsExecQueue.size () > 0) {
+var r = this.jsExecQueue.elementAt (0);
+this.jsExecQueue.removeElementAt (0);
+try {
+r.run ();
+} catch (e$$) {
+if (Clazz_exceptionOf (e$$, Exception)) {
+var ex = e$$;
+{
+ex.printStackTrace ();
+}
+} else if (Clazz_exceptionOf (e$$, Error)) {
+var ex = e$$;
+{
+ex.printStackTrace ();
+}
+} else {
+throw e$$;
+}
+}
+} else {
+try {
+{
+this.jsExecQueue.wait (1000);
+}} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+;}}
+});
+Clazz_defineMethod (c$, "executeJavascriptFunction", 
+function (_listener, objects) {
+this.executeJavascriptFunction (false, _listener, objects);
+}, "~S,~A");
+Clazz_defineMethod (c$, "executeJavascriptFunction", 
+function (async, _listener, $arguments) {
+this.executeJavascriptFunction (async, _listener, $arguments, null);
+}, "~B,~S,~A");
+Clazz_defineMethod (c$, "executeJavascriptFunction", 
+function (async, _listener, $arguments, dbgMsg) {
+var objects =  new Array ($arguments != null ? $arguments.length : 0);
+if ($arguments != null) {
+System.arraycopy ($arguments, 0, objects, 0, $arguments.length);
+}var jsex =  new Array (1);
+var exec = ((Clazz_isClassDefined ("jalview.javascript.JSFunctionExec$1") ? 0 : jalview.javascript.JSFunctionExec.$JSFunctionExec$1$ ()), Clazz_innerTypeInstance (jalview.javascript.JSFunctionExec$1, this, Clazz_cloneFinals ("dbgMsg", dbgMsg, "_listener", _listener, "objects", objects, "jsex", jsex, "async", async)));
+if (async) {
+if (this.executor == null) {
+this.executor =  new Thread ( new jalview.javascript.JSFunctionExec (this.jvlite));
+this.executor.start ();
+}{
+this.jsExecQueue.addElement (exec);
+this.jsExecQueue.notify ();
+}} else {
+exec.run ();
+if (jsex[0] != null) {
+throw (jsex[0]);
+}}}, "~B,~S,~A,~S");
+c$.$JSFunctionExec$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jalview.javascript, "JSFunctionExec$1", null, Runnable);
+Clazz_defineMethod (c$, "run", 
+function () {
+try {
+var scriptObject = null;
+try {
+scriptObject = netscape.javascript.JSObject.getWindow (this.b$["jalview.javascript.JSFunctionExec"].jvlite);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+} else {
+throw ex;
+}
+}
+;if (scriptObject != null) {
+if (jalview.bin.JalviewLite.debug && this.f$.dbgMsg != null) {
+System.err.println (this.f$.dbgMsg);
+}scriptObject.call (this.f$._listener, this.f$.objects);
+}} catch (jex) {
+if (Clazz_exceptionOf (jex, Exception)) {
+if (!(Clazz_instanceOf (jex, java.net.MalformedURLException))) {
+if (jalview.bin.JalviewLite.debug) {
+System.err.println (jex);
+}if (Clazz_instanceOf (jex, netscape.javascript.JSException) && this.b$["jalview.javascript.JSFunctionExec"].jvlite.jsfallbackEnabled) {
+this.f$.jsex[0] = jex;
+if (jalview.bin.JalviewLite.debug) {
+System.err.println ("Falling back to javascript: url call");
+}var sb =  new StringBuffer ("javascript:" + this.f$._listener + "(");
+for (var i = 0; this.f$.objects != null && i < this.f$.objects.length; i++) {
+if (i > 0) {
+sb.append (",");
+}sb.append ("\"");
+if (this.f$.objects[i] != null && !(this.f$.objects[i].getClass ().getName ().indexOf ("jalview") == 0)) {
+sb.append (this.f$.objects[i].toString ());
+}sb.append ("\"");
+}
+sb.append (")");
+if (jalview.bin.JalviewLite.debug) {
+System.err.println (sb.toString ());
+}var url = null;
+try {
+url =  new java.net.URL (sb.toString ());
+this.b$["jalview.javascript.JSFunctionExec"].jvlite.getAppletContext ().showDocument (url);
+jex = null;
+} catch (uex) {
+if (Clazz_exceptionOf (uex, Exception)) {
+jex = uex;
+} else {
+throw uex;
+}
+}
+}if (jex != null) {
+if (this.f$.async) {
+jex.printStackTrace ();
+} else {
+this.f$.jsex[0] = jex;
+}};}} else {
+throw jex;
+}
+}
+});
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("netscape.javascript");
+Clazz_load (["java.lang.Exception"], "netscape.javascript.JSException", null, function () {
+c$ = Clazz_declareType (netscape.javascript, "JSException", Exception);
+});
+Clazz_declarePackage ("netscape.javascript");
+c$ = Clazz_declareType (netscape.javascript, "JSObject");
+c$.getWindow = Clazz_defineMethod (c$, "getWindow", 
+function (jvlite) {
+{
+return window;
+}}, "jalview.bin.JalviewLite");
+Clazz_defineMethod (c$, "call", 
+function (func, params) {
+{
+alert("call " + func);
+func.apply(null, params);
+}}, "~S,~A");
+Clazz_defineMethod (c$, "eval", 
+function (string) {
+{
+alert("evval " + string);
+}return this.eval (string);
+}, "~S");
+Clazz_declarePackage ("jalview.javascript");
+Clazz_load (["jalview.javascript.JSFunctionExec", "$.JsCallBack", "jalview.structure.SelectionListener"], "jalview.javascript.JsSelectionSender", ["jalview.appletgui.AlignViewport", "netscape.javascript.JSException"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this._af = null;
+this._listener = null;
+Clazz_instantialize (this, arguments);
+}, jalview.javascript, "JsSelectionSender", jalview.javascript.JSFunctionExec, [jalview.structure.SelectionListener, jalview.javascript.JsCallBack]);
+Clazz_makeConstructor (c$, 
+function (jvlite, af, listener) {
+Clazz_superConstructor (this, jalview.javascript.JsSelectionSender, [jvlite]);
+this._af = af;
+this._listener = listener;
+}, "jalview.bin.JalviewLite,jalview.appletgui.AlignFrame,~S");
+Clazz_overrideMethod (c$, "selection", 
+function (seqsel, colsel, source) {
+try {
+var setid = "";
+var viewid = "";
+var src = this._af;
+if (source != null) {
+if (Clazz_instanceOf (source, jalview.appletgui.AlignViewport) && (source).applet.currentAlignFrame.viewport === source) {
+src = (source).applet.currentAlignFrame;
+}}var seqs =  Clazz_newArray (-1, []);
+var cols =  Clazz_newArray (-1, []);
+var strt = 0;
+var end = (src == null) ? -1 : src.alignPanel.av.getAlignment ().getWidth ();
+if (seqsel != null && seqsel.getSize () > 0) {
+seqs =  new Array (seqsel.getSize ());
+for (var i = 0; i < seqs.length; i++) {
+seqs[i] = seqsel.getSequenceAt (i).getName ();
+}
+if (strt < seqsel.getStartRes ()) {
+strt = seqsel.getStartRes ();
+}if (end == -1 || end > seqsel.getEndRes ()) {
+end = seqsel.getEndRes ();
+}}if (colsel != null && colsel.size () > 0) {
+if (end == -1) {
+end = colsel.getMax () + 1;
+}cols =  new Array (colsel.getSelected ().size ());
+var d = 0;
+var r = -1;
+for (var i = 0; i < cols.length; i++) {
+cols[i] = "" + (1 + colsel.getSelected ().elementAt (i).intValue ());
+}
+} else {
+if (seqsel != null && seqsel.getSize () > 0) {
+cols =  new Array (2);
+cols[0] = "" + (1 + strt) + "-" + (1 + end);
+};}System.err.println ("Relaying selection to jsfunction:" + this._listener);
+this.executeJavascriptFunction (this._listener,  Clazz_newArray (-1, [src, setid, this.jvlite.arrayToSeparatorList (seqs), this.jvlite.arrayToSeparatorList (cols)]));
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+System.err.println ("Jalview Javascript exec error: Couldn't send selection message using function '" + this._listener + "'");
+ex.printStackTrace ();
+if (Clazz_instanceOf (ex, netscape.javascript.JSException)) {
+System.err.println ("Javascript Exception: " + (ex).getCause ().toString ());
+}} else {
+throw ex;
+}
+}
+}, "jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");
+Clazz_overrideMethod (c$, "getAlignFrame", 
+function () {
+return this._af;
+});
+Clazz_overrideMethod (c$, "getListenerFunction", 
+function () {
+return this._listener;
+});
+});
+Clazz_declarePackage ("jalview.javascript");
+Clazz_declareInterface (jalview.javascript, "JsCallBack");
+Clazz_declarePackage ("jalview.javascript");
+Clazz_load (["jalview.javascript.JSFunctionExec", "$.JsCallBack", "jalview.structure.VamsasListener"], "jalview.javascript.MouseOverListener", ["jalview.appletgui.AlignViewport", "netscape.javascript.JSException"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this._af = null;
+this._listener = null;
+this.last = null;
+this.i = -1;
+Clazz_instantialize (this, arguments);
+}, jalview.javascript, "MouseOverListener", jalview.javascript.JSFunctionExec, [jalview.structure.VamsasListener, jalview.javascript.JsCallBack]);
+Clazz_overrideMethod (c$, "mouseOverSequence", 
+function (seq, index, source) {
+if (seq !== this.last || this.i != index) {
+this.last = seq;
+this.i = index;
+var src = null;
+try {
+if (source != null) {
+if (Clazz_instanceOf (source, jalview.appletgui.AlignViewport) && (source).applet.currentAlignFrame.viewport === source) {
+src = (source).applet.currentAlignFrame;
+}}this.executeJavascriptFunction (this._listener,  Clazz_newArray (-1, [src, seq.getDisplayId (false), "" + (1 + this.i), "" + seq.findPosition (this.i)]));
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+System.err.println ("JalviewLite javascript error: Couldn't send mouseOver with handler '" + this._listener + "'");
+if (Clazz_instanceOf (ex, netscape.javascript.JSException)) {
+System.err.println ("Javascript Exception: " + (ex).getMessage ());
+}ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}}, "jalview.datamodel.SequenceI,~N,jalview.structure.VamsasSource");
+Clazz_makeConstructor (c$, 
+function (applet, af, listener) {
+Clazz_superConstructor (this, jalview.javascript.MouseOverListener, [applet]);
+this._af = af;
+this._listener = listener;
+}, "jalview.bin.JalviewLite,jalview.appletgui.AlignFrame,~S");
+Clazz_overrideMethod (c$, "getAlignFrame", 
+function () {
+return this._af;
+});
+Clazz_overrideMethod (c$, "getListenerFunction", 
+function () {
+return this._listener;
+});
+});
+Clazz_declarePackage ("jalview.javascript");
+Clazz_load (["jalview.javascript.JSFunctionExec", "$.JsCallBack", "jalview.structure.StructureListener"], "jalview.javascript.MouseOverStructureListener", ["jalview.api.AlignmentViewPanel", "jalview.appletgui.FeatureRenderer", "jalview.ext.jmol.JmolCommands", "jalview.structure.StructureSelectionManager", "java.net.URL", "java.util.ArrayList"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this._listenerfn = null;
+this.modelSet = null;
+Clazz_instantialize (this, arguments);
+}, jalview.javascript, "MouseOverStructureListener", jalview.javascript.JSFunctionExec, [jalview.javascript.JsCallBack, jalview.structure.StructureListener]);
+Clazz_makeConstructor (c$, 
+function (jalviewLite, listener, modelList) {
+Clazz_superConstructor (this, jalview.javascript.MouseOverStructureListener, [jalviewLite]);
+this._listenerfn = listener;
+this.modelSet = modelList;
+if (this.modelSet != null) {
+for (var i = 0; i < this.modelSet.length; i++) {
+try {
+if ( new java.net.URL (this.modelSet[i]).openConnection () != null) {
+continue;
+}} catch (x) {
+if (Clazz_exceptionOf (x, Exception)) {
+} else {
+throw x;
+}
+}
+;try {
+var db = this.jvlite.getDocumentBase ().toString ();
+db = db.substring (0, db.lastIndexOf ("/"));
+if ( new java.net.URL (db + "/" + this.modelSet[i]).openConnection () != null) {
+this.modelSet[i] = db + "/" + this.modelSet[i];
+continue;
+}} catch (x) {
+if (Clazz_exceptionOf (x, Exception)) {
+} else {
+throw x;
+}
+}
+;try {
+if ( new java.net.URL (this.jvlite.getCodeBase () + this.modelSet[i]).openConnection () != null) {
+this.modelSet[i] = this.jvlite.getCodeBase () + this.modelSet[i];
+continue;
+}} catch (x) {
+if (Clazz_exceptionOf (x, Exception)) {
+} else {
+throw x;
+}
+}
+;}
+}}, "jalview.bin.JalviewLite,~S,~A");
+Clazz_overrideMethod (c$, "getPdbFile", 
+function () {
+return this.modelSet;
+});
+Clazz_defineMethod (c$, "mouseOverStructure", 
+function (atomIndex, strInfo) {
+}, "~N,~S");
+Clazz_overrideMethod (c$, "highlightAtoms", 
+function (atoms) {
+for (var atom, $atom = atoms.iterator (); $atom.hasNext () && ((atom = $atom.next ()) || true);) {
+try {
+this.executeJavascriptFunction (this._listenerfn,  Clazz_newArray (-1, ["mouseover", "" + atom.getPdbFile (), "" + atom.getChain (), "" + (atom.getPdbResNum ()), "" + atom.getAtomIndex ()]));
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+System.err.println ("Couldn't execute callback with " + this._listenerfn + " for atomSpec: " + atom);
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}
+}, "java.util.List");
+Clazz_overrideMethod (c$, "updateColours", 
+function (srce) {
+var source = srce;
+var ssm = jalview.structure.StructureSelectionManager.getStructureSelectionManager (this.jvlite);
+if (Clazz_instanceOf (source, jalview.api.AlignmentViewPanel)) {
+var sequence =  new Array (this.modelSet.length);
+for (var m = 0; m < this.modelSet.length; m++) {
+var sm = ssm.getMapping (this.modelSet[m]);
+if (sm != null && sm.length > 0) {
+sequence[m] =  new Array (sm.length);
+for (var i = 0; i < sm.length; i++) {
+sequence[m][i] = sm[i].getSequence ();
+}
+} else {
+sequence[m] =  new Array (0);
+}}
+var sr = (source).getSequenceRenderer ();
+var fr = (source).av.isShowSequenceFeatures () ?  new jalview.appletgui.FeatureRenderer ((source).av) : null;
+if (fr != null) {
+(fr).transferSettings ((source).getFeatureRenderer ());
+};var ccomands =  new java.util.ArrayList ();
+var pdbfn =  new java.util.ArrayList ();
+var colcommands = jalview.ext.jmol.JmolCommands.getColourBySequenceCommand (ssm, this.modelSet, sequence, sr, fr, (source).getAlignment ());
+if (colcommands == null) {
+return;
+}var sz = 0;
+for (var ccset, $ccset = 0, $$ccset = colcommands; $ccset < $$ccset.length && ((ccset = $$ccset[$ccset]) || true); $ccset++) {
+sz += ccset.commands.length;
+ccomands.add (ccset.commands);
+pdbfn.add (ccset.mapping);
+}
+var mclass;
+var mhandle;
+var ccomandset =  new Array (sz);
+sz = 0;
+for (var ccset, $ccset = ccomands.iterator (); $ccset.hasNext () && ((ccset = $ccset.next ()) || true);) {
+System.arraycopy (ccset, 0, ccomandset, sz, ccset.length);
+sz += ccset.length;
+}
+if (this.jvlite.isJsMessageSetChanged (mclass = "colourstruct", mhandle = (source).av.getViewId (), ccomandset)) {
+this.jvlite.setJsMessageSet (mclass, mhandle, ccomandset);
+var st =  Clazz_newArray (-1, ["colourstruct", "" + (source).av.getViewId (), "" + ccomandset.length, this.jvlite.arrayToSeparatorList (pdbfn.toArray ( new Array (pdbfn.size ())))]);
+try {
+this.executeJavascriptFunction (true, this._listenerfn, st);
+} catch (ex) {
+if (Clazz_exceptionOf (ex, Exception)) {
+System.err.println ("Couldn't execute callback with " + this._listenerfn + " using args { " + st[0] + ", " + st[1] + ", " + st[2] + "," + st[3] + "}");
+ex.printStackTrace ();
+} else {
+throw ex;
+}
+}
+}}}, "~O");
+Clazz_overrideMethod (c$, "getAlignFrame", 
+function () {
+return null;
+});
+Clazz_overrideMethod (c$, "getListenerFunction", 
+function () {
+return this._listenerfn;
+});
+Clazz_defineMethod (c$, "finalise", 
+function () {
+this.jvlite = null;
+Clazz_superCall (this, jalview.javascript.MouseOverStructureListener, "finalize", []);
+});
+Clazz_overrideMethod (c$, "releaseReferences", 
+function (svl) {
+}, "~O");
+Clazz_overrideMethod (c$, "isListeningFor", 
+function (seq) {
+return true;
+}, "jalview.datamodel.SequenceI");
+});
+Clazz_declarePackage ("jalview.ext.jmol");
+Clazz_load (null, "jalview.ext.jmol.JmolCommands", ["jalview.structure.StructureMappingcommandSet", "jalview.util.Comparison", "java.lang.StringBuffer", "java.util.ArrayList"], function () {
+c$ = Clazz_declareType (jalview.ext.jmol, "JmolCommands");
+c$.getColourBySequenceCommand = Clazz_defineMethod (c$, "getColourBySequenceCommand", 
+function (ssm, files, sequence, sr, fr, alignment) {
+var cset =  new java.util.ArrayList ();
+for (var pdbfnum = 0; pdbfnum < files.length; pdbfnum++) {
+var mapping = ssm.getMapping (files[pdbfnum]);
+var command =  new StringBuffer ();
+var smc;
+var str =  new java.util.ArrayList ();
+if (mapping == null || mapping.length < 1) {
+continue;
+}var lastPos = -1;
+for (var s = 0; s < sequence[pdbfnum].length; s++) {
+for (var sp, m = 0; m < mapping.length; m++) {
+if (mapping[m].getSequence () === sequence[pdbfnum][s] && (sp = alignment.findIndex (sequence[pdbfnum][s])) > -1) {
+var asp = alignment.getSequenceAt (sp);
+for (var r = 0; r < asp.getLength (); r++) {
+if (jalview.util.Comparison.isGap (asp.getCharAt (r))) {
+continue;
+}var pos = mapping[m].getPDBResNum (asp.findPosition (r));
+if (pos < 1 || pos == lastPos) {
+continue;
+}lastPos = pos;
+var col = sr.getResidueBoxColour (sequence[pdbfnum][s], r);
+if (fr != null) {
+col = fr.findFeatureColour (col, sequence[pdbfnum][s], r);
+}var newSelcom = (mapping[m].getChain () !== " " ? ":" + mapping[m].getChain () : "") + "/" + (pdbfnum + 1) + ".1" + ";color[" + col.getRed () + "," + col.getGreen () + "," + col.getBlue () + "]";
+if (command.length () > newSelcom.length && command.substring (command.length () - newSelcom.length).equals (newSelcom)) {
+command = jalview.ext.jmol.JmolCommands.condenseCommand (command, pos);
+continue;
+}command.append (";");
+if (command.length () > 51200) {
+str.add (command.toString ());
+command.setLength (0);
+}command.append ("select " + pos);
+command.append (newSelcom);
+}
+break;
+}}
+}
+{
+str.add (command.toString ());
+command.setLength (0);
+}cset.add ( new jalview.structure.StructureMappingcommandSet (jalview.ext.jmol.JmolCommands, files[pdbfnum], str.toArray ( new Array (str.size ()))));
+}
+return cset.toArray ( new Array (cset.size ()));
+}, "jalview.structure.StructureSelectionManager,~A,~A,jalview.api.SequenceRenderer,jalview.api.FeatureRenderer,jalview.datamodel.AlignmentI");
+c$.condenseCommand = Clazz_defineMethod (c$, "condenseCommand", 
+function (command, pos) {
+var p = command.length ();
+var q = p;
+do {
+p -= 6;
+if (p < 1) {
+p = 0;
+};} while ((q = command.indexOf ("select", p)) == -1 && p > 0);
+var sb =  new StringBuffer (command.substring (0, q + 7));
+command = command.$delete (0, q + 7);
+var start;
+if (command.indexOf ("-") > -1) {
+start = command.substring (0, command.indexOf ("-"));
+} else {
+start = command.substring (0, command.indexOf (":"));
+}sb.append (start + "-" + pos + command.substring (command.indexOf (":")));
+return sb;
+}, "StringBuffer,~N");
+});
+Clazz_declarePackage ("jalview.structure");
+c$ = Clazz_decorateAsClass (function () {
+this.mapping = null;
+this.commands = null;
+this.handledBy = null;
+Clazz_instantialize (this, arguments);
+}, jalview.structure, "StructureMappingcommandSet");
+Clazz_makeConstructor (c$, 
+function (handledBy, files, commands) {
+this.mapping = files;
+this.handledBy = handledBy;
+this.commands = commands;
+}, "~O,~S,~A");
+Clazz_declarePackage ("java.util");
+Clazz_load (["java.util.Hashtable"], "java.util.Properties", ["java.lang.IllegalArgumentException"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.defaults = null;
+if (!Clazz_isClassDefined ("java.util.Properties.LineReader")) {
+java.util.Properties.$Properties$LineReader$ ();
+}
+Clazz_instantialize (this, arguments);
+}, java.util, "Properties", java.util.Hashtable);
+Clazz_makeConstructor (c$, 
+function () {
+this.construct (null);
+});
+Clazz_makeConstructor (c$, 
+function (defaults) {
+Clazz_superConstructor (this, java.util.Properties, []);
+this.defaults = defaults;
+}, "java.util.Properties");
+Clazz_defineMethod (c$, "setProperty", 
+function (key, value) {
+return this.put (key, value);
+}, "~S,~S");
+Clazz_defineMethod (c$, "load", 
+function (reader) {
+this.load0 (Clazz_innerTypeInstance (java.util.Properties.LineReader, this, null, reader));
+}, "java.io.Reader");
+Clazz_defineMethod (c$, "load", 
+function (inStream) {
+this.load0 (Clazz_innerTypeInstance (java.util.Properties.LineReader, this, null, inStream));
+}, "java.io.InputStream");
+Clazz_defineMethod (c$, "load0", 
+ function (lr) {
+var convtBuf =  Clazz_newCharArray (1024, '\0');
+var limit;
+var keyLen;
+var valueStart;
+var c;
+var hasSep;
+var precedingBackslash;
+while ((limit = lr.readLine ()) >= 0) {
+c = String.fromCharCode ( 0);
+keyLen = 0;
+valueStart = limit;
+hasSep = false;
+precedingBackslash = false;
+while (keyLen < limit) {
+c = lr.lineBuf[keyLen];
+if ((c == '=' || c == ':') && !precedingBackslash) {
+valueStart = keyLen + 1;
+hasSep = true;
+break;
+} else if ((c == ' ' || c == '\t' || c == '\f') && !precedingBackslash) {
+valueStart = keyLen + 1;
+break;
+}if (c == '\\') {
+precedingBackslash = !precedingBackslash;
+} else {
+precedingBackslash = false;
+}keyLen++;
+}
+while (valueStart < limit) {
+c = lr.lineBuf[valueStart];
+if (c != ' ' && c != '\t' && c != '\f') {
+if (!hasSep && (c == '=' || c == ':')) {
+hasSep = true;
+} else {
+break;
+}}valueStart++;
+}
+var key = this.loadConvert (lr.lineBuf, 0, keyLen, convtBuf);
+var value = this.loadConvert (lr.lineBuf, valueStart, limit - valueStart, convtBuf);
+this.put (key, value);
+}
+}, "java.util.Properties.LineReader");
+Clazz_defineMethod (c$, "loadConvert", 
+ function ($in, off, len, convtBuf) {
+if (convtBuf.length < len) {
+var newLen = len * 2;
+if (newLen < 0) {
+newLen = 2147483647;
+}convtBuf =  Clazz_newCharArray (newLen, '\0');
+}var aChar;
+var out = convtBuf;
+var outLen = 0;
+var end = off + len;
+while (off < end) {
+aChar = $in[off++];
+if (aChar == '\\') {
+aChar = $in[off++];
+if (aChar == 'u') {
+var value = 0;
+for (var i = 0; i < 4; i++) {
+aChar = $in[off++];
+switch (aChar) {
+case '0':
+case '1':
+case '2':
+case '3':
+case '4':
+case '5':
+case '6':
+case '7':
+case '8':
+case '9':
+value = (value << 4) + aChar.charCodeAt (0) - 48;
+break;
+case 'a':
+case 'b':
+case 'c':
+case 'd':
+case 'e':
+case 'f':
+value = (value << 4) + 10 + aChar.charCodeAt (0) - 97;
+break;
+case 'A':
+case 'B':
+case 'C':
+case 'D':
+case 'E':
+case 'F':
+value = (value << 4) + 10 + aChar.charCodeAt (0) - 65;
+break;
+default:
+throw  new IllegalArgumentException ("Malformed \\uxxxx encoding.");
+}
+}
+out[outLen++] = String.fromCharCode (value);
+} else {
+if (aChar == 't') aChar = '\t';
+ else if (aChar == 'r') aChar = '\r';
+ else if (aChar == 'n') aChar = '\n';
+ else if (aChar == 'f') aChar = '\f';
+out[outLen++] = aChar;
+}} else {
+out[outLen++] = aChar;
+}}
+return  String.instantialize (out, 0, outLen);
+}, "~A,~N,~N,~A");
+Clazz_defineMethod (c$, "getProperty", 
+function (key) {
+var oval = Clazz_superCall (this, java.util.Properties, "get", [key]);
+var sval = (Clazz_instanceOf (oval, String)) ? oval : null;
+return ((sval == null) && (this.defaults != null)) ? this.defaults.getProperty (key) : sval;
+}, "~S");
+Clazz_defineMethod (c$, "getProperty", 
+function (key, defaultValue) {
+var val = this.getProperty (key);
+return (val == null) ? defaultValue : val;
+}, "~S,~S");
+Clazz_defineMethod (c$, "propertyNames", 
+function () {
+var h =  new java.util.Hashtable ();
+this.enumerate (h);
+return h.keys ();
+});
+Clazz_defineMethod (c$, "stringPropertyNames", 
+function () {
+var h =  new java.util.Hashtable ();
+this.enumerateStringProperties (h);
+return h.keySet ();
+});
+Clazz_defineMethod (c$, "enumerate", 
+ function (h) {
+if (this.defaults != null) {
+this.defaults.enumerate (h);
+}for (var e = this.keys (); e.hasMoreElements (); ) {
+var key = e.nextElement ();
+h.put (key, this.get (key));
+}
+}, "java.util.Hashtable");
+Clazz_defineMethod (c$, "enumerateStringProperties", 
+ function (h) {
+if (this.defaults != null) {
+this.defaults.enumerateStringProperties (h);
+}for (var e = this.keys (); e.hasMoreElements (); ) {
+var k = e.nextElement ();
+var v = this.get (k);
+if (Clazz_instanceOf (k, String) && Clazz_instanceOf (v, String)) {
+h.put (k, v);
+}}
+}, "java.util.Hashtable");
+c$.$Properties$LineReader$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_decorateAsClass (function () {
+Clazz_prepareCallback (this, arguments);
+this.inByteBuf = null;
+this.inCharBuf = null;
+this.lineBuf = null;
+this.inLimit = 0;
+this.inOff = 0;
+this.inStream = null;
+this.reader = null;
+Clazz_instantialize (this, arguments);
+}, java.util.Properties, "LineReader");
+Clazz_prepareFields (c$, function () {
+this.lineBuf =  Clazz_newCharArray (1024, '\0');
+});
+Clazz_makeConstructor (c$, 
+function (a) {
+this.inStream = a;
+this.inByteBuf =  Clazz_newByteArray (8192, 0);
+}, "java.io.InputStream");
+Clazz_makeConstructor (c$, 
+function (a) {
+this.reader = a;
+this.inCharBuf =  Clazz_newCharArray (8192, '\0');
+}, "java.io.Reader");
+Clazz_defineMethod (c$, "readLine", 
+function () {
+var a = 0;
+var b = String.fromCharCode (0);
+var c = true;
+var d = false;
+var e = true;
+var f = false;
+var g = false;
+var h = false;
+while (true) {
+if (this.inOff >= this.inLimit) {
+this.inLimit = (this.inStream == null) ? this.reader.read (this.inCharBuf) : this.inStream.read (this.inByteBuf);
+this.inOff = 0;
+if (this.inLimit <= 0) {
+if (a == 0 || d) {
+return -1;
+}return a;
+}}if (this.inStream != null) {
+b = String.fromCharCode (0xff & this.inByteBuf[this.inOff++]);
+} else {
+b = this.inCharBuf[this.inOff++];
+}if (h) {
+h = false;
+if (b == '\n') {
+continue;
+}}if (c) {
+if (b == ' ' || b == '\t' || b == '\f') {
+continue;
+}if (!f && (b == '\r' || b == '\n')) {
+continue;
+}c = false;
+f = false;
+}if (e) {
+e = false;
+if (b == '#' || b == '!') {
+d = true;
+continue;
+}}if (b != '\n' && b != '\r') {
+this.lineBuf[a++] = b;
+if (a == this.lineBuf.length) {
+var i = this.lineBuf.length * 2;
+{
+}var j =  Clazz_newCharArray (i, '\0');
+System.arraycopy (this.lineBuf, 0, j, 0, this.lineBuf.length);
+this.lineBuf = j;
+}if (b == '\\') {
+g = !g;
+} else {
+g = false;
+}} else {
+if (d || a == 0) {
+d = false;
+e = true;
+c = true;
+a = 0;
+continue;
+}if (this.inOff >= this.inLimit) {
+this.inLimit = (this.inStream == null) ? this.reader.read (this.inCharBuf) : this.inStream.read (this.inByteBuf);
+this.inOff = 0;
+if (this.inLimit <= 0) {
+return a;
+}}if (g) {
+a -= 1;
+c = true;
+f = true;
+g = false;
+if (b == '\r') {
+h = true;
+}} else {
+return a;
+}}}
+});
+c$ = Clazz_p0p ();
+};
+});
+Clazz_declarePackage ("jssun.util");
+Clazz_load (["java.util.Enumeration"], "jssun.util.ResourceBundleEnumeration", ["java.util.NoSuchElementException"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.set = null;
+this.iterator = null;
+this.enumeration = null;
+this.next = null;
+Clazz_instantialize (this, arguments);
+}, jssun.util, "ResourceBundleEnumeration", null, java.util.Enumeration);
+Clazz_makeConstructor (c$, 
+function (set, enumeration) {
+this.set = set;
+this.iterator = set.iterator ();
+this.enumeration = enumeration;
+}, "java.util.Set,java.util.Enumeration");
+Clazz_defineMethod (c$, "hasMoreElements", 
+function () {
+if (this.next == null) {
+if (this.iterator.hasNext ()) {
+this.next = this.iterator.next ();
+} else if (this.enumeration != null) {
+while (this.next == null && this.enumeration.hasMoreElements ()) {
+this.next = this.enumeration.nextElement ();
+if (this.set.contains (this.next)) {
+this.next = null;
+}}
+}}return this.next != null;
+});
+Clazz_defineMethod (c$, "nextElement", 
+function () {
+if (this.hasMoreElements ()) {
+var result = this.next;
+this.next = null;
+return result;
+} else {
+throw  new java.util.NoSuchElementException ();
+}});
+});
+Clazz_declarePackage ("jalview.io");
+Clazz_load (["jalview.io.AlignFile"], "jalview.io.FastaFile", ["jalview.datamodel.AlignmentAnnotation", "$.Annotation", "java.lang.StringBuffer"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.len = 72;
+this.out = null;
+Clazz_instantialize (this, arguments);
+}, jalview.io, "FastaFile", jalview.io.AlignFile);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jalview.io.FastaFile, []);
+});
+Clazz_overrideMethod (c$, "parse", 
+function () {
+var sb =  new StringBuffer ();
+var firstLine = true;
+var line;
+var uline;
+var seq = null;
+var annotation = false;
+while ((uline = this.nextLine ()) != null) {
+line = uline.trim ();
+if (line.length > 0) {
+if (line.charAt (0) == '>') {
+if (line.startsWith (">#_")) {
+if (annotation) {
+this.annotations.addElement (this.makeAnnotation (seq, sb));
+}} else {
+annotation = false;
+}if (!firstLine) {
+seq.setSequence (sb.toString ());
+if (!annotation) {
+this.seqs.addElement (seq);
+}}seq = this.parseId (line.substring (1));
+firstLine = false;
+sb =  new StringBuffer ();
+if (line.startsWith (">#_")) {
+annotation = true;
+}} else {
+sb.append (annotation ? uline : line);
+}}}
+if (annotation) {
+this.annotations.addElement (this.makeAnnotation (seq, sb));
+} else if (!firstLine) {
+seq.setSequence (sb.toString ());
+this.seqs.addElement (seq);
+}});
+Clazz_defineMethod (c$, "makeAnnotation", 
+ function (seq, sb) {
+var anots =  new Array (sb.length ());
+var cb;
+for (var i = 0; i < anots.length; i++) {
+var cn = sb.charAt (i);
+if (cn != ' ') {
+anots[i] =  new jalview.datamodel.Annotation ("" + cn, null, ' ', NaN);
+}}
+var aa =  new jalview.datamodel.AlignmentAnnotation (seq.getName ().substring (2), seq.getDescription (), anots);
+return aa;
+}, "jalview.datamodel.SequenceI,StringBuffer");
+Clazz_defineMethod (c$, "addAnnotations", 
+function (al) {
+this.addProperties (al);
+for (var i = 0; i < this.annotations.size (); i++) {
+var aa = this.annotations.elementAt (i);
+aa.setPadGaps (true, al.getGapCharacter ());
+al.addAnnotation (aa);
+}
+}, "jalview.datamodel.Alignment");
+Clazz_defineMethod (c$, "print", 
+function (s) {
+this.out =  new StringBuffer ();
+var i = 0;
+while ((i < s.length) && (s[i] != null)) {
+this.out.append (">" + this.printId (s[i]));
+if (s[i].getDescription () != null) {
+this.out.append (" " + s[i].getDescription ());
+}this.out.append (this.newline);
+var nochunks = (Clazz_doubleToInt (s[i].getLength () / this.len)) + 1;
+for (var j = 0; j < nochunks; j++) {
+var start = j * this.len;
+var end = start + this.len;
+if (end < s[i].getLength ()) {
+this.out.append (s[i].getSequenceAsString (start, end) + this.newline);
+} else if (start < s[i].getLength ()) {
+this.out.append (s[i].getSequenceAsString (start, s[i].getLength ()) + this.newline);
+}}
+i++;
+}
+return this.out.toString ();
+}, "~A");
+Clazz_defineMethod (c$, "print", 
+function () {
+return this.print (this.getSeqsAsArray ());
+});
+});
+Clazz_declarePackage ("swingjs.plaf");
+Clazz_load (["swingjs.plaf.JSPanelUI"], "swingjs.plaf.JSMenuBarUI", ["java.awt.Dimension", "javax.swing.LookAndFeel"], function () {
+c$ = Clazz_declareType (swingjs.plaf, "JSMenuBarUI", swingjs.plaf.JSPanelUI);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, swingjs.plaf.JSMenuBarUI, []);
+this.isContainer = true;
+this.setDoc ();
+});
+Clazz_overrideMethod (c$, "getDOMObject", 
+function () {
+if (this.domNode == null) this.domNode = this.createDOMObject ("div", this.id, []);
+return this.domNode;
+});
+Clazz_overrideMethod (c$, "setHTMLSize", 
+function (obj, addCSS) {
+return  new java.awt.Dimension (this.c.getWidth (), this.c.getHeight ());
+}, "swingjs.api.DOMNode,~B");
+Clazz_defineMethod (c$, "getPreferredSize", 
+function (c) {
+return null;
+}, "javax.swing.JComponent");
+Clazz_overrideMethod (c$, "installJSUI", 
+function () {
+javax.swing.LookAndFeel.installColorsAndFont (this.c, "MenuBar.background", "MenuBar.foreground", "MenuBar.font");
+});
+Clazz_overrideMethod (c$, "uninstallJSUI", 
+function () {
+});
+});
+Clazz_declarePackage ("swingjs.plaf");
+Clazz_load (["swingjs.plaf.JSComponentUI"], "swingjs.plaf.JSMenuUI", ["java.awt.Dimension", "javax.swing.LookAndFeel"], function () {
+c$ = Clazz_declareType (swingjs.plaf, "JSMenuUI", swingjs.plaf.JSComponentUI);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, swingjs.plaf.JSMenuUI, []);
+this.isContainer = true;
+this.setDoc ();
+});
+Clazz_overrideMethod (c$, "getDOMObject", 
+function () {
+if (this.domNode == null) this.domNode = this.createDOMObject ("select", this.id, []);
+return this.domNode;
+});
+Clazz_overrideMethod (c$, "setHTMLSize", 
+function (obj, addCSS) {
+return  new java.awt.Dimension (this.c.getWidth (), this.c.getHeight ());
+}, "swingjs.api.DOMNode,~B");
+Clazz_defineMethod (c$, "getPreferredSize", 
+function (c) {
+return null;
+}, "javax.swing.JComponent");
+Clazz_overrideMethod (c$, "installJSUI", 
+function () {
+javax.swing.LookAndFeel.installColorsAndFont (this.c, "Menu.background", "Menu.foreground", "Menu.font");
+});
+Clazz_overrideMethod (c$, "uninstallJSUI", 
+function () {
+});
+});
+Clazz_declarePackage ("swingjs.plaf");
+Clazz_load (["swingjs.plaf.JSButtonUI"], "swingjs.plaf.JSMenuItemUI", ["javax.swing.LookAndFeel", "$.UIManager", "javax.swing.plaf.UIResource", "swingjs.api.DOMNode", "swingjs.plaf.JSButtonListener"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.$domBtn = null;
+this.$shiftOffset = 0;
+this.$defaultTextShiftOffset = 0;
+Clazz_instantialize (this, arguments);
+}, swingjs.plaf, "JSMenuItemUI", swingjs.plaf.JSButtonUI);
+Clazz_overrideMethod (c$, "getDOMObject", 
+function () {
+if (this.domNode == null) this.$domBtn = this.enableNode = this.valueNode = this.domNode = this.createDOMObject ("input", this.id, ["type", "button"]);
+this.setCssFont (swingjs.api.DOMNode.setAttr (this.domNode, "value", (this.c).getText ()), this.c.getFont ());
+return this.domNode;
+});
+Clazz_overrideMethod (c$, "verifyButtonClick", 
+function (isRelease) {
+return true;
+}, "~B");
+Clazz_overrideMethod (c$, "installJSUI", 
+function () {
+this.installDefaults (this.c);
+this.installListeners (this.c);
+this.installKeyboardActions (this.c);
+});
+Clazz_overrideMethod (c$, "uninstallJSUI", 
+function () {
+this.uninstallKeyboardActions (this.c);
+this.uninstallListeners (this.c);
+});
+Clazz_overrideMethod (c$, "installListeners", 
+function (b) {
+var listener =  new swingjs.plaf.JSButtonListener (b);
+if (listener != null) {
+b.addMouseListener (listener);
+b.addMouseMotionListener (listener);
+b.addFocusListener (listener);
+b.addPropertyChangeListener (listener);
+b.addChangeListener (listener);
+}}, "javax.swing.AbstractButton");
+Clazz_overrideMethod (c$, "uninstallListeners", 
+function (b) {
+var listener = this.getButtonListener (b);
+if (listener != null) {
+b.removeMouseListener (listener);
+b.removeMouseMotionListener (listener);
+b.removeFocusListener (listener);
+b.removeChangeListener (listener);
+b.removePropertyChangeListener (listener);
+}}, "javax.swing.AbstractButton");
+Clazz_overrideMethod (c$, "installKeyboardActions", 
+function (b) {
+var listener = this.getButtonListener (b);
+if (listener != null) {
+listener.installKeyboardActions (b);
+}}, "javax.swing.AbstractButton");
+Clazz_overrideMethod (c$, "uninstallKeyboardActions", 
+function (b) {
+var listener = this.getButtonListener (b);
+if (listener != null) {
+listener.uninstallKeyboardActions (b);
+}}, "javax.swing.AbstractButton");
+Clazz_overrideMethod (c$, "getPropertyPrefix", 
+function () {
+return "Button.";
+});
+Clazz_overrideMethod (c$, "installDefaults", 
+function (b) {
+var pp = this.getPropertyPrefix ();
+this.$defaultTextShiftOffset = javax.swing.UIManager.getInt (pp + "textShiftOffset");
+if (b.getMargin () == null || (Clazz_instanceOf (b.getMargin (), javax.swing.plaf.UIResource))) {
+b.setMargin (javax.swing.UIManager.getInsets (pp + "margin"));
+}javax.swing.LookAndFeel.installColorsAndFont (b, pp + "background", pp + "foreground", pp + "font");
+javax.swing.LookAndFeel.installProperty (b, "iconTextGap",  new Integer (4));
+}, "javax.swing.AbstractButton");
+});
+Clazz_declarePackage ("swingjs.plaf");
+Clazz_load (["swingjs.plaf.JSCheckBoxUI"], "swingjs.plaf.JSCheckBoxMenuItemUI", null, function () {
+c$ = Clazz_declareType (swingjs.plaf, "JSCheckBoxMenuItemUI", swingjs.plaf.JSCheckBoxUI);
+Clazz_overrideMethod (c$, "getDOMObject", 
+function () {
+return this.getButtonObject ("checkBox");
+});
+Clazz_overrideMethod (c$, "getPropertyPrefix", 
+function () {
+return "CheckBoxMenuItem.";
+});
+});
+Clazz_declarePackage ("swingjs.plaf");
+Clazz_load (["swingjs.plaf.JSRadioButtonUI"], "swingjs.plaf.JSCheckBoxUI", null, function () {
+c$ = Clazz_declareType (swingjs.plaf, "JSCheckBoxUI", swingjs.plaf.JSRadioButtonUI);
+Clazz_overrideMethod (c$, "getDOMObject", 
+function () {
+return this.getButtonObject ("checkBox");
+});
+Clazz_overrideMethod (c$, "getPropertyPrefix", 
+function () {
+return "CheckBox.";
+});
+});
+Clazz_declarePackage ("swingjs.plaf");
+Clazz_load (["swingjs.plaf.JSComponentUI"], "swingjs.plaf.JSLabelUI", ["swingjs.api.DOMNode"], function () {
+c$ = Clazz_declareType (swingjs.plaf, "JSLabelUI", swingjs.plaf.JSComponentUI);
+Clazz_overrideMethod (c$, "getDOMObject", 
+function () {
+if (this.domNode == null) this.textNode = this.domNode = this.createDOMObject ("label", this.id, []);
+swingjs.plaf.JSComponentUI.vCenter (this.domNode, 10);
+return this.setCssFont (swingjs.api.DOMNode.setAttr (this.domNode, "innerHTML", (this.c).getText ()), this.c.getFont ());
+});
+Clazz_overrideMethod (c$, "installJSUI", 
+function () {
+});
+Clazz_overrideMethod (c$, "uninstallJSUI", 
+function () {
+});
+});
+Clazz_declarePackage ("swingjs.plaf");
+Clazz_load (["swingjs.plaf.JSMenuUI"], "swingjs.plaf.JSPopupMenuUI", ["java.awt.Dimension", "javax.swing.LookAndFeel"], function () {
+c$ = Clazz_declareType (swingjs.plaf, "JSPopupMenuUI", swingjs.plaf.JSMenuUI);
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, swingjs.plaf.JSPopupMenuUI, []);
+this.isContainer = true;
+this.setDoc ();
+});
+Clazz_overrideMethod (c$, "getDOMObject", 
+function () {
+if (this.domNode == null) this.domNode = this.createDOMObject ("select", this.id, []);
+return this.domNode;
+});
+Clazz_overrideMethod (c$, "setHTMLSize", 
+function (obj, addCSS) {
+return  new java.awt.Dimension (this.c.getWidth (), this.c.getHeight ());
+}, "swingjs.api.DOMNode,~B");
+Clazz_defineMethod (c$, "getPreferredSize", 
+function (c) {
+return null;
+}, "javax.swing.JComponent");
+Clazz_overrideMethod (c$, "installJSUI", 
+function () {
+javax.swing.LookAndFeel.installColorsAndFont (this.c, "PopupMenu.background", "PopupMenu.foreground", "PopupMenu.font");
+});
+Clazz_overrideMethod (c$, "uninstallJSUI", 
+function () {
+});
+});
+Clazz_declarePackage ("swingjs.plaf");
+Clazz_load (["swingjs.plaf.JSSeparatorUI"], "swingjs.plaf.JSPopupMenuSeparatorUI", ["swingjs.api.DOMNode"], function () {
+c$ = Clazz_declareType (swingjs.plaf, "JSPopupMenuSeparatorUI", swingjs.plaf.JSSeparatorUI);
+Clazz_overrideMethod (c$, "getDOMObject", 
+function () {
+if (this.domNode == null) this.textNode = this.domNode = this.createDOMObject ("label", this.id, []);
+swingjs.plaf.JSComponentUI.vCenter (this.domNode, 10);
+return this.setCssFont (swingjs.api.DOMNode.setAttr (this.domNode, "innerHTML", (this.c).getText ()), this.c.getFont ());
+});
+Clazz_overrideMethod (c$, "installJSUI", 
+function () {
+});
+Clazz_overrideMethod (c$, "uninstallJSUI", 
+function () {
+});
+});
+//Clazz_declarePackage ("swingjs.plaf");
+//Clazz_load (["swingjs.plaf.JSSliderUI"], "swingjs.plaf.JSScrollBarUI", null, function () {
+//c$ = Clazz_declareType (swingjs.plaf, "JSScrollBarUI", swingjs.plaf.JSSliderUI);
+//});
+
+
+Clazz_declarePackage ("swingjs.plaf");
+Clazz_load (["swingjs.plaf.JSComponentUI"], "swingjs.plaf.JSScrollBarUI", null, function () {
+c$ = Clazz_declareType (swingjs.plaf, "JSScrollBarUI", swingjs.plaf.JSComponentUI);
+Clazz_overrideMethod (c$, "getDOMObject", 
+function () {
+if (this.domNode == null) this.domNode = this.createDOMObject ("div", this.id, []);
+return this.domNode;
+});
+Clazz_overrideMethod (c$, "installJSUI", 
+function () {
+});
+Clazz_overrideMethod (c$, "uninstallJSUI", 
+function () {
+});
+});
+Clazz_declarePackage ("swingjs");
+Clazz_load (null, "swingjs.JSImagekit", ["java.util.Arrays", "swingjs.JSImage", "swingjs.api.Interface"], function () {
+c$ = Clazz_declareType (swingjs, "JSImagekit");
+Clazz_makeConstructor (c$, 
+function () {
+});
+Clazz_defineMethod (c$, "createImageFromBytes", 
+function (data, imageoffset, imagelength) {
+var w = 0;
+var h = 0;
+var argb = null;
+var b = null;
+var type = null;
+if (data == null) {
+w = imageoffset;
+h = imagelength;
+} else {
+if (imagelength < 0) imagelength = data.length;
+b = java.util.Arrays.copyOfRange (data, imageoffset, imagelength);
+if (b.length < 54) return null;
+switch (this.getSourceType (b)) {
+case 3:
+var ie = swingjs.api.Interface.getInstance ("javajs.img.BMPDecoder", true);
+var o = ie.decodeWindowsBMP (b);
+if (o == null || o[0] == null) return null;
+w = (o[1]).intValue ();
+h = (o[2]).intValue ();
+argb = o[0];
+break;
+case 1:
+var pt = 2;
+while (true) {
+switch (this.getInt (b, pt)) {
+case 49407:
+case 49919:
+h = this.getIntRev (b, pt + 5);
+w = this.getIntRev (b, pt + 7);
+pt = 0;
+break;
+}
+if (pt == 0) break;
+pt += 2 + this.getIntRev (b, pt + 2);
+}
+type = "jpeg";
+break;
+case 0:
+w = this.getLong (b, 16);
+h = this.getLong (b, 20);
+type = "png";
+break;
+case 2:
+w = this.getInt (b, 6);
+h = this.getInt (b, 8);
+type = "gif";
+break;
+case -1:
+System.out.println ("JSImagekit: Unknown image type: " + b[0] + " " + b[1] + " " + b[2] + " " + b[3]);
+data = null;
+break;
+}
+}if (w == 0 || h == 0) return null;
+var jsimage =  new swingjs.JSImage (argb, w, h);
+if (data != null && argb == null) jsimage.getDOMImage (b, type);
+return jsimage;
+}, "~A,~N,~N");
+Clazz_defineMethod (c$, "getLong", 
+ function (b, pt) {
+return ((b[pt] & 0xFF) << 24) + ((b[pt + 1] & 0xFF) << 16) + ((b[pt + 2] & 0xFF) << 8) + (b[pt + 3] & 0xFF);
+}, "~A,~N");
+Clazz_defineMethod (c$, "getInt", 
+ function (b, pt) {
+return (b[pt] & 0xFF) + ((b[pt + 1] & 0xFF) << 8);
+}, "~A,~N");
+Clazz_defineMethod (c$, "getIntRev", 
+ function (b, pt) {
+return ((b[pt] & 0xFF) << 8) + (b[pt + 1] & 0xFF);
+}, "~A,~N");
+Clazz_defineMethod (c$, "getSourceType", 
+ function (b) {
+return ((b[0] & 0xFF) == 0x89 && b[1] == 80 && b[2] == 78 && b[3] == 71 ? 0 : (b[0] & 0xFF) == 0xFF && (b[1] & 0xFF) == 0xD8 ? 1 : b[0] == 71 && b[1] == 73 && b[2] == 70 ? 2 : b[0] == 66 && b[1] == 77 ? 3 : -1);
+}, "~A");
+Clazz_defineStatics (c$,
+"UNK", -1,
+"PNG", 0,
+"JPG", 1,
+"GIF", 2,
+"BMP", 3,
+"JPG_SOF0", 0xC0FF,
+"JPG_SOF2", 0xC2FF);
+});
+Clazz_declarePackage ("swingjs");
+Clazz_load (["java.awt.image.BufferedImage"], "swingjs.JSImage", ["JU.Base64", "swingjs.api.DOMNode"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.typeRequested = 0;
+this.pix = null;
+this._imgNode = null;
+this.width = 0;
+this.height = 0;
+Clazz_instantialize (this, arguments);
+}, swingjs, "JSImage", java.awt.image.BufferedImage);
+Clazz_makeConstructor (c$, 
+function (argb, width, height) {
+Clazz_superConstructor (this, swingjs.JSImage, [width, height, 2]);
+this.width = width;
+this.height = height;
+this.pix = argb;
+}, "~A,~N,~N");
+Clazz_defineMethod (c$, "toIntARGB", 
+function (imgData) {
+var n = Clazz_doubleToInt (imgData.length / 4);
+var iData =  Clazz_newIntArray (n, 0);
+for (var i = 0, j = 0; i < n; j++) iData[i++] = (imgData[j++] << 16) | (imgData[j++] << 8) | imgData[j++] | 0xFF000000;
+
+return iData;
+}, "~A");
+Clazz_defineMethod (c$, "getDOMImage", 
+function (b, type) {
+var dataurl = "data:image/" + type + ";base64," + JU.Base64.getBase64 (b).toString ();
+var me = this;
+var img = null;
+{
+img = new Image(this.width, this.height);
+//img.onLoad = function() { me.setDOMImage(img); };
+img.src = dataurl;
+}this.setDOMImage (img);
+}, "~A,~S");
+Clazz_defineMethod (c$, "setDOMImage", 
+function (img) {
+var canvas = swingjs.api.DOMNode.createElement ("canvas", "JSImage");
+var w = this.width;
+var h = this.height;
+this._imgNode = img;
+{
+canvas.width = w;
+canvas.height = h;
+var ctx = canvas.getContext("2d");
+ctx.drawImage(img, 0, 0, w, h);
+var data = ctx.getImageData(0, 0, w, h).data;
+img._pbuf32 = this.toIntARGB(data);
+}}, "swingjs.api.DOMNode");
+Clazz_defineMethod (c$, "getHeight", 
+function (o) {
+return this.height;
+}, "java.awt.image.ImageObserver");
+Clazz_defineMethod (c$, "getWidth", 
+function (o) {
+return this.width;
+}, "java.awt.image.ImageObserver");
+});
+Clazz_declarePackage ("jssun.awt.image");
+Clazz_load (["jssun.awt.image.IntegerComponentRaster"], "jssun.awt.image.IntegerInterleavedRaster", ["java.lang.ArrayIndexOutOfBoundsException", "java.awt.Point", "$.Rectangle", "java.awt.image.DataBufferInt", "$.RasterFormatException", "$.SinglePixelPackedSampleModel"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.$maxX = 0;
+this.$maxY = 0;
+Clazz_instantialize (this, arguments);
+}, jssun.awt.image, "IntegerInterleavedRaster", jssun.awt.image.IntegerComponentRaster);
+Clazz_makeConstructor (c$, 
+function (sampleModel, origin) {
+Clazz_superConstructor (this, jssun.awt.image.IntegerInterleavedRaster, []);
+this.setIntInterRaster (sampleModel, sampleModel.createDataBuffer (),  new java.awt.Rectangle (origin.x, origin.y, sampleModel.getWidth (), sampleModel.getHeight ()), origin, null);
+}, "java.awt.image.SampleModel,java.awt.Point");
+Clazz_makeConstructor (c$, 
+function (sampleModel, dataBuffer, origin) {
+Clazz_superConstructor (this, jssun.awt.image.IntegerInterleavedRaster, []);
+this.setParams (sampleModel, dataBuffer, origin);
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jssun.awt.image.IntegerInterleavedRaster, []);
+});
+Clazz_overrideMethod (c$, "setParams", 
+function (sampleModel, dataBuffer, origin) {
+this.setIntInterRaster (sampleModel, dataBuffer,  new java.awt.Rectangle (origin.x, origin.y, sampleModel.getWidth (), sampleModel.getHeight ()), origin, null);
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");
+Clazz_makeConstructor (c$, 
+function (sampleModel, dataBuffer, aRegion, origin, parent) {
+Clazz_superConstructor (this, jssun.awt.image.IntegerInterleavedRaster, []);
+this.setIntInterRaster (sampleModel, dataBuffer, aRegion, origin, parent);
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,jssun.awt.image.IntegerInterleavedRaster");
+Clazz_defineMethod (c$, "setIntInterRaster", 
+ function (sampleModel, dataBuffer, aRegion, origin, parent) {
+this.setIntCompRaster (sampleModel, dataBuffer, aRegion, origin, parent);
+this.$maxX = this.minX + this.width;
+this.$maxY = this.minY + this.height;
+if (!(Clazz_instanceOf (dataBuffer, java.awt.image.DataBufferInt))) {
+throw  new java.awt.image.RasterFormatException ("IntegerInterleavedRasters must haveinteger DataBuffers");
+}var dbi = dataBuffer;
+this.data = jssun.awt.image.SunWritableRaster.stealData (dbi, 0);
+if (Clazz_instanceOf (sampleModel, java.awt.image.SinglePixelPackedSampleModel)) {
+var sppsm = sampleModel;
+this.scanlineStride = sppsm.getScanlineStride ();
+this.pixelStride = 1;
+this.dataOffsets =  Clazz_newIntArray (1, 0);
+this.dataOffsets[0] = dbi.getOffset ();
+this.bandOffset = this.dataOffsets[0];
+var xOffset = aRegion.x - origin.x;
+var yOffset = aRegion.y - origin.y;
+this.dataOffsets[0] += xOffset + yOffset * this.scanlineStride;
+this.numDataElems = sppsm.getNumDataElements ();
+} else {
+throw  new java.awt.image.RasterFormatException ("IntegerInterleavedRasters must have SinglePixelPackedSampleModel");
+}this.verify ();
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,jssun.awt.image.IntegerInterleavedRaster");
+Clazz_overrideMethod (c$, "getDataOffsets", 
+function () {
+return this.dataOffsets.clone ();
+});
+Clazz_overrideMethod (c$, "getDataOffset", 
+function (band) {
+return this.dataOffsets[band];
+}, "~N");
+Clazz_overrideMethod (c$, "getScanlineStride", 
+function () {
+return this.scanlineStride;
+});
+Clazz_overrideMethod (c$, "getPixelStride", 
+function () {
+return this.pixelStride;
+});
+Clazz_overrideMethod (c$, "getDataStorage", 
+function () {
+return this.data;
+});
+Clazz_defineMethod (c$, "getDataElements", 
+function (x, y, obj) {
+if ((x < this.minX) || (y < this.minY) || (x >= this.$maxX) || (y >= this.$maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var outData;
+if (obj == null) {
+outData =  Clazz_newIntArray (1, 0);
+} else {
+outData = obj;
+}var off = (y - this.minY) * this.scanlineStride + (x - this.minX) + this.dataOffsets[0];
+outData[0] = this.data[off];
+return outData;
+}, "~N,~N,~O");
+Clazz_defineMethod (c$, "getDataElements", 
+function (x, y, w, h, obj) {
+if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var outData;
+if (Clazz_instanceOf (obj, Array)) {
+outData = obj;
+} else {
+outData =  Clazz_newIntArray (w * h, 0);
+}var yoff = (y - this.minY) * this.scanlineStride + (x - this.minX) + this.dataOffsets[0];
+var off = 0;
+for (var ystart = 0; ystart < h; ystart++) {
+System.arraycopy (this.data, yoff, outData, off, w);
+off += w;
+yoff += this.scanlineStride;
+}
+return outData;
+}, "~N,~N,~N,~N,~O");
+Clazz_defineMethod (c$, "setDataElements", 
+function (x, y, obj) {
+if ((x < this.minX) || (y < this.minY) || (x >= this.$maxX) || (y >= this.$maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var inData = obj;
+var off = (y - this.minY) * this.scanlineStride + (x - this.minX) + this.dataOffsets[0];
+this.data[off] = inData[0];
+this.markDirty ();
+}, "~N,~N,~O");
+Clazz_defineMethod (c$, "setDataElements", 
+function (x, y, inRaster) {
+var dstOffX = x + inRaster.getMinX ();
+var dstOffY = y + inRaster.getMinY ();
+var width = inRaster.getWidth ();
+var height = inRaster.getHeight ();
+if ((dstOffX < this.minX) || (dstOffY < this.minY) || (dstOffX + width > this.$maxX) || (dstOffY + height > this.$maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}this.setDataElements (dstOffX, dstOffY, width, height, inRaster);
+}, "~N,~N,java.awt.image.Raster");
+Clazz_defineMethod (c$, "setDataElements", 
+ function (dstX, dstY, width, height, inRaster) {
+if (width <= 0 || height <= 0) {
+return;
+}var srcOffX = inRaster.getMinX ();
+var srcOffY = inRaster.getMinY ();
+var tdata = null;
+if (Clazz_instanceOf (inRaster, jssun.awt.image.IntegerInterleavedRaster)) {
+var ict = inRaster;
+tdata = ict.getDataStorage ();
+var tss = ict.getScanlineStride ();
+var toff = ict.getDataOffset (0);
+var srcOffset = toff;
+var dstOffset = this.dataOffsets[0] + (dstY - this.minY) * this.scanlineStride + (dstX - this.minX);
+for (var startY = 0; startY < height; startY++) {
+System.arraycopy (tdata, srcOffset, this.data, dstOffset, width);
+srcOffset += tss;
+dstOffset += this.scanlineStride;
+}
+this.markDirty ();
+return;
+}var odata = null;
+for (var startY = 0; startY < height; startY++) {
+odata = inRaster.getDataElements (srcOffX, srcOffY + startY, width, 1, odata);
+this.setDataElements (dstX, dstY + startY, width, 1, odata);
+}
+}, "~N,~N,~N,~N,java.awt.image.Raster");
+Clazz_defineMethod (c$, "setDataElements", 
+function (x, y, w, h, obj) {
+if ((x < this.minX) || (y < this.minY) || (x + w > this.$maxX) || (y + h > this.$maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var inData = obj;
+var yoff = (y - this.minY) * this.scanlineStride + (x - this.minX) + this.dataOffsets[0];
+var off = 0;
+for (var ystart = 0; ystart < h; ystart++) {
+System.arraycopy (inData, off, this.data, yoff, w);
+off += w;
+yoff += this.scanlineStride;
+}
+this.markDirty ();
+}, "~N,~N,~N,~N,~O");
+Clazz_overrideMethod (c$, "createWritableChild", 
+function (x, y, width, height, x0, y0, bandList) {
+if (x < this.minX) {
+throw  new java.awt.image.RasterFormatException ("x lies outside raster");
+}if (y < this.minY) {
+throw  new java.awt.image.RasterFormatException ("y lies outside raster");
+}if ((x + width < x) || (x + width > this.minX + this.width)) {
+throw  new java.awt.image.RasterFormatException ("(x + width) is outside raster");
+}if ((y + height < y) || (y + height > this.minY + this.height)) {
+throw  new java.awt.image.RasterFormatException ("(y + height) is outside raster");
+}var sm;
+if (bandList != null) sm = this.sampleModel.createSubsetSampleModel (bandList);
+ else sm = this.sampleModel;
+var deltaX = x0 - x;
+var deltaY = y0 - y;
+return  new jssun.awt.image.IntegerInterleavedRaster (sm, this.dataBuffer,  new java.awt.Rectangle (x0, y0, width, height),  new java.awt.Point (this.sampleModelTranslateX + deltaX, this.sampleModelTranslateY + deltaY), this);
+}, "~N,~N,~N,~N,~N,~N,~A");
+Clazz_overrideMethod (c$, "createChild", 
+function (x, y, width, height, x0, y0, bandList) {
+return this.createWritableChild (x, y, width, height, x0, y0, bandList);
+}, "~N,~N,~N,~N,~N,~N,~A");
+Clazz_defineMethod (c$, "createCompatibleWritableRaster", 
+function (w, h) {
+if (w <= 0 || h <= 0) {
+throw  new java.awt.image.RasterFormatException ("negative " + ((w <= 0) ? "width" : "height"));
+}var sm = this.sampleModel.createCompatibleSampleModel (w, h);
+return  new jssun.awt.image.IntegerInterleavedRaster (sm,  new java.awt.Point (0, 0));
+}, "~N,~N");
+Clazz_defineMethod (c$, "createCompatibleWritableRaster", 
+function () {
+return this.createCompatibleWritableRaster (this.width, this.height);
+});
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return  String.instantialize ("IntegerInterleavedRaster: width = " + this.width + " height = " + this.height + " #Bands = " + this.numBands + " xOff = " + this.sampleModelTranslateX + " yOff = " + this.sampleModelTranslateY + " dataOffset[0] " + this.dataOffsets[0]);
+});
+});
+Clazz_declarePackage ("jssun.awt.image");
+Clazz_load (["jssun.awt.image.SunWritableRaster"], "jssun.awt.image.IntegerComponentRaster", ["java.lang.ArrayIndexOutOfBoundsException", "java.awt.Point", "$.Rectangle", "java.awt.image.DataBufferInt", "$.RasterFormatException", "$.SinglePixelPackedSampleModel"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.bandOffset = 0;
+this.dataOffsets = null;
+this.scanlineStride = 0;
+this.pixelStride = 0;
+this.data = null;
+this.numDataElems = 0;
+this.type = 0;
+this.maxX = 0;
+this.maxY = 0;
+Clazz_instantialize (this, arguments);
+}, jssun.awt.image, "IntegerComponentRaster", jssun.awt.image.SunWritableRaster);
+Clazz_makeConstructor (c$, 
+function (sampleModel, origin) {
+Clazz_superConstructor (this, jssun.awt.image.IntegerComponentRaster, []);
+this.setIntCompRaster (sampleModel, sampleModel.createDataBuffer (),  new java.awt.Rectangle (origin.x, origin.y, sampleModel.getWidth (), sampleModel.getHeight ()), origin, null);
+}, "java.awt.image.SampleModel,java.awt.Point");
+Clazz_makeConstructor (c$, 
+function (sampleModel, dataBuffer, origin) {
+Clazz_superConstructor (this, jssun.awt.image.IntegerComponentRaster, []);
+this.setIntCompRaster (sampleModel, dataBuffer,  new java.awt.Rectangle (origin.x, origin.y, sampleModel.getWidth (), sampleModel.getHeight ()), origin, null);
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jssun.awt.image.IntegerComponentRaster, []);
+});
+Clazz_makeConstructor (c$, 
+function (sampleModel, dataBuffer, aRegion, origin, parent) {
+Clazz_superConstructor (this, jssun.awt.image.IntegerComponentRaster, []);
+this.setIntCompRaster (sampleModel, dataBuffer, aRegion, origin, parent);
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,java.awt.image.Raster");
+Clazz_defineMethod (c$, "setIntCompRaster", 
+function (sampleModel, dataBuffer, aRegion, origin, parent) {
+this.setSunRaster (sampleModel, dataBuffer, aRegion, origin, parent);
+this.maxX = this.minX + this.width;
+this.maxY = this.minY + this.height;
+if (!(Clazz_instanceOf (dataBuffer, java.awt.image.DataBufferInt))) {
+throw  new java.awt.image.RasterFormatException ("IntegerComponentRasters must haveinteger DataBuffers");
+}var dbi = dataBuffer;
+if (dbi.getNumBanks () != 1) {
+throw  new java.awt.image.RasterFormatException ("DataBuffer for IntegerComponentRasters must only have 1 bank.");
+}this.data = jssun.awt.image.SunWritableRaster.stealData (dbi, 0);
+if (Clazz_instanceOf (sampleModel, java.awt.image.SinglePixelPackedSampleModel)) {
+var sppsm = sampleModel;
+var boffsets = sppsm.getBitOffsets ();
+var notByteBoundary = false;
+for (var i = 1; i < boffsets.length; i++) {
+if ((boffsets[i] % 8) != 0) {
+notByteBoundary = true;
+}}
+this.type = (notByteBoundary ? 9 : 10);
+this.scanlineStride = sppsm.getScanlineStride ();
+this.pixelStride = 1;
+this.dataOffsets =  Clazz_newIntArray (1, 0);
+this.dataOffsets[0] = dbi.getOffset ();
+this.bandOffset = this.dataOffsets[0];
+var xOffset = aRegion.x - origin.x;
+var yOffset = aRegion.y - origin.y;
+this.dataOffsets[0] += xOffset + yOffset * this.scanlineStride;
+this.numDataElems = sppsm.getNumDataElements ();
+} else {
+throw  new java.awt.image.RasterFormatException ("IntegerComponentRasters must have SinglePixelPackedSampleModel");
+}this.verify ();
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,java.awt.image.Raster");
+Clazz_defineMethod (c$, "getDataOffsets", 
+function () {
+return this.dataOffsets.clone ();
+});
+Clazz_defineMethod (c$, "getDataOffset", 
+function (band) {
+return this.dataOffsets[band];
+}, "~N");
+Clazz_defineMethod (c$, "getScanlineStride", 
+function () {
+return this.scanlineStride;
+});
+Clazz_defineMethod (c$, "getPixelStride", 
+function () {
+return this.pixelStride;
+});
+Clazz_defineMethod (c$, "getDataStorage", 
+function () {
+return this.data;
+});
+Clazz_defineMethod (c$, "getDataElements", 
+function (x, y, obj) {
+if ((x < this.minX) || (y < this.minY) || (x >= this.maxX) || (y >= this.maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var outData;
+if (obj == null) {
+outData =  Clazz_newIntArray (this.numDataElements, 0);
+} else {
+outData = obj;
+}var off = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;
+for (var band = 0; band < this.numDataElements; band++) {
+outData[band] = this.data[this.dataOffsets[band] + off];
+}
+return outData;
+}, "~N,~N,~O");
+Clazz_defineMethod (c$, "getDataElements", 
+function (x, y, w, h, obj) {
+if ((x < this.minX) || (y < this.minY) || (x + w > this.maxX) || (y + h > this.maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var outData;
+if (Clazz_instanceOf (obj, Array)) {
+outData = obj;
+} else {
+outData =  Clazz_newIntArray (this.numDataElements * w * h, 0);
+}var yoff = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;
+var xoff;
+var off = 0;
+var xstart;
+var ystart;
+for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
+xoff = yoff;
+for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
+for (var c = 0; c < this.numDataElements; c++) {
+outData[off++] = this.data[this.dataOffsets[c] + xoff];
+}
+}
+}
+return outData;
+}, "~N,~N,~N,~N,~O");
+Clazz_defineMethod (c$, "setDataElements", 
+function (x, y, obj) {
+if ((x < this.minX) || (y < this.minY) || (x >= this.maxX) || (y >= this.maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var inData = obj;
+var off = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;
+for (var i = 0; i < this.numDataElements; i++) {
+this.data[this.dataOffsets[i] + off] = inData[i];
+}
+this.markDirty ();
+}, "~N,~N,~O");
+Clazz_overrideMethod (c$, "setDataElementsRaster", 
+function (x, y, inRaster) {
+var dstOffX = x + inRaster.getMinX ();
+var dstOffY = y + inRaster.getMinY ();
+var width = inRaster.getWidth ();
+var height = inRaster.getHeight ();
+if ((dstOffX < this.minX) || (dstOffY < this.minY) || (dstOffX + width > this.maxX) || (dstOffY + height > this.maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}this.setDataElementsRaster4 (dstOffX, dstOffY, width, height, inRaster);
+}, "~N,~N,java.awt.image.Raster");
+Clazz_defineMethod (c$, "setDataElementsRaster4", 
+ function (dstX, dstY, width, height, inRaster) {
+if (width <= 0 || height <= 0) {
+return;
+}var srcOffX = inRaster.getMinX ();
+var srcOffY = inRaster.getMinY ();
+var tdata = null;
+if (Clazz_instanceOf (inRaster, jssun.awt.image.IntegerComponentRaster) && (this.pixelStride == 1) && (this.numDataElements == 1)) {
+var ict = inRaster;
+if (ict.getNumDataElements () != 1) {
+throw  new ArrayIndexOutOfBoundsException ("Number of bands does not match");
+}tdata = ict.getDataStorage ();
+var tss = ict.getScanlineStride ();
+var toff = ict.getDataOffset (0);
+var srcOffset = toff;
+var dstOffset = this.dataOffsets[0] + (dstY - this.minY) * this.scanlineStride + (dstX - this.minX);
+if (ict.getPixelStride () == this.pixelStride) {
+width *= this.pixelStride;
+for (var startY = 0; startY < height; startY++) {
+System.arraycopy (tdata, srcOffset, this.data, dstOffset, width);
+srcOffset += tss;
+dstOffset += this.scanlineStride;
+}
+this.markDirty ();
+return;
+}}var odata = null;
+for (var startY = 0; startY < height; startY++) {
+odata = inRaster.getDataElements (srcOffX, srcOffY + startY, width, 1, odata);
+this.setDataElements (dstX, dstY + startY, width, 1, odata);
+}
+}, "~N,~N,~N,~N,java.awt.image.Raster");
+Clazz_defineMethod (c$, "setDataElements", 
+function (x, y, w, h, obj) {
+if ((x < this.minX) || (y < this.minY) || (x + w > this.maxX) || (y + h > this.maxY)) {
+throw  new ArrayIndexOutOfBoundsException ("Coordinate out of bounds!");
+}var inData = obj;
+var yoff = (y - this.minY) * this.scanlineStride + (x - this.minX) * this.pixelStride;
+var xoff;
+var off = 0;
+var xstart;
+var ystart;
+for (ystart = 0; ystart < h; ystart++, yoff += this.scanlineStride) {
+xoff = yoff;
+for (xstart = 0; xstart < w; xstart++, xoff += this.pixelStride) {
+for (var c = 0; c < this.numDataElements; c++) {
+this.data[this.dataOffsets[c] + xoff] = inData[off++];
+}
+}
+}
+this.markDirty ();
+}, "~N,~N,~N,~N,~O");
+Clazz_overrideMethod (c$, "createWritableChild", 
+function (x, y, width, height, x0, y0, bandList) {
+if (x < this.minX) {
+throw  new java.awt.image.RasterFormatException ("x lies outside raster");
+}if (y < this.minY) {
+throw  new java.awt.image.RasterFormatException ("y lies outside raster");
+}if ((x + width < x) || (x + width > this.minX + this.width)) {
+throw  new java.awt.image.RasterFormatException ("(x + width) is outside raster");
+}if ((y + height < y) || (y + height > this.minY + this.height)) {
+throw  new java.awt.image.RasterFormatException ("(y + height) is outside raster");
+}var sm;
+if (bandList != null) sm = this.sampleModel.createSubsetSampleModel (bandList);
+ else sm = this.sampleModel;
+var deltaX = x0 - x;
+var deltaY = y0 - y;
+return  new jssun.awt.image.IntegerComponentRaster (sm, this.dataBuffer,  new java.awt.Rectangle (x0, y0, width, height),  new java.awt.Point (this.sampleModelTranslateX + deltaX, this.sampleModelTranslateY + deltaY), this);
+}, "~N,~N,~N,~N,~N,~N,~A");
+Clazz_overrideMethod (c$, "createChild", 
+function (x, y, width, height, x0, y0, bandList) {
+return this.createWritableChild (x, y, width, height, x0, y0, bandList);
+}, "~N,~N,~N,~N,~N,~N,~A");
+Clazz_defineMethod (c$, "createCompatibleWritableRaster", 
+function (w, h) {
+if (w <= 0 || h <= 0) {
+throw  new java.awt.image.RasterFormatException ("negative " + ((w <= 0) ? "width" : "height"));
+}var sm = this.sampleModel.createCompatibleSampleModel (w, h);
+return  new jssun.awt.image.IntegerComponentRaster (sm,  new java.awt.Point (0, 0));
+}, "~N,~N");
+Clazz_defineMethod (c$, "createCompatibleWritableRaster", 
+function () {
+return this.createCompatibleWritableRaster (this.width, this.height);
+});
+Clazz_defineMethod (c$, "verify", 
+function () {
+if (this.width <= 0 || this.height <= 0 || this.height > (Clazz_doubleToInt (2147483647 / this.width))) {
+throw  new java.awt.image.RasterFormatException ("Invalid raster dimension");
+}if (this.dataOffsets[0] < 0) {
+throw  new java.awt.image.RasterFormatException ("Data offset (" + this.dataOffsets[0] + ") must be >= 0");
+}if (this.minX - this.sampleModelTranslateX < 0 || this.minY - this.sampleModelTranslateY < 0) {
+throw  new java.awt.image.RasterFormatException ("Incorrect origin/translate: (" + this.minX + ", " + this.minY + ") / (" + this.sampleModelTranslateX + ", " + this.sampleModelTranslateY + ")");
+}if (this.scanlineStride < 0 || this.scanlineStride > (Clazz_doubleToInt (2147483647 / this.height))) {
+throw  new java.awt.image.RasterFormatException ("Incorrect scanline stride: " + this.scanlineStride);
+}if (this.height > 1 || this.minY - this.sampleModelTranslateY > 0) {
+if (this.scanlineStride > this.data.length) {
+throw  new java.awt.image.RasterFormatException ("Incorrect scanline stride: " + this.scanlineStride);
+}}var lastScanOffset = (this.height - 1) * this.scanlineStride;
+if (this.pixelStride < 0 || this.pixelStride > (Clazz_doubleToInt (2147483647 / this.width)) || this.pixelStride > this.data.length) {
+throw  new java.awt.image.RasterFormatException ("Incorrect pixel stride: " + this.pixelStride);
+}var lastPixelOffset = (this.width - 1) * this.pixelStride;
+if (lastPixelOffset > (2147483647 - lastScanOffset)) {
+throw  new java.awt.image.RasterFormatException ("Incorrect raster attributes");
+}lastPixelOffset += lastScanOffset;
+var index;
+var maxIndex = 0;
+for (var i = 0; i < this.numDataElements; i++) {
+if (this.dataOffsets[i] > (2147483647 - lastPixelOffset)) {
+throw  new java.awt.image.RasterFormatException ("Incorrect band offset: " + this.dataOffsets[i]);
+}index = lastPixelOffset + this.dataOffsets[i];
+if (index > maxIndex) {
+maxIndex = index;
+}}
+if (this.data.length <= maxIndex) {
+throw  new java.awt.image.RasterFormatException ("Data array too small (should be > " + maxIndex + " )");
+}});
+Clazz_overrideMethod (c$, "toString", 
+function () {
+return  String.instantialize ("IntegerComponentRaster: width = " + this.width + " height = " + this.height + " #Bands = " + this.numBands + " #DataElements " + this.numDataElements + " xOff = " + this.sampleModelTranslateX + " yOff = " + this.sampleModelTranslateY + " dataOffset[0] " + this.dataOffsets[0]);
+});
+Clazz_defineStatics (c$,
+"TYPE_CUSTOM", 0,
+"TYPE_BYTE_SAMPLES", 1,
+"TYPE_USHORT_SAMPLES", 2,
+"TYPE_INT_SAMPLES", 3,
+"TYPE_BYTE_BANDED_SAMPLES", 4,
+"TYPE_USHORT_BANDED_SAMPLES", 5,
+"TYPE_INT_BANDED_SAMPLES", 6,
+"TYPE_BYTE_PACKED_SAMPLES", 7,
+"TYPE_USHORT_PACKED_SAMPLES", 8,
+"TYPE_INT_PACKED_SAMPLES", 9,
+"TYPE_INT_8BIT_SAMPLES", 10,
+"TYPE_BYTE_BINARY_SAMPLES", 11);
+});
+Clazz_declarePackage ("jssun.awt.image");
+Clazz_load (["java.awt.image.WritableRaster", "jssun.awt.image.DataStealer"], "jssun.awt.image.SunWritableRaster", ["jssun.java2d.StateTrackable", "$.StateTrackableDelegate"], function () {
+c$ = Clazz_decorateAsClass (function () {
+this.theTrackable = null;
+Clazz_instantialize (this, arguments);
+}, jssun.awt.image, "SunWritableRaster", java.awt.image.WritableRaster);
+c$.getStealer = Clazz_defineMethod (c$, "getStealer", 
+ function () {
+return (jssun.awt.image.SunWritableRaster.stealer == null ? jssun.awt.image.SunWritableRaster.stealer = ((Clazz_isClassDefined ("jssun.awt.image.SunWritableRaster$1") ? 0 : jssun.awt.image.SunWritableRaster.$SunWritableRaster$1$ ()), Clazz_innerTypeInstance (jssun.awt.image.SunWritableRaster$1, this, null)) : jssun.awt.image.SunWritableRaster.stealer);
+});
+c$.stealData = Clazz_defineMethod (c$, "stealData", 
+function (dbb, bank) {
+return jssun.awt.image.SunWritableRaster.getStealer ().getData (dbb, bank);
+}, "java.awt.image.DataBufferByte,~N");
+c$.stealData = Clazz_defineMethod (c$, "stealData", 
+function (dbi, bank) {
+return jssun.awt.image.SunWritableRaster.getStealer ().getData (dbi, bank);
+}, "java.awt.image.DataBufferInt,~N");
+c$.stealTrackable = Clazz_defineMethod (c$, "stealTrackable", 
+function (db) {
+return jssun.awt.image.SunWritableRaster.getStealer ().getTrackable (db);
+}, "java.awt.image.DataBuffer");
+c$.setTrackable = Clazz_defineMethod (c$, "setTrackable", 
+function (db, trackable) {
+jssun.awt.image.SunWritableRaster.getStealer ().setTrackable (db, trackable);
+}, "java.awt.image.DataBuffer,jssun.java2d.StateTrackableDelegate");
+c$.makeTrackable = Clazz_defineMethod (c$, "makeTrackable", 
+function (db) {
+jssun.awt.image.SunWritableRaster.getStealer ().setTrackable (db, jssun.java2d.StateTrackableDelegate.createInstance (jssun.java2d.StateTrackable.State.STABLE));
+}, "java.awt.image.DataBuffer");
+c$.markDirty = Clazz_defineMethod (c$, "markDirty", 
+function (db) {
+jssun.awt.image.SunWritableRaster.getStealer ().getTrackable (db).markDirty ();
+}, "java.awt.image.DataBuffer");
+c$.markDirty = Clazz_defineMethod (c$, "markDirty", 
+function (wr) {
+if (Clazz_instanceOf (wr, jssun.awt.image.SunWritableRaster)) {
+(wr).markDirty ();
+} else {
+jssun.awt.image.SunWritableRaster.markDirty (wr.getDataBuffer ());
+}}, "java.awt.image.WritableRaster");
+Clazz_makeConstructor (c$, 
+function (sampleModel, origin) {
+Clazz_superConstructor (this, jssun.awt.image.SunWritableRaster, [sampleModel, origin]);
+this.theTrackable = jssun.awt.image.SunWritableRaster.stealTrackable (this.dataBuffer);
+}, "java.awt.image.SampleModel,java.awt.Point");
+Clazz_makeConstructor (c$, 
+function (sampleModel, dataBuffer, origin) {
+Clazz_superConstructor (this, jssun.awt.image.SunWritableRaster, [sampleModel, dataBuffer, origin]);
+this.theTrackable = jssun.awt.image.SunWritableRaster.stealTrackable (dataBuffer);
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");
+Clazz_makeConstructor (c$, 
+function () {
+Clazz_superConstructor (this, jssun.awt.image.SunWritableRaster, []);
+});
+Clazz_makeConstructor (c$, 
+function (sampleModel, dataBuffer, aRegion, sampleModelTranslate, parent) {
+Clazz_superConstructor (this, jssun.awt.image.SunWritableRaster, []);
+this.setSunRaster (sampleModel, dataBuffer, aRegion, sampleModelTranslate, parent);
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,java.awt.image.Raster");
+Clazz_defineMethod (c$, "setSunRaster", 
+function (sampleModel, dataBuffer, aRegion, sampleModelTranslate, parent) {
+this.setRaster (sampleModel, dataBuffer, aRegion, sampleModelTranslate, parent);
+this.theTrackable = jssun.awt.image.SunWritableRaster.stealTrackable (dataBuffer);
+}, "java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,java.awt.image.Raster");
+Clazz_defineMethod (c$, "markDirty", 
+function () {
+this.theTrackable.markDirty ();
+});
+c$.$SunWritableRaster$1$ = function () {
+Clazz_pu$h(self.c$);
+c$ = Clazz_declareAnonymous (jssun.awt.image, "SunWritableRaster$1", null, jssun.awt.image.DataStealer);
+Clazz_defineMethod (c$, "getData", 
+function (dbb, bank) {
+return dbb.bankdata[bank];
+}, "java.awt.image.DataBufferByte,~N");
+Clazz_defineMethod (c$, "getData", 
+function (dbi, bank) {
+return dbi.bankdata[bank];
+}, "java.awt.image.DataBufferInt,~N");
+Clazz_defineMethod (c$, "getTrackable", 
+function (db) {
+return db.theTrackable;
+}, "java.awt.image.DataBuffer");
+Clazz_defineMethod (c$, "setTrackable", 
+function (db, trackable) {
+db.theTrackable = trackable;
+}, "java.awt.image.DataBuffer,jssun.java2d.StateTrackableDelegate");
+c$ = Clazz_p0p ();
+};
+Clazz_defineStatics (c$,
+"stealer", null);
+});
+Clazz_declarePackage ("jssun.awt.image");
+Clazz_declareInterface (jssun.awt.image, "DataStealer");
+})(Clazz
+,Clazz.getClassName
+,Clazz.newLongArray
+,Clazz.doubleToByte
+,Clazz.doubleToInt
+,Clazz.doubleToLong
+,Clazz.declarePackage
+,Clazz.instanceOf
+,Clazz.load
+,Clazz.instantialize
+,Clazz.decorateAsClass
+,Clazz.floatToInt
+,Clazz.floatToLong
+,Clazz.makeConstructor
+,Clazz.defineEnumConstant
+,Clazz.exceptionOf
+,Clazz.newIntArray
+,Clazz.defineStatics
+,Clazz.newFloatArray
+,Clazz.declareType
+,Clazz.prepareFields
+,Clazz.superConstructor
+,Clazz.newByteArray
+,Clazz.declareInterface
+,Clazz.p0p
+,Clazz.pu$h
+,Clazz.newShortArray
+,Clazz.innerTypeInstance
+,Clazz.isClassDefined
+,Clazz.prepareCallback
+,Clazz.newArray
+,Clazz.castNullAs
+,Clazz.floatToShort
+,Clazz.superCall
+,Clazz.decorateAsType
+,Clazz.newBooleanArray
+,Clazz.newCharArray
+,Clazz.implementOf
+,Clazz.newDoubleArray
+,Clazz.overrideConstructor
+,Clazz.clone
+,Clazz.doubleToShort
+,Clazz.getInheritedLevel
+,Clazz.getParamsType
+,Clazz.isAF
+,Clazz.isAI
+,Clazz.isAS
+,Clazz.isASS
+,Clazz.isAP
+,Clazz.isAFloat
+,Clazz.isAII
+,Clazz.isAFF
+,Clazz.isAFFF
+,Clazz.tryToSearchAndExecute
+,Clazz.getStackTrace
+,Clazz.inheritArgs
+,Clazz.alert
+,Clazz.defineMethod
+,Clazz.overrideMethod
+,Clazz.declareAnonymous
+,Clazz.checkPrivateMethod
+,Clazz.cloneFinals
+);
diff --git a/site/j2s/core/corejalview.z.js b/site/j2s/core/corejalview.z.js
new file mode 100644 (file)
index 0000000..0b589d4
--- /dev/null
@@ -0,0 +1,3597 @@
+(function(W,ja,ea,fa,F,Z,p,v,q,r,s,I,ka,m,R,y,w,G,Q,B,J,t,S,M,z,A,ga,C,H,O,E,ha,Y,K,la,X,N,ma,U,na,oa,pa,qa,ra,sa,ta,ua,va,wa,xa,ya,za,Aa,Ba,Ca,$,Da,d,e,L,ia,T){q(["java.io.Reader"],"java.io.InputStreamReader",["java.lang.NullPointerException"],function(){c$=s(function(){this.$in=null;this.isOpen=!0;this.charsetName=null;this.isUTF8=!1;this.bytearr=null;this.pos=0;r(this,arguments)},java.io,"InputStreamReader",java.io.Reader);m(c$,function(a){this.$in=a;var b=1<arguments.length?arguments[1]:"UTF-8";
+this.charsetName=b;if(!(this.isUTF8="UTF-8".equals(b))&&!"ISO-8859-1".equals(b))throw new NullPointerException("charsetName");},"java.io.InputStream");d(c$,"getEncoding",function(){return this.charsetName});e(c$,"read",function(a,b,c){if(null==this.bytearr||this.bytearr.length<c)this.bytearr=S(c,0);var f,l,d=0,g=b,h=this.$in.read(this.bytearr,this.pos,c-this.pos),j=this.$in.available();if(0>h)return-1;for(var e=h;d<e;){c=this.bytearr[d]&255;if(this.isUTF8)switch(c>>4){case 12:case 13:if(d+1>=h){if(1<=
+j){e=d;continue}}else if(128==((f=this.bytearr[d+1])&192)){a[g++]=String.fromCharCode((c&31)<<6|f&63);d+=2;continue}this.isUTF8=!1;break;case 14:if(d+2>=h){if(2<=j){e=d;continue}}else if(128==((f=this.bytearr[d+1])&192)&&128==((l=this.bytearr[d+2])&192)){a[g++]=String.fromCharCode((c&15)<<12|(f&63)<<6|l&63);d+=3;continue}this.isUTF8=!1}d++;a[g++]=String.fromCharCode(c)}this.pos=h-d;for(a=0;a<this.pos;a++)this.bytearr[a]=this.bytearr[d++];return g-b},"~A,~N,~N");e(c$,"ready",function(){return this.isOpen});
+e(c$,"close",function(){this.$in.close();this.isOpen=!1})});p("javax.swing.text");q("java.awt.event.FocusListener $.MouseListener javax.swing.ActionMap $.InputMap $.JComponent $.Scrollable javax.swing.event.CaretEvent $.ChangeListener javax.swing.text.Keymap javax.swing.DropMode".split(" "),"javax.swing.text.JTextComponent","java.io.IOException java.lang.Boolean $.Character $.IllegalArgumentException java.util.HashMap $.Hashtable $.Vector java.awt.Point javax.swing.Action $.JViewport $.UIManager javax.swing.event.CaretListener javax.swing.text.DefaultEditorKit $.JSMinimalAbstractDocument jssun.awt.AppContext swingjs.JSToolkit".split(" "),
+function(){c$=s(function(){this.disabledTextColor=this.selectedTextColor=this.selectionColor=this.caretColor=this.caretEvent=this.keymap=this.highlighter=this.navigationFilter=this.caret=this.model=null;this.editable=!1;this.margin=null;this.focusAccelerator="\x00";this.dragEnabled=!1;this.composedTextEnd=this.composedTextStart=this.composedTextContent=this.composedTextAttribute=this.dropMode=null;r(this,arguments)},javax.swing.text,"JTextComponent",javax.swing.JComponent,javax.swing.Scrollable);
+J(c$,function(){this.dropMode=javax.swing.DropMode.USE_SELECTION});m(c$,function(){t(this,javax.swing.text.JTextComponent);this.enableEvents(2056);this.caretEvent=new javax.swing.text.JTextComponent.MutableCaretEvent(this);this.addMouseListener(this.caretEvent);this.addFocusListener(this.caretEvent);this.setEditable(!0);this.setDragEnabled(!1);this.setLayout(null);this.updateUI()});e(c$,"getUI",function(){return this.ui});e(c$,"updateUI",function(){this.setUI(javax.swing.UIManager.getUI(this));this.invalidate()});
+d(c$,"addCaretListener",function(a){this.listenerList.add(javax.swing.event.CaretListener,a)},"javax.swing.event.CaretListener");d(c$,"removeCaretListener",function(a){this.listenerList.remove(javax.swing.event.CaretListener,a)},"javax.swing.event.CaretListener");d(c$,"getCaretListeners",function(){return this.listenerList.getListeners(javax.swing.event.CaretListener)});d(c$,"fireCaretUpdate",function(a){for(var b=this.listenerList.getListenerList(),c=b.length-2;0<=c;c-=2)b[c]===javax.swing.event.CaretListener&&
+b[c+1].caretUpdate(a)},"javax.swing.event.CaretEvent");d(c$,"setDocument",function(a){var b=this.model;this.model=a;this.firePropertyChangeObject("document",b,a);this.revalidate();this.repaint()},"javax.swing.text.Document");d(c$,"getDocument",function(){return this.model});d(c$,"getActions",function(){return null==this.getUI()?null:this.getUI().getEditorKit(this).getActions()});d(c$,"setMargin",function(a){var b=this.margin;this.margin=a;this.firePropertyChangeObject("margin",b,a);this.invalidate()},
+"java.awt.Insets");d(c$,"getMargin",function(){return this.margin});d(c$,"setNavigationFilter",function(a){this.navigationFilter=a},"javax.swing.text.NavigationFilter");d(c$,"getNavigationFilter",function(){return this.navigationFilter});d(c$,"getCaret",function(){return this.caret});d(c$,"setCaret",function(a){null!=this.caret&&(this.caret.removeChangeListener(this.caretEvent),this.caret.deinstall(this));var b=this.caret;this.caret=a;null!=this.caret&&(this.caret.install(this),this.caret.addChangeListener(this.caretEvent));
+this.firePropertyChangeObject("caret",b,this.caret)},"javax.swing.text.Caret");d(c$,"getHighlighter",function(){return this.highlighter});d(c$,"setHighlighter",function(a){null!=this.highlighter&&this.highlighter.deinstall(this);var b=this.highlighter;this.highlighter=a;null!=this.highlighter&&this.highlighter.install(this);this.firePropertyChangeObject("highlighter",b,a)},"javax.swing.text.Highlighter");d(c$,"setKeymap",function(a){var b=this.keymap;this.keymap=a;this.firePropertyChangeObject("keymap",
+b,this.keymap);this.updateInputMap(b,a)},"javax.swing.text.Keymap");d(c$,"setDragEnabled",function(a){this.dragEnabled=a},"~B");d(c$,"getDragEnabled",function(){return this.dragEnabled});d(c$,"setDropMode",function(a){if(null!=a)switch(a){case javax.swing.DropMode.USE_SELECTION:case javax.swing.DropMode.INSERT:this.dropMode=a;return}throw new IllegalArgumentException(a+": Unsupported drop mode for text");},"javax.swing.DropMode");d(c$,"getDropMode",function(){return this.dropMode});d(c$,"updateInputMap",
+function(a,b){for(var c=this.getInputMap(0),f=c;null!=c&&!v(c,javax.swing.text.JTextComponent.KeymapWrapper);)f=c,c=c.getParent();if(null!=c)if(null==b)f!==c?f.setParent(c.getParent()):f.setParent(null);else{var l=new javax.swing.text.JTextComponent.KeymapWrapper(b);f.setParent(l);f!==c&&l.setParent(c.getParent())}else null!=b&&(c=this.getInputMap(0),null!=c&&(l=new javax.swing.text.JTextComponent.KeymapWrapper(b),l.setParent(c.getParent()),c.setParent(l)));for(f=c=this.getActionMap();null!=c&&!v(c,
+javax.swing.text.JTextComponent.KeymapActionMap);)f=c,c=c.getParent();null!=c?null==b?f!==c?f.setParent(c.getParent()):f.setParent(null):(l=new javax.swing.text.JTextComponent.KeymapActionMap(b),f.setParent(l),f!==c&&l.setParent(c.getParent())):null!=b&&(c=this.getActionMap(),null!=c&&(l=new javax.swing.text.JTextComponent.KeymapActionMap(b),l.setParent(c.getParent()),c.setParent(l)))},"javax.swing.text.Keymap,javax.swing.text.Keymap");d(c$,"getKeymap",function(){return this.keymap});c$.addKeymap=
+d(c$,"addKeymap",function(a,b){var c=new javax.swing.text.JTextComponent.DefaultKeymap(a,b);null!=a&&javax.swing.text.JTextComponent.getKeymapTable().put(a,c);return c},"~S,javax.swing.text.Keymap");c$.removeKeymap=d(c$,"removeKeymap",function(a){return javax.swing.text.JTextComponent.getKeymapTable().remove(a)},"~S");c$.getKeymap=d(c$,"getKeymap",function(a){return javax.swing.text.JTextComponent.getKeymapTable().get(a)},"~S");c$.getKeymapTable=d(c$,"getKeymapTable",function(){var a=jssun.awt.AppContext.getAppContext(),
+b=a.get(javax.swing.text.JTextComponent.KEYMAP_TABLE);null==b&&(b=new java.util.HashMap(17),a.put(javax.swing.text.JTextComponent.KEYMAP_TABLE,b),javax.swing.text.JTextComponent.addKeymap("default",null).setDefaultAction(new javax.swing.text.DefaultEditorKit.DefaultKeyTypedAction));return b});c$.loadKeymap=d(c$,"loadKeymap",function(a,b,c){for(var f=new java.util.Hashtable,l=0;l<c.length;l++){var d=c[l],g=d.getValue("Name");f.put(null!=g?g:"",d)}for(l=0;l<b.length;l++)d=f.get(b[l].actionName),null!=
+d&&a.addActionForKeyStroke(b[l].key,d)},"javax.swing.text.Keymap,~A,~A");d(c$,"getCaretColor",function(){return this.caretColor});d(c$,"setCaretColor",function(a){var b=this.caretColor;this.caretColor=a;this.firePropertyChangeObject("caretColor",b,this.caretColor)},"java.awt.Color");d(c$,"getSelectionColor",function(){return this.selectionColor});d(c$,"setSelectionColor",function(a){var b=this.selectionColor;this.selectionColor=a;this.firePropertyChangeObject("selectionColor",b,this.selectionColor)},
+"java.awt.Color");d(c$,"getSelectedTextColor",function(){return this.selectedTextColor});d(c$,"setSelectedTextColor",function(a){var b=this.selectedTextColor;this.selectedTextColor=a;this.firePropertyChangeObject("selectedTextColor",b,this.selectedTextColor)},"java.awt.Color");d(c$,"getDisabledTextColor",function(){return this.disabledTextColor});d(c$,"setDisabledTextColor",function(a){var b=this.disabledTextColor;this.disabledTextColor=a;this.firePropertyChangeObject("disabledTextColor",b,this.disabledTextColor)},
+"java.awt.Color");d(c$,"replaceSelection",function(a){var b=this.getDocument();if(null!=b)try{var c=this.saveComposedText(this.caret.getDot()),f=Math.min(this.caret.getDot(),this.caret.getMark()),l=Math.max(this.caret.getDot(),this.caret.getMark());v(b,javax.swing.text.JSMinimalAbstractDocument)?b.replace(f,l-f,a,null):(f!=l&&b.remove(f,l-f),null!=a&&0<a.length&&b.insertString(f,a,null));c&&this.restoreComposedText()}catch(d){if(y(d,javax.swing.text.BadLocationException))swingjs.JSToolkit.alert("SWINGJS BAD LOCATION EXCEPTION (replace):"+
+d.getMessage()+swingjs.JSToolkit.getStackTrace(-10));else throw d;}},"~S");d(c$,"getText",function(a,b){return this.getDocument().getText(a,b)},"~N,~N");d(c$,"modelToView",function(a){return this.getUI().modelToView(this,a)},"~N");d(c$,"viewToModel",function(a){return this.getUI().viewToModel(this,a)},"java.awt.Point");d(c$,"cut",function(){});d(c$,"copy",function(){});d(c$,"paste",function(){});d(c$,"moveCaretPosition",function(a){var b=this.getDocument();if(null!=b){if(a>b.getLength()||0>a)throw new IllegalArgumentException("bad position: "+
+a);this.caret.moveDot(a)}},"~N");d(c$,"setFocusAccelerator",function(a){a=Character.toUpperCase(a);var b=this.focusAccelerator;this.focusAccelerator=a;this.firePropertyChange("focusAcceleratorKey",b,this.focusAccelerator);this.firePropertyChange("focusAccelerator",b,this.focusAccelerator)},"~S");d(c$,"getFocusAccelerator",function(){return this.focusAccelerator});d(c$,"read",function(a,b){var c=this.getUI().getEditorKit(this),f=c.createDefaultDocument();null!=b&&f.putProperty("stream",b);try{c.read(a,
+f,0),this.setDocument(f)}catch(l){if(y(l,javax.swing.text.BadLocationException))throw new java.io.IOException(l.getMessage());throw l;}},"java.io.Reader,~O");d(c$,"write",function(a){var b=this.getDocument();try{this.getUI().getEditorKit(this).write(a,b,0,b.getLength())}catch(c){if(y(c,javax.swing.text.BadLocationException))throw new java.io.IOException(c.getMessage());throw c;}},"java.io.Writer");d(c$,"removeNotify",function(){K(this,javax.swing.text.JTextComponent,"removeNotify",[]);javax.swing.text.JTextComponent.getFocusedComponent()===
+this&&jssun.awt.AppContext.getAppContext().remove(javax.swing.text.JTextComponent.FOCUSED_COMPONENT)});d(c$,"setCaretPosition",function(a){var b=this.getDocument();if(null!=b){if(a>b.getLength()||0>a)throw new IllegalArgumentException("bad position: "+a);this.caret.setDot(a)}},"~N");d(c$,"getCaretPosition",function(){return this.caret.getDot()});d(c$,"setText",function(a){try{var b=this.getDocument();v(b,javax.swing.text.JSMinimalAbstractDocument)?b.replace(0,b.getLength(),a,null):(b.remove(0,b.getLength()),
+b.insertString(0,a,null))}catch(c){if(y(c,javax.swing.text.BadLocationException))swingjs.JSToolkit.alert("SWINGJS BAD LOCATION EXCEPTION (setText):"+c.getMessage()+swingjs.JSToolkit.getStackTrace(-10));else throw c;}},"~S");d(c$,"getText",function(){var a=this.getDocument(),b;try{b=a.getText(0,a.getLength())}catch(c){if(y(c,javax.swing.text.BadLocationException))b=null;else throw c;}return b});d(c$,"getSelectedText",function(){var a=null,b=Math.min(this.caret.getDot(),this.caret.getMark()),c=Math.max(this.caret.getDot(),
+this.caret.getMark());if(b!=c)try{a=this.getDocument().getText(b,c-b)}catch(f){if(y(f,javax.swing.text.BadLocationException))throw new IllegalArgumentException(f.getMessage());throw f;}return a});d(c$,"isEditable",function(){return this.editable});d(c$,"setEditable",function(a){if(a!=this.editable){var b=this.editable;this.editable=a;this.firePropertyChangeObject("editable",Boolean.$valueOf(b),Boolean.$valueOf(this.editable));this.repaint()}},"~B");d(c$,"getSelectionStart",function(){return Math.min(this.caret.getDot(),
+this.caret.getMark())});d(c$,"setSelectionStart",function(a){this.select(a,this.getSelectionEnd())},"~N");d(c$,"getSelectionEnd",function(){return Math.max(this.caret.getDot(),this.caret.getMark())});d(c$,"setSelectionEnd",function(a){this.select(this.getSelectionStart(),a)},"~N");d(c$,"select",function(a,b){var c=this.getDocument().getLength();0>a&&(a=0);a>c&&(a=c);b>c&&(b=c);b<a&&(b=a);this.setCaretPosition(a);this.moveCaretPosition(b)},"~N,~N");d(c$,"selectAll",function(){var a=this.getDocument();
+null!=a&&(this.setCaretPosition(0),this.moveCaretPosition(a.getLength()))});d(c$,"getToolTipText",function(a){var b=K(this,javax.swing.text.JTextComponent,"getToolTipText",[a]);if(null==b){var c=this.getUI();null!=c&&(b=c.getToolTipText(this,new java.awt.Point(a.getX(),a.getY())))}return b},"java.awt.event.MouseEvent");e(c$,"getPreferredScrollableViewportSize",function(){return this.getPreferredSize()});e(c$,"getScrollableUnitIncrement",function(a,b){switch(b){case 1:return F(a.height/10);case 0:return F(a.width/
+10);default:throw new IllegalArgumentException("Invalid orientation: "+b);}},"java.awt.Rectangle,~N,~N");e(c$,"getScrollableBlockIncrement",function(a,b){switch(b){case 1:return a.height;case 0:return a.width;default:throw new IllegalArgumentException("Invalid orientation: "+b);}},"java.awt.Rectangle,~N,~N");e(c$,"getScrollableTracksViewportWidth",function(){return v(this.getParent(),javax.swing.JViewport)?this.getParent().getWidth()>this.getPreferredSize().width:!1});e(c$,"getScrollableTracksViewportHeight",
+function(){return v(this.getParent(),javax.swing.JViewport)?this.getParent().getHeight()>this.getPreferredSize().height:!1});d(c$,"paramString",function(){var a=this.editable?"true":"false",b=null!=this.caretColor?this.caretColor.toString():"",c=null!=this.selectionColor?this.selectionColor.toString():"",f=null!=this.selectedTextColor?this.selectedTextColor.toString():"",l=null!=this.disabledTextColor?this.disabledTextColor.toString():"",d=null!=this.margin?this.margin.toString():"";return K(this,
+javax.swing.text.JTextComponent,"paramString",[])+",caretColor="+b+",disabledTextColor="+l+",editable="+a+",margin="+d+",selectedTextColor="+f+",selectionColor="+c});c$.getFocusedComponent=d(c$,"getFocusedComponent",function(){return jssun.awt.AppContext.getAppContext().get(javax.swing.text.JTextComponent.FOCUSED_COMPONENT)});d(c$,"addInputMethodListener",function(a){K(this,javax.swing.text.JTextComponent,"addInputMethodListener",[a])},"java.awt.event.InputMethodListener");d(c$,"saveComposedText",
+function(a){if(this.composedTextExists()){var b=this.composedTextStart.getOffset(),c=this.composedTextEnd.getOffset()-this.composedTextStart.getOffset();if(a>=b&&a<=b+c)try{return this.getDocument().remove(b,c),!0}catch(f){if(!y(f,javax.swing.text.BadLocationException))throw f;}}return!1},"~N");d(c$,"restoreComposedText",function(){var a=this.getDocument();try{a.insertString(this.caret.getDot(),this.composedTextContent,this.composedTextAttribute),this.composedTextStart=a.createPosition(this.caret.getDot()-
+this.composedTextContent.length),this.composedTextEnd=a.createPosition(this.caret.getDot())}catch(b){if(!y(b,javax.swing.text.BadLocationException))throw b;}});d(c$,"composedTextExists",function(){return null!=this.composedTextStart});A(self.c$);c$=s(function(){this.actionName=this.key=null;r(this,arguments)},javax.swing.text.JTextComponent,"KeyBinding");m(c$,function(a,b){this.key=a;this.actionName=b},"javax.swing.KeyStroke,~S");c$=z();A(self.c$);c$=s(function(){this.defaultAction=this.bindings=
+this.parent=this.nm=null;r(this,arguments)},javax.swing.text.JTextComponent,"DefaultKeymap",null,javax.swing.text.Keymap);m(c$,function(a,b){this.nm=a;this.parent=b;this.bindings=new java.util.Hashtable},"~S,javax.swing.text.Keymap");d(c$,"getDefaultAction",function(){return null!=this.defaultAction?this.defaultAction:null!=this.parent?this.parent.getDefaultAction():null});e(c$,"setDefaultAction",function(a){this.defaultAction=a},"javax.swing.Action");e(c$,"getName",function(){return this.nm});d(c$,
+"getAction",function(a){var b=this.bindings.get(a);null==b&&null!=this.parent&&(b=this.parent.getAction(a));return b},"javax.swing.KeyStroke");e(c$,"getBoundKeyStrokes",function(){for(var a=Array(this.bindings.size()),b=0,c=this.bindings.keys();c.hasMoreElements();)a[b++]=c.nextElement();return a});e(c$,"getBoundActions",function(){for(var a=Array(this.bindings.size()),b=0,c=this.bindings.elements();c.hasMoreElements();)a[b++]=c.nextElement();return a});d(c$,"getKeyStrokesForAction",function(a){if(null==
+a)return null;for(var b=null,c=null,f=this.bindings.keys();f.hasMoreElements();){var l=f.nextElement();this.bindings.get(l)===a&&(null==c&&(c=new java.util.Vector),c.addElement(l))}if(null!=this.parent&&(l=this.parent.getKeyStrokesForAction(a),null!=l)){a=0;for(f=l.length-1;0<=f;f--)this.isLocallyDefined(l[f])&&(l[f]=null,a++);if(0<a&&a<l.length){null==c&&(c=new java.util.Vector);for(a=l.length-1;0<=a;a--)null!=l[a]&&c.addElement(l[a])}else 0==a&&(null==c?b=l:(b=Array(c.size()+l.length),c.copyInto(b),
+System.arraycopy(l,0,b,c.size(),l.length),c=null))}null!=c&&(b=Array(c.size()),c.copyInto(b));return b},"javax.swing.Action");e(c$,"isLocallyDefined",function(a){return this.bindings.containsKey(a)},"javax.swing.KeyStroke");e(c$,"addActionForKeyStroke",function(a,b){this.bindings.put(a,b)},"javax.swing.KeyStroke,javax.swing.Action");e(c$,"removeKeyStrokeBinding",function(a){this.bindings.remove(a)},"javax.swing.KeyStroke");e(c$,"removeBindings",function(){this.bindings.clear()});e(c$,"getResolveParent",
+function(){return this.parent});e(c$,"setResolveParent",function(a){this.parent=a},"javax.swing.text.Keymap");e(c$,"toString",function(){return"Keymap["+this.nm+"]"+this.bindings});c$=z();A(self.c$);c$=s(function(){this.keymap=null;r(this,arguments)},javax.swing.text.JTextComponent,"KeymapWrapper",javax.swing.InputMap);m(c$,function(a){t(this,javax.swing.text.JTextComponent.KeymapWrapper,[]);this.keymap=a},"javax.swing.text.Keymap");d(c$,"keys",function(){var a=K(this,javax.swing.text.JTextComponent.KeymapWrapper,
+"keys",[]),b=this.keymap.getBoundKeyStrokes(),c=null==a?0:a.length,f=null==b?0:b.length;if(0==c)return b;if(0==f)return a;var l=Array(c+f);System.arraycopy(a,0,l,0,c);System.arraycopy(b,0,l,c,f);return l});d(c$,"size",function(){var a=this.keymap.getBoundKeyStrokes(),a=null==a?0:a.length;return K(this,javax.swing.text.JTextComponent.KeymapWrapper,"size",[])+a});d(c$,"get",function(a){var b=this.keymap.getAction(a);null==b&&(b=K(this,javax.swing.text.JTextComponent.KeymapWrapper,"get",[a]),null==b&&
+("\uffff"!=a.getKeyChar()&&null!=this.keymap.getDefaultAction())&&(b=javax.swing.text.JTextComponent.KeymapWrapper.DefaultActionKey));return b},"javax.swing.KeyStroke");c$.DefaultActionKey=c$.prototype.DefaultActionKey=new W._O;c$=z();A(self.c$);c$=s(function(){this.keymap=null;r(this,arguments)},javax.swing.text.JTextComponent,"KeymapActionMap",javax.swing.ActionMap);m(c$,function(a){t(this,javax.swing.text.JTextComponent.KeymapActionMap,[]);this.keymap=a},"javax.swing.text.Keymap");d(c$,"keys",
+function(){var a=K(this,javax.swing.text.JTextComponent.KeymapActionMap,"keys",[]),b=this.keymap.getBoundActions(),c=null==a?0:a.length,f=null==b?0:b.length,l=null!=this.keymap.getDefaultAction();l&&f++;if(0==c){if(l){var d=Array(f);1<f&&System.arraycopy(b,0,d,0,f-1);d[f-1]=javax.swing.text.JTextComponent.KeymapWrapper.DefaultActionKey;return d}return b}if(0==f)return a;d=Array(c+f);System.arraycopy(a,0,d,0,c);l?(1<f&&System.arraycopy(b,0,d,c,f-1),d[c+f-1]=javax.swing.text.JTextComponent.KeymapWrapper.DefaultActionKey):
+System.arraycopy(b,0,d,c,f);return d});d(c$,"size",function(){var a=this.keymap.getBoundActions(),a=null==a?0:a.length;null!=this.keymap.getDefaultAction()&&a++;return K(this,javax.swing.text.JTextComponent.KeymapActionMap,"size",[])+a});d(c$,"get",function(a){var b=K(this,javax.swing.text.JTextComponent.KeymapActionMap,"get",[a]);null==b&&(a===javax.swing.text.JTextComponent.KeymapWrapper.DefaultActionKey?b=this.keymap.getDefaultAction():v(a,javax.swing.Action)&&(b=a));return b},"~O");c$=z();A(self.c$);
+c$=s(function(){this.dragActive=!1;this.mark=this.dot=0;r(this,arguments)},javax.swing.text.JTextComponent,"MutableCaretEvent",javax.swing.event.CaretEvent,[javax.swing.event.ChangeListener,java.awt.event.FocusListener,java.awt.event.MouseListener]);d(c$,"fire",function(){var a=this.getSource();if(null!=a){var b=a.getCaret();null!=b&&(this.dot=b.getDot(),this.mark=b.getMark(),a.fireCaretUpdate(this))}});e(c$,"toString",function(){return"dot="+this.dot+",mark="+this.mark});e(c$,"getDot",function(){return this.dot});
+e(c$,"getMark",function(){return this.mark});e(c$,"stateChanged",function(){this.dragActive||this.fire()},"javax.swing.event.ChangeEvent");e(c$,"focusGained",function(a){jssun.awt.AppContext.getAppContext().put(javax.swing.text.JTextComponent.FOCUSED_COMPONENT,a.getSource())},"java.awt.event.FocusEvent");e(c$,"focusLost",function(){},"java.awt.event.FocusEvent");e(c$,"mousePressed",function(){this.dragActive=!0},"java.awt.event.MouseEvent");e(c$,"mouseReleased",function(){this.dragActive=!1;this.fire()},
+"java.awt.event.MouseEvent");e(c$,"mouseClicked",function(){},"java.awt.event.MouseEvent");e(c$,"mouseEntered",function(){},"java.awt.event.MouseEvent");e(c$,"mouseExited",function(){},"java.awt.event.MouseEvent");c$=z();G(c$,"FOCUS_ACCELERATOR_KEY","focusAcceleratorKey");c$.KEYMAP_TABLE=c$.prototype.KEYMAP_TABLE=new W._O;c$.FOCUSED_COMPONENT=c$.prototype.FOCUSED_COMPONENT=new W._O;G(c$,"DEFAULT_KEYMAP","default")});p("javax.swing.text");M(javax.swing.text,"Keymap");p("javax.swing.text");q(["javax.swing.text.EditorKit",
+"$.TextAction"],"javax.swing.text.DefaultEditorKit","java.io.InputStreamReader $.OutputStreamWriter java.awt.ComponentOrientation $.Point $.Rectangle javax.swing.UIManager javax.swing.text.BadLocationException $.DefaultCaret $.Position $.Segment $.Utilities swingjs.JSPlainDocument".split(" "),function(){c$=B(javax.swing.text,"DefaultEditorKit",javax.swing.text.EditorKit);m(c$,function(){t(this,javax.swing.text.DefaultEditorKit,[])});e(c$,"getContentType",function(){return"text/plain"});e(c$,"getViewFactory",
+function(){return null});e(c$,"getActions",function(){return javax.swing.text.DefaultEditorKit.defaultActions});e(c$,"createCaret",function(){return null});e(c$,"createDefaultDocument",function(){return new swingjs.JSPlainDocument});d(c$,"read",function(a,b,c){this.read(new java.io.InputStreamReader(a),b,c)},"java.io.InputStream,javax.swing.text.Document,~N");d(c$,"write",function(a,b,c,f){a=new java.io.OutputStreamWriter(a);this.write(a,b,c,f);a.flush()},"java.io.OutputStream,javax.swing.text.Document,~N,~N");
+d(c$,"getInputAttributes",function(){return null});d(c$,"read",function(a,b,c){for(var f=N(4096,"\x00"),l,d=!1,g=!1,h=!1,j,e=0==b.getLength(),x=this.getInputAttributes();-1!=(l=a.read(f,0,f.length));){for(var u=j=0;u<l;u++)switch(f[u]){case "\r":d?(h=!0,0==u?(b.insertString(c,"\n",x),c++):f[u-1]="\n"):d=!0;break;case "\n":d&&(u>j+1&&(b.insertString(c,String.instantialize(f,j,u-j-1),x),c+=u-j-1),d=!1,j=u,g=!0);break;default:d&&(h=!0,0==u?(b.insertString(c,"\n",x),c++):f[u-1]="\n",d=!1)}j<l&&(d?j<l-
+1&&(b.insertString(c,String.instantialize(f,j,l-j-1),x),c+=l-j-1):(b.insertString(c,String.instantialize(f,j,l-j),x),c+=l-j))}d&&(b.insertString(c,"\n",x),h=!0);e&&(g?b.putProperty("__EndOfLine__","\r\n"):h?b.putProperty("__EndOfLine__","\r"):b.putProperty("__EndOfLine__","\n"))},"java.io.Reader,javax.swing.text.Document,~N");d(c$,"write",function(a,b,c,f){if(0>c||c+f>b.getLength())throw new javax.swing.text.BadLocationException("DefaultEditorKit.write",c);var l=new javax.swing.text.Segment,d=b.getProperty("__EndOfLine__");
+if(null==d)try{d=System.getProperty("line.separator")}catch(g){if(!y(g,SecurityException))throw g;}var h;h=v(d,String)?d:null;if(null!=d&&!h.equals("\n"))for(;0<f;){d=Math.min(f,4096);b.getText(c,d,l);for(var j=l.offset,e=l.array,x=j+l.count,u=j;u<x;u++)"\n"==e[u]&&(u>j&&a.write(e,j,u-j),a.write(h),j=u+1);x>j&&a.write(e,j,x-j);c+=d;f-=d}else for(;0<f;)d=Math.min(f,4096),b.getText(c,d,l),a.write(l.array,l.offset,l.count),c+=d,f-=d;a.flush()},"java.io.Writer,javax.swing.text.Document,~N,~N");A(self.c$);
+c$=B(javax.swing.text.DefaultEditorKit,"DefaultKeyTypedAction",javax.swing.text.TextAction);m(c$,function(){t(this,javax.swing.text.DefaultEditorKit.DefaultKeyTypedAction,["default-typed"])});e(c$,"actionPerformed",function(a){var b=this.getTextComponent(a);if(null!=b&&null!=a&&b.isEditable()&&b.isEnabled()){var c=a.getActionCommand();a=a.getModifiers();null!=c&&(0<c.length&&(a&8)==(a&2))&&(a=c.charAt(0),32<=a.charCodeAt(0)&&127!=a.charCodeAt(0)&&b.replaceSelection(c))}},"java.awt.event.ActionEvent");
+c$=z();A(self.c$);c$=B(javax.swing.text.DefaultEditorKit,"InsertContentAction",javax.swing.text.TextAction);m(c$,function(){t(this,javax.swing.text.DefaultEditorKit.InsertContentAction,["insert-content"])});e(c$,"actionPerformed",function(a){var b=this.getTextComponent(a);null!=b&&null!=a&&(!b.isEditable()||!b.isEnabled()?javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(b):(a=a.getActionCommand(),null!=a?b.replaceSelection(a):javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(b)))},
+"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=B(javax.swing.text.DefaultEditorKit,"InsertBreakAction",javax.swing.text.TextAction);m(c$,function(){t(this,javax.swing.text.DefaultEditorKit.InsertBreakAction,["insert-break"])});e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);null!=a&&(!a.isEditable()||!a.isEnabled()?javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(a):a.replaceSelection("\n"))},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=B(javax.swing.text.DefaultEditorKit,
+"InsertTabAction",javax.swing.text.TextAction);m(c$,function(){t(this,javax.swing.text.DefaultEditorKit.InsertTabAction,["insert-tab"])});e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);null!=a&&(!a.isEditable()||!a.isEnabled()?javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(a):a.replaceSelection("\t"))},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=B(javax.swing.text.DefaultEditorKit,"DeletePrevCharAction",javax.swing.text.TextAction);m(c$,function(){t(this,javax.swing.text.DefaultEditorKit.DeletePrevCharAction,
+["delete-previous"])});e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);var b=!0;if(null!=a&&a.isEditable())try{var c=a.getDocument(),f=a.getCaret(),l=f.getDot(),d=f.getMark();if(l!=d)c.remove(Math.min(l,d),Math.abs(l-d)),b=!1;else if(0<l){f=1;if(1<l){var g=c.getText(l-2,2),h=g.charAt(0),j=g.charAt(1);"\ud800"<=h&&("\udbff">=h&&"\udc00"<=j&&"\udfff">=j)&&(f=2)}c.remove(l-f,f);b=!1}}catch(e){if(!y(e,javax.swing.text.BadLocationException))throw e;}b&&javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(a)},
+"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=B(javax.swing.text.DefaultEditorKit,"DeleteNextCharAction",javax.swing.text.TextAction);m(c$,function(){t(this,javax.swing.text.DefaultEditorKit.DeleteNextCharAction,["delete-next"])});e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);var b=!0;if(null!=a&&a.isEditable())try{var c=a.getDocument(),f=a.getCaret(),l=f.getDot(),d=f.getMark();if(l!=d)c.remove(Math.min(l,d),Math.abs(l-d)),b=!1;else if(l<c.getLength()){f=1;if(l<c.getLength()-
+1){var g=c.getText(l,2),h=g.charAt(0),j=g.charAt(1);"\ud800"<=h&&("\udbff">=h&&"\udc00"<=j&&"\udfff">=j)&&(f=2)}c.remove(l,f);b=!1}}catch(e){if(!y(e,javax.swing.text.BadLocationException))throw e;}b&&javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(a)},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=B(javax.swing.text.DefaultEditorKit,"ReadOnlyAction",javax.swing.text.TextAction);m(c$,function(){t(this,javax.swing.text.DefaultEditorKit.ReadOnlyAction,["set-read-only"])});e(c$,"actionPerformed",
+function(a){a=this.getTextComponent(a);null!=a&&a.setEditable(!1)},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=B(javax.swing.text.DefaultEditorKit,"WritableAction",javax.swing.text.TextAction);m(c$,function(){t(this,javax.swing.text.DefaultEditorKit.WritableAction,["set-writable"])});e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);null!=a&&a.setEditable(!0)},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=B(javax.swing.text.DefaultEditorKit,"CutAction",javax.swing.text.TextAction);
+m(c$,function(){t(this,javax.swing.text.DefaultEditorKit.CutAction,["cut-to-clipboard"])});e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);null!=a&&a.cut()},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=B(javax.swing.text.DefaultEditorKit,"CopyAction",javax.swing.text.TextAction);m(c$,function(){t(this,javax.swing.text.DefaultEditorKit.CopyAction,["copy-to-clipboard"])});e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);null!=a&&a.copy()},"java.awt.event.ActionEvent");
+c$=z();A(self.c$);c$=B(javax.swing.text.DefaultEditorKit,"PasteAction",javax.swing.text.TextAction);m(c$,function(){t(this,javax.swing.text.DefaultEditorKit.PasteAction,["paste-from-clipboard"])});e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);null!=a&&a.paste()},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=B(javax.swing.text.DefaultEditorKit,"BeepAction",javax.swing.text.TextAction);m(c$,function(){t(this,javax.swing.text.DefaultEditorKit.BeepAction,["beep"])});e(c$,"actionPerformed",
+function(a){a=this.getTextComponent(a);javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(a)},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=s(function(){this.select=!1;this.direction=0;r(this,arguments)},javax.swing.text.DefaultEditorKit,"VerticalPageAction",javax.swing.text.TextAction);m(c$,function(a,b,c){t(this,javax.swing.text.DefaultEditorKit.VerticalPageAction,[a]);this.select=c;this.direction=b},"~S,~N,~B");e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);if(null!=
+a){var b=a.getVisibleRect(),c=new java.awt.Rectangle(b),f=a.getCaretPosition(),l=this.direction*a.getScrollableBlockIncrement(b,1,this.direction),d=b.y,g=a.getCaret(),h=g.getMagicCaretPosition();if(-1!=f)try{var j=a.modelToView(f),e=null!=h?h.x:j.x,x=j.height;0<x&&(l=F(l/x)*x);c.y=this.constrainY(a,d+l,b.height);var u;u=b.contains(j.x,j.y)?a.viewToModel(new java.awt.Point(e,this.constrainY(a,j.y+l,0))):-1==this.direction?a.viewToModel(new java.awt.Point(e,c.y)):a.viewToModel(new java.awt.Point(e,
+c.y+b.height));u=this.constrainOffset(a,u);u!=f&&(this.adjustScrollIfNecessary(a,c,d,u),this.select?a.moveCaretPosition(u):a.setCaretPosition(u))}catch(D){if(!y(D,javax.swing.text.BadLocationException))throw D;}else c.y=this.constrainY(a,d+l,b.height);null!=h&&g.setMagicCaretPosition(h);a.scrollRectToVisible(c)}},"java.awt.event.ActionEvent");d(c$,"constrainY",function(a,b,c){0>b?b=0:b+c>a.getHeight()&&(b=Math.max(0,a.getHeight()-c));return b},"javax.swing.text.JTextComponent,~N,~N");d(c$,"constrainOffset",
+function(a,b){var c=a.getDocument();0!=b&&b>c.getLength()&&(b=c.getLength());0>b&&(b=0);return b},"javax.swing.text.JTextComponent,~N");d(c$,"adjustScrollIfNecessary",function(a,b,c,f){try{var l=a.modelToView(f);if(l.y<b.y||l.y>b.y+b.height||l.y+l.height>b.y+b.height){var d;d=l.y<b.y?l.y:l.y+l.height-b.height;if(-1==this.direction&&d<c||1==this.direction&&d>c)b.y=d}}catch(g){if(!y(g,javax.swing.text.BadLocationException))throw g;}},"javax.swing.text.JTextComponent,java.awt.Rectangle,~N,~N");c$=z();
+A(self.c$);c$=s(function(){this.left=this.select=!1;r(this,arguments)},javax.swing.text.DefaultEditorKit,"PageAction",javax.swing.text.TextAction);m(c$,function(a,b,c){t(this,javax.swing.text.DefaultEditorKit.PageAction,[a]);this.select=c;this.left=b},"~S,~B,~B");e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);if(null!=a){var b,c=new java.awt.Rectangle;a.computeVisibleRect(c);c.x=this.left?Math.max(0,c.x-c.width):c.x+c.width;b=a.getCaretPosition();-1!=b&&(b=this.left?a.viewToModel(new java.awt.Point(c.x,
+c.y)):a.viewToModel(new java.awt.Point(c.x+c.width-1,c.y+c.height-1)),c=a.getDocument(),0!=b&&b>c.getLength()-1?b=c.getLength()-1:0>b&&(b=0),this.select?a.moveCaretPosition(b):a.setCaretPosition(b))}},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=s(function(){this.select=!1;this.direction=0;r(this,arguments)},javax.swing.text.DefaultEditorKit,"NextVisualPositionAction",javax.swing.text.TextAction);m(c$,function(a,b,c){t(this,javax.swing.text.DefaultEditorKit.NextVisualPositionAction,[a]);this.select=
+b;this.direction=c},"~S,~B,~N");e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);if(null!=a){var b=a.getCaret(),c=v(b,javax.swing.text.DefaultCaret)?b:null,f=b.getDot(),l=Array(1),d=b.getMagicCaretPosition();try{if(null==d&&(1==this.direction||5==this.direction))var g=null!=c?a.getUI().modelToView(a,f,c.getDotBias()):a.modelToView(f),d=new java.awt.Point(g.x,g.y);g=a.getNavigationFilter();f=null!=g?g.getNextVisualPositionFrom(a,f,null!=c?c.getDotBias():javax.swing.text.Position.Bias.Forward,
+this.direction,l):a.getUI().getNextVisualPositionFrom(a,f,null!=c?c.getDotBias():javax.swing.text.Position.Bias.Forward,this.direction,l);null==l[0]&&(l[0]=javax.swing.text.Position.Bias.Forward);null!=c?this.select?c.moveDot(f,l[0]):c.setDot(f,l[0]):this.select?b.moveDot(f):b.setDot(f);null!=d&&(1==this.direction||5==this.direction)&&a.getCaret().setMagicCaretPosition(d)}catch(h){if(!y(h,javax.swing.text.BadLocationException))throw h;}}},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=s(function(){this.select=
+!1;r(this,arguments)},javax.swing.text.DefaultEditorKit,"BeginWordAction",javax.swing.text.TextAction);m(c$,function(a,b){t(this,javax.swing.text.DefaultEditorKit.BeginWordAction,[a]);this.select=b},"~S,~B");e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);if(null!=a)try{var b=a.getCaretPosition(),c=javax.swing.text.Utilities.getWordStart(a,b);this.select?a.moveCaretPosition(c):a.setCaretPosition(c)}catch(f){if(y(f,javax.swing.text.BadLocationException))javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(a);
+else throw f;}},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=s(function(){this.select=!1;r(this,arguments)},javax.swing.text.DefaultEditorKit,"EndWordAction",javax.swing.text.TextAction);m(c$,function(a,b){t(this,javax.swing.text.DefaultEditorKit.EndWordAction,[a]);this.select=b},"~S,~B");e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);if(null!=a)try{var b=a.getCaretPosition(),c=javax.swing.text.Utilities.getWordEnd(a,b);this.select?a.moveCaretPosition(c):a.setCaretPosition(c)}catch(f){if(y(f,
+javax.swing.text.BadLocationException))javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(a);else throw f;}},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=s(function(){this.select=!1;r(this,arguments)},javax.swing.text.DefaultEditorKit,"PreviousWordAction",javax.swing.text.TextAction);m(c$,function(a,b){t(this,javax.swing.text.DefaultEditorKit.PreviousWordAction,[a]);this.select=b},"~S,~B");e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);if(null!=a){var b=a.getCaretPosition(),
+c=!1;try{var f=javax.swing.text.Utilities.getParagraphElement(a,b),b=javax.swing.text.Utilities.getPreviousWord(a,b);b<f.getStartOffset()&&(b=javax.swing.text.Utilities.getParagraphElement(a,b).getEndOffset()-1)}catch(l){if(y(l,javax.swing.text.BadLocationException))0!=b?b=0:c=!0;else throw l;}c?javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(a):this.select?a.moveCaretPosition(b):a.setCaretPosition(b)}},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=s(function(){this.select=!1;r(this,
+arguments)},javax.swing.text.DefaultEditorKit,"NextWordAction",javax.swing.text.TextAction);m(c$,function(a,b){t(this,javax.swing.text.DefaultEditorKit.NextWordAction,[a]);this.select=b},"~S,~B");e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);if(null!=a){var b=a.getCaretPosition(),c=!1,f=b,l=javax.swing.text.Utilities.getParagraphElement(a,b);try{b=javax.swing.text.Utilities.getNextWord(a,b),b>=l.getEndOffset()&&f!=l.getEndOffset()-1&&(b=l.getEndOffset()-1)}catch(d){if(y(d,javax.swing.text.BadLocationException)){var g=
+a.getDocument().getLength();b!=g?b=f!=l.getEndOffset()-1?l.getEndOffset()-1:g:c=!0}else throw d;}c?javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(a):this.select?a.moveCaretPosition(b):a.setCaretPosition(b)}},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=s(function(){this.select=!1;r(this,arguments)},javax.swing.text.DefaultEditorKit,"BeginLineAction",javax.swing.text.TextAction);m(c$,function(a,b){t(this,javax.swing.text.DefaultEditorKit.BeginLineAction,[a]);this.select=b},"~S,~B");
+e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);if(null!=a)try{var b=a.getCaretPosition(),c=javax.swing.text.Utilities.getRowStart(a,b);this.select?a.moveCaretPosition(c):a.setCaretPosition(c)}catch(f){if(y(f,javax.swing.text.BadLocationException))javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(a);else throw f;}},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=s(function(){this.select=!1;r(this,arguments)},javax.swing.text.DefaultEditorKit,"EndLineAction",javax.swing.text.TextAction);
+m(c$,function(a,b){t(this,javax.swing.text.DefaultEditorKit.EndLineAction,[a]);this.select=b},"~S,~B");e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);if(null!=a)try{var b=a.getCaretPosition(),c=javax.swing.text.Utilities.getRowEnd(a,b);this.select?a.moveCaretPosition(c):a.setCaretPosition(c)}catch(f){if(y(f,javax.swing.text.BadLocationException))javax.swing.UIManager.getLookAndFeel().provideErrorFeedback(a);else throw f;}},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=s(function(){this.select=
+!1;r(this,arguments)},javax.swing.text.DefaultEditorKit,"BeginParagraphAction",javax.swing.text.TextAction);m(c$,function(a,b){t(this,javax.swing.text.DefaultEditorKit.BeginParagraphAction,[a]);this.select=b},"~S,~B");e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);if(null!=a){var b=a.getCaretPosition(),b=javax.swing.text.Utilities.getParagraphElement(a,b).getStartOffset();this.select?a.moveCaretPosition(b):a.setCaretPosition(b)}},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=s(function(){this.select=
+!1;r(this,arguments)},javax.swing.text.DefaultEditorKit,"EndParagraphAction",javax.swing.text.TextAction);m(c$,function(a,b){t(this,javax.swing.text.DefaultEditorKit.EndParagraphAction,[a]);this.select=b},"~S,~B");e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);if(null!=a){var b=a.getCaretPosition(),b=javax.swing.text.Utilities.getParagraphElement(a,b),b=Math.min(a.getDocument().getLength(),b.getEndOffset());this.select?a.moveCaretPosition(b):a.setCaretPosition(b)}},"java.awt.event.ActionEvent");
+c$=z();A(self.c$);c$=s(function(){this.select=!1;r(this,arguments)},javax.swing.text.DefaultEditorKit,"BeginAction",javax.swing.text.TextAction);m(c$,function(a,b){t(this,javax.swing.text.DefaultEditorKit.BeginAction,[a]);this.select=b},"~S,~B");e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);null!=a&&(this.select?a.moveCaretPosition(0):a.setCaretPosition(0))},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=s(function(){this.select=!1;r(this,arguments)},javax.swing.text.DefaultEditorKit,
+"EndAction",javax.swing.text.TextAction);m(c$,function(a,b){t(this,javax.swing.text.DefaultEditorKit.EndAction,[a]);this.select=b},"~S,~B");e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);if(null!=a){var b=a.getDocument().getLength();this.select?a.moveCaretPosition(b):a.setCaretPosition(b)}},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=s(function(){this.end=this.start=null;r(this,arguments)},javax.swing.text.DefaultEditorKit,"SelectWordAction",javax.swing.text.TextAction);m(c$,
+function(){t(this,javax.swing.text.DefaultEditorKit.SelectWordAction,["select-word"]);this.start=new javax.swing.text.DefaultEditorKit.BeginWordAction("pigdog",!1);this.end=new javax.swing.text.DefaultEditorKit.EndWordAction("pigdog",!0)});d(c$,"actionPerformed",function(a){this.start.actionPerformed(a);this.end.actionPerformed(a)},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=s(function(){this.end=this.start=null;r(this,arguments)},javax.swing.text.DefaultEditorKit,"SelectLineAction",javax.swing.text.TextAction);
+m(c$,function(){t(this,javax.swing.text.DefaultEditorKit.SelectLineAction,["select-line"]);this.start=new javax.swing.text.DefaultEditorKit.BeginLineAction("pigdog",!1);this.end=new javax.swing.text.DefaultEditorKit.EndLineAction("pigdog",!0)});d(c$,"actionPerformed",function(a){this.start.actionPerformed(a);this.end.actionPerformed(a)},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=s(function(){this.end=this.start=null;r(this,arguments)},javax.swing.text.DefaultEditorKit,"SelectParagraphAction",
+javax.swing.text.TextAction);m(c$,function(){t(this,javax.swing.text.DefaultEditorKit.SelectParagraphAction,["select-paragraph"]);this.start=new javax.swing.text.DefaultEditorKit.BeginParagraphAction("pigdog",!1);this.end=new javax.swing.text.DefaultEditorKit.EndParagraphAction("pigdog",!0)});d(c$,"actionPerformed",function(a){this.start.actionPerformed(a);this.end.actionPerformed(a)},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=B(javax.swing.text.DefaultEditorKit,"SelectAllAction",javax.swing.text.TextAction);
+m(c$,function(){t(this,javax.swing.text.DefaultEditorKit.SelectAllAction,["select-all"])});e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);if(null!=a){var b=a.getDocument();a.setCaretPosition(0);a.moveCaretPosition(b.getLength())}},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=B(javax.swing.text.DefaultEditorKit,"UnselectAction",javax.swing.text.TextAction);m(c$,function(){t(this,javax.swing.text.DefaultEditorKit.UnselectAction,["unselect"])});e(c$,"actionPerformed",function(a){a=
+this.getTextComponent(a);null!=a&&a.setCaretPosition(a.getCaretPosition())},"java.awt.event.ActionEvent");c$=z();A(self.c$);c$=B(javax.swing.text.DefaultEditorKit,"ToggleComponentOrientationAction",javax.swing.text.TextAction);m(c$,function(){t(this,javax.swing.text.DefaultEditorKit.ToggleComponentOrientationAction,["toggle-componentOrientation"])});e(c$,"actionPerformed",function(a){a=this.getTextComponent(a);if(null!=a){var b;b=a.getComponentOrientation()===java.awt.ComponentOrientation.RIGHT_TO_LEFT?
+java.awt.ComponentOrientation.LEFT_TO_RIGHT:java.awt.ComponentOrientation.RIGHT_TO_LEFT;a.setComponentOrientation(b);a.repaint()}},"java.awt.event.ActionEvent");c$=z();G(c$,"EndOfLineStringProperty","__EndOfLine__","insertContentAction","insert-content","insertBreakAction","insert-break","insertTabAction","insert-tab","deletePrevCharAction","delete-previous","deleteNextCharAction","delete-next","deleteNextWordAction","delete-next-word","deletePrevWordAction","delete-previous-word","readOnlyAction",
+"set-read-only","writableAction","set-writable","cutAction","cut-to-clipboard","copyAction","copy-to-clipboard","pasteAction","paste-from-clipboard","beepAction","beep","pageUpAction","page-up","pageDownAction","page-down","selectionPageUpAction","selection-page-up","selectionPageDownAction","selection-page-down","selectionPageLeftAction","selection-page-left","selectionPageRightAction","selection-page-right","forwardAction","caret-forward","backwardAction","caret-backward","selectionForwardAction",
+"selection-forward","selectionBackwardAction","selection-backward","upAction","caret-up","downAction","caret-down","selectionUpAction","selection-up","selectionDownAction","selection-down","beginWordAction","caret-begin-word","endWordAction","caret-end-word","selectionBeginWordAction","selection-begin-word","selectionEndWordAction","selection-end-word","previousWordAction","caret-previous-word","nextWordAction","caret-next-word","selectionPreviousWordAction","selection-previous-word","selectionNextWordAction",
+"selection-next-word","beginLineAction","caret-begin-line","endLineAction","caret-end-line","selectionBeginLineAction","selection-begin-line","selectionEndLineAction","selection-end-line","beginParagraphAction","caret-begin-paragraph","endParagraphAction","caret-end-paragraph","selectionBeginParagraphAction","selection-begin-paragraph","selectionEndParagraphAction","selection-end-paragraph","beginAction","caret-begin","endAction","caret-end","selectionBeginAction","selection-begin","selectionEndAction",
+"selection-end","selectWordAction","select-word","selectLineAction","select-line","selectParagraphAction","select-paragraph","selectAllAction","select-all","unselectAction","unselect","toggleComponentOrientationAction","toggle-componentOrientation","defaultKeyTypedAction","default-typed");c$.defaultActions=c$.prototype.defaultActions=E(-1,[new javax.swing.text.DefaultEditorKit.InsertContentAction,new javax.swing.text.DefaultEditorKit.DeletePrevCharAction,new javax.swing.text.DefaultEditorKit.DeleteNextCharAction,
+new javax.swing.text.DefaultEditorKit.ReadOnlyAction,new javax.swing.text.DefaultEditorKit.WritableAction,new javax.swing.text.DefaultEditorKit.CutAction,new javax.swing.text.DefaultEditorKit.CopyAction,new javax.swing.text.DefaultEditorKit.PasteAction,new javax.swing.text.DefaultEditorKit.VerticalPageAction("page-up",-1,!1),new javax.swing.text.DefaultEditorKit.VerticalPageAction("page-down",1,!1),new javax.swing.text.DefaultEditorKit.VerticalPageAction("selection-page-up",-1,!0),new javax.swing.text.DefaultEditorKit.VerticalPageAction("selection-page-down",
+1,!0),new javax.swing.text.DefaultEditorKit.PageAction("selection-page-left",!0,!0),new javax.swing.text.DefaultEditorKit.PageAction("selection-page-right",!1,!0),new javax.swing.text.DefaultEditorKit.InsertBreakAction,new javax.swing.text.DefaultEditorKit.BeepAction,new javax.swing.text.DefaultEditorKit.NextVisualPositionAction("caret-forward",!1,3),new javax.swing.text.DefaultEditorKit.NextVisualPositionAction("caret-backward",!1,7),new javax.swing.text.DefaultEditorKit.NextVisualPositionAction("selection-forward",
+!0,3),new javax.swing.text.DefaultEditorKit.NextVisualPositionAction("selection-backward",!0,7),new javax.swing.text.DefaultEditorKit.NextVisualPositionAction("caret-up",!1,1),new javax.swing.text.DefaultEditorKit.NextVisualPositionAction("caret-down",!1,5),new javax.swing.text.DefaultEditorKit.NextVisualPositionAction("selection-up",!0,1),new javax.swing.text.DefaultEditorKit.NextVisualPositionAction("selection-down",!0,5),new javax.swing.text.DefaultEditorKit.BeginWordAction("caret-begin-word",
+!1),new javax.swing.text.DefaultEditorKit.EndWordAction("caret-end-word",!1),new javax.swing.text.DefaultEditorKit.BeginWordAction("selection-begin-word",!0),new javax.swing.text.DefaultEditorKit.EndWordAction("selection-end-word",!0),new javax.swing.text.DefaultEditorKit.PreviousWordAction("caret-previous-word",!1),new javax.swing.text.DefaultEditorKit.NextWordAction("caret-next-word",!1),new javax.swing.text.DefaultEditorKit.PreviousWordAction("selection-previous-word",!0),new javax.swing.text.DefaultEditorKit.NextWordAction("selection-next-word",
+!0),new javax.swing.text.DefaultEditorKit.BeginLineAction("caret-begin-line",!1),new javax.swing.text.DefaultEditorKit.EndLineAction("caret-end-line",!1),new javax.swing.text.DefaultEditorKit.BeginLineAction("selection-begin-line",!0),new javax.swing.text.DefaultEditorKit.EndLineAction("selection-end-line",!0),new javax.swing.text.DefaultEditorKit.BeginParagraphAction("caret-begin-paragraph",!1),new javax.swing.text.DefaultEditorKit.EndParagraphAction("caret-end-paragraph",!1),new javax.swing.text.DefaultEditorKit.BeginParagraphAction("selection-begin-paragraph",
+!0),new javax.swing.text.DefaultEditorKit.EndParagraphAction("selection-end-paragraph",!0),new javax.swing.text.DefaultEditorKit.BeginAction("caret-begin",!1),new javax.swing.text.DefaultEditorKit.EndAction("caret-end",!1),new javax.swing.text.DefaultEditorKit.BeginAction("selection-begin",!0),new javax.swing.text.DefaultEditorKit.EndAction("selection-end",!0),new javax.swing.text.DefaultEditorKit.DefaultKeyTypedAction,new javax.swing.text.DefaultEditorKit.InsertTabAction,new javax.swing.text.DefaultEditorKit.SelectWordAction,
+new javax.swing.text.DefaultEditorKit.SelectLineAction,new javax.swing.text.DefaultEditorKit.SelectParagraphAction,new javax.swing.text.DefaultEditorKit.SelectAllAction,new javax.swing.text.DefaultEditorKit.UnselectAction,new javax.swing.text.DefaultEditorKit.ToggleComponentOrientationAction])});p("javax.swing.text");c$=B(javax.swing.text,"EditorKit",null,Cloneable);m(c$,function(){});d(c$,"clone",function(){var a;try{a=K(this,javax.swing.text.EditorKit,"clone",[])}catch(b){if(y(b,CloneNotSupportedException))a=
+null;else throw b;}return a});d(c$,"install",function(){},"javax.swing.JEditorPane");d(c$,"deinstall",function(){},"javax.swing.JEditorPane");p("javax.swing.text");q(["javax.swing.AbstractAction"],"javax.swing.text.TextAction",["java.util.Hashtable","javax.swing.text.JTextComponent"],function(){c$=B(javax.swing.text,"TextAction",javax.swing.AbstractAction);d(c$,"getTextComponent",function(a){return null!=a&&(a=a.getSource(),v(a,javax.swing.text.JTextComponent))?a:this.getFocusedComponent()},"java.awt.event.ActionEvent");
+c$.augmentList=d(c$,"augmentList",function(a,b){var c=new java.util.Hashtable;if(null!=a)for(var f=0;f<a.length;f++){var l=a[f],d=l.getValue("Name");c.put(null!=d?d:"",l)}for(f=0;f<b.length;f++)l=b[f],d=l.getValue("Name"),c.put(null!=d?d:"",l);f=Array(c.size());l=0;for(c=c.elements();c.hasMoreElements();)f[l++]=c.nextElement();return f},"~A,~A");d(c$,"getFocusedComponent",function(){return javax.swing.text.JTextComponent.getFocusedComponent()})});p("javax.swing.text");q(["java.lang.Exception"],"javax.swing.text.BadLocationException",
+null,function(){c$=s(function(){this.offs=0;r(this,arguments)},javax.swing.text,"BadLocationException",Exception);m(c$,function(a,b){t(this,javax.swing.text.BadLocationException,[a]);this.offs=b},"~S,~N");d(c$,"offsetRequested",function(){return this.offs})});p("javax.swing.text");q("java.awt.Rectangle java.awt.event.ActionListener $.FocusListener $.MouseListener $.MouseMotionListener java.beans.PropertyChangeListener javax.swing.event.DocumentListener javax.swing.text.Caret $.NavigationFilter javax.swing.event.EventListenerList".split(" "),
+"javax.swing.text.DefaultCaret","java.lang.Boolean $.IllegalArgumentException java.awt.Point java.awt.event.ActionEvent javax.swing.SwingUtilities javax.swing.event.ChangeEvent $.ChangeListener javax.swing.text.AbstractDocument javax.swing.text.AbstractDocument.UndoRedoDocumentEvent javax.swing.text.DefaultEditorKit $.DefaultHighlighter $.Document $.Position $.Segment $.StateInvariantError".split(" "),function(){c$=s(function(){this.component=this.changeEvent=this.listenerList=null;this.updatePolicy=
+0;this.active=this.visible=!1;this.mark=this.dot=0;this.selectionTag=null;this.selectionVisible=!1;this.markBias=this.dotBias=this.magicCaretPosition=null;this.markLTR=this.dotLTR=!1;this.filterBypass=this.flagYPoints=this.flagXPoints=this.handler=null;this.shouldHandleRelease=this.forceCaretPositionChange=this.ownsSelection=!1;this.selectedWordEvent=null;this.aspectRatio=this.caretWidth=-1;H("javax.swing.text.DefaultCaret.SafeScroller")||javax.swing.text.DefaultCaret.$DefaultCaret$SafeScroller$();
+H("javax.swing.text.DefaultCaret.Handler")||javax.swing.text.DefaultCaret.$DefaultCaret$Handler$();H("javax.swing.text.DefaultCaret.DefaultFilterBypass")||javax.swing.text.DefaultCaret.$DefaultCaret$DefaultFilterBypass$();r(this,arguments)},javax.swing.text,"DefaultCaret",java.awt.Rectangle,[javax.swing.text.Caret,java.awt.event.FocusListener,java.awt.event.MouseListener,java.awt.event.MouseMotionListener]);J(c$,function(){this.listenerList=new javax.swing.event.EventListenerList;this.handler=C(javax.swing.text.DefaultCaret.Handler,
+this,null);this.flagXPoints=w(3,0);this.flagYPoints=w(3,0)});m(c$,function(){t(this,javax.swing.text.DefaultCaret,[])});d(c$,"setUpdatePolicy",function(a){this.updatePolicy=a},"~N");d(c$,"getUpdatePolicy",function(){return this.updatePolicy});d(c$,"getComponent",function(){return this.component});d(c$,"repaint",function(){null!=this.component&&this.component.repaint(this.x,this.y,this.width,this.height)});d(c$,"damage",function(a){if(null!=a){var b=this.getCaretWidth(a.height);this.x=a.x-4-(b>>1);
+this.y=a.y;this.width=9+b;this.height=a.height;this.repaint()}},"java.awt.Rectangle");d(c$,"adjustVisibility",function(a){null!=this.component&&(javax.swing.SwingUtilities.isEventDispatchThread()?this.component.scrollRectToVisible(a):javax.swing.SwingUtilities.invokeLater(C(javax.swing.text.DefaultCaret.SafeScroller,this,null,a)))},"java.awt.Rectangle");d(c$,"getSelectionPainter",function(){return javax.swing.text.DefaultHighlighter.DefaultPainter});d(c$,"positionCaret",function(a){var b=new java.awt.Point(a.getX(),
+a.getY());a=Array(1);b=this.component.getUI().viewToModel(this.component,b,a);null==a[0]&&(a[0]=javax.swing.text.Position.Bias.Forward);0<=b&&this.setDot(b,a[0])},"java.awt.event.MouseEvent");d(c$,"moveCaret",function(a){var b=new java.awt.Point(a.getX(),a.getY());a=Array(1);b=this.component.getUI().viewToModel(this.component,b,a);null==a[0]&&(a[0]=javax.swing.text.Position.Bias.Forward);0<=b&&this.moveDot(b,a[0])},"java.awt.event.MouseEvent");e(c$,"focusGained",function(){this.component.isEnabled()&&
+(this.component.isEditable()&&this.setVisible(!0),this.setSelectionVisible(!0))},"java.awt.event.FocusEvent");e(c$,"focusLost",function(a){this.setVisible(!1);this.setSelectionVisible(this.ownsSelection||a.isTemporary())},"java.awt.event.FocusEvent");e(c$,"mouseClicked",function(a){var b=a.getClickCount();a.isConsumed()||(javax.swing.SwingUtilities.isLeftMouseButton(a)?1==b&&(this.selectedWordEvent=null):javax.swing.SwingUtilities.isMiddleMouseButton(a))},"java.awt.event.MouseEvent");e(c$,"mousePressed",
+function(a){javax.swing.SwingUtilities.isLeftMouseButton(a)&&(a.isConsumed()?this.shouldHandleRelease=!0:(this.shouldHandleRelease=!1,this.adjustCaretAndFocus(a)))},"java.awt.event.MouseEvent");d(c$,"adjustCaretAndFocus",function(a){this.adjustCaret(a);this.adjustFocus(!1)},"java.awt.event.MouseEvent");d(c$,"adjustCaret",function(a){0!=(a.getModifiers()&1)&&-1!=this.getDot()?this.moveCaret(a):this.positionCaret(a)},"java.awt.event.MouseEvent");d(c$,"adjustFocus",function(a){null!=this.component&&
+(this.component.isEnabled()&&this.component.isRequestFocusEnabled())&&(a?this.component.requestFocusInWindow():this.component.requestFocus())},"~B");e(c$,"mouseReleased",function(a){!a.isConsumed()&&(this.shouldHandleRelease&&javax.swing.SwingUtilities.isLeftMouseButton(a))&&this.adjustCaretAndFocus(a)},"java.awt.event.MouseEvent");e(c$,"mouseEntered",function(){},"java.awt.event.MouseEvent");e(c$,"mouseExited",function(){},"java.awt.event.MouseEvent");e(c$,"mouseDragged",function(a){!a.isConsumed()&&
+javax.swing.SwingUtilities.isLeftMouseButton(a)&&this.moveCaret(a)},"java.awt.event.MouseEvent");e(c$,"mouseMoved",function(){},"java.awt.event.MouseEvent");e(c$,"paint",function(a){if(this.isVisible())try{var b=this.component.getUI().modelToView(this.component,this.dot,this.dotBias);if(!(null==b||0==b.width&&0==b.height)){if(0<this.width&&0<this.height&&!this._contains(b.x,b.y,b.width,b.height)){var c=a.getClipBounds();null!=c&&!c.contains(this)&&this.repaint();this.damage(b)}a.setColor(this.component.getCaretColor());
+var f=this.getCaretWidth(b.height);b.x-=f>>1;a.fillRect(b.x,b.y,f,b.height);var l=this.component.getDocument();if(v(l,javax.swing.text.AbstractDocument)){var d=l.getBidiRootElement();null!=d&&1<d.getElementCount()&&(this.flagXPoints[0]=b.x+(this.dotLTR?f:0),this.flagYPoints[0]=b.y,this.flagXPoints[1]=this.flagXPoints[0],this.flagYPoints[1]=this.flagYPoints[0]+4,this.flagXPoints[2]=this.flagXPoints[0]+(this.dotLTR?4:-4),this.flagYPoints[2]=this.flagYPoints[0],a.fillPolygon(this.flagXPoints,this.flagYPoints,
+3))}}}catch(g){if(!y(g,javax.swing.text.BadLocationException))throw g;}},"java.awt.Graphics");e(c$,"install",function(a){this.component=a;var b=a.getDocument();this.dot=this.mark=0;this.dotLTR=this.markLTR=!0;this.dotBias=this.markBias=javax.swing.text.Position.Bias.Forward;null!=b&&b.addDocumentListener(this.handler);a.addPropertyChangeListener(this.handler);a.addFocusListener(this);a.addMouseListener(this);a.addMouseMotionListener(this);this.component.hasFocus()&&this.focusGained(null);b=a.getClientProperty("caretAspectRatio");
+this.aspectRatio=null!=b?b.floatValue():-1;a=a.getClientProperty("caretWidth");this.caretWidth=null!=a?a.intValue():-1},"javax.swing.text.JTextComponent");e(c$,"deinstall",function(a){a.removeMouseListener(this);a.removeMouseMotionListener(this);a.removeFocusListener(this);a.removePropertyChangeListener(this.handler);a=a.getDocument();null!=a&&a.removeDocumentListener(this.handler);this.component=null},"javax.swing.text.JTextComponent");e(c$,"addChangeListener",function(a){this.listenerList.add(javax.swing.event.ChangeListener,
+a)},"javax.swing.event.ChangeListener");e(c$,"removeChangeListener",function(a){this.listenerList.remove(javax.swing.event.ChangeListener,a)},"javax.swing.event.ChangeListener");d(c$,"getChangeListeners",function(){return this.listenerList.getListeners(javax.swing.event.ChangeListener)});d(c$,"fireStateChanged",function(){for(var a=this.listenerList.getListenerList(),b=a.length-2;0<=b;b-=2)a[b]===javax.swing.event.ChangeListener&&(null==this.changeEvent&&(this.changeEvent=new javax.swing.event.ChangeEvent(this)),
+a[b+1].stateChanged(this.changeEvent))});d(c$,"getListeners",function(a){return this.listenerList.getListeners(a)},"Class");e(c$,"setSelectionVisible",function(a){if(a!=this.selectionVisible)if(this.selectionVisible=a){if(a=this.component.getHighlighter(),this.dot!=this.mark&&null!=a&&null==this.selectionTag){var b=Math.min(this.dot,this.mark),c=Math.max(this.dot,this.mark),f=this.getSelectionPainter();try{this.selectionTag=a.addHighlight(b,c,f)}catch(l){if(y(l,javax.swing.text.BadLocationException))this.selectionTag=
+null;else throw l;}}}else null!=this.selectionTag&&(a=this.component.getHighlighter(),a.removeHighlight(this.selectionTag),this.selectionTag=null)},"~B");e(c$,"isSelectionVisible",function(){return this.selectionVisible});d(c$,"isActive",function(){return this.active});e(c$,"isVisible",function(){return this.visible});e(c$,"setVisible",function(a){if(null!=this.component){this.active=a;var b=this.component.getUI();if(this.visible!=a){this.visible=a;try{var c=b.modelToView(this.component,this.dot,
+this.dotBias);this.damage(c)}catch(f){if(!y(f,javax.swing.text.BadLocationException))throw f;}}}},"~B");e(c$,"setBlinkRate",function(){},"~N");e(c$,"getBlinkRate",function(){return 0});e(c$,"getDot",function(){return this.dot});e(c$,"getMark",function(){return this.mark});d(c$,"setDot",function(a){this.setDot(a,javax.swing.text.Position.Bias.Forward)},"~N");d(c$,"moveDot",function(a){this.moveDot(a,javax.swing.text.Position.Bias.Forward)},"~N");d(c$,"moveDot",function(a,b){if(null==b)throw new IllegalArgumentException("null bias");
+if(this.component.isEnabled()){if(a!=this.dot){var c=this.component.getNavigationFilter();null!=c?c.moveDot(this.getFilterBypass(),a,b):this.handleMoveDot(a,b)}}else this.setDot(a,b)},"~N,javax.swing.text.Position.Bias");d(c$,"handleMoveDot",function(a,b){this.changeCaretPosition(a,b);if(this.selectionVisible){var c=this.component.getHighlighter();if(null!=c){var f=Math.min(a,this.mark),l=Math.max(a,this.mark);if(f==l)null!=this.selectionTag&&(c.removeHighlight(this.selectionTag),this.selectionTag=
+null);else try{if(null!=this.selectionTag)c.changeHighlight(this.selectionTag,f,l);else{var d=this.getSelectionPainter();this.selectionTag=c.addHighlight(f,l,d)}}catch(g){if(y(g,javax.swing.text.BadLocationException))throw new javax.swing.text.StateInvariantError("Bad caret position");throw g;}}}},"~N,javax.swing.text.Position.Bias");d(c$,"setDot",function(a,b){if(null==b)throw new IllegalArgumentException("null bias");var c=this.component.getNavigationFilter();null!=c?c.setDot(this.getFilterBypass(),
+a,b):this.handleSetDot(a,b)},"~N,javax.swing.text.Position.Bias");d(c$,"handleSetDot",function(a,b){var c=this.component.getDocument();null!=c&&(a=Math.min(a,c.getLength()));a=Math.max(a,0);0==a&&(b=javax.swing.text.Position.Bias.Forward);this.mark=a;(this.dot!=a||this.dotBias!==b||null!=this.selectionTag||this.forceCaretPositionChange)&&this.changeCaretPosition(a,b);this.markBias=this.dotBias;this.markLTR=this.dotLTR;c=this.component.getHighlighter();null!=c&&null!=this.selectionTag&&(c.removeHighlight(this.selectionTag),
+this.selectionTag=null)},"~N,javax.swing.text.Position.Bias");d(c$,"getDotBias",function(){return this.dotBias});d(c$,"getMarkBias",function(){return this.markBias});d(c$,"isDotLeftToRight",function(){return this.dotLTR});d(c$,"isMarkLeftToRight",function(){return this.markLTR});d(c$,"isPositionLTR",function(a,b){var c=this.component.getDocument();return v(c,javax.swing.text.AbstractDocument)?(b===javax.swing.text.Position.Bias.Backward&&0>--a&&(a=0),c.isLeftToRight(a,a)):!0},"~N,javax.swing.text.Position.Bias");
+d(c$,"guessBiasForOffset",function(a,b,c){c!=this.isPositionLTR(a,b)?b=javax.swing.text.Position.Bias.Backward:b!==javax.swing.text.Position.Bias.Backward&&c!=this.isPositionLTR(a,javax.swing.text.Position.Bias.Backward)&&(b=javax.swing.text.Position.Bias.Backward);if(b===javax.swing.text.Position.Bias.Backward&&0<a)try{var f=new javax.swing.text.Segment;this.component.getDocument().getText(a-1,1,f);0<f.count&&"\n"==f.array[f.offset]&&(b=javax.swing.text.Position.Bias.Forward)}catch(l){if(!y(l,javax.swing.text.BadLocationException))throw l;
+}return b},"~N,javax.swing.text.Position.Bias,~B");d(c$,"changeCaretPosition",function(a,b){this.repaint();this.dot=a;this.dotBias=b;this.dotLTR=this.isPositionLTR(a,b);this.fireStateChanged();this.updateSystemSelection();this.setMagicCaretPosition(null);var c=(H("javax.swing.text.DefaultCaret$1")?0:javax.swing.text.DefaultCaret.$DefaultCaret$1$(),C(javax.swing.text.DefaultCaret$1,this,null));javax.swing.SwingUtilities.invokeLater(c)},"~N,javax.swing.text.Position.Bias");d(c$,"repaintNewCaret",function(){if(null!=
+this.component){var a=this.component.getUI(),b=this.component.getDocument();if(null!=a&&null!=b){var c;try{c=a.modelToView(this.component,this.dot,this.dotBias)}catch(f){if(y(f,javax.swing.text.BadLocationException))c=null;else throw f;}null!=c&&(this.adjustVisibility(c),null==this.getMagicCaretPosition()&&this.setMagicCaretPosition(new java.awt.Point(c.x,c.y)));this.damage(c)}}});d(c$,"updateSystemSelection",function(){});d(c$,"ensureValidPosition",function(){var a=this.component.getDocument().getLength();
+(this.dot>a||this.mark>a)&&this.handleSetDot(a,javax.swing.text.Position.Bias.Forward)});e(c$,"setMagicCaretPosition",function(a){this.magicCaretPosition=a},"java.awt.Point");e(c$,"getMagicCaretPosition",function(){return this.magicCaretPosition});e(c$,"equals",function(a){return this===a},"~O");e(c$,"toString",function(){var a="Dot=("+this.dot+", "+this.dotBias+")";return a+=" Mark=("+this.mark+", "+this.markBias+")"});d(c$,"getFilterBypass",function(){null==this.filterBypass&&(this.filterBypass=
+C(javax.swing.text.DefaultCaret.DefaultFilterBypass,this,null));return this.filterBypass});d(c$,"_contains",function(a,b,c,f){var l=this.width,d=this.height;if(0>(l|d|c|f))return!1;var g=this.x,h=this.y;if(a<g||b<h)return!1;if(0<c)if(l+=g,c+=a,c<=a){if(l>=g||c>l)return!1}else{if(l>=g&&c>l)return!1}else if(g+l<a)return!1;if(0<f)if(d+=h,f+=b,f<=b){if(d>=h||f>d)return!1}else{if(d>=h&&f>d)return!1}else if(h+d<b)return!1;return!0},"~N,~N,~N,~N");d(c$,"getCaretWidth",function(a){return-1<this.aspectRatio?
+I(this.aspectRatio*a)+1:-1<this.caretWidth?this.caretWidth:1},"~N");c$.$DefaultCaret$SafeScroller$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.r=null;r(this,arguments)},javax.swing.text.DefaultCaret,"SafeScroller",null,Runnable);m(c$,function(a){this.r=a},"java.awt.Rectangle");e(c$,"run",function(){null!=this.b$["javax.swing.text.DefaultCaret"].component&&this.b$["javax.swing.text.DefaultCaret"].component.scrollRectToVisible(this.r)});c$=z()};c$.$DefaultCaret$Handler$=function(){A(self.c$);
+c$=s(function(){O(this,arguments);r(this,arguments)},javax.swing.text.DefaultCaret,"Handler",null,[java.beans.PropertyChangeListener,javax.swing.event.DocumentListener,java.awt.event.ActionListener]);e(c$,"actionPerformed",function(){if((0==this.b$["javax.swing.text.DefaultCaret"].width||0==this.b$["javax.swing.text.DefaultCaret"].height)&&null!=this.b$["javax.swing.text.DefaultCaret"].component){var a=this.b$["javax.swing.text.DefaultCaret"].component.getUI();try{var b=a.modelToView(this.b$["javax.swing.text.DefaultCaret"].component,
+this.b$["javax.swing.text.DefaultCaret"].dot,this.b$["javax.swing.text.DefaultCaret"].dotBias);null!=b&&(0!=b.width&&0!=b.height)&&this.b$["javax.swing.text.DefaultCaret"].damage(b)}catch(c){if(!y(c,javax.swing.text.BadLocationException))throw c;}}this.b$["javax.swing.text.DefaultCaret"].visible=!this.b$["javax.swing.text.DefaultCaret"].visible;this.b$["javax.swing.text.DefaultCaret"].repaint()},"java.awt.event.ActionEvent");e(c$,"insertUpdate",function(a){if(1==this.b$["javax.swing.text.DefaultCaret"].getUpdatePolicy()||
+0==this.b$["javax.swing.text.DefaultCaret"].getUpdatePolicy()&&!javax.swing.SwingUtilities.isEventDispatchThread()){if((a.getOffset()<=this.b$["javax.swing.text.DefaultCaret"].dot||a.getOffset()<=this.b$["javax.swing.text.DefaultCaret"].mark)&&null!=this.b$["javax.swing.text.DefaultCaret"].selectionTag)try{this.b$["javax.swing.text.DefaultCaret"].component.getHighlighter().changeHighlight(this.b$["javax.swing.text.DefaultCaret"].selectionTag,Math.min(this.b$["javax.swing.text.DefaultCaret"].dot,this.b$["javax.swing.text.DefaultCaret"].mark),
+Math.max(this.b$["javax.swing.text.DefaultCaret"].dot,this.b$["javax.swing.text.DefaultCaret"].mark))}catch(b){if(y(b,javax.swing.text.BadLocationException))b.printStackTrace();else throw b;}}else{var c=a.getOffset(),f=a.getLength(),l=this.b$["javax.swing.text.DefaultCaret"].dot,d=0;if(v(a,javax.swing.text.AbstractDocument.UndoRedoDocumentEvent))this.b$["javax.swing.text.DefaultCaret"].setDot(c+f);else if(l>=c&&(l+=f,d|=1),a=this.b$["javax.swing.text.DefaultCaret"].mark,a>=c&&(a+=f,d|=2),0!=d){f=
+this.b$["javax.swing.text.DefaultCaret"].dotBias;if(this.b$["javax.swing.text.DefaultCaret"].dot==c){var c=this.b$["javax.swing.text.DefaultCaret"].component.getDocument(),g;try{var h=new javax.swing.text.Segment;c.getText(l-1,1,h);g=0<h.count&&"\n"==h.array[h.offset]}catch(j){if(y(j,javax.swing.text.BadLocationException))g=!1;else throw j;}f=g?javax.swing.text.Position.Bias.Forward:javax.swing.text.Position.Bias.Backward}a==l?this.b$["javax.swing.text.DefaultCaret"].setDot(l,f):(this.b$["javax.swing.text.DefaultCaret"].setDot(a,
+this.b$["javax.swing.text.DefaultCaret"].markBias),this.b$["javax.swing.text.DefaultCaret"].getDot()==a&&this.b$["javax.swing.text.DefaultCaret"].moveDot(l,f));this.b$["javax.swing.text.DefaultCaret"].ensureValidPosition()}}},"javax.swing.event.DocumentEvent");e(c$,"removeUpdate",function(a){if(1==this.b$["javax.swing.text.DefaultCaret"].getUpdatePolicy()||0==this.b$["javax.swing.text.DefaultCaret"].getUpdatePolicy()&&!javax.swing.SwingUtilities.isEventDispatchThread()){var b=this.b$["javax.swing.text.DefaultCaret"].component.getDocument().getLength();
+this.b$["javax.swing.text.DefaultCaret"].dot=Math.min(this.b$["javax.swing.text.DefaultCaret"].dot,b);this.b$["javax.swing.text.DefaultCaret"].mark=Math.min(this.b$["javax.swing.text.DefaultCaret"].mark,b);if((a.getOffset()<this.b$["javax.swing.text.DefaultCaret"].dot||a.getOffset()<this.b$["javax.swing.text.DefaultCaret"].mark)&&null!=this.b$["javax.swing.text.DefaultCaret"].selectionTag)try{this.b$["javax.swing.text.DefaultCaret"].component.getHighlighter().changeHighlight(this.b$["javax.swing.text.DefaultCaret"].selectionTag,
+Math.min(this.b$["javax.swing.text.DefaultCaret"].dot,this.b$["javax.swing.text.DefaultCaret"].mark),Math.max(this.b$["javax.swing.text.DefaultCaret"].dot,this.b$["javax.swing.text.DefaultCaret"].mark))}catch(c){if(y(c,javax.swing.text.BadLocationException))c.printStackTrace();else throw c;}}else{var b=a.getOffset(),f=b+a.getLength(),l=this.b$["javax.swing.text.DefaultCaret"].dot,d=!1,g=this.b$["javax.swing.text.DefaultCaret"].mark,h=!1;if(v(a,javax.swing.text.AbstractDocument.UndoRedoDocumentEvent))this.b$["javax.swing.text.DefaultCaret"].setDot(b);
+else{l>=f?(l-=f-b,l==f&&(d=!0)):l>=b&&(l=b,d=!0);g>=f?(g-=f-b,g==f&&(h=!0)):g>=b&&(g=b,h=!0);if(g==l){this.b$["javax.swing.text.DefaultCaret"].forceCaretPositionChange=!0;try{this.b$["javax.swing.text.DefaultCaret"].setDot(l,this.b$["javax.swing.text.DefaultCaret"].guessBiasForOffset(l,this.b$["javax.swing.text.DefaultCaret"].dotBias,this.b$["javax.swing.text.DefaultCaret"].dotLTR))}finally{this.b$["javax.swing.text.DefaultCaret"].forceCaretPositionChange=!1}}else a=this.b$["javax.swing.text.DefaultCaret"].dotBias,
+b=this.b$["javax.swing.text.DefaultCaret"].markBias,d&&(a=this.b$["javax.swing.text.DefaultCaret"].guessBiasForOffset(l,a,this.b$["javax.swing.text.DefaultCaret"].dotLTR)),h&&(b=this.b$["javax.swing.text.DefaultCaret"].guessBiasForOffset(this.b$["javax.swing.text.DefaultCaret"].mark,b,this.b$["javax.swing.text.DefaultCaret"].markLTR)),this.b$["javax.swing.text.DefaultCaret"].setDot(g,b),this.b$["javax.swing.text.DefaultCaret"].getDot()==g&&this.b$["javax.swing.text.DefaultCaret"].moveDot(l,a);this.b$["javax.swing.text.DefaultCaret"].ensureValidPosition()}}},
+"javax.swing.event.DocumentEvent");e(c$,"changedUpdate",function(a){1==this.b$["javax.swing.text.DefaultCaret"].getUpdatePolicy()||0==this.b$["javax.swing.text.DefaultCaret"].getUpdatePolicy()&&!javax.swing.SwingUtilities.isEventDispatchThread()||v(a,javax.swing.text.AbstractDocument.UndoRedoDocumentEvent)&&this.b$["javax.swing.text.DefaultCaret"].setDot(a.getOffset()+a.getLength())},"javax.swing.event.DocumentEvent");e(c$,"propertyChange",function(a){var b=a.getOldValue(),c=a.getNewValue();v(b,javax.swing.text.Document)||
+v(c,javax.swing.text.Document)?(this.b$["javax.swing.text.DefaultCaret"].setDot(0),null!=b&&b.removeDocumentListener(this),null!=c&&c.addDocumentListener(this)):"enabled".equals(a.getPropertyName())?(a=a.getNewValue(),this.b$["javax.swing.text.DefaultCaret"].component.isFocusOwner()&&(a===Boolean.TRUE?(this.b$["javax.swing.text.DefaultCaret"].component.isEditable()&&this.b$["javax.swing.text.DefaultCaret"].setVisible(!0),this.b$["javax.swing.text.DefaultCaret"].setSelectionVisible(!0)):(this.b$["javax.swing.text.DefaultCaret"].setVisible(!1),
+this.b$["javax.swing.text.DefaultCaret"].setSelectionVisible(!1)))):"caretWidth".equals(a.getPropertyName())?(a=a.getNewValue(),this.b$["javax.swing.text.DefaultCaret"].caretWidth=null!=a?a.intValue():-1,this.b$["javax.swing.text.DefaultCaret"].repaint()):"caretAspectRatio".equals(a.getPropertyName())&&(a=a.getNewValue(),this.b$["javax.swing.text.DefaultCaret"].aspectRatio=null!=a?a.floatValue():-1,this.b$["javax.swing.text.DefaultCaret"].repaint())},"java.beans.PropertyChangeEvent");c$=z()};c$.$DefaultCaret$DefaultFilterBypass$=
+function(){A(self.c$);c$=s(function(){O(this,arguments);r(this,arguments)},javax.swing.text.DefaultCaret,"DefaultFilterBypass",javax.swing.text.NavigationFilter.FilterBypass);e(c$,"getCaret",function(){return this.b$["javax.swing.text.DefaultCaret"]});e(c$,"setDot",function(a,b){this.b$["javax.swing.text.DefaultCaret"].handleSetDot(a,b)},"~N,javax.swing.text.Position.Bias");e(c$,"moveDot",function(a,b){this.b$["javax.swing.text.DefaultCaret"].handleMoveDot(a,b)},"~N,javax.swing.text.Position.Bias");
+c$=z()};c$.$DefaultCaret$1$=function(){A(self.c$);c$=L(javax.swing.text,"DefaultCaret$1",null,Runnable);e(c$,"run",function(){this.b$["javax.swing.text.DefaultCaret"].repaintNewCaret()});c$=z()};G(c$,"UPDATE_WHEN_ON_EDT",0,"NEVER_UPDATE",1,"ALWAYS_UPDATE",2,"$selectWord",null,"selectLine",null)});p("javax.swing.text");M(javax.swing.text,"Caret");p("javax.swing.text");c$=B(javax.swing.text,"NavigationFilter");d(c$,"setDot",function(a,b,c){a.setDot(b,c)},"javax.swing.text.NavigationFilter.FilterBypass,~N,javax.swing.text.Position.Bias");
+d(c$,"moveDot",function(a,b,c){a.moveDot(b,c)},"javax.swing.text.NavigationFilter.FilterBypass,~N,javax.swing.text.Position.Bias");d(c$,"getNextVisualPositionFrom",function(a,b,c,f,l){return a.getUI().getNextVisualPositionFrom(a,b,c,f,l)},"javax.swing.text.JTextComponent,~N,javax.swing.text.Position.Bias,~N,~A");A(self.c$);c$=B(javax.swing.text.NavigationFilter,"FilterBypass");c$=z();p("javax.swing.text");q("javax.swing.event.DocumentEvent javax.swing.text.DocumentFilter $.Element $.JSMinimalAbstractDocument $.MutableAttributeSet javax.swing.tree.TreeNode javax.swing.undo.AbstractUndoableEdit $.CompoundEdit javax.swing.event.EventListenerList".split(" "),
+"javax.swing.text.AbstractDocument","java.lang.Boolean java.util.Hashtable $.Vector javax.swing.UIManager javax.swing.event.DocumentEvent.ElementChange javax.swing.event.DocumentListener $.UndoableEditEvent $.UndoableEditListener javax.swing.text.BadLocationException $.SegmentCache $.StateInvariantError $.StyleConstants $.StyleContext $.Utilities".split(" "),function(){c$=s(function(){this.filterBypass=this.documentFilter=this.bidiRoot=this.context=this.data=this.listenerList=this.documentProperties=
+null;H("javax.swing.text.AbstractDocument.AbstractElement")||javax.swing.text.AbstractDocument.$AbstractDocument$AbstractElement$();H("javax.swing.text.AbstractDocument.BranchElement")||javax.swing.text.AbstractDocument.$AbstractDocument$BranchElement$();H("javax.swing.text.AbstractDocument.LeafElement")||javax.swing.text.AbstractDocument.$AbstractDocument$LeafElement$();H("javax.swing.text.AbstractDocument.DefaultDocumentEvent")||javax.swing.text.AbstractDocument.$AbstractDocument$DefaultDocumentEvent$();
+H("javax.swing.text.AbstractDocument.UndoRedoDocumentEvent")||javax.swing.text.AbstractDocument.$AbstractDocument$UndoRedoDocumentEvent$();H("javax.swing.text.AbstractDocument.DefaultFilterBypass")||javax.swing.text.AbstractDocument.$AbstractDocument$DefaultFilterBypass$();r(this,arguments)},javax.swing.text,"AbstractDocument",null,javax.swing.text.JSMinimalAbstractDocument);J(c$,function(){this.listenerList=new javax.swing.event.EventListenerList});m(c$,function(a){this.construct(a,javax.swing.text.StyleContext.getDefaultStyleContext())},
+"javax.swing.text.AbstractDocument.Content");m(c$,function(a,b){this.data=a;this.context=b},"javax.swing.text.AbstractDocument.Content,javax.swing.text.AbstractDocument.AttributeContext");d(c$,"getDocumentProperties",function(){null==this.documentProperties&&(this.documentProperties=new java.util.Hashtable(2));return this.documentProperties});d(c$,"setDocumentProperties",function(a){this.documentProperties=a},"java.util.Dictionary");d(c$,"fireInsertUpdate",function(a){for(var b=this.listenerList.getListenerList(),
+c=b.length-2;0<=c;c-=2)b[c]===javax.swing.event.DocumentListener&&b[c+1].insertUpdate(a)},"javax.swing.event.DocumentEvent");d(c$,"fireChangedUpdate",function(a){for(var b=this.listenerList.getListenerList(),c=b.length-2;0<=c;c-=2)b[c]===javax.swing.event.DocumentListener&&b[c+1].changedUpdate(a)},"javax.swing.event.DocumentEvent");d(c$,"fireRemoveUpdate",function(a){for(var b=this.listenerList.getListenerList(),c=b.length-2;0<=c;c-=2)b[c]===javax.swing.event.DocumentListener&&b[c+1].removeUpdate(a)},
+"javax.swing.event.DocumentEvent");d(c$,"fireUndoableEditUpdate",function(a){for(var b=this.listenerList.getListenerList(),c=b.length-2;0<=c;c-=2)b[c]===javax.swing.event.UndoableEditListener&&b[c+1].undoableEditHappened(a)},"javax.swing.event.UndoableEditEvent");d(c$,"getListeners",function(a){return this.listenerList.getListeners(a)},"Class");e(c$,"getAsynchronousLoadPriority",function(){var a=this.getProperty("load priority");return null!=a?a.intValue():-1});d(c$,"setAsynchronousLoadPriority",
+function(a){a=0<=a?new Integer(a):null;this.putProperty("load priority",a)},"~N");e(c$,"setDocumentFilter",function(a){this.documentFilter=a},"javax.swing.text.DocumentFilter");d(c$,"getDocumentFilter",function(){return this.documentFilter});e(c$,"getLength",function(){return this.data.length()-1});e(c$,"addDocumentListener",function(a){this.listenerList.add(javax.swing.event.DocumentListener,a)},"javax.swing.event.DocumentListener");e(c$,"removeDocumentListener",function(a){this.listenerList.remove(javax.swing.event.DocumentListener,
+a)},"javax.swing.event.DocumentListener");d(c$,"getDocumentListeners",function(){return this.listenerList.getListeners(javax.swing.event.DocumentListener)});e(c$,"addUndoableEditListener",function(a){this.listenerList.add(javax.swing.event.UndoableEditListener,a)},"javax.swing.event.UndoableEditListener");e(c$,"removeUndoableEditListener",function(a){this.listenerList.remove(javax.swing.event.UndoableEditListener,a)},"javax.swing.event.UndoableEditListener");d(c$,"getUndoableEditListeners",function(){return this.listenerList.getListeners(javax.swing.event.UndoableEditListener)});
+e(c$,"getProperty",function(a){return this.getDocumentProperties().get(a)},"~O");e(c$,"putProperty",function(a,b){null!=b?this.getDocumentProperties().put(a,b):this.getDocumentProperties().remove(a)},"~O,~O");e(c$,"remove",function(a,b){var c=this.getDocumentFilter();this.writeLock();try{null!=c?c.remove(this.getFilterBypass(),a,b):this.handleRemove(a,b)}finally{this.writeUnlock()}},"~N,~N");d(c$,"handleRemove",function(a,b){if(0<b){if(0>a||a+b>this.getLength())throw new javax.swing.text.BadLocationException("Invalid remove",
+this.getLength()+1);var c=C(javax.swing.text.AbstractDocument.DefaultDocumentEvent,this,null,a,b,javax.swing.event.DocumentEvent.EventType.REMOVE),f=!1,f=javax.swing.text.Utilities.isComposedTextElement(this,a);this.removeUpdate(c);var l=this.data.remove(a,b);null!=l&&c.addEdit(l);this.postRemoveUpdate(c);c.end();this.fireRemoveUpdate(c);null!=l&&!f&&this.fireUndoableEditUpdate(new javax.swing.event.UndoableEditEvent(this,c))}},"~N,~N");e(c$,"replace",function(a,b,c,f){if(!(0==b&&(null==c||0==c.length))){var l=
+this.getDocumentFilter();this.writeLock();try{null!=l?l.replace(this.getFilterBypass(),a,b,c,f):(0<b&&this.remove(a,b),null!=c&&0<c.length&&this.insertString(a,c,f))}finally{this.writeUnlock()}}},"~N,~N,~S,javax.swing.text.AttributeSet");e(c$,"insertString",function(a,b,c){if(!(null==b||0==b.length)){var f=this.getDocumentFilter();this.writeLock();try{null!=f?f.insertString(this.getFilterBypass(),a,b,c):this.handleInsertString(a,b,c)}finally{this.writeUnlock()}}},"~N,~S,javax.swing.text.AttributeSet");
+d(c$,"handleInsertString",function(a,b,c){if(!(null==b||0==b.length)){var f=this.data.insertString(a,b);a=C(javax.swing.text.AbstractDocument.DefaultDocumentEvent,this,null,a,b.length,javax.swing.event.DocumentEvent.EventType.INSERT);null!=f&&a.addEdit(f);this.getProperty("i18n").equals(Boolean.FALSE);this.insertUpdate(a,c);a.end();this.fireInsertUpdate(a);null!=f&&(null==c||!c.isDefined(javax.swing.text.StyleConstants.ComposedTextAttribute))&&this.fireUndoableEditUpdate(new javax.swing.event.UndoableEditEvent(this,
+a))}},"~N,~S,javax.swing.text.AttributeSet");d(c$,"getText",function(a,b){if(0>b)throw new javax.swing.text.BadLocationException("Length must be positive",b);return this.data.getString(a,b)},"~N,~N");d(c$,"getText",function(a,b,c){if(0>b)throw new javax.swing.text.BadLocationException("Length must be positive",b);this.data.getChars(a,b,c)},"~N,~N,javax.swing.text.Segment");e(c$,"createPosition",function(a){return this.data.createPosition(a)},"~N");e(c$,"getStartPosition",function(){var a;try{a=this.createPosition(0)}catch(b){if(y(b,
+javax.swing.text.BadLocationException))a=null;else throw b;}return a});e(c$,"getEndPosition",function(){var a;try{a=this.createPosition(this.data.length())}catch(b){if(y(b,javax.swing.text.BadLocationException))a=null;else throw b;}return a});e(c$,"getRootElements",function(){var a=Array(2);a[0]=this.getDefaultRootElement();a[1]=this.getBidiRootElement();return a});d(c$,"getFilterBypass",function(){null==this.filterBypass&&(this.filterBypass=C(javax.swing.text.AbstractDocument.DefaultFilterBypass,
+this,null));return this.filterBypass});d(c$,"getBidiRootElement",function(){return this.bidiRoot});d(c$,"isLeftToRight",function(a,b){if(!this.getProperty("i18n").equals(Boolean.TRUE))return!0;var c=this.getBidiRootElement(),f=c.getElementIndex(a),c=c.getElement(f);return c.getEndOffset()>=b?(c=c.getAttributes(),0==javax.swing.text.StyleConstants.getBidiLevel(c)%2):!0},"~N,~N");d(c$,"getAttributeContext",function(){return this.context});d(c$,"insertUpdate",function(a){if(a.type===javax.swing.event.DocumentEvent.EventType.INSERT&&
+0<a.getLength()&&!Boolean.TRUE.equals(this.getProperty(javax.swing.text.AbstractDocument.MultiByteProperty))){var b=javax.swing.text.SegmentCache.getSharedSegment();try{this.getText(a.getOffset(),a.getLength(),b);b.first();do if(255<b.current().charCodeAt(0)){this.putProperty(javax.swing.text.AbstractDocument.MultiByteProperty,Boolean.TRUE);break}while("\uffff"!=b.next())}catch(c){if(!y(c,javax.swing.text.BadLocationException))throw c;}javax.swing.text.SegmentCache.releaseSharedSegment(b)}},"javax.swing.text.AbstractDocument.DefaultDocumentEvent,javax.swing.text.AttributeSet");
+d(c$,"removeUpdate",function(){},"javax.swing.text.AbstractDocument.DefaultDocumentEvent");d(c$,"postRemoveUpdate",function(){},"javax.swing.text.AbstractDocument.DefaultDocumentEvent");d(c$,"getContent",function(){return this.data});d(c$,"createLeafElement",function(a,b,c,f){return C(javax.swing.text.AbstractDocument.LeafElement,this,null,a,b,c,f)},"javax.swing.text.Element,javax.swing.text.AttributeSet,~N,~N");d(c$,"createBranchElement",function(a,b){return C(javax.swing.text.AbstractDocument.BranchElement,
+this,null,a,b)},"javax.swing.text.Element,javax.swing.text.AttributeSet");d(c$,"writeLock",function(){});d(c$,"writeUnlock",function(){});d(c$,"readLock",function(){});d(c$,"readUnlock",function(){});c$.$AbstractDocument$AbstractElement$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.attributes=this.parent=null;r(this,arguments)},javax.swing.text.AbstractDocument,"AbstractElement",null,[javax.swing.text.Element,javax.swing.text.MutableAttributeSet,javax.swing.tree.TreeNode]);m(c$,function(a,
+b){this.parent=a;this.attributes=this.b$["javax.swing.text.AbstractDocument"].getAttributeContext().getEmptySet();null!=b&&this.addAttributes(b)},"javax.swing.text.Element,javax.swing.text.AttributeSet");d(c$,"getAttributeCount",function(){return this.attributes.getAttributeCount()});d(c$,"isDefined",function(a){return this.attributes.isDefined(a)},"~O");d(c$,"isEqual",function(a){return this.attributes.isEqual(a)},"javax.swing.text.AttributeSet");d(c$,"copyAttributes",function(){return this.attributes.copyAttributes()});
+d(c$,"getAttribute",function(a){var b=this.attributes.getAttribute(a);if(null==b){var c=null!=this.parent?this.parent.getAttributes():null;null!=c&&(b=c.getAttribute(a))}return b},"~O");d(c$,"getAttributeNames",function(){return this.attributes.getAttributeNames()});d(c$,"containsAttribute",function(a,b){return this.attributes.containsAttribute(a,b)},"~O,~O");d(c$,"containsAttributes",function(a){return this.attributes.containsAttributes(a)},"javax.swing.text.AttributeSet");d(c$,"getResolveParent",
+function(){var a=this.attributes.getResolveParent();null==a&&null!=this.parent&&(a=this.parent.getAttributes());return a});e(c$,"addAttribute",function(a,b){this.checkForIllegalCast();this.attributes=this.b$["javax.swing.text.AbstractDocument"].getAttributeContext().addAttribute(this.attributes,a,b)},"~O,~O");e(c$,"addAttributes",function(a){this.checkForIllegalCast();this.attributes=this.b$["javax.swing.text.AbstractDocument"].getAttributeContext().addAttributes(this.attributes,a)},"javax.swing.text.AttributeSet");
+e(c$,"removeAttribute",function(a){this.checkForIllegalCast();this.attributes=this.b$["javax.swing.text.AbstractDocument"].getAttributeContext().removeAttribute(this.attributes,a)},"~O");d(c$,"removeAttributes",function(a){this.checkForIllegalCast();this.attributes=this.b$["javax.swing.text.AbstractDocument"].getAttributeContext().removeAttributes(this.attributes,a)},"java.util.Enumeration");d(c$,"removeAttributes",function(a){this.checkForIllegalCast();var b=this.b$["javax.swing.text.AbstractDocument"].getAttributeContext();
+this.attributes=a===this?b.getEmptySet():b.removeAttributes(this.attributes,a)},"javax.swing.text.AttributeSet");e(c$,"setResolveParent",function(a){this.checkForIllegalCast();var b=this.b$["javax.swing.text.AbstractDocument"].getAttributeContext();this.attributes=null!=a?b.addAttribute(this.attributes,javax.swing.text.StyleConstants.ResolveAttribute,a):b.removeAttribute(this.attributes,javax.swing.text.StyleConstants.ResolveAttribute)},"javax.swing.text.AttributeSet");d(c$,"checkForIllegalCast",
+function(){});e(c$,"getDocument",function(){return this.b$["javax.swing.text.AbstractDocument"]});e(c$,"getParentElement",function(){return this.parent});d(c$,"getAttributes",function(){return this});e(c$,"getName",function(){return this.attributes.isDefined("$ename")?this.attributes.getAttribute("$ename"):null});e(c$,"getChildAt",function(a){return this.getElement(a)},"~N");e(c$,"getChildCount",function(){return this.getElementCount()});e(c$,"getParent",function(){return this.getParentElement()});
+e(c$,"getIndex",function(a){for(var b=this.getChildCount()-1;0<=b;b--)if(this.getChildAt(b)===a)return b;return-1},"javax.swing.tree.TreeNode");c$=z()};c$.$AbstractDocument$BranchElement$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.$children=null;this.lastIndex=this.nchildren=0;r(this,arguments)},javax.swing.text.AbstractDocument,"BranchElement",javax.swing.text.AbstractDocument.AbstractElement,null,C(javax.swing.text.AbstractDocument.AbstractElement,this,null,$));m(c$,function(a,
+b){t(this,javax.swing.text.AbstractDocument.BranchElement,[a,b]);this.$children=Array(1);this.nchildren=0;this.lastIndex=-1},"javax.swing.text.Element,javax.swing.text.AttributeSet");d(c$,"positionToElement",function(a){var b=this.getElementIndex(a),b=this.$children[b],c=b.getStartOffset(),f=b.getEndOffset();return a>=c&&a<f?b:null},"~N");d(c$,"replace",function(a,b,c){var f=c.length-b;b=a+b;var l=this.nchildren-b,d=b+f;if(this.nchildren+f>=this.$children.length){var g=Math.max(2*this.$children.length,
+this.nchildren+f),g=Array(g);System.arraycopy(this.$children,0,g,0,a);System.arraycopy(c,0,g,a,c.length);System.arraycopy(this.$children,b,g,d,l);this.$children=g}else System.arraycopy(this.$children,b,this.$children,d,l),System.arraycopy(c,0,this.$children,a,c.length);this.nchildren+=f},"~N,~N,~A");e(c$,"toString",function(){return"BranchElement("+this.getName()+") "+this.getStartOffset()+","+this.getEndOffset()+"\n"});d(c$,"getName",function(){var a=K(this,javax.swing.text.AbstractDocument.BranchElement,
+"getName",[]);null==a&&(a="paragraph");return a});d(c$,"getStartOffset",function(){return this.$children[0].getStartOffset()});e(c$,"getEndOffset",function(){return(0<this.nchildren?this.$children[this.nchildren-1]:this.$children[0]).getEndOffset()});e(c$,"getElement",function(a){return a<this.nchildren?this.$children[a]:null},"~N");e(c$,"getElementCount",function(){return this.nchildren});e(c$,"getElementIndex",function(a){var b=0,c=this.nchildren-1,f=0,l=this.getStartOffset(),d;if(0==this.nchildren)return 0;
+if(a>=this.getEndOffset())return this.nchildren-1;if(this.lastIndex>=b&&this.lastIndex<=c){d=this.$children[this.lastIndex];l=d.getStartOffset();d=d.getEndOffset();if(a>=l&&a<d)return this.lastIndex;a<l?c=this.lastIndex:b=this.lastIndex}for(;b<=c;){f=b+F((c-b)/2);d=this.$children[f];l=d.getStartOffset();d=d.getEndOffset();if(a>=l&&a<d)return this.lastIndex=a=f;a<l?c=f-1:b=f+1}return this.lastIndex=a=a<l?f:f+1},"~N");e(c$,"isLeaf",function(){return!1});e(c$,"getAllowsChildren",function(){return!0});
+e(c$,"children",function(){if(0==this.nchildren)return null;for(var a=new java.util.Vector(this.nchildren),b=0;b<this.nchildren;b++)a.addElement(this.$children[b]);return a.elements()});c$=z()};c$.$AbstractDocument$LeafElement$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.p1=this.p0=null;r(this,arguments)},javax.swing.text.AbstractDocument,"LeafElement",javax.swing.text.AbstractDocument.AbstractElement,null,C(javax.swing.text.AbstractDocument.AbstractElement,this,null,$));m(c$,function(a,
+b,c,f){t(this,javax.swing.text.AbstractDocument.LeafElement,[a,b]);try{this.p0=this.b$["javax.swing.text.AbstractDocument"].createPosition(c),this.p1=this.b$["javax.swing.text.AbstractDocument"].createPosition(f)}catch(l){if(y(l,javax.swing.text.BadLocationException))throw this.p1=this.p0=null,new javax.swing.text.StateInvariantError("Can't create Position references");throw l;}},"javax.swing.text.Element,javax.swing.text.AttributeSet,~N,~N");e(c$,"toString",function(){return"LeafElement("+this.getName()+
+") "+this.p0+","+this.p1+"\n"});e(c$,"getStartOffset",function(){return this.p0.getOffset()});e(c$,"getEndOffset",function(){return this.p1.getOffset()});d(c$,"getName",function(){var a=K(this,javax.swing.text.AbstractDocument.LeafElement,"getName",[]);null==a&&(a="content");return a});e(c$,"getElementIndex",function(){return-1},"~N");e(c$,"getElement",function(){return null},"~N");e(c$,"getElementCount",function(){return 0});e(c$,"isLeaf",function(){return!0});e(c$,"getAllowsChildren",function(){return!1});
+e(c$,"children",function(){return null});c$=z()};c$.$AbstractDocument$DefaultDocumentEvent$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.length=this.offset=0;this.type=this.changeLookup=null;r(this,arguments)},javax.swing.text.AbstractDocument,"DefaultDocumentEvent",javax.swing.undo.CompoundEdit,javax.swing.event.DocumentEvent);m(c$,function(a,b,c){t(this,javax.swing.text.AbstractDocument.DefaultDocumentEvent);this.offset=a;this.length=b;this.type=c},"~N,~N,javax.swing.event.DocumentEvent.EventType");
+e(c$,"toString",function(){return this.edits.toString()});d(c$,"addEdit",function(a){if(null==this.changeLookup&&10<this.edits.size()){this.changeLookup=new java.util.Hashtable;for(var b=this.edits.size(),c=0;c<b;c++){var f=this.edits.elementAt(c);v(f,javax.swing.event.DocumentEvent.ElementChange)&&this.changeLookup.put(f.getElement(),f)}}null!=this.changeLookup&&v(a,javax.swing.event.DocumentEvent.ElementChange)&&(b=a,this.changeLookup.put(b.getElement(),b));return K(this,javax.swing.text.AbstractDocument.DefaultDocumentEvent,
+"addEdit",[a])},"javax.swing.undo.UndoableEdit");d(c$,"redo",function(){this.b$["javax.swing.text.AbstractDocument"].writeLock();try{K(this,javax.swing.text.AbstractDocument.DefaultDocumentEvent,"redo",[]);var a=C(javax.swing.text.AbstractDocument.UndoRedoDocumentEvent,this,null,this,!1);this.type===javax.swing.event.DocumentEvent.EventType.INSERT?this.b$["javax.swing.text.AbstractDocument"].fireInsertUpdate(a):this.type===javax.swing.event.DocumentEvent.EventType.REMOVE?this.b$["javax.swing.text.AbstractDocument"].fireRemoveUpdate(a):
+this.b$["javax.swing.text.AbstractDocument"].fireChangedUpdate(a)}finally{this.b$["javax.swing.text.AbstractDocument"].writeUnlock()}});d(c$,"undo",function(){this.b$["javax.swing.text.AbstractDocument"].writeLock();try{K(this,javax.swing.text.AbstractDocument.DefaultDocumentEvent,"undo",[]);var a=C(javax.swing.text.AbstractDocument.UndoRedoDocumentEvent,this,null,this,!0);this.type===javax.swing.event.DocumentEvent.EventType.REMOVE?this.b$["javax.swing.text.AbstractDocument"].fireInsertUpdate(a):
+this.type===javax.swing.event.DocumentEvent.EventType.INSERT?this.b$["javax.swing.text.AbstractDocument"].fireRemoveUpdate(a):this.b$["javax.swing.text.AbstractDocument"].fireChangedUpdate(a)}finally{this.b$["javax.swing.text.AbstractDocument"].writeUnlock()}});e(c$,"isSignificant",function(){return!0});e(c$,"getPresentationName",function(){var a=this.getType();return a===javax.swing.event.DocumentEvent.EventType.INSERT?javax.swing.UIManager.getString("AbstractDocument.additionText"):a===javax.swing.event.DocumentEvent.EventType.REMOVE?
+javax.swing.UIManager.getString("AbstractDocument.deletionText"):javax.swing.UIManager.getString("AbstractDocument.styleChangeText")});e(c$,"getUndoPresentationName",function(){return javax.swing.UIManager.getString("AbstractDocument.undoText")+" "+this.getPresentationName()});e(c$,"getRedoPresentationName",function(){return javax.swing.UIManager.getString("AbstractDocument.redoText")+" "+this.getPresentationName()});e(c$,"getType",function(){return this.type});e(c$,"getOffset",function(){return this.offset});
+e(c$,"getLength",function(){return this.length});e(c$,"getDocument",function(){return this.b$["javax.swing.text.AbstractDocument"]});e(c$,"getChange",function(a){if(null!=this.changeLookup)return this.changeLookup.get(a);for(var b=this.edits.size(),c=0;c<b;c++){var f=this.edits.elementAt(c);if(v(f,javax.swing.event.DocumentEvent.ElementChange)&&a.equals(f.getElement()))return f}return null},"javax.swing.text.Element");c$=z()};c$.$AbstractDocument$UndoRedoDocumentEvent$=function(){A(self.c$);c$=s(function(){O(this,
+arguments);this.type=this.src=null;r(this,arguments)},javax.swing.text.AbstractDocument,"UndoRedoDocumentEvent",null,javax.swing.event.DocumentEvent);m(c$,function(a,b){this.src=a;this.type=b?a.getType().equals(javax.swing.event.DocumentEvent.EventType.INSERT)?javax.swing.event.DocumentEvent.EventType.REMOVE:a.getType().equals(javax.swing.event.DocumentEvent.EventType.REMOVE)?javax.swing.event.DocumentEvent.EventType.INSERT:a.getType():a.getType()},"javax.swing.text.AbstractDocument.DefaultDocumentEvent,~B");
+d(c$,"getSource",function(){return this.src});e(c$,"getOffset",function(){return this.src.getOffset()});e(c$,"getLength",function(){return this.src.getLength()});e(c$,"getDocument",function(){return this.src.getDocument()});e(c$,"getType",function(){return this.type});e(c$,"getChange",function(a){return this.src.getChange(a)},"javax.swing.text.Element");c$=z()};c$.$AbstractDocument$DefaultFilterBypass$=function(){A(self.c$);c$=s(function(){O(this,arguments);r(this,arguments)},javax.swing.text.AbstractDocument,
+"DefaultFilterBypass",javax.swing.text.DocumentFilter.FilterBypass);e(c$,"getDocument",function(){return this.b$["javax.swing.text.AbstractDocument"]});e(c$,"remove",function(a,b){this.b$["javax.swing.text.AbstractDocument"].handleRemove(a,b)},"~N,~N");e(c$,"insertString",function(a,b,c){this.b$["javax.swing.text.AbstractDocument"].handleInsertString(a,b,c)},"~N,~S,javax.swing.text.AttributeSet");e(c$,"replace",function(a,b,c,f){this.b$["javax.swing.text.AbstractDocument"].handleRemove(a,b);this.b$["javax.swing.text.AbstractDocument"].handleInsertString(a,
+c,f)},"~N,~N,~S,javax.swing.text.AttributeSet");c$=z()};M(javax.swing.text.AbstractDocument,"Content");M(javax.swing.text.AbstractDocument,"AttributeContext");A(self.c$);c$=s(function(){this.e=null;this.index=0;this.added=this.removed=null;r(this,arguments)},javax.swing.text.AbstractDocument,"ElementEdit",javax.swing.undo.AbstractUndoableEdit,javax.swing.event.DocumentEvent.ElementChange);m(c$,function(a,b,c,f){t(this,javax.swing.text.AbstractDocument.ElementEdit);this.e=a;this.index=b;this.removed=
+c;this.added=f},"javax.swing.text.Element,~N,~A,~A");e(c$,"getElement",function(){return this.e});e(c$,"getIndex",function(){return this.index});e(c$,"getChildrenRemoved",function(){return this.removed});e(c$,"getChildrenAdded",function(){return this.added});d(c$,"redo",function(){K(this,javax.swing.text.AbstractDocument.ElementEdit,"redo",[]);var a=this.removed;this.removed=this.added;this.added=a;this.e.replace(this.index,this.removed.length,this.added)});d(c$,"undo",function(){K(this,javax.swing.text.AbstractDocument.ElementEdit,
+"undo",[]);this.e.replace(this.index,this.added.length,this.removed);var a=this.removed;this.removed=this.added;this.added=a});c$=z();G(c$,"BAD_LOCATION","document location failure","ParagraphElementName","paragraph","ContentElementName","content","SectionElementName","section","BidiElementName","bidi level","ElementNameAttribute","$ename","I18NProperty","i18n","MultiByteProperty","multiByte","AsyncLoadPriority","load priority")});p("javax.swing.event");M(javax.swing.event,"DocumentEvent");A(self.c$);
+c$=s(function(){this.typeString=null;r(this,arguments)},javax.swing.event.DocumentEvent,"EventType");m(c$,function(a){this.typeString=a},"~S");e(c$,"toString",function(){return this.typeString});c$.INSERT=c$.prototype.INSERT=new javax.swing.event.DocumentEvent.EventType("INSERT");c$.REMOVE=c$.prototype.REMOVE=new javax.swing.event.DocumentEvent.EventType("REMOVE");c$.CHANGE=c$.prototype.CHANGE=new javax.swing.event.DocumentEvent.EventType("CHANGE");c$=z();M(javax.swing.event.DocumentEvent,"ElementChange");
+p("javax.swing.text");c$=B(javax.swing.text,"DocumentFilter");d(c$,"remove",function(a,b,c){a.remove(b,c)},"javax.swing.text.DocumentFilter.FilterBypass,~N,~N");d(c$,"insertString",function(a,b,c,f){a.insertString(b,c,f)},"javax.swing.text.DocumentFilter.FilterBypass,~N,~S,javax.swing.text.AttributeSet");d(c$,"replace",function(a,b,c,f,l){a.replace(b,c,f,l)},"javax.swing.text.DocumentFilter.FilterBypass,~N,~N,~S,javax.swing.text.AttributeSet");A(self.c$);c$=B(javax.swing.text.DocumentFilter,"FilterBypass");
+c$=z();p("javax.swing.text");M(javax.swing.text,"Element");p("javax.swing.text");q(["javax.swing.text.Document"],"javax.swing.text.JSMinimalAbstractDocument",null,function(){M(javax.swing.text,"JSMinimalAbstractDocument",javax.swing.text.Document)});p("javax.swing.text");c$=M(javax.swing.text,"Document");G(c$,"StreamDescriptionProperty","stream","TitleProperty","title");p("javax.swing.text");q(["javax.swing.text.AttributeSet"],"javax.swing.text.MutableAttributeSet",null,function(){M(javax.swing.text,
+"MutableAttributeSet",javax.swing.text.AttributeSet)});p("javax.swing.text");M(javax.swing.text,"AttributeSet");M(javax.swing.text.AttributeSet,"FontAttribute");M(javax.swing.text.AttributeSet,"ColorAttribute");M(javax.swing.text.AttributeSet,"CharacterAttribute");M(javax.swing.text.AttributeSet,"ParagraphAttribute");p("javax.swing.tree");M(javax.swing.tree,"TreeNode");p("javax.swing.undo");q(["javax.swing.undo.UndoableEdit"],"javax.swing.undo.AbstractUndoableEdit",["javax.swing.UIManager","javax.swing.undo.CannotRedoException",
+"$.CannotUndoException"],function(){c$=s(function(){this.alive=this.hasBeenDone=!1;r(this,arguments)},javax.swing.undo,"AbstractUndoableEdit",null,javax.swing.undo.UndoableEdit);m(c$,function(){this.alive=this.hasBeenDone=!0});e(c$,"die",function(){this.alive=!1});e(c$,"undo",function(){if(!this.canUndo())throw new javax.swing.undo.CannotUndoException;this.hasBeenDone=!1});e(c$,"canUndo",function(){return this.alive&&this.hasBeenDone});e(c$,"redo",function(){if(!this.canRedo())throw new javax.swing.undo.CannotRedoException;
+this.hasBeenDone=!0});e(c$,"canRedo",function(){return this.alive&&!this.hasBeenDone});e(c$,"addEdit",function(){return!1},"javax.swing.undo.UndoableEdit");e(c$,"replaceEdit",function(){return!1},"javax.swing.undo.UndoableEdit");e(c$,"isSignificant",function(){return!0});e(c$,"getPresentationName",function(){return""});e(c$,"getUndoPresentationName",function(){var a=this.getPresentationName();return a="".equals(a)?javax.swing.UIManager.getString("AbstractUndoableEdit.undoText"):javax.swing.UIManager.getString("AbstractUndoableEdit.undoText")+
+" "+a});e(c$,"getRedoPresentationName",function(){var a=this.getPresentationName();return a="".equals(a)?javax.swing.UIManager.getString("AbstractUndoableEdit.redoText"):javax.swing.UIManager.getString("AbstractUndoableEdit.redoText")+" "+a});d(c$,"toString",function(){return K(this,javax.swing.undo.AbstractUndoableEdit,"toString",[])+" hasBeenDone: "+this.hasBeenDone+" alive: "+this.alive});G(c$,"UndoName","Undo","RedoName","Redo")});p("javax.swing.undo");M(javax.swing.undo,"UndoableEdit");p("javax.swing.undo");
+q(["java.lang.RuntimeException"],"javax.swing.undo.CannotRedoException",null,function(){c$=B(javax.swing.undo,"CannotRedoException",RuntimeException)});p("javax.swing.undo");q(["java.lang.RuntimeException"],"javax.swing.undo.CannotUndoException",null,function(){c$=B(javax.swing.undo,"CannotUndoException",RuntimeException)});p("javax.swing.undo");q(["javax.swing.undo.AbstractUndoableEdit"],"javax.swing.undo.CompoundEdit",["java.util.Vector"],function(){c$=s(function(){this.inProgress=!1;this.edits=
+null;r(this,arguments)},javax.swing.undo,"CompoundEdit",javax.swing.undo.AbstractUndoableEdit);m(c$,function(){t(this,javax.swing.undo.CompoundEdit);this.inProgress=!0;this.edits=new java.util.Vector});d(c$,"undo",function(){K(this,javax.swing.undo.CompoundEdit,"undo",[]);for(var a=this.edits.size();0<a--;)this.edits.elementAt(a).undo()});d(c$,"redo",function(){K(this,javax.swing.undo.CompoundEdit,"redo",[]);for(var a=this.edits.elements();a.hasMoreElements();)a.nextElement().redo()});d(c$,"lastEdit",
+function(){var a=this.edits.size();return 0<a?this.edits.elementAt(a-1):null});d(c$,"die",function(){for(var a=this.edits.size()-1;0<=a;a--)this.edits.elementAt(a).die();K(this,javax.swing.undo.CompoundEdit,"die",[])});e(c$,"addEdit",function(a){if(this.inProgress){var b=this.lastEdit();null==b?this.edits.addElement(a):b.addEdit(a)||(a.replaceEdit(b)&&this.edits.removeElementAt(this.edits.size()-1),this.edits.addElement(a));return!0}return!1},"javax.swing.undo.UndoableEdit");d(c$,"end",function(){this.inProgress=
+!1});d(c$,"canUndo",function(){return!this.isInProgress()&&K(this,javax.swing.undo.CompoundEdit,"canUndo",[])});d(c$,"canRedo",function(){return!this.isInProgress()&&K(this,javax.swing.undo.CompoundEdit,"canRedo",[])});d(c$,"isInProgress",function(){return this.inProgress});e(c$,"isSignificant",function(){for(var a=this.edits.elements();a.hasMoreElements();)if(a.nextElement().isSignificant())return!0;return!1});d(c$,"getPresentationName",function(){var a=this.lastEdit();return null!=a?a.getPresentationName():
+K(this,javax.swing.undo.CompoundEdit,"getPresentationName",[])});d(c$,"getUndoPresentationName",function(){var a=this.lastEdit();return null!=a?a.getUndoPresentationName():K(this,javax.swing.undo.CompoundEdit,"getUndoPresentationName",[])});d(c$,"getRedoPresentationName",function(){var a=this.lastEdit();return null!=a?a.getRedoPresentationName():K(this,javax.swing.undo.CompoundEdit,"getRedoPresentationName",[])});d(c$,"toString",function(){return K(this,javax.swing.undo.CompoundEdit,"toString",[])+
+" inProgress: "+this.inProgress+" edits: "+this.edits})});p("javax.swing.event");q(["java.util.EventObject"],"javax.swing.event.UndoableEditEvent",null,function(){c$=s(function(){this.myEdit=null;r(this,arguments)},javax.swing.event,"UndoableEditEvent",java.util.EventObject);m(c$,function(a,b){t(this,javax.swing.event.UndoableEditEvent,[a]);this.myEdit=b},"~O,javax.swing.undo.UndoableEdit");d(c$,"getEdit",function(){return this.myEdit})});p("javax.swing.event");q(["java.util.EventListener"],"javax.swing.event.UndoableEditListener",
+null,function(){M(javax.swing.event,"UndoableEditListener",java.util.EventListener)});p("javax.swing.text");q(["javax.swing.text.Segment"],"javax.swing.text.SegmentCache",["java.util.ArrayList"],function(){c$=s(function(){this.segments=null;r(this,arguments)},javax.swing.text,"SegmentCache");c$.getSharedInstance=d(c$,"getSharedInstance",function(){return javax.swing.text.SegmentCache.sharedCache});c$.getSharedSegment=d(c$,"getSharedSegment",function(){return javax.swing.text.SegmentCache.getSharedInstance().getSegment()});
+c$.releaseSharedSegment=d(c$,"releaseSharedSegment",function(a){javax.swing.text.SegmentCache.getSharedInstance().releaseSegment(a)},"javax.swing.text.Segment");m(c$,function(){this.segments=new java.util.ArrayList(11)});d(c$,"getSegment",function(){var a=this.segments.size();return 0<a?this.segments.remove(a-1):new javax.swing.text.SegmentCache.CachedSegment});d(c$,"releaseSegment",function(a){v(a,javax.swing.text.SegmentCache.CachedSegment)&&(a.array=null,a.count=0,this.segments.add(a))},"javax.swing.text.Segment");
+A(self.c$);c$=B(javax.swing.text.SegmentCache,"CachedSegment",javax.swing.text.Segment);c$=z();c$.sharedCache=c$.prototype.sharedCache=new javax.swing.text.SegmentCache});p("javax.swing.text");q(["java.text.CharacterIterator"],"javax.swing.text.Segment",["java.lang.IllegalArgumentException","$.StringIndexOutOfBoundsException"],function(){c$=s(function(){this.array=null;this.count=this.offset=0;this.partialReturn=!1;this.pos=0;r(this,arguments)},javax.swing.text,"Segment",null,[Cloneable,java.text.CharacterIterator,
+CharSequence]);m(c$,function(){this.construct(null,0,0)});m(c$,function(a,b,c){this.array=a;this.offset=b;this.count=c;this.partialReturn=!1},"~A,~N,~N");d(c$,"setPartialReturn",function(a){this.partialReturn=a},"~B");d(c$,"isPartialReturn",function(){return this.partialReturn});e(c$,"toString",function(){return null!=this.array?String.instantialize(this.array,this.offset,this.count):String.instantialize()});e(c$,"first",function(){this.pos=this.offset;return 0!=this.count?this.array[this.pos]:"\uffff"});
+e(c$,"last",function(){this.pos=this.offset+this.count;return 0!=this.count?(this.pos-=1,this.array[this.pos]):"\uffff"});e(c$,"current",function(){return 0!=this.count&&this.pos<this.offset+this.count?this.array[this.pos]:"\uffff"});e(c$,"next",function(){this.pos+=1;var a=this.offset+this.count;return this.pos>=a?(this.pos=a,"\uffff"):this.current()});e(c$,"previous",function(){if(this.pos==this.offset)return"\uffff";this.pos-=1;return this.current()});e(c$,"setIndex",function(a){var b=this.offset+
+this.count;if(a<this.offset||a>b)throw new IllegalArgumentException("bad position: "+a);this.pos=a;return this.pos!=b&&0!=this.count?this.array[this.pos]:"\uffff"},"~N");e(c$,"getBeginIndex",function(){return this.offset});e(c$,"getEndIndex",function(){return this.offset+this.count});e(c$,"getIndex",function(){return this.pos});e(c$,"charAt",function(a){if(0>a||a>=this.count)throw new StringIndexOutOfBoundsException(a);return this.array[this.offset+a]},"~N");e(c$,"length",function(){return this.count});
+e(c$,"subSequence",function(a,b){if(0>a)throw new StringIndexOutOfBoundsException(a);if(b>this.count)throw new StringIndexOutOfBoundsException(b);if(a>b)throw new StringIndexOutOfBoundsException(b-a);var c=new javax.swing.text.Segment;c.array=this.array;c.offset=this.offset+a;c.count=b-a;return c},"~N,~N");e(c$,"clone",function(){var a;try{a=K(this,javax.swing.text.Segment,"clone",[])}catch(b){if(y(b,CloneNotSupportedException))a=null;else throw b;}return a})});p("javax.swing.text");q(["java.lang.Error"],
+"javax.swing.text.StateInvariantError",null,function(){c$=B(javax.swing.text,"StateInvariantError",Error)});p("javax.swing.text");q(["javax.swing.text.AttributeSet"],"javax.swing.text.StyleConstants",["java.lang.Boolean","$.Float","java.awt.Color"],function(){c$=s(function(){this.representation=null;r(this,arguments)},javax.swing.text,"StyleConstants");e(c$,"toString",function(){return this.representation});c$.getBidiLevel=d(c$,"getBidiLevel",function(a){a=a.getAttribute(javax.swing.text.StyleConstants.BidiLevel);
+return null!=a?a.intValue():0},"javax.swing.text.AttributeSet");c$.setBidiLevel=d(c$,"setBidiLevel",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.BidiLevel,new Integer(b))},"javax.swing.text.MutableAttributeSet,~N");c$.getComponent=d(c$,"getComponent",function(a){return a.getAttribute(javax.swing.text.StyleConstants.ComponentAttribute)},"javax.swing.text.AttributeSet");c$.setComponent=d(c$,"setComponent",function(a,b){a.addAttribute("$ename","component");a.addAttribute(javax.swing.text.StyleConstants.ComponentAttribute,
+b)},"javax.swing.text.MutableAttributeSet,java.awt.Component");c$.getIcon=d(c$,"getIcon",function(a){return a.getAttribute(javax.swing.text.StyleConstants.IconAttribute)},"javax.swing.text.AttributeSet");c$.setIcon=d(c$,"setIcon",function(a,b){a.addAttribute("$ename","icon");a.addAttribute(javax.swing.text.StyleConstants.IconAttribute,b)},"javax.swing.text.MutableAttributeSet,javax.swing.Icon");c$.getFontFamily=d(c$,"getFontFamily",function(a){a=a.getAttribute(javax.swing.text.StyleConstants.FontFamily);
+null==a&&(a="Monospaced");return a},"javax.swing.text.AttributeSet");c$.setFontFamily=d(c$,"setFontFamily",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.FontFamily,b)},"javax.swing.text.MutableAttributeSet,~S");c$.getFontSize=d(c$,"getFontSize",function(a){a=a.getAttribute(javax.swing.text.StyleConstants.FontSize);return null!=a?a.intValue():12},"javax.swing.text.AttributeSet");c$.setFontSize=d(c$,"setFontSize",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.FontSize,new Integer(b))},
+"javax.swing.text.MutableAttributeSet,~N");c$.isBold=d(c$,"isBold",function(a){a=a.getAttribute(javax.swing.text.StyleConstants.Bold);return null!=a?a.booleanValue():!1},"javax.swing.text.AttributeSet");c$.setBold=d(c$,"setBold",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.Bold,Boolean.$valueOf(b))},"javax.swing.text.MutableAttributeSet,~B");c$.isItalic=d(c$,"isItalic",function(a){a=a.getAttribute(javax.swing.text.StyleConstants.Italic);return null!=a?a.booleanValue():!1},"javax.swing.text.AttributeSet");
+c$.setItalic=d(c$,"setItalic",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.Italic,Boolean.$valueOf(b))},"javax.swing.text.MutableAttributeSet,~B");c$.isUnderline=d(c$,"isUnderline",function(a){a=a.getAttribute(javax.swing.text.StyleConstants.Underline);return null!=a?a.booleanValue():!1},"javax.swing.text.AttributeSet");c$.isStrikeThrough=d(c$,"isStrikeThrough",function(a){a=a.getAttribute(javax.swing.text.StyleConstants.StrikeThrough);return null!=a?a.booleanValue():!1},"javax.swing.text.AttributeSet");
+c$.isSuperscript=d(c$,"isSuperscript",function(a){a=a.getAttribute(javax.swing.text.StyleConstants.Superscript);return null!=a?a.booleanValue():!1},"javax.swing.text.AttributeSet");c$.isSubscript=d(c$,"isSubscript",function(a){a=a.getAttribute(javax.swing.text.StyleConstants.Subscript);return null!=a?a.booleanValue():!1},"javax.swing.text.AttributeSet");c$.setUnderline=d(c$,"setUnderline",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.Underline,Boolean.$valueOf(b))},"javax.swing.text.MutableAttributeSet,~B");
+c$.setStrikeThrough=d(c$,"setStrikeThrough",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.StrikeThrough,Boolean.$valueOf(b))},"javax.swing.text.MutableAttributeSet,~B");c$.setSuperscript=d(c$,"setSuperscript",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.Superscript,Boolean.$valueOf(b))},"javax.swing.text.MutableAttributeSet,~B");c$.setSubscript=d(c$,"setSubscript",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.Subscript,Boolean.$valueOf(b))},"javax.swing.text.MutableAttributeSet,~B");
+c$.getForeground=d(c$,"getForeground",function(a){a=a.getAttribute(javax.swing.text.StyleConstants.Foreground);null==a&&(a=java.awt.Color.black);return a},"javax.swing.text.AttributeSet");c$.setForeground=d(c$,"setForeground",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.Foreground,b)},"javax.swing.text.MutableAttributeSet,java.awt.Color");c$.getBackground=d(c$,"getBackground",function(a){a=a.getAttribute(javax.swing.text.StyleConstants.Background);null==a&&(a=java.awt.Color.black);
+return a},"javax.swing.text.AttributeSet");c$.setBackground=d(c$,"setBackground",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.Background,b)},"javax.swing.text.MutableAttributeSet,java.awt.Color");c$.getFirstLineIndent=d(c$,"getFirstLineIndent",function(a){a=a.getAttribute(javax.swing.text.StyleConstants.FirstLineIndent);return null!=a?a.floatValue():0},"javax.swing.text.AttributeSet");c$.setFirstLineIndent=d(c$,"setFirstLineIndent",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.FirstLineIndent,
+new Float(b))},"javax.swing.text.MutableAttributeSet,~N");c$.getRightIndent=d(c$,"getRightIndent",function(a){a=a.getAttribute(javax.swing.text.StyleConstants.RightIndent);return null!=a?a.floatValue():0},"javax.swing.text.AttributeSet");c$.setRightIndent=d(c$,"setRightIndent",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.RightIndent,new Float(b))},"javax.swing.text.MutableAttributeSet,~N");c$.getLeftIndent=d(c$,"getLeftIndent",function(a){a=a.getAttribute(javax.swing.text.StyleConstants.LeftIndent);
+return null!=a?a.floatValue():0},"javax.swing.text.AttributeSet");c$.setLeftIndent=d(c$,"setLeftIndent",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.LeftIndent,new Float(b))},"javax.swing.text.MutableAttributeSet,~N");c$.getLineSpacing=d(c$,"getLineSpacing",function(a){a=a.getAttribute(javax.swing.text.StyleConstants.LineSpacing);return null!=a?a.floatValue():0},"javax.swing.text.AttributeSet");c$.setLineSpacing=d(c$,"setLineSpacing",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.LineSpacing,
+new Float(b))},"javax.swing.text.MutableAttributeSet,~N");c$.getSpaceAbove=d(c$,"getSpaceAbove",function(a){a=a.getAttribute(javax.swing.text.StyleConstants.SpaceAbove);return null!=a?a.floatValue():0},"javax.swing.text.AttributeSet");c$.setSpaceAbove=d(c$,"setSpaceAbove",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.SpaceAbove,new Float(b))},"javax.swing.text.MutableAttributeSet,~N");c$.getSpaceBelow=d(c$,"getSpaceBelow",function(a){a=a.getAttribute(javax.swing.text.StyleConstants.SpaceBelow);
+return null!=a?a.floatValue():0},"javax.swing.text.AttributeSet");c$.setSpaceBelow=d(c$,"setSpaceBelow",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.SpaceBelow,new Float(b))},"javax.swing.text.MutableAttributeSet,~N");c$.getAlignment=d(c$,"getAlignment",function(a){a=a.getAttribute(javax.swing.text.StyleConstants.Alignment);return null!=a?a.intValue():0},"javax.swing.text.AttributeSet");c$.setAlignment=d(c$,"setAlignment",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.Alignment,
+new Integer(b))},"javax.swing.text.MutableAttributeSet,~N");c$.getTabSet=d(c$,"getTabSet",function(a){return a.getAttribute(javax.swing.text.StyleConstants.TabSet)},"javax.swing.text.AttributeSet");c$.setTabSet=d(c$,"setTabSet",function(a,b){a.addAttribute(javax.swing.text.StyleConstants.TabSet,b)},"javax.swing.text.MutableAttributeSet,javax.swing.text.TabSet");m(c$,function(a){this.representation=a},"~S");A(self.c$);c$=B(javax.swing.text.StyleConstants,"ParagraphConstants",javax.swing.text.StyleConstants,
+javax.swing.text.AttributeSet.ParagraphAttribute);c$=z();A(self.c$);c$=B(javax.swing.text.StyleConstants,"CharacterConstants",javax.swing.text.StyleConstants,javax.swing.text.AttributeSet.CharacterAttribute);c$=z();A(self.c$);c$=B(javax.swing.text.StyleConstants,"ColorConstants",javax.swing.text.StyleConstants,[javax.swing.text.AttributeSet.ColorAttribute,javax.swing.text.AttributeSet.CharacterAttribute]);c$=z();A(self.c$);c$=B(javax.swing.text.StyleConstants,"FontConstants",javax.swing.text.StyleConstants,
+[javax.swing.text.AttributeSet.FontAttribute,javax.swing.text.AttributeSet.CharacterAttribute]);c$=z();G(c$,"ComponentElementName","component","IconElementName","icon");c$.NameAttribute=c$.prototype.NameAttribute=new javax.swing.text.StyleConstants("name");c$.ResolveAttribute=c$.prototype.ResolveAttribute=new javax.swing.text.StyleConstants("resolver");c$.ModelAttribute=c$.prototype.ModelAttribute=new javax.swing.text.StyleConstants("model");c$.BidiLevel=c$.prototype.BidiLevel=new javax.swing.text.StyleConstants.CharacterConstants("bidiLevel");
+c$.FontFamily=c$.prototype.FontFamily=new javax.swing.text.StyleConstants.FontConstants("family");c$.Family=c$.prototype.Family=javax.swing.text.StyleConstants.FontFamily;c$.FontSize=c$.prototype.FontSize=new javax.swing.text.StyleConstants.FontConstants("size");c$.Size=c$.prototype.Size=javax.swing.text.StyleConstants.FontSize;c$.Bold=c$.prototype.Bold=new javax.swing.text.StyleConstants.FontConstants("bold");c$.Italic=c$.prototype.Italic=new javax.swing.text.StyleConstants.FontConstants("italic");
+c$.Underline=c$.prototype.Underline=new javax.swing.text.StyleConstants.CharacterConstants("underline");c$.StrikeThrough=c$.prototype.StrikeThrough=new javax.swing.text.StyleConstants.CharacterConstants("strikethrough");c$.Superscript=c$.prototype.Superscript=new javax.swing.text.StyleConstants.CharacterConstants("superscript");c$.Subscript=c$.prototype.Subscript=new javax.swing.text.StyleConstants.CharacterConstants("subscript");c$.Foreground=c$.prototype.Foreground=new javax.swing.text.StyleConstants.ColorConstants("foreground");
+c$.Background=c$.prototype.Background=new javax.swing.text.StyleConstants.ColorConstants("background");c$.ComponentAttribute=c$.prototype.ComponentAttribute=new javax.swing.text.StyleConstants.CharacterConstants("component");c$.IconAttribute=c$.prototype.IconAttribute=new javax.swing.text.StyleConstants.CharacterConstants("icon");c$.ComposedTextAttribute=c$.prototype.ComposedTextAttribute=new javax.swing.text.StyleConstants("composed text");c$.FirstLineIndent=c$.prototype.FirstLineIndent=new javax.swing.text.StyleConstants.ParagraphConstants("FirstLineIndent");
+c$.LeftIndent=c$.prototype.LeftIndent=new javax.swing.text.StyleConstants.ParagraphConstants("LeftIndent");c$.RightIndent=c$.prototype.RightIndent=new javax.swing.text.StyleConstants.ParagraphConstants("RightIndent");c$.LineSpacing=c$.prototype.LineSpacing=new javax.swing.text.StyleConstants.ParagraphConstants("LineSpacing");c$.SpaceAbove=c$.prototype.SpaceAbove=new javax.swing.text.StyleConstants.ParagraphConstants("SpaceAbove");c$.SpaceBelow=c$.prototype.SpaceBelow=new javax.swing.text.StyleConstants.ParagraphConstants("SpaceBelow");
+c$.Alignment=c$.prototype.Alignment=new javax.swing.text.StyleConstants.ParagraphConstants("Alignment");c$.TabSet=c$.prototype.TabSet=new javax.swing.text.StyleConstants.ParagraphConstants("TabSet");c$.Orientation=c$.prototype.Orientation=new javax.swing.text.StyleConstants.ParagraphConstants("Orientation");G(c$,"ALIGN_LEFT",0,"ALIGN_CENTER",1,"ALIGN_RIGHT",2,"ALIGN_JUSTIFIED",3);c$.keys=c$.prototype.keys=E(-1,[javax.swing.text.StyleConstants.NameAttribute,javax.swing.text.StyleConstants.ResolveAttribute,
+javax.swing.text.StyleConstants.BidiLevel,javax.swing.text.StyleConstants.FontFamily,javax.swing.text.StyleConstants.FontSize,javax.swing.text.StyleConstants.Bold,javax.swing.text.StyleConstants.Italic,javax.swing.text.StyleConstants.Underline,javax.swing.text.StyleConstants.StrikeThrough,javax.swing.text.StyleConstants.Superscript,javax.swing.text.StyleConstants.Subscript,javax.swing.text.StyleConstants.Foreground,javax.swing.text.StyleConstants.Background,javax.swing.text.StyleConstants.ComponentAttribute,
+javax.swing.text.StyleConstants.IconAttribute,javax.swing.text.StyleConstants.FirstLineIndent,javax.swing.text.StyleConstants.LeftIndent,javax.swing.text.StyleConstants.RightIndent,javax.swing.text.StyleConstants.LineSpacing,javax.swing.text.StyleConstants.SpaceAbove,javax.swing.text.StyleConstants.SpaceBelow,javax.swing.text.StyleConstants.Alignment,javax.swing.text.StyleConstants.TabSet,javax.swing.text.StyleConstants.Orientation,javax.swing.text.StyleConstants.ModelAttribute,javax.swing.text.StyleConstants.ComposedTextAttribute])});
+p("javax.swing.text");q("java.util.Enumeration javax.swing.text.AbstractDocument $.AttributeSet $.Style java.util.Collections $.HashMap $.Hashtable $.Vector javax.swing.event.EventListenerList javax.swing.text.SimpleAttributeSet".split(" "),"javax.swing.text.StyleContext","java.util.NoSuchElementException java.awt.Font $.Toolkit javax.swing.SwingUtilities javax.swing.event.ChangeEvent $.ChangeListener javax.swing.text.MutableAttributeSet $.StyleConstants".split(" "),function(){c$=s(function(){this.search=
+this.attributesPool=this.fontTable=this.fontSearch=this.styles=null;H("javax.swing.text.StyleContext.SmallAttributeSet")||javax.swing.text.StyleContext.$StyleContext$SmallAttributeSet$();H("javax.swing.text.StyleContext.KeyEnumeration")||javax.swing.text.StyleContext.$StyleContext$KeyEnumeration$();H("javax.swing.text.StyleContext.KeyBuilder")||javax.swing.text.StyleContext.$StyleContext$KeyBuilder$();H("javax.swing.text.StyleContext.NamedStyle")||javax.swing.text.StyleContext.$StyleContext$NamedStyle$();
+r(this,arguments)},javax.swing.text,"StyleContext",null,javax.swing.text.AbstractDocument.AttributeContext);J(c$,function(){this.fontSearch=new javax.swing.text.StyleContext.FontKey(null,0,0);this.fontTable=new java.util.Hashtable;this.attributesPool=java.util.Collections.synchronizedMap(new java.util.HashMap);this.search=new javax.swing.text.SimpleAttributeSet});c$.getDefaultStyleContext=d(c$,"getDefaultStyleContext",function(){null==javax.swing.text.StyleContext.defaultContext&&(javax.swing.text.StyleContext.defaultContext=
+new javax.swing.text.StyleContext);return javax.swing.text.StyleContext.defaultContext});m(c$,function(){this.styles=C(javax.swing.text.StyleContext.NamedStyle,this,null,null);this.addStyle("default",null)});d(c$,"addStyle",function(a,b){var c=C(javax.swing.text.StyleContext.NamedStyle,this,null,a,b);null!=a&&this.styles.addAttribute(a,c);return c},"~S,javax.swing.text.Style");d(c$,"removeStyle",function(a){this.styles.removeAttribute(a)},"~S");d(c$,"getStyle",function(a){return this.styles.getAttribute(a)},
+"~S");d(c$,"getStyleNames",function(){return this.styles.getAttributeNames()});d(c$,"addChangeListener",function(a){this.styles.addChangeListener(a)},"javax.swing.event.ChangeListener");d(c$,"removeChangeListener",function(a){this.styles.removeChangeListener(a)},"javax.swing.event.ChangeListener");d(c$,"getChangeListeners",function(){return this.styles.getChangeListeners()});d(c$,"getFont",function(a){var b=0;javax.swing.text.StyleConstants.isBold(a)&&(b|=1);javax.swing.text.StyleConstants.isItalic(a)&&
+(b|=2);var c=javax.swing.text.StyleConstants.getFontFamily(a),f=javax.swing.text.StyleConstants.getFontSize(a);if(javax.swing.text.StyleConstants.isSuperscript(a)||javax.swing.text.StyleConstants.isSubscript(a))f-=2;return this.getFont(c,b,f)},"javax.swing.text.AttributeSet");d(c$,"getForeground",function(a){return javax.swing.text.StyleConstants.getForeground(a)},"javax.swing.text.AttributeSet");d(c$,"getBackground",function(a){return javax.swing.text.StyleConstants.getBackground(a)},"javax.swing.text.AttributeSet");
+d(c$,"getFont",function(a,b,c){this.fontSearch.setValue(a,b,c);var f=this.fontTable.get(this.fontSearch);if(null==f){var l=this.getStyle("default");null!=l&&(l=l.getAttribute("FONT_ATTRIBUTE_KEY"),null!=l&&l.getFamily().equalsIgnoreCase(a)&&(f=l.deriveFont(b,c)));null==f&&(f=new java.awt.Font(a,b,c));a=new javax.swing.text.StyleContext.FontKey(a,b,c);this.fontTable.put(a,f)}return f},"~S,~N,~N");d(c$,"getFontMetrics",function(a){return java.awt.Toolkit.getDefaultToolkit().getFontMetrics(a)},"java.awt.Font");
+e(c$,"addAttribute",function(a,b,c){if(a.getAttributeCount()+1<=this.getCompressionThreshold())return this.search.removeAttributes(this.search),this.search.addAttributes(a),this.search.addAttribute(b,c),this.reclaim(a),this.getImmutableUniqueSet();a=this.getMutableAttributeSet(a);a.addAttribute(b,c);return a},"javax.swing.text.AttributeSet,~O,~O");e(c$,"addAttributes",function(a,b){if(a.getAttributeCount()+b.getAttributeCount()<=this.getCompressionThreshold())return this.search.removeAttributes(this.search),
+this.search.addAttributes(a),this.search.addAttributes(b),this.reclaim(a),this.getImmutableUniqueSet();var c=this.getMutableAttributeSet(a);c.addAttributes(b);return c},"javax.swing.text.AttributeSet,javax.swing.text.AttributeSet");e(c$,"removeAttribute",function(a,b){if(a.getAttributeCount()-1<=this.getCompressionThreshold())return this.search.removeAttributes(this.search),this.search.addAttributes(a),this.search.removeAttribute(b),this.reclaim(a),this.getImmutableUniqueSet();var c=this.getMutableAttributeSet(a);
+c.removeAttribute(b);return c},"javax.swing.text.AttributeSet,~O");d(c$,"removeAttributes",function(a,b){if(a.getAttributeCount()<=this.getCompressionThreshold())return this.search.removeAttributes(this.search),this.search.addAttributes(a),this.search.removeAttributes(b),this.reclaim(a),this.getImmutableUniqueSet();var c=this.getMutableAttributeSet(a);c.removeAttributes(b);return c},"javax.swing.text.AttributeSet,java.util.Enumeration");d(c$,"removeAttributes",function(a,b){if(a.getAttributeCount()<=
+this.getCompressionThreshold())return this.search.removeAttributes(this.search),this.search.addAttributes(a),this.search.removeAttributes(b),this.reclaim(a),this.getImmutableUniqueSet();var c=this.getMutableAttributeSet(a);c.removeAttributes(b);return c},"javax.swing.text.AttributeSet,javax.swing.text.AttributeSet");e(c$,"getEmptySet",function(){return javax.swing.text.SimpleAttributeSet.EMPTY});e(c$,"reclaim",function(){javax.swing.SwingUtilities.isEventDispatchThread()&&this.attributesPool.size()},
+"javax.swing.text.AttributeSet");d(c$,"getCompressionThreshold",function(){return 9});d(c$,"createSmallAttributeSet",function(a){return C(javax.swing.text.StyleContext.SmallAttributeSet,this,null,a)},"javax.swing.text.AttributeSet");d(c$,"createLargeAttributeSet",function(a){return new javax.swing.text.SimpleAttributeSet(a)},"javax.swing.text.AttributeSet");d(c$,"removeUnusedSets",function(){this.attributesPool.size()});d(c$,"getImmutableUniqueSet",function(){return null});d(c$,"getMutableAttributeSet",
+function(a){return v(a,javax.swing.text.MutableAttributeSet)&&a!==javax.swing.text.SimpleAttributeSet.EMPTY?a:this.createLargeAttributeSet(a)},"javax.swing.text.AttributeSet");d(c$,"toString",function(){this.removeUnusedSets();for(var a="",b=this.attributesPool.keySet().iterator();b.hasNext();)var c=b.next(),a=a+c+"\n";return a});c$.registerStaticAttributeKey=d(c$,"registerStaticAttributeKey",function(a){var b=a.getClass().getName()+"."+a.toString();null==javax.swing.text.StyleContext.freezeKeyMap&&
+(javax.swing.text.StyleContext.freezeKeyMap=new java.util.Hashtable,javax.swing.text.StyleContext.thawKeyMap=new java.util.Hashtable);javax.swing.text.StyleContext.freezeKeyMap.put(a,b);javax.swing.text.StyleContext.thawKeyMap.put(b,a)},"~O");c$.getStaticAttribute=d(c$,"getStaticAttribute",function(a){return null==javax.swing.text.StyleContext.thawKeyMap||null==a?null:javax.swing.text.StyleContext.thawKeyMap.get(a)},"~O");c$.getStaticAttributeKey=d(c$,"getStaticAttributeKey",function(a){return a.getClass().getName()+
+"."+a.toString()},"~O");c$.$StyleContext$SmallAttributeSet$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.resolveParent=this.attributes=null;r(this,arguments)},javax.swing.text.StyleContext,"SmallAttributeSet",null,javax.swing.text.AttributeSet);m(c$,function(a){this.attributes=a;this.updateResolveParent()},"~A");m(c$,function(a){for(var b=a.getAttributeCount(),b=Array(2*b),c=a.getAttributeNames(),f=0;c.hasMoreElements();)b[f]=c.nextElement(),b[f+1]=a.getAttribute(b[f]),f+=2;this.attributes=
+b;this.updateResolveParent()},"javax.swing.text.AttributeSet");d(c$,"updateResolveParent",function(){this.resolveParent=null;for(var a=this.attributes,b=0;b<a.length;b+=2)if(a[b]===javax.swing.text.StyleConstants.ResolveAttribute){this.resolveParent=a[b+1];break}});d(c$,"getLocalAttribute",function(a){if(a===javax.swing.text.StyleConstants.ResolveAttribute)return this.resolveParent;for(var b=this.attributes,c=0;c<b.length;c+=2)if(a.equals(b[c]))return b[c+1];return null},"~O");e(c$,"toString",function(){for(var a=
+"{",b=this.attributes,c=0;c<b.length;c+=2)a=v(b[c+1],javax.swing.text.AttributeSet)?a+b[c]+"=AttributeSet,":a+b[c]+"="+b[c+1]+",";return a+"}"});d(c$,"hashCode",function(){for(var a=0,b=this.attributes,c=1;c<b.length;c+=2)a^=b[c].hashCode();return a});d(c$,"equals",function(a){return v(a,javax.swing.text.AttributeSet)?this.getAttributeCount()==a.getAttributeCount()&&this.containsAttributes(a):!1},"~O");e(c$,"clone",function(){return this});d(c$,"getAttributeCount",function(){return F(this.attributes.length/
+2)});e(c$,"isDefined",function(a){for(var b=this.attributes,c=b.length,f=0;f<c;f+=2)if(a.equals(b[f]))return!0;return!1},"~O");e(c$,"isEqual",function(a){return v(a,javax.swing.text.StyleContext.SmallAttributeSet)?a===this:this.getAttributeCount()==a.getAttributeCount()&&this.containsAttributes(a)},"javax.swing.text.AttributeSet");e(c$,"copyAttributes",function(){return this});d(c$,"getAttribute",function(a){var b=this.getLocalAttribute(a);if(null==b){var c=this.getResolveParent();null!=c&&(b=c.getAttribute(a))}return b},
+"~O");d(c$,"getAttributeNames",function(){return C(javax.swing.text.StyleContext.KeyEnumeration,this,null,this.attributes)});e(c$,"containsAttribute",function(a,b){return b.equals(this.getAttribute(a))},"~O,~O");e(c$,"containsAttributes",function(a){for(var b=!0,c=a.getAttributeNames();b&&c.hasMoreElements();)b=c.nextElement(),b=a.getAttribute(b).equals(this.getAttribute(b));return b},"javax.swing.text.AttributeSet");e(c$,"getResolveParent",function(){return this.resolveParent});c$=z()};c$.$StyleContext$KeyEnumeration$=
+function(){A(self.c$);c$=s(function(){O(this,arguments);this.attr=null;this.i=0;r(this,arguments)},javax.swing.text.StyleContext,"KeyEnumeration",null,java.util.Enumeration);m(c$,function(a){this.attr=a;this.i=0},"~A");e(c$,"hasMoreElements",function(){return this.i<this.attr.length});e(c$,"nextElement",function(){if(this.i<this.attr.length){var a=this.attr[this.i];this.i+=2;return a}throw new java.util.NoSuchElementException;});c$=z()};c$.$StyleContext$KeyBuilder$=function(){A(self.c$);c$=s(function(){O(this,
+arguments);this.data=this.keys=null;r(this,arguments)},javax.swing.text.StyleContext,"KeyBuilder");J(c$,function(){this.keys=new java.util.Vector;this.data=new java.util.Vector});d(c$,"initialize",function(a){if(v(a,javax.swing.text.StyleContext.SmallAttributeSet))this.initialize(a.attributes);else{this.keys.removeAllElements();this.data.removeAllElements();for(var b=a.getAttributeNames();b.hasMoreElements();){var c=b.nextElement();this.addAttribute(c,a.getAttribute(c))}}},"javax.swing.text.AttributeSet");
+d(c$,"initialize",function(a){this.keys.removeAllElements();this.data.removeAllElements();for(var b=a.length,c=0;c<b;c+=2)this.keys.addElement(a[c]),this.data.addElement(a[c+1])},"~A");d(c$,"createTable",function(){for(var a=this.keys.size(),b=Array(2*a),c=0;c<a;c++){var f=2*c;b[f]=this.keys.elementAt(c);b[f+1]=this.data.elementAt(c)}return b});d(c$,"getCount",function(){return this.keys.size()});d(c$,"addAttribute",function(a,b){this.keys.addElement(a);this.data.addElement(b)},"~O,~O");d(c$,"addAttributes",
+function(a){if(v(a,javax.swing.text.StyleContext.SmallAttributeSet)){var b=a.attributes,c=b.length;for(a=0;a<c;a+=2)this.addAttribute(b[a],b[a+1])}else for(b=a.getAttributeNames();b.hasMoreElements();)c=b.nextElement(),this.addAttribute(c,a.getAttribute(c))},"javax.swing.text.AttributeSet");d(c$,"removeAttribute",function(a){for(var b=this.keys.size(),c=0;c<b;c++)if(this.keys.elementAt(c).equals(a)){this.keys.removeElementAt(c);this.data.removeElementAt(c);break}},"~O");d(c$,"removeAttributes",function(a){for(;a.hasMoreElements();){var b=
+a.nextElement();this.removeAttribute(b)}},"java.util.Enumeration");d(c$,"removeAttributes",function(a){for(var b=a.getAttributeNames();b.hasMoreElements();){var c=b.nextElement(),f=a.getAttribute(c);this.removeSearchAttribute(c,f)}},"javax.swing.text.AttributeSet");d(c$,"removeSearchAttribute",function(a,b){for(var c=this.keys.size(),f=0;f<c;f++)if(this.keys.elementAt(f).equals(a)){this.data.elementAt(f).equals(b)&&(this.keys.removeElementAt(f),this.data.removeElementAt(f));break}},"~O,~O");c$=z()};
+c$.$StyleContext$NamedStyle$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.attributes=this.changeEvent=this.listenerList=null;r(this,arguments)},javax.swing.text.StyleContext,"NamedStyle",null,javax.swing.text.Style);J(c$,function(){this.listenerList=new javax.swing.event.EventListenerList});m(c$,function(a,b){this.attributes=this.b$["javax.swing.text.StyleContext"].getEmptySet();null!=a&&this.setName(a);null!=b&&this.setResolveParent(b)},"~S,javax.swing.text.Style");m(c$,function(a){this.construct(null,
+a)},"javax.swing.text.Style");m(c$,function(){this.attributes=this.b$["javax.swing.text.StyleContext"].getEmptySet()});d(c$,"toString",function(){return"NamedStyle:"+this.getName()+" "+this.attributes});e(c$,"getName",function(){return this.isDefined(javax.swing.text.StyleConstants.NameAttribute)?this.getAttribute(javax.swing.text.StyleConstants.NameAttribute).toString():null});d(c$,"setName",function(a){null!=a&&this.addAttribute(javax.swing.text.StyleConstants.NameAttribute,a)},"~S");e(c$,"addChangeListener",
+function(a){this.listenerList.add(javax.swing.event.ChangeListener,a)},"javax.swing.event.ChangeListener");e(c$,"removeChangeListener",function(a){this.listenerList.remove(javax.swing.event.ChangeListener,a)},"javax.swing.event.ChangeListener");d(c$,"getChangeListeners",function(){return this.listenerList.getListeners(javax.swing.event.ChangeListener)});d(c$,"fireStateChanged",function(){for(var a=this.listenerList.getListenerList(),b=a.length-2;0<=b;b-=2)a[b]===javax.swing.event.ChangeListener&&
+(null==this.changeEvent&&(this.changeEvent=new javax.swing.event.ChangeEvent(this)),a[b+1].stateChanged(this.changeEvent))});d(c$,"getListeners",function(a){return this.listenerList.getListeners(a)},"Class");d(c$,"getAttributeCount",function(){return this.attributes.getAttributeCount()});d(c$,"isDefined",function(a){return this.attributes.isDefined(a)},"~O");d(c$,"isEqual",function(a){return this.attributes.isEqual(a)},"javax.swing.text.AttributeSet");d(c$,"copyAttributes",function(){var a=C(javax.swing.text.StyleContext.NamedStyle,
+this,null);a.attributes=this.attributes.copyAttributes();return a});d(c$,"getAttribute",function(a){return this.attributes.getAttribute(a)},"~O");d(c$,"getAttributeNames",function(){return this.attributes.getAttributeNames()});d(c$,"containsAttribute",function(a,b){return this.attributes.containsAttribute(a,b)},"~O,~O");d(c$,"containsAttributes",function(a){return this.attributes.containsAttributes(a)},"javax.swing.text.AttributeSet");d(c$,"getResolveParent",function(){return this.attributes.getResolveParent()});
+e(c$,"addAttribute",function(a,b){this.attributes=this.b$["javax.swing.text.StyleContext"].addAttribute(this.attributes,a,b);this.fireStateChanged()},"~O,~O");e(c$,"addAttributes",function(a){this.attributes=this.b$["javax.swing.text.StyleContext"].addAttributes(this.attributes,a);this.fireStateChanged()},"javax.swing.text.AttributeSet");e(c$,"removeAttribute",function(a){this.attributes=this.b$["javax.swing.text.StyleContext"].removeAttribute(this.attributes,a);this.fireStateChanged()},"~O");d(c$,
+"removeAttributes",function(a){this.attributes=this.b$["javax.swing.text.StyleContext"].removeAttributes(this.attributes,a);this.fireStateChanged()},"java.util.Enumeration");d(c$,"removeAttributes",function(a){var b=this.b$["javax.swing.text.StyleContext"];this.attributes=a===this?b.getEmptySet():b.removeAttributes(this.attributes,a);this.fireStateChanged()},"javax.swing.text.AttributeSet");e(c$,"setResolveParent",function(a){null!=a?this.addAttribute(javax.swing.text.StyleConstants.ResolveAttribute,
+a):this.removeAttribute(javax.swing.text.StyleConstants.ResolveAttribute)},"javax.swing.text.AttributeSet");c$=z()};A(self.c$);c$=s(function(){this.family=null;this.size=this.style=0;r(this,arguments)},javax.swing.text.StyleContext,"FontKey");m(c$,function(a,b,c){this.setValue(a,b,c)},"~S,~N,~N");d(c$,"setValue",function(a,b,c){this.family=null!=a?a.intern():null;this.style=b;this.size=c},"~S,~N,~N");e(c$,"hashCode",function(){return(null!=this.family?this.family.hashCode():0)^this.style^this.size});
+e(c$,"equals",function(a){return v(a,javax.swing.text.StyleContext.FontKey)?this.size==a.size&&this.style==a.style&&this.family===a.family:!1},"~O");c$=z();G(c$,"defaultContext",null,"DEFAULT_STYLE","default","freezeKeyMap",null,"thawKeyMap",null,"THRESHOLD",9)});p("javax.swing.text");q(["javax.swing.text.MutableAttributeSet"],"javax.swing.text.Style",null,function(){M(javax.swing.text,"Style",javax.swing.text.MutableAttributeSet)});p("javax.swing.text");q(["javax.swing.text.AttributeSet","$.MutableAttributeSet",
+"java.util.Hashtable"],"javax.swing.text.SimpleAttributeSet",["java.util.Enumeration","$.NoSuchElementException","javax.swing.text.StyleConstants"],function(){c$=s(function(){this.table=null;r(this,arguments)},javax.swing.text,"SimpleAttributeSet",null,[javax.swing.text.MutableAttributeSet,Cloneable]);J(c$,function(){this.table=new java.util.Hashtable(3)});m(c$,function(){});m(c$,function(a){this.addAttributes(a)},"javax.swing.text.AttributeSet");d(c$,"isEmpty",function(){return this.table.isEmpty()});
+d(c$,"getAttributeCount",function(){return this.table.size()});e(c$,"isDefined",function(a){return this.table.containsKey(a)},"~O");e(c$,"isEqual",function(a){return this.getAttributeCount()==a.getAttributeCount()&&this.containsAttributes(a)},"javax.swing.text.AttributeSet");e(c$,"copyAttributes",function(){return this.clone()});d(c$,"getAttributeNames",function(){return this.table.keys()});d(c$,"getAttribute",function(a){var b=this.table.get(a);if(null==b){var c=this.getResolveParent();null!=c&&
+(b=c.getAttribute(a))}return b},"~O");e(c$,"containsAttribute",function(a,b){return b.equals(this.getAttribute(a))},"~O,~O");e(c$,"containsAttributes",function(a){for(var b=!0,c=a.getAttributeNames();b&&c.hasMoreElements();)b=c.nextElement(),b=a.getAttribute(b).equals(this.getAttribute(b));return b},"javax.swing.text.AttributeSet");e(c$,"addAttribute",function(a,b){this.table.put(a,b)},"~O,~O");e(c$,"addAttributes",function(a){for(var b=a.getAttributeNames();b.hasMoreElements();){var c=b.nextElement();
+this.addAttribute(c,a.getAttribute(c))}},"javax.swing.text.AttributeSet");e(c$,"removeAttribute",function(a){this.table.remove(a)},"~O");d(c$,"removeAttributes",function(a){for(;a.hasMoreElements();)this.removeAttribute(a.nextElement())},"java.util.Enumeration");d(c$,"removeAttributes",function(a){if(a===this)this.table.clear();else for(var b=a.getAttributeNames();b.hasMoreElements();){var c=b.nextElement();a.getAttribute(c).equals(this.getAttribute(c))&&this.removeAttribute(c)}},"javax.swing.text.AttributeSet");
+e(c$,"getResolveParent",function(){return this.table.get(javax.swing.text.StyleConstants.ResolveAttribute)});e(c$,"setResolveParent",function(a){this.addAttribute(javax.swing.text.StyleConstants.ResolveAttribute,a)},"javax.swing.text.AttributeSet");d(c$,"clone",function(){var a;try{a=K(this,javax.swing.text.SimpleAttributeSet,"clone",[]),a.table=this.table.clone()}catch(b){if(y(b,CloneNotSupportedException))a=null;else throw b;}return a});e(c$,"hashCode",function(){return this.table.hashCode()});
+d(c$,"equals",function(a){return this===a?!0:v(a,javax.swing.text.AttributeSet)?this.isEqual(a):!1},"~O");e(c$,"toString",function(){for(var a="",b=this.getAttributeNames();b.hasMoreElements();)var c=b.nextElement(),f=this.getAttribute(c),a=v(f,javax.swing.text.AttributeSet)?a+c+"=**AttributeSet** ":a+c+"="+f+" ";return a});A(self.c$);c$=B(javax.swing.text.SimpleAttributeSet,"EmptyAttributeSet",null,javax.swing.text.AttributeSet);d(c$,"getAttributeCount",function(){return 0});e(c$,"isDefined",function(){return!1},
+"~O");e(c$,"isEqual",function(a){return 0==a.getAttributeCount()},"javax.swing.text.AttributeSet");e(c$,"copyAttributes",function(){return this});e(c$,"getAttribute",function(){return null},"~O");e(c$,"getAttributeNames",function(){return H("javax.swing.text.SimpleAttributeSet$EmptyAttributeSet$1")?0:javax.swing.text.SimpleAttributeSet.EmptyAttributeSet.$SimpleAttributeSet$EmptyAttributeSet$1$(),C(javax.swing.text.SimpleAttributeSet$EmptyAttributeSet$1,this,null)});e(c$,"containsAttribute",function(){return!1},
+"~O,~O");e(c$,"containsAttributes",function(a){return 0==a.getAttributeCount()},"javax.swing.text.AttributeSet");e(c$,"getResolveParent",function(){return null});e(c$,"equals",function(a){return this===a?!0:v(a,javax.swing.text.AttributeSet)&&0==a.getAttributeCount()},"~O");e(c$,"hashCode",function(){return 0});c$.$SimpleAttributeSet$EmptyAttributeSet$1$=function(){A(self.c$);c$=L(javax.swing.text,"SimpleAttributeSet$EmptyAttributeSet$1",null,java.util.Enumeration);e(c$,"hasMoreElements",function(){return!1});
+e(c$,"nextElement",function(){throw new java.util.NoSuchElementException;});c$=z()};c$=z();c$.EMPTY=c$.prototype.EMPTY=new javax.swing.text.SimpleAttributeSet.EmptyAttributeSet});p("javax.swing.text");q(null,"javax.swing.text.Utilities",["javax.swing.JComponent","javax.swing.text.CompositeView","$.Position","$.StyleConstants","$.StyledDocument"],function(){c$=B(javax.swing.text,"Utilities");c$.getJComponent=d(c$,"getJComponent",function(a){return null!=a&&(a=a.getContainer(),v(a,javax.swing.JComponent))?
+a:null},"javax.swing.text.View");c$.getTabbedTextWidth=d(c$,"getTabbedTextWidth",function(a,b,c,f,l){return javax.swing.text.Utilities.getTabbedTextWidth(null,a,b,c,f,l,null)},"javax.swing.text.Segment,java.awt.FontMetrics,~N,javax.swing.text.TabExpander,~N");c$.getTabbedTextWidth=d(c$,"getTabbedTextWidth",function(a,b,c,f,l,d,g){var h=f,j=b.array,e=b.offset;b=b.offset+b.count;var x=0,u=0,D=-1,m=0,p=0;if(null!=g){p=-d+e;u=null;if(null!=a&&null!=(u=a.getParent()))p+=u.getStartOffset();u=g[0];D=g[1]+
+p;m=g[2]+p;p=g[3]+p}for(a=e;a<b;a++)"\t"==j[a]||(0!=u||a<=D)&&" "==j[a]&&m<=a&&a<=p?(h+=c.charsWidth(j,a-x,x),x=0,"\t"==j[a]?h=null!=l?I(l.nextTabStop(h,d+a-e)):h+c.charWidth(" "):" "==j[a]&&(h+=c.charWidth(" ")+u,a<=D&&h++)):"\n"==j[a]?(h+=c.charsWidth(j,a-x,x),x=0):x++;h+=c.charsWidth(j,b-x,x);return h-f},"javax.swing.text.View,javax.swing.text.Segment,java.awt.FontMetrics,~N,javax.swing.text.TabExpander,~N,~A");c$.getTabbedTextOffset=d(c$,"getTabbedTextOffset",function(a,b,c,f,l,d){return javax.swing.text.Utilities.getTabbedTextOffset(a,
+b,c,f,l,d,!0)},"javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N");c$.getTabbedTextOffset=d(c$,"getTabbedTextOffset",function(a,b,c,f,l,d,g,h){return javax.swing.text.Utilities.getTabbedTextOffset(a,b,c,f,l,d,g,!0,h)},"javax.swing.text.View,javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N,~A");c$.getTabbedTextOffset=d(c$,"getTabbedTextOffset",function(a,b,c,f,l,d,g){return javax.swing.text.Utilities.getTabbedTextOffset(null,a,b,
+c,f,l,d,g,null)},"javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N,~B");c$.getTabbedTextOffset=d(c$,"getTabbedTextOffset",function(a,b,c,f,l,d,g,h,j){if(f>=l)return 0;var e=f,x=b.array,u=b.offset,D=b.count,m=0,p=-1,q=0,r=0;if(null!=j){r=-g+u;m=null;if(null!=a&&null!=(m=a.getParent()))r+=m.getStartOffset();m=j[0];p=j[1]+r;q=j[2]+r;r=j[3]+r}a=b.offset+b.count;for(b=b.offset;b<a;b++){"\t"==x[b]||(0!=m||b<=p)&&" "==x[b]&&q<=b&&b<=r?"\t"==x[b]?e=null!=d?I(d.nextTabStop(e,
+g+b-u)):e+c.charWidth(" "):" "==x[b]&&(e+=c.charWidth(" ")+m,b<=p&&e++):e+=c.charWidth(x[b]);if(l>=f&&l<e)return!1==h||l-f<e-l?b-u:b+1-u;f=e}return D},"javax.swing.text.View,javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N,~B,~A");c$.getBreakLocation=d(c$,"getBreakLocation",function(){return 0},"javax.swing.text.Segment,java.awt.FontMetrics,~N,~N,javax.swing.text.TabExpander,~N");c$.getRowStart=d(c$,"getRowStart",function(a,b){var c=a.modelToView(b);if(null==c)return-1;
+for(var f=b,l=c.y;null!=c&&l==c.y;)0!=c.height&&(b=f),f-=1,c=0<=f?a.modelToView(f):null;return b},"javax.swing.text.JTextComponent,~N");c$.getRowEnd=d(c$,"getRowEnd",function(a,b){var c=a.modelToView(b);if(null==c)return-1;for(var f=a.getDocument().getLength(),l=b,d=c.y;null!=c&&d==c.y;)0!=c.height&&(b=l),l+=1,c=l<=f?a.modelToView(l):null;return b},"javax.swing.text.JTextComponent,~N");c$.getPositionAbove=d(c$,"getPositionAbove",function(a,b,c){var f=javax.swing.text.Utilities.getRowStart(a,b)-1;
+if(0>f)return-1;var l=2147483647,d=0,g=null;0<=f&&(g=a.modelToView(f),d=g.y);for(;null!=g&&d==g.y;)g=Math.abs(g.x-c),g<l&&(b=f,l=g),f-=1,g=0<=f?a.modelToView(f):null;return b},"javax.swing.text.JTextComponent,~N,~N");c$.getPositionBelow=d(c$,"getPositionBelow",function(a,b,c){var f=javax.swing.text.Utilities.getRowEnd(a,b)+1;if(0>=f)return-1;var l=2147483647,d=a.getDocument().getLength(),g=0,h=null;f<=d&&(h=a.modelToView(f),g=h.y);for(;null!=h&&g==h.y;)h=Math.abs(c-h.x),h<l&&(b=f,l=h),f+=1,h=f<=d?
+a.modelToView(f):null;return b},"javax.swing.text.JTextComponent,~N,~N");c$.getWordStart=d(c$,"getWordStart",function(){return 0},"javax.swing.text.JTextComponent,~N");c$.getWordEnd=d(c$,"getWordEnd",function(){return 0},"javax.swing.text.JTextComponent,~N");c$.getNextWord=d(c$,"getNextWord",function(a,b){var c,f=javax.swing.text.Utilities.getParagraphElement(a,b);for(c=javax.swing.text.Utilities.getNextWordInParagraph(a,f,b,!1);-1==c;c=javax.swing.text.Utilities.getNextWordInParagraph(a,f,b,!0))b=
+f.getEndOffset(),f=javax.swing.text.Utilities.getParagraphElement(a,b);return c},"javax.swing.text.JTextComponent,~N");c$.getNextWordInParagraph=d(c$,"getNextWordInParagraph",function(){return 0},"javax.swing.text.JTextComponent,javax.swing.text.Element,~N,~B");c$.getPreviousWord=d(c$,"getPreviousWord",function(a,b){var c,f=javax.swing.text.Utilities.getParagraphElement(a,b);for(c=javax.swing.text.Utilities.getPrevWordInParagraph(a,f,b);-1==c;c=javax.swing.text.Utilities.getPrevWordInParagraph(a,
+f,b))b=f.getStartOffset()-1,f=javax.swing.text.Utilities.getParagraphElement(a,b);return c},"javax.swing.text.JTextComponent,~N");c$.getPrevWordInParagraph=d(c$,"getPrevWordInParagraph",function(){return 0},"javax.swing.text.JTextComponent,javax.swing.text.Element,~N");c$.getParagraphElement=d(c$,"getParagraphElement",function(a,b){var c=a.getDocument();if(v(c,javax.swing.text.StyledDocument))return c.getParagraphElement(b);var c=c.getDefaultRootElement(),f=c.getElementIndex(b),c=c.getElement(f);
+return b>=c.getStartOffset()&&b<c.getEndOffset()?c:null},"javax.swing.text.JTextComponent,~N");c$.isComposedTextElement=d(c$,"isComposedTextElement",function(a,b){for(var c=a.getDefaultRootElement();!c.isLeaf();)c=c.getElement(c.getElementIndex(b));return javax.swing.text.Utilities.isComposedTextElement(c)},"javax.swing.text.Document,~N");c$.isComposedTextElement=d(c$,"isComposedTextElement",function(a){a=a.getAttributes();return javax.swing.text.Utilities.isComposedTextAttributeDefined(a)},"javax.swing.text.Element");
+c$.isComposedTextAttributeDefined=d(c$,"isComposedTextAttributeDefined",function(a){return null!=a&&a.isDefined(javax.swing.text.StyleConstants.ComposedTextAttribute)},"javax.swing.text.AttributeSet");c$.isLeftToRight=d(c$,"isLeftToRight",function(a){return a.getComponentOrientation().isLeftToRight()},"java.awt.Component");c$.getNextVisualPositionFrom=d(c$,"getNextVisualPositionFrom",function(a,b,c,f,l,d){if(0==a.getViewCount())return b;var g=1==l||7==l,h;if(-1==b){var j=g?a.getViewCount()-1:0,e=
+a.getView(j),x=a.getChildAllocation(j,f);h=e.getNextVisualPositionFrom(b,c,x,l,d);-1==h&&(!g&&1<a.getViewCount())&&(e=a.getView(1),x=a.getChildAllocation(1,f),h=e.getNextVisualPositionFrom(-1,d[0],x,l,d))}else{g=g?-1:1;j=c===javax.swing.text.Position.Bias.Backward&&0<b?a.getViewIndex(b-1,javax.swing.text.Position.Bias.Forward):a.getViewIndex(b,javax.swing.text.Position.Bias.Forward);e=a.getView(j);x=a.getChildAllocation(j,f);h=e.getNextVisualPositionFrom(b,c,x,l,d);if((3==l||7==l)&&v(a,javax.swing.text.CompositeView)&&
+a.flipEastAndWestAtEnds(b,c))g*=-1;j+=g;if(-1==h&&0<=j&&j<a.getViewCount()){if(e=a.getView(j),x=a.getChildAllocation(j,f),h=e.getNextVisualPositionFrom(-1,c,x,l,d),h==b&&d[0]!==c)return javax.swing.text.Utilities.getNextVisualPositionFrom(a,b,d[0],f,l,d)}else if(-1!=h&&d[0]!==c&&(1==g&&e.getEndOffset()==h||-1==g&&e.getStartOffset()==h)&&0<=j&&j<a.getViewCount())e=a.getView(j),x=a.getChildAllocation(j,f),a=d[0],l=e.getNextVisualPositionFrom(-1,c,x,l,d),d[0]===c?h=l:d[0]=a}return h},"javax.swing.text.View,~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A")});
+p("javax.swing.text");q(["javax.swing.text.View"],"javax.swing.text.CompositeView","java.lang.IllegalArgumentException java.awt.Rectangle javax.swing.text.BadLocationException $.Position $.StyleConstants $.Utilities".split(" "),function(){c$=s(function(){this.children=null;this.bottom=this.top=this.right=this.left=this.nchildren=0;this.childAlloc=null;r(this,arguments)},javax.swing.text,"CompositeView",javax.swing.text.View);m(c$,function(a){t(this,javax.swing.text.CompositeView,[a]);this.children=
+Array(1);this.nchildren=0;this.childAlloc=new java.awt.Rectangle},"javax.swing.text.Element");d(c$,"loadChildren",function(a){if(null!=a){var b=this.getElement(),c=b.getElementCount();if(0<c){for(var f=Array(c),l=0;l<c;l++)f[l]=a.create(b.getElement(l));this.replace(0,0,f)}}},"javax.swing.text.ViewFactory");d(c$,"setParent",function(a){K(this,javax.swing.text.CompositeView,"setParent",[a]);null!=a&&0==this.nchildren&&(a=this.getViewFactory(),this.loadChildren(a))},"javax.swing.text.View");e(c$,"getViewCount",
+function(){return this.nchildren});e(c$,"getView",function(a){return this.children[a]},"~N");e(c$,"replace",function(a,b,c){null==c&&(c=javax.swing.text.CompositeView.ZERO);for(var f=a;f<a+b;f++)this.children[f].getParent()===this&&this.children[f].setParent(null),this.children[f]=null;f=c.length-b;b=a+b;var l=this.nchildren-b,d=b+f;if(this.nchildren+f>=this.children.length){var g=Math.max(2*this.children.length,this.nchildren+f),g=Array(g);System.arraycopy(this.children,0,g,0,a);System.arraycopy(c,
+0,g,a,c.length);System.arraycopy(this.children,b,g,d,l);this.children=g}else System.arraycopy(this.children,b,this.children,d,l),System.arraycopy(c,0,this.children,a,c.length);this.nchildren+=f;for(f=0;f<c.length;f++)c[f].setParent(this)},"~N,~N,~A");e(c$,"getChildAllocation",function(a,b){var c=this.getInsideAllocation(b);this.childAllocation(a,c);return c},"~N,java.awt.Shape");d(c$,"modelToView",function(a,b,c){var f=c===javax.swing.text.Position.Bias.Backward,l=f?Math.max(0,a-1):a;if(f&&l<this.getStartOffset())return null;
+f=this.getViewIndexAtPosition(l);if(-1!=f&&f<this.getViewCount()){var d=this.getView(f);if(null!=d&&l>=d.getStartOffset()&&l<d.getEndOffset()){l=this.getChildAllocation(f,b);if(null==l)return null;l=d.modelToView(a,l,c);null==l&&d.getEndOffset()==a&&++f<this.getViewCount()&&(d=this.getView(f),l=d.modelToView(a,this.getChildAllocation(f,b),c));return l}}throw new javax.swing.text.BadLocationException("Position not represented by view",a);},"~N,java.awt.Shape,javax.swing.text.Position.Bias");d(c$,"modelToView",
+function(a,b,c,f,l){if(a==this.getStartOffset()&&c==this.getEndOffset())return l;var d=this.getInsideAllocation(l),g=new java.awt.Rectangle(d),h=this.getViewAtPosition(b===javax.swing.text.Position.Bias.Backward?Math.max(0,a-1):a,g),j=new java.awt.Rectangle(d),e=this.getViewAtPosition(f===javax.swing.text.Position.Bias.Backward?Math.max(0,c-1):c,j);if(h===e)return null==h?l:h.modelToView(a,b,c,f,g);l=this.getViewCount();for(var x=0;x<l;){var u;if((u=this.getView(x))===h||u===e){var D,m=new java.awt.Rectangle;
+u===h?(u=h.modelToView(a,b,h.getEndOffset(),javax.swing.text.Position.Bias.Backward,g).getBounds(),D=e):(u=e.modelToView(e.getStartOffset(),javax.swing.text.Position.Bias.Forward,c,f,j).getBounds(),D=h);for(;++x<l&&this.getView(x)!==D;)m.setBounds(d),this.childAllocation(x,m),u.add(m);null!=D&&(a=D===e?e.modelToView(e.getStartOffset(),javax.swing.text.Position.Bias.Forward,c,f,j):h.modelToView(a,b,h.getEndOffset(),javax.swing.text.Position.Bias.Backward,g),v(a,java.awt.Rectangle)?u.add(a):u.add(a.getBounds()));
+return u}x++}throw new javax.swing.text.BadLocationException("Position not represented by view",a);},"~N,javax.swing.text.Position.Bias,~N,javax.swing.text.Position.Bias,java.awt.Shape");d(c$,"viewToModel",function(a,b,c,f){var l=this.getInsideAllocation(c);if(this.isBefore(I(a),I(b),l)){a=-1;try{a=this.getNextVisualPositionFrom(-1,javax.swing.text.Position.Bias.Forward,c,3,f)}catch(d){if(!y(d,javax.swing.text.BadLocationException)&&!y(d,IllegalArgumentException))throw d;}-1==a&&(a=this.getStartOffset(),
+f[0]=javax.swing.text.Position.Bias.Forward);return a}if(this.isAfter(I(a),I(b),l)){a=-1;try{a=this.getNextVisualPositionFrom(-1,javax.swing.text.Position.Bias.Forward,c,7,f)}catch(g){if(!y(g,javax.swing.text.BadLocationException)&&!y(g,IllegalArgumentException))throw g;}-1==a&&(a=this.getEndOffset()-1,f[0]=javax.swing.text.Position.Bias.Forward);return a}c=this.getViewAtPoint(I(a),I(b),l);return null!=c?c.viewToModel(a,b,l,f):-1},"~N,~N,java.awt.Shape,~A");e(c$,"getNextVisualPositionFrom",function(a,
+b,c,f,l){switch(f){case 1:return this.getNextNorthSouthVisualPositionFrom(a,b,c,f,l);case 5:return this.getNextNorthSouthVisualPositionFrom(a,b,c,f,l);case 3:return this.getNextEastWestVisualPositionFrom(a,b,c,f,l);case 7:return this.getNextEastWestVisualPositionFrom(a,b,c,f,l);default:throw new IllegalArgumentException("Bad direction: "+f);}},"~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");d(c$,"getViewIndex",function(a,b){b===javax.swing.text.Position.Bias.Backward&&(a-=1);return a>=this.getStartOffset()&&
+a<this.getEndOffset()?this.getViewIndexAtPosition(a):-1},"~N,javax.swing.text.Position.Bias");d(c$,"getViewAtPosition",function(a,b){var c=this.getViewIndexAtPosition(a);if(0<=c&&c<this.getViewCount()){var f=this.getView(c);null!=b&&this.childAllocation(c,b);return f}return null},"~N,java.awt.Rectangle");d(c$,"getViewIndexAtPosition",function(a){return this.getElement().getElementIndex(a)},"~N");d(c$,"getInsideAllocation",function(a){return null!=a?(a=v(a,java.awt.Rectangle)?a:a.getBounds(),this.childAlloc.setBounds(a),
+this.childAlloc.x+=this.getLeftInset(),this.childAlloc.y+=this.getTopInset(),this.childAlloc.width-=this.getLeftInset()+this.getRightInset(),this.childAlloc.height-=this.getTopInset()+this.getBottomInset(),this.childAlloc):null},"java.awt.Shape");d(c$,"setParagraphInsets",function(a){this.top=Y(javax.swing.text.StyleConstants.getSpaceAbove(a));this.left=Y(javax.swing.text.StyleConstants.getLeftIndent(a));this.bottom=Y(javax.swing.text.StyleConstants.getSpaceBelow(a));this.right=Y(javax.swing.text.StyleConstants.getRightIndent(a))},
+"javax.swing.text.AttributeSet");d(c$,"setInsets",function(a,b,c,f){this.top=a;this.left=b;this.right=f;this.bottom=c},"~N,~N,~N,~N");d(c$,"getLeftInset",function(){return this.left});d(c$,"getRightInset",function(){return this.right});d(c$,"getTopInset",function(){return this.top});d(c$,"getBottomInset",function(){return this.bottom});d(c$,"getNextNorthSouthVisualPositionFrom",function(a,b,c,f,l){return javax.swing.text.Utilities.getNextVisualPositionFrom(this,a,b,c,f,l)},"~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");
+d(c$,"getNextEastWestVisualPositionFrom",function(a,b,c,f,l){return javax.swing.text.Utilities.getNextVisualPositionFrom(this,a,b,c,f,l)},"~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");d(c$,"flipEastAndWestAtEnds",function(){return!1},"~N,javax.swing.text.Position.Bias");c$.ZERO=c$.prototype.ZERO=[]});p("javax.swing.text");q(["javax.swing.SwingConstants"],"javax.swing.text.View",["java.lang.IllegalArgumentException","java.awt.Rectangle","javax.swing.event.DocumentEvent","javax.swing.text.Position",
+"$.Utilities"],function(){c$=s(function(){this.elem=this.parent=null;r(this,arguments)},javax.swing.text,"View",null,javax.swing.SwingConstants);m(c$,function(a){this.elem=a},"javax.swing.text.Element");d(c$,"getParent",function(){return this.parent});d(c$,"isVisible",function(){return!0});d(c$,"getMinimumSpan",function(a){return 0==this.getResizeWeight(a)?this.getPreferredSpan(a):0},"~N");d(c$,"getMaximumSpan",function(a){return 0==this.getResizeWeight(a)?this.getPreferredSpan(a):2147483647},"~N");
+d(c$,"preferenceChanged",function(a,b,c){a=this.getParent();null!=a&&a.preferenceChanged(this,b,c)},"javax.swing.text.View,~B,~B");d(c$,"getAlignment",function(){return 0.5},"~N");d(c$,"setParent",function(a){if(null==a)for(var b=0;b<this.getViewCount();b++)this.getView(b).getParent()===this&&this.getView(b).setParent(null);this.parent=a},"javax.swing.text.View");d(c$,"getViewCount",function(){return 0});d(c$,"getView",function(){return null},"~N");d(c$,"removeAll",function(){this.replace(0,this.getViewCount(),
+null)});d(c$,"remove",function(a){this.replace(a,1,null)},"~N");d(c$,"insert",function(a,b){var c=Array(1);c[0]=b;this.replace(a,0,c)},"~N,javax.swing.text.View");d(c$,"append",function(a){var b=Array(1);b[0]=a;this.replace(this.getViewCount(),0,b)},"javax.swing.text.View");d(c$,"replace",function(){},"~N,~N,~A");d(c$,"getViewIndex",function(){return-1},"~N,javax.swing.text.Position.Bias");d(c$,"getChildAllocation",function(){return null},"~N,java.awt.Shape");d(c$,"getNextVisualPositionFrom",function(a,
+b,c,f,l){l[0]=javax.swing.text.Position.Bias.Forward;switch(f){case 1:case 5:if(-1==a){a=1==f?Math.max(0,this.getEndOffset()-1):this.getStartOffset();break}b=this.getContainer();c=null!=b?b.getCaret():null;c=null!=c?c.getMagicCaretPosition():null;null==c?(c=b.modelToView(a),c=null==c?0:c.x):c=c.x;a=1==f?javax.swing.text.Utilities.getPositionAbove(b,a,c):javax.swing.text.Utilities.getPositionBelow(b,a,c);break;case 7:a=-1==a?Math.max(0,this.getEndOffset()-1):Math.max(0,a-1);break;case 3:a=-1==a?this.getStartOffset():
+Math.min(a+1,this.getDocument().getLength());break;default:throw new IllegalArgumentException("Bad direction: "+f);}return a},"~N,javax.swing.text.Position.Bias,java.awt.Shape,~N,~A");d(c$,"modelToView",function(a,b,c,f,l){a=this.modelToView(a,l,b);var d;if(c==this.getEndOffset()){try{d=this.modelToView(c,l,f)}catch(g){if(y(g,javax.swing.text.BadLocationException))d=null;else throw g;}null==d&&(d=v(l,java.awt.Rectangle)?l:l.getBounds(),d=new java.awt.Rectangle(d.x+d.width-1,d.y,1,d.height))}else d=
+this.modelToView(c,l,f);c=a.getBounds();f=v(d,java.awt.Rectangle)?d:d.getBounds();c.y!=f.y&&(d=v(l,java.awt.Rectangle)?l:l.getBounds(),c.x=d.x,c.width=d.width);c.add(f);return c},"~N,javax.swing.text.Position.Bias,~N,javax.swing.text.Position.Bias,java.awt.Shape");d(c$,"insertUpdate",function(a,b,c){if(0<this.getViewCount()){var f=this.getElement(),f=a.getChange(f);null!=f&&(this.updateChildren(f,a,c)||(f=null));this.forwardUpdate(f,a,b,c);this.updateLayout(f,a,b)}},"javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");
+d(c$,"removeUpdate",function(a,b,c){if(0<this.getViewCount()){var f=this.getElement(),f=a.getChange(f);null!=f&&(this.updateChildren(f,a,c)||(f=null));this.forwardUpdate(f,a,b,c);this.updateLayout(f,a,b)}},"javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");d(c$,"changedUpdate",function(a,b,c){if(0<this.getViewCount()){var f=this.getElement(),f=a.getChange(f);null!=f&&(this.updateChildren(f,a,c)||(f=null));this.forwardUpdate(f,a,b,c);this.updateLayout(f,a,b)}},"javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");
+d(c$,"getDocument",function(){return this.elem.getDocument()});d(c$,"getStartOffset",function(){return this.elem.getStartOffset()});d(c$,"getEndOffset",function(){return this.elem.getEndOffset()});d(c$,"getElement",function(){return this.elem});d(c$,"getGraphics",function(){return this.getContainer().getGraphics()});d(c$,"getAttributes",function(){return this.elem.getAttributes()});d(c$,"breakView",function(){return this},"~N,~N,~N,~N");d(c$,"createFragment",function(){return this},"~N,~N");d(c$,
+"getBreakWeight",function(a,b,c){return c>this.getPreferredSpan(a)?1E3:0},"~N,~N,~N");d(c$,"getResizeWeight",function(){return 0},"~N");d(c$,"setSize",function(){},"~N,~N");d(c$,"getContainer",function(){var a=this.getParent();return null!=a?a.getContainer():null});d(c$,"getViewFactory",function(){var a=this.getParent();return null!=a?a.getViewFactory():null});d(c$,"getToolTipText",function(a,b,c){var f=this.getViewIndex(a,b,c);return 0<=f&&(c=this.getChildAllocation(f,c),(v(c,java.awt.Rectangle)?
+c:c.getBounds()).contains(a,b))?this.getView(f).getToolTipText(a,b,c):null},"~N,~N,java.awt.Shape");d(c$,"getViewIndex",function(a,b,c){for(var f=this.getViewCount()-1;0<=f;f--){var l=this.getChildAllocation(f,c);if(null!=l&&(v(l,java.awt.Rectangle)?l:l.getBounds()).contains(a,b))return f}return-1},"~N,~N,java.awt.Shape");d(c$,"updateChildren",function(a,b,c){b=a.getChildrenRemoved();var f=a.getChildrenAdded(),l=null;if(null!=f)for(var l=Array(f.length),d=0;d<f.length;d++)l[d]=c.create(f[d]);c=0;
+a=a.getIndex();null!=b&&(c=b.length);this.replace(a,c,l);return!0},"javax.swing.event.DocumentEvent.ElementChange,javax.swing.event.DocumentEvent,javax.swing.text.ViewFactory");d(c$,"forwardUpdate",function(a,b,c,f){this.getElement();var l=b.getOffset(),d=this.getViewIndex(l,javax.swing.text.Position.Bias.Forward);-1==d&&(b.getType()===javax.swing.event.DocumentEvent.EventType.REMOVE&&l>=this.getEndOffset())&&(d=this.getViewCount()-1);var g=d,h=0<=d?this.getView(d):null;null!=h&&h.getStartOffset()==
+l&&0<l&&(d=Math.max(d-1,0));b.getType()!==javax.swing.event.DocumentEvent.EventType.REMOVE&&(g=this.getViewIndex(l+b.getLength(),javax.swing.text.Position.Bias.Forward),0>g&&(g=this.getViewCount()-1));var j=l=g+1,h=null!=a?a.getChildrenAdded():null;null!=h&&0<h.length&&(l=a.getIndex(),j=l+h.length-1);for(a=d=Math.max(d,0);a<=g;a++)a>=l&&a<=j||(h=this.getView(a),null!=h&&(d=this.getChildAllocation(a,c),this.forwardUpdateToView(h,b,d,f)))},"javax.swing.event.DocumentEvent.ElementChange,javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");
+d(c$,"forwardUpdateToView",function(a,b,c,f){var l=b.getType();l===javax.swing.event.DocumentEvent.EventType.INSERT?a.insertUpdate(b,c,f):l===javax.swing.event.DocumentEvent.EventType.REMOVE?a.removeUpdate(b,c,f):a.changedUpdate(b,c,f)},"javax.swing.text.View,javax.swing.event.DocumentEvent,java.awt.Shape,javax.swing.text.ViewFactory");d(c$,"updateLayout",function(a,b,c){null!=a&&null!=c&&(this.preferenceChanged(null,!0,!0),a=this.getContainer(),null!=a&&a.repaint())},"javax.swing.event.DocumentEvent.ElementChange,javax.swing.event.DocumentEvent,java.awt.Shape");
+d(c$,"modelToView",function(a,b){return this.modelToView(a,b,javax.swing.text.Position.Bias.Forward)},"~N,java.awt.Shape");d(c$,"viewToModel",function(a,b,c){javax.swing.text.View.sharedBiasReturn[0]=javax.swing.text.Position.Bias.Forward;return this.viewToModel(a,b,c,javax.swing.text.View.sharedBiasReturn)},"~N,~N,java.awt.Shape");G(c$,"BadBreakWeight",0,"GoodBreakWeight",1E3,"ExcellentBreakWeight",2E3,"ForcedBreakWeight",3E3,"X_AXIS",0,"Y_AXIS",1);c$.sharedBiasReturn=c$.prototype.sharedBiasReturn=
+Array(1)});p("javax.swing.text");M(javax.swing.text,"Position");A(self.c$);c$=s(function(){this.name=null;r(this,arguments)},javax.swing.text.Position,"Bias");e(c$,"toString",function(){return this.name});m(c$,function(a){this.name=a},"~S");c$.Forward=c$.prototype.Forward=new javax.swing.text.Position.Bias("Forward");c$.Backward=c$.prototype.Backward=new javax.swing.text.Position.Bias("Backward");c$=z();p("javax.swing.text");q(["javax.swing.text.Document"],"javax.swing.text.StyledDocument",null,function(){M(javax.swing.text,
+"StyledDocument",javax.swing.text.Document)});p("javax.swing.text");q(["javax.swing.text.Highlighter","$.LayeredHighlighter","java.util.Vector"],"javax.swing.text.DefaultHighlighter",["java.awt.Rectangle","javax.swing.SwingUtilities","javax.swing.text.LayeredHighlighter.LayerPainter","javax.swing.text.Position"],function(){c$=s(function(){this.component=this.highlights=null;this.drawsLayeredHighlights=!1;this.safeDamager=null;H("javax.swing.text.DefaultHighlighter.HighlightInfo")||javax.swing.text.DefaultHighlighter.$DefaultHighlighter$HighlightInfo$();
+H("javax.swing.text.DefaultHighlighter.LayeredHighlightInfo")||javax.swing.text.DefaultHighlighter.$DefaultHighlighter$LayeredHighlightInfo$();H("javax.swing.text.DefaultHighlighter.SafeDamager")||javax.swing.text.DefaultHighlighter.$DefaultHighlighter$SafeDamager$();r(this,arguments)},javax.swing.text,"DefaultHighlighter",javax.swing.text.LayeredHighlighter);J(c$,function(){this.highlights=new java.util.Vector;this.safeDamager=C(javax.swing.text.DefaultHighlighter.SafeDamager,this,null)});m(c$,function(){t(this,
+javax.swing.text.DefaultHighlighter,[]);this.drawsLayeredHighlights=!0});e(c$,"paint",function(a){for(var b=this.highlights.size(),c=0;c<b;c++){var f=this.highlights.elementAt(c);if(!v(f,javax.swing.text.DefaultHighlighter.LayeredHighlightInfo)){var l=this.component.getBounds(),f=this.component.getInsets();l.x=f.left;l.y=f.top;l.width-=f.left+f.right;for(l.height-=f.top+f.bottom;c<b;c++)f=this.highlights.elementAt(c),v(f,javax.swing.text.DefaultHighlighter.LayeredHighlightInfo)||f.getPainter().paint(a,
+f.getStartOffset(),f.getEndOffset(),l,this.component)}}},"java.awt.Graphics");e(c$,"install",function(a){this.component=a;this.removeAllHighlights()},"javax.swing.text.JTextComponent");e(c$,"deinstall",function(){this.component=null},"javax.swing.text.JTextComponent");e(c$,"addHighlight",function(a,b,c){var f=this.component.getDocument(),l=this.getDrawsLayeredHighlights()&&v(c,javax.swing.text.LayeredHighlighter.LayerPainter)?C(javax.swing.text.DefaultHighlighter.LayeredHighlightInfo,this,null):C(javax.swing.text.DefaultHighlighter.HighlightInfo,
+this,null);l.painter=c;l.p0=f.createPosition(a);l.p1=f.createPosition(b);this.highlights.addElement(l);this.safeDamageRange(a,b);return l},"~N,~N,javax.swing.text.Highlighter.HighlightPainter");e(c$,"removeHighlight",function(a){v(a,javax.swing.text.DefaultHighlighter.LayeredHighlightInfo)?0<a.width&&0<a.height&&this.component.repaint(a.x,a.y,a.width,a.height):this.safeDamageRange(a.p0,a.p1);this.highlights.removeElement(a)},"~O");e(c$,"removeAllHighlights",function(){var a=this.component.getUI();
+if(this.getDrawsLayeredHighlights()){if(a=this.highlights.size(),0!=a){for(var b=0,c=0,f=0,l=0,d=-1,g=-1,h=0;h<a;h++){var j=this.highlights.elementAt(h);v(j,javax.swing.text.DefaultHighlighter.LayeredHighlightInfo)?(b=Math.min(b,j.x),c=Math.min(c,j.y),f=Math.max(f,j.x+j.width),l=Math.max(l,j.y+j.height)):-1==d?(d=j.p0.getOffset(),g=j.p1.getOffset()):(d=Math.min(d,j.p0.getOffset()),g=Math.max(g,j.p1.getOffset()))}b!=f&&c!=l&&this.component.repaint(b,c,f-b,l-c);if(-1!=d)try{this.safeDamageRange(d,g)}catch(e){if(!y(e,
+javax.swing.text.BadLocationException))throw e;}this.highlights.removeAllElements()}}else if(null!=a&&(a=this.highlights.size(),0!=a)){d=2147483647;for(h=g=0;h<a;h++)j=this.highlights.elementAt(h),d=Math.min(d,j.p0.getOffset()),g=Math.max(g,j.p1.getOffset());try{this.safeDamageRange(d,g)}catch(x){if(!y(x,javax.swing.text.BadLocationException))throw x;}this.highlights.removeAllElements()}});e(c$,"changeHighlight",function(a,b,c){var f=this.component.getDocument();if(v(a,javax.swing.text.DefaultHighlighter.LayeredHighlightInfo))0<
+a.width&&0<a.height&&this.component.repaint(a.x,a.y,a.width,a.height),a.width=a.height=0,a.p0=f.createPosition(b),a.p1=f.createPosition(c),this.safeDamageRange(Math.min(b,c),Math.max(b,c));else{var l=a.p0.getOffset(),d=a.p1.getOffset();b==l?this.safeDamageRange(Math.min(d,c),Math.max(d,c)):c==d?this.safeDamageRange(Math.min(b,l),Math.max(b,l)):(this.safeDamageRange(l,d),this.safeDamageRange(b,c));a.p0=f.createPosition(b);a.p1=f.createPosition(c)}},"~O,~N,~N");e(c$,"getHighlights",function(){var a=
+this.highlights.size();if(0==a)return javax.swing.text.DefaultHighlighter.noHighlights;a=Array(a);this.highlights.copyInto(a);return a});e(c$,"paintLayeredHighlights",function(a,b,c,f,l,d){for(var g=this.highlights.size()-1;0<=g;g--){var h=this.highlights.elementAt(g);if(v(h,javax.swing.text.DefaultHighlighter.LayeredHighlightInfo)){var j=h.getStartOffset(),e=h.getEndOffset();(b<j&&c>j||b>=j&&b<e)&&h.paintLayeredHighlights(a,b,c,f,l,d)}}},"java.awt.Graphics,~N,~N,java.awt.Shape,javax.swing.text.JTextComponent,javax.swing.text.View");
+d(c$,"safeDamageRange",function(a,b){this.safeDamager.damageRange(a,b)},"javax.swing.text.Position,javax.swing.text.Position");d(c$,"safeDamageRange",function(a,b){var c=this.component.getDocument();this.safeDamageRange(c.createPosition(a),c.createPosition(b))},"~N,~N");d(c$,"setDrawsLayeredHighlights",function(a){this.drawsLayeredHighlights=a},"~B");d(c$,"getDrawsLayeredHighlights",function(){return this.drawsLayeredHighlights});c$.$DefaultHighlighter$HighlightInfo$=function(){A(self.c$);c$=s(function(){O(this,
+arguments);this.painter=this.p1=this.p0=null;r(this,arguments)},javax.swing.text.DefaultHighlighter,"HighlightInfo",null,javax.swing.text.Highlighter.Highlight);e(c$,"getStartOffset",function(){return this.p0.getOffset()});e(c$,"getEndOffset",function(){return this.p1.getOffset()});e(c$,"getPainter",function(){return this.painter});c$=z()};c$.$DefaultHighlighter$LayeredHighlightInfo$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.height=this.width=this.y=this.x=0;r(this,arguments)},
+javax.swing.text.DefaultHighlighter,"LayeredHighlightInfo",javax.swing.text.DefaultHighlighter.HighlightInfo,null,C(javax.swing.text.DefaultHighlighter.HighlightInfo,this,null,$));d(c$,"union",function(a){null!=a&&(a=v(a,java.awt.Rectangle)?a:a.getBounds(),0==this.width||0==this.height?(this.x=a.x,this.y=a.y,this.width=a.width,this.height=a.height):(this.width=Math.max(this.x+this.width,a.x+a.width),this.height=Math.max(this.y+this.height,a.y+a.height),this.x=Math.min(this.x,a.x),this.width-=this.x,
+this.y=Math.min(this.y,a.y),this.height-=this.y))},"java.awt.Shape");d(c$,"paintLayeredHighlights",function(a,b,c,f,l,d){var g=this.getStartOffset(),h=this.getEndOffset();b=Math.max(g,b);c=Math.min(h,c);this.union(this.painter.paintLayer(a,b,c,f,l,d))},"java.awt.Graphics,~N,~N,java.awt.Shape,javax.swing.text.JTextComponent,javax.swing.text.View");c$=z()};c$.$DefaultHighlighter$SafeDamager$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.lastDoc=this.p1=this.p0=null;r(this,arguments)},
+javax.swing.text.DefaultHighlighter,"SafeDamager",null,Runnable);J(c$,function(){this.p0=new java.util.Vector(10);this.p1=new java.util.Vector(10)});e(c$,"run",function(){if(null!=this.b$["javax.swing.text.DefaultHighlighter"].component){var a=this.b$["javax.swing.text.DefaultHighlighter"].component.getUI();if(null!=a&&this.lastDoc===this.b$["javax.swing.text.DefaultHighlighter"].component.getDocument())for(var b=this.p0.size(),c=0;c<b;c++)a.damageRange(this.b$["javax.swing.text.DefaultHighlighter"].component,
+this.p0.get(c).getOffset(),this.p1.get(c).getOffset())}this.p0.clear();this.p1.clear();this.lastDoc=null});d(c$,"damageRange",function(a,b){if(null==this.b$["javax.swing.text.DefaultHighlighter"].component)this.p0.clear(),this.lastDoc=null;else{var c=this.p0.isEmpty(),f=this.b$["javax.swing.text.DefaultHighlighter"].component.getDocument();f!==this.lastDoc&&(this.p0.isEmpty()||(this.p0.clear(),this.p1.clear()),this.lastDoc=f);this.p0.add(a);this.p1.add(b);c&&javax.swing.SwingUtilities.invokeLater(this)}},
+"javax.swing.text.Position,javax.swing.text.Position");c$=z()};A(self.c$);c$=s(function(){this.color=null;r(this,arguments)},javax.swing.text.DefaultHighlighter,"DefaultHighlightPainter",javax.swing.text.LayeredHighlighter.LayerPainter);m(c$,function(a){t(this,javax.swing.text.DefaultHighlighter.DefaultHighlightPainter,[]);this.color=a},"java.awt.Color");d(c$,"getColor",function(){return this.color});e(c$,"paint",function(a,b,c,f,l){f=f.getBounds();try{var d=l.getUI(),g=d.modelToView(l,b),h=d.modelToView(l,
+c),j=this.getColor();null==j?a.setColor(l.getSelectionColor()):a.setColor(j);if(g.y==h.y){var e=g.union(h);a.fillRect(e.x,e.y,e.width,e.height)}else e=f.x+f.width-g.x,a.fillRect(g.x,g.y,e,g.height),g.y+g.height!=h.y&&a.fillRect(f.x,g.y+g.height,f.width,h.y-(g.y+g.height)),a.fillRect(f.x,h.y,h.x-f.x,h.height)}catch(x){if(!y(x,javax.swing.text.BadLocationException))throw x;}},"java.awt.Graphics,~N,~N,java.awt.Shape,javax.swing.text.JTextComponent");e(c$,"paintLayer",function(a,b,c,f,l,d){var g=this.getColor();
+null==g?a.setColor(l.getSelectionColor()):a.setColor(g);var h;if(b==d.getStartOffset()&&c==d.getEndOffset())h=v(f,java.awt.Rectangle)?f:f.getBounds();else try{var j=d.modelToView(b,javax.swing.text.Position.Bias.Forward,c,javax.swing.text.Position.Bias.Backward,f);h=v(j,java.awt.Rectangle)?j:j.getBounds()}catch(e){if(y(e,javax.swing.text.BadLocationException))h=null;else throw e;}null!=h&&(h.width=Math.max(h.width,1),a.fillRect(h.x,h.y,h.width,h.height));return h},"java.awt.Graphics,~N,~N,java.awt.Shape,javax.swing.text.JTextComponent,javax.swing.text.View");
+c$=z();c$.noHighlights=c$.prototype.noHighlights=[];c$.DefaultPainter=c$.prototype.DefaultPainter=new javax.swing.text.DefaultHighlighter.DefaultHighlightPainter(null)});p("javax.swing.text");M(javax.swing.text,"Highlighter");M(javax.swing.text.Highlighter,"HighlightPainter");M(javax.swing.text.Highlighter,"Highlight");p("javax.swing.text");q(["javax.swing.text.Highlighter"],"javax.swing.text.LayeredHighlighter",null,function(){c$=B(javax.swing.text,"LayeredHighlighter",null,javax.swing.text.Highlighter);
+A(self.c$);c$=B(javax.swing.text.LayeredHighlighter,"LayerPainter",null,javax.swing.text.Highlighter.HighlightPainter);c$=z()});p("swingjs");q(["swingjs.JSAbstractDocument"],"swingjs.JSPlainDocument",["java.util.Hashtable","JU.SB","swingjs.JSPosition"],function(){c$=B(swingjs,"JSPlainDocument",swingjs.JSAbstractDocument);m(c$,function(){t(this,swingjs.JSPlainDocument);this.sb=new JU.SB;this.root=C(swingjs.JSAbstractDocument.JSElement,this,null)});e(c$,"getLength",function(){return this.sb.length()});
+d(c$,"getText",function(a,b){this.checkLoc(a,a+b);return this.sb.substring2(a,a+b)},"~N,~N");d(c$,"getText",function(a,b,c){this.checkLoc(a,a+b);if(null==this.tempChar){this.tempChar=N(this.sb.length(),"\x00");for(var f=this.tempChar.length;0<=--f;)this.tempChar[f]=this.sb.charAt(f)}c.array=this.tempChar;c.offset=a;c.count=b},"~N,~N,javax.swing.text.Segment");e(c$,"getStartPosition",function(){return new swingjs.JSPosition(0)});e(c$,"getEndPosition",function(){return new swingjs.JSPosition(this.sb.length())});
+e(c$,"createPosition",function(a){this.checkLoc(a,a);var b=Integer.$valueOf(a);null==this.positions&&(this.positions=new java.util.Hashtable);var c=this.positions.get(b);null==c&&this.positions.put(b,c=new swingjs.JSPosition(a));return c},"~N");e(c$,"getDefaultRootElement",function(){return this.root});e(c$,"render",function(){},"Runnable");G(c$,"tabSizeAttribute","tabSize","lineLimitAttribute","lineLimit")});p("swingjs");q(["javax.swing.text.DocumentFilter","$.Element","$.JSMinimalAbstractDocument"],
+"swingjs.JSAbstractDocument","java.lang.IllegalStateException java.util.HashMap JU.AU javax.swing.event.DocumentEvent $.DocumentListener $.EventListenerList javax.swing.text.BadLocationException swingjs.JSDocumentEvent".split(" "),function(){c$=s(function(){this.listenerList=this.positions=this.root=this.props=null;this.notifyingListeners=!1;this.filter=this.tempChar=this.sb=this.me=this.filterBypass=null;H("swingjs.JSAbstractDocument.DefaultFilterBypass")||swingjs.JSAbstractDocument.$JSAbstractDocument$DefaultFilterBypass$();
+H("swingjs.JSAbstractDocument.JSElement")||swingjs.JSAbstractDocument.$JSAbstractDocument$JSElement$();r(this,arguments)},swingjs,"JSAbstractDocument",null,javax.swing.text.JSMinimalAbstractDocument);m(c$,function(){this.me=this;this.props=new java.util.HashMap});e(c$,"getRootElements",function(){return E(-1,[this.root,null])});d(c$,"checkLoc",function(a,b){if(0>a||b>this.getLength())throw new javax.swing.text.BadLocationException("JSAbstractDocument: out of range",0>a?a:b);},"~N,~N");d(c$,"fixPositions",
+function(a,b,c){if(!(null==this.positions||this.positions.isEmpty()))if(c){var f;for(c=this.positions.keySet().iterator();c.hasNext()&&((f=c.next())||1);){var l=f.intValue();l>a&&(this.positions.get(f).pos+=b)}}else for(c=this.positions.keySet().iterator();c.hasNext()&&((f=c.next())||1);)l=f.intValue(),l<=a||(l>=a+b?this.positions.get(f).pos-=b:this.positions.get(f).pos=a)},"~N,~N,~B");d(c$,"getFilterBypass",function(){null==this.filterBypass&&(this.filterBypass=C(swingjs.JSAbstractDocument.DefaultFilterBypass,
+this,null));return this.filterBypass});e(c$,"remove",function(a,b){var c=this.getDocumentFilter();null==c?this.handleRemove(a,b):c.remove(this.getFilterBypass(),a,b)},"~N,~N");e(c$,"insertString",function(a,b,c){var f=this.getDocumentFilter();null==f?this.handleInsertString(a,b,c):f.insertString(this.getFilterBypass(),a,b,c)},"~N,~S,javax.swing.text.AttributeSet");e(c$,"replace",function(a,b,c,f){if(!(0==b&&(null==c||0==c.length))){var l=this.getDocumentFilter();null!=l?l.replace(this.getFilterBypass(),
+a,b,c,f):(0<b&&this.remove(a,b),null!=c&&0<c.length&&this.insertString(a,c,f))}},"~N,~N,~S,javax.swing.text.AttributeSet");d(c$,"taint",function(){this.tempChar=null});d(c$,"setLines",function(){this.root=C(swingjs.JSAbstractDocument.JSElement,this,null);var a=this.sb.toString();a.lastIndexOf("\n")!=a.length-1&&(a+="\n");for(var b=0,c=0;c<a.length;c++)if("\n"==a.charAt(c)){var f=C(swingjs.JSAbstractDocument.JSElement,this,null);f.start=b;f.end=c;b=c+1;this.root.addChild(f)}});d(c$,"handleInsertString",
+function(a,b){if(!(null==b||0==b.length)){this.checkLoc(a,a);this.taint();this.sb.insert(a,b);this.fixPositions(a,b.length,!0);0<=b.indexOf("\n")&&this.setLines();var c=new swingjs.JSDocumentEvent(this,a,b.length,javax.swing.event.DocumentEvent.EventType.INSERT);this.fireInsertUpdate(c)}},"~N,~S,javax.swing.text.AttributeSet");d(c$,"handleRemove",function(a,b){this.checkLoc(a,a+b);this.taint();var c=this.sb.substring2(a,a+b);this.sb.replace(a,a+b,"");this.fixPositions(a,a+b,!1);0<=c.indexOf("\n")&&
+this.setLines();0<b&&(c=new swingjs.JSDocumentEvent(this,a,b,javax.swing.event.DocumentEvent.EventType.REMOVE),this.fireRemoveUpdate(c))},"~N,~N");d(c$,"fireInsertUpdate",function(a){if(null!=this.listenerList){this.checkAlreadyNotifying();this.notifyingListeners=!0;try{for(var b=this.listenerList.getListenerList(),c=b.length-2;0<=c;c-=2)b[c]===javax.swing.event.DocumentListener&&b[c+1].insertUpdate(a)}finally{this.notifyingListeners=!1}}},"javax.swing.event.DocumentEvent");d(c$,"fireChangedUpdate",
+function(a){if(null!=this.listenerList){this.checkAlreadyNotifying();this.notifyingListeners=!0;try{for(var b=this.listenerList.getListenerList(),c=b.length-2;0<=c;c-=2)b[c]===javax.swing.event.DocumentListener&&b[c+1].changedUpdate(a)}finally{this.notifyingListeners=!1}}},"javax.swing.event.DocumentEvent");d(c$,"fireRemoveUpdate",function(a){if(null!=this.listenerList){this.checkAlreadyNotifying();this.notifyingListeners=!0;try{for(var b=this.listenerList.getListenerList(),c=b.length-2;0<=c;c-=2)b[c]===
+javax.swing.event.DocumentListener&&b[c+1].removeUpdate(a)}finally{this.notifyingListeners=!1}}},"javax.swing.event.DocumentEvent");d(c$,"checkAlreadyNotifying",function(){if(this.notifyingListeners)throw new IllegalStateException("One of the document listeners modifed the document. This is not allowed.");});e(c$,"addDocumentListener",function(a){null==this.listenerList&&(this.listenerList=new javax.swing.event.EventListenerList);this.listenerList.add(javax.swing.event.DocumentListener,a)},"javax.swing.event.DocumentListener");
+e(c$,"removeDocumentListener",function(a){null!=this.listenerList&&this.listenerList.remove(javax.swing.event.DocumentListener,a)},"javax.swing.event.DocumentListener");e(c$,"addUndoableEditListener",function(){},"javax.swing.event.UndoableEditListener");e(c$,"removeUndoableEditListener",function(){},"javax.swing.event.UndoableEditListener");e(c$,"getProperty",function(a){return this.props.get(a)},"~O");e(c$,"putProperty",function(a,b){this.props.put(a,b)},"~O,~O");e(c$,"getAsynchronousLoadPriority",
+function(){return-1});e(c$,"setDocumentFilter",function(a){this.filter=a},"javax.swing.text.DocumentFilter");d(c$,"getDocumentFilter",function(){return this.filter});c$.$JSAbstractDocument$DefaultFilterBypass$=function(){A(self.c$);c$=s(function(){O(this,arguments);r(this,arguments)},swingjs.JSAbstractDocument,"DefaultFilterBypass",javax.swing.text.DocumentFilter.FilterBypass);e(c$,"getDocument",function(){return this.b$["swingjs.JSAbstractDocument"].me});e(c$,"remove",function(a,b){this.b$["swingjs.JSAbstractDocument"].handleRemove(a,
+b)},"~N,~N");e(c$,"insertString",function(a,b,c){this.b$["swingjs.JSAbstractDocument"].handleInsertString(a,b,c)},"~N,~S,javax.swing.text.AttributeSet");e(c$,"replace",function(a,b,c,f){this.b$["swingjs.JSAbstractDocument"].handleRemove(a,b);this.b$["swingjs.JSAbstractDocument"].handleInsertString(a,c,f)},"~N,~N,~S,javax.swing.text.AttributeSet");c$=z()};c$.$JSAbstractDocument$JSElement$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.attributeSet=this.parent=null;this.nchildren=this.end=
+this.start=0;this.children=null;this.lastIndex=0;r(this,arguments)},swingjs.JSAbstractDocument,"JSElement",null,javax.swing.text.Element);m(c$,function(){this.children=null;this.nchildren=0;this.lastIndex=-1});d(c$,"addChild",function(a){null==this.children?this.children=Array(10):this.nchildren==this.children.length&&(this.children=JU.AU.doubleLength(this.children));this.children[this.nchildren++]=a},"swingjs.JSAbstractDocument.JSElement");e(c$,"getDocument",function(){return this.b$["swingjs.JSAbstractDocument"].me});
+e(c$,"getParentElement",function(){return this.parent});e(c$,"getName",function(){return this.getName()});e(c$,"getAttributes",function(){return this.attributeSet});d(c$,"getStartOffset",function(){return this.start});d(c$,"getEndOffset",function(){return this.end});e(c$,"getElementIndex",function(a){var b=0,c=this.nchildren-1,f=0,l=this.getStartOffset(),d;if(0==this.nchildren)return 0;if(a>=this.getEndOffset())return this.nchildren-1;if(this.lastIndex>=b&&this.lastIndex<=c){d=this.children[this.lastIndex];
+l=d.getStartOffset();d=d.getEndOffset();if(a>=l&&a<d)return this.lastIndex;a<l?c=this.lastIndex:b=this.lastIndex}for(;b<=c;){f=b+F((c-b)/2);d=this.children[f];l=d.getStartOffset();d=d.getEndOffset();if(a>=l&&a<d)return this.lastIndex=a=f;a<l?c=f-1:b=f+1}return this.lastIndex=a=a<l?f:f+1},"~N");e(c$,"getElementCount",function(){return this.nchildren});e(c$,"getElement",function(a){return a>=this.nchildren?null:this.children[a]},"~N");e(c$,"isLeaf",function(){return null!=this.parent});c$=z()};G(c$,
+"ParagraphElementName","paragraph","ContentElementName","content")});p("swingjs");q(["javax.swing.event.DocumentEvent"],"swingjs.JSDocumentEvent",["swingjs.JSToolkit"],function(){c$=s(function(){this.len=this.off=0;this.doc=this.type=null;r(this,arguments)},swingjs,"JSDocumentEvent",null,javax.swing.event.DocumentEvent);m(c$,function(a,b,c,f){this.off=b;this.len=c;this.type=f;this.doc=a},"swingjs.JSAbstractDocument,~N,~N,javax.swing.event.DocumentEvent.EventType");e(c$,"getOffset",function(){return this.off});
+e(c$,"getLength",function(){return this.len});e(c$,"getDocument",function(){return this.doc});e(c$,"getType",function(){return this.type});e(c$,"getChange",function(){swingjs.JSToolkit.notImplemented("");return null},"javax.swing.text.Element")});p("swingjs");q(["javax.swing.text.Position"],"swingjs.JSPosition",null,function(){c$=s(function(){this.pos=0;r(this,arguments)},swingjs,"JSPosition",null,javax.swing.text.Position);m(c$,function(a){this.pos=a},"~N");e(c$,"getOffset",function(){return this.pos})});
+p("swingjs.api");c$=B(swingjs.api,"HTML5CanvasContext2D");c$.stretchImage=d(c$,"stretchImage",function(a,b,c,f,l,d,g,h,j,e){a.drawImage(b,c,f,l,d,g,h,j,e)},"swingjs.api.HTML5CanvasContext2D,swingjs.api.DOMNode,~N,~N,~N,~N,~N,~N,~N,~N");p("javax.swing");q(["javax.swing.JLabel","$.ListCellRenderer","javax.swing.plaf.UIResource","javax.swing.border.EmptyBorder"],"javax.swing.DefaultListCellRenderer",["javax.swing.Icon","jssun.swing.DefaultLookup"],function(){c$=B(javax.swing,"DefaultListCellRenderer",
+javax.swing.JLabel,javax.swing.ListCellRenderer);m(c$,function(){t(this,javax.swing.DefaultListCellRenderer);this.setOpaque(!0);this.setBorder(this.getNoFocusBorder());this.setName("List.cellRenderer")});d(c$,"getNoFocusBorder",function(){var a=jssun.swing.DefaultLookup.getBorder(this,this.ui,"List.cellNoFocusBorder");return null!=System.getSecurityManager()?null!=a?a:javax.swing.DefaultListCellRenderer.SAFE_NO_FOCUS_BORDER:null!=a&&(null==javax.swing.DefaultListCellRenderer.noFocusBorder||javax.swing.DefaultListCellRenderer.noFocusBorder===
+javax.swing.DefaultListCellRenderer.DEFAULT_NO_FOCUS_BORDER)?a:javax.swing.DefaultListCellRenderer.noFocusBorder});e(c$,"getListCellRendererComponent",function(a,b,c,f,l){this.setComponentOrientation(a.getComponentOrientation());f?(this.setBackground(a.getSelectionBackground()),this.setForeground(a.getSelectionForeground())):(this.setBackground(a.getBackground()),this.setForeground(a.getForeground()));v(b,javax.swing.Icon)?(this.setIcon(b),this.setText("")):(this.setIcon(null),this.setText(null==
+b?"":b.toString()));this.setEnabled(a.isEnabled());this.setFont(a.getFont());a=null;l?(f&&(a=jssun.swing.DefaultLookup.getBorder(this,this.ui,"List.focusSelectedCellHighlightBorder")),null==a&&(a=jssun.swing.DefaultLookup.getBorder(this,this.ui,"List.focusCellHighlightBorder"))):a=this.getNoFocusBorder();this.setBorder(a);return this},"javax.swing.JList,~O,~N,~B,~B");d(c$,"isOpaque",function(){var a=this.getBackground(),b=this.getParent();null!=b&&(b=b.getParent());return!(null!=a&&null!=b&&a.equals(b.getBackground())&&
+b.isOpaque())&&K(this,javax.swing.DefaultListCellRenderer,"isOpaque",[])});e(c$,"validate",function(){});e(c$,"invalidate",function(){});d(c$,"repaint",function(){});e(c$,"revalidate",function(){});d(c$,"repaint",function(){},"~N,~N,~N,~N,~N");d(c$,"repaint",function(){},"java.awt.Rectangle");e(c$,"firePropertyChangeObject",function(){},"~S,~O,~O");e(c$,"firePropertyChangeByte",function(){},"~S,~N,~N");e(c$,"firePropertyChangeChar",function(){},"~S,~S,~S");e(c$,"firePropertyChangeShort",function(){},
+"~S,~N,~N");e(c$,"firePropertyChangeInt",function(){},"~S,~N,~N");e(c$,"firePropertyChangeLong",function(){},"~S,~N,~N");e(c$,"firePropertyChangeFloat",function(){},"~S,~N,~N");e(c$,"firePropertyChangeDouble",function(){},"~S,~N,~N");e(c$,"firePropertyChangeBool",function(){},"~S,~B,~B");A(self.c$);c$=B(javax.swing.DefaultListCellRenderer,"UIResource",javax.swing.DefaultListCellRenderer,javax.swing.plaf.UIResource);c$=z();c$.SAFE_NO_FOCUS_BORDER=c$.prototype.SAFE_NO_FOCUS_BORDER=new javax.swing.border.EmptyBorder(1,
+1,1,1);c$.DEFAULT_NO_FOCUS_BORDER=c$.prototype.DEFAULT_NO_FOCUS_BORDER=new javax.swing.border.EmptyBorder(1,1,1,1);c$.noFocusBorder=c$.prototype.noFocusBorder=javax.swing.DefaultListCellRenderer.DEFAULT_NO_FOCUS_BORDER});p("javax.swing");M(javax.swing,"ListCellRenderer");p("javax.swing.border");q(["javax.swing.border.AbstractBorder"],"javax.swing.border.EmptyBorder",["java.awt.Insets"],function(){c$=s(function(){this.bottom=this.top=this.right=this.left=0;r(this,arguments)},javax.swing.border,"EmptyBorder",
+javax.swing.border.AbstractBorder);m(c$,function(a,b,c,f){t(this,javax.swing.border.EmptyBorder,[]);this.top=a;this.right=f;this.bottom=c;this.left=b},"~N,~N,~N,~N");m(c$,function(a){t(this,javax.swing.border.EmptyBorder,[]);this.top=a.top;this.right=a.right;this.bottom=a.bottom;this.left=a.left},"java.awt.Insets");e(c$,"paintBorder",function(){},"java.awt.Component,java.awt.Graphics,~N,~N,~N,~N");d(c$,"getBorderInsets",function(){return this.getBorderInsets()},"java.awt.Component");d(c$,"getBorderInsets",
+function(a,b){b.left=this.left;b.top=this.top;b.right=this.right;b.bottom=this.bottom;return b},"java.awt.Component,java.awt.Insets");d(c$,"getBorderInsets",function(){return new java.awt.Insets(this.top,this.left,this.bottom,this.right)});e(c$,"isBorderOpaque",function(){return!1})});p("jssun.swing");q(null,"jssun.swing.DefaultLookup","java.lang.Boolean $.Number $.Thread java.awt.Color $.Insets javax.swing.Icon $.UIManager javax.swing.border.Border jssun.awt.AppContext".split(" "),function(){c$=
+B(jssun.swing,"DefaultLookup");c$.setDefaultLookup=d(c$,"setDefaultLookup",function(a){if(jssun.swing.DefaultLookup.isLookupSet||null!=a)null==a&&(a=new jssun.swing.DefaultLookup),jssun.swing.DefaultLookup.isLookupSet=!0,jssun.awt.AppContext.getAppContext().put(jssun.swing.DefaultLookup.DEFAULT_LOOKUP_KEY,a),jssun.swing.DefaultLookup.currentDefaultThread=Thread.currentThread(),jssun.swing.DefaultLookup.currentDefaultLookup=a},"jssun.swing.DefaultLookup");c$.get=d(c$,"get",function(a,b,c){if(!jssun.swing.DefaultLookup.isLookupSet)return javax.swing.UIManager.get(c,
+a.getLocale());var f=Thread.currentThread(),l;f===jssun.swing.DefaultLookup.currentDefaultThread?l=jssun.swing.DefaultLookup.currentDefaultLookup:(l=jssun.awt.AppContext.getAppContext().get(jssun.swing.DefaultLookup.DEFAULT_LOOKUP_KEY),null==l&&(l=new jssun.swing.DefaultLookup,jssun.awt.AppContext.getAppContext().put(jssun.swing.DefaultLookup.DEFAULT_LOOKUP_KEY,l)),jssun.swing.DefaultLookup.currentDefaultThread=f,jssun.swing.DefaultLookup.currentDefaultLookup=l);return l.getDefault(a,b,c)},"javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S");
+c$.getInt=d(c$,"getInt",function(a,b,c,f){a=jssun.swing.DefaultLookup.get(a,b,c);return null==a||!v(a,Number)?f:a.intValue()},"javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S,~N");c$.getInt=d(c$,"getInt",function(a,b,c){return jssun.swing.DefaultLookup.getInt(a,b,c,-1)},"javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S");c$.getInsets=d(c$,"getInsets",function(a,b,c,f){a=jssun.swing.DefaultLookup.get(a,b,c);return null==a||!v(a,java.awt.Insets)?f:a},"javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S,java.awt.Insets");
+c$.getInsets=d(c$,"getInsets",function(a,b,c){return jssun.swing.DefaultLookup.getInsets(a,b,c,null)},"javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S");c$.getBoolean=d(c$,"getBoolean",function(a,b,c,f){a=jssun.swing.DefaultLookup.get(a,b,c);return null==a||!v(a,Boolean)?f:a.booleanValue()},"javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S,~B");c$.getBoolean=d(c$,"getBoolean",function(a,b,c){return jssun.swing.DefaultLookup.getBoolean(a,b,c,!1)},"javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S");
+c$.getColor=d(c$,"getColor",function(a,b,c,f){a=jssun.swing.DefaultLookup.get(a,b,c);return null==a||!v(a,java.awt.Color)?f:a},"javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S,java.awt.Color");c$.getColor=d(c$,"getColor",function(a,b,c){return jssun.swing.DefaultLookup.getColor(a,b,c,null)},"javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S");c$.getIcon=d(c$,"getIcon",function(a,b,c,f){a=jssun.swing.DefaultLookup.get(a,b,c);return null==a||!v(a,javax.swing.Icon)?f:a},"javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S,javax.swing.Icon");
+c$.getIcon=d(c$,"getIcon",function(a,b,c){return jssun.swing.DefaultLookup.getIcon(a,b,c,null)},"javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S");c$.getBorder=d(c$,"getBorder",function(a,b,c,f){a=jssun.swing.DefaultLookup.get(a,b,c);return null==a||!v(a,javax.swing.border.Border)?f:a},"javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S,javax.swing.border.Border");c$.getBorder=d(c$,"getBorder",function(a,b,c){return jssun.swing.DefaultLookup.getBorder(a,b,c,null)},"javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S");
+d(c$,"getDefault",function(a,b,c){return javax.swing.UIManager.get(c,a.getLocale())},"javax.swing.JComponent,javax.swing.plaf.ComponentUI,~S");c$.DEFAULT_LOOKUP_KEY=c$.prototype.DEFAULT_LOOKUP_KEY=new W._O;G(c$,"currentDefaultThread",null,"currentDefaultLookup",null,"isLookupSet",!1)});p("javax.swing.plaf");q(["java.awt.Dimension","javax.swing.plaf.UIResource"],"javax.swing.plaf.DimensionUIResource",null,function(){c$=B(javax.swing.plaf,"DimensionUIResource",java.awt.Dimension,javax.swing.plaf.UIResource)});
+p("javax.swing.plaf");q(["java.awt.Insets","javax.swing.plaf.UIResource"],"javax.swing.plaf.InsetsUIResource",null,function(){c$=B(javax.swing.plaf,"InsetsUIResource",java.awt.Insets,javax.swing.plaf.UIResource)});p("swingjs.plaf");M(swingjs.plaf,"JSEventHandler");p("JU");q(["java.net.URLStreamHandlerFactory","java.util.Hashtable"],"JU.AjaxURLStreamHandlerFactory",["JU.AjaxURLStreamHandler"],function(){c$=s(function(){this.htFactories=null;r(this,arguments)},JU,"AjaxURLStreamHandlerFactory",null,
+java.net.URLStreamHandlerFactory);J(c$,function(){this.htFactories=new java.util.Hashtable});e(c$,"createURLStreamHandler",function(a){var b=this.htFactories.get(a);null==b&&this.htFactories.put(a,b=new JU.AjaxURLStreamHandler(a));return null==b.protocol?null:b},"~S")});p("java.net");M(java.net,"URLStreamHandlerFactory");p("JU");q(["java.net.URLStreamHandler"],"JU.AjaxURLStreamHandler",["JU.AjaxURLConnection","$.SB"],function(){c$=s(function(){this.protocol=null;r(this,arguments)},JU,"AjaxURLStreamHandler",
+java.net.URLStreamHandler);m(c$,function(a){t(this,JU.AjaxURLStreamHandler,[]);this.protocol=a},"~S");e(c$,"openConnection",function(a){return new JU.AjaxURLConnection(a)},"java.net.URL");e(c$,"toExternalForm",function(a){var b=new JU.SB;b.append(a.getProtocol());b.append(":");null!=a.getAuthority()&&0<a.getAuthority().length&&(b.append("//"),b.append(a.getAuthority()));null!=a.getPath()&&b.append(a.getPath());null!=a.getQuery()&&(b.append("?"),b.append(a.getQuery()));null!=a.getRef()&&(b.append("#"),
+b.append(a.getRef()));return b.toString()},"java.net.URL")});p("java.net");q(null,"java.net.URLStreamHandler",["java.lang.IllegalArgumentException","$.SecurityException","$.UnsupportedOperationException"],function(){c$=B(java.net,"URLStreamHandler");d(c$,"openConnectionProxy",function(){throw new UnsupportedOperationException("Method not implemented.");},"java.net.URL,java.net.Proxy");d(c$,"parseURL",function(a,b,c,f){var l=a.getProtocol(),d=a.getAuthority(),g=a.getUserInfo(),h=a.getHost(),j=a.getPort(),
+e=a.getPath(),x=a.getQuery(),u=a.getRef(),D=!1,m=!1;if(c<f){var p=b.indexOf("?"),m=p==c;-1!=p&&p<f&&(x=b.substring(p+1,f),f>p&&(f=p),b=b.substring(0,p))}var q=0;if(!(c<=f-4&&"/"==b.charAt(c)&&"/"==b.charAt(c+1)&&"/"==b.charAt(c+2)&&"/"==b.charAt(c+3))&&c<=f-2&&"/"==b.charAt(c)&&"/"==b.charAt(c+1)){c+=2;q=b.indexOf("/",c);0>q&&(q=b.indexOf("?",c),0>q&&(q=f));h=d=b.substring(c,q);p=d.indexOf("@");-1!=p?(g=d.substring(0,p),h=d.substring(p+1)):g=null;if(null!=h){if(0<h.length&&"["==h.charAt(0))throw new IllegalArgumentException("Invalid host: "+
+h);p=h.indexOf(":");j=-1;0<=p&&(h.length>p+1&&(j=Integer.parseInt(h.substring(p+1))),h=h.substring(0,p))}else h="";if(-1>j)throw new IllegalArgumentException("Invalid port number :"+j);c=q;0<d.length&&(e="")}null==h&&(h="");c<f?"/"==b.charAt(c)?e=b.substring(c,f):null!=e&&0<e.length?(D=!0,p=e.lastIndexOf("/"),m="",-1==p&&null!=d&&(m="/"),e=e.substring(0,p+1)+m+b.substring(c,f)):e=(null!=d?"/":"")+b.substring(c,f):m&&null!=e&&(p=e.lastIndexOf("/"),0>p&&(p=0),e=e.substring(0,p)+"/");null==e&&(e="");
+if(D){for(;0<=(q=e.indexOf("/./"));)e=e.substring(0,q)+e.substring(q+2);for(q=0;0<=(q=e.indexOf("/../",q));)0<q&&0<=(f=e.lastIndexOf("/",q-1))&&0!=e.indexOf("/../",f)?(e=e.substring(0,f)+e.substring(q+3),q=0):q+=3;for(;e.endsWith("/..");)if(q=e.indexOf("/.."),0<=(f=e.lastIndexOf("/",q-1)))e=e.substring(0,f+1);else break;e.startsWith("./")&&2<e.length&&(e=e.substring(2));e.endsWith("/.")&&(e=e.substring(0,e.length-1))}this.setURL(a,l,h,j,d,g,e,x,u)},"java.net.URL,~S,~N,~N");d(c$,"getDefaultPort",function(){return-1});
+d(c$,"equals2",function(a,b){var c=a.getRef(),f=b.getRef();return(c===f||null!=c&&c.equals(f))&&this.sameFile(a,b)},"java.net.URL,java.net.URL");d(c$,"hashCode",function(a){var b=0,c=a.getProtocol();null!=c&&(b+=c.hashCode());b+=a.toString().hashCode();c=a.getFile();null!=c&&(b+=c.hashCode());b=-1==a.getPort()?b+this.getDefaultPort():b+a.getPort();a=a.getRef();null!=a&&(b+=a.hashCode());return b},"java.net.URL");d(c$,"sameFile",function(a,b){if(!(a.getProtocol()===b.getProtocol()||null!=a.getProtocol()&&
+a.getProtocol().equalsIgnoreCase(b.getProtocol()))||!(a.getFile()===b.getFile()||null!=a.getFile()&&a.getFile().equals(b.getFile())))return!1;var c,f;c=-1!=a.getPort()?a.getPort():a.handler.getDefaultPort();f=-1!=b.getPort()?b.getPort():b.handler.getDefaultPort();return c!=f||!this.hostsEqual(a,b)?!1:!0},"java.net.URL,java.net.URL");d(c$,"hostsEqual",function(a,b){return null!=a.getHost()&&null!=b.getHost()?a.getHost().equalsIgnoreCase(b.getHost()):null==a.getHost()&&null==b.getHost()},"java.net.URL,java.net.URL");
+d(c$,"toExternalForm",function(){return""},"java.net.URL");d(c$,"setURL",function(a,b,c,f,l,d,g,h,j){if(this!==a.handler)throw new SecurityException("handler for url different from this handler");a.set(a.getProtocol(),c,f,l,d,g,h,j)},"java.net.URL,~S,~S,~N,~S,~S,~S,~S,~S");d(c$,"setURLDeprecated",function(a,b,c,f,l,d){var g=null,h=null;if(null!=c&&0!=c.length){var g=-1==f?c:c+":"+f,j=c.lastIndexOf("@");-1!=j&&(h=c.substring(0,j),c=c.substring(j+1))}var e=null,j=null;null!=l&&(e=l.lastIndexOf("?"),
+-1!=e?(j=l.substring(e+1),e=l.substring(0,e)):e=l);this.setURL(a,b,c,f,g,h,e,j,d)},"java.net.URL,~S,~S,~N,~S,~S")});p("JU");q(["java.net.URLConnection"],"JU.AjaxURLConnection",["JU.AU","$.Rdr","$.SB"],function(){c$=s(function(){this.bytesOut=null;this.postOut="";r(this,arguments)},JU,"AjaxURLConnection",java.net.URLConnection);d(c$,"doAjax",function(){return Jmol._doAjax(this.url,this.postOut,this.bytesOut)});e(c$,"connect",function(){});d(c$,"outputBytes",function(a){this.bytesOut=a},"~A");d(c$,
+"outputString",function(a){this.postOut=a},"~S");e(c$,"getInputStream",function(){var a=null,b=this.doAjax();JU.AU.isAB(b)?a=JU.Rdr.getBIS(b):v(b,JU.SB)?a=JU.Rdr.getBIS(JU.Rdr.getBytesFromSB(b)):v(b,String)&&(a=JU.Rdr.getBIS(b.getBytes()));return a});d(c$,"getContents",function(){return this.doAjax()})});p("java.net");q(null,"java.net.URLConnection",["java.lang.IllegalStateException","$.NullPointerException","java.net.UnknownServiceException","JU.Lst"],function(){c$=s(function(){this.url=null;this.doInput=
+!0;this.connected=this.doOutput=!1;this.requests=null;r(this,arguments)},java.net,"URLConnection");d(c$,"setDoInput",function(a){if(this.connected)throw new IllegalStateException("Already connected");this.doInput=a},"~B");d(c$,"getDoInput",function(){return this.doInput});d(c$,"setDoOutput",function(a){if(this.connected)throw new IllegalStateException("Already connected");this.doOutput=a},"~B");d(c$,"getDoOutput",function(){return this.doOutput});m(c$,function(a){this.url=a},"java.net.URL");d(c$,
+"getURL",function(){return this.url});d(c$,"getInputStream",function(){throw new java.net.UnknownServiceException("protocol doesn't support input");});d(c$,"getOutputStream",function(){throw new java.net.UnknownServiceException("protocol doesn't support output");});d(c$,"setRequestProperty",function(a,b){if(this.connected)throw new IllegalStateException("Already connected");if(null==a)throw new NullPointerException("key is null");null==this.requests&&(this.requests=new JU.Lst);for(var c=this.requests.size();0<=
+--c;)if(this.requests.get(c)[0].equals(a)){this.requests.get(c)[1]=b;return}this.requests.addLast(E(-1,[a,b]))},"~S,~S")});p("java.net");q(["java.io.IOException"],"java.net.UnknownServiceException",null,function(){c$=B(java.net,"UnknownServiceException",java.io.IOException);m(c$,function(){t(this,java.net.UnknownServiceException,[])})});p("jalview.bin");q("jalview.api.StructureSelectionManagerProvider jalview.javascript.JalviewLiteJsApi java.lang.Thread javax.swing.JApplet jalview.util.MessageManager java.util.Hashtable $.Vector javax.swing.JButton".split(" "),
+"jalview.bin.JalviewLite","awt2swing.Util jalview.analysis.SequenceIdMatcher jalview.appletgui.AlignFrame $.EmbmenuFrame $.FeatureSettings $.SplitFrame jalview.datamodel.Alignment $.AlignmentOrder $.ColumnSelection $.PDBEntry $.SequenceGroup jalview.io.AnnotationFile $.AppletFormatAdapter $.FileParse $.IdentifyFile $.JnetAnnotationMaker $.NewickFile jalview.javascript.JSFunctionExec $.JsSelectionSender $.MouseOverListener $.MouseOverStructureListener jalview.jsdev.GenericFileAdapter jalview.schemes.ColourSchemeProperty $.UserColourScheme jalview.structure.SelectionListener $.StructureSelectionManager java.awt.Color $.EventQueue $.Font java.awt.event.ActionListener $.WindowAdapter java.io.BufferedReader $.InputStreamReader java.lang.Error $.StringBuffer java.net.URL java.util.StringTokenizer netscape.javascript.JSObject".split(" "),
+function(){c$=s(function(){this.enableSplitFrame=this.embedded=!1;this.checkForJmol=this.showButton=!0;this.jalviewServletURL=null;this.startupFile="No file";this.jsFunctionExec=this.javascriptListeners=this.file2=this.upperCase=this.heightScale=this.widthScale=this.userDefinedColour=this.centrecolumnlabels=this.wrap=this.sortBy=this.defaultColour=this.windowHeight=this.windowWidth=this.treeFile=this.scoreFile=this.showFeatureSettings=this.features=this.showFeatureGroups=this.hideFeatureGroups=this.annotations=
+this.jnetFile=this.sequence=this.pdbFile=this.initjscallback=this.labelColour=this.rgb=this.sep=this.externalstructureviewer=this.helpUrl=null;this.fileFound=!0;this.initialAlignFrame=this.currentAlignFrame=this.launcher=null;this.haveShownLoadMessage=this.useXtrnalSviewer=this.alignPdbStructures=this.jmolAvailable=this.checkedForJmol=!1;H("jalview.bin.JalviewLite.LoadJmolThread")||jalview.bin.JalviewLite.$JalviewLite$LoadJmolThread$();H("jalview.bin.JalviewLite.LoadingThread")||jalview.bin.JalviewLite.$JalviewLite$LoadingThread$();
+this.separator="\u00ac";this.jsfallbackEnabled=!1;this.jsExecQueue=this.jsmessages=this.jshashes=null;r(this,arguments)},jalview.bin,"JalviewLite",javax.swing.JApplet,[jalview.api.StructureSelectionManagerProvider,jalview.javascript.JalviewLiteJsApi]);J(c$,function(){this.javascriptListeners=new java.util.Vector;this.launcher=new javax.swing.JButton(jalview.util.MessageManager.getString("label.start_jalview"));this.jshashes=new java.util.Hashtable;this.jsmessages=new java.util.Hashtable;this.jsExecQueue=
+new java.util.Vector});d(c$,"setParams",function(){jalview.bin.JalviewLite.debug="true".equalsIgnoreCase(this.getParameter("debug"));this.enableSplitFrame="true".equalsIgnoreCase(this.getParameter("enableSplitFrame"));this.embedded="true".equalsIgnoreCase(this.getParameter("embedded"));this.showButton=!"false".equalsIgnoreCase(this.getParameter("showbutton"));this.jalviewServletURL=this.getParameter("APPLICATION_URL");this.startupFile=this.getParameter("file");this.helpUrl=this.getParameter("jalviewhelpurl");
+this.externalstructureviewer=this.getParameter("externalstructureviewer");this.checkForJmol=!"true".equals(this.getParameter("nojmol"));this.sep=this.getParameter("separator");this.rgb=this.getParameter("RGB");this.labelColour=this.getParameter("label");this.initjscallback=this.getParameter("oninit");this.pdbFile=this.getParameter("PDBFILE");this.sequence=this.getParameter("PDBSEQ");this.jnetFile=this.getParameter("jnetfile");this.annotations=this.getParameter("annotations");this.hideFeatureGroups=
+this.getParameter("hidefeaturegroups");this.showFeatureGroups=this.getParameter("showfeaturegroups");this.features=this.getParameter("features");this.showFeatureSettings=this.getParameter("showFeatureSettings");this.scoreFile=this.getParameter("scoreFile");this.treeFile=this.getParameter("tree");null==this.treeFile&&(this.treeFile=this.getParameter("treeFile"));this.windowWidth=this.getParameter("windowWidth");this.windowHeight=this.getParameter("windowHeight");this.defaultColour=this.getParameter("defaultColour");
+this.sortBy=this.getParameter("sortBy");this.wrap=this.getParameter("wrap");this.centrecolumnlabels=this.getParameter("centrecolumnlabels");this.userDefinedColour=this.getParameter("userDefinedColour");this.widthScale=this.getParameter("widthScale");this.heightScale=this.getParameter("heightScale");this.upperCase=this.getParameter("upperCase");this.file2=this.getParameter("file2")});d(c$,"getDefaultParameter",function(a,b){var c;return null==(c=this.getParameter(a))?b:c.toLowerCase().equals("true")?
+!0:!1},"~S,~B");d(c$,"getLinkParams",function(a){for(var b,c,f=1;10>f;f++)b=this.getParameter("linkLabel_"+f),c=this.getParameter("linkURL_"+f),null!=b&&null!=c&&a.addElement(b+"|"+c)},"java.util.Vector");d(c$,"getStructureSelectionManager",function(){return jalview.structure.StructureSelectionManager.getStructureSelectionManager(this)});d(c$,"getSelectedSequences",function(){return this.getSelectedSequencesFrom(this.getDefaultTargetFrame())});d(c$,"getSelectedSequences",function(a){return this.getSelectedSequencesFrom(this.getDefaultTargetFrame(),
+a)},"~S");d(c$,"getSelectedSequencesFrom",function(a){return this.getSelectedSequencesFrom(a,this.separator)},"jalview.appletgui.AlignFrame");d(c$,"getSelectedSequencesFrom",function(a,b){var c=new StringBuffer("");if(null==b||0==b.length)b=this.separator;if(null!=a.viewport.getSelectionGroup())for(var f=a.viewport.getSelectionGroup().getSequencesInOrder(a.viewport.getAlignment()),l=0;l<f.length;l++)c.append(f[l].getName()),c.append(b);return c.toString()},"jalview.appletgui.AlignFrame,~S");e(c$,
+"highlight",function(a,b,c){this.highlightIn(this.getDefaultTargetFrame(),a,b,c)},"~S,~S,~S");e(c$,"highlightIn",function(a,b,c,f){a=(new jalview.analysis.SequenceIdMatcher(a.viewport.getAlignment().getSequencesArray())).findIdMatch(b);if(null!=a){b=-1;try{b=(new Integer(c)).intValue(),b--}catch(l){if(y(l,NumberFormatException))return;throw l;}c=b;null!=f&&(0==f.trim().length||-1<f.toLowerCase().indexOf("false"))?java.awt.EventQueue.invokeLater((H("jalview.bin.JalviewLite$1")?0:jalview.bin.JalviewLite.$JalviewLite$1$(),
+C(jalview.bin.JalviewLite$1,this,T("me",this,"sq",a,"pos",c)))):java.awt.EventQueue.invokeLater((H("jalview.bin.JalviewLite$2")?0:jalview.bin.JalviewLite.$JalviewLite$2$(),C(jalview.bin.JalviewLite$2,this,T("me",this,"sq",a,"pos",c))))}},"jalview.appletgui.AlignFrame,~S,~S,~S");d(c$,"select",function(a,b){this.selectIn(this.getDefaultTargetFrame(),a,b,this.separator)},"~S,~S");d(c$,"select",function(a,b,c){this.selectIn(this.getDefaultTargetFrame(),a,b,c)},"~S,~S,~S");d(c$,"selectIn",function(a,b,
+c){this.selectIn(a,b,c,this.separator)},"jalview.appletgui.AlignFrame,~S,~S");d(c$,"selectIn",function(a,b,c,f){null==f||0==f.length?f=this.separator:jalview.bin.JalviewLite.debug&&System.err.println("Selecting region using separator string '"+this.separator+"'");var l=this.separatorListToArray(b,f),d=this.separatorListToArray(c,f);c=new jalview.datamodel.SequenceGroup;f=new jalview.datamodel.ColumnSelection;var g=a.viewport.getAlignment(),h=new jalview.analysis.SequenceIdMatcher(a.viewport.getAlignment().getSequencesArray());
+b=0;var j=g.getWidth(),g=g.getWidth(),e=!0;if(null!=l&&0<l.length)for(var e=!1,x=0;x<l.length;x++)if(0!=l[x].trim().length){var u=h.findIdMatch(l[x]);null!=u&&(e=!0,c.addSequence(u,!1))}l=!1;if(null!=d&&0<d.length){h=!1;for(x=0;x<d.length;x++)if(u=d[x].trim(),0!=u.length){var D;if(-1<(D=u.indexOf("-"))){var m=-1,p=-1;try{m=(new Integer(u.substring(0,D))).intValue(),m--}catch(q){if(y(q,NumberFormatException)){System.err.println("ERROR: Couldn't parse first integer in range element column selection string '"+
+u+"' - format is 'from-to'");return}throw q;}try{p=(new Integer(u.substring(D+1))).intValue(),p--}catch(r){if(y(r,NumberFormatException)){System.err.println("ERROR: Couldn't parse second integer in range element column selection string '"+u+"' - format is 'from-to'");return}throw r;}if(0<=m&&0<=p){h?(b>m&&(b=m),j<p&&(j=p)):(b=m,j=p,h=!0);for(D=m;D<=p;D++)0<=D&&D<g&&f.addElement(D);jalview.bin.JalviewLite.debug&&System.err.println("Range '"+u+"' deparsed as ["+m+","+p+"]")}else System.err.println("ERROR: Invalid Range '"+
+u+"' deparsed as ["+m+","+p+"]")}else{D=-1;try{D=(new Integer(u)).intValue(),D--}catch(s){if(y(s,NumberFormatException))if(u.toLowerCase().equals("sequence"))l=!0;else{System.err.println("ERROR: Couldn't parse integer from point selection element of column selection string '"+u+"'");return}else throw s;}0<=D&&D<=g?(h?(b>D&&(b=D),j<D&&(j=D)):(j=b=D,h=!0),f.addElement(D),jalview.bin.JalviewLite.debug&&System.err.println("Point selection '"+u+"' deparsed as ["+D+"]")):System.err.println("ERROR: Invalid Point selection '"+
+u+"' deparsed as ["+D+"]")}}}if(e){if(l&&0<c.getSize()&&(d=c.getSequenceAt(0),b=d.findIndex(b),j=d.findIndex(j),null!=f)){g=f.getSelected();f.clear();for(var t,g=g.iterator();g.hasNext()&&((t=g.next())||1);)f.addElement(d.findIndex(t.intValue()))}c.setStartRes(b);c.setEndRes(j);java.awt.EventQueue.invokeLater((H("jalview.bin.JalviewLite$3")?0:jalview.bin.JalviewLite.$JalviewLite$3$(),C(jalview.bin.JalviewLite$3,this,T("alf",a,"sel",c,"csel",f))))}},"jalview.appletgui.AlignFrame,~S,~S,~S");e(c$,"getSelectedSequencesAsAlignment",
+function(a,b){return this.getSelectedSequencesAsAlignmentFrom(this.getDefaultTargetFrame(),a,b)},"~S,~S");e(c$,"getSelectedSequencesAsAlignmentFrom",function(a,b,c){try{var f=c.equalsIgnoreCase("true");if(null!=a.viewport.getSelectionGroup())return(new jalview.io.AppletFormatAdapter).formatSequences(b,new jalview.datamodel.Alignment(a.viewport.getSelectionAsNewSequence()),f)}catch(l){if(y(l,Exception))return l.printStackTrace(),"Error retrieving alignment in "+b+" format. ";throw l;}return""},"jalview.appletgui.AlignFrame,~S,~S");
+e(c$,"getAlignmentOrder",function(){return this.getAlignmentOrderFrom(this.getDefaultTargetFrame())});d(c$,"getAlignmentOrderFrom",function(a){return this.getAlignmentOrderFrom(a,this.separator)},"jalview.appletgui.AlignFrame");d(c$,"getAlignmentOrderFrom",function(a){a=a.getAlignViewport().getAlignment();for(var b=Array(a.getHeight()),c=0;c<b.length;c++)b[c]=a.getSequenceAt(c).getName();return this.arrayToSeparatorList(b)},"jalview.appletgui.AlignFrame,~S");d(c$,"orderBy",function(a,b){return this.orderBy(a,
+b,this.separator)},"~S,~S");d(c$,"orderBy",function(a,b,c){return this.orderAlignmentBy(this.getDefaultTargetFrame(),a,b,c)},"~S,~S,~S");e(c$,"orderAlignmentBy",function(a,b,c,f){var l=this.separatorListToArray(b,f);b=null;if(null!=l&&0<l.length){var d=new jalview.analysis.SequenceIdMatcher(a.viewport.getAlignment().getSequencesArray());f=0;b=Array(l.length);for(var g=0;g<l.length;g++)if(0!=l[g].trim().length){var h=d.findIdMatch(l[g]);null!=h&&(b[f++]=h)}0<f?(l=Array(f),System.arraycopy(b,0,l,0,
+f),b=l):b=null}if(null==b)return"";b=new jalview.datamodel.AlignmentOrder(b);null!=c&&0==c.trim().length&&(c=null);return a.sortBy(b,c)?"true":""},"jalview.appletgui.AlignFrame,~S,~S,~S");d(c$,"getAlignment",function(a){return this.getAlignmentFrom(this.getDefaultTargetFrame(),a,"true")},"~S");d(c$,"getAlignmentFrom",function(a,b){return this.getAlignmentFrom(a,b,"true")},"jalview.appletgui.AlignFrame,~S");d(c$,"getAlignment",function(a,b){return this.getAlignmentFrom(this.getDefaultTargetFrame(),
+a,b)},"~S,~S");d(c$,"getAlignmentFrom",function(a,b,c){try{var f=c.equalsIgnoreCase("true");return(new jalview.io.AppletFormatAdapter).formatSequences(b,a.viewport.getAlignment(),f)}catch(l){if(y(l,Exception))return l.printStackTrace(),"Error retrieving alignment in "+b+" format. ";throw l;}},"jalview.appletgui.AlignFrame,~S,~S");e(c$,"loadAnnotation",function(a){this.loadAnnotationFrom(this.getDefaultTargetFrame(),a)},"~S");e(c$,"loadAnnotationFrom",function(a,b){(new jalview.io.AnnotationFile).annotateAlignmentView(a.getAlignViewport(),
+b,jalview.io.AppletFormatAdapter.PASTE)?(a.alignPanel.fontChanged(),a.alignPanel.setScrollValues(0,0)):a.parseFeaturesFile(b,jalview.io.AppletFormatAdapter.PASTE)},"jalview.appletgui.AlignFrame,~S");e(c$,"loadFeatures",function(a,b){this.loadFeaturesFrom(this.getDefaultTargetFrame(),a,b)},"~S,~B");e(c$,"loadFeaturesFrom",function(a,b,c){return a.parseFeaturesFile(b,jalview.io.AppletFormatAdapter.PASTE,c)},"jalview.appletgui.AlignFrame,~S,~B");e(c$,"getFeatures",function(a){return this.getFeaturesFrom(this.getDefaultTargetFrame(),
+a)},"~S");e(c$,"getFeaturesFrom",function(a,b){return a.outputFeatures(!1,b)},"jalview.appletgui.AlignFrame,~S");e(c$,"getAnnotation",function(){return this.getAnnotationFrom(this.getDefaultTargetFrame())});e(c$,"getAnnotationFrom",function(a){return a.outputAnnotations(!1)},"jalview.appletgui.AlignFrame");d(c$,"newView",function(){return this.newViewFrom(this.getDefaultTargetFrame())});d(c$,"newView",function(a){return this.newViewFrom(this.getDefaultTargetFrame(),a)},"~S");d(c$,"newViewFrom",function(a){return a.newView(null)},
+"jalview.appletgui.AlignFrame");d(c$,"newViewFrom",function(a,b){return a.newView(b)},"jalview.appletgui.AlignFrame,~S");e(c$,"loadAlignment",function(a,b){var c=null,f=(new jalview.io.IdentifyFile).Identify(a,jalview.io.AppletFormatAdapter.PASTE);try{if(c=(new jalview.io.AppletFormatAdapter).readFile(a,jalview.io.AppletFormatAdapter.PASTE,f),0<c.getHeight())return new jalview.appletgui.AlignFrame(c,this,b,!1)}catch(l){if(y(l,java.io.IOException))l.printStackTrace();else throw l;}return null},"~S,~S");
+d(c$,"setMouseoverListener",function(a){this.setMouseoverListener(this.currentAlignFrame,a)},"~S");d(c$,"setMouseoverListener",function(a,b){if(null!=b&&(b=b.trim(),0==b.length)){System.err.println("jalview Javascript error: Ignoring empty function for mouseover listener.");return}var c=new jalview.javascript.MouseOverListener(this,a,b);this.javascriptListeners.addElement(c);jalview.structure.StructureSelectionManager.getStructureSelectionManager(this).addStructureViewerListener(c);jalview.bin.JalviewLite.debug&&
+(System.err.println("Added a mouseover listener for "+(null==a?"All frames":"Just views for "+a.getAlignViewport().getSequenceSetId())),System.err.println("There are now "+this.javascriptListeners.size()+" listeners in total."))},"jalview.appletgui.AlignFrame,~S");d(c$,"setSelectionListener",function(a){this.setSelectionListener(null,a)},"~S");d(c$,"setSelectionListener",function(a,b){if(null!=b&&(b=b.trim(),0==b.length)){System.err.println("jalview Javascript error: Ignoring empty function for selection listener.");
+return}var c=new jalview.javascript.JsSelectionSender(this,a,b);this.javascriptListeners.addElement(c);jalview.structure.StructureSelectionManager.getStructureSelectionManager(this).addSelectionListener(c);jalview.bin.JalviewLite.debug&&(System.err.println("Added a selection listener for "+(null==a?"All frames":"Just views for "+a.getAlignViewport().getSequenceSetId())),System.err.println("There are now "+this.javascriptListeners.size()+" listeners in total."))},"jalview.appletgui.AlignFrame,~S");
+e(c$,"setStructureListener",function(a,b){if(null!=a&&(a=a.trim(),0==a.length)){System.err.println("jalview Javascript error: Ignoring empty function for selection listener.");return}var c=new jalview.javascript.MouseOverStructureListener(this,a,this.separatorListToArray(b));this.javascriptListeners.addElement(c);jalview.structure.StructureSelectionManager.getStructureSelectionManager(this).addStructureViewerListener(c);jalview.bin.JalviewLite.debug&&(System.err.println("Added a javascript structure viewer listener '"+
+a+"'"),System.err.println("There are now "+this.javascriptListeners.size()+" listeners in total."))},"~S,~S");e(c$,"removeJavascriptListener",function(a,b){null!=b&&(b=b.trim(),0==b.length&&(b=null));for(var c=!1,f=0,l=this.javascriptListeners.size();f<l;){var d=this.javascriptListeners.elementAt(f);(null==a||d.getAlignFrame()===a)&&(null==b||d.getListenerFunction().equals(b))?(this.javascriptListeners.removeElement(d),l--,v(d,jalview.structure.SelectionListener)?jalview.structure.StructureSelectionManager.getStructureSelectionManager(this).removeSelectionListener(d):
+jalview.structure.StructureSelectionManager.getStructureSelectionManager(this).removeStructureViewerListener(d,null),(c=jalview.bin.JalviewLite.debug)&&System.err.println("Removed listener '"+b+"'")):f++}c&&System.err.println("There are now "+this.javascriptListeners.size()+" listeners in total.")},"jalview.appletgui.AlignFrame,~S");e(c$,"stop",function(){System.err.println("Applet "+this.getName()+" stop().");this.tidyUp()});e(c$,"destroy",function(){System.err.println("Applet "+this.getName()+" destroy().");
+this.tidyUp()});d(c$,"tidyUp",function(){this.removeAll();if(null!=this.currentAlignFrame&&null!=this.currentAlignFrame.viewport&&null!=this.currentAlignFrame.viewport.applet){var a=this.currentAlignFrame.viewport;this.currentAlignFrame.closeMenuItem_actionPerformed();this.currentAlignFrame=a.applet=null}if(null!=this.javascriptListeners)for(;0<this.javascriptListeners.size();)a=this.javascriptListeners.elementAt(0),this.javascriptListeners.removeElement(a),v(a,jalview.structure.SelectionListener)?
+jalview.structure.StructureSelectionManager.getStructureSelectionManager(this).removeSelectionListener(a):jalview.structure.StructureSelectionManager.getStructureSelectionManager(this).removeStructureViewerListener(a,null),a.jvlite=null;null!=this.jsFunctionExec&&(this.jsFunctionExec.stopQueue(),this.jsFunctionExec.jvlite=null);this.javascriptListeners=this.jsFunctionExec=this.initialAlignFrame=null;jalview.structure.StructureSelectionManager.release(this)});e(c$,"mouseOverStructure",function(a,b,
+c){java.awt.EventQueue.invokeLater((H("jalview.bin.JalviewLite$4")?0:jalview.bin.JalviewLite.$JalviewLite$4$(),C(jalview.bin.JalviewLite$4,this,T("me",this,"pdbResNum",a,"chain",b,"pdbfile",c))))},"~S,~S,~S");e(c$,"scrollViewToIn",function(a,b,c){java.awt.EventQueue.invokeLater((H("jalview.bin.JalviewLite$5")?0:jalview.bin.JalviewLite.$JalviewLite$5$(),C(jalview.bin.JalviewLite$5,this,T("alf",a,"topRow",b,"leftHandColumn",c))))},"jalview.appletgui.AlignFrame,~S,~S");e(c$,"scrollViewToRowIn",function(a,
+b){java.awt.EventQueue.invokeLater((H("jalview.bin.JalviewLite$6")?0:jalview.bin.JalviewLite.$JalviewLite$6$(),C(jalview.bin.JalviewLite$6,this,T("alf",a,"topRow",b))))},"jalview.appletgui.AlignFrame,~S");e(c$,"scrollViewToColumnIn",function(a,b){java.awt.EventQueue.invokeLater((H("jalview.bin.JalviewLite$7")?0:jalview.bin.JalviewLite.$JalviewLite$7$(),C(jalview.bin.JalviewLite$7,this,T("alf",a,"leftHandColumn",b))))},"jalview.appletgui.AlignFrame,~S");c$.initBuildDetails=d(c$,"initBuildDetails",
+function(){if(null==jalview.bin.JalviewLite.builddate){jalview.bin.JalviewLite.builddate="unknown";jalview.bin.JalviewLite.version="test";jalview.bin.JalviewLite.installation="Webstart";var a=jalview.bin.JalviewLite.getResource("/.build_properties");if(null!=a)try{for(var b=new java.io.BufferedReader(new java.io.InputStreamReader(a.openStream())),c;null!=(c=b.readLine());)-1<c.indexOf("VERSION")&&(jalview.bin.JalviewLite.version=c.substring(c.indexOf("=")+1)),-1<c.indexOf("BUILD_DATE")&&(jalview.bin.JalviewLite.builddate=
+c.substring(c.indexOf("=")+1)),-1<c.indexOf("INSTALLATION")&&(jalview.bin.JalviewLite.installation=c.substring(c.indexOf("=")+1))}catch(f){if(y(f,Exception))f.printStackTrace();else throw f;}}});c$.getBuildDate=d(c$,"getBuildDate",function(){jalview.bin.JalviewLite.initBuildDetails();return jalview.bin.JalviewLite.builddate});c$.getInstallation=d(c$,"getInstallation",function(){jalview.bin.JalviewLite.initBuildDetails();return jalview.bin.JalviewLite.installation});c$.getVersion=d(c$,"getVersion",
+function(){jalview.bin.JalviewLite.initBuildDetails();return jalview.bin.JalviewLite.version});e(c$,"init",function(){this.setParams();try{jalview.bin.JalviewLite.debug&&System.err.println("Applet context is '"+this.getAppletContext().getClass().toString()+"'");var a=netscape.javascript.JSObject.getWindow(this);jalview.bin.JalviewLite.debug&&null!=a&&System.err.println("Applet has Javascript callback support.")}catch(b){if(y(b,Exception))System.err.println("Warning: No JalviewLite javascript callbacks available."),
+jalview.bin.JalviewLite.debug&&b.printStackTrace();else throw b;}jalview.bin.JalviewLite.debug&&(System.err.println("JalviewLite Version "+jalview.bin.JalviewLite.getVersion()),System.err.println("Build Date : "+jalview.bin.JalviewLite.getBuildDate()),System.err.println("Installation : "+jalview.bin.JalviewLite.getInstallation()));null!=this.externalstructureviewer&&(this.useXtrnalSviewer=this.externalstructureviewer.trim().toLowerCase().equals("true"));if(null!=this.sep)if(0<this.sep.length)this.separator=
+this.sep,jalview.bin.JalviewLite.debug&&System.err.println("Separator set to '"+this.separator+"'");else throw Error(jalview.util.MessageManager.getString("error.invalid_separator_parameter"));var c=a=255,f=255;if(null!=this.rgb)try{a=Integer.parseInt(this.rgb.substring(0,2),16),c=Integer.parseInt(this.rgb.substring(2,4),16),f=Integer.parseInt(this.rgb.substring(4,6),16)}catch(l){if(y(l,Exception))f=c=a=255;else throw l;}this.rgb=this.labelColour;null!=this.rgb&&this.launcher.setLabel(this.rgb);this.setBackground(new java.awt.Color(a,
+c,f));if(null==this.startupFile){a=new StringBuffer("PASTE");for(c=1;null!=(this.startupFile=this.getParameter("sequence"+c));)a.append(this.startupFile.toString()+"\n"),c++;5<a.length()&&(this.startupFile=a.toString())}this.enableSplitFrame||(this.file2=null);this.embedded?(a=C(jalview.bin.JalviewLite.LoadingThread,this,null,this.startupFile,this.file2,this),a.run()):null!=this.startupFile?this.showButton?(this.add(this.launcher),this.launcher.addActionListener((H("jalview.bin.JalviewLite$8")?0:
+jalview.bin.JalviewLite.$JalviewLite$8$(),C(jalview.bin.JalviewLite$8,this,null)))):(a=C(jalview.bin.JalviewLite.LoadingThread,this,null,this.startupFile,this.file2,this),a.start()):(this.startupFile="NO FILE",this.fileFound=!1,this.callInitCallback())});d(c$,"initLiveConnect",function(){for(var a=!1,b=0;!a&&10>b;){0<b&&System.err.println("LiveConnect request thread going to sleep.");try{Thread.sleep(700*(1+b))}catch(c){if(!y(c,InterruptedException))throw c;}0<b++&&System.err.println("LiveConnect request thread woken up.");
+try{null!=netscape.javascript.JSObject.getWindow(this).eval("navigator")&&(a=!0)}catch(f){if(y(f,Exception))System.err.println("Attempt "+b+" to access LiveConnect javascript failed.");else throw f;}}});d(c$,"callInitCallback",function(){if(null!=this.initjscallback&&(this.initjscallback=this.initjscallback.trim(),0<this.initjscallback.length)){var a=null;try{a=netscape.javascript.JSObject.getWindow(this)}catch(b){if(!y(b,Exception))throw b;}this.initLiveConnect();if(null!=a)try{(new jalview.javascript.JSFunctionExec(this)).executeJavascriptFunction(!0,
+this.initjscallback,null,"Calling oninit callback '"+this.initjscallback+"'.")}catch(c){if(y(c,Exception))System.err.println("Exception when executing _oninit callback '"+this.initjscallback+"'."),c.printStackTrace();else throw c;}else System.err.println("Not executing _oninit callback '"+this.initjscallback+"' - no scripting allowed.")}});c$.addFrame=d(c$,"addFrame",function(a,b,c,f){a.setLocation(jalview.bin.JalviewLite.lastFrameX,jalview.bin.JalviewLite.lastFrameY);jalview.bin.JalviewLite.lastFrameX+=
+40;jalview.bin.JalviewLite.lastFrameY+=40;a.setSize(c,f);a.setTitle(b);a.addWindowListener((H("jalview.bin.JalviewLite$9")?0:jalview.bin.JalviewLite.$JalviewLite$9$(),C(jalview.bin.JalviewLite$9,this,T("frame",a))));a.setVisible(!0)},"javax.swing.JFrame,~S,~N,~N");d(c$,"paintComponent",function(a){this.fileFound?this.embedded&&!this.haveShownLoadMessage&&(a.setColor(java.awt.Color.black),a.setFont(new java.awt.Font("Arial",1,24)),awt2swing.Util.drawString(a,jalview.util.MessageManager.getString("label.jalview_applet"),
+50,F(this.getSize().height/2)-30),awt2swing.Util.drawString(a,jalview.util.MessageManager.getString("label.loading_data")+"...",50,F(this.getSize().height/2)),this.haveShownLoadMessage=!0):(a.setColor(new java.awt.Color(200,200,200)),a.setColor(java.awt.Color.cyan),a.fillRect(0,0,this.getSize().width,this.getSize().height),a.setColor(java.awt.Color.red),awt2swing.Util.drawString(a,jalview.util.MessageManager.getString("label.jalview_cannot_open_file"),5,15),awt2swing.Util.drawString(a,'"'+this.startupFile+
+'"',5,30))},"java.awt.Graphics");d(c$,"getAppletWindow",function(a){var b=new java.util.Vector,c=this.getComponents();if(null!=c)for(var f=0;f<c.length;f++)a.isAssignableFrom(c[f].getClass())&&b.addElement(c);return b},"Class");d(c$,"getDefaultTargetFrame",function(){if(null!=this.currentAlignFrame)return this.currentAlignFrame;if(null!=this.initialAlignFrame)return this.initialAlignFrame;System.err.println("Implementation error: Jalview Applet API cannot work out which AlignFrame to use.");return null});
+d(c$,"separatorListToArray",function(a){return this.separatorListToArray(a,this.separator)},"~S");d(c$,"separatorListToArray",function(a,b){var c=b.length;if(null==a||a.equals("")||a.equals(b))return null;for(var f=new java.util.Vector,l=0,d;(d=a.indexOf(b,l))>l;)f.addElement(a.substring(l,d)),l=d+c;l<a.length&&(c=a.substring(l),c.equals(b)||f.addElement(c));if(0<f.size()){c=Array(f.size());for(l=0;l<c.length;l++)c[l]=f.elementAt(l);f.removeAllElements();if(jalview.bin.JalviewLite.debug){System.err.println("Array from '"+
+b+"' separated List:\n"+c.length);for(l=0;l<c.length;l++)System.err.println("item "+l+" '"+c[l]+"'")}return c}jalview.bin.JalviewLite.debug&&System.err.println("Empty Array from '"+b+"' separated List");return null},"~S,~S");d(c$,"arrayToSeparatorList",function(a){return this.arrayToSeparatorList(a,this.separator)},"~A");d(c$,"arrayToSeparatorList",function(a,b){var c=new StringBuffer;if(null!=a&&0<a.length){for(var f=0,l=a.length;f<l;f++)null!=a[f]&&(0<f&&c.append(b),c.append(a[f]));jalview.bin.JalviewLite.debug&&
+(System.err.println("Returning '"+b+"' separated List:\n"),System.err.println(c));return c.toString()}jalview.bin.JalviewLite.debug&&System.err.println("Returning empty '"+b+"' separated List\n");return""+b},"~A,~S");e(c$,"getFeatureGroups",function(){return this.arrayToSeparatorList(this.getDefaultTargetFrame().getFeatureGroups())});e(c$,"getFeatureGroupsOn",function(a){return this.arrayToSeparatorList(a.getFeatureGroups())},"jalview.appletgui.AlignFrame");e(c$,"getFeatureGroupsOfState",function(a){return this.arrayToSeparatorList(this.getDefaultTargetFrame().getFeatureGroupsOfState(a))},
+"~B");e(c$,"getFeatureGroupsOfStateOn",function(a,b){return this.arrayToSeparatorList(a.getFeatureGroupsOfState(b))},"jalview.appletgui.AlignFrame,~B");e(c$,"setFeatureGroupStateOn",function(a,b,c){java.awt.EventQueue.invokeLater((H("jalview.bin.JalviewLite$10")?0:jalview.bin.JalviewLite.$JalviewLite$10$(),C(jalview.bin.JalviewLite$10,this,T("alf",a,"groups",b,"st",c))))},"jalview.appletgui.AlignFrame,~S,~B");e(c$,"setFeatureGroupState",function(a,b){this.setFeatureGroupStateOn(this.getDefaultTargetFrame(),
+a,b)},"~S,~B");e(c$,"getSeparator",function(){return this.separator});e(c$,"setSeparator",function(a){if(null==a||1>a.length)a="\u00ac";this.separator=a;jalview.bin.JalviewLite.debug&&System.err.println("Default Separator now: '"+a+"'")},"~S");e(c$,"addPdbFile",function(a,b,c,f){return a.addPdbFile(b,c,f)},"jalview.appletgui.AlignFrame,~S,~S,~S");d(c$,"setAlignPdbStructures",function(a){this.alignPdbStructures=a},"~B");d(c$,"isAlignPdbStructures",function(){return this.alignPdbStructures});e(c$,"start",
+function(){});d(c$,"setJsMessageSet",function(a,b,c){var f=this.jsmessages.get(a);null==f&&(f=new java.util.Hashtable,this.jsmessages.put(a,f));f.put(b,c);for(var f=ea(c.length,0),l=0;l<c.length;l++)f[l]=c[l].hashCode();this.jshashes.put(a+"|"+b,f)},"~S,~S,~A");e(c$,"getJsMessage",function(a,b){var c=this.jsmessages.get(a);if(null!=c&&(c=c.get(b),null!=c))for(var f=0;f<c.length;f++)if(null!=c[f]){var l=c[f];c[f]=null;return l}return""},"~S,~S");d(c$,"isJsMessageSetChanged",function(a,b,c){a=this.jshashes.get(a+
+"|"+b);if(null==a&&null!=c)return!0;for(b=0;b<c.length;b++)if(a[b]!=c[b].hashCode())return!0;return!1},"~S,~S,~A");d(c$,"getJsExecQueue",function(){return this.jsExecQueue});d(c$,"setExecutor",function(a){this.jsFunctionExec=a},"jalview.javascript.JSFunctionExec");d(c$,"getDefaultColourParameter",function(a,b){var c=this.getParameter(a);if(null==c||0==c.trim().length)return b;var f=jalview.schemes.ColourSchemeProperty.getAWTColorFromName(c);if(null==f)try{f=(new jalview.schemes.UserColourScheme(c)).findColour("A")}catch(l){if(y(l,
+Exception))System.err.println("Couldn't parse '"+c+"' as a colour for "+a),f=null;else throw l;}return null==f?b:f},"~S,java.awt.Color");d(c$,"openJalviewHelpUrl",function(){if(null==this.helpUrl||5>this.helpUrl.trim().length)this.helpUrl="http://www.jalview.org/help.html";this.showURL(this.helpUrl,"HELP")});d(c$,"resolveUrlForLocalOrAbsolute",function(a,b){var c=b.toString(),f=c.indexOf("?");0>f&&(f=c.length);c=c.substring(0,f);c=c.substring(0,c.lastIndexOf("/")+1);return 0==a.indexOf("/")&&!b.getProtocol().equals("file")?
+(f=c.indexOf("/",8),c.substring(0,f)+a):c+a},"~S,java.net.URL");d(c$,"showURL",function(a,b){try{if(-1==a.indexOf(":")){var c;a=this.resolveUrlForLocalOrAbsolute(a,c=this.getDefaultParameter("resolvetocodebase",!1)?this.getDocumentBase():this.getCodeBase());jalview.bin.JalviewLite.debug&&System.err.println("Show url (prepended "+c+" - toggle resolvetocodebase if code/docbase resolution is wrong): "+a)}else jalview.bin.JalviewLite.debug&&System.err.println("Show url: "+a);0==a.indexOf("javascript:")?
+this.getAppletContext().showDocument(new java.net.URL(a)):this.getAppletContext().showDocument(new java.net.URL(a),b)}catch(f){if(y(f,Exception))f.printStackTrace();else throw f;}},"~S,~S");c$.$JalviewLite$LoadJmolThread$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.running=!1;r(this,arguments)},jalview.bin.JalviewLite,"LoadJmolThread",Thread);e(c$,"run",function(){if(!this.running&&!this.b$["jalview.bin.JalviewLite"].checkedForJmol){this.running=!0;if(this.b$["jalview.bin.JalviewLite"].checkForJmol)try{System.getProperty("java.version").startsWith("1.1")||
+(W._4Name("org.jmol.adapter.smarter.SmarterJmolAdapter"),this.b$["jalview.bin.JalviewLite"].jmolAvailable=!0),this.b$["jalview.bin.JalviewLite"].jmolAvailable||System.out.println("Jmol not available - Using MCview for structures")}catch(a){if(!y(a,ClassNotFoundException))throw a;}else this.b$["jalview.bin.JalviewLite"].jmolAvailable=!1,jalview.bin.JalviewLite.debug&&System.err.println("Skipping Jmol check. Will use MCView (probably)");this.b$["jalview.bin.JalviewLite"].checkedForJmol=!0;this.running=
+!1}});d(c$,"notFinished",function(){return this.running||!this.b$["jalview.bin.JalviewLite"].checkedForJmol});c$=z()};c$.$JalviewLite$LoadingThread$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.applet=this._file2=this._file=this.protocol=null;r(this,arguments)},jalview.bin.JalviewLite,"LoadingThread",Thread);d(c$,"dbgMsg",function(a){jalview.bin.JalviewLite.debug&&System.err.println(a)},"~S");d(c$,"setProtocolState",function(a){a.startsWith("PASTE")?(a=a.substring(5),this.protocol=
+jalview.io.AppletFormatAdapter.PASTE):this.inArchive(a)?this.protocol=jalview.io.AppletFormatAdapter.CLASSLOADER:(a=this.addProtocol(a),this.protocol=jalview.io.AppletFormatAdapter.URL);this.dbgMsg("Protocol identified as '"+this.protocol+"'");return a},"~S");m(c$,function(a,b,c){t(this,jalview.bin.JalviewLite.LoadingThread,[]);this._file=a;this._file2=b;this.applet=c},"~S,~S,jalview.bin.JalviewLite");e(c$,"run",function(){System.out.println("BYPASSING JMOL LOADING FOR NOW. THIS WILL BE DONE ANOTHER WAY");
+this.startLoading()});d(c$,"startLoading",function(){this.dbgMsg("Loading thread started with:\n>>file\n"+this._file+">>endfile");this.dbgMsg("Loading started.");var a=this.readAlignment(this._file),b=this.readAlignment(this._file2);null!=a?(this.addToDisplay(a,b),this.loadTree(a),this.loadScoreFile(a),this.loadFeatures(a),this.loadAnnotations(a),this.loadJnetFile(a),this.loadPdbFiles(a)):(this.b$["jalview.bin.JalviewLite"].fileFound=!1,this.applet.remove(this.b$["jalview.bin.JalviewLite"].launcher),
+this.applet.repaint());this.b$["jalview.bin.JalviewLite"].callInitCallback()});d(c$,"addToDisplay",function(a,b){null==b?a.addToDisplay(this.b$["jalview.bin.JalviewLite"].embedded):(new jalview.appletgui.SplitFrame(a,b)).addToDisplay(this.b$["jalview.bin.JalviewLite"].embedded,this.b$["jalview.bin.JalviewLite"])},"jalview.appletgui.AlignFrame,jalview.appletgui.AlignFrame");d(c$,"readAlignment",function(a){if(null==a)return null;a=this.setProtocolState(a);var b=(new jalview.io.IdentifyFile).Identify(a,
+this.protocol);this.dbgMsg("File identified as '"+b+"'");var c=null;try{if(c=(new jalview.io.AppletFormatAdapter).readFile(a,this.protocol,b),null!=c&&0<c.getHeight()){this.dbgMsg("Successfully loaded file.");c.setDataset(null);var f=new jalview.appletgui.AlignFrame(c,this.applet,a,this.b$["jalview.bin.JalviewLite"].embedded,!1);f.setTitle(a);null==this.b$["jalview.bin.JalviewLite"].initialAlignFrame&&(this.b$["jalview.bin.JalviewLite"].initialAlignFrame=f);this.b$["jalview.bin.JalviewLite"].currentAlignFrame=
+f;this.protocol===jalview.io.AppletFormatAdapter.PASTE&&f.setTitle(jalview.util.MessageManager.formatMessage("label.sequences_from",E(-1,[this.applet.getDocumentBase().toString()])));f.setStatus(jalview.util.MessageManager.formatMessage("label.successfully_loaded_file",E(-1,[a])));return f}}catch(l){if(y(l,java.io.IOException)){if(this.dbgMsg("File load exception."),l.printStackTrace(),jalview.bin.JalviewLite.debug)try{f=new jalview.io.FileParse(a,this.protocol);b=null;for(this.dbgMsg(">>>Dumping contents of '"+
+a+"' ("+this.protocol+")");null!=(b=f.nextLine());)this.dbgMsg(b);this.dbgMsg(">>>Dump finished.")}catch(d){if(y(d,Exception))System.err.println("Exception when trying to dump the content of the file parameter."),d.printStackTrace();else throw d;}}else throw l;}return null},"~S");d(c$,"loadPdbFiles",function(a){var b=!1;this.applet.setAlignPdbStructures(this.b$["jalview.bin.JalviewLite"].getDefaultParameter("alignpdbfiles",!1));var c=0,f=new java.util.Vector,l=this.applet.getDefaultParameter("relaxedidmatch",
+!1)?new jalview.analysis.SequenceIdMatcher(a.getAlignViewport().getAlignment().getSequencesArray()):null,d;do{d=0<c?this.applet.getParameter("PDBFILE"+c):this.b$["jalview.bin.JalviewLite"].pdbFile;if(null!=d){var g=new jalview.datamodel.PDBEntry,h,j=null,e=null,x=new java.util.StringTokenizer(d," ");if(2>x.countTokens())null!=this.b$["jalview.bin.JalviewLite"].sequence&&(j=E(-1,[null==l?a.getAlignViewport().getAlignment().findName(this.b$["jalview.bin.JalviewLite"].sequence):l.findIdMatch(this.b$["jalview.bin.JalviewLite"].sequence)]));
+else{d=x.nextToken();for(var u=new java.util.Vector,D=new java.util.Vector;x.hasMoreTokens();)h=x.nextToken(),j=new java.util.StringTokenizer(h,"="),1<j.countTokens()&&(D.addElement(j.nextToken()),h=j.nextToken()),u.addElement(null==l?a.getAlignViewport().getAlignment().findName(h):l.findIdMatch(h));j=Array(u.size());u.copyInto(j);D.size()==u.size()&&(e=Array(D.size()),D.copyInto(e))}d=this.setProtocolState(d);this.protocol===jalview.io.AppletFormatAdapter.CLASSLOADER&&!this.b$["jalview.bin.JalviewLite"].useXtrnalSviewer&&
+(this.protocol=jalview.io.AppletFormatAdapter.URL,d=this.addProtocol(d));g.setFile(d);if(null!=j){for(u=0;u<j.length;u++)null!=j[u]?(j[u].addPDBId(g),jalview.structure.StructureSelectionManager.getStructureSelectionManager(this.applet).registerPDBEntry(g)):jalview.bin.JalviewLite.debug&&System.err.println("Warning: Possible input parsing error: Null sequence for attachment of PDB (sequence "+u+")");this.b$["jalview.bin.JalviewLite"].alignPdbStructures?f.addElement(E(-1,[g,j,e,String.instantialize(this.protocol)])):
+a.newStructureView(this.applet,g,j,e,this.protocol)}}c++}while(null!=d||10>c);if(0<f.size()){g=Array(f.size());h=Array(f.size());j=Array(f.size());e=Array(f.size());x=0;for(u=f.size();x<u;x++)D=f.elementAt(x),h[x]=D[0],g[x]=D[1],j[x]=D[2],e[x]=D[3];a.alignedStructureView(this.applet,h,g,j,e);b=!0}return b},"jalview.appletgui.AlignFrame");d(c$,"loadJnetFile",function(a){var b=!1,c=this.b$["jalview.bin.JalviewLite"].jnetFile;if(null!=c)try{var c=this.setProtocolState(c),f=jalview.jsdev.GenericFileAdapter.getFile("JPredFile",
+[c,this.protocol]);jalview.io.JnetAnnotationMaker.add_annotation(f,a.viewport.getAlignment(),0,!1);var l=a.viewport.getAlignment().getSequenceAt(0);a.viewport.getAlignment().setSeqrep(l);var d=new jalview.datamodel.ColumnSelection;d.hideInsertionsFor(l);a.viewport.setColumnSelection(d);a.alignPanel.fontChanged();a.alignPanel.setScrollValues(0,0);b=!0}catch(g){if(y(g,Exception))g.printStackTrace();else throw g;}return b},"jalview.appletgui.AlignFrame");d(c$,"loadAnnotations",function(a){var b=!1,c=
+this.b$["jalview.bin.JalviewLite"].annotations;null!=c&&(c=this.setProtocolState(c),(new jalview.io.AnnotationFile).annotateAlignmentView(a.viewport,c,this.protocol)?(a.alignPanel.fontChanged(),a.alignPanel.setScrollValues(0,0),b=!0):System.err.println("Annotations were not added from annotation file '"+c+"'"));return b},"jalview.appletgui.AlignFrame");d(c$,"loadFeatures",function(a){var b=!1,c=this.b$["jalview.bin.JalviewLite"].hideFeatureGroups;null!=c&&a.setFeatureGroupState(this.b$["jalview.bin.JalviewLite"].separatorListToArray(c),
+!1);c=this.b$["jalview.bin.JalviewLite"].showFeatureGroups;null!=c&&a.setFeatureGroupState(this.b$["jalview.bin.JalviewLite"].separatorListToArray(c),!0);c=this.b$["jalview.bin.JalviewLite"].features;null!=c&&(c=this.setProtocolState(c),b=a.parseFeaturesFile(c,this.protocol));c=this.b$["jalview.bin.JalviewLite"].showFeatureSettings;null!=c&&c.equalsIgnoreCase("true")&&(a.viewport.setShowSequenceFeatures(!0),new jalview.appletgui.FeatureSettings(a.alignPanel));return b},"jalview.appletgui.AlignFrame");
+d(c$,"loadScoreFile",function(a){var b=!1;if(null!=this.b$["jalview.bin.JalviewLite"].scoreFile&&!"".equals(this.b$["jalview.bin.JalviewLite"].scoreFile))try{jalview.bin.JalviewLite.debug&&System.err.println("Attempting to load T-COFFEE score file from the scoreFile parameter"),(b=a.loadScoreFile(this.b$["jalview.bin.JalviewLite"].scoreFile))||System.err.println("Failed to parse T-COFFEE parameter as a valid score file ('"+this.b$["jalview.bin.JalviewLite"].scoreFile+"')")}catch(c){if(y(c,Exception))System.err.printf("Cannot read score file: '%s'. Cause: %s \n",
+[this.b$["jalview.bin.JalviewLite"].scoreFile,c.getMessage()]);else throw c;}return b},"jalview.appletgui.AlignFrame");d(c$,"loadTree",function(a){var b=!1;null==this.b$["jalview.bin.JalviewLite"].treeFile&&(this.b$["jalview.bin.JalviewLite"].treeFile=this.applet.getParameter("treeFile"));if(null!=this.b$["jalview.bin.JalviewLite"].treeFile)try{this.b$["jalview.bin.JalviewLite"].treeFile=this.setProtocolState(this.b$["jalview.bin.JalviewLite"].treeFile);var c=new jalview.io.NewickFile(this.b$["jalview.bin.JalviewLite"].treeFile,
+this.protocol);c.parse();null!=c.getTree()?(a.loadTree(c,this.b$["jalview.bin.JalviewLite"].treeFile),b=!0,this.dbgMsg("Successfully imported tree.")):this.dbgMsg("Tree parameter did not resolve to a valid tree.")}catch(f){if(y(f,Exception))f.printStackTrace();else throw f;}return b},"jalview.appletgui.AlignFrame");d(c$,"inArchive",function(a){try{var b=null!=this.getClass().getResourceAsStream("/"+a);jalview.bin.JalviewLite.debug&&System.err.println("Resource '"+a+"' was "+(b?"":"not")+" located by classloader.");
+return b}catch(c){if(y(c,Exception))return System.out.println("Exception checking resources: "+a+" "+c),!1;throw c;}},"~S");d(c$,"addProtocol",function(a){if(-1==a.indexOf("://")){var b=this.applet.resolveUrlForLocalOrAbsolute(a,this.b$["jalview.bin.JalviewLite"].getDocumentBase());if(this.urlExists(b))return jalview.bin.JalviewLite.debug&&System.err.println("Prepended document base for resource: '"+a+"'"),b;b=this.applet.resolveUrlForLocalOrAbsolute(a,this.b$["jalview.bin.JalviewLite"].getCodeBase());
+if(this.urlExists(b))return jalview.bin.JalviewLite.debug&&System.err.println("Prepended codebase for resource: '"+a+"'"),b}return a},"~S");d(c$,"urlExists",function(a){var b=null;try{if(b=(new java.net.URL(a)).openStream(),null!=b)return!0}catch(c){if(!y(c,Exception))throw c;}finally{if(null!=b)try{b.close()}catch(f){if(!y(f,java.io.IOException))throw f;}}return!1},"~S");c$=z()};c$.$JalviewLite$1$=function(){A(self.c$);c$=L(jalview.bin,"JalviewLite$1",null,Runnable);e(c$,"run",function(){jalview.structure.StructureSelectionManager.getStructureSelectionManager(this.f$.me).mouseOverVamsasSequence(this.f$.sq,
+this.f$.sq.findIndex(this.f$.pos),null)});c$=z()};c$.$JalviewLite$2$=function(){A(self.c$);c$=L(jalview.bin,"JalviewLite$2",null,Runnable);e(c$,"run",function(){jalview.structure.StructureSelectionManager.getStructureSelectionManager(this.f$.me).mouseOverVamsasSequence(this.f$.sq,this.f$.pos,null)});c$=z()};c$.$JalviewLite$3$=function(){A(self.c$);c$=L(jalview.bin,"JalviewLite$3",null,Runnable);e(c$,"run",function(){this.f$.alf.select(this.f$.sel,this.f$.csel)});c$=z()};c$.$JalviewLite$4$=function(){A(self.c$);
+c$=L(jalview.bin,"JalviewLite$4",null,Runnable);e(c$,"run",function(){try{jalview.structure.StructureSelectionManager.getStructureSelectionManager(this.f$.me).mouseOverStructure((new Integer(this.f$.pdbResNum)).intValue(),this.f$.chain,this.f$.pdbfile),jalview.bin.JalviewLite.debug&&System.err.println("mouseOver for '"+this.f$.pdbResNum+"' in chain '"+this.f$.chain+"' in structure '"+this.f$.pdbfile+"'")}catch(a){if(y(a,NumberFormatException))System.err.println("Ignoring invalid residue number string '"+
+this.f$.pdbResNum+"'");else throw a;}});c$=z()};c$.$JalviewLite$5$=function(){A(self.c$);c$=L(jalview.bin,"JalviewLite$5",null,Runnable);e(c$,"run",function(){try{this.f$.alf.scrollTo((new Integer(this.f$.topRow)).intValue(),(new Integer(this.f$.leftHandColumn)).intValue())}catch(a){if(y(a,Exception))System.err.println("Couldn't parse integer arguments (topRow='"+this.f$.topRow+"' and leftHandColumn='"+this.f$.leftHandColumn+"')"),a.printStackTrace();else throw a;}});c$=z()};c$.$JalviewLite$6$=function(){A(self.c$);
+c$=L(jalview.bin,"JalviewLite$6",null,Runnable);e(c$,"run",function(){try{this.f$.alf.scrollToRow((new Integer(this.f$.topRow)).intValue())}catch(a){if(y(a,Exception))System.err.println("Couldn't parse integer arguments (topRow='"+this.f$.topRow+"')"),a.printStackTrace();else throw a;}});c$=z()};c$.$JalviewLite$7$=function(){A(self.c$);c$=L(jalview.bin,"JalviewLite$7",null,Runnable);e(c$,"run",function(){try{this.f$.alf.scrollToColumn((new Integer(this.f$.leftHandColumn)).intValue())}catch(a){if(y(a,
+Exception))System.err.println("Couldn't parse integer arguments (leftHandColumn='"+this.f$.leftHandColumn+"')"),a.printStackTrace();else throw a;}});c$=z()};c$.$JalviewLite$8$=function(){A(self.c$);c$=L(jalview.bin,"JalviewLite$8",null,java.awt.event.ActionListener);e(c$,"actionPerformed",function(){C(jalview.bin.JalviewLite.LoadingThread,this,null,this.b$["jalview.bin.JalviewLite"].startupFile,this.b$["jalview.bin.JalviewLite"].file2,this.b$["jalview.bin.JalviewLite"]).start()},"java.awt.event.ActionEvent");
+c$=z()};c$.$JalviewLite$9$=function(){A(self.c$);c$=L(jalview.bin,"JalviewLite$9",java.awt.event.WindowAdapter);e(c$,"windowClosing",function(){if(v(this.f$.frame,jalview.appletgui.AlignFrame)){var a=this.f$.frame.viewport;this.f$.frame.closeMenuItem_actionPerformed();a.applet.currentAlignFrame===this.f$.frame&&(a.applet.currentAlignFrame=null);a.applet=null}jalview.bin.JalviewLite.lastFrameX-=40;jalview.bin.JalviewLite.lastFrameY-=40;v(this.f$.frame,jalview.appletgui.EmbmenuFrame)&&this.f$.frame.destroyMenus();
+this.f$.frame.setMenuBar(null);this.f$.frame.dispose()},"java.awt.event.WindowEvent");d(c$,"windowActivated",function(a){v(this.f$.frame,jalview.appletgui.AlignFrame)&&(this.f$.frame.viewport.applet.currentAlignFrame=this.f$.frame,jalview.bin.JalviewLite.debug&&System.err.println("Activated window "+this.f$.frame));K(this,jalview.bin.JalviewLite$9,"windowActivated",[a])},"java.awt.event.WindowEvent");c$=z()};c$.$JalviewLite$10$=function(){A(self.c$);c$=L(jalview.bin,"JalviewLite$10",null,Runnable);
+e(c$,"run",function(){this.f$.alf.setFeatureGroupState(this.b$["jalview.bin.JalviewLite"].separatorListToArray(this.f$.groups),this.f$.st)});c$=z()};G(c$,"TRUE","true","FALSE","false","debug",!1,"lastFrameX",200,"lastFrameY",200,"builddate",null,"version",null,"installation",null)});p("javax.swing");q(["javax.swing.AbstractButton"],"javax.swing.JButton",["javax.swing.DefaultButtonModel","$.SwingUtilities","$.UIManager"],function(){c$=B(javax.swing,"JButton",javax.swing.AbstractButton);m(c$,function(){this.construct(null,
+null)});m(c$,function(a){this.construct(null,a)},"javax.swing.Icon");m(c$,function(a){this.construct(a,null)},"~S");m(c$,function(a){this.construct();this.setAction(a)},"javax.swing.Action");m(c$,function(a,b){t(this,javax.swing.JButton,[]);this.setModel(new javax.swing.DefaultButtonModel);this.init(a,b)},"~S,javax.swing.Icon");e(c$,"updateUI",function(){this.setUI(javax.swing.UIManager.getUI(this))});e(c$,"getUIClassID",function(){return"ButtonUI"});d(c$,"isDefaultButton",function(){var a=javax.swing.SwingUtilities.getRootPane(this);
+return null!=a?a.getDefaultButton()===this:!1});d(c$,"isDefaultCapable",function(){return this.defaultCapable});d(c$,"setDefaultCapable",function(a){var b=this.defaultCapable;this.defaultCapable=a;this.firePropertyChangeBool("defaultCapable",b,a)},"~B");d(c$,"removeNotify",function(){var a=javax.swing.SwingUtilities.getRootPane(this);null!=a&&a.getDefaultButton()===this&&a.setDefaultButton(null);K(this,javax.swing.JButton,"removeNotify",[])});d(c$,"paramString",function(){var a=this.defaultCapable?
+"true":"false";return K(this,javax.swing.JButton,"paramString",[])+",defaultCapable="+a});G(c$,"$uiClassID","ButtonUI")});p("jalview.util");q(["java.text.MessageFormat","java.util.logging.Logger"],"jalview.util.MessageManager",["java.util.Locale","$.ResourceBundle","java.util.logging.Level"],function(){c$=B(jalview.util,"MessageManager");c$.getString=d(c$,"getString",function(a){var c="[missing key] "+a;try{c=jalview.util.MessageManager.rb.getString(a)}catch(f){if(y(f,Exception))jalview.util.MessageManager.log.warning("I18N missing: "+
+jalview.util.MessageManager.loc+"\t"+a);else throw f;}return c},"~S");c$.getLocale=d(c$,"getLocale",function(){return jalview.util.MessageManager.loc});c$.formatMessage=d(c$,"formatMessage",function(a,c){return java.text.MessageFormat.format(jalview.util.MessageManager.getString(a),c)},"~S,~A");c$.formatMessage=d(c$,"formatMessage",function(a,c){return java.text.MessageFormat.format(jalview.util.MessageManager.getString(a),c)},"~S,~A");c$.getStringOrReturn=d(c$,"getStringOrReturn",function(a,c){var f=
+a+c.toLowerCase().replaceAll(" ","");try{c=jalview.util.MessageManager.rb.getString(f)}catch(l){if(y(l,Exception))jalview.util.MessageManager.log.finest("I18N missing key with root "+a+": "+jalview.util.MessageManager.loc+"\t"+f);else throw l;}return c},"~S,~S");G(c$,"rb",null);c$.log=c$.prototype.log=java.util.logging.Logger.getLogger(jalview.util.MessageManager.getCanonicalName());G(c$,"loc",null);try{jalview.util.MessageManager.loc=java.util.Locale.getDefault(),jalview.util.MessageManager.log.info("Getting messages for lang: "+
+jalview.util.MessageManager.loc),jalview.util.MessageManager.rb=java.util.ResourceBundle.getBundle("lang.Messages",jalview.util.MessageManager.loc),(null==jalview.util.MessageManager.rb||jalview.util.MessageManager.log.isLoggable(java.util.logging.Level.FINEST))&&jalview.util.MessageManager.log.finest("Language keys: "+jalview.util.MessageManager.rb.keySet())}catch(a){if(y(a,Exception))jalview.util.MessageManager.log.warning("Exception when initting Locale for i18n messages\n"+a.getMessage()),a.printStackTrace();
+else if(y(a,Error))jalview.util.MessageManager.log.warning("Error when initting Locale for i18n messages\n"+a.getMessage()),a.printStackTrace();else throw a;}});p("java.util.logging");q(["java.util.Hashtable","java.util.logging.Level","$.LogRecord"],"java.util.logging.Logger",null,function(){c$=s(function(){this.levelObject=this.name=null;this.levelValue=0;r(this,arguments)},java.util.logging,"Logger");m(c$,function(a,b){this.construct(a,b,null,!1)},"~S,~S");m(c$,function(a){this.name=a;this.levelValue=
+java.util.logging.Level.INFO.intValue()},"~S,~S,Class,~B");m(c$,function(a){this.name=a;this.levelValue=java.util.logging.Level.INFO.intValue()},"~S");c$.getLogger=d(c$,"getLogger",function(a){var b=java.util.logging.Logger.loggers.get(a);null==b&&java.util.logging.Logger.loggers.put(a,b=new java.util.logging.Logger(a));return b},"~S");c$.getLogger=d(c$,"getLogger",function(a){return java.util.logging.Logger.getLogger(a)},"~S,~S");c$.getAnonymousLogger=d(c$,"getAnonymousLogger",function(){return java.util.logging.Logger.getAnonymousLogger(null)});
+c$.getAnonymousLogger=d(c$,"getAnonymousLogger",function(){return java.util.logging.Logger.global},"~S");d(c$,"log",function(a){a.getLevel().intValue()<this.levelValue||this.levelValue==java.util.logging.Logger.offValue||System.out.println(a.getLoggerName()+": "+a.getMessage())},"java.util.logging.LogRecord");d(c$,"doLog",function(a){a.setLoggerName(this.name);this.log(a)},"java.util.logging.LogRecord");d(c$,"log",function(a,b){if(!(a.intValue()<this.levelValue||this.levelValue==java.util.logging.Logger.offValue)){var c=
+new java.util.logging.LogRecord(a,b);this.doLog(c)}},"java.util.logging.Level,~S");d(c$,"log",function(a,b,c){a.intValue()<this.levelValue||this.levelValue==java.util.logging.Logger.offValue||(a=new java.util.logging.LogRecord(a,b),c=E(-1,[c]),a.setParameters(c),this.doLog(a))},"java.util.logging.Level,~S,~O");d(c$,"log",function(a,b,c){a.intValue()<this.levelValue||this.levelValue==java.util.logging.Logger.offValue||(a=new java.util.logging.LogRecord(a,b),a.setParameters(c),this.doLog(a))},"java.util.logging.Level,~S,~A");
+d(c$,"log",function(a,b,c){a.intValue()<this.levelValue||this.levelValue==java.util.logging.Logger.offValue||(a=new java.util.logging.LogRecord(a,b),a.setThrown(c),this.doLog(a))},"java.util.logging.Level,~S,Throwable");d(c$,"logp",function(a,b,c,f){a.intValue()<this.levelValue||this.levelValue==java.util.logging.Logger.offValue||(a=new java.util.logging.LogRecord(a,f),a.setSourceClassName(b),a.setSourceMethodName(c),this.doLog(a))},"java.util.logging.Level,~S,~S,~S");d(c$,"logp",function(a,b,c,f,
+l){a.intValue()<this.levelValue||this.levelValue==java.util.logging.Logger.offValue||(a=new java.util.logging.LogRecord(a,f),a.setSourceClassName(b),a.setSourceMethodName(c),b=E(-1,[l]),a.setParameters(b),this.doLog(a))},"java.util.logging.Level,~S,~S,~S,~O");d(c$,"logp",function(a,b,c,f,l){a.intValue()<this.levelValue||this.levelValue==java.util.logging.Logger.offValue||(a=new java.util.logging.LogRecord(a,f),a.setSourceClassName(b),a.setSourceMethodName(c),a.setParameters(l),this.doLog(a))},"java.util.logging.Level,~S,~S,~S,~A");
+d(c$,"logp",function(a,b,c,f,l){a.intValue()<this.levelValue||this.levelValue==java.util.logging.Logger.offValue||(a=new java.util.logging.LogRecord(a,f),a.setSourceClassName(b),a.setSourceMethodName(c),a.setThrown(l),this.doLog(a))},"java.util.logging.Level,~S,~S,~S,Throwable");d(c$,"entering",function(a,b){java.util.logging.Level.FINER.intValue()<this.levelValue||this.logp(java.util.logging.Level.FINER,a,b,"ENTRY")},"~S,~S");d(c$,"entering",function(a,b,c){java.util.logging.Level.FINER.intValue()<
+this.levelValue||(c=E(-1,[c]),this.logp(java.util.logging.Level.FINER,a,b,"ENTRY {0}",c))},"~S,~S,~O");d(c$,"entering",function(a,b,c){if(!(java.util.logging.Level.FINER.intValue()<this.levelValue)){var f="ENTRY";if(null==c)this.logp(java.util.logging.Level.FINER,a,b,f);else{for(var l=0;l<c.length;l++)f=f+" {"+l+"}";this.logp(java.util.logging.Level.FINER,a,b,f,c)}}},"~S,~S,~A");d(c$,"exiting",function(a,b){java.util.logging.Level.FINER.intValue()<this.levelValue||this.logp(java.util.logging.Level.FINER,
+a,b,"RETURN")},"~S,~S");d(c$,"exiting",function(a,b,c){java.util.logging.Level.FINER.intValue()<this.levelValue||this.logp(java.util.logging.Level.FINER,a,b,"RETURN {0}",c)},"~S,~S,~O");d(c$,"throwing",function(a,b,c){if(!(java.util.logging.Level.FINER.intValue()<this.levelValue||this.levelValue==java.util.logging.Logger.offValue)){var f=new java.util.logging.LogRecord(java.util.logging.Level.FINER,"THROW");f.setSourceClassName(a);f.setSourceMethodName(b);f.setThrown(c);this.doLog(f)}},"~S,~S,Throwable");
+d(c$,"severe",function(a){java.util.logging.Level.SEVERE.intValue()<this.levelValue||this.log(java.util.logging.Level.SEVERE,a)},"~S");d(c$,"warning",function(a){java.util.logging.Level.WARNING.intValue()<this.levelValue||this.log(java.util.logging.Level.WARNING,a)},"~S");d(c$,"info",function(a){java.util.logging.Level.INFO.intValue()<this.levelValue||this.log(java.util.logging.Level.INFO,a)},"~S");d(c$,"config",function(a){java.util.logging.Level.CONFIG.intValue()<this.levelValue||this.log(java.util.logging.Level.CONFIG,
+a)},"~S");d(c$,"fine",function(a){java.util.logging.Level.FINE.intValue()<this.levelValue||this.log(java.util.logging.Level.FINE,a)},"~S");d(c$,"finer",function(a){java.util.logging.Level.FINER.intValue()<this.levelValue||this.log(java.util.logging.Level.FINER,a)},"~S");d(c$,"finest",function(a){java.util.logging.Level.FINEST.intValue()<this.levelValue||this.log(java.util.logging.Level.FINEST,a)},"~S");d(c$,"setLevel",function(a){this.levelObject=a;this.updateEffectiveLevel()},"java.util.logging.Level");
+d(c$,"getLevel",function(){return this.levelObject});d(c$,"isLoggable",function(a){return a.intValue()<this.levelValue||this.levelValue==java.util.logging.Logger.offValue?!1:!0},"java.util.logging.Level");d(c$,"getName",function(){return this.name});d(c$,"updateEffectiveLevel",function(){var a;a=null!=this.levelObject?this.levelObject.intValue():java.util.logging.Level.INFO.intValue();this.levelValue!=a&&(this.levelValue=a)});c$.offValue=c$.prototype.offValue=java.util.logging.Level.OFF.intValue();
+G(c$,"GLOBAL_LOGGER_NAME","global");c$.global=c$.prototype.global=new java.util.logging.Logger("global");c$.loggers=c$.prototype.loggers=new java.util.Hashtable;java.util.logging.Logger.loggers.put("global",java.util.logging.Logger.global)});p("java.util.logging");q(null,"java.util.logging.LogRecord",["java.lang.NullPointerException","$.Throwable"],function(){c$=s(function(){this.level=null;this.sequenceNumber=0;this.message=this.sourceMethodName=this.sourceClassName=null;this.millis=this.threadID=
+0;this.resourceBundleName=this.loggerName=this.thrown=null;this.needToInferCaller=!1;this.resourceBundle=this.parameters=null;r(this,arguments)},java.util.logging,"LogRecord",null,java.io.Serializable);m(c$,function(a,b){a.getClass();this.level=a;this.message=b;this.millis=System.currentTimeMillis();this.needToInferCaller=!0},"java.util.logging.Level,~S");d(c$,"getLoggerName",function(){return this.loggerName});d(c$,"setLoggerName",function(a){this.loggerName=a},"~S");d(c$,"getResourceBundle",function(){return this.resourceBundle});
+d(c$,"setResourceBundle",function(a){this.resourceBundle=a},"java.util.ResourceBundle");d(c$,"getResourceBundleName",function(){return this.resourceBundleName});d(c$,"setResourceBundleName",function(a){this.resourceBundleName=a},"~S");d(c$,"getLevel",function(){return this.level});d(c$,"setLevel",function(a){if(null==a)throw new NullPointerException;this.level=a},"java.util.logging.Level");d(c$,"getSequenceNumber",function(){return this.sequenceNumber});d(c$,"setSequenceNumber",function(a){this.sequenceNumber=
+a},"~N");d(c$,"getSourceClassName",function(){this.needToInferCaller&&this.inferCaller();return this.sourceClassName});d(c$,"setSourceClassName",function(a){this.sourceClassName=a;this.needToInferCaller=!1},"~S");d(c$,"getSourceMethodName",function(){this.needToInferCaller&&this.inferCaller();return this.sourceMethodName});d(c$,"setSourceMethodName",function(a){this.sourceMethodName=a;this.needToInferCaller=!1},"~S");d(c$,"getMessage",function(){return this.message});d(c$,"setMessage",function(a){this.message=
+a},"~S");d(c$,"getParameters",function(){return this.parameters});d(c$,"setParameters",function(a){this.parameters=a},"~A");d(c$,"getThreadID",function(){return this.threadID});d(c$,"setThreadID",function(a){this.threadID=a},"~N");d(c$,"getMillis",function(){return this.millis});d(c$,"setMillis",function(a){this.millis=a},"~N");d(c$,"getThrown",function(){return this.thrown});d(c$,"setThrown",function(a){this.thrown=a},"Throwable");d(c$,"inferCaller",function(){this.needToInferCaller=!1;for(var a=
+(new Throwable).getStackTrace(),b=0;b<a.length;){var c=a[b],f=c.getClassName();if(f.equals("java.util.logging.Logger"))break;b++}for(;b<a.length;){c=a[b];f=c.getClassName();if(!f.equals("java.util.logging.Logger")){this.setSourceClassName(f);this.setSourceMethodName(c.getMethodName());break}b++}});G(c$,"globalSequenceNumber",0)});p("java.util.logging");q(["java.util.HashMap"],"java.util.logging.Level",["java.lang.IllegalArgumentException","$.NullPointerException","java.util.ArrayList","$.ResourceBundle"],
+function(){c$=s(function(){this.name=null;this.value=0;this.localizedLevelName=this.resourceBundleName=null;r(this,arguments)},java.util.logging,"Level",null,java.io.Serializable);m(c$,function(a,b){this.construct(a,b,null)},"~S,~N");m(c$,function(a,b,c){if(null==a)throw new NullPointerException;this.name=a;this.value=b;this.resourceBundleName=c;this.localizedLevelName=null==c?a:null;java.util.logging.Level.KnownLevel.add(this)},"~S,~N,~S");d(c$,"getResourceBundleName",function(){return this.resourceBundleName});
+d(c$,"getName",function(){return this.name});d(c$,"getLocalizedName",function(){return this.getLocalizedLevelName()});d(c$,"getLevelName",function(){return this.name});d(c$,"getLocalizedLevelName",function(){if(null!=this.localizedLevelName)return this.localizedLevelName;try{this.localizedLevelName=java.util.ResourceBundle.getBundle(this.resourceBundleName).getString(this.name)}catch(a){if(y(a,Exception))this.localizedLevelName=this.name;else throw a;}return this.localizedLevelName});c$.findLevel=
+d(c$,"findLevel",function(a){if(null==a)throw new NullPointerException;var b;b=java.util.logging.Level.KnownLevel.findByName(a);if(null!=b)return b.mirroredLevel;try{var c=Integer.parseInt(a);b=java.util.logging.Level.KnownLevel.findByValue(c);null==b&&(new java.util.logging.Level(a,c),b=java.util.logging.Level.KnownLevel.findByValue(c));return b.mirroredLevel}catch(f){if(!y(f,NumberFormatException))throw f;}b=java.util.logging.Level.KnownLevel.findByLocalizedLevelName(a);return null!=b?b.mirroredLevel:
+null},"~S");e(c$,"toString",function(){return this.name});d(c$,"intValue",function(){return this.value});c$.parse=d(c$,"parse",function(a){a.length;var b;b=java.util.logging.Level.KnownLevel.findByName(a);if(null!=b)return b.levelObject;try{var c=Integer.parseInt(a);b=java.util.logging.Level.KnownLevel.findByValue(c);null==b&&(new java.util.logging.Level(a,c),b=java.util.logging.Level.KnownLevel.findByValue(c));return b.levelObject}catch(f){if(!y(f,NumberFormatException))throw f;}b=java.util.logging.Level.KnownLevel.findByLocalizedName(a);
+if(null!=b)return b.levelObject;throw new IllegalArgumentException('Bad level "'+a+'"');},"~S");e(c$,"equals",function(a){try{return a.value==this.value}catch(b){if(y(b,Exception))return!1;throw b;}},"~O");e(c$,"hashCode",function(){return this.value});A(self.c$);c$=s(function(){this.mirroredLevel=this.levelObject=null;r(this,arguments)},java.util.logging.Level,"KnownLevel");m(c$,function(a){this.levelObject=a;this.mirroredLevel=a.getClass()===java.util.logging.Level?a:new java.util.logging.Level(a.name,
+a.value,a.resourceBundleName)},"java.util.logging.Level");c$.add=d(c$,"add",function(a){var b=new java.util.logging.Level.KnownLevel(a),c=java.util.logging.Level.KnownLevel.nameToLevels.get(a.name);null==c&&(c=new java.util.ArrayList,java.util.logging.Level.KnownLevel.nameToLevels.put(a.name,c));c.add(b);c=java.util.logging.Level.KnownLevel.intToLevels.get(new Integer(a.value));null==c&&(c=new java.util.ArrayList,java.util.logging.Level.KnownLevel.intToLevels.put(new Integer(a.value),c));c.add(b)},
+"java.util.logging.Level");c$.findByName=d(c$,"findByName",function(a){a=java.util.logging.Level.KnownLevel.nameToLevels.get(a);return null!=a?a.get(0):null},"~S");c$.findByValue=d(c$,"findByValue",function(a){a=java.util.logging.Level.KnownLevel.intToLevels.get(new Integer(a));return null!=a?a.get(0):null},"~N");c$.findByLocalizedLevelName=d(c$,"findByLocalizedLevelName",function(a){for(var b,c=java.util.logging.Level.KnownLevel.nameToLevels.values().iterator();c.hasNext()&&((b=c.next())||1);)for(var f,
+l=b.iterator();l.hasNext()&&((f=l.next())||1);){var d=f.levelObject.getLocalizedLevelName();if(a.equals(d))return f}return null},"~S");c$.findByLocalizedName=d(c$,"findByLocalizedName",function(a){for(var b,c=java.util.logging.Level.KnownLevel.nameToLevels.values().iterator();c.hasNext()&&((b=c.next())||1);)for(var f,l=b.iterator();l.hasNext()&&((f=l.next())||1);){var d=f.levelObject.getLocalizedName();if(a.equals(d))return f}return null},"~S");c$.matches=d(c$,"matches",function(a){var b=java.util.logging.Level.KnownLevel.nameToLevels.get(a.name);
+if(null!=b)for(var c,b=b.iterator();b.hasNext()&&((c=b.next())||1);){var f=c.mirroredLevel;if(a.value==f.value&&(a.resourceBundleName===f.resourceBundleName||null!=a.resourceBundleName&&a.resourceBundleName.equals(f.resourceBundleName)))return c}return null},"java.util.logging.Level");c$.nameToLevels=c$.prototype.nameToLevels=new java.util.HashMap;c$.intToLevels=c$.prototype.intToLevels=new java.util.HashMap;c$=z();G(c$,"defaultBundle","sun.util.logging.resources.logging");c$.OFF=c$.prototype.OFF=
+new java.util.logging.Level("OFF",2147483647,java.util.logging.Level.defaultBundle);c$.SEVERE=c$.prototype.SEVERE=new java.util.logging.Level("SEVERE",1E3,java.util.logging.Level.defaultBundle);c$.WARNING=c$.prototype.WARNING=new java.util.logging.Level("WARNING",900,java.util.logging.Level.defaultBundle);c$.INFO=c$.prototype.INFO=new java.util.logging.Level("INFO",800,java.util.logging.Level.defaultBundle);c$.CONFIG=c$.prototype.CONFIG=new java.util.logging.Level("CONFIG",700,java.util.logging.Level.defaultBundle);
+c$.FINE=c$.prototype.FINE=new java.util.logging.Level("FINE",500,java.util.logging.Level.defaultBundle);c$.FINER=c$.prototype.FINER=new java.util.logging.Level("FINER",400,java.util.logging.Level.defaultBundle);c$.FINEST=c$.prototype.FINEST=new java.util.logging.Level("FINEST",300,java.util.logging.Level.defaultBundle);c$.ALL=c$.prototype.ALL=new java.util.logging.Level("ALL",-2147483648,java.util.logging.Level.defaultBundle)});p("java.text");c$=s(function(){this.pattern=null;r(this,arguments)},java.text,
+"MessageFormat");m(c$,function(a){this.pattern=a},"~S");m(c$,function(a){this.pattern=a},"~S,java.util.Locale");c$.format=d(c$,"format",function(a,b){return a.replace(/\{(\d+)\}/g,function(a,f){var l=parseInt(f);return null==b?null:b[l]})},"~S,~A");d(c$,"format",function(a){return java.text.MessageFormat.format(this.pattern,[a])},"~O");p("java.util");q(["java.util.ResourceBundle"],"java.util.PropertyResourceBundle",["java.lang.NullPointerException","java.util.HashMap","java.util.Properties","jssun.util.ResourceBundleEnumeration"],
+function(){c$=s(function(){this.lookup=null;r(this,arguments)},java.util,"PropertyResourceBundle",java.util.ResourceBundle);m(c$,function(a){t(this,java.util.PropertyResourceBundle,[]);this.setStream(a)},"java.io.InputStream");d(c$,"setStream",function(a){var b=new java.util.Properties;b.load(a);this.lookup=new java.util.HashMap(b);return this},"java.io.InputStream");m(c$,function(a){t(this,java.util.PropertyResourceBundle,[]);var b=new java.util.Properties;b.load(a);this.lookup=new java.util.HashMap(b)},
+"java.io.Reader");m(c$,function(){t(this,java.util.PropertyResourceBundle,[])});e(c$,"handleGetObject",function(a){if(null==a)throw new NullPointerException;return this.lookup.get(a)},"~S");d(c$,"getKeys",function(){var a=this.parent;return new jssun.util.ResourceBundleEnumeration(this.lookup.keySet(),null!=a?a.getKeys():null)});e(c$,"handleKeySet",function(){return this.lookup.keySet()})});p("jalview.javascript");M(jalview.javascript,"JalviewLiteJsApi");p("jalview.api");M(jalview.api,"StructureSelectionManagerProvider");
+p("awt2swing");c$=B(awt2swing,"Util");c$.drawString=d(c$,"drawString",function(a,b,c,f){a.drawStringUnique(b,c,f)},"java.awt.Graphics,~S,~N,~N");p("jalview.analysis");q(null,"jalview.analysis.SequenceIdMatcher",["java.util.ArrayList","$.Arrays","$.HashMap","$.Vector"],function(){c$=s(function(){this.names=null;H("jalview.analysis.SequenceIdMatcher.SeqIdName")||jalview.analysis.SequenceIdMatcher.$SequenceIdMatcher$SeqIdName$();r(this,arguments)},jalview.analysis,"SequenceIdMatcher");m(c$,function(a){this.names=
+new java.util.HashMap;this.addAll(a)},"java.util.List");d(c$,"addAll",function(a){var b;for(a=a.iterator();a.hasNext()&&((b=a.next())||1);){this.names.put(C(jalview.analysis.SequenceIdMatcher.SeqIdName,this,null,b.getDisplayId(!0)),b);for(var c=b;null!=c.getDatasetSequence();)c=c.getDatasetSequence();if(null!=c.getDBRef())for(var c=c.getDBRef(),f=null,l=0;l<c.length;l++)f=C(jalview.analysis.SequenceIdMatcher.SeqIdName,this,null,c[l].getAccessionId()),this.names.containsKey(f)||this.names.put(f,b)}},
+"java.util.List");m(c$,function(a){this.construct(java.util.Arrays.asList(a))},"~A");d(c$,"pickbestMatch",function(a,b){var c=this.pickbestMatches(a,b);return null==c||0==c.size()?null:c.get(0)},"jalview.analysis.SequenceIdMatcher.SeqIdName,java.util.List");d(c$,"pickbestMatches",function(a,b){var c=new java.util.ArrayList;if(null==a||null==b||0==b.size())return null;var f=b.remove(0);c.add(f);this.names.put(C(jalview.analysis.SequenceIdMatcher.SeqIdName,this,null,f.getName()),f);for(var l=f.getName().length,
+d=a.id.length;0<b.size();){var g=b.remove(0);this.names.put(C(jalview.analysis.SequenceIdMatcher.SeqIdName,this,null,g.getName()),g);var h,j,e=g.getName().length;if((h=Math.abs(l-d))>(j=Math.abs(e-d))&&e>l)c.clear(),f=g,l=e,c.add(f);h==j&&e==l&&c.add(g)}return 0==c.size()?null:c},"jalview.analysis.SequenceIdMatcher.SeqIdName,java.util.List");d(c$,"findIdMatch",function(a){a=C(jalview.analysis.SequenceIdMatcher.SeqIdName,this,null,a.getName());return this.findIdMatch(a)},"jalview.datamodel.SequenceI");
+d(c$,"findIdMatch",function(a){a=C(jalview.analysis.SequenceIdMatcher.SeqIdName,this,null,a);return this.findIdMatch(a)},"~S");d(c$,"findAllIdMatches",function(a){a=C(jalview.analysis.SequenceIdMatcher.SeqIdName,this,null,a);a=this.findAllIdMatches(a);return null!=a?a.toArray(Array(a.size())):null},"~S");d(c$,"findIdMatch",function(a){var b=null,c=0,f;if(0<a.length){b=Array(a.length);do f=C(jalview.analysis.SequenceIdMatcher.SeqIdName,this,null,a[c].getName()),b[c]=this.names.containsKey(f)?this.findIdMatch(f):
+null;while(++c<a.length)}return b},"~A");d(c$,"findIdMatch",function(a){for(var b=new java.util.Vector;this.names.containsKey(a);)b.addElement(this.names.remove(a));return this.pickbestMatch(a,b)},"jalview.analysis.SequenceIdMatcher.SeqIdName");d(c$,"findAllIdMatches",function(a){for(var b=new java.util.ArrayList;this.names.containsKey(a);)b.add(this.names.remove(a));return this.pickbestMatches(a,b)},"jalview.analysis.SequenceIdMatcher.SeqIdName");c$.$SequenceIdMatcher$SeqIdName$=function(){A(self.c$);
+c$=s(function(){O(this,arguments);this.id=null;this.WORD_SEP="~. |#\\/<>!\"\u00a4$%^*)}[@',?_";r(this,arguments)},jalview.analysis.SequenceIdMatcher,"SeqIdName");m(c$,function(a){this.id=null!=a?String.instantialize(a):""},"~S");e(c$,"hashCode",function(){return 4<=this.id.length?this.id.substring(0,4).hashCode():this.id.hashCode()});d(c$,"equals",function(a){return null==a?!1:v(a,jalview.analysis.SequenceIdMatcher.SeqIdName)||v(a,String)?this.equals(a):!1},"~O");d(c$,"equals",function(a){return this.id.length>
+a.id.length?this.id.startsWith(a.id)?-1<this.WORD_SEP.indexOf(this.id.charAt(a.id.length)):!1:a.id.startsWith(this.id)?a.id.equals(this.id)?!0:-1<this.WORD_SEP.indexOf(a.id.charAt(this.id.length)):!1},"jalview.analysis.SequenceIdMatcher.SeqIdName");d(c$,"equals",function(a){return this.id.length>a.length?this.id.startsWith(a)?-1<this.WORD_SEP.indexOf(this.id.charAt(a.length)):!1:a.startsWith(this.id)?a.equals(this.id)?!0:-1<this.WORD_SEP.indexOf(a.charAt(this.id.length)):!1},"~S");c$=z()}});p("jalview.appletgui");
+q("awt2swing.Canvas jalview.api.AlignViewControllerGuiI jalview.appletgui.EmbmenuFrame java.awt.event.ActionListener $.ItemListener $.KeyListener awt2swing.CheckboxMenuItem $.Label $.Menu $.MenuBar $.MenuItem jalview.util.MessageManager java.awt.BorderLayout".split(" "),"jalview.appletgui.AlignFrame","awt2swing.Frame $.Util jalview.analysis.AlignmentSorter $.AnnotationSorter jalview.appletgui.AlignViewport $.AlignmentPanel $.AnnotationColourChooser $.AnnotationColumnChooser $.AppletJmol $.CutAndPasteTransfer $.FeatureSettings $.Finder $.FontChooser $.OverviewPanel $.PCAPanel $.PaintRefresher $.PairwiseAlignPanel $.RedundancyPanel $.SliderPanel $.TreePanel $.UserDefinedColours jalview.bin.JalviewLite jalview.commands.EditCommand $.OrderCommand $.RemoveGapColCommand $.RemoveGapsCommand $.SlideSequencesCommand $.TrimRegionCommand jalview.controller.AlignViewController jalview.datamodel.Alignment $.PDBEntry $.Sequence $.SequenceGroup jalview.io.AlignmentProperties $.AnnotationFile $.AppletFormatAdapter $.FeaturesFile jalview.jsdev.GenericFileAdapter jalview.schemes.Blosum62ColourScheme $.BuriedColourScheme $.ClustalxColourScheme $.HelixColourScheme $.HydrophobicColourScheme $.NucleotideColourScheme $.PIDColourScheme $.PurinePyrimidineColourScheme $.RNAHelicesColourChooser $.RNAInteractionColourScheme $.StrandColourScheme $.TCoffeeColourScheme $.TaylorColourScheme $.TurnColourScheme $.ZappoColourScheme jalview.structure.StructureSelectionManager jalview.util.Comparison $.MappingUtils java.awt.Color $.Font java.awt.event.FocusListener $.WindowAdapter java.lang.Character $.StringBuffer java.net.URL $.URLEncoder java.util.Arrays $.HashMap $.Hashtable $.StringTokenizer $.Vector".split(" "),
+function(){c$=s(function(){this.viewport=this.alignPanel=this.avc=null;this.frameWidth=700;this.frameHeight=500;this.jalviewServletURL=null;this.showAutoCalculatedAbove=!1;this.splitFrame=this.showAutoLast=this.showAutoFirst=this.sortAnnByLabel=this.sortAnnBySequence=this.showSequenceAnnotations=this.showAlignmentAnnotations=this.$newView=this.showAllHidden=this.hideAllSelection=this.hideAllButSelection=this.hideSequences=this.hideColumns=this.showSeqs=this.showColumns=this.invertColSel=this.annotationColumnSelection=
+this.annotationColour=this.sequenceFeatures=this.featureSettings=this.normSequenceLogo=this.showGroupConservation=this.showGroupConsensus=this.showConsensusHistogram=this.applyAutoAnnotationSettings=this.showSequenceLogo=this.followMouseOverFlag=this.centreColumnLabelFlag=this.seqLimits=this.about=this.documentation=this.inputText=this.sortByTreeMenu=this.$sortByTree=this.autoCalculate=this.modifyConservation=this.modifyPID=this.scaleRight=this.scaleLeft=this.scaleAbove=this.$font=this.applyToAllGroups=
+this.pasteThis=this.pasteNew=this.pasteMenu=this.cut=this.copy=this.$delete=this.unGroup=this.createGroup=this.grpsFromSelection=this.deleteGroups=this.nucleotideColour=this.abovePIDThreshold=this.findMenuItem=this.renderGapsMenuItem=this.wrapMenuItem=this.noColourmenuItem=this.conservationMenuItem=this.redoMenuItem=this.undoMenuItem=this.overviewMenuItem=this.alProperties=this.displayNonconservedMenuItem=this.colourTextMenuItem=this.annotationPanelMenuItem=this.avDistanceTreeBlosumMenuItem=this.njTreeBlosumMenuItem=
+this.tcoffeeColour=this.BLOSUM62Colour=this.PIDColour=this.userDefinedColour=this.RNAHelixColour=this.RNAInteractionColour=this.purinePyrimidineColour=this.buriedColour=this.turnColour=this.strandColour=this.helixColour=this.hydrophobicityColour=this.taylorColour=this.zappoColour=this.clustalColour=this.statusBar=this.borderLayout1=this.neighbourTreeMenuItem=this.averageDistanceTreeMenuItem=this.PCAMenuItem=this.pairwiseAlignmentMenuItem=this.removeRedundancyMenuItem=this.sortGroupMenuItem=this.sortLengthMenuItem=
+this.sortIDMenuItem=this.sortPairwiseMenuItem=this.viewTextMenuItem=this.viewBoxesMenuItem=this.removeAllGapsMenuItem=this.removeGappedColumnMenuItem=this.remove2RightMenuItem=this.remove2LeftMenuItem=this.invertSequenceMenuItem=this.deselectAllSequenceMenuItem=this.selectAllSequenceMenuItem=this.closeMenuItem=this.$outputAnnotations=this.$outputFeatures=this.$loadAnnotations=this.$loadTree=this.loadApplication=this.fileMenu=this.alignFrameMenuBar=this.annotationSortOrder=null;r(this,arguments)},
+jalview.appletgui,"AlignFrame",jalview.appletgui.EmbmenuFrame,[java.awt.event.ActionListener,java.awt.event.ItemListener,java.awt.event.KeyListener,jalview.api.AlignViewControllerGuiI]);J(c$,function(){this.alignFrameMenuBar=new awt2swing.MenuBar;this.fileMenu=new awt2swing.Menu(jalview.util.MessageManager.getString("action.file"));this.loadApplication=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.view_full_application"));this.$loadTree=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.load_associated_tree"));
+this.$loadAnnotations=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.load_features_annotations"));this.$outputFeatures=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.export_features").concat("..."));this.$outputAnnotations=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.export_annotations").concat("..."));this.closeMenuItem=new awt2swing.MenuItem(jalview.util.MessageManager.getString("action.close"));this.selectAllSequenceMenuItem=new awt2swing.MenuItem(jalview.util.MessageManager.getString("action.select_all"));
+this.deselectAllSequenceMenuItem=new awt2swing.MenuItem(jalview.util.MessageManager.getString("action.deselect_all"));this.invertSequenceMenuItem=new awt2swing.MenuItem(jalview.util.MessageManager.getString("action.invert_selection"));this.remove2LeftMenuItem=new awt2swing.MenuItem;this.remove2RightMenuItem=new awt2swing.MenuItem;this.removeGappedColumnMenuItem=new awt2swing.MenuItem;this.removeAllGapsMenuItem=new awt2swing.MenuItem;this.viewBoxesMenuItem=new awt2swing.CheckboxMenuItem;this.viewTextMenuItem=
+new awt2swing.CheckboxMenuItem;this.sortPairwiseMenuItem=new awt2swing.MenuItem;this.sortIDMenuItem=new awt2swing.MenuItem;this.sortLengthMenuItem=new awt2swing.MenuItem;this.sortGroupMenuItem=new awt2swing.MenuItem;this.removeRedundancyMenuItem=new awt2swing.MenuItem;this.pairwiseAlignmentMenuItem=new awt2swing.MenuItem;this.PCAMenuItem=new awt2swing.MenuItem;this.averageDistanceTreeMenuItem=new awt2swing.MenuItem;this.neighbourTreeMenuItem=new awt2swing.MenuItem;this.borderLayout1=new java.awt.BorderLayout;
+this.statusBar=new awt2swing.Label;this.clustalColour=new awt2swing.MenuItem;this.zappoColour=new awt2swing.MenuItem;this.taylorColour=new awt2swing.MenuItem;this.hydrophobicityColour=new awt2swing.MenuItem;this.helixColour=new awt2swing.MenuItem;this.strandColour=new awt2swing.MenuItem;this.turnColour=new awt2swing.MenuItem;this.buriedColour=new awt2swing.MenuItem;this.purinePyrimidineColour=new awt2swing.MenuItem;this.RNAInteractionColour=new awt2swing.MenuItem;this.RNAHelixColour=new awt2swing.MenuItem;
+this.userDefinedColour=new awt2swing.MenuItem;this.PIDColour=new awt2swing.MenuItem;this.BLOSUM62Colour=new awt2swing.MenuItem;this.tcoffeeColour=new awt2swing.MenuItem;this.njTreeBlosumMenuItem=new awt2swing.MenuItem;this.avDistanceTreeBlosumMenuItem=new awt2swing.MenuItem;this.annotationPanelMenuItem=new awt2swing.CheckboxMenuItem;this.colourTextMenuItem=new awt2swing.CheckboxMenuItem;this.displayNonconservedMenuItem=new awt2swing.CheckboxMenuItem;this.alProperties=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.alignment_props"));
+this.overviewMenuItem=new awt2swing.MenuItem;this.undoMenuItem=new awt2swing.MenuItem;this.redoMenuItem=new awt2swing.MenuItem;this.conservationMenuItem=new awt2swing.CheckboxMenuItem;this.noColourmenuItem=new awt2swing.MenuItem;this.wrapMenuItem=new awt2swing.CheckboxMenuItem;this.renderGapsMenuItem=new awt2swing.CheckboxMenuItem;this.findMenuItem=new awt2swing.MenuItem;this.abovePIDThreshold=new awt2swing.CheckboxMenuItem;this.nucleotideColour=new awt2swing.MenuItem;this.deleteGroups=new awt2swing.MenuItem;
+this.grpsFromSelection=new awt2swing.MenuItem;this.createGroup=new awt2swing.MenuItem;this.unGroup=new awt2swing.MenuItem;this.$delete=new awt2swing.MenuItem;this.copy=new awt2swing.MenuItem;this.cut=new awt2swing.MenuItem;this.pasteMenu=new awt2swing.Menu;this.pasteNew=new awt2swing.MenuItem;this.pasteThis=new awt2swing.MenuItem;this.applyToAllGroups=new awt2swing.CheckboxMenuItem;this.$font=new awt2swing.MenuItem;this.scaleAbove=new awt2swing.CheckboxMenuItem;this.scaleLeft=new awt2swing.CheckboxMenuItem;
+this.scaleRight=new awt2swing.CheckboxMenuItem;this.modifyPID=new awt2swing.MenuItem;this.modifyConservation=new awt2swing.MenuItem;this.$sortByTree=new awt2swing.CheckboxMenuItem("Sort Alignment With New Tree",!0);this.sortByTreeMenu=new awt2swing.Menu;this.inputText=new awt2swing.MenuItem;this.documentation=new awt2swing.MenuItem;this.about=new awt2swing.MenuItem;this.seqLimits=new awt2swing.CheckboxMenuItem;this.centreColumnLabelFlag=new awt2swing.CheckboxMenuItem;this.followMouseOverFlag=new awt2swing.CheckboxMenuItem;
+this.showSequenceLogo=new awt2swing.CheckboxMenuItem;this.applyAutoAnnotationSettings=new awt2swing.CheckboxMenuItem;this.showConsensusHistogram=new awt2swing.CheckboxMenuItem;this.showGroupConsensus=new awt2swing.CheckboxMenuItem;this.showGroupConservation=new awt2swing.CheckboxMenuItem;this.normSequenceLogo=new awt2swing.CheckboxMenuItem;this.featureSettings=new awt2swing.MenuItem;this.sequenceFeatures=new awt2swing.CheckboxMenuItem;this.annotationColour=new awt2swing.MenuItem;this.annotationColumnSelection=
+new awt2swing.MenuItem;this.invertColSel=new awt2swing.MenuItem;this.showColumns=new awt2swing.MenuItem;this.showSeqs=new awt2swing.MenuItem;this.hideColumns=new awt2swing.MenuItem;this.hideSequences=new awt2swing.MenuItem;this.hideAllButSelection=new awt2swing.MenuItem;this.hideAllSelection=new awt2swing.MenuItem;this.showAllHidden=new awt2swing.MenuItem;this.$newView=new awt2swing.MenuItem});m(c$,function(a,b,c,f){this.construct(a,b,c,f,!0)},"jalview.datamodel.AlignmentI,jalview.bin.JalviewLite,~S,~B");
+m(c$,function(a,b,c,f,l){this.construct(a,null,null,b,c,f,l)},"jalview.datamodel.AlignmentI,jalview.bin.JalviewLite,~S,~B,~B");m(c$,function(a,b,c,f,l,d){this.construct(a,b,c,f,l,d,!0)},"jalview.datamodel.AlignmentI,~A,jalview.datamodel.ColumnSelection,jalview.bin.JalviewLite,~S,~B");m(c$,function(a,b,c,f,l,d,g){t(this,jalview.appletgui.AlignFrame,[]);null!=f&&(this.jalviewServletURL=f.jalviewServletURL);try{this.jbInit()}catch(h){if(y(h,Exception))h.printStackTrace();else throw h;}if(null!=f){var j;
+try{j=f.windowWidth,null!=j&&(this.frameWidth=Integer.parseInt(j)),j=f.windowHeight,null!=j&&(this.frameHeight=Integer.parseInt(j))}catch(e){if(!y(e,Exception))throw e;}}this.viewport=new jalview.appletgui.AlignViewport(a,f);null!=b&&0<b.length&&this.viewport.hideSequence(b);null!=c&&this.viewport.setColumnSelection(c);this.alignPanel=new jalview.appletgui.AlignmentPanel(this,this.viewport);this.avc=new jalview.controller.AlignViewController(this,this.viewport,this.alignPanel);this.viewport.updateConservation(this.alignPanel);
+this.viewport.updateConsensus(this.alignPanel);this.displayNonconservedMenuItem.setState(this.viewport.getShowUnconserved());this.followMouseOverFlag.setState(this.viewport.isFollowHighlight());this.showGroupConsensus.setState(this.viewport.isShowGroupConsensus());this.showGroupConservation.setState(this.viewport.isShowGroupConservation());this.showConsensusHistogram.setState(this.viewport.isShowConsensusHistogram());this.showSequenceLogo.setState(this.viewport.isShowSequenceLogo());this.normSequenceLogo.setState(this.viewport.isNormaliseSequenceLogo());
+this.applyToAllGroups.setState(this.viewport.getColourAppliesToAllGroups());this.annotationPanelMenuItem.setState(this.viewport.isShowAnnotation());this.showAlignmentAnnotations.setState(this.viewport.isShowAnnotation());this.showSequenceAnnotations.setState(this.viewport.isShowAnnotation());this.seqLimits.setState(this.viewport.getShowJVSuffix());null!=f&&(j=f.sortBy,null!=j&&(j.equalsIgnoreCase("Id")?this.sortIDMenuItem_actionPerformed():j.equalsIgnoreCase("Pairwise Identity")?this.sortPairwiseMenuItem_actionPerformed():
+j.equalsIgnoreCase("Length")&&this.sortLengthMenuItem_actionPerformed()),j=f.wrap,null!=j&&j.equalsIgnoreCase("true")&&(this.wrapMenuItem.setState(!0),this.wrapMenuItem_actionPerformed()),j=f.centrecolumnlabels,null!=j&&(this.centreColumnLabelFlag.setState(!0),this.centreColumnLabelFlag_stateChanged()));this.viewport.getAlignment().isNucleotide()?(this.viewport.updateStrucConsensus(this.alignPanel),this.viewport.getAlignment().hasRNAStructure()?this.RNAHelixColour.setEnabled(!0):this.RNAHelixColour.setEnabled(!1)):
+(this.RNAHelixColour.setEnabled(!1),this.purinePyrimidineColour.setEnabled(!1));this.addKeyListener(this);this.alignPanel.seqPanel.seqCanvas.addKeyListener(this);this.alignPanel.idPanel.idCanvas.addKeyListener(this);this.alignPanel.scalePanel.addKeyListener(this);this.alignPanel.annotationPanel.addKeyListener(this);this.alignPanel.annotationPanelHolder.addKeyListener(this);this.alignPanel.annotationSpaceFillerHolder.addKeyListener(this);this.alignPanel.alabels.addKeyListener(this);g&&this.addToDisplay(d)},
+"jalview.datamodel.AlignmentI,~A,jalview.datamodel.ColumnSelection,jalview.bin.JalviewLite,~S,~B,~B");d(c$,"addToDisplay",function(a){this.createAlignFrameWindow(a);this.validate();this.alignPanel.adjustAnnotationHeight();this.alignPanel.paintAlignment(!0)},"~B");d(c$,"getAlignViewport",function(){return this.viewport});d(c$,"getSeqcanvas",function(){return this.alignPanel.seqPanel.seqCanvas});d(c$,"parseFeaturesFile",function(a,b){return this.parseFeaturesFile(a,b,!0)},"~S,~S");d(c$,"parseFeaturesFile",
+function(a,b,c){var f=new java.util.Hashtable,l=!1;try{l=(new jalview.io.FeaturesFile(a,b)).parse(this.viewport.getAlignment(),this.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().getFeatureColours(),f,!0,this.viewport.applet.getDefaultParameter("relaxedidmatch",!1))}catch(d){if(y(d,Exception))d.printStackTrace();else throw d;}l&&(0<f.size()&&(this.alignPanel.seqPanel.seqCanvas.getFeatureRenderer().featureLinks=f),c&&(this.viewport.setShowSequenceFeatures(!0),this.sequenceFeatures.setState(!0)),
+null!=this.alignPanel.seqPanel.seqCanvas.fr&&this.alignPanel.seqPanel.seqCanvas.fr.findAllFeatures(!0),null!=this.viewport.featureSettings&&this.viewport.featureSettings.refreshTable(),this.alignPanel.paintAlignment(!0),this.setStatus(jalview.util.MessageManager.getString("label.successfully_added_features_alignment")));return l},"~S,~S,~B");e(c$,"keyPressed",function(a){this.viewport.cursorMode&&((48<=a.getKeyCode()&&57>=a.getKeyCode()||96<=a.getKeyCode()&&105>=a.getKeyCode())&&Character.isDigit(a.getKeyChar()))&&
+this.alignPanel.seqPanel.numberPressed(a.getKeyChar());switch(a.getKeyCode()){case 27:this.deselectAllSequenceMenuItem_actionPerformed();this.alignPanel.alabels.cancelDrag();break;case 88:(a.isControlDown()||a.isMetaDown())&&this.cut_actionPerformed();break;case 67:this.viewport.cursorMode&&!a.isControlDown()&&this.alignPanel.seqPanel.setCursorColumn();(a.isControlDown()||a.isMetaDown())&&this.copy_actionPerformed();break;case 86:a.isControlDown()&&this.paste(a.isShiftDown());break;case 65:(a.isControlDown()||
+a.isMetaDown())&&this.selectAllSequenceMenuItem_actionPerformed();break;case 40:this.viewport.cursorMode?this.alignPanel.seqPanel.moveCursor(0,1):this.moveSelectedSequences(!1);break;case 38:this.viewport.cursorMode?this.alignPanel.seqPanel.moveCursor(0,-1):this.moveSelectedSequences(!0);break;case 37:a.isAltDown()||!this.viewport.cursorMode?this.slideSequences(!1,this.alignPanel.seqPanel.getKeyboardNo1()):this.alignPanel.seqPanel.moveCursor(-1,0);break;case 39:a.isAltDown()||!this.viewport.cursorMode?
+this.slideSequences(!0,this.alignPanel.seqPanel.getKeyboardNo1()):this.alignPanel.seqPanel.moveCursor(1,0);break;case 32:this.viewport.cursorMode&&this.alignPanel.seqPanel.insertGapAtCursor(a.isControlDown()||a.isShiftDown()||a.isAltDown());break;case 127:case 8:this.viewport.cursorMode?this.alignPanel.seqPanel.deleteGapAtCursor(a.isControlDown()||a.isShiftDown()||a.isAltDown()):(this.cut_actionPerformed(),this.alignPanel.seqPanel.seqCanvas.repaint());break;case 83:this.viewport.cursorMode&&this.alignPanel.seqPanel.setCursorRow();
+break;case 80:this.viewport.cursorMode&&this.alignPanel.seqPanel.setCursorPosition();break;case 10:case 44:this.viewport.cursorMode&&this.alignPanel.seqPanel.setCursorRowAndColumn();break;case 81:this.viewport.cursorMode&&this.alignPanel.seqPanel.setSelectionAreaAtCursor(!0);break;case 77:this.viewport.cursorMode&&this.alignPanel.seqPanel.setSelectionAreaAtCursor(!1);break;case 113:this.viewport.cursorMode=!this.viewport.cursorMode;this.setStatus(jalview.util.MessageManager.formatMessage("label.keyboard_editing_mode",
+E(-1,[this.viewport.cursorMode?"on":"off"])));this.viewport.cursorMode&&(this.alignPanel.seqPanel.seqCanvas.cursorX=this.viewport.startRes,this.alignPanel.seqPanel.seqCanvas.cursorY=this.viewport.startSeq);break;case 70:a.isControlDown()&&this.findMenuItem_actionPerformed();break;case 72:var b=!a.isControlDown();a=!a.isShiftDown();this.toggleHiddenRegions(b,a);break;case 33:this.viewport.getWrapAlignment()?this.alignPanel.scrollUp(!0):this.alignPanel.setScrollValues(this.viewport.startRes,this.viewport.startSeq-
+this.viewport.endSeq+this.viewport.startSeq);break;case 34:this.viewport.getWrapAlignment()?this.alignPanel.scrollUp(!1):this.alignPanel.setScrollValues(this.viewport.startRes,this.viewport.startSeq+this.viewport.endSeq-this.viewport.startSeq);break;case 90:a.isControlDown()&&this.undoMenuItem_actionPerformed();break;case 89:a.isControlDown()&&this.redoMenuItem_actionPerformed();break;case 76:a.isControlDown()&&this.trimAlignment(!0);break;case 82:a.isControlDown()&&this.trimAlignment(!1);break;case 69:a.isControlDown()&&
+(a.isShiftDown()?this.removeAllGapsMenuItem_actionPerformed():this.removeGappedColumnMenuItem_actionPerformed());break;case 73:a.isControlDown()&&(a.isAltDown()?this.invertColSel_actionPerformed():this.invertSequenceMenuItem_actionPerformed());break;case 71:a.isControlDown()&&(a.isShiftDown()?this.unGroup_actionPerformed():this.createGroup_actionPerformed());break;case 85:a.isControlDown()&&this.deleteGroups_actionPerformed();break;case 84:a.isControlDown()&&this.newView(null)}this.alignPanel.paintAlignment(!0)},
+"java.awt.event.KeyEvent");d(c$,"toggleHiddenRegions",function(a,b){var c=!1,f=this.viewport.getSelectionGroup();if(!a&&!b&&(null!=this.viewport.getColumnSelection()&&null!=this.viewport.getColumnSelection().getSelected()&&0<this.viewport.getColumnSelection().getSelected().size()||null!=f&&0<f.getSize()&&f.getStartRes()<=f.getEndRes()))null!=f&&(this.invertSequenceMenuItem_actionPerformed(),f=this.viewport.getSelectionGroup(),a=!0),this.viewport.expandColSelection(f,!0),this.invertColSel_actionPerformed(),
+b=!0;a&&(null!=f&&f.getSize()!=this.viewport.getAlignment().getHeight()?(c=!0,this.viewport.hideAllSelectedSeqs()):b&&0<this.viewport.getColumnSelection().getSelected().size()||this.viewport.showAllHiddenSeqs());b&&(0<this.viewport.getColumnSelection().getSelected().size()?(this.viewport.hideSelectedColumns(),a||this.viewport.setSelectionGroup(f)):c||this.viewport.showAllHiddenColumns())},"~B,~B");e(c$,"keyReleased",function(){},"java.awt.event.KeyEvent");e(c$,"keyTyped",function(){},"java.awt.event.KeyEvent");
+e(c$,"itemStateChanged",function(a){a=a.getSource();a===this.displayNonconservedMenuItem?this.displayNonconservedMenuItem_actionPerformed():a===this.colourTextMenuItem?this.colourTextMenuItem_actionPerformed():a===this.wrapMenuItem?this.wrapMenuItem_actionPerformed():a===this.scaleAbove?this.viewport.setScaleAboveWrapped(this.scaleAbove.getState()):a===this.scaleLeft?this.viewport.setScaleLeftWrapped(this.scaleLeft.getState()):a===this.scaleRight?this.viewport.setScaleRightWrapped(this.scaleRight.getState()):
+a===this.seqLimits?this.seqLimits_itemStateChanged():a===this.viewBoxesMenuItem?this.viewport.setShowBoxes(this.viewBoxesMenuItem.getState()):a===this.viewTextMenuItem?this.viewport.setShowText(this.viewTextMenuItem.getState()):a===this.renderGapsMenuItem?this.viewport.setRenderGaps(this.renderGapsMenuItem.getState()):a===this.annotationPanelMenuItem?(this.viewport.setShowAnnotation(this.annotationPanelMenuItem.getState()),this.alignPanel.setAnnotationVisible(this.annotationPanelMenuItem.getState())):
+a===this.sequenceFeatures?(this.viewport.setShowSequenceFeatures(this.sequenceFeatures.getState()),this.alignPanel.seqPanel.seqCanvas.repaint()):a===this.showAlignmentAnnotations?this.setAnnotationsVisibility():a===this.showSequenceAnnotations?this.setAnnotationsVisibility():a===this.sortAnnBySequence?(a=this.sortAnnBySequence.getState(),this.sortAnnByLabel.setState(!1),this.setAnnotationSortOrder(a?jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.SEQUENCE_AND_LABEL:jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.NONE),
+this.setViewportAnnotationOrder()):a===this.sortAnnByLabel?(a=this.sortAnnByLabel.getState(),this.sortAnnBySequence.setState(!1),this.setAnnotationSortOrder(a?jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.LABEL_AND_SEQUENCE:jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.NONE),this.setViewportAnnotationOrder()):a===this.showAutoFirst?(this.showAutoLast.setState(!this.showAutoFirst.getState()),this.setShowAutoCalculatedAbove(this.showAutoFirst.getState()),this.setViewportAnnotationOrder()):
+a===this.showAutoLast?(this.showAutoFirst.setState(!this.showAutoLast.getState()),this.setShowAutoCalculatedAbove(this.showAutoFirst.getState()),this.setViewportAnnotationOrder()):a===this.conservationMenuItem?this.conservationMenuItem_actionPerformed():a===this.abovePIDThreshold?this.abovePIDThreshold_actionPerformed():a===this.applyToAllGroups?this.viewport.setColourAppliesToAllGroups(this.applyToAllGroups.getState()):a===this.autoCalculate?this.viewport.autoCalculateConsensus=this.autoCalculate.getState():
+a===this.$sortByTree?this.viewport.sortByTree=this.$sortByTree.getState():a===this.centreColumnLabelFlag?this.centreColumnLabelFlag_stateChanged():a===this.followMouseOverFlag?this.mouseOverFlag_stateChanged():a===this.showGroupConsensus?this.showGroupConsensus_actionPerformed():a===this.showGroupConservation?this.showGroupConservation_actionPerformed():a===this.showSequenceLogo?this.showSequenceLogo_actionPerformed():a===this.normSequenceLogo?this.normSequenceLogo_actionPerformed():a===this.showConsensusHistogram?
+this.showConsensusHistogram_actionPerformed():a===this.applyAutoAnnotationSettings&&this.applyAutoAnnotationSettings_actionPerformed();this.alignPanel.paintAlignment(!0)},"java.awt.event.ItemEvent");d(c$,"setAnnotationsVisibility",function(){for(var a=this.showAlignmentAnnotations.getState(),b=this.showSequenceAnnotations.getState(),c,f=0,l=this.alignPanel.getAlignment().getAlignmentAnnotation();f<l.length&&((c=l[f])||1);f++)c.visible=null==c.sequenceRef?a:b;this.alignPanel.validateAnnotationDimensions(!0);
+this.validate();this.repaint()});d(c$,"setAnnotationSortOrder",function(a){this.annotationSortOrder=a},"jalview.analysis.AnnotationSorter.SequenceAnnotationOrder");d(c$,"setViewportAnnotationOrder",function(){this.alignPanel.av.setSortAnnotationsBy(this.annotationSortOrder);this.alignPanel.av.setShowAutocalculatedAbove(this.showAutoCalculatedAbove)});d(c$,"setShowAutoCalculatedAbove",function(a){this.showAutoCalculatedAbove=a},"~B");d(c$,"mouseOverFlag_stateChanged",function(){this.viewport.setFollowHighlight(this.followMouseOverFlag.getState())});
+d(c$,"centreColumnLabelFlag_stateChanged",function(){this.viewport.centreColumnLabels=this.centreColumnLabelFlag.getState();this.alignPanel.annotationPanel.repaint()});e(c$,"actionPerformed",function(a){a=a.getSource();if(a===this.inputText)this.inputText_actionPerformed();else if(a===this.$loadTree)this.loadTree_actionPerformed();else if(a===this.loadApplication)this.launchFullApplication();else if(a===this.$loadAnnotations)this.loadAnnotations();else if(a===this.$outputAnnotations)this.outputAnnotations(!0);
+else if(a===this.$outputFeatures)this.outputFeatures(!0,"Jalview");else if(a===this.closeMenuItem)this.closeMenuItem_actionPerformed();else if(a===this.copy)this.copy_actionPerformed();else if(a===this.undoMenuItem)this.undoMenuItem_actionPerformed();else if(a===this.redoMenuItem)this.redoMenuItem_actionPerformed();else if(a===this.inputText)this.inputText_actionPerformed();else if(a===this.closeMenuItem)this.closeMenuItem_actionPerformed();else if(a===this.undoMenuItem)this.undoMenuItem_actionPerformed();
+else if(a===this.redoMenuItem)this.redoMenuItem_actionPerformed();else if(a===this.copy)this.copy_actionPerformed();else if(a===this.pasteNew)this.pasteNew_actionPerformed();else if(a===this.pasteThis)this.pasteThis_actionPerformed();else if(a===this.cut)this.cut_actionPerformed();else if(a===this.$delete)this.delete_actionPerformed();else if(a===this.grpsFromSelection)this.makeGrpsFromSelection_actionPerformed();else if(a===this.deleteGroups)this.deleteGroups_actionPerformed();else if(a===this.selectAllSequenceMenuItem)this.selectAllSequenceMenuItem_actionPerformed();
+else if(a===this.deselectAllSequenceMenuItem)this.deselectAllSequenceMenuItem_actionPerformed();else if(a===this.invertSequenceMenuItem)this.invertSequenceMenuItem_actionPerformed();else if(a===this.invertColSel)this.viewport.invertColumnSelection(),this.alignPanel.paintAlignment(!0);else if(a===this.remove2LeftMenuItem)this.trimAlignment(!0);else if(a===this.remove2RightMenuItem)this.trimAlignment(!1);else if(a===this.removeGappedColumnMenuItem)this.removeGappedColumnMenuItem_actionPerformed();else if(a===
+this.removeAllGapsMenuItem)this.removeAllGapsMenuItem_actionPerformed();else if(a===this.findMenuItem)this.findMenuItem_actionPerformed();else if(a===this.$font)new jalview.appletgui.FontChooser(this.alignPanel);else if(a===this.$newView)this.newView(null);else if(a===this.showColumns)this.viewport.showAllHiddenColumns(),this.alignPanel.paintAlignment(!0);else if(a===this.showSeqs)this.viewport.showAllHiddenSeqs(),this.alignPanel.paintAlignment(!0);else if(a===this.hideColumns)this.viewport.hideSelectedColumns(),
+this.alignPanel.paintAlignment(!0);else if(a===this.hideSequences&&null!=this.viewport.getSelectionGroup())this.viewport.hideAllSelectedSeqs(),this.alignPanel.paintAlignment(!0);else if(a===this.hideAllButSelection)this.toggleHiddenRegions(!1,!1),this.alignPanel.paintAlignment(!0);else if(a===this.hideAllSelection)a=this.viewport.getSelectionGroup(),this.viewport.expandColSelection(a,!1),this.viewport.hideAllSelectedSeqs(),this.viewport.hideSelectedColumns(),this.alignPanel.paintAlignment(!0);else if(a===
+this.showAllHidden)this.viewport.showAllHiddenColumns(),this.viewport.showAllHiddenSeqs(),this.alignPanel.paintAlignment(!0);else if(a===this.showGroupConsensus)this.showGroupConsensus_actionPerformed();else if(a===this.showGroupConservation)this.showGroupConservation_actionPerformed();else if(a===this.showSequenceLogo)this.showSequenceLogo_actionPerformed();else if(a===this.normSequenceLogo)this.normSequenceLogo_actionPerformed();else if(a===this.showConsensusHistogram)this.showConsensusHistogram_actionPerformed();
+else if(a===this.applyAutoAnnotationSettings)this.applyAutoAnnotationSettings_actionPerformed();else if(a===this.featureSettings)new jalview.appletgui.FeatureSettings(this.alignPanel);else if(a===this.alProperties){var b=(new jalview.io.AlignmentProperties(this.viewport.getAlignment())).formatAsString();a=new jalview.appletgui.CutAndPasteTransfer(!1,this);a.setText(b.toString());b=new awt2swing.Frame;b.add(a);jalview.bin.JalviewLite.addFrame(b,jalview.util.MessageManager.formatMessage("label.alignment_properties",
+E(-1,[this.getTitle()])),400,250)}else a===this.overviewMenuItem?this.overviewMenuItem_actionPerformed():a===this.noColourmenuItem?this.changeColour(null):a===this.clustalColour?(this.abovePIDThreshold.setState(!1),this.changeColour(new jalview.schemes.ClustalxColourScheme(this.viewport.getAlignment(),null))):a===this.zappoColour?this.changeColour(new jalview.schemes.ZappoColourScheme):a===this.taylorColour?this.changeColour(new jalview.schemes.TaylorColourScheme):a===this.hydrophobicityColour?this.changeColour(new jalview.schemes.HydrophobicColourScheme):
+a===this.helixColour?this.changeColour(new jalview.schemes.HelixColourScheme):a===this.strandColour?this.changeColour(new jalview.schemes.StrandColourScheme):a===this.turnColour?this.changeColour(new jalview.schemes.TurnColourScheme):a===this.buriedColour?this.changeColour(new jalview.schemes.BuriedColourScheme):a===this.nucleotideColour?this.changeColour(new jalview.schemes.NucleotideColourScheme):a===this.purinePyrimidineColour?this.changeColour(new jalview.schemes.PurinePyrimidineColourScheme):
+a===this.RNAInteractionColour?this.changeColour(new jalview.schemes.RNAInteractionColourScheme):a===this.RNAHelixColour?new jalview.schemes.RNAHelicesColourChooser(this.viewport,this.alignPanel):a===this.modifyPID?this.modifyPID_actionPerformed():a===this.modifyConservation?this.modifyConservation_actionPerformed():a===this.userDefinedColour?new jalview.appletgui.UserDefinedColours(this.alignPanel,null):a===this.PIDColour?this.changeColour(new jalview.schemes.PIDColourScheme):a===this.BLOSUM62Colour?
+this.changeColour(new jalview.schemes.Blosum62ColourScheme):a===this.tcoffeeColour?this.changeColour(new jalview.schemes.TCoffeeColourScheme(this.alignPanel.getAlignment())):a===this.annotationColour?new jalview.appletgui.AnnotationColourChooser(this.viewport,this.alignPanel):a===this.annotationColumnSelection?new jalview.appletgui.AnnotationColumnChooser(this.viewport,this.alignPanel):a===this.sortPairwiseMenuItem?this.sortPairwiseMenuItem_actionPerformed():a===this.sortIDMenuItem?this.sortIDMenuItem_actionPerformed():
+a===this.sortLengthMenuItem?this.sortLengthMenuItem_actionPerformed():a===this.sortGroupMenuItem?this.sortGroupMenuItem_actionPerformed():a===this.removeRedundancyMenuItem?this.removeRedundancyMenuItem_actionPerformed():a===this.pairwiseAlignmentMenuItem?this.pairwiseAlignmentMenuItem_actionPerformed():a===this.PCAMenuItem?this.PCAMenuItem_actionPerformed():a===this.averageDistanceTreeMenuItem?this.averageDistanceTreeMenuItem_actionPerformed():a===this.neighbourTreeMenuItem?this.neighbourTreeMenuItem_actionPerformed():
+a===this.njTreeBlosumMenuItem?this.njTreeBlosumMenuItem_actionPerformed():a===this.avDistanceTreeBlosumMenuItem?this.avTreeBlosumMenuItem_actionPerformed():a===this.documentation?this.documentation_actionPerformed():a===this.about&&this.about_actionPerformed()},"java.awt.event.ActionEvent");d(c$,"inputText_actionPerformed",function(){var a=new jalview.appletgui.CutAndPasteTransfer(!0,this),b=new awt2swing.Frame;b.add(a);jalview.bin.JalviewLite.addFrame(b,jalview.util.MessageManager.getString("label.input_cut_paste"),
+500,500)});d(c$,"outputText_actionPerformed",function(a){var b=new jalview.appletgui.CutAndPasteTransfer(!0,this),c=new awt2swing.Frame;c.add(b);jalview.bin.JalviewLite.addFrame(c,jalview.util.MessageManager.formatMessage("label.alignment_output_command",E(-1,[a.getActionCommand()])),600,500);this.alignPanel.cloneFeatureRenderer();b.setText((new jalview.io.AppletFormatAdapter(this.alignPanel)).formatSequences(a.getActionCommand(),this.viewport.getAlignment(),this.viewport.getShowJVSuffix()))},"java.awt.event.ActionEvent");
+d(c$,"loadAnnotations",function(){var a=new jalview.appletgui.CutAndPasteTransfer(!0,this);a.setText(jalview.util.MessageManager.getString("label.paste_features_annotations_Tcoffee_here"));a.setAnnotationImport();var b=new awt2swing.Frame;b.add(a);jalview.bin.JalviewLite.addFrame(b,jalview.util.MessageManager.getString("action.paste_annotations"),400,300)});d(c$,"outputAnnotations",function(a){var b=(new jalview.io.AnnotationFile).printAnnotationsForView(this.viewport);if(a){a=new jalview.appletgui.CutAndPasteTransfer(!1,
+this);var c=new awt2swing.Frame;c.add(a);jalview.bin.JalviewLite.addFrame(c,jalview.util.MessageManager.getString("label.annotations"),600,500);a.setText(b)}return b},"~B");d(c$,"getDisplayedFeatureCols",function(){return null!=this.alignPanel.getFeatureRenderer()&&null!=this.viewport.getFeaturesDisplayed()?this.alignPanel.getFeatureRenderer().getDisplayedFeatureCols():null});d(c$,"outputFeatures",function(a,b){var c;c=b.equalsIgnoreCase("Jalview")?(new jalview.io.FeaturesFile).printJalviewFormat(this.viewport.getAlignment().getSequencesArray(),
+this.getDisplayedFeatureCols()):(new jalview.io.FeaturesFile).printGFFFormat(this.viewport.getAlignment().getSequencesArray(),this.getDisplayedFeatureCols());if(a){var f=!1;if(null==c||c.equals("No Features Visible"))c="# No features visible - paste some and import them here.",f=!0;var l=new jalview.appletgui.CutAndPasteTransfer(f,this);f&&l.setAnnotationImport();f=new awt2swing.Frame;f.add(l);jalview.bin.JalviewLite.addFrame(f,jalview.util.MessageManager.getString("label.features"),600,500);l.setText(c)}else null==
+c&&(c="");return c},"~B,~S");d(c$,"launchFullApplication",function(){var a=new StringBuffer(this.jalviewServletURL),b=a.lastIndexOf("?")>a.lastIndexOf("/")?"&":"?";a.append(b);b=this.viewport.applet;a.append("open="+this.appendProtocol(b.startupFile));null!=this.viewport.applet.features&&(a.append("&features="),a.append(this.appendProtocol(b.features)));null!=b.annotations&&(a.append("&annotations="),a.append(this.appendProtocol(b.annotations)));null!=b.jnetFile&&(a.append("&annotations="),a.append(this.appendProtocol(b.jnetFile)));
+null!=b.defaultColour&&a.append("&colour="+this.removeWhiteSpace(b.defaultColour));null!=b.userDefinedColour&&a.append("&colour="+this.removeWhiteSpace(b.userDefinedColour));null!=b.treeFile&&a.append("&tree="+this.appendProtocol(b.treeFile));this.showURL(a.toString(),"FULL_APP")});d(c$,"removeWhiteSpace",function(a){for(var b=new StringBuffer,c=0;c<a.length;c++)Character.isWhitespace(a.charAt(c))?b.append("%20"):b.append(a.charAt(c));return b.toString()},"~S");d(c$,"appendProtocol",function(a){try{new java.net.URL(a),
+a=java.net.URLEncoder.encode(a)}catch(b){if(y(b,java.net.MalformedURLException))a=this.viewport.applet.getCodeBase()+a;else throw b;}return a},"~S");d(c$,"closeMenuItem_actionPerformed",function(){jalview.appletgui.PaintRefresher.RemoveComponent(this.alignPanel);null!=this.alignPanel.seqPanel&&null!=this.alignPanel.seqPanel.seqCanvas&&jalview.appletgui.PaintRefresher.RemoveComponent(this.alignPanel.seqPanel.seqCanvas);null!=this.alignPanel.idPanel&&null!=this.alignPanel.idPanel.idCanvas&&jalview.appletgui.PaintRefresher.RemoveComponent(this.alignPanel.idPanel.idCanvas);
+0==jalview.appletgui.PaintRefresher.components.size()&&null==this.viewport.applet&&System.exit(0);this.alignPanel=this.viewport=null;this.dispose()});d(c$,"updateEditMenuBar",function(){if(0<this.viewport.getHistoryList().size()){this.undoMenuItem.setEnabled(!0);var a=this.viewport.getHistoryList().peek();this.undoMenuItem.setLabel(jalview.util.MessageManager.formatMessage("label.undo_command",E(-1,[a.getDescription()])))}else this.undoMenuItem.setEnabled(!1),this.undoMenuItem.setLabel(jalview.util.MessageManager.getString("action.undo"));
+0<this.viewport.getRedoList().size()?(this.redoMenuItem.setEnabled(!0),a=this.viewport.getRedoList().peek(),this.redoMenuItem.setLabel(jalview.util.MessageManager.formatMessage("label.redo_command",E(-1,[a.getDescription()])))):(this.redoMenuItem.setEnabled(!1),this.redoMenuItem.setLabel(jalview.util.MessageManager.getString("action.redo")))});e(c$,"addHistoryItem",function(a){0<a.getSize()&&(this.viewport.addToHistoryList(a),this.viewport.clearRedoList(),this.updateEditMenuBar(),this.viewport.updateHiddenColumns())},
+"jalview.commands.CommandI");d(c$,"undoMenuItem_actionPerformed",function(){if(!this.viewport.getHistoryList().isEmpty()){var a=this.viewport.getHistoryList().pop();this.viewport.addToRedoList(a);a.undoCommand(null);a=this.getOriginatingSource(a);a!==this.viewport&&System.err.println("Warning: Viewport object mismatch whilst undoing");a.updateHiddenColumns();this.updateEditMenuBar();a.firePropertyChange("alignment",null,a.getAlignment().getSequences())}});d(c$,"redoMenuItem_actionPerformed",function(){if(!this.viewport.getRedoList().isEmpty()){var a=
+this.viewport.getRedoList().pop();this.viewport.addToHistoryList(a);a.doCommand(null);a=this.getOriginatingSource(a);a!==this.viewport&&System.err.println("Warning: Viewport object mismatch whilst re-doing");a.updateHiddenColumns();this.updateEditMenuBar();a.firePropertyChange("alignment",null,a.getAlignment().getSequences())}});d(c$,"getOriginatingSource",function(a){var b=null,c=null;if(v(a,jalview.commands.EditCommand)){c=a.getAlignment();a=jalview.appletgui.PaintRefresher.components.get(this.viewport.getSequenceSetId());
+for(var f=0;f<a.size();f++)if(v(a.elementAt(f),jalview.appletgui.AlignmentPanel)&&c===a.elementAt(f).av.getAlignment()){b=a.elementAt(f).av;break}}null==b&&(null!=c&&jalview.appletgui.PaintRefresher.validateSequences(c,this.viewport.getAlignment()),b=this.viewport);return b},"jalview.commands.CommandI");d(c$,"moveSelectedSequences",function(a){var b=this.viewport.getSelectionGroup();if(null!=b){this.viewport.getAlignment().moveSelectedSequencesByOne(b,a?null:this.viewport.getHiddenRepSequences(),
+a);this.alignPanel.paintAlignment(!0);var c=this.viewport.getCodingComplement();null!=c&&(b=jalview.util.MappingUtils.mapSequenceGroup(b,this.viewport,c),c.getAlignment().moveSelectedSequencesByOne(b,a?null:c.getHiddenRepSequences(),a))}},"~B");d(c$,"slideSequences",function(a,b){var c=new java.util.Vector;this.viewport.cursorMode?c.add(this.viewport.getAlignment().getSequenceAt(this.alignPanel.seqPanel.seqCanvas.cursorY)):null!=this.viewport.getSelectionGroup()&&this.viewport.getSelectionGroup().getSize()!=
+this.viewport.getAlignment().getHeight()&&(c=this.viewport.getSelectionGroup().getSequences(this.viewport.getHiddenRepSequences()));if(!(1>c.size())){for(var f=new java.util.Vector,l=0;l<this.viewport.getAlignment().getHeight();l++)c.contains(this.viewport.getAlignment().getSequenceAt(l))||f.addElement(this.viewport.getAlignment().getSequenceAt(l));for(var c=c.toArray(Array(c.size())),d=f.toArray(Array(f.size())),l=0;l<f.size();l++)d[l]=f.elementAt(l);f=a?new jalview.commands.SlideSequencesCommand("Slide Sequences",
+d,c,b,this.viewport.getGapCharacter()):new jalview.commands.SlideSequencesCommand("Slide Sequences",c,d,b,this.viewport.getGapCharacter());l=0;f.getGapsInsertedBegin()&&a?this.viewport.cursorMode?this.alignPanel.seqPanel.moveCursor(b,0):l=b:!f.getGapsInsertedBegin()&&!a&&(this.viewport.cursorMode?this.alignPanel.seqPanel.moveCursor(-b,0):l=-b);0!=l&&(this.viewport.getSelectionGroup().setStartRes(this.viewport.getSelectionGroup().getStartRes()+l),this.viewport.getSelectionGroup().setEndRes(this.viewport.getSelectionGroup().getEndRes()+
+l));l=!1;c=this.viewport.getHistoryList();null!=c&&(0<c.size()&&v(c.peek(),jalview.commands.SlideSequencesCommand))&&(l=f.appendSlideCommand(c.peek()));l||this.addHistoryItem(f);this.repaint()}},"~B,~N");d(c$,"copy_actionPerformed",function(){if(null!=this.viewport.getSelectionGroup()){var a=this.viewport.getSelectionGroup();jalview.appletgui.AlignFrame.copiedSequences=new StringBuffer;for(var b=new java.util.HashMap,c=0;c<a.getSize();c++){var f=a.getSequenceAt(c),l=this.viewport.getAlignment().findIndex(f);
+b.put(new Integer(l),f)}var l=0,d,g,h;if(this.viewport.hasHiddenColumns()&&null!=this.viewport.getSelectionGroup()){jalview.appletgui.AlignFrame.copiedHiddenColumns=new java.util.Vector;c=this.viewport.getSelectionGroup().getStartRes();for(f=this.viewport.getColumnSelection().getHiddenColumns().iterator();f.hasNext()&&((d=f.next())||1);)jalview.appletgui.AlignFrame.copiedHiddenColumns.addElement(w(-1,[d[0]-c,d[1]-c]))}else jalview.appletgui.AlignFrame.copiedHiddenColumns=null;for(c=0;c<a.getSize();c++){for(f=
+null;null==f;)if(b.containsKey(new Integer(l))){f=b.get(new Integer(l));l++;break}else l++;d=f.findPosition(a.getStartRes());for(var j=g=0;j<a.getEndRes()+1&&j<f.getLength();j++)h=f.getCharAt(j),jalview.util.Comparison.isGap(h)||g++;0<g&&(g+=f.getStart()-1);jalview.appletgui.AlignFrame.copiedSequences.append(f.getName()+"\t"+d+"\t"+g+"\t"+f.getSequenceAsString(a.getStartRes(),a.getEndRes()+1)+"\n")}}});d(c$,"pasteNew_actionPerformed",function(){this.paste(!0)});d(c$,"pasteThis_actionPerformed",function(){this.paste(!1)});
+d(c$,"paste",function(a){try{if(null!=jalview.appletgui.AlignFrame.copiedSequences){for(var b=new java.util.StringTokenizer(jalview.appletgui.AlignFrame.copiedSequences.toString()),c=new java.util.Vector;b.hasMoreElements();){var f=b.nextToken(),l=Integer.parseInt(b.nextToken()),d=Integer.parseInt(b.nextToken());c.addElement(new jalview.datamodel.Sequence(f,b.nextToken(),l,d))}for(var g=Array(c.size()),b=0;b<c.size();b++)g[b]=c.elementAt(b);if(a){var h=jalview.util.MessageManager.getString("label.copied_sequences"),
+h=this.getTitle().startsWith(jalview.util.MessageManager.getString("label.copied_sequences"))?this.getTitle():h.concat(jalview.util.MessageManager.formatMessage("label.from_msname",E(-1,[this.getTitle()]))),j=new jalview.appletgui.AlignFrame(new jalview.datamodel.Alignment(g),this.viewport.applet,h,!1);if(null!=jalview.appletgui.AlignFrame.copiedHiddenColumns)for(b=0;b<jalview.appletgui.AlignFrame.copiedHiddenColumns.size();b++){var e=jalview.appletgui.AlignFrame.copiedHiddenColumns.elementAt(b);
+j.viewport.hideColumns(e[0],e[1])}jalview.bin.JalviewLite.addFrame(j,h,this.frameWidth,this.frameHeight)}else this.addSequences(g)}}catch(x){if(!y(x,Exception))throw x;}},"~B");d(c$,"addSequences",function(a){for(var b=0;b<a.length;b++)this.viewport.getAlignment().addSequence(a[b]);this.addHistoryItem(new jalview.commands.EditCommand(jalview.util.MessageManager.getString("label.add_sequences"),jalview.commands.EditCommand.Action.PASTE,a,0,this.viewport.getAlignment().getWidth(),this.viewport.getAlignment()));
+this.viewport.setEndSeq(this.viewport.getAlignment().getHeight());this.viewport.getAlignment().getWidth();this.viewport.firePropertyChange("alignment",null,this.viewport.getAlignment().getSequences())},"~A");d(c$,"cut_actionPerformed",function(){this.copy_actionPerformed();this.delete_actionPerformed()});d(c$,"delete_actionPerformed",function(){var a=this.viewport.getSelectionGroup();if(null!=a){for(var b=new java.util.Vector,c,f=0;f<a.getSize();f++)c=a.getSequenceAt(f),b.addElement(c);a.getSize()==
+this.viewport.getAlignment().getHeight()&&this.viewport.getColumnSelection().removeElements(a.getStartRes(),a.getEndRes()+1);c=Array(b.size());for(f=0;f<b.size();f++)c[f]=b.elementAt(f);this.addHistoryItem(new jalview.commands.EditCommand(jalview.util.MessageManager.getString("label.cut_sequences"),jalview.commands.EditCommand.Action.CUT,c,a.getStartRes(),a.getEndRes()-a.getStartRes()+1,this.viewport.getAlignment()));this.viewport.setSelectionGroup(null);this.viewport.getAlignment().deleteGroup(a);
+this.viewport.firePropertyChange("alignment",null,this.viewport.getAlignment().getSequences());1>this.viewport.getAlignment().getHeight()&&this.setVisible(!1);this.viewport.sendSelection()}});d(c$,"showGroupConsensus_actionPerformed",function(){this.viewport.setShowGroupConsensus(this.showGroupConsensus.getState());this.alignPanel.updateAnnotation(this.applyAutoAnnotationSettings.getState())});d(c$,"showGroupConservation_actionPerformed",function(){this.viewport.setShowGroupConservation(this.showGroupConservation.getState());
+this.alignPanel.updateAnnotation(this.applyAutoAnnotationSettings.getState())});d(c$,"showConsensusHistogram_actionPerformed",function(){this.viewport.setShowConsensusHistogram(this.showConsensusHistogram.getState());this.alignPanel.updateAnnotation(this.applyAutoAnnotationSettings.getState())});d(c$,"showSequenceLogo_actionPerformed",function(){this.viewport.setShowSequenceLogo(this.showSequenceLogo.getState());this.alignPanel.updateAnnotation(this.applyAutoAnnotationSettings.getState())});d(c$,
+"normSequenceLogo_actionPerformed",function(){this.showSequenceLogo.setState(!0);this.viewport.setShowSequenceLogo(!0);this.viewport.setNormaliseSequenceLogo(this.normSequenceLogo.getState());this.alignPanel.updateAnnotation(this.applyAutoAnnotationSettings.getState())});d(c$,"applyAutoAnnotationSettings_actionPerformed",function(){this.alignPanel.updateAnnotation(this.applyAutoAnnotationSettings.getState())});d(c$,"makeGrpsFromSelection_actionPerformed",function(){this.avc.makeGroupsFromSelection()&&
+(jalview.appletgui.PaintRefresher.Refresh(this,this.viewport.getSequenceSetId()),this.alignPanel.updateAnnotation(),this.alignPanel.paintAlignment(!0))});d(c$,"createGroup_actionPerformed",function(){this.avc.createGroup()});d(c$,"unGroup_actionPerformed",function(){this.avc.unGroup()&&this.alignPanel.alignmentChanged()});d(c$,"deleteGroups_actionPerformed",function(){this.avc.deleteGroups()&&this.alignPanel.alignmentChanged()});d(c$,"selectAllSequenceMenuItem_actionPerformed",function(){for(var a=
+new jalview.datamodel.SequenceGroup,b=0;b<this.viewport.getAlignment().getSequences().size();b++)a.addSequence(this.viewport.getAlignment().getSequenceAt(b),!1);a.setEndRes(this.viewport.getAlignment().getWidth()-1);this.viewport.setSelectionGroup(a);this.alignPanel.paintAlignment(!0);jalview.appletgui.PaintRefresher.Refresh(this.alignPanel,this.viewport.getSequenceSetId());this.viewport.sendSelection()});d(c$,"deselectAllSequenceMenuItem_actionPerformed",function(){this.viewport.cursorMode&&(this.alignPanel.seqPanel.keyboardNo1=
+null,this.alignPanel.seqPanel.keyboardNo2=null);this.viewport.setSelectionGroup(null);this.viewport.getColumnSelection().clear();this.viewport.setSelectionGroup(null);this.alignPanel.idPanel.idCanvas.searchResults=null;this.alignPanel.seqPanel.seqCanvas.highlightSearchResults(null);this.alignPanel.paintAlignment(!0);jalview.appletgui.PaintRefresher.Refresh(this.alignPanel,this.viewport.getSequenceSetId());this.viewport.sendSelection()});d(c$,"invertSequenceMenuItem_actionPerformed",function(){for(var a=
+this.viewport.getSelectionGroup(),b=0;b<this.viewport.getAlignment().getSequences().size();b++)a.addOrRemove(this.viewport.getAlignment().getSequenceAt(b),!1);jalview.appletgui.PaintRefresher.Refresh(this.alignPanel,this.viewport.getSequenceSetId());this.viewport.sendSelection()});d(c$,"invertColSel_actionPerformed",function(){this.viewport.invertColumnSelection();this.alignPanel.paintAlignment(!0);jalview.appletgui.PaintRefresher.Refresh(this.alignPanel,this.viewport.getSequenceSetId());this.viewport.sendSelection()});
+d(c$,"trimAlignment",function(a){var b=this.viewport.getColumnSelection();if(0<b.size()){var b=a?b.getMin():b.getMax(),c;c=null!=this.viewport.getSelectionGroup()?this.viewport.getSelectionGroup().getSequencesAsArray(this.viewport.getHiddenRepSequences()):this.viewport.getAlignment().getSequencesArray();a?(c=new jalview.commands.TrimRegionCommand("Remove Left",jalview.commands.TrimRegionCommand.TRIM_LEFT,c,b,this.viewport.getAlignment(),this.viewport.getColumnSelection(),this.viewport.getSelectionGroup()),
+this.viewport.setStartRes(0)):c=new jalview.commands.TrimRegionCommand("Remove Right",jalview.commands.TrimRegionCommand.TRIM_RIGHT,c,b,this.viewport.getAlignment(),this.viewport.getColumnSelection(),this.viewport.getSelectionGroup());this.setStatus(jalview.util.MessageManager.formatMessage("label.removed_columns",E(-1,[Integer.$valueOf(c.getSize()).toString()])));this.addHistoryItem(c);var f;for(c=this.viewport.getAlignment().getGroups().iterator();c.hasNext()&&((f=c.next())||1);)(a&&!f.adjustForRemoveLeft(b)||
+!a&&!f.adjustForRemoveRight(b))&&this.viewport.getAlignment().deleteGroup(f);this.viewport.firePropertyChange("alignment",null,this.viewport.getAlignment().getSequences())}},"~B");d(c$,"removeGappedColumnMenuItem_actionPerformed",function(){var a=0,b=this.viewport.getAlignment().getWidth()-1,c;null!=this.viewport.getSelectionGroup()?(c=this.viewport.getSelectionGroup().getSequencesAsArray(this.viewport.getHiddenRepSequences()),a=this.viewport.getSelectionGroup().getStartRes(),b=this.viewport.getSelectionGroup().getEndRes()):
+c=this.viewport.getAlignment().getSequencesArray();a=new jalview.commands.RemoveGapColCommand("Remove Gapped Columns",c,a,b,this.viewport.getAlignment());this.addHistoryItem(a);this.setStatus(jalview.util.MessageManager.formatMessage("label.removed_empty_columns",E(-1,[Integer.$valueOf(a.getSize()).toString()])));a=this.viewport.getAlignment().getSequenceAt(0);b=a.findPosition(this.viewport.startRes);this.viewport.setStartRes(a.findIndex(b)-1);this.viewport.firePropertyChange("alignment",null,this.viewport.getAlignment().getSequences())});
+d(c$,"removeAllGapsMenuItem_actionPerformed",function(){var a=0,b=this.viewport.getAlignment().getWidth()-1,c;null!=this.viewport.getSelectionGroup()?(c=this.viewport.getSelectionGroup().getSequencesAsArray(this.viewport.getHiddenRepSequences()),a=this.viewport.getSelectionGroup().getStartRes(),b=this.viewport.getSelectionGroup().getEndRes()):c=this.viewport.getAlignment().getSequencesArray();var f=this.viewport.getAlignment().getSequenceAt(0),l=f.findPosition(this.viewport.startRes);this.addHistoryItem(new jalview.commands.RemoveGapsCommand("Remove Gaps",
+c,a,b,this.viewport.getAlignment()));this.viewport.setStartRes(f.findIndex(l)-1);this.viewport.firePropertyChange("alignment",null,this.viewport.getAlignment().getSequences())});d(c$,"findMenuItem_actionPerformed",function(){new jalview.appletgui.Finder(this.alignPanel)});d(c$,"newView",function(a){var b;b=this.viewport.hasHiddenRows()?new jalview.datamodel.Alignment(this.viewport.getAlignment().getHiddenSequences().getFullAlignment().getSequencesArray()):new jalview.datamodel.Alignment(this.viewport.getAlignment().getSequencesArray());
+if(null!=this.viewport.getAlignment().getAlignmentAnnotation())for(var c=0;c<this.viewport.getAlignment().getAlignmentAnnotation().length;c++)this.viewport.getAlignment().getAlignmentAnnotation()[c].autoCalculated||b.addAnnotation(this.viewport.getAlignment().getAlignmentAnnotation()[c]);b=new jalview.appletgui.AlignFrame(b,this.viewport.applet,"",!1);b.viewport.setSequenceSetId(this.alignPanel.av.getSequenceSetId());jalview.appletgui.PaintRefresher.Register(this.alignPanel,this.alignPanel.av.getSequenceSetId());
+jalview.appletgui.PaintRefresher.Register(b.alignPanel,b.alignPanel.av.getSequenceSetId());jalview.appletgui.PaintRefresher.Register(b.alignPanel.idPanel.idCanvas,b.alignPanel.av.getSequenceSetId());jalview.appletgui.PaintRefresher.Register(b.alignPanel.seqPanel.seqCanvas,b.alignPanel.av.getSequenceSetId());for(var f=jalview.appletgui.PaintRefresher.components.get(this.viewport.getSequenceSetId()),l=-1,c=0;c<f.size();c++)v(f.elementAt(c),jalview.appletgui.AlignmentPanel)&&l++;c=String.instantialize(this.getTitle());
+null!=a?c=a+" ( "+c+")":(-1<c.indexOf("(View")&&(c=c.substring(0,c.indexOf("(View"))),c+="(View "+l+")");b.setTitle(c.toString());b.viewport.setHistoryList(this.viewport.getHistoryList());b.viewport.setRedoList(this.viewport.getRedoList());return b},"~S");d(c$,"getFeatureGroups",function(){var a=null;return null!=this.alignPanel&&null!=(a=this.alignPanel.getFeatureRenderer())?(a=a.getFeatureGroups(),a.toArray(Array(a.size()))):null});d(c$,"getFeatureGroupsOfState",function(a){var b=null;return null!=
+this.alignPanel&&null!=(b=this.alignPanel.getFeatureRenderer())?(a=b.getGroups(a),a.toArray(Array(a.size()))):null},"~B");d(c$,"setFeatureGroupState",function(a,b){var c=null;this.sequenceFeatures.setState(!0);this.viewport.setShowSequenceFeatures(!0);if(null!=this.alignPanel&&null!=(c=this.alignPanel.getFeatureRenderer()))c.setGroupVisibility(java.util.Arrays.asList(a),b),this.alignPanel.seqPanel.seqCanvas.repaint(),null!=this.alignPanel.overviewPanel&&this.alignPanel.overviewPanel.updateOverviewImage()},
+"~A,~B");d(c$,"seqLimits_itemStateChanged",function(){this.viewport.setShowJVSuffix(this.seqLimits.getState());this.alignPanel.fontChanged();this.alignPanel.paintAlignment(!0)});d(c$,"colourTextMenuItem_actionPerformed",function(){this.viewport.setColourText(this.colourTextMenuItem.getState());this.alignPanel.paintAlignment(!0)});d(c$,"displayNonconservedMenuItem_actionPerformed",function(){this.viewport.setShowUnconserved(this.displayNonconservedMenuItem.getState());this.alignPanel.paintAlignment(!0)});
+d(c$,"wrapMenuItem_actionPerformed",function(){this.viewport.setWrapAlignment(this.wrapMenuItem.getState());this.alignPanel.setWrapAlignment(this.wrapMenuItem.getState());this.scaleAbove.setEnabled(this.wrapMenuItem.getState());this.scaleLeft.setEnabled(this.wrapMenuItem.getState());this.scaleRight.setEnabled(this.wrapMenuItem.getState());this.alignPanel.paintAlignment(!0)});d(c$,"overviewMenuItem_actionPerformed",function(){if(null==this.alignPanel.overviewPanel){var a=new awt2swing.Frame,b=new jalview.appletgui.OverviewPanel(this.alignPanel);
+a.add(b);jalview.bin.JalviewLite.addFrame(a,jalview.util.MessageManager.formatMessage("label.overview_params",E(-1,[this.getTitle()])),b.getPreferredSize().width,b.getPreferredSize().height+50);a.pack();var c=this.alignPanel;a.addWindowListener((H("jalview.appletgui.AlignFrame$1")?0:jalview.appletgui.AlignFrame.$AlignFrame$1$(),C(jalview.appletgui.AlignFrame$1,this,T("ap",c))));this.alignPanel.setOverviewPanel(b)}});e(c$,"changeColour",function(a){null!=a&&(this.viewport.getAbovePIDThreshold()&&this.viewport.setThreshold(jalview.appletgui.SliderPanel.setPIDSliderSource(this.alignPanel,
+a,"Background")),this.viewport.getConservationSelected()?(a.setConservationApplied(!0),this.viewport.setIncrement(jalview.appletgui.SliderPanel.setConservationSlider(this.alignPanel,a,"Background"))):a.setConservationApplied(!1));this.viewport.setGlobalColourScheme(a);null!=this.alignPanel.getOverviewPanel()&&this.alignPanel.getOverviewPanel().updateOverviewImage();jalview.structure.StructureSelectionManager.getStructureSelectionManager(this.viewport.applet).sequenceColoursChanged(this.alignPanel);
+this.alignPanel.paintAlignment(!0)},"jalview.schemes.ColourSchemeI");d(c$,"modifyPID_actionPerformed",function(){this.viewport.getAbovePIDThreshold()&&null!=this.viewport.getGlobalColourScheme()&&(jalview.appletgui.SliderPanel.setPIDSliderSource(this.alignPanel,this.viewport.getGlobalColourScheme(),"Background"),jalview.appletgui.SliderPanel.showPIDSlider())});d(c$,"modifyConservation_actionPerformed",function(){this.viewport.getConservationSelected()&&null!=this.viewport.getGlobalColourScheme()&&
+(jalview.appletgui.SliderPanel.setConservationSlider(this.alignPanel,this.viewport.getGlobalColourScheme(),"Background"),jalview.appletgui.SliderPanel.showConservationSlider())});d(c$,"conservationMenuItem_actionPerformed",function(){this.viewport.setConservationSelected(this.conservationMenuItem.getState());this.viewport.setAbovePIDThreshold(!1);this.abovePIDThreshold.setState(!1);this.changeColour(this.viewport.getGlobalColourScheme());this.modifyConservation_actionPerformed()});d(c$,"abovePIDThreshold_actionPerformed",
+function(){this.viewport.setAbovePIDThreshold(this.abovePIDThreshold.getState());this.conservationMenuItem.setState(!1);this.viewport.setConservationSelected(!1);this.changeColour(this.viewport.getGlobalColourScheme());this.modifyPID_actionPerformed()});d(c$,"sortPairwiseMenuItem_actionPerformed",function(){var a=this.viewport.getAlignment().getSequencesArray();jalview.analysis.AlignmentSorter.sortByPID(this.viewport.getAlignment(),this.viewport.getAlignment().getSequenceAt(0),null);this.addHistoryItem(new jalview.commands.OrderCommand("Pairwise Sort",
+a,this.viewport.getAlignment()));this.alignPanel.paintAlignment(!0)});d(c$,"sortIDMenuItem_actionPerformed",function(){var a=this.viewport.getAlignment().getSequencesArray();jalview.analysis.AlignmentSorter.sortByID(this.viewport.getAlignment());this.addHistoryItem(new jalview.commands.OrderCommand("ID Sort",a,this.viewport.getAlignment()));this.alignPanel.paintAlignment(!0)});d(c$,"sortLengthMenuItem_actionPerformed",function(){var a=this.viewport.getAlignment().getSequencesArray();jalview.analysis.AlignmentSorter.sortByLength(this.viewport.getAlignment());
+this.addHistoryItem(new jalview.commands.OrderCommand("Length Sort",a,this.viewport.getAlignment()));this.alignPanel.paintAlignment(!0)});d(c$,"sortGroupMenuItem_actionPerformed",function(){var a=this.viewport.getAlignment().getSequencesArray();jalview.analysis.AlignmentSorter.sortByGroup(this.viewport.getAlignment());this.addHistoryItem(new jalview.commands.OrderCommand("Group Sort",a,this.viewport.getAlignment()));this.alignPanel.paintAlignment(!0)});d(c$,"removeRedundancyMenuItem_actionPerformed",
+function(){new jalview.appletgui.RedundancyPanel(this.alignPanel)});d(c$,"pairwiseAlignmentMenuItem_actionPerformed",function(){if(null!=this.viewport.getSelectionGroup()&&1<this.viewport.getSelectionGroup().getSize()){var a=new awt2swing.Frame;a.add(new jalview.appletgui.PairwiseAlignPanel(this.alignPanel));jalview.bin.JalviewLite.addFrame(a,jalview.util.MessageManager.getString("action.pairwise_alignment"),600,500)}});d(c$,"PCAMenuItem_actionPerformed",function(){if(!this.viewport.getAlignment().isAligned(!1)){for(var a,
+b=this.viewport.getAlignment().getWidth(),c=0;c<this.viewport.getAlignment().getSequences().size();c++)a=this.viewport.getAlignment().getSequenceAt(c),a.getLength()<b&&a.insertCharAt(b-1,this.viewport.getGapCharacter());this.alignPanel.paintAlignment(!0)}if(!(null!=this.viewport.getSelectionGroup()&&4>this.viewport.getSelectionGroup().getSize()&&0<this.viewport.getSelectionGroup().getSize()||4>this.viewport.getAlignment().getHeight()))try{new jalview.appletgui.PCAPanel(this.viewport)}catch(f){if(!y(f,
+OutOfMemoryError))throw f;}});d(c$,"averageDistanceTreeMenuItem_actionPerformed",function(){this.NewTreePanel("AV","PID","Average distance tree using PID")});d(c$,"neighbourTreeMenuItem_actionPerformed",function(){this.NewTreePanel("NJ","PID","Neighbour joining tree using PID")});d(c$,"njTreeBlosumMenuItem_actionPerformed",function(){this.NewTreePanel("NJ","BL","Neighbour joining tree using BLOSUM62")});d(c$,"avTreeBlosumMenuItem_actionPerformed",function(){this.NewTreePanel("AV","BL","Average distance tree using BLOSUM62")});
+d(c$,"NewTreePanel",function(a,b,c){if(!this.viewport.getAlignment().isAligned(!1)){for(var f,l=this.viewport.getAlignment().getWidth(),d=0;d<this.viewport.getAlignment().getSequences().size();d++)f=this.viewport.getAlignment().getSequenceAt(d),f.getLength()<l&&f.insertCharAt(l-1,this.viewport.getGapCharacter());this.alignPanel.paintAlignment(!0)}if(null!=this.viewport.getSelectionGroup()&&1<this.viewport.getSelectionGroup().getSize()||1<this.viewport.getAlignment().getHeight())a=new jalview.appletgui.TreePanel(this.alignPanel,
+a,b),this.addTreeMenuItem(a,c),jalview.bin.JalviewLite.addFrame(a,c,600,500)},"~S,~S,~S");d(c$,"loadTree_actionPerformed",function(){var a=new jalview.appletgui.CutAndPasteTransfer(!0,this);a.setText(jalview.util.MessageManager.getString("label.paste_newick_tree_file"));a.setTreeImport();var b=new awt2swing.Frame;b.add(a);jalview.bin.JalviewLite.addFrame(b,jalview.util.MessageManager.getString("label.paste_newick_file"),400,300)});d(c$,"loadTree",function(a,b){var c=new jalview.appletgui.TreePanel(this.alignPanel,
+b,jalview.util.MessageManager.getString("label.load_tree_from_file"),a);jalview.bin.JalviewLite.addFrame(c,b,600,500);this.addTreeMenuItem(c,b)},"jalview.io.NewickFile,~S");d(c$,"sortByTree",function(a,b){var c=this.viewport.getAlignment().getSequencesArray();jalview.analysis.AlignmentSorter.sortByTree(this.viewport.getAlignment(),a.getTree());this.addHistoryItem(new jalview.commands.OrderCommand(jalview.util.MessageManager.formatMessage("label.order_by_params",E(-1,[b])),c,this.viewport.getAlignment()));
+this.alignPanel.paintAlignment(!0)},"jalview.appletgui.TreePanel,~S");d(c$,"addTreeMenuItem",function(a,b){var c=new awt2swing.MenuItem(b);this.sortByTreeMenu.add(c);c.addActionListener((H("jalview.appletgui.AlignFrame$2")?0:jalview.appletgui.AlignFrame.$AlignFrame$2$(),C(jalview.appletgui.AlignFrame$2,this,T("treePanel",a,"title",b))));a.addWindowListener((H("jalview.appletgui.AlignFrame$3")?0:jalview.appletgui.AlignFrame.$AlignFrame$3$(),C(jalview.appletgui.AlignFrame$3,this,T("treePanel",a,"title",
+b,"item",c))))},"jalview.appletgui.TreePanel,~S");d(c$,"sortBy",function(a,b){var c=this.viewport.getAlignment().getSequencesArray();(this.viewport.applet,jalview.bin.JalviewLite).debug&&System.err.println("Sorting "+a.getOrder().size()+" in alignment '"+this.getTitle()+"'");jalview.analysis.AlignmentSorter.sortBy(this.viewport.getAlignment(),a);null!=b&&this.addHistoryItem(new jalview.commands.OrderCommand(b,c,this.viewport.getAlignment()));this.alignPanel.paintAlignment(!0);return!0},"jalview.datamodel.AlignmentOrder,~S");
+d(c$,"documentation_actionPerformed",function(){this.alignPanel.av.applet.openJalviewHelpUrl()});d(c$,"about_actionPerformed",function(){H("jalview.appletgui.AlignFrame$1AboutPanel")||jalview.appletgui.AlignFrame.$AlignFrame$1AboutPanel$();var a=new awt2swing.Frame;a.add(C(jalview.appletgui.AlignFrame$1AboutPanel,this,null,jalview.bin.JalviewLite.getVersion(),jalview.bin.JalviewLite.getBuildDate()));jalview.bin.JalviewLite.addFrame(a,jalview.util.MessageManager.getString("label.jalview"),580,220)});
+d(c$,"showURL",function(a,b){null==this.viewport.applet?System.out.println("Not running as applet - no browser available."):this.viewport.applet.showURL(a,b)},"~S,~S");d(c$,"jbInit",function(){this.setMenuBar(this.alignFrameMenuBar);this.inputText.setLabel(jalview.util.MessageManager.getString("label.input_from_textbox"));this.inputText.addActionListener(this);for(var a=new awt2swing.Menu(jalview.util.MessageManager.getString("label.out_to_textbox")),b=0;b<jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS.length;b++){var c=
+new awt2swing.MenuItem(jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS[b]);c.addActionListener((H("jalview.appletgui.AlignFrame$4")?0:jalview.appletgui.AlignFrame.$AlignFrame$4$(),C(jalview.appletgui.AlignFrame$4,this,null)));a.add(c)}this.closeMenuItem.addActionListener(this);this.loadApplication.addActionListener(this);this.$loadTree.addActionListener(this);this.$loadAnnotations.addActionListener(this);this.$outputFeatures.addActionListener(this);this.$outputAnnotations.addActionListener(this);
+this.undoMenuItem.setEnabled(!1);this.undoMenuItem.setLabel(jalview.util.MessageManager.getString("action.undo"));this.undoMenuItem.addActionListener(this);this.redoMenuItem.setEnabled(!1);this.redoMenuItem.setLabel(jalview.util.MessageManager.getString("action.redo"));this.redoMenuItem.addActionListener(this);this.copy.setLabel(jalview.util.MessageManager.getString("action.copy"));this.copy.addActionListener(this);this.cut.setLabel(jalview.util.MessageManager.getString("action.cut"));this.cut.addActionListener(this);
+this.$delete.setLabel(jalview.util.MessageManager.getString("action.delete"));this.$delete.addActionListener(this);this.pasteMenu.setLabel(jalview.util.MessageManager.getString("action.paste"));this.pasteNew.setLabel(jalview.util.MessageManager.getString("label.to_new_alignment"));this.pasteNew.addActionListener(this);this.pasteThis.setLabel(jalview.util.MessageManager.getString("label.to_this_alignment"));this.pasteThis.addActionListener(this);this.remove2LeftMenuItem.setLabel(jalview.util.MessageManager.getString("action.remove_left"));
+this.remove2LeftMenuItem.addActionListener(this);this.remove2RightMenuItem.setLabel(jalview.util.MessageManager.getString("action.remove_right"));this.remove2RightMenuItem.addActionListener(this);this.removeGappedColumnMenuItem.setLabel(jalview.util.MessageManager.getString("action.remove_empty_columns"));this.removeGappedColumnMenuItem.addActionListener(this);this.removeAllGapsMenuItem.setLabel(jalview.util.MessageManager.getString("action.remove_all_gaps"));this.removeAllGapsMenuItem.addActionListener(this);
+this.removeRedundancyMenuItem.setLabel(jalview.util.MessageManager.getString("action.remove_redundancy").concat("..."));this.removeRedundancyMenuItem.addActionListener(this);this.findMenuItem.setLabel(jalview.util.MessageManager.getString("action.find"));this.findMenuItem.addActionListener(this);this.selectAllSequenceMenuItem.addActionListener(this);this.deselectAllSequenceMenuItem.addActionListener(this);this.invertSequenceMenuItem.setLabel(jalview.util.MessageManager.getString("action.invert_sequence_selection"));
+this.invertSequenceMenuItem.addActionListener(this);this.invertColSel.setLabel(jalview.util.MessageManager.getString("action.invert_column_selection"));this.invertColSel.addActionListener(this);this.deleteGroups.setLabel(jalview.util.MessageManager.getString("action.undefine_groups"));this.deleteGroups.addActionListener(this);this.grpsFromSelection.setLabel(jalview.util.MessageManager.getString("action.make_groups_selection"));this.grpsFromSelection.addActionListener(this);this.createGroup.setLabel(jalview.util.MessageManager.getString("action.create_group"));
+this.unGroup.setLabel(jalview.util.MessageManager.getString("action.remove_group"));this.annotationColumnSelection.setLabel("Select by Annotation");this.annotationColumnSelection.addActionListener(this);this.$newView.setLabel(jalview.util.MessageManager.getString("action.new_view"));this.$newView.addActionListener(this);b=new awt2swing.Menu(jalview.util.MessageManager.getString("action.show"));this.showColumns.setLabel(jalview.util.MessageManager.getString("label.all_columns"));this.showSeqs.setLabel(jalview.util.MessageManager.getString("label.all_sequences"));
+c=new awt2swing.Menu(jalview.util.MessageManager.getString("action.hide"));this.hideColumns.setLabel(jalview.util.MessageManager.getString("label.selected_columns"));this.hideSequences.setLabel(jalview.util.MessageManager.getString("label.selected_sequences"));this.hideAllButSelection.setLabel(jalview.util.MessageManager.getString("label.all_but_selected_region"));this.hideAllSelection.setLabel(jalview.util.MessageManager.getString("label.selected_region"));this.showAllHidden.setLabel(jalview.util.MessageManager.getString("label.all_sequences_columns"));
+this.showColumns.addActionListener(this);this.showSeqs.addActionListener(this);this.hideColumns.addActionListener(this);this.hideSequences.addActionListener(this);this.hideAllButSelection.addActionListener(this);this.hideAllSelection.addActionListener(this);this.showAllHidden.addActionListener(this);this.featureSettings.setLabel(jalview.util.MessageManager.getString("label.feature_settings"));this.featureSettings.addActionListener(this);this.sequenceFeatures.setLabel(jalview.util.MessageManager.getString("label.show_sequence_features"));
+this.sequenceFeatures.addItemListener(this);this.sequenceFeatures.setState(!1);this.followMouseOverFlag.setLabel(jalview.util.MessageManager.getString("label.automatic_scrolling"));this.followMouseOverFlag.addItemListener(this);this.alProperties.addActionListener(this);this.overviewMenuItem.setLabel(jalview.util.MessageManager.getString("label.overview_window"));this.overviewMenuItem.addActionListener(this);this.annotationPanelMenuItem.setLabel(jalview.util.MessageManager.getString("label.show_annotations"));
+this.annotationPanelMenuItem.addItemListener(this);this.showGroupConsensus.setLabel(jalview.util.MessageManager.getString("label.group_consensus"));this.showGroupConservation.setLabel(jalview.util.MessageManager.getString("label.group_conservation"));this.showConsensusHistogram.setLabel(jalview.util.MessageManager.getString("label.show_consensus_histogram"));this.showSequenceLogo.setLabel(jalview.util.MessageManager.getString("label.show_consensus_logo"));this.normSequenceLogo.setLabel(jalview.util.MessageManager.getString("label.norm_consensus_logo"));
+this.applyAutoAnnotationSettings.setLabel(jalview.util.MessageManager.getString("label.apply_all_groups"));this.applyAutoAnnotationSettings.setState(!0);var f=new awt2swing.Menu(jalview.util.MessageManager.getString("label.autocalculated_annotation"));this.showGroupConsensus.addItemListener(this);this.showGroupConservation.addItemListener(this);this.showConsensusHistogram.addItemListener(this);this.showSequenceLogo.addItemListener(this);this.normSequenceLogo.addItemListener(this);this.applyAutoAnnotationSettings.addItemListener(this);
+this.showAlignmentAnnotations=new awt2swing.CheckboxMenuItem(jalview.util.MessageManager.getString("label.show_all_al_annotations"));this.showSequenceAnnotations=new awt2swing.CheckboxMenuItem(jalview.util.MessageManager.getString("label.show_all_seq_annotations"));this.sortAnnBySequence=new awt2swing.CheckboxMenuItem(jalview.util.MessageManager.getString("label.sort_annotations_by_sequence"));this.sortAnnByLabel=new awt2swing.CheckboxMenuItem(jalview.util.MessageManager.getString("label.sort_annotations_by_label"));
+this.showAutoFirst=new awt2swing.CheckboxMenuItem(jalview.util.MessageManager.getString("label.show_first"));this.showAutoLast=new awt2swing.CheckboxMenuItem(jalview.util.MessageManager.getString("label.show_last"));this.showAlignmentAnnotations.addItemListener(this);this.showSequenceAnnotations.addItemListener(this);this.sortAnnBySequence.addItemListener(this);this.sortAnnByLabel.addItemListener(this);this.showAutoFirst.addItemListener(this);this.showAutoLast.addItemListener(this);this.$font.setLabel(jalview.util.MessageManager.getString("action.font"));
+this.$font.addActionListener(this);this.scaleAbove.setLabel(jalview.util.MessageManager.getString("action.scale_above"));this.scaleAbove.setState(!0);this.scaleAbove.setEnabled(!1);this.scaleAbove.addItemListener(this);this.scaleLeft.setEnabled(!1);this.scaleLeft.setState(!0);this.scaleLeft.setLabel(jalview.util.MessageManager.getString("action.scale_left"));this.scaleLeft.addItemListener(this);this.scaleRight.setEnabled(!1);this.scaleRight.setState(!0);this.scaleRight.setLabel(jalview.util.MessageManager.getString("action.scale_right"));
+this.scaleRight.addItemListener(this);this.viewBoxesMenuItem.setLabel(jalview.util.MessageManager.getString("action.boxes"));this.viewBoxesMenuItem.setState(!0);this.viewBoxesMenuItem.addItemListener(this);this.viewTextMenuItem.setLabel(jalview.util.MessageManager.getString("action.text"));this.viewTextMenuItem.setState(!0);this.viewTextMenuItem.addItemListener(this);this.colourTextMenuItem.setLabel(jalview.util.MessageManager.getString("label.colour_text"));this.colourTextMenuItem.addItemListener(this);
+this.displayNonconservedMenuItem.setLabel(jalview.util.MessageManager.getString("label.show_non_conversed"));this.displayNonconservedMenuItem.addItemListener(this);this.wrapMenuItem.setLabel(jalview.util.MessageManager.getString("action.wrap"));this.wrapMenuItem.addItemListener(this);this.renderGapsMenuItem.setLabel(jalview.util.MessageManager.getString("action.show_gaps"));this.renderGapsMenuItem.setState(!0);this.renderGapsMenuItem.addItemListener(this);this.centreColumnLabelFlag.setLabel(jalview.util.MessageManager.getString("label.centre_column_labels"));
+this.centreColumnLabelFlag.addItemListener(this);this.seqLimits.setState(!0);this.seqLimits.setLabel(jalview.util.MessageManager.getString("label.show_sequence_limits"));this.seqLimits.addItemListener(this);this.applyToAllGroups.setLabel(jalview.util.MessageManager.getString("label.apply_colour_to_all_groups"));this.applyToAllGroups.setState(!0);this.applyToAllGroups.addItemListener(this);this.clustalColour.setLabel(jalview.util.MessageManager.getString("label.clustalx"));this.clustalColour.addActionListener(this);
+this.zappoColour.setLabel(jalview.util.MessageManager.getString("label.zappo"));this.zappoColour.addActionListener(this);this.taylorColour.setLabel(jalview.util.MessageManager.getString("label.taylor"));this.taylorColour.addActionListener(this);this.hydrophobicityColour.setLabel(jalview.util.MessageManager.getString("label.hydrophobicity"));this.hydrophobicityColour.addActionListener(this);this.helixColour.setLabel(jalview.util.MessageManager.getString("label.helix_propensity"));this.helixColour.addActionListener(this);
+this.strandColour.setLabel(jalview.util.MessageManager.getString("label.strand_propensity"));this.strandColour.addActionListener(this);this.turnColour.setLabel(jalview.util.MessageManager.getString("label.turn_propensity"));this.turnColour.addActionListener(this);this.buriedColour.setLabel(jalview.util.MessageManager.getString("label.buried_index"));this.buriedColour.addActionListener(this);this.purinePyrimidineColour.setLabel(jalview.util.MessageManager.getString("label.purine_pyrimidine"));this.purinePyrimidineColour.addActionListener(this);
+this.RNAInteractionColour.setLabel(jalview.util.MessageManager.getString("label.rna_interaction"));this.RNAInteractionColour.addActionListener(this);this.RNAHelixColour.setLabel(jalview.util.MessageManager.getString("action.by_rna_helixes"));this.RNAHelixColour.addActionListener(this);this.userDefinedColour.setLabel(jalview.util.MessageManager.getString("action.user_defined"));this.userDefinedColour.addActionListener(this);this.PIDColour.setLabel(jalview.util.MessageManager.getString("label.percentage_identity"));
+this.PIDColour.addActionListener(this);this.BLOSUM62Colour.setLabel(jalview.util.MessageManager.getString("label.blosum62_score"));this.BLOSUM62Colour.addActionListener(this);this.tcoffeeColour.setLabel(jalview.util.MessageManager.getString("label.tcoffee_scores"));this.tcoffeeColour.setEnabled(!1);this.tcoffeeColour.addActionListener(this);this.conservationMenuItem.setLabel(jalview.util.MessageManager.getString("action.by_conservation"));this.conservationMenuItem.addItemListener(this);this.noColourmenuItem.setLabel(jalview.util.MessageManager.getString("label.none"));
+this.noColourmenuItem.addActionListener(this);this.abovePIDThreshold.setLabel(jalview.util.MessageManager.getString("label.above_identity_threshold"));this.abovePIDThreshold.addItemListener(this);this.nucleotideColour.setLabel(jalview.util.MessageManager.getString("label.nucleotide"));this.nucleotideColour.addActionListener(this);this.modifyPID.setLabel(jalview.util.MessageManager.getString("label.modify_identity_thereshold"));this.modifyPID.addActionListener(this);this.modifyConservation.setLabel(jalview.util.MessageManager.getString("label.modify_conservation_thereshold"));
+this.modifyConservation.addActionListener(this);this.annotationColour.setLabel(jalview.util.MessageManager.getString("action.by_annotation"));this.annotationColour.addActionListener(this);this.sortPairwiseMenuItem.setLabel(jalview.util.MessageManager.getString("action.by_pairwise_id"));this.sortPairwiseMenuItem.addActionListener(this);this.sortIDMenuItem.setLabel(jalview.util.MessageManager.getString("action.by_id"));this.sortIDMenuItem.addActionListener(this);this.sortLengthMenuItem.setLabel(jalview.util.MessageManager.getString("action.by_length"));
+this.sortLengthMenuItem.addActionListener(this);this.sortGroupMenuItem.setLabel(jalview.util.MessageManager.getString("action.by_group"));this.sortGroupMenuItem.addActionListener(this);this.pairwiseAlignmentMenuItem.setLabel(jalview.util.MessageManager.getString("action.pairwise_alignment"));this.pairwiseAlignmentMenuItem.addActionListener(this);this.PCAMenuItem.setLabel(jalview.util.MessageManager.getString("label.principal_component_analysis"));this.PCAMenuItem.addActionListener(this);this.autoCalculate=
+new awt2swing.CheckboxMenuItem(jalview.util.MessageManager.getString("label.autocalculate_consensus"),!0);this.averageDistanceTreeMenuItem.setLabel(jalview.util.MessageManager.getString("label.average_distance_identity"));this.averageDistanceTreeMenuItem.addActionListener(this);this.neighbourTreeMenuItem.setLabel(jalview.util.MessageManager.getString("label.neighbour_joining_identity"));this.neighbourTreeMenuItem.addActionListener(this);this.avDistanceTreeBlosumMenuItem.setLabel(jalview.util.MessageManager.getString("label.average_distance_bloslum62"));
+this.avDistanceTreeBlosumMenuItem.addActionListener(this);this.njTreeBlosumMenuItem.setLabel(jalview.util.MessageManager.getString("label.neighbour_blosum62"));this.njTreeBlosumMenuItem.addActionListener(this);this.sortByTreeMenu.setLabel(jalview.util.MessageManager.getString("action.by_tree_order"));var l=new awt2swing.Menu(jalview.util.MessageManager.getString("action.sort")),d=new awt2swing.Menu(jalview.util.MessageManager.getString("action.calculate_tree"));this.autoCalculate.addItemListener(this);
+this.$sortByTree.addItemListener(this);var g=new awt2swing.Menu(jalview.util.MessageManager.getString("action.help"));this.documentation.setLabel(jalview.util.MessageManager.getString("label.documentation"));this.documentation.addActionListener(this);this.about.setLabel(jalview.util.MessageManager.getString("label.about"));this.about.addActionListener(this);this.alignFrameMenuBar.add(this.fileMenu);var h=new awt2swing.Menu(jalview.util.MessageManager.getString("action.edit"));this.alignFrameMenuBar.add(h);
+var e=new awt2swing.Menu(jalview.util.MessageManager.getString("action.select"));this.alignFrameMenuBar.add(e);var n=new awt2swing.Menu(jalview.util.MessageManager.getString("action.view"));this.alignFrameMenuBar.add(n);var x=new awt2swing.Menu(jalview.util.MessageManager.getString("action.annotations"));this.alignFrameMenuBar.add(x);var u=new awt2swing.Menu(jalview.util.MessageManager.getString("action.format"));this.alignFrameMenuBar.add(u);var D=new awt2swing.Menu(jalview.util.MessageManager.getString("action.colour"));
+this.alignFrameMenuBar.add(D);var m=new awt2swing.Menu(jalview.util.MessageManager.getString("action.calculate"));this.alignFrameMenuBar.add(m);this.alignFrameMenuBar.add(g);this.fileMenu.add(this.inputText);this.fileMenu.add(this.$loadTree);this.fileMenu.add(this.$loadAnnotations);this.fileMenu.addSeparator();this.fileMenu.add(a);this.fileMenu.add(this.$outputFeatures);this.fileMenu.add(this.$outputAnnotations);null!=this.jalviewServletURL&&this.fileMenu.add(this.loadApplication);this.fileMenu.addSeparator();
+this.fileMenu.add(this.closeMenuItem);h.add(this.undoMenuItem);h.add(this.redoMenuItem);h.add(this.cut);h.add(this.copy);this.pasteMenu.add(this.pasteNew);this.pasteMenu.add(this.pasteThis);h.add(this.pasteMenu);h.add(this.$delete);h.addSeparator();h.add(this.remove2LeftMenuItem);h.add(this.remove2RightMenuItem);h.add(this.removeGappedColumnMenuItem);h.add(this.removeAllGapsMenuItem);h.add(this.removeRedundancyMenuItem);e.add(this.findMenuItem);e.addSeparator();e.add(this.selectAllSequenceMenuItem);
+e.add(this.deselectAllSequenceMenuItem);e.add(this.invertSequenceMenuItem);e.add(this.invertColSel);e.add(this.createGroup);e.add(this.unGroup);e.add(this.grpsFromSelection);e.add(this.deleteGroups);e.add(this.annotationColumnSelection);n.add(this.$newView);n.addSeparator();b.add(this.showColumns);b.add(this.showSeqs);b.add(this.showAllHidden);n.add(b);c.add(this.hideColumns);c.add(this.hideSequences);c.add(this.hideAllSelection);c.add(this.hideAllButSelection);n.add(c);n.addSeparator();n.add(this.followMouseOverFlag);
+n.addSeparator();n.add(this.sequenceFeatures);n.add(this.featureSettings);n.addSeparator();n.add(this.alProperties);n.addSeparator();n.add(this.overviewMenuItem);x.add(this.annotationPanelMenuItem);x.addSeparator();x.add(this.showAlignmentAnnotations);x.add(this.showSequenceAnnotations);x.add(this.sortAnnBySequence);x.add(this.sortAnnByLabel);x.addSeparator();f.add(this.showAutoFirst);f.add(this.showAutoLast);f.addSeparator();f.add(this.applyAutoAnnotationSettings);f.add(this.showConsensusHistogram);
+f.add(this.showSequenceLogo);f.add(this.normSequenceLogo);f.addSeparator();f.add(this.showGroupConservation);f.add(this.showGroupConsensus);x.add(f);u.add(this.$font);u.add(this.seqLimits);u.add(this.wrapMenuItem);u.add(this.scaleAbove);u.add(this.scaleLeft);u.add(this.scaleRight);u.add(this.viewBoxesMenuItem);u.add(this.viewTextMenuItem);u.add(this.colourTextMenuItem);u.add(this.displayNonconservedMenuItem);u.add(this.renderGapsMenuItem);u.add(this.centreColumnLabelFlag);D.add(this.applyToAllGroups);
+D.addSeparator();D.add(this.noColourmenuItem);D.add(this.clustalColour);D.add(this.BLOSUM62Colour);D.add(this.PIDColour);D.add(this.zappoColour);D.add(this.taylorColour);D.add(this.hydrophobicityColour);D.add(this.helixColour);D.add(this.strandColour);D.add(this.turnColour);D.add(this.buriedColour);D.add(this.nucleotideColour);D.add(this.purinePyrimidineColour);D.add(this.tcoffeeColour);D.add(this.userDefinedColour);D.addSeparator();D.add(this.conservationMenuItem);D.add(this.modifyConservation);
+D.add(this.abovePIDThreshold);D.add(this.modifyPID);D.add(this.annotationColour);D.add(this.RNAHelixColour);l.add(this.sortIDMenuItem);l.add(this.sortLengthMenuItem);l.add(this.sortByTreeMenu);l.add(this.sortGroupMenuItem);l.add(this.sortPairwiseMenuItem);m.add(l);d.add(this.averageDistanceTreeMenuItem);d.add(this.neighbourTreeMenuItem);d.add(this.avDistanceTreeBlosumMenuItem);d.add(this.njTreeBlosumMenuItem);m.add(d);m.addSeparator();m.add(this.pairwiseAlignmentMenuItem);m.add(this.PCAMenuItem);
+m.add(this.autoCalculate);m.add(this.$sortByTree);g.add(this.documentation);g.add(this.about);this.statusBar.setBackground(java.awt.Color.white);this.statusBar.setFont(new java.awt.Font("Verdana",0,11));this.setStatus(jalview.util.MessageManager.getString("label.status_bar"));this.add(this.statusBar,"South")});e(c$,"setStatus",function(a){this.statusBar.setText(a)},"~S");d(c$,"createAlignFrameWindow",function(a){a?this.embedAlignFrameInApplet(this.viewport.applet):(this.embedMenuIfNeeded(this.alignPanel)&&
+this.alignPanel.setSize(this.getSize().width,this.getSize().height-this.statusBar.getHeight()),this.add(this.statusBar,"South"),this.add(this.alignPanel,"Center"),jalview.bin.JalviewLite.addFrame(this,this.getTitle(),this.frameWidth,this.frameHeight))},"~B");d(c$,"embedAlignFrameInApplet",function(a){this.fileMenu.remove(this.closeMenuItem);this.fileMenu.remove(3);this.embeddedMenu=this.makeEmbeddedPopupMenu(this.alignFrameMenuBar,!1,!1);a.setLayout(new java.awt.BorderLayout);a.add(this.embeddedMenu,
+"North");a.add(this.statusBar,"South");this.alignPanel.setSize(a.getSize().width,a.getSize().height-this.embeddedMenu.getHeight()-this.statusBar.getHeight());a.add(this.alignPanel,"Center");a.addFocusListener((H("jalview.appletgui.AlignFrame$5")?0:jalview.appletgui.AlignFrame.$AlignFrame$5$(),C(jalview.appletgui.AlignFrame$5,this,T("theApplet",a,"me",this))));a.validate()},"jalview.bin.JalviewLite");d(c$,"addStructureViewInstance",function(){return null},"~O,~A");d(c$,"addPdbFile",function(a,b,c){a=
+this.viewport.getAlignment().findName(a);var f=!1;if(null!=a){var l=a.getPDBId(),d=null;if(null!=l&&0<l.size())for(var g=0,h=l.size();g<h;g++)d=l.elementAt(g),!d.getId().equals(b)&&!d.getFile().equals(c)&&(d=null);null==d&&(d=new jalview.datamodel.PDBEntry,d.setId(b),d.setFile(c),f=!0);b=jalview.io.AppletFormatAdapter.resolveProtocol(c,"PDB");if(null==b)return!1;f&&(null==d.getProperty()&&d.setProperty(new java.util.Hashtable),d.getProperty().put("protocol",b),a.addPDBId(d),this.alignPanel.getStructureSelectionManager().registerPDBEntry(d))}return!0},
+"~S,~S,~S");d(c$,"cleanSeqChainArrays",function(a,b){if(null!=a){for(var c=new java.util.Vector,f=0;f<a.length;f++)null!=a[f]&&c.addElement(E(-1,[a[f],null!=b?b[f]:null]));a=Array(c.size());b=Array(c.size());for(var f=0,l=c.size();f<l;f++){var d=c.elementAt(f);a[f]=d[0];b[f]=d[1]}}return E(-1,[a,b])},"~A,~A");d(c$,"newStructureView",function(a,b,c,f,l){f=this.cleanSeqChainArrays(c,f);c=f[0];f=f[1];(null==c||0==c.length)&&System.err.println("JalviewLite.AlignFrame:newStructureView: No sequence to bind structure to.");
+if(null==l||0==l.trim().length||l.equals("null"))if(l=b.getProperty().get("protocol"),null==l){System.err.println("Couldn't work out protocol to open structure: "+b.getId());return}if(a.useXtrnalSviewer)null==jalview.structure.StructureSelectionManager.getStructureSelectionManager(a).setMapping(c,f,b.getFile(),l)&&System.err.println("Failed to map "+b.getFile()+" ("+l+") to any sequences");else{if(a.isAlignPdbStructures()&&a.jmolAvailable){for(var d=null,g=a.getAppletWindow(jalview.appletgui.AppletJmol),
+h=0,e=g.size();h<e;h++)if(a=g.elementAt(h),a.ap.alignFrame===this){d=a;break}null!=d&&System.err.println("Incremental adding and aligning structure to existing Jmol view not yet implemented.")}new jalview.appletgui.AppletJmol(b,c,f,this.alignPanel,l);jalview.bin.JalviewLite.lastFrameX+=40;jalview.bin.JalviewLite.lastFrameY+=40}},"jalview.bin.JalviewLite,jalview.datamodel.PDBEntry,~A,~A,~S");d(c$,"alignedStructureView",function(){System.err.println("Aligned Structure View: Not yet implemented.")},
+"jalview.bin.JalviewLite,~A,~A,~A,~A");d(c$,"select",function(a,b){this.alignPanel.seqPanel.selection(a,b,null)},"jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection");d(c$,"scrollTo",function(a,b){this.alignPanel.seqPanel.scrollTo(a,b)},"~N,~N");d(c$,"scrollToRow",function(a){this.alignPanel.seqPanel.scrollToRow(a)},"~N");d(c$,"scrollToColumn",function(a){this.alignPanel.seqPanel.scrollToColumn(a)},"~N");d(c$,"getSequenceSetId",function(){return this.viewport.getSequenceSetId()});d(c$,
+"loadScoreFile",function(a){var b=jalview.jsdev.GenericFileAdapter.getFile("TCoffeeScoreFile",[a,jalview.io.AppletFormatAdapter.checkProtocol(a)]);if(!b.isValid())return System.err.println("Problems parsing T-Coffee scores: "+b.getWarningMessage()),System.err.println("Origin was:\n"+a),!1;var c;null!=(c=this.viewport.getAlignment())&&(c.getHeight()!=b.getHeight()||c.getWidth()!=b.getWidth())&&System.err.println("The scores matrix does not match the alignment dimensions");if(b.annotateAlignment(this.alignPanel.getAlignment(),
+!1))return this.alignPanel.fontChanged(),this.tcoffeeColour.setEnabled(!0),this.changeColour(new jalview.schemes.TCoffeeColourScheme(this.alignPanel.getAlignment())),!0;System.err.println("Problems resolving T-Coffee scores:");null!=b.getWarningMessage()&&System.err.println(b.getWarningMessage());return!1},"~S");d(c$,"getSplitFrame",function(){return this.splitFrame});d(c$,"setSplitFrame",function(a){this.splitFrame=a},"jalview.appletgui.SplitFrame");e(c$,"setShowSeqFeatures",function(a){this.viewport.setShowSequenceFeatures(a)},
+"~B");e(c$,"setMenusForViewport",function(){});e(c$,"refreshFeatureUI",function(a){a&&(this.sequenceFeatures.setState(!0),this.alignPanel.av.setShowSequenceFeatures(!0))},"~B");e(c$,"getFeatureSettingsUI",function(){return this.alignPanel.av.featureSettings});c$.$AlignFrame$1$=function(){A(self.c$);c$=L(jalview.appletgui,"AlignFrame$1",java.awt.event.WindowAdapter);e(c$,"windowClosing",function(){null!=this.f$.ap&&this.f$.ap.setOverviewPanel(null)},"java.awt.event.WindowEvent");c$=z()};c$.$AlignFrame$2$=
+function(){A(self.c$);c$=L(jalview.appletgui,"AlignFrame$2",null,java.awt.event.ActionListener);e(c$,"actionPerformed",function(){this.b$["jalview.appletgui.AlignFrame"].sortByTree(this.f$.treePanel,this.f$.title)},"java.awt.event.ActionEvent");c$=z()};c$.$AlignFrame$3$=function(){A(self.c$);c$=L(jalview.appletgui,"AlignFrame$3",java.awt.event.WindowAdapter);d(c$,"windowOpened",function(a){this.b$["jalview.appletgui.AlignFrame"].viewport.sortByTree&&this.b$["jalview.appletgui.AlignFrame"].sortByTree(this.f$.treePanel,
+this.f$.title);K(this,jalview.appletgui.AlignFrame$3,"windowOpened",[a])},"java.awt.event.WindowEvent");e(c$,"windowClosing",function(){this.b$["jalview.appletgui.AlignFrame"].sortByTreeMenu.remove(this.f$.item)},"java.awt.event.WindowEvent");c$=z()};c$.$AlignFrame$1AboutPanel$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.builddate=this.version=null;r(this,arguments)},jalview.appletgui,"AlignFrame$1AboutPanel",awt2swing.Canvas);m(c$,function(a,b){t(this,jalview.appletgui.AlignFrame$1AboutPanel,
+[]);this.version=a;this.builddate=b},"~S,~S");e(c$,"paintComponent",function(a){a.setColor(java.awt.Color.white);a.fillRect(0,0,this.getSize().width,this.getSize().height);a.setFont(new java.awt.Font("Helvetica",0,12));var b=a.getFontMetrics().getHeight(),c=5;a.setColor(java.awt.Color.black);a.setFont(new java.awt.Font("Helvetica",1,14));awt2swing.Util.drawString(a,jalview.util.MessageManager.formatMessage("label.jalviewLite_release",E(-1,[this.version])),7,c+=b);a.setFont(new java.awt.Font("Helvetica",
+1,12));awt2swing.Util.drawString(a,jalview.util.MessageManager.formatMessage("label.jaview_build_date",E(-1,[this.builddate])),7,c+=b);a.setFont(new java.awt.Font("Helvetica",0,12));awt2swing.Util.drawString(a,jalview.util.MessageManager.getString("label.jalview_authors_1"),7,c+=1.5*b);awt2swing.Util.drawString(a,jalview.util.MessageManager.getString("label.jalview_authors_2"),57,c+=b+8);awt2swing.Util.drawString(a,jalview.util.MessageManager.getString("label.jalview_dev_managers"),7,c+=b);awt2swing.Util.drawString(a,
+jalview.util.MessageManager.getString("label.jalview_distribution_lists"),7,c+=b);awt2swing.Util.drawString(a,jalview.util.MessageManager.getString("label.jalview_please_cite"),7,c+=b+8);awt2swing.Util.drawString(a,jalview.util.MessageManager.getString("label.jalview_cite_1_authors"),7,c+=b);awt2swing.Util.drawString(a,jalview.util.MessageManager.getString("label.jalview_cite_1_title"),7,c+=b);awt2swing.Util.drawString(a,jalview.util.MessageManager.getString("label.jalview_cite_1_ref"),7,c+b)},"java.awt.Graphics");
+c$=z()};c$.$AlignFrame$4$=function(){A(self.c$);c$=L(jalview.appletgui,"AlignFrame$4",null,java.awt.event.ActionListener);e(c$,"actionPerformed",function(a){this.b$["jalview.appletgui.AlignFrame"].outputText_actionPerformed(a)},"java.awt.event.ActionEvent");c$=z()};c$.$AlignFrame$5$=function(){A(self.c$);c$=L(jalview.appletgui,"AlignFrame$5",null,java.awt.event.FocusListener);e(c$,"focusLost",function(){this.f$.theApplet.currentAlignFrame===this.f$.me&&(this.f$.theApplet.currentAlignFrame=null)},
+"java.awt.event.FocusEvent");e(c$,"focusGained",function(){this.f$.theApplet.currentAlignFrame=this.f$.me},"java.awt.event.FocusEvent");c$=z()};G(c$,"copiedSequences",null,"copiedHiddenColumns",null)});p("awt2swing");q(["awt2swing.Panel"],"awt2swing.Canvas",null,function(){c$=B(awt2swing,"Canvas",awt2swing.Panel)});p("awt2swing");q(["javax.swing.JPanel"],"awt2swing.Panel",null,function(){c$=B(awt2swing,"Panel",javax.swing.JPanel);d(c$,"setName",function(a){System.out.println(a);K(this,awt2swing.Panel,
+"setName",[a])},"~S")});p("jalview.api");M(jalview.api,"AlignViewControllerGuiI");p("jalview.appletgui");q(["awt2swing.Frame","java.awt.event.MouseListener","java.awt.Font","java.util.HashMap"],"jalview.appletgui.EmbmenuFrame","awt2swing.Label $.Panel $.PopupMenu jalview.util.Platform java.awt.Color $.FlowLayout".split(" "),function(){c$=s(function(){this.embeddedMenu=this.embeddedPopup=null;r(this,arguments)},jalview.appletgui,"EmbmenuFrame",awt2swing.Frame,java.awt.event.MouseListener);J(c$,function(){this.embeddedPopup=
+new java.util.HashMap});d(c$,"embedMenuIfNeeded",function(a){var b=this.getJMenuBar();return null==b?!1:jalview.util.Platform.isAMac()?(this.embeddedMenu=this.makeEmbeddedPopupMenu(b,!0,!1),this.unsetMenuBar(),this.add(this.embeddedMenu,"North"),a.setSize(this.getSize().width,this.getSize().height-this.embeddedMenu.getHeight()),!0):!1},"awt2swing.Panel");d(c$,"makeEmbeddedPopupMenu",function(a,b,c){c||(this.embeddedPopup.clear(),null!=this.embeddedMenu&&this.embeddedMenu.removeAll());return this.embeddedMenu=
+this.makeEmbeddedPopupMenu(a,jalview.appletgui.EmbmenuFrame.DEFAULT_MENU_FONT,b,new awt2swing.Panel,this)},"awt2swing.MenuBar,~B,~B");d(c$,"makeEmbeddedPopupMenu",function(a,b,c,f,l){c&&(c=a.getFont(),null!=c&&(b=c));null==f&&(f=new awt2swing.Panel);c=new java.awt.FlowLayout;f.setBackground(java.awt.Color.lightGray);f.setLayout(c);for(var d=0,g=a.getMenuCount();d<g;d++){var h=a.getMenu(d),e=new awt2swing.Label(h.getLabel());e.setFont(b);var n=new awt2swing.PopupMenu,x,u=h.getItemCount();for(x=0;x<
+u;x++)null==h.getItem(x)?n.addSeparator():n.add(h.getItem(x)),u--,x--;this.embeddedPopup.put(e,n);f.add(e);e.addMouseListener(l)}c.setAlignment(0);c.setHgap(2);c.setVgap(0);return f},"awt2swing.MenuBar,java.awt.Font,~B,awt2swing.Panel,java.awt.event.MouseListener");e(c$,"mousePressed",function(a){var b=null;a=a.getSource();b=this.getPopupMenu(a);null!=b&&(this.embeddedMenu.add(b),b.show(this.embeddedMenu,a.getBounds().x,a.getBounds().y+a.getBounds().getSize().height))},"java.awt.event.MouseEvent");
+d(c$,"getPopupMenu",function(a){return this.embeddedPopup.get(a)},"awt2swing.Label");e(c$,"mouseClicked",function(){},"java.awt.event.MouseEvent");e(c$,"mouseReleased",function(){},"java.awt.event.MouseEvent");e(c$,"mouseEntered",function(){},"java.awt.event.MouseEvent");e(c$,"mouseExited",function(){},"java.awt.event.MouseEvent");d(c$,"destroyMenus",function(){if(null!=this.embeddedPopup){for(var a,b=this.embeddedPopup.keySet().iterator();b.hasNext()&&((a=b.next())||1);)a.removeMouseListener(this);
+this.embeddedPopup.clear()}null!=this.embeddedMenu&&this.embeddedMenu.removeAll()});d(c$,"finalize",function(){this.destroyMenus();this.embeddedMenu=this.embeddedPopup=null;K(this,jalview.appletgui.EmbmenuFrame,"finalize",[])});c$.FONT_ARIAL_PLAIN_11=c$.prototype.FONT_ARIAL_PLAIN_11=new java.awt.Font("Arial",0,11);c$.DEFAULT_MENU_FONT=c$.prototype.DEFAULT_MENU_FONT=jalview.appletgui.EmbmenuFrame.FONT_ARIAL_PLAIN_11});p("awt2swing");q(["javax.swing.JFrame"],"awt2swing.Frame",null,function(){c$=B(awt2swing,
+"Frame",javax.swing.JFrame);d(c$,"remove",function(a){this.removeInt(a)},"~N");d(c$,"setMenuBar",function(a){this.setJMenuBar(a)},"awt2swing.MenuBar");d(c$,"unsetMenuBar",function(){this.setJMenuBar(null)});d(c$,"getMenubar",function(){return this.getJMenuBar()})});p("awt2swing");q(["javax.swing.JLabel"],"awt2swing.Label",null,function(){c$=B(awt2swing,"Label",javax.swing.JLabel);d(c$,"setAlignment",function(a){this.setAlignmentX(a)},"~N")});p("awt2swing");q(["javax.swing.JPopupMenu"],"awt2swing.PopupMenu",
+null,function(){c$=B(awt2swing,"PopupMenu",javax.swing.JPopupMenu)});p("jalview.util");q(null,"jalview.util.Platform",["java.lang.StringBuffer"],function(){c$=B(jalview.util,"Platform");c$.isAMac=d(c$,"isAMac",function(){return-1<java.lang.System.getProperty("os.name").indexOf("Mac")});c$.isHeadless=d(c$,"isHeadless",function(){var a=java.lang.System.getProperty("java.awt.headless");return null!=a&&a.equals("true")});c$.getMaxCommandLineLength=d(c$,"getMaxCommandLineLength",function(){return 2046});
+c$.escapeString=d(c$,"escapeString",function(a){for(var b=new StringBuffer,c=0,f=0;-1<(c=a.indexOf("\\",f));)b.append(a.subSequence(f,c)),b.append("\\\\"),f=c+1;b.append(a.substring(f));return b.toString()},"~S")});p("awt2swing");q(["javax.swing.JCheckBoxMenuItem"],"awt2swing.CheckboxMenuItem",null,function(){c$=B(awt2swing,"CheckboxMenuItem",javax.swing.JCheckBoxMenuItem);m(c$,function(){t(this,awt2swing.CheckboxMenuItem,[])});e(c$,"getState",function(){return this.isSelected()});e(c$,"setState",
+function(a){this.setSelected(a)},"~B")});p("awt2swing");q(["javax.swing.JMenu"],"awt2swing.Menu",null,function(){c$=B(awt2swing,"Menu",javax.swing.JMenu);m(c$,function(a){t(this,awt2swing.Menu,[a])},"~S");m(c$,function(){t(this,awt2swing.Menu)})});p("awt2swing");q(["javax.swing.JMenuBar"],"awt2swing.MenuBar",null,function(){c$=B(awt2swing,"MenuBar",javax.swing.JMenuBar)});p("awt2swing");q(["javax.swing.JMenuItem"],"awt2swing.MenuItem",null,function(){c$=B(awt2swing,"MenuItem",javax.swing.JMenuItem)});
+p("jalview.analysis");q(null,"jalview.analysis.AlignmentSorter","jalview.datamodel.SequenceI jalview.util.Comparison $.MessageManager $.QuickSort java.lang.Error $.Float $.StringBuffer java.util.ArrayList".split(" "),function(){c$=B(jalview.analysis,"AlignmentSorter");c$.sortByPID=d(c$,"sortByPID",function(a,b,c){jalview.analysis.AlignmentSorter.sortByPID(a,b,c,0,-1)},"jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI,~A");c$.sortByPID=d(c$,"sortByPID",function(a,b){for(var c=a.getHeight(),
+f=Q(c,0),l=Array(c),d=0;d<c;d++)f[d]=jalview.util.Comparison.PID(a.getSequenceAt(d).getSequenceAsString(),b.getSequenceAsString()),l[d]=a.getSequenceAt(d);jalview.util.QuickSort.sortFloatObject(f,l);jalview.analysis.AlignmentSorter.setReverseOrder(a,l)},"jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI,~A,~N,~N");c$.setReverseOrder=d(c$,"setReverseOrder",function(a,b){for(var c=b.length,f=0,f=0==c%2?F(c/2):F((c+1)/2),l=0;l<f;l++)(void 0).set(l,b[c-l-1]),(void 0).set(c-l-1,b[l])},"jalview.datamodel.AlignmentI,~A");
+c$.setOrder=d(c$,"setOrder",function(a,b){jalview.analysis.AlignmentSorter.setOrder(a,jalview.analysis.AlignmentSorter.vectorSubsetToArray(b,a.getSequences()))},"jalview.datamodel.AlignmentI,java.util.List");c$.setOrder=d(c$,"setOrder",function(a,b){for(var c=new java.util.ArrayList,f=0;f<b.length;f++)(void 0).contains(b[f])&&c.add(b[f]);(void 0).clear();for(f=0;f<c.size();f++)(void 0).add(c.get(f))},"jalview.datamodel.AlignmentI,~A");c$.sortByID=d(c$,"sortByID",function(a){for(var b=a.getHeight(),
+c=Array(b),f=Array(b),l=0;l<b;l++)c[l]=a.getSequenceAt(l).getName(),f[l]=a.getSequenceAt(l);jalview.util.QuickSort.sort(c,f);jalview.analysis.AlignmentSorter.sortIdAscending?jalview.analysis.AlignmentSorter.setReverseOrder(a,f):jalview.analysis.AlignmentSorter.setOrder(a,f);jalview.analysis.AlignmentSorter.sortIdAscending=!jalview.analysis.AlignmentSorter.sortIdAscending},"jalview.datamodel.AlignmentI");c$.sortByLength=d(c$,"sortByLength",function(a){for(var b=a.getHeight(),c=Q(b,0),f=Array(b),l=
+0;l<b;l++)f[l]=a.getSequenceAt(l),c[l]=f[l].getEnd()-f[l].getStart();jalview.util.QuickSort.sortFloatObject(c,f);jalview.analysis.AlignmentSorter.sortLengthAscending?jalview.analysis.AlignmentSorter.setReverseOrder(a,f):jalview.analysis.AlignmentSorter.setOrder(a,f);jalview.analysis.AlignmentSorter.sortLengthAscending=!jalview.analysis.AlignmentSorter.sortLengthAscending},"jalview.datamodel.AlignmentI");c$.sortByGroup=d(c$,"sortByGroup",function(a){var b=new java.util.ArrayList;b.hashCode()!=jalview.analysis.AlignmentSorter.lastGroupHash?
+(jalview.analysis.AlignmentSorter.sortGroupAscending=!0,jalview.analysis.AlignmentSorter.lastGroupHash=b.hashCode()):jalview.analysis.AlignmentSorter.sortGroupAscending=!jalview.analysis.AlignmentSorter.sortGroupAscending;for(var c,f=a.getGroups().iterator();f.hasNext()&&((c=f.next())||1);){for(var l=0;l<b.size();l++){var d=b.get(l);if(c.getSize()>d.getSize()){b.add(l,c);break}}b.contains(c)||b.add(c)}f=new java.util.ArrayList;for(d=0;d<b.size();d++){c=b.get(d);c=c.getSequencesInOrder(a);for(l=0;l<
+c.length;l++)f.add(c[l])}jalview.analysis.AlignmentSorter.sortGroupAscending?jalview.analysis.AlignmentSorter.setOrder(a,f):jalview.analysis.AlignmentSorter.setReverseOrder(a,jalview.analysis.AlignmentSorter.vectorSubsetToArray(f,a.getSequences()))},"jalview.datamodel.AlignmentI");c$.vectorSubsetToArray=d(c$,"vectorSubsetToArray",function(a,b){var c=new java.util.ArrayList,f,l,d=X(b.size(),!1);for(f=0;f<b.size();f++)d[f]=!0;for(f=0;f<a.size();f++){var g=a.get(f);l=b.indexOf(g);-1<l&&d[l]&&(d[l]=!1,
+c.add(g))}for(f=0;f<d.length;f++)d[f]&&c.add(b.get(f));return c.toArray(Array(c.size()))},"java.util.List,java.util.List");c$.sortBy=d(c$,"sortBy",function(a,b){var c=b.getOrder();jalview.analysis.AlignmentSorter.sortOrderAscending=jalview.analysis.AlignmentSorter.lastOrder===b?!jalview.analysis.AlignmentSorter.sortOrderAscending:!0;jalview.analysis.AlignmentSorter.sortOrderAscending?jalview.analysis.AlignmentSorter.setOrder(a,c):jalview.analysis.AlignmentSorter.setReverseOrder(a,jalview.analysis.AlignmentSorter.vectorSubsetToArray(c,
+a.getSequences()))},"jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentOrder");c$.getOrderByTree=d(c$,"getOrderByTree",function(a,b){var c=a.getHeight(),f=new java.util.ArrayList,f=jalview.analysis.AlignmentSorter._sortByTree(b.getTopNode(),f,a.getSequences());f.size()!=c&&(f.size()!=c&&jalview.analysis.AlignmentSorter.addStrays(a,f),f.size()!=c&&System.err.println("WARNING: tmp.size()="+f.size()+" != nseq="+c+" in getOrderByTree - tree contains sequences not in alignment"));return f},"jalview.datamodel.AlignmentI,jalview.analysis.NJTree");
+c$.sortByTree=d(c$,"sortByTree",function(a,b){var c=jalview.analysis.AlignmentSorter.getOrderByTree(a,b);jalview.analysis.AlignmentSorter.lastTree!==b?(jalview.analysis.AlignmentSorter.sortTreeAscending=!0,jalview.analysis.AlignmentSorter.lastTree=b):jalview.analysis.AlignmentSorter.sortTreeAscending=!jalview.analysis.AlignmentSorter.sortTreeAscending;jalview.analysis.AlignmentSorter.sortTreeAscending?jalview.analysis.AlignmentSorter.setOrder(a,c):jalview.analysis.AlignmentSorter.setReverseOrder(a,
+jalview.analysis.AlignmentSorter.vectorSubsetToArray(c,a.getSequences()))},"jalview.datamodel.AlignmentI,jalview.analysis.NJTree");c$.addStrays=d(c$,"addStrays",function(a,b){for(var c=a.getHeight(),f=0;f<c;f++)b.contains(a.getSequenceAt(f))||b.add(a.getSequenceAt(f));c!=b.size()&&System.err.println("ERROR: Size still not right even after addStrays")},"jalview.datamodel.AlignmentI,java.util.List");c$._sortByTree=d(c$,"_sortByTree",function(a,b,c){if(null==a)return b;var f=a.left(),l=a.right();null==
+f&&null==l?!a.isPlaceholder()&&null!=a.element()&&v(a.element(),jalview.datamodel.SequenceI)&&(b.contains(a.element())||b.add(a.element())):(jalview.analysis.AlignmentSorter._sortByTree(f,b,c),jalview.analysis.AlignmentSorter._sortByTree(l,b,c));return b},"jalview.datamodel.SequenceNode,java.util.List,java.util.List");c$.recoverOrder=d(c$,"recoverOrder",function(a){for(var b=Q(a.length,0),c=0;c<a.length;c++)b[c]=(new Float(a[c].getName().substring(8))).floatValue();jalview.util.QuickSort.sortFloatObject(b,
+a)},"~A");c$.sortByAnnotationScore=d(c$,"sortByAnnotationScore",function(a,b){for(var c=b.getSequencesArray(),f=X(c.length,!1),l=0,d=U(c.length,0),g=0,h=0,e=0;e<c.length;e++){var n=c[e].getAnnotation(a);null!=n?(l++,f[e]=!0,d[e]=n[0].getScore(),1==l?h=g=d[e]:(h<d[e]&&(h=d[e]),g>d[e]&&(g=d[e]))):f[e]=!1}if(0!=l){if(l<c.length)for(e=0;e<c.length;e++)f[e]||(d[e]=h+e+1);jalview.util.QuickSort.sortDouble(d,c);jalview.analysis.AlignmentSorter.lastSortByScore!==a?(jalview.analysis.AlignmentSorter.lastSortByScore=
+a,jalview.analysis.AlignmentSorter.setOrder(b,c)):jalview.analysis.AlignmentSorter.setReverseOrder(b,c)}},"~S,jalview.datamodel.AlignmentI");c$.sortByFeature=d(c$,"sortByFeature",function(a,b,c,f,l,d){jalview.analysis.AlignmentSorter.sortByFeature(null==a?null:E(-1,[a]),null==b?null:E(-1,[b]),c,f,l,d)},"~S,~S,~N,~N,jalview.datamodel.AlignmentI,~S");c$.containsIgnoreCase=d(c$,"containsIgnoreCase",function(a,b){if(null==b)return!0;if(null==a)return!1;for(var c=0;c<b.length;c++)if(null!=b[c]&&a.equalsIgnoreCase(b[c]))return!0;
+return!1},"~S,~A");c$.sortByFeature=d(c$,"sortByFeature",function(a,b,c,f,l,d){if(d!==jalview.analysis.AlignmentSorter.FEATURE_SCORE&&d!==jalview.analysis.AlignmentSorter.FEATURE_LABEL&&d!==jalview.analysis.AlignmentSorter.FEATURE_DENSITY)throw Error(jalview.util.MessageManager.getString("error.implementation_error_sortbyfeature"));var g=d!==jalview.analysis.AlignmentSorter.FEATURE_SCORE,h=new StringBuffer;h.append(c+f+d);for(var e=0;null!=a&&e<a.length;e++)h.append(null==a[e]?"null":a[e]);for(e=
+0;null!=b&&e<b.length;e++)h.append(null==b[e]?"null":b[e]);for(var n=l.getSequencesArray(),x=X(n.length,!1),u=0,D=U(n.length,0),m=w(n.length,0),p=Array(n.length),q=0,r=0,e=0;e<n.length;e++){var s=n[e].getSequenceFeatures();if(null==s)s=[];else{for(var t=Array(s.length),v=0;v<t.length;v++)t[v]=s[v];s=t}var y=-1==c?c:n[e].findPosition(c),z=-1==f?f:n[e].findPosition(f);m[e]=0;D[e]=0;t=s.length;for(v=0;v<s.length;v++)s[v].end<y||s[v].begin>z||null!=a&&!jalview.analysis.AlignmentSorter.containsIgnoreCase(s[v].type,
+a)||null!=b&&null!=s[v].getFeatureGroup()&&!jalview.analysis.AlignmentSorter.containsIgnoreCase(s[v].getFeatureGroup(),b)?(s[v]=null,t--):!g&&!Float.isNaN(s[v].getScore())&&(0==m[e]&&u++,m[e]++,x[e]=!0,D[e]+=s[v].getScore());p[e]=y=Array(t);if(0<t){for(v=t=0;v<s.length;v++)null!=s[v]&&(p[e][t++]=s[v]);if(d===jalview.analysis.AlignmentSorter.FEATURE_LABEL){s=Array(y.length);for(t=0;t<s.length;t++)s[t]=null!=y[t].getDescription()?y[t].getDescription():y[t].getType();jalview.util.QuickSort.sort(s,p[e])}}x[e]&&
+(D[e]/=m[e],1==u?r=q=D[e]:(r<D[e]&&(r=D[e]),q>D[e]&&(q=D[e])))}if(d===jalview.analysis.AlignmentSorter.FEATURE_SCORE){if(0==u)return;if(u<n.length)for(e=0;e<n.length;e++)x[e]||(D[e]=r+1+e);jalview.util.QuickSort.sortDouble(D,n)}else if(d===jalview.analysis.AlignmentSorter.FEATURE_DENSITY){a=0.9/(1*n.length);for(e=0;e<n.length;e++)D[e]=0.05+a*e+(null==p[e]?0:1*p[e].length);jalview.util.QuickSort.sortDouble(D,n)}else if(d===jalview.analysis.AlignmentSorter.FEATURE_LABEL)throw Error(jalview.util.MessageManager.getString("error.not_yet_implemented"));
+jalview.analysis.AlignmentSorter.sortByFeatureScoreAscending=null==jalview.analysis.AlignmentSorter.lastSortByFeatureScore||!h.toString().equals(jalview.analysis.AlignmentSorter.lastSortByFeatureScore)?!0:!jalview.analysis.AlignmentSorter.sortByFeatureScoreAscending;jalview.analysis.AlignmentSorter.sortByFeatureScoreAscending?jalview.analysis.AlignmentSorter.setOrder(l,n):jalview.analysis.AlignmentSorter.setReverseOrder(l,n);jalview.analysis.AlignmentSorter.lastSortByFeatureScore=h.toString()},"~A,~A,~N,~N,jalview.datamodel.AlignmentI,~S");
+G(c$,"sortIdAscending",!0,"lastGroupHash",0,"sortGroupAscending",!0,"lastOrder",null,"sortOrderAscending",!0,"lastTree",null,"sortTreeAscending",!0,"lastSortByScore",null,"sortByScoreAscending",!0,"lastSortByFeatureScore",null,"sortByFeatureScoreAscending",!0,"sortLengthAscending",!1,"FEATURE_SCORE","average_score","FEATURE_LABEL","text","FEATURE_DENSITY","density")});p("jalview.datamodel");q(["jalview.datamodel.ASequenceI"],"jalview.datamodel.SequenceI",null,function(){M(jalview.datamodel,"SequenceI",
+jalview.datamodel.ASequenceI)});p("jalview.datamodel");M(jalview.datamodel,"ASequenceI");p("jalview.util");q(null,"jalview.util.Comparison",["java.util.ArrayList"],function(){c$=B(jalview.util,"Comparison");c$.compare=d(c$,"compare",function(a,b){return jalview.util.Comparison.compare(a,b,0,a.getLength()-1)},"jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");c$.compare=d(c$,"compare",function(a,b,c){a=a.getSequenceAsString();b=b.getSequenceAsString();for(var f=a.length-1,l=b.length-1;jalview.util.Comparison.isGap(a.charAt(c+
+f));)f--;for(;jalview.util.Comparison.isGap(b.charAt(c+l));)l--;var d=0,g=0,h=-1;if(f>l){for(h=0;h<l;h++)a.substring(c+h,c+h+1).equals(b.substring(c+h,c+h+1))&&g++,d++;h=100*(g/f)}else{for(h=0;h<l;h++)a.substring(c+h,c+h+1).equals(b.substring(c+h,c+h+1))&&g++,d++;h=100*(g/l)}return h},"jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~N,~N");c$.PID=d(c$,"PID",function(a,b){return jalview.util.Comparison.PID(a,b,0,a.length)},"~S,~S");c$.PID=d(c$,"PID",function(a,b,c,f){return jalview.util.Comparison.PID(a,
+b,c,f,!0,!1)},"~S,~S,~N,~N");c$.PID=d(c$,"PID",function(a,b,c,f,l,d){var g=Math.min(a.length,b.length);f<g&&(g=f);g<c&&(c=g-1);f=g-c;for(var h=0,e,n,x=c;x<g;x++)c=a.charAt(x),e=b.charAt(x),n=jalview.util.Comparison.isGap(c)||jalview.util.Comparison.isGap(e),"a"<=c&&"z">=c&&(c=String.fromCharCode(c.charCodeAt(0)-32)),"a"<=e&&"z">=e&&(e=String.fromCharCode(e.charCodeAt(0)-32)),c!=e&&(n?d?f--:l||h++:h++);return 1>f?0:100*(f-h)/f},"~S,~S,~N,~N,~B,~B");c$.isGap=d(c$,"isGap",function(a){return"-"==a||"."==
+a||" "==a?!0:!1},"~S");c$.isNucleotide=d(c$,"isNucleotide",function(a){if(null==a)return!1;for(var b=0,c=0,f,l=0;l<a.length&&((f=a[l])||1);l++)if(null!=f)for(var d,g=0,h=f.getSequence();g<h.length&&((d=h[g])||1);g++)"a"<=d&&"z">=d&&(d=String.fromCharCode(d.charCodeAt(0)-32)),"A"==d||"G"==d||"C"==d||"T"==d||"U"==d?b++:jalview.util.Comparison.isGap(d)||c++;return 100*b>85*(b+c)?!0:!1},"~A");c$.isNucleotide2=d(c$,"isNucleotide2",function(a){if(null==a)return!1;for(var b=new java.util.ArrayList,c,f=0;f<
+a.length&&((c=a[f])||1);f++)for(var l,d=0,g=c;d<g.length&&((l=g[d])||1);d++)b.add(l);a=b.toArray(Array(b.size()));return jalview.util.Comparison.isNucleotide(a)},"~A");G(c$,"EIGHTY_FIVE",85,"TO_UPPER_CASE",32,"GAP_SPACE"," ","GAP_DOT",".","GAP_DASH","-");c$.GapChars=c$.prototype.GapChars=String.instantialize(N(-1,[" ",".","-"]));G(c$,"caseShift",32)});p("jalview.util");q(null,"jalview.util.QuickSort",["java.lang.Float","java.util.Arrays"],function(){c$=B(jalview.util,"QuickSort");c$.sortInt=d(c$,
+"sortInt",function(a,b){jalview.util.QuickSort.sortInt(a,0,a.length-1,b)},"~A,~A");c$.sortFloatObject=d(c$,"sortFloatObject",function(a,b){jalview.util.QuickSort.sortFloat(a,0,a.length-1,b)},"~A,~A");c$.sortDouble=d(c$,"sortDouble",function(a,b){jalview.util.QuickSort.sortDouble(a,0,a.length-1,b)},"~A,~A");c$.sort=d(c$,"sort",function(a,b){jalview.util.QuickSort.stringSort(a,0,a.length-1,b)},"~A,~A");c$.stringSort=d(c$,"stringSort",function(a,b,c,f){var l;b<c&&(l=jalview.util.QuickSort.stringPartition(a,
+b,c,f),jalview.util.QuickSort.stringSort(a,b,l,f),jalview.util.QuickSort.stringSort(a,l+1,c,f))},"~A,~N,~N,~A");c$.sortFloat=d(c$,"sortFloat",function(a,b,c,f){var l;b<c&&(l=jalview.util.QuickSort.partitionFloat(a,b,c,f),jalview.util.QuickSort.sortFloat(a,b,l,f),jalview.util.QuickSort.sortFloat(a,l+1,c,f))},"~A,~N,~N,~A");c$.sortInt=d(c$,"sortInt",function(a,b,c,f){var l;b<c&&(l=jalview.util.QuickSort.partitionInt(a,b,c,f),jalview.util.QuickSort.sortInt(a,b,l,f),jalview.util.QuickSort.sortInt(a,l+
+1,c,f))},"~A,~N,~N,~A");c$.partitionFloat=d(c$,"partitionFloat",function(a,b,c,f){var l=a[b];b-=1;for(c+=1;;){do c-=1;while(a[c]>l);do b+=1;while(a[b]<l);if(b<c){var d=a[b];a[b]=a[c];a[c]=d;d=f[b];f[b]=f[c];f[c]=d}else return c}},"~A,~N,~N,~A");c$.partitionInt=d(c$,"partitionInt",function(a,b,c,f){var l=a[b];b-=1;for(c+=1;;){do c-=1;while(a[c]>l);do b+=1;while(a[b]<l);if(b<c){var d=a[b];a[b]=a[c];a[c]=d;d=f[b];f[b]=f[c];f[c]=d}else return c}},"~A,~N,~N,~A");c$.stringPartition=d(c$,"stringPartition",
+function(a,b,c,f){var l=a[b];b-=1;for(c+=1;;){do c-=1;while(0>a[c].compareTo(l));do b+=1;while(0<a[b].compareTo(l));if(b<c){var d=a[b];a[b]=a[c];a[c]=d;d=f[b];f[b]=f[c];f[c]=d}else return c}},"~A,~N,~N,~A");c$.sortFloatChar=d(c$,"sortFloatChar",function(a,b){for(var c=Q(a.length,0),f=N(b.length,"\x00"),l=0,d=a.length-1,g=0;g<a.length;g++){var h=a[g];0<h?(c[d]=h,f[d]=b[g],d--):(c[l]=h,f[l]=b[g],l++)}System.arraycopy(c,0,a,0,l);System.arraycopy(f,0,b,0,l);l!=a.length&&(c=java.util.Arrays.copyOfRange(c,
+l,c.length),f=java.util.Arrays.copyOfRange(f,l,f.length),jalview.util.QuickSort.externalSortFloat(c,f),System.arraycopy(c,0,a,l,c.length),System.arraycopy(f,0,b,l,f.length))},"~A,~A");c$.externalSortFloat=d(c$,"externalSortFloat",function(a,b){var c=a.length,f=jalview.util.QuickSort.makeIndexArray(c);java.util.Arrays.sort(f,new jalview.util.QuickSort.FloatComparator(a));for(var l=Q(c,0),d=N(b.length,"\x00"),g=0;g<c;g++)l[g]=a[f[g]],d[g]=b[f[g]];System.arraycopy(l,0,a,0,c);System.arraycopy(d,0,b,0,
+b.length)},"~A,~A");c$.makeIndexArray=d(c$,"makeIndexArray",function(a){for(var b=Array(a),c=0;c<a;c++)b[c]=new Integer(c);return b},"~N");c$.sortIntChar=d(c$,"sortIntChar",function(a,b){for(var c=w(a.length,0),f=N(b.length,"\x00"),l=0,d=a.length-1,g=0;g<a.length;g++){var h=a[g];0<h?(c[d]=h,f[d]=b[g],d--):(c[l]=h,f[l]=b[g],l++)}System.arraycopy(c,0,a,0,l);System.arraycopy(f,0,b,0,l);l!=a.length&&(c=java.util.Arrays.copyOfRange(c,l,c.length),f=java.util.Arrays.copyOfRange(f,l,f.length),jalview.util.QuickSort.externalSortInt(c,
+f),System.arraycopy(c,0,a,l,c.length),System.arraycopy(f,0,b,l,f.length))},"~A,~A");c$.externalSortInt=d(c$,"externalSortInt",function(a,b){var c=a.length,f=jalview.util.QuickSort.makeIndexArray(c);java.util.Arrays.sort(f,new jalview.util.QuickSort.IntComparator(a));for(var l=w(c,0),d=N(b.length,"\x00"),g=0;g<c;g++)l[g]=a[f[g]],d[g]=b[f[g]];System.arraycopy(l,0,a,0,c);System.arraycopy(d,0,b,0,b.length)},"~A,~A");A(self.c$);c$=s(function(){this.values=null;r(this,arguments)},jalview.util.QuickSort,
+"FloatComparator",null,java.util.Comparator);m(c$,function(a){this.values=a},"~A");e(c$,"compare",function(a,b){return Float.compare(this.values[a.intValue()],this.values[b])},"Integer,Integer");c$=z();A(self.c$);c$=s(function(){this.values=null;r(this,arguments)},jalview.util.QuickSort,"IntComparator",null,java.util.Comparator);m(c$,function(a){this.values=a},"~A");e(c$,"compare",function(a,b){return Integer.compare(this.values[a],this.values[b])},"Integer,Integer");c$=z()});p("jalview.analysis");
+q(["java.lang.Enum","java.util.HashMap"],"jalview.analysis.AnnotationSorter",["jalview.analysis.AlignmentUtils","java.lang.UnsupportedOperationException","java.util.Arrays"],function(){c$=s(function(){this.alignment=null;this.showAutocalcAbove=!1;this.noSort=this.byLabelAndSequence=this.bySequenceAndLabel=this.sequenceIndices=null;r(this,arguments)},jalview.analysis,"AnnotationSorter");J(c$,function(){this.sequenceIndices=new java.util.HashMap;this.bySequenceAndLabel=(H("jalview.analysis.AnnotationSorter$1")?
+0:jalview.analysis.AnnotationSorter.$AnnotationSorter$1$(),C(jalview.analysis.AnnotationSorter$1,this,null));this.byLabelAndSequence=(H("jalview.analysis.AnnotationSorter$2")?0:jalview.analysis.AnnotationSorter.$AnnotationSorter$2$(),C(jalview.analysis.AnnotationSorter$2,this,null));this.noSort=(H("jalview.analysis.AnnotationSorter$3")?0:jalview.analysis.AnnotationSorter.$AnnotationSorter$3$(),C(jalview.analysis.AnnotationSorter$3,this,null))});m(c$,function(a,b){this.alignment=a;this.showAutocalcAbove=
+b},"jalview.datamodel.AlignmentI,~B");d(c$,"sort",function(a,b){if(null!=a){this.saveSequenceIndices(a);var c=this.getComparator(b);null!=a&&java.util.Arrays.sort(a,c)}},"~A,jalview.analysis.AnnotationSorter.SequenceAnnotationOrder");d(c$,"saveSequenceIndices",function(a){this.sequenceIndices.clear();for(var b,c=0;c<a.length&&((b=a[c])||1);c++){var f=b.sequenceRef;if(null!=f){var l=jalview.analysis.AlignmentUtils.getSequenceIndex(this.alignment,f);this.sequenceIndices.put(f,new Integer(l))}}},"~A");
+d(c$,"getComparator",function(a){if(null==a)return this.noSort;switch(a){case jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.NONE:return this.noSort;case jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.SEQUENCE_AND_LABEL:return this.bySequenceAndLabel;case jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.LABEL_AND_SEQUENCE:return this.byLabelAndSequence;default:throw new UnsupportedOperationException(a.toString());}},"jalview.analysis.AnnotationSorter.SequenceAnnotationOrder");
+d(c$,"compareLabels",function(a,b){if(null==a||null==b)return 0;var c=a.label,f=b.label;return null==c&&null==f?0:null==c?-1:null==f?1:c.toUpperCase().compareTo(f.toUpperCase())},"jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");d(c$,"compareSequences",function(a,b){var c=a.sequenceRef,f=b.sequenceRef;if(null==c&&null==f)return 0;if(null==c)return this.showAutocalcAbove?-1:1;if(null==f)return this.showAutocalcAbove?1:-1;c=this.sequenceIndices.get(c).intValue();f=this.sequenceIndices.get(f).intValue();
+return c==f?0:-1==c?-1:-1==f?1:Integer.compare(c,f)},"jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");c$.$AnnotationSorter$1$=function(){A(self.c$);c$=L(jalview.analysis,"AnnotationSorter$1",null,java.util.Comparator);e(c$,"compare",function(a,b){if(null==a&&null==b)return 0;if(null==a)return-1;if(null==b)return 1;if(null==a.sequenceRef&&null==b.sequenceRef)return 0;var c=this.b$["jalview.analysis.AnnotationSorter"].compareSequences(a,b);return 0==c?this.b$["jalview.analysis.AnnotationSorter"].compareLabels(a,
+b):c},"jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");c$=z()};c$.$AnnotationSorter$2$=function(){A(self.c$);c$=L(jalview.analysis,"AnnotationSorter$2",null,java.util.Comparator);e(c$,"compare",function(a,b){if(null==a&&null==b)return 0;if(null==a)return-1;if(null==b)return 1;if(null==a.sequenceRef&&null==b.sequenceRef)return 0;if(null==a.sequenceRef)return this.b$["jalview.analysis.AnnotationSorter"].showAutocalcAbove?-1:1;if(null==b.sequenceRef)return this.b$["jalview.analysis.AnnotationSorter"].showAutocalcAbove?
+1:-1;var c=this.b$["jalview.analysis.AnnotationSorter"].compareLabels(a,b);return 0==c?this.b$["jalview.analysis.AnnotationSorter"].compareSequences(a,b):c},"jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");c$=z()};c$.$AnnotationSorter$3$=function(){A(self.c$);c$=L(jalview.analysis,"AnnotationSorter$3",null,java.util.Comparator);e(c$,"compare",function(a,b){if(null!=a&&null!=b){if(null==a.sequenceRef&&null!=b.sequenceRef)return this.b$["jalview.analysis.AnnotationSorter"].showAutocalcAbove?
+-1:1;if(null!=a.sequenceRef&&null==b.sequenceRef)return this.b$["jalview.analysis.AnnotationSorter"].showAutocalcAbove?1:-1}return 0},"jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation");c$=z()};A(self.c$);c$=s(function(){this.description=null;r(this,arguments)},jalview.analysis.AnnotationSorter,"SequenceAnnotationOrder",Enum);m(c$,function(a){this.description=a},"~S");e(c$,"toString",function(){return this.description});c$.forDescription=d(c$,"forDescription",function(a){for(var b,
+c=0,f=jalview.analysis.AnnotationSorter.SequenceAnnotationOrder.values();c<f.length&&((b=f[c])||1);c++)if(b.toString().equals(a))return b;return null},"~S");R(c$,"SEQUENCE_AND_LABEL",0,["Sequence"]);R(c$,"LABEL_AND_SEQUENCE",1,["Label"]);R(c$,"NONE",2,["No sort"]);c$=z()});p("jalview.analysis");q(null,"jalview.analysis.AlignmentUtils","jalview.analysis.CodonComparator jalview.datamodel.AlignedCodonFrame $.Alignment $.AlignmentAnnotation $.DBRefEntry $.DBRefSource $.FeatureProperties $.SearchResults $.Sequence jalview.schemes.ResidueProperties jalview.util.DBRefUtils $.MapList $.MappingUtils java.lang.StringBuilder java.util.ArrayList $.Arrays $.HashMap $.HashSet $.LinkedHashMap $.LinkedHashSet $.TreeMap".split(" "),
+function(){c$=B(jalview.analysis,"AlignmentUtils");c$.expandContext=d(c$,"expandContext",function(a,b){for(var c=new java.util.ArrayList,f=0,l,d=a.getSequences().iterator();d.hasNext()&&((l=d.next())||1);){var g=l.deriveSequence(),h=g.getStart()-1;h>f&&g.getDatasetSequence().getStart()<l.getStart()&&(f=h);c.add(g)}-1<b&&(f=Math.min(f,b));for(d=c.iterator();d.hasNext()&&((l=d.next())||1);){for(var e=l;null!=e.getDatasetSequence();)e=e.getDatasetSequence();var g=l.findPosition(l.getStart()+l.getLength()),
+h=l.getStart()-e.getStart(),n=e.getEnd()-g,x=f-h;0<=b&&(b<h&&(x=f-b,h=b),b<=n&&(n=b-1));for(var u=String.instantialize(e.getSequence(l.getStart()-1-h,l.getStart()-1)).toLowerCase().toCharArray(),e=String.instantialize(e.getSequence(g-1,g+n)).toLowerCase().toCharArray(),n=l.getSequence(),D=N(x+u.length+e.length+n.length,"\x00"),m=a.getGapCharacter(),p=0;p<x;p++)D[p]=m;System.arraycopy(u,0,D,p,u.length);System.arraycopy(n,0,D,p+u.length,n.length);System.arraycopy(e,0,D,p+n.length+u.length,e.length);
+l.setSequence(String.instantialize(D));l.setStart(l.getStart()-h);l.setEnd(g+e.length)}f=new jalview.datamodel.Alignment(c.toArray([]));for(d=c.iterator();d.hasNext()&&((l=d.next())||1);)if(null!=l.getAnnotation())for(var q,c=0,g=l.getAnnotation();c<g.length&&((q=g[c])||1);c++)q.adjustForAlignment(),f.addAnnotation(q);f.setDataset(a.getDataset());return f},"jalview.datamodel.AlignmentI,~N");c$.getSequenceIndex=d(c$,"getSequenceIndex",function(a,b){for(var c=-1,f=0,l,d=a.getSequences().iterator();d.hasNext()&&
+((l=d.next())||1);){if(l===b){c=f;break}f++}return c},"jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI");c$.getSequencesByName=d(c$,"getSequencesByName",function(a){var b=new java.util.LinkedHashMap,c;for(a=a.getSequences().iterator();a.hasNext()&&((c=a.next())||1);){var f=c.getName();if(null!=f){var l=b.get(f);null==l&&(l=new java.util.ArrayList,b.put(f,l));l.add(c)}}return b},"jalview.datamodel.AlignmentI");c$.mapProteinToCdna=d(c$,"mapProteinToCdna",function(a,b){if(null==a||null==b)return!1;
+var c=new java.util.HashSet,f=new java.util.HashSet,l=jalview.analysis.AlignmentUtils.mapProteinToCdna(a,b,c,f,!0);return l=(new Boolean(l|jalview.analysis.AlignmentUtils.mapProteinToCdna(a,b,c,f,!1))).valueOf()},"jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");c$.mapProteinToCdna=d(c$,"mapProteinToCdna",function(a,b,c,f,l){for(var d=!1,g,h=a.getSequences().iterator();h.hasNext()&&((g=h.next())||1);){for(var e=!1,n=new jalview.datamodel.AlignedCodonFrame,x,u=b.getSequences().iterator();u.hasNext()&&
+((x=u.next())||1);)if(!l||jalview.analysis.AlignmentUtils.haveCrossRef(g,x))if((l||!f.contains(g)&&!c.contains(x))&&!jalview.analysis.AlignmentUtils.mappingExists(a.getCodonFrames(),g.getDatasetSequence(),x.getDatasetSequence())){var D=jalview.analysis.AlignmentUtils.mapProteinToCdna(g,x);null!=D&&(n.addMap(x,g,D),e=d=!0,c.add(x),f.add(g))}e&&a.addCodonFrame(n)}return d},"jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI,java.util.Set,java.util.Set,~B");c$.mappingExists=d(c$,"mappingExists",
+function(a,b,c){if(null!=a){var f;for(a=a.iterator();a.hasNext()&&((f=a.next())||1);)if(c===f.getDnaForAaSeq(b))return!0}return!1},"java.util.Set,jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");c$.mapProteinToCdna=d(c$,"mapProteinToCdna",function(a,b){var c=a.getDatasetSequence(),c=null!=c?c.getSequence():a.getSequence(),f=b.getDatasetSequence(),f=null!=f?f.getSequence():b.getSequence();if(null==c||null==f)return null;var l=3*c.length,d=f.length,g=1,h=d,e=c.length;if(d!=l&&2<d)for(var n=
+String.valueOf(f,d-3,3).toUpperCase(),x,u=jalview.schemes.ResidueProperties.STOP.iterator();u.hasNext()&&((x=u.next())||1);)if(n.equals(x)){h-=3;d-=3;break}d!=l&&(2<d&&String.valueOf(f,0,3).toUpperCase().equals(jalview.schemes.ResidueProperties.START))&&(g+=3,d-=3);return d!=l||!jalview.analysis.AlignmentUtils.translatesAs(f,g-1,c)?null:new jalview.util.MapList(w(-1,[g,h]),w(-1,[1,e]),3,1)},"jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");c$.translatesAs=d(c$,"translatesAs",function(a,b,
+c){for(var f=0;b<a.length-2&&f<c.length;b+=3,f++){var l=String.valueOf(a,b,3),l=jalview.schemes.ResidueProperties.codonTranslate(l),d=c[f];if(!((null==l||"STOP".equals(l))&&"X"==d))if(null==l||d!=l.charAt(0))return!1}return f==c.length},"~A,~N,~A");c$.alignSequenceAs=d(c$,"alignSequenceAs",function(a,b,c,f,l){var d=b.getCodonFrame(a);if(null==d||d.isEmpty())return!1;for(var g=null,h=null,e,d=d.iterator();d.hasNext()&&((e=d.next())||1);)if(g=e.findAlignedSequence(a.getDatasetSequence(),b),null!=g){h=
+e;break}if(null==g)return!1;jalview.analysis.AlignmentUtils.alignSequenceAs(a,g,h,c,b.getGapCharacter(),f,l);return!0},"jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,~S,~B,~B");c$.alignSequenceAs=d(c$,"alignSequenceAs",function(a,b,c,f,l,d,g){var h=a.getSequence(),e=b.getSequence(),n=new StringBuilder(2*h.length),x=0,u=0,D=0,m=f.charAt(0);f=f.length;for(var p=0,q=!1,s,r=0;r<e.length&&((s=e[r])||1);r++)if(s==l)p+=f;else{u++;var t=c.getMappedRegion(a,b,u);if(null==t){System.err.println("Can't align: no codon mapping to residue "+
+u+"("+s+")");return}for(var v=t[0],t=t[t.length-1],w=new StringBuilder,y=0;D<t&&x<h.length;){var z=h[x++];if(z!=m){D++;if(D<v)g&&0<w.length()&&(n.append(w.toString()),y+=w.length(),new StringBuilder),y++,q=!1;else{for(var A=D==v,p=jalview.analysis.AlignmentUtils.calculateGapsToInsert(d,g,p,q,w.length(),y,A),q=0;q<p;q++)n.append(m);p=0;q=!0}n.append(z);w=new StringBuilder}else q&&d?w.append(m):!q&&g&&w.append(m)}}for(;x<h.length;)z=h[x++],(z!=m||g)&&n.append(z);a.setSequence(String.instantialize(n))},
+"jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,jalview.datamodel.AlignedCodonFrame,~S,~S,~B,~B");c$.calculateGapsToInsert=d(c$,"calculateGapsToInsert",function(a,b,c,f,l,d,g){var h=0;if(g){f&&!a&&(l=0);if(!f&&(!a||!b))l=0;h=f?Math.max(c,l):d+l<=c?c-d:Math.min(d+l-c,l)}else a||(l=0),h=Math.max(c,l);return h},"~B,~B,~N,~B,~N,~N,~B");c$.getAlignedTranslation=d(c$,"getAlignedTranslation",function(a,b,c){var f=new java.util.ArrayList,l;for(a=a.iterator();a.hasNext()&&((l=a.next())||1);){var d=
+jalview.analysis.AlignmentUtils.getAlignedTranslation(l,b,c);f.addAll(d)}return f},"java.util.List,~S,java.util.Set");c$.getAlignedTranslation=d(c$,"getAlignedTranslation",function(a,b,c){var f=new java.util.ArrayList,l;for(c=c.iterator();c.hasNext()&&((l=c.next())||1);)if(l.involvesSequence(a)){var d=jalview.analysis.AlignmentUtils.getAlignedTranslation(a,b,l);null!=d&&f.add(d)}return f},"jalview.datamodel.SequenceI,~S,java.util.Set");c$.getAlignedTranslation=d(c$,"getAlignedTranslation",function(a,
+b,c){var f=String.valueOf(b),l=!1,d=1;null!=c.getDnaForAaSeq(a)?(l=!0,f=String.valueOf(N(-1,[b,b,b]))):(c.getAaForDnaSeq(a),d=3);for(var l=new StringBuilder(a.getLength()*(l?3:1)),g=0,h=w(d,0),e=0,n=0,x=!0,u=new jalview.datamodel.Sequence("",""),D,m=0,p=a.getSequence();m<p.length&&((D=p[m])||1);m++)if(D==b)n++,n>=d&&(l.append(f),n=0);else{h[e++]=g+1;if(e==d){for(var e=new jalview.datamodel.SearchResults,q,s=0,r=h;s<r.length&&((q=r[s])||1);s++)c.markMappedRegion(a,q,e);l.append(e.toString());x&&(x=
+!1,e=e.getResultSequence(0),u.setName(e.getName()),u.setDescription(e.getDescription()),u.setDatasetSequence(e));e=0}g++}u.setSequence(l.toString());return u},"jalview.datamodel.SequenceI,~S,jalview.datamodel.AlignedCodonFrame");c$.alignProteinAsDna=d(c$,"alignProteinAsDna",function(a,b){for(var c=a.getCodonFrames(),f=new java.util.TreeMap(new jalview.analysis.CodonComparator),l,d=b.getSequences().iterator();d.hasNext()&&((l=d.next())||1);)for(var g,h=c.iterator();h.hasNext()&&((g=h.next())||1);){var e=
+g.getMappingForSequence(l),n=g.findAlignedSequence(l.getDatasetSequence(),a);null!=n&&jalview.analysis.AlignmentUtils.addCodonPositions(l,n,a.getGapCharacter(),e,f)}return jalview.analysis.AlignmentUtils.alignProteinAs(a,f)},"jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");c$.alignProteinAs=d(c$,"alignProteinAs",function(a,b){var c=b.size(),c=N(c,"\x00");java.util.Arrays.fill(c,a.getGapCharacter());for(var c=String.valueOf(c),f,l=a.getSequences().iterator();l.hasNext()&&((f=l.next())||
+1);)f.setSequence(c);f=0;for(var d,c=b.keySet().iterator();c.hasNext()&&((d=c.next())||1);){for(var g,l=b.get(d).entrySet().iterator();l.hasNext()&&((g=l.next())||1);)g.getKey().getSequence()[f]=g.getValue().charAt(0);f++}return 0},"jalview.datamodel.AlignmentI,java.util.Map");c$.addCodonPositions=d(c$,"addCodonPositions",function(a,b,c,f,l){for(a=f.getCodonIterator(a,c);a.hasNext();)c=a.next(),f=l.get(c),null==f&&(f=new java.util.HashMap,l.put(c,f)),f.put(b,c.product)},"jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~S,jalview.datamodel.Mapping,java.util.Map");
+c$.isMappable=d(c$,"isMappable",function(a,b){if(a.isNucleotide()==b.isNucleotide())return!1;for(var c=a.isNucleotide()?a:b,f=c===a?b:a,l=f.getCodonFrames(),d,c=c.getSequences().iterator();c.hasNext()&&((d=c.next())||1);)for(var g,h=f.getSequences().iterator();h.hasNext()&&((g=h.next())||1);)if(jalview.analysis.AlignmentUtils.isMappable(d,g,l))return!0;return!1},"jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");c$.isMappable=d(c$,"isMappable",function(a,b,c){a=null==a.getDatasetSequence()?
+a:a.getDatasetSequence();b=null==b.getDatasetSequence()?b:b.getDatasetSequence();var f;for(c=c.iterator();c.hasNext()&&((f=c.next())||1);)if(b===f.getAaForDnaSeq(a))return!0;return null!=jalview.analysis.AlignmentUtils.mapProteinToCdna(b,a)},"jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,java.util.Set");c$.findAddableReferenceAnnotations=d(c$,"findAddableReferenceAnnotations",function(a,b,c,f){if(null!=a){var l;for(a=a.iterator();a.hasNext()&&((l=a.next())||1);){var d=l.getDatasetSequence();
+if(null!=d){var g=d.getAnnotation();if(null!=g){for(var d=new java.util.ArrayList,h,e=0;e<g.length&&((h=g[e])||1);e++)f.findAnnotations(l,h.getCalcId(),h.label).iterator().hasNext()||(d.add(h),null!=b&&b.put(h.getCalcId(),h.label));d.isEmpty()||c.put(l,d)}}}}},"java.util.List,java.util.Map,java.util.Map,jalview.datamodel.AlignmentI");c$.addReferenceAnnotations=d(c$,"addReferenceAnnotations",function(a,b,c){for(var f,l=a.keySet().iterator();l.hasNext()&&((f=l.next())||1);)for(var d,g=a.get(f).iterator();g.hasNext()&&
+((d=g.next())||1);){var h=new jalview.datamodel.AlignmentAnnotation(d),e=0,n=d.annotations.length;null!=c&&(e=c.getStartRes(),n=c.getEndRes());h.restrict(e,n);f.hasAnnotation(d)||f.addAlignmentAnnotation(h);h.adjustForAlignment();b.addAnnotation(h);h.visible=!0}},"java.util.Map,jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");c$.showOrHideSequenceAnnotations=d(c$,"showOrHideSequenceAnnotations",function(a,b,c,f,l){var d,g=0;for(a=a.getAlignmentAnnotation();g<a.length&&((d=a[g])||1);g++)if(f||
+b.contains(d.label))if(null!=d.sequenceRef&&(null==c||c.contains(d.sequenceRef)))d.visible=l},"jalview.datamodel.AlignmentI,java.util.Collection,java.util.List,~B,~B");c$.haveCrossRef=d(c$,"haveCrossRef",function(a,b){return jalview.analysis.AlignmentUtils.hasCrossRef(a,b)||jalview.analysis.AlignmentUtils.hasCrossRef(b,a)},"jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");c$.hasCrossRef=d(c$,"hasCrossRef",function(a,b){if(null==a||null==b)return!1;var c=b.getName(),f=a.getDBRef();if(null!=
+f)for(var l,d=0;d<f.length&&((l=f[d])||1);d++)if((l.getSource()+"|"+l.getAccessionId()).equalsIgnoreCase(c))return!0;return!1},"jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");c$.makeExonAlignment=d(c$,"makeExonAlignment",function(a,b){for(var c=new java.util.LinkedHashSet,f=new java.util.ArrayList,l,d=0;d<a.length&&((l=a[d])||1);d++)for(var g=l.getDatasetSequence(),h,e=jalview.util.MappingUtils.findMappingsForSequence(g,b).iterator();e.hasNext()&&((h=e.next())||1);){var n=new jalview.datamodel.AlignedCodonFrame,
+x=jalview.analysis.AlignmentUtils.makeExonSequences(g,h,n);x.isEmpty()||(f.addAll(x),c.add(n))}f=new jalview.datamodel.Alignment(f.toArray(Array(f.size())));f.setDataset(null);b.clear();b.addAll(c);return f},"~A,java.util.Set");c$.makeExonSequences=d(c$,"makeExonSequences",function(a,b,c){var f=new java.util.ArrayList,l=b.getMappingsForSequence(a);b=a.getSequence();for(var d,l=l.iterator();l.hasNext()&&((d=l.next())||1);){for(var g=new StringBuilder(a.getLength()),h=d.getMap().getFromRanges(),e,n=
+h.iterator();n.hasNext()&&((e=n.next())||1);)for(var x=e[0];x<=e[1];x++)g.append(b[x-1]);var n=new jalview.datamodel.Sequence(a.getName(),g.toString()),x=jalview.datamodel.FeatureProperties.getCodingFeature(jalview.datamodel.DBRefSource.EMBL),u=jalview.util.DBRefUtils.selectRefs(d.getTo().getDBRef(),jalview.datamodel.DBRefSource.CODINGDBS);if(null!=u)for(var D,m=0;m<u.length&&((D=u[m])||1);m++)n.addDBRef(new jalview.datamodel.DBRefEntry(D)),x=D.getAccessionId();n.setName(n.getName()+"|"+x);n.createDatasetSequence();
+x=new java.util.ArrayList;x.add(w(-1,[1,g.length()]));g=new jalview.util.MapList(x,d.getMap().getToRanges(),3,1);c.addMap(n.getDatasetSequence(),d.getTo(),g);h=new jalview.util.MapList(h,x,1,1);c.addMap(a,n.getDatasetSequence(),h);f.add(n)}return f},"jalview.datamodel.SequenceI,jalview.datamodel.AlignedCodonFrame,jalview.datamodel.AlignedCodonFrame")});p("jalview.analysis");c$=B(jalview.analysis,"CodonComparator",null,java.util.Comparator);e(c$,"compare",function(a,b){if(null==a||null==b||a.equals(b))return 0;
+if(a.pos1<b.pos1&&a.pos3<=b.pos3)return-1;if(b.pos1<a.pos1&&b.pos3<=a.pos3||a.pos3>b.pos3&&a.pos1>=b.pos1)return 1;if(b.pos3>a.pos3&&b.pos1>=a.pos1)return-1;if(a.pos1==b.pos1&&a.pos3==b.pos3)return Integer.compare(a.pos2,b.pos2);var c=Integer.compare(a.pos2,b.pos2);return 0!=c?c:Integer.compare(a.pos1,b.pos1)},"jalview.datamodel.AlignedCodon,jalview.datamodel.AlignedCodon");p("jalview.datamodel");q(null,"jalview.datamodel.AlignedCodonFrame",["jalview.datamodel.Mapping","jalview.util.MappingUtils",
+"java.util.ArrayList"],function(){c$=s(function(){this.dnaToProt=this.dnaSeqs=null;r(this,arguments)},jalview.datamodel,"AlignedCodonFrame");m(c$,function(){});d(c$,"addMap",function(a,b,c){var f=1;null!=this.dnaSeqs&&(f=this.dnaSeqs.length+1);var l=Array(f),d=Array(f);null!=this.dnaSeqs&&(System.arraycopy(this.dnaSeqs,0,l,0,this.dnaSeqs.length),System.arraycopy(this.dnaToProt,0,d,0,this.dnaSeqs.length));this.dnaSeqs=l;this.dnaToProt=d;f--;this.dnaSeqs[f]=null==a.getDatasetSequence()?a:a.getDatasetSequence();
+a=new jalview.datamodel.Mapping(c);a.to=null==b.getDatasetSequence()?b:b.getDatasetSequence();this.dnaToProt[f]=a},"jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,jalview.util.MapList");d(c$,"getdnaSeqs",function(){return this.dnaSeqs});d(c$,"getAaSeqs",function(){if(null==this.dnaToProt)return null;for(var a=Array(this.dnaToProt.length),b=0;b<this.dnaToProt.length;b++)a[b]=this.dnaToProt[b].to;return a});d(c$,"getdnaToProt",function(){if(null==this.dnaToProt)return null;for(var a=Array(this.dnaToProt.length),
+b=0;b<this.dnaToProt.length;b++)a[b]=this.dnaToProt[b].map;return a});d(c$,"getProtMappings",function(){return this.dnaToProt});d(c$,"getMappingForSequence",function(a){if(null==this.dnaSeqs)return null;var b=a.getDatasetSequence(),b=null!=b?b:a;for(a=0;a<this.dnaSeqs.length;a++)if(this.dnaSeqs[a]===b||this.dnaToProt[a].to===b)return this.dnaToProt[a];return null},"jalview.datamodel.SequenceI");d(c$,"getAaForDnaSeq",function(a){if(null==this.dnaSeqs)return null;for(var b=a.getDatasetSequence(),c=
+0;c<this.dnaSeqs.length;c++)if(this.dnaSeqs[c]===a||this.dnaSeqs[c]===b)return this.dnaToProt[c].to;return null},"jalview.datamodel.SequenceI");d(c$,"getDnaForAaSeq",function(a){if(null==this.dnaToProt)return null;for(var b=a.getDatasetSequence(),c=0;c<this.dnaToProt.length;c++)if(this.dnaToProt[c].to===a||this.dnaToProt[c].to===b)return this.dnaSeqs[c];return null},"jalview.datamodel.SequenceI");d(c$,"involvesSequence",function(a){return null!=this.getAaForDnaSeq(a)||null!=this.getDnaForAaSeq(a)},
+"jalview.datamodel.SequenceI");d(c$,"markMappedRegion",function(a,b,c){if(null!=this.dnaToProt)for(var f,l=a.getDatasetSequence(),d=0;d<this.dnaToProt.length;d++)if(this.dnaSeqs[d]===a||this.dnaSeqs[d]===l){if(f=this.dnaToProt[d].map.locateInTo(b,b),null!=f)for(var g=0;g<f.length;g+=2)c.addResult(this.dnaToProt[d].to,f[g],f[g+1])}else if(this.dnaToProt[d].to===a||this.dnaToProt[d].to===l)if(f=this.dnaToProt[d].map.locateInFrom(b,b),null!=f)for(g=0;g<f.length;g+=2)c.addResult(this.dnaSeqs[d],f[g],
+f[g+1])},"jalview.datamodel.SequenceI,~N,jalview.datamodel.SearchResults");d(c$,"getDnaPosition",function(a,b){for(var c=null,f=0;f<this.dnaToProt.length;f++)if(this.dnaSeqs[f]===a){c=this.getdnaToProt()[f];break}return null==c?null:c.locateInFrom(b,b)},"jalview.datamodel.SequenceI,~N");d(c$,"findAlignedSequence",function(a,b){if(null!=this.dnaToProt)for(var c=0;c<this.dnaToProt.length;c++)if(this.dnaSeqs[c]===a)for(var f,l=b.getSequences().iterator();l.hasNext()&&((f=l.next())||1);)if(this.dnaToProt[c].to===
+f.getDatasetSequence())return f;if(null!=this.dnaToProt)for(c=0;c<this.dnaToProt.length;c++)if(this.dnaToProt[c].to===a)for(l=b.getSequences().iterator();l.hasNext()&&((f=l.next())||1);)if(this.dnaSeqs[c]===f.getDatasetSequence())return f;return null},"jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI");d(c$,"getMappedRegion",function(a,b,c){a=null==a.getDatasetSequence()?a:a.getDatasetSequence();b=null==b.getDatasetSequence()?b:b.getDatasetSequence();if(null==a||null==b||null==this.dnaToProt)return null;
+for(var f=0;f<this.dnaToProt.length;f++)if(this.dnaSeqs[f]===a&&this.dnaToProt[f].to===b){var l=this.dnaToProt[f].map.locateInFrom(c,c);if(null!=l)return l}return null},"jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~N");d(c$,"getMappedCodon",function(a,b){if(null==this.dnaToProt)return null;for(var c=null,f=null,l=0;l<this.dnaToProt.length;l++)if(this.dnaToProt[l].to===a){c=this.getdnaToProt()[l];f=this.dnaSeqs[l].getSequence();break}if(null==c)return null;c=c.locateInFrom(b,b);if(null==
+c)return null;c=jalview.util.MappingUtils.flattenRanges(c);return N(-1,[f[c[0]-1],f[c[1]-1],f[c[2]-1]])},"jalview.datamodel.SequenceI,~N");d(c$,"getMappingsForSequence",function(a){var b=new java.util.ArrayList;if(null==this.dnaSeqs)return b;var c=new java.util.ArrayList,f=a.getDatasetSequence(),f=null!=f?f:a;for(a=0;a<this.dnaSeqs.length;a++){var l=this.dnaToProt[a];if((this.dnaSeqs[a]===f||l.to===f)&&!c.contains(l.to))b.add(l),c.add(l.to)}return b},"jalview.datamodel.SequenceI")});p("jalview.datamodel");
+q(["java.util.Iterator"],"jalview.datamodel.Mapping","jalview.datamodel.AlignedCodon $.IncompleteCodonException $.SequenceFeature jalview.util.MapList java.util.NoSuchElementException $.Vector".split(" "),function(){c$=s(function(){H("jalview.datamodel.Mapping.AlignedCodonIterator")||jalview.datamodel.Mapping.$Mapping$AlignedCodonIterator$();this.to=this.map=null;r(this,arguments)},jalview.datamodel,"Mapping");m(c$,function(a){this.map=a},"jalview.util.MapList");m(c$,function(a,b){this.construct(b);
+this.to=a},"jalview.datamodel.SequenceI,jalview.util.MapList");m(c$,function(a,b,c,f,l){this.construct(a,new jalview.util.MapList(b,c,f,l))},"jalview.datamodel.SequenceI,~A,~A,~N,~N");m(c$,function(a){a!==this&&null!=a&&(null!=a.map&&(this.map=new jalview.util.MapList(a.map)),this.to=a.to)},"jalview.datamodel.Mapping");d(c$,"getMap",function(){return this.map});d(c$,"setMap",function(a){this.map=a},"jalview.util.MapList");e(c$,"equals",function(a){return null==a||!v(a,jalview.datamodel.Mapping)?!1:
+a===this?!0:a.to!==this.to||null!=this.map&&null==a.map||null==this.map&&null!=a.map?!1:null==this.map&&null==a.map||this.map.equals(a.map)?!0:!1},"~O");d(c$,"getPosition",function(a){if(null!=this.map){var b=this.map.shiftTo(a);if(null!=b)return b[0]}return a},"~N");d(c$,"getWord",function(a){return null!=this.map?this.map.getToWord(a):null},"~N");d(c$,"getWidth",function(){return null!=this.map?this.map.getFromRatio():1});d(c$,"getMappedWidth",function(){return null!=this.map?this.map.getToRatio():
+1});d(c$,"getMappedPosition",function(a){if(null!=this.map){var b=this.map.shiftFrom(a);if(null!=b)return b[0]}return a},"~N");d(c$,"getMappedWord",function(a){return null!=this.map&&(a=this.map.shiftFrom(a),null!=a)?w(-1,[a[0],a[0]+a[2]*(this.map.getToRatio()-1)]):null},"~N");d(c$,"locateFeature",function(a){if(null!=this.map){var b=this.map.locateInFrom(a.getBegin(),a.getEnd());if(null==b)return null;for(var c=Array(F(b.length/2)),f=0,l=0;f<b.length;f+=2,l++)c[l]=new jalview.datamodel.SequenceFeature(a),
+c[l].setBegin(b[f]),c[l].setEnd(b[f+1]),2<b.length&&c[l].setDescription(a.getDescription()+"\nPart "+(l+1));return c}return E(-1,[a])},"jalview.datamodel.SequenceFeature");d(c$,"locateRange",function(a,b){if(null!=this.map){if(a<=b){if(a=this.map.getToLowest()<a?a:this.map.getToLowest(),b=this.map.getToHighest()>b?b:this.map.getToHighest(),a>b)return null}else if(a=this.map.getToHighest()>a?a:this.map.getToHighest(),b=this.map.getToLowest()<b?b:this.map.getToLowest(),a<b)return null;return this.map.locateInFrom(a,
+b)}return w(-1,[a,b])},"~N,~N");d(c$,"locateMappedRange",function(a,b){if(null!=this.map){if(a<=b){if(a=this.map.getFromLowest()<a?a:this.map.getFromLowest(),b=this.map.getFromHighest()>b?b:this.map.getFromHighest(),a>b)return null}else if(a=this.map.getFromHighest()>a?a:this.map.getFromHighest(),b=this.map.getFromLowest()<b?b:this.map.getFromLowest(),a<b)return null;return this.map.locateInTo(a,b)}return w(-1,[a,b])},"~N,~N");d(c$,"intersectVisContigs",function(a){var b=new jalview.datamodel.Mapping(this);
+if(null!=this.map){for(var c=new java.util.Vector,f=new java.util.Vector,l=0;l<a.length;l+=2){var d=this.locateMappedRange(1+a[l],a[l+1]-1);if(null!=d)for(var g=0;g<d.length;g+=2){c.addElement(w(-1,[d[g],d[g+1]]));for(var h=this.locateRange(d[g],d[g+1]),e=0;e<h.length;e+=2)f.addElement(w(-1,[h[e],h[e+1]]))}}a=w(2*f.size(),0);l=w(2*c.size(),0);g=0;for(h=f.size();g<h;g++)d=f.elementAt(g),a[2*g]=d[0],a[2*g+1]=d[1];g=0;for(h=c.size();g<h;g++)d=c.elementAt(g),l[2*g]=d[0],l[2*g+1]=d[1];b.setMap(new jalview.util.MapList(a,
+l,this.map.getFromRatio(),this.map.getToRatio()))}return b},"~A");d(c$,"getTo",function(){return this.to});d(c$,"setTo",function(a){this.to=a},"jalview.datamodel.SequenceI");d(c$,"finalize",function(){this.to=this.map=null;K(this,jalview.datamodel.Mapping,"finalize",[])});d(c$,"getCodonIterator",function(a,b){return C(jalview.datamodel.Mapping.AlignedCodonIterator,this,null,a.getSequence(),b)},"jalview.datamodel.SequenceI,~S");c$.$Mapping$AlignedCodonIterator$=function(){A(self.c$);c$=s(function(){O(this,
+arguments);this.gap="\x00";this.alignedSeq=null;this.alignedBases=this.alignedColumn=0;this.currentToRange=this.currentFromRange=this.toRanges=this.fromRanges=null;this.toPosition=this.fromPosition=0;r(this,arguments)},jalview.datamodel.Mapping,"AlignedCodonIterator",null,java.util.Iterator);m(c$,function(a,b){this.alignedSeq=a;this.gap=b;this.fromRanges=this.b$["jalview.datamodel.Mapping"].map.getFromRanges().iterator();this.toRanges=this.b$["jalview.datamodel.Mapping"].map.getToRanges().iterator();
+this.fromRanges.hasNext()&&(this.currentFromRange=this.fromRanges.next(),this.fromPosition=this.currentFromRange[0]);this.toRanges.hasNext()&&(this.currentToRange=this.toRanges.next(),this.toPosition=this.currentToRange[0])},"~A,~S");d(c$,"hasNext",function(){return this.fromRanges.hasNext()?!0:null==this.currentFromRange||this.fromPosition>=this.currentFromRange[1]?!1:!0});e(c$,"next",function(){if(!this.hasNext())throw new java.util.NoSuchElementException;var a=this.getNextCodon(),a=this.getAlignedCodon(a),
+b=this.getPeptide();return new jalview.datamodel.AlignedCodon(a[0],a[1],a[2],b)});d(c$,"getPeptide",function(){if(this.toPosition<=this.currentToRange[1]){var a=this.b$["jalview.datamodel.Mapping"].to.getSequence()[this.toPosition-1];this.toPosition++;return String.valueOf(a)}if(!this.toRanges.hasNext())throw new java.util.NoSuchElementException("Ran out of peptide at position "+this.toPosition);this.currentToRange=this.toRanges.next();this.toPosition=this.currentToRange[0];return this.getPeptide()});
+d(c$,"getNextCodon",function(){for(var a=w(3,0),b=0;3>b;)if(this.fromPosition<=this.currentFromRange[1])a[b++]=this.fromPosition++;else{if(!this.fromRanges.hasNext())throw new jalview.datamodel.IncompleteCodonException;this.currentFromRange=this.fromRanges.next();this.fromPosition=this.currentFromRange[0]}return a});d(c$,"getAlignedCodon",function(a){for(var b=w(a.length,0),c=0;c<a.length;c++)b[c]=this.getAlignedColumn(a[c]);return b},"~A");d(c$,"getAlignedColumn",function(a){for(;this.alignedBases<
+a&&this.alignedColumn<this.alignedSeq.length;)this.alignedSeq[this.alignedColumn++]!=this.gap&&this.alignedBases++;return this.alignedColumn-1},"~N");e(c$,"remove",function(){});c$=z()}});p("jalview.datamodel");q(null,"jalview.datamodel.AlignedCodon",["java.lang.IllegalArgumentException","$.StringBuilder"],function(){c$=s(function(){this.pos3=this.pos2=this.pos1=0;this.product=null;r(this,arguments)},jalview.datamodel,"AlignedCodon");m(c$,function(a,b,c){this.construct(a,b,c,null)},"~N,~N,~N");m(c$,
+function(a,b,c,f){this.pos1=a;this.pos2=b;this.pos3=c;this.product=f},"~N,~N,~N,~S");d(c$,"getBaseColumn",function(a){if(1>a||3<a)throw new IllegalArgumentException(Integer.toString(a));return 1==a?this.pos1:2==a?this.pos2:this.pos3},"~N");e(c$,"equals",function(a){return null==a?!0:!v(a,jalview.datamodel.AlignedCodon)?!1:this.pos1==a.pos1&&this.pos2==a.pos2&&this.pos3==a.pos3},"~O");e(c$,"toString",function(){var a=new StringBuilder;a.append("[").append(this.pos1).append(", ").append(this.pos2).append(", ").append(this.pos3).append("]");
+return a.toString()})});p("jalview.datamodel");q(["java.lang.RuntimeException"],"jalview.datamodel.IncompleteCodonException",null,function(){c$=B(jalview.datamodel,"IncompleteCodonException",RuntimeException)});p("jalview.datamodel");q(null,"jalview.datamodel.SequenceFeature",["java.util.Hashtable","$.Vector"],function(){c$=s(function(){this.score=this.end=this.begin=0;this.featureGroup=this.links=this.otherDetails=this.description=this.type=null;r(this,arguments)},jalview.datamodel,"SequenceFeature");
+m(c$,function(){});m(c$,function(a){if(null!=a){this.begin=a.begin;this.end=a.end;this.score=a.score;null!=a.type&&(this.type=String.instantialize(a.type));null!=a.description&&(this.description=String.instantialize(a.description));null!=a.featureGroup&&(this.featureGroup=String.instantialize(a.featureGroup));if(null!=a.otherDetails)try{this.otherDetails=a.otherDetails.clone()}catch(b){if(!y(b,Exception))throw b;}if(null!=a.links&&0<a.links.size()){this.links=new java.util.Vector;for(var c=0,f=a.links.size();c<
+f;c++)this.links.addElement(a.links.elementAt(c))}}},"jalview.datamodel.SequenceFeature");m(c$,function(a,b,c,f,l,d){this.type=a;this.description=b;this.setValue("status",c);this.begin=f;this.end=l;this.featureGroup=d},"~S,~S,~S,~N,~N,~S");m(c$,function(a,b,c,f,l,d){this.type=a;this.description=b;this.begin=c;this.end=f;this.score=l;this.featureGroup=d},"~S,~S,~N,~N,~N,~S");d(c$,"equals",function(a){return this.begin!=a.begin||(this.end!=a.end||this.score!=a.score)||!(this.type+this.description+this.featureGroup).equals(a.type+
+a.description+a.featureGroup)?!1:!0},"jalview.datamodel.SequenceFeature");d(c$,"getBegin",function(){return this.begin});d(c$,"setBegin",function(a){this.begin=a},"~N");d(c$,"getEnd",function(){return this.end});d(c$,"setEnd",function(a){this.end=a},"~N");d(c$,"getType",function(){return this.type});d(c$,"setType",function(a){this.type=a},"~S");d(c$,"getDescription",function(){return this.description});d(c$,"setDescription",function(a){this.description=a},"~S");d(c$,"getFeatureGroup",function(){return this.featureGroup});
+d(c$,"setFeatureGroup",function(a){this.featureGroup=a},"~S");d(c$,"addLink",function(a){null==this.links&&(this.links=new java.util.Vector);this.links.insertElementAt(a,0)},"~S");d(c$,"getScore",function(){return this.score});d(c$,"setScore",function(a){this.score=a},"~N");d(c$,"getValue",function(a){return null==this.otherDetails?null:this.otherDetails.get(a)},"~S");d(c$,"setValue",function(a,b){null!=b&&(null==this.otherDetails&&(this.otherDetails=new java.util.Hashtable),this.otherDetails.put(a,
+b))},"~S,~O");d(c$,"setStatus",function(a){this.setValue("status",a)},"~S");d(c$,"getStatus",function(){if(null!=this.otherDetails){var a=this.otherDetails.get("status");if(null!=a)return String.instantialize(a)}return null});d(c$,"setPosition",function(a){this.end=this.begin=a},"~N");d(c$,"getPosition",function(){return this.begin});d(c$,"getStrand",function(){var a;return null==this.otherDetails||null==(a=this.otherDetails.get("STRAND").toString())?0:a.equals("-")?-1:a.equals("+")?1:0})});p("jalview.util");
+q(["java.util.ArrayList"],"jalview.util.MapList",["java.lang.StringBuilder","java.util.Arrays"],function(){c$=s(function(){this.toShifts=this.fromShifts=null;this.toHighest=this.toLowest=this.fromHighest=this.fromLowest=this.toRatio=this.fromRatio=0;r(this,arguments)},jalview.util,"MapList");J(c$,function(){this.fromShifts=new java.util.ArrayList;this.toShifts=new java.util.ArrayList});e(c$,"equals",function(a){return null==a||!v(a,jalview.util.MapList)?!1:a===this?!0:a.fromRatio!=this.fromRatio||
+a.toRatio!=this.toRatio||null==a.fromShifts||null==a.toShifts?!1:java.util.Arrays.deepEquals(this.fromShifts.toArray(),a.fromShifts.toArray())&&java.util.Arrays.deepEquals(this.toShifts.toArray(),a.toShifts.toArray())},"~O");d(c$,"getFromRanges",function(){return this.fromShifts});d(c$,"getToRanges",function(){return this.toShifts});c$.getRanges=d(c$,"getRanges",function(a){var b=w(2*a.size(),0),c=0,f;for(a=a.iterator();a.hasNext()&&((f=a.next())||1);)b[c++]=f[0],b[c++]=f[1];return b},"java.util.List");
+d(c$,"getFromRatio",function(){return this.fromRatio});d(c$,"getToRatio",function(){return this.toRatio});d(c$,"getFromLowest",function(){return this.fromLowest});d(c$,"getFromHighest",function(){return this.fromHighest});d(c$,"getToLowest",function(){return this.toLowest});d(c$,"getToHighest",function(){return this.toHighest});m(c$,function(a,b,c,f){this.fromRatio=c;this.toRatio=f;this.fromLowest=a[0];this.fromHighest=a[1];for(c=0;c<a.length;c+=2)this.fromLowest=Math.min(this.fromLowest,a[c]),this.fromHighest=
+Math.max(this.fromHighest,a[c+1]),this.fromShifts.add(w(-1,[a[c],a[c+1]]));this.toLowest=b[0];this.toHighest=b[1];for(c=0;c<b.length;c+=2)this.toLowest=Math.min(this.toLowest,b[c]),this.toHighest=Math.max(this.toHighest,b[c+1]),this.toShifts.add(w(-1,[b[c],b[c+1]]))},"~A,~A,~N,~N");m(c$,function(a){this.fromLowest=a.fromLowest;this.fromHighest=a.fromHighest;this.toLowest=a.toLowest;this.toHighest=a.toHighest;this.fromRatio=a.fromRatio;this.toRatio=a.toRatio;if(null!=a.fromShifts)for(var b,c=a.fromShifts.iterator();c.hasNext()&&
+((b=c.next())||1);)this.fromShifts.add(w(-1,[b[0],b[1]]));if(null!=a.toShifts)for(c=a.toShifts.iterator();c.hasNext()&&((b=c.next())||1);)this.toShifts.add(w(-1,[b[0],b[1]]))},"jalview.util.MapList");m(c$,function(a,b,c,f){this.fromShifts=a;this.toShifts=b;this.fromRatio=c;this.toRatio=f;this.fromLowest=2147483647;this.fromHighest=0;var l;for(a=a.iterator();a.hasNext()&&((l=a.next())||1);)this.fromLowest=Math.min(this.fromLowest,l[0]),this.fromHighest=Math.max(this.fromHighest,l[1]);this.toLowest=
+2147483647;this.toHighest=0;for(a=b.iterator();a.hasNext()&&((l=a.next())||1);)this.toLowest=Math.min(this.toLowest,l[0]),this.toHighest=Math.max(this.toHighest,l[1])},"java.util.List,java.util.List,~N,~N");d(c$,"makeFromMap",function(){return this.posMap(this.fromShifts,this.fromRatio,this.toShifts,this.toRatio)});d(c$,"makeToMap",function(){return this.posMap(this.toShifts,this.toRatio,this.fromShifts,this.fromRatio)});d(c$,"posMap",function(a,b,c,f){var l=0,d=a.size();if(l>=d)return null;var g=
+a.get(l++),h=g[0],e=g[1];h>e&&(h=g[1],e=g[0]);for(;l<d;)g=a.get(l++),g[0]<h&&(h=g[0]),g[1]<h&&(h=g[1]),g[0]>e&&(e=g[0]),g[1]>e&&(e=g[1]);for(var d=l=0,g=w(e-h+2,0),n=0;n<g.length;n++){var x=jalview.util.MapList.shift(n+h,a,b,c,f);null!=x&&(0==n?l=d=x[0]:(x[0]<l&&(l=x[0]),x[0]>d&&(d=x[0])));g[n]=x}a=E(-1,[w(-1,[h,e,l,d]),w(e-h+2,0)]);a[0][2]=l;a[0][3]=d;for(n=0;n<g.length;n++)a[1][n]=null!=g[n]?g[n][0]-l:-1;return a},"java.util.List,~N,java.util.List,~N");d(c$,"shiftFrom",function(a){return jalview.util.MapList.shift(a,
+this.fromShifts,this.fromRatio,this.toShifts,this.toRatio)},"~N");d(c$,"shiftTo",function(a){return jalview.util.MapList.shift(a,this.toShifts,this.toRatio,this.fromShifts,this.fromRatio)},"~N");c$.shift=d(c$,"shift",function(a,b,c,f,l){b=jalview.util.MapList.countPos(b,a);if(null==b)return null;a=(b[0]-1)%c;c=1+F((b[0]-1)/c)*l;f=jalview.util.MapList.countToPos(f,c);return null==f?null:w(-1,[f[0],a,f[1]])},"~N,java.util.List,~N,java.util.List,~N");c$.countPos=d(c$,"countPos",function(a,b){for(var c=
+0,f,l=0,d=a.size();l<d;)if(f=a.get(l++),f[0]<=f[1]){if(b>=f[0]&&b<=f[1])return w(-1,[c+b-f[0]+1,1]);c+=f[1]-f[0]+1}else{if(b>=f[1]&&b<=f[0])return w(-1,[c+f[0]-b+1,-1]);c+=f[0]-f[1]+1}return null},"java.util.List,~N");c$.countToPos=d(c$,"countToPos",function(a,b){for(var c=0,f=0,l=0,d=a.size(),g=w(-1,[0,0]);l<d;)if(g=a.get(l++),f=g[1]-g[0],0<=f){if(b<=c+1+f)return w(-1,[b-c-1+g[0],1]);c+=1+f}else{if(b<=c+1-f)return w(-1,[g[0]-(b-c-1),-1]);c+=1-f}return null},"java.util.List,~N");d(c$,"locateInFrom",
+function(a,b){var c=this.shiftTo(a),f=this.shiftTo(b);return jalview.util.MapList.getIntervals(this.fromShifts,c,f,this.fromRatio)},"~N,~N");d(c$,"locateInTo",function(a,b){var c=this.shiftFrom(a),f=this.shiftFrom(b);return jalview.util.MapList.getIntervals(this.toShifts,c,f,this.toRatio)},"~N,~N");c$.getIntervals=d(c$,"getIntervals",function(a,b,c,f){if(null==b||null==c)return null;b=b[0];c=c[0];var l=f-1;f=0;for(var d=a.size(),g,h=0,e=-1,n=-1,x=-1;f<d&&(-1==e||-1==x);)g=a.get(f++),-1<n&&(c=g[0],
+l--),g[0]<=g[1]?(-1==e&&(b>=g[0]&&b<=g[1])&&(e=h),c>=g[0]&&c<=g[1]&&(-1==n&&(n=h),-1!=n&&(c+l<=g[1]?(x=h,c+=l):l-=g[1]-c))):(-1==e&&(b<=g[0]&&b>=g[1])&&(e=h),c<=g[0]&&c>=g[1]&&(-1==n&&(n=h),-1!=n&&(c-l>=g[1]?(x=h,c-=l):l-=c-g[1]))),h++;if(e==x&&-1==x)return null;l=new java.util.ArrayList;if(e<=x){h=f=e;g=a.get(f++);g=w(-1,[g[0],g[1]]);for(h==e&&(g[0]=b);h!=x;)l.add(g),g=a.get(f++),g=w(-1,[g[0],g[1]]),h++}else{for(h=a.size()-1;h>e;)h--;g=a.get(h);g=w(-1,[g[1],g[0]]);for(h==e&&(g[0]=b);--h!=x;)l.add(g),
+g=a.get(h),g=w(-1,[g[1],g[0]])}h==x&&(g[1]=c);l.add(g);a=null;if(null!=l&&0<l.size()){a=w(2*l.size(),0);f=0;d=l.size();for(h=0;f<d;)g=l.get(f),a[h++]=g[0],a[h++]=g[1],l.set(f++,null)}return a},"java.util.List,~A,~A,~N");d(c$,"getToPosition",function(a){var b=this.shiftTo(a);return null!=b?b[0]:a},"~N");d(c$,"getToWord",function(a){a=this.shiftTo(a);return null!=a?w(-1,[a[0],a[0]+a[2]*(this.getFromRatio()-1)]):null},"~N");d(c$,"getMappedPosition",function(a){var b=this.shiftFrom(a);return null!=b?
+b[0]:a},"~N");d(c$,"getMappedWord",function(a){a=this.shiftFrom(a);return null!=a?w(-1,[a[0],a[0]+a[2]*(this.getToRatio()-1)]):null},"~N");d(c$,"getInverse",function(){return new jalview.util.MapList(this.getToRanges(),this.getFromRanges(),this.getToRatio(),this.getFromRatio())});d(c$,"containsEither",function(a,b){return a?this.getFromLowest()>=b.getFromLowest()&&this.getFromHighest()<=b.getFromHighest()||this.getFromLowest()<=b.getFromLowest()&&this.getFromHighest()>=b.getFromHighest():this.getToLowest()>=
+b.getToLowest()&&this.getToHighest()<=b.getToHighest()||this.getToLowest()<=b.getToLowest()&&this.getToHighest()>=b.getToHighest()},"~B,jalview.util.MapList");e(c$,"toString",function(){var a=new StringBuilder(64);a.append("From (").append(this.fromRatio).append(":").append(this.toRatio).append(") [");for(var b,c=this.fromShifts.iterator();c.hasNext()&&((b=c.next())||1);)a.append(" ").append(java.util.Arrays.toString(b));a.append(" ] To [");for(c=this.toShifts.iterator();c.hasNext()&&((b=c.next())||
+1);)a.append(" ").append(java.util.Arrays.toString(b));a.append(" ]");return a.toString()})});p("jalview.util");q(null,"jalview.util.MappingUtils","jalview.analysis.AlignmentSorter jalview.commands.EditCommand $.OrderCommand jalview.datamodel.AlignmentOrder $.ColumnSelection $.SearchResults $.Sequence $.SequenceGroup jalview.util.Comparison $.StringUtils java.util.ArrayList $.Collections $.HashMap".split(" "),function(){c$=B(jalview.util,"MappingUtils");c$.mapCutOrPaste=d(c$,"mapCutOrPaste",function(a,
+b){var c=a.getAction();b&&c.getUndoAction();System.err.println("MappingUtils.mapCutOrPaste not yet implemented")},"jalview.commands.EditCommand.Edit,~B,java.util.List,jalview.commands.EditCommand,java.util.Set");c$.mapEditCommand=d(c$,"mapEditCommand",function(a,b,c,f,l){if(!c.isNucleotide())return null;for(var d=new java.util.HashMap,g,h=c.getSequences().iterator();h.hasNext()&&((g=h.next())||1);){var e=g.getDatasetSequence();if(null!=e){var n=new jalview.datamodel.Sequence(g);n.setDatasetSequence(e);
+d.put(e,n)}}g=a.priorState(b);h=new jalview.commands.EditCommand;for(a=a.getEditIterator(!b);a.hasNext();)e=a.next(),e.getAction()===jalview.commands.EditCommand.Action.CUT||e.getAction()===jalview.commands.EditCommand.Action.PASTE?jalview.util.MappingUtils.mapCutOrPaste(e,b,c.getSequences(),h,l):(e.getAction()===jalview.commands.EditCommand.Action.INSERT_GAP||e.getAction()===jalview.commands.EditCommand.Action.DELETE_GAP)&&jalview.util.MappingUtils.mapInsertOrDelete(e,b,g,c.getSequences(),d,f,h,
+l);return 0<h.getSize()?h:null},"jalview.commands.EditCommand,~B,jalview.datamodel.AlignmentI,~S,java.util.Set");c$.mapInsertOrDelete=d(c$,"mapInsertOrDelete",function(a,b,c,f,l,d,g,h){var e=a.getAction();b&&(e=e.getUndoAction());b=a.getNumber();var n=a.getPosition(),x,u=0;for(a=a.getSequences();u<a.length&&((x=a[u])||1);u++){var D=x.getDatasetSequence();if(null!=D){var m=c.get(D),p=m.findPosition(n),p=jalview.util.MappingUtils.buildSearchResults(x,p,h);if(!p.isEmpty())for(var q,s=f.iterator();s.hasNext()&&
+((q=s.next())||1);)if(D=q.getDatasetSequence(),null!=D){var D=l.get(D),r=p.getResults(D,0,D.getLength());if(null!=r){var t=3*b,r=e===jalview.commands.EditCommand.Action.DELETE_GAP?r[0]-t:r[0],v=resultClazz_innerTypeInstance(jalview.commands.EditCommand.Edit,this,null,e,E(-1,[q]),r,t,d);g.addEdit(v);e===jalview.commands.EditCommand.Action.INSERT_GAP?D.setSequence(String.instantialize(jalview.util.StringUtils.insertCharAt(D.getSequence(),r,t,d))):e===jalview.commands.EditCommand.Action.DELETE_GAP&&
+D.setSequence(String.instantialize(jalview.util.StringUtils.deleteChars(D.getSequence(),r,r+t)))}}e===jalview.commands.EditCommand.Action.INSERT_GAP?m.setSequence(String.instantialize(jalview.util.StringUtils.insertCharAt(m.getSequence(),n,b,d))):e===jalview.commands.EditCommand.Action.DELETE_GAP&&m.setSequence(String.instantialize(jalview.util.StringUtils.deleteChars(m.getSequence(),n,n+b)))}}},"jalview.commands.EditCommand.Edit,~B,java.util.Map,java.util.List,java.util.Map,~S,jalview.commands.EditCommand,java.util.Set");
+c$.buildSearchResults=d(c$,"buildSearchResults",function(a,b,c){var f=new jalview.datamodel.SearchResults;jalview.util.MappingUtils.addSearchResults(f,a,b,c);return f},"jalview.datamodel.SequenceI,~N,java.util.Set");c$.addSearchResults=d(c$,"addSearchResults",function(a,b,c,f){if(c>=b.getStart()&&c<=b.getEnd()){var l;for(f=f.iterator();f.hasNext()&&((l=f.next())||1);)l.markMappedRegion(b,c,a)}},"jalview.datamodel.SearchResults,jalview.datamodel.SequenceI,~N,java.util.Set");c$.mapSequenceGroup=d(c$,
+"mapSequenceGroup",function(a,b,c){var f=c.isNucleotide();b=(f?b:c).getAlignment().getCodonFrames();var l=new jalview.datamodel.SequenceGroup(a);l.cs=c.getGlobalColourScheme();l.clear();var d=-1,g=-1,h=a.getStartRes(),e=a.getEndRes(),n;for(a=a.getSequences().iterator();a.hasNext()&&((n=a.next())||1);){for(var x=h;x<=e&&jalview.util.Comparison.isGap(n.getCharAt(x));)x++;if(!(x>e)){for(var u=e;u>=h&&jalview.util.Comparison.isGap(n.getCharAt(u));)u--;for(var x=n.findPosition(x),u=n.findPosition(u),D,
+m=b.iterator();m.hasNext()&&((D=m.next())||1);){var p=f?D.getDnaForAaSeq(n):D.getAaForDnaSeq(n);if(null!=p)for(var q,s=c.getAlignment().getSequences().iterator();s.hasNext()&&((q=s.next())||1);){var r=0,t=0;if(q.getDatasetSequence()===p){for(var p=jalview.util.MappingUtils.buildSearchResults(n,x,java.util.Collections.singleton(D)),v,p=p.getResults().iterator();p.hasNext()&&((v=p.next())||1);)r=v.getStart(),t=v.getEnd();p=jalview.util.MappingUtils.buildSearchResults(n,u,java.util.Collections.singleton(D));
+for(p=p.getResults().iterator();p.hasNext()&&((v=p.next())||1);)r=Math.min(r,v.getStart()),t=Math.max(t,v.getEnd());r=q.findIndex(r)-1;d=-1==d?r:Math.min(d,r);t=q.findIndex(t)-1;g=-1==g?t:Math.max(g,t);l.addSequence(q,!1);break}}}}}l.setStartRes(0>d?0:d);l.setEndRes(0>g?0:g);return l},"jalview.datamodel.SequenceGroup,jalview.api.AlignViewportI,jalview.api.AlignViewportI");c$.mapOrderCommand=d(c$,"mapOrderCommand",function(a,b,c,f){b=a.getSequenceOrder(b);for(var l=new java.util.ArrayList,d=0,g=c.isNucleotide(),
+h,e=0;e<b.length&&((h=b[e])||1);e++)for(var n,x=f.iterator();x.hasNext()&&((n=x.next())||1);){var u=g?n.getDnaForAaSeq(h):n.getAaForDnaSeq(h);if(null!=u)for(var D,m=c.getSequences().iterator();m.hasNext()&&((D=m.next())||1);)if(D.getDatasetSequence()===u){l.add(D);d++;break}}if(0==d)return null;if(d<c.getHeight())for(e=c.getSequences().iterator();e.hasNext()&&((h=e.next())||1);)l.contains(h)||l.add(h);f=l.toArray(Array(l.size()));h=c.getSequencesArray();jalview.analysis.AlignmentSorter.sortBy(c,new jalview.datamodel.AlignmentOrder(f));
+return new jalview.commands.OrderCommand(a.getDescription(),h,c)},"jalview.commands.OrderCommand,~B,jalview.datamodel.AlignmentI,java.util.Set");c$.mapColumnSelection=d(c$,"mapColumnSelection",function(a,b,c){var f=(c.isNucleotide()?b:c).getAlignment().getCodonFrames(),l=new jalview.datamodel.ColumnSelection;if(null==a)return l;var d=b.getAlignment().getGapCharacter(),g;for(a=a.getSelected().iterator();a.hasNext()&&((g=a.next())||1);){for(var h=g.intValue(),e=2147483647,n=-2147483648,x,u=b.getAlignment().getSequences().iterator();u.hasNext()&&
+((x=u.next())||1);)if(x.getCharAt(h)!=d)for(var D=x.findPosition(h),m,D=jalview.util.MappingUtils.buildSearchResults(x,D,f).getResults().iterator();D.hasNext()&&((m=D.next())||1);)for(var p=m.getStart(),q=m.getEnd(),r=m.getSequence(),s,t=c.getAlignment().getSequences().iterator();t.hasNext()&&((s=t.next())||1);)if(s.getDatasetSequence()===r){p=s.findIndex(p);q=s.findIndex(q);e=Math.min(e,p);n=Math.max(n,q);break}for(h=e;h<=n;h++)l.addElement(h-1)}return l},"jalview.datamodel.ColumnSelection,jalview.api.AlignViewportI,jalview.api.AlignViewportI");
+c$.findCodonFor=d(c$,"findCodonFor",function(a,b,c){b=a.findPosition(b);var f;for(c=c.iterator();c.hasNext()&&((f=c.next())||1);)if(f.involvesSequence(a))return f.getMappedCodon(a.getDatasetSequence(),b);return null},"jalview.datamodel.SequenceI,~N,java.util.Set");c$.flattenRanges=d(c$,"flattenRanges",function(a){for(var b=0,c=0;c<a.length-1;c+=2)b+=a[c+1]-a[c]+1;for(var b=w(b,0),f=0,c=0;c<a.length-1;c+=2)for(var l=a[c];l<=a[c+1];l++)b[f++]=l;return b},"~A");c$.findMappingsForSequence=d(c$,"findMappingsForSequence",
+function(a,b){var c=new java.util.ArrayList;if(null==a||null==b)return c;for(var f,l=b.iterator();l.hasNext()&&((f=l.next())||1);)f.involvesSequence(a)&&c.add(f);return c},"jalview.datamodel.SequenceI,java.util.Set")});p("jalview.commands");q(["jalview.commands.CommandI","java.lang.Enum","java.util.ArrayList"],"jalview.commands.EditCommand","jalview.analysis.AlignSeq jalview.datamodel.AlignmentAnnotation $.Annotation $.Sequence $.SequenceFeature jalview.schemes.ResidueProperties jalview.util.Comparison $.ReverseListIterator $.StringUtils java.lang.StringBuffer java.util.HashMap $.Hashtable".split(" "),
+function(){c$=s(function(){this.description=this.edits=null;H("jalview.commands.EditCommand.Edit")||jalview.commands.EditCommand.$EditCommand$Edit$();r(this,arguments)},jalview.commands,"EditCommand",null,jalview.commands.CommandI);J(c$,function(){this.edits=new java.util.ArrayList});m(c$,function(){});m(c$,function(a){this.description=a},"~S");m(c$,function(a,b,c,f,l,d){this.description=a;(b===jalview.commands.EditCommand.Action.CUT||b===jalview.commands.EditCommand.Action.PASTE)&&this.setEdit(C(jalview.commands.EditCommand.Edit,
+this,null,b,c,f,l,d));this.performEdit(0,null)},"~S,jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI");m(c$,function(a,b,c,f,l,d,g){this.description=a;b===jalview.commands.EditCommand.Action.REPLACE&&this.setEdit(C(jalview.commands.EditCommand.Edit,this,null,b,f,l,d,g,c));this.performEdit(0,null)},"~S,jalview.commands.EditCommand.Action,~S,~A,~N,~N,jalview.datamodel.AlignmentI");d(c$,"setEdit",function(a){this.edits.clear();this.edits.add(a)},"jalview.commands.EditCommand.Edit");
+d(c$,"addEdit",function(a){jalview.commands.EditCommand.expandEdit(this.edits,a)||this.edits.add(a)},"jalview.commands.EditCommand.Edit");c$.expandEdit=d(c$,"expandEdit",function(a,b){if(null==a||a.isEmpty())return!1;var c=a.get(a.size()-1),f=b.command;if(c.command!==f||c.seqs.length!=b.seqs.length)return!1;for(var l=0;l<b.seqs.length;l++)if(c.seqs[l].getDatasetSequence()!==b.seqs[l].getDatasetSequence())return!1;return f===jalview.commands.EditCommand.Action.INSERT_GAP&&b.position==c.position+c.number||
+f===jalview.commands.EditCommand.Action.DELETE_GAP&&b.position+b.number==c.position?(c.number+=b.number,c.seqs=b.seqs,f===jalview.commands.EditCommand.Action.DELETE_GAP&&c.position--,!0):!1},"java.util.List,jalview.commands.EditCommand.Edit");d(c$,"clearEdits",function(){this.edits.clear()});d(c$,"getEdit",function(a){return 0<=a&&a<this.edits.size()?this.edits.get(a):null},"~N");e(c$,"getDescription",function(){return this.description});e(c$,"getSize",function(){return this.edits.size()});d(c$,"getAlignment",
+function(){return this.edits.isEmpty()?null:this.edits.get(0).al});d(c$,"appendEdit",function(a,b,c,f,l,d){this.appendEdit(a,b,c,f,l,d,null)},"jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI,~B");d(c$,"appendEdit",function(a,b,c,f,l,d,g){a=C(jalview.commands.EditCommand.Edit,this,null,a,b,c,f,l.getGapCharacter());l.getHeight()==b.length&&(a.al=l,a.fullAlignmentHeight=!0);this.addEdit(a);d&&jalview.commands.EditCommand.performEdit(a,g)},"jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI,~B,~A");
+d(c$,"appendEdit",function(a,b,c,f){b.getHeight()==a.seqs.length&&(a.al=b,a.fullAlignmentHeight=!0);this.addEdit(a);c&&jalview.commands.EditCommand.performEdit(a,f)},"jalview.commands.EditCommand.Edit,jalview.datamodel.AlignmentI,~B,~A");d(c$,"performEdit",function(a,b){for(var c=this.edits.listIterator(a);c.hasNext();){var f=c.next();jalview.commands.EditCommand.performEdit(f,b)}},"~N,~A");c$.performEdit=d(c$,"performEdit",function(a,b){switch(a.command){case jalview.commands.EditCommand.Action.INSERT_GAP:jalview.commands.EditCommand.insertGap(a);
+break;case jalview.commands.EditCommand.Action.DELETE_GAP:jalview.commands.EditCommand.deleteGap(a);break;case jalview.commands.EditCommand.Action.CUT:jalview.commands.EditCommand.cut(a,b);break;case jalview.commands.EditCommand.Action.PASTE:jalview.commands.EditCommand.paste(a,b);break;case jalview.commands.EditCommand.Action.REPLACE:jalview.commands.EditCommand.replace(a)}},"jalview.commands.EditCommand.Edit,~A");e(c$,"doCommand",function(a){this.performEdit(0,a)},"~A");e(c$,"undoCommand",function(a){for(var b=
+this.edits.listIterator(this.edits.size());b.hasPrevious();){var c=b.previous();switch(c.command){case jalview.commands.EditCommand.Action.INSERT_GAP:jalview.commands.EditCommand.deleteGap(c);break;case jalview.commands.EditCommand.Action.DELETE_GAP:jalview.commands.EditCommand.insertGap(c);break;case jalview.commands.EditCommand.Action.CUT:jalview.commands.EditCommand.paste(c,a);break;case jalview.commands.EditCommand.Action.PASTE:jalview.commands.EditCommand.cut(c,a);break;case jalview.commands.EditCommand.Action.REPLACE:jalview.commands.EditCommand.replace(c)}}},
+"~A");c$.insertGap=d(c$,"insertGap",function(a){for(var b=0;b<a.seqs.length;b++)a.seqs[b].insertCharAt(a.position,a.number,a.gapChar);jalview.commands.EditCommand.adjustAnnotations(a,!0,!1,null)},"jalview.commands.EditCommand.Edit");c$.deleteGap=d(c$,"deleteGap",function(a){for(var b=0;b<a.seqs.length;b++)a.seqs[b].deleteChars(a.position,a.position+a.number);jalview.commands.EditCommand.adjustAnnotations(a,!1,!1,null)},"jalview.commands.EditCommand.Edit");c$.cut=d(c$,"cut",function(a,b){var c=!1;
+a.string=N(a.seqs.length,"\x00");for(var f=0;f<a.seqs.length;f++){var l=a.seqs[f];if(l.getLength()>a.position){a.string[f]=l.getSequence(a.position,a.position+a.number);var d=l.getDatasetSequence();null!=a.oldds&&null!=a.oldds[f]&&l.setDatasetSequence(null);l.deleteChars(a.position,a.position+a.number);if(null!=a.oldds&&null!=a.oldds[f])l.setDatasetSequence(a.oldds[f]),a.oldds[f]=d;else if(d!==l.getDatasetSequence()||null!=l.getSequenceFeatures())null==a.oldds&&(a.oldds=Array(a.seqs.length)),a.oldds[f]=
+d,jalview.commands.EditCommand.adjustFeatures(a,f,l.findPosition(a.position),l.findPosition(a.position+a.number),!1)}1>l.getLength()&&(a.al.deleteSequence(l),c=!0)}jalview.commands.EditCommand.adjustAnnotations(a,!1,c,b)},"jalview.commands.EditCommand.Edit,~A");c$.paste=d(c$,"paste",function(a,b){for(var c,f,l,d,g,h=!1,e=0,n=0,x=0;x<a.seqs.length;x++){f=!1;l=null!=a.oldds&&null!=a.oldds[x];1>a.seqs[x].getLength()&&(a.alIndex[x]<a.al.getHeight()?0>a.alIndex[x]||(void 0).add(a.alIndex[x],a.seqs[x]):
+a.al.addSequence(a.seqs[x]),h=!0);d=a.seqs[x].getStart();g=a.seqs[x].getEnd();c=new StringBuffer;c.append(a.seqs[x].getSequence());if(null!=a.string&&null!=a.string[x]){if(a.position>=c.length())for(var u=a.position-c.length();0<u;)c.append(a.gapChar),u--;c.insert(a.position,a.string[x]);for(u=0;u<a.string[x].length;u++)23!=jalview.schemes.ResidueProperties.aaIndex[a.string[x][u].charCodeAt(0)]&&(f||(f=!0,e=a.seqs[x].findPosition(a.position),n=a.seqs[x].findPosition(a.position+a.number)),a.seqs[x].getStart()==
+e?d--:g++);a.string[x]=null}a.seqs[x].setSequence(c.toString());a.seqs[x].setStart(d);a.seqs[x].setEnd(g);f&&(null!=a.seqs[x].getDatasetSequence()&&(l?c=a.oldds[x]:(c=new jalview.datamodel.Sequence(a.seqs[x].getName(),jalview.analysis.AlignSeq.extractGaps(jalview.util.Comparison.GapChars,a.seqs[x].getSequenceAsString()),a.seqs[x].getStart(),a.seqs[x].getEnd()),c.setDescription(a.seqs[x].getDescription())),null==a.oldds&&(a.oldds=Array(a.seqs.length)),a.oldds[x]=a.seqs[x].getDatasetSequence(),a.seqs[x].setDatasetSequence(c)),
+jalview.commands.EditCommand.adjustFeatures(a,x,e,n,!0))}jalview.commands.EditCommand.adjustAnnotations(a,!0,h,b);a.string=null},"jalview.commands.EditCommand.Edit,~A");c$.replace=d(c$,"replace",function(a){var b,c,f=a.position,l=a.number;a.number=f+a.string[0].length;for(var d=0;d<a.seqs.length;d++){var g=null!=a.oldds&&null!=a.oldds[d];c=a.seqs[d].getSequenceAsString();b=new StringBuffer(c.substring(0,f));b.append(a.string[d]);var h=jalview.analysis.AlignSeq.extractGaps(jalview.util.Comparison.GapChars,
+String.instantialize(a.string[d])),e=a.seqs[d].findPosition(f)-a.seqs[d].getStart();b.append(c.substring(l));a.seqs[d].setSequence(b.toString());a.string[d]=c.substring(f,l).toCharArray();b=jalview.analysis.AlignSeq.extractGaps(jalview.util.Comparison.GapChars,String.instantialize(a.string[d]));h.toLowerCase().equals(b.toLowerCase())||(g?(h=a.seqs[d].getDatasetSequence(),a.seqs[d].setDatasetSequence(a.oldds[d]),a.oldds[d]=h):(null==a.oldds&&(a.oldds=Array(a.seqs.length)),a.oldds[d]=a.seqs[d].getDatasetSequence(),
+g=new jalview.datamodel.Sequence(a.seqs[d].getDatasetSequence()),b=g.getSequenceAsString(),h=b.substring(0,e)+h+b.substring(e+h.length),g.setSequence(h.toUpperCase()),a.seqs[d].setDatasetSequence(g)))}},"jalview.commands.EditCommand.Edit");c$.adjustAnnotations=d(c$,"adjustAnnotations",function(a,b,c,f){var l=null;c&&!b&&(a.deletedAnnotationRows=new java.util.Hashtable);if(a.fullAlignmentHeight)l=a.al.getAlignmentAnnotation();else for(var d=0,g,h=0;h<a.seqs.length;h++)if(c)if(b){if(null!=a.deletedAnnotationRows&&
+a.deletedAnnotationRows.containsKey(a.seqs[h])){var e=a.deletedAnnotationRows.get(a.seqs[h]);a.seqs[h].setAlignmentAnnotation(e);if(null!=e){for(u=0;u<e.length;u++)a.al.addAnnotation(e[u]);for(u=0;u<e.length;u++)a.al.setAnnotationIndex(e[u],u);for(u=0;null!=f&&u<f.length;u++)if(f[u]!==a.al){var n=f[u].getWidth()+1;for(g=0;g<e.length;g++){var x=new jalview.datamodel.AlignmentAnnotation(e[g]);a.seqs[h].addAlignmentAnnotation(x);x.padAnnotation(n);f[u].addAnnotation(x);f[u].setAnnotationIndex(x,g)}}}}}else{if(g=
+a.seqs[h].getAnnotation(),null!=g){for(var e=g.length,u=0;u<g.length;u++)a.al.deleteAnnotation(g[u])||(g[u]=null,e--);a.seqs[h].setAlignmentAnnotation(null);if(e!=g.length){e=Array(e);for(n=u=0;u<g.length;u++)null!=g[u]&&(e[n++]=g[u],g[u]=null);a.deletedAnnotationRows.put(a.seqs[h],e);for(g=0;null!=f&&g<f.length;g++)if(f[g]!==a.al&&(e=f[g].getAlignmentAnnotation(),!(null==e||0==e.length)))for(u=0;u<e.length;u++)e[u].sequenceRef===a.seqs[h]&&f[g].deleteAnnotation(e[u])}else a.deletedAnnotationRows.put(a.seqs[h],
+g)}}else null!=a.seqs[h].getAnnotation()&&(0==d?l=a.seqs[h].getAnnotation():(g=Array(d+a.seqs[h].getAnnotation().length),System.arraycopy(l,0,g,0,d),System.arraycopy(a.seqs[h].getAnnotation(),0,g,d,a.seqs[h].getAnnotation().length),l=g),d=l.length);if(null!=l){b||(a.deletedAnnotations=new java.util.Hashtable);for(g=0;g<l.length;g++)if(!(l[g].autoCalculated||null==l[g].annotations)){f=0;d=l[g].annotations.length;if(b){if(c=Array(d+a.number),l[g].padGaps)for(u=0;u<c.length;u++)c[u]=new jalview.datamodel.Annotation(a.gapChar+
+"",null," ",0)}else f=a.position<d?a.position+a.number>=d?d:d-a.number:d,0>f&&(f=d),c=Array(f);b?a.position<l[g].annotations.length?(System.arraycopy(l[g].annotations,0,c,0,a.position),null!=a.deletedAnnotations&&a.deletedAnnotations.containsKey(l[g].annotationId)&&(f=a.deletedAnnotations.get(l[g].annotationId),System.arraycopy(f,0,c,a.position,a.number)),System.arraycopy(l[g].annotations,a.position,c,a.position+a.number,d-a.position)):null!=a.deletedAnnotations&&a.deletedAnnotations.containsKey(l[g].annotationId)?
+(f=a.deletedAnnotations.get(l[g].annotationId),c=Array(l[g].annotations.length+f.length),System.arraycopy(l[g].annotations,0,c,0,l[g].annotations.length),System.arraycopy(f,0,c,l[g].annotations.length,f.length)):c=l[g].annotations:f!=d||2>a.position?(f=Math.min(a.position,l[g].annotations.length),0<f&&System.arraycopy(l[g].annotations,0,c,0,f),d=Array(a.number),f>=a.position&&(f=Math.min(a.number,l[g].annotations.length-a.position),0<f&&System.arraycopy(l[g].annotations,a.position,d,0,f)),a.deletedAnnotations.put(l[g].annotationId,
+d),l[g].annotations.length>a.position+a.number&&System.arraycopy(l[g].annotations,a.position+a.number,c,a.position,l[g].annotations.length-a.position-a.number)):(c=d-a.position,0<c?(d=Array(a.number),System.arraycopy(l[g].annotations,a.position,d,0,c),a.deletedAnnotations.put(l[g].annotationId,d),f=Math.min(l[g].annotations.length,a.position),c=Array(f),System.arraycopy(l[g].annotations,0,c,0,f)):c=l[g].annotations);l[g].annotations=c}}},"jalview.commands.EditCommand.Edit,~B,~B,~A");c$.adjustFeatures=
+d(c$,"adjustFeatures",function(a,b,c,f,l){b=a.seqs[b];var d=b.getDatasetSequence();null==d&&(d=b);if(l)null!=a.editedFeatures&&a.editedFeatures.containsKey(b)&&d.setSequenceFeatures(a.editedFeatures.get(b));else if(l=d.getSequenceFeatures(),null!=l){for(var g=Array(l.length),h=f-c,e=0;e<l.length;e++){var n=new jalview.datamodel.SequenceFeature(l[e]);g[e]=n;l[e].getEnd()<c||(l[e].getBegin()>f?(l[e].setBegin(n.getBegin()-h),l[e].setEnd(n.getEnd()-h)):(l[e].getBegin()>=c&&l[e].setBegin(c),l[e].getEnd()<
+f&&l[e].setEnd(f-1),l[e].setEnd(l[e].getEnd()-h),l[e].getBegin()>l[e].getEnd()&&d.deleteFeature(l[e])))}null==a.editedFeatures&&(a.editedFeatures=new java.util.Hashtable);a.editedFeatures.put(b,g)}},"jalview.commands.EditCommand.Edit,~N,~N,~N,~B");d(c$,"getEdits",function(){return this.edits});d(c$,"priorState",function(a){var b=new java.util.HashMap;if(null==this.getEdits())return b;if(a){for(var c,f=this.getEdits().iterator();f.hasNext()&&((c=f.next())||1);){var l;a=0;for(var d=c.getSequences();a<
+d.length&&((l=d[a])||1);a++){var g=l.getDatasetSequence(),e=b.get(g);null==e&&(e=new jalview.datamodel.Sequence("",l.getSequenceAsString()),e.setDatasetSequence(g),b.put(g,e))}}return b}for(c=new jalview.util.ReverseListIterator(this.getEdits());c.hasNext();){var d=c.next(),f=d.getAction(),j=d.getPosition(),n=d.getNumber(),x=d.getGapCharacter();a=0;for(d=d.getSequences();a<d.length&&((l=d[a])||1);a++)g=l.getDatasetSequence(),e=b.get(g),null==e&&(e=new jalview.datamodel.Sequence("",l.getSequenceAsString()),
+e.setDatasetSequence(g),b.put(g,e)),null!=g&&(f===jalview.commands.EditCommand.Action.DELETE_GAP?e.setSequence(String.instantialize(jalview.util.StringUtils.insertCharAt(e.getSequence(),j,n,x))):f===jalview.commands.EditCommand.Action.INSERT_GAP?e.setSequence(String.instantialize(jalview.util.StringUtils.deleteChars(e.getSequence(),j,j+n))):System.err.println("Can't undo edit action "+f))}return b},"~B");d(c$,"getEditIterator",function(a){return a?this.getEdits().iterator():new jalview.util.ReverseListIterator(this.getEdits())},
+"~B");c$.$EditCommand$Edit$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.oldds=null;this.fullAlignmentHeight=!1;this.alIndex=this.seqs=this.string=this.command=this.al=this.editedFeatures=this.deletedAnnotations=this.deletedAnnotationRows=null;this.number=this.position=0;this.gapChar="\x00";r(this,arguments)},jalview.commands.EditCommand,"Edit");m(c$,function(a,b,c,f,l){this.command=a;this.seqs=b;this.position=c;this.number=f;this.gapChar=l},"jalview.commands.EditCommand.Action,~A,~N,~N,~S");
+m(c$,function(a,b,c,f,l){this.gapChar=l.getGapCharacter();this.command=a;this.seqs=b;this.position=c;this.number=f;this.al=l;this.alIndex=w(b.length,0);for(a=0;a<b.length;a++)this.alIndex[a]=l.findIndex(b[a]);this.fullAlignmentHeight=l.getHeight()==b.length},"jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI");m(c$,function(a,b,c,f,l,d){this.command=a;this.seqs=b;this.position=c;this.number=f;this.al=l;this.gapChar=l.getGapCharacter();this.string=N(b.length,"\x00");for(a=0;a<
+b.length;a++)this.string[a]=d.toCharArray();this.fullAlignmentHeight=l.getHeight()==b.length},"jalview.commands.EditCommand.Action,~A,~N,~N,jalview.datamodel.AlignmentI,~S");d(c$,"getSequences",function(){return this.seqs});d(c$,"getPosition",function(){return this.position});d(c$,"getAction",function(){return this.command});d(c$,"getNumber",function(){return this.number});d(c$,"getGapCharacter",function(){return this.gapChar});c$=z()};A(self.c$);c$=B(jalview.commands.EditCommand,"Action",Enum);d(c$,
+"getUndoAction",function(){switch(this){case jalview.commands.EditCommand.Action.INSERT_GAP:return jalview.commands.EditCommand.Action.DELETE_GAP;case jalview.commands.EditCommand.Action.CUT:return jalview.commands.EditCommand.Action.PASTE;case jalview.commands.EditCommand.Action.DELETE_GAP:return jalview.commands.EditCommand.Action.INSERT_GAP;case jalview.commands.EditCommand.Action.PASTE:return jalview.commands.EditCommand.Action.CUT;case jalview.commands.EditCommand.Action.REPLACE:return jalview.commands.EditCommand.Action.REPLACE}return null});
+R(c$,"INSERT_GAP",0,[]);R(c$,"DELETE_GAP",1,[]);R(c$,"CUT",2,[]);R(c$,"PASTE",3,[]);R(c$,"REPLACE",4,[]);R(c$,"INSERT_NUC",5,[]);c$=z()});p("jalview.commands");M(jalview.commands,"CommandI");p("jalview.analysis");q(["jalview.schemes.ResidueProperties","java.lang.StringBuffer"],"jalview.analysis.AlignSeq","jalview.datamodel.Mapping $.Sequence jalview.util.Comparison $.Format $.MapList $.MessageManager java.awt.Color java.lang.Error $.StringBuilder java.util.ArrayList $.Arrays $.StringTokenizer".split(" "),
+function(){c$=s(function(){this.s2str=this.s1str=this.s2=this.s1=this.seq2=this.seq1=this.traceback=this.F=this.E=this.score=null;this.maxj=this.maxi=0;this.aseq2=this.aseq1=null;this.astr2=this.astr1="";this.prev=this.pid=this.maxscore=this.count=this.seq2end=this.seq2start=this.seq1end=this.seq1start=0;this.gapOpen=120;this.gapExtend=20;this.intToStr=this.lookup=null;this.defInt=23;this.charToInt=this.type=this.output=null;r(this,arguments)},jalview.analysis,"AlignSeq");J(c$,function(){this.lookup=
+jalview.schemes.ResidueProperties.getBLOSUM62();this.intToStr=jalview.analysis.AlignSeq.pep;this.output=new StringBuffer});m(c$,function(a,b,c){this.SeqInit(a,a.getSequenceAsString(),b,b.getSequenceAsString(),c)},"jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~S");m(c$,function(a,b,c,f,l){this.SeqInit(a,b.toUpperCase(),c,f.toUpperCase(),l)},"jalview.datamodel.SequenceI,~S,jalview.datamodel.SequenceI,~S,~S");d(c$,"getMaxScore",function(){return this.maxscore});d(c$,"getSeq2Start",function(){return this.seq2start});
+d(c$,"getSeq2End",function(){return this.seq2end});d(c$,"getSeq1Start",function(){return this.seq1start});d(c$,"getSeq1End",function(){return this.seq1end});d(c$,"getOutput",function(){return this.output.toString()});d(c$,"getAStr1",function(){return this.astr1});d(c$,"getAStr2",function(){return this.astr2});d(c$,"getASeq1",function(){return this.aseq1});d(c$,"getASeq2",function(){return this.aseq2});d(c$,"getS1",function(){return this.s1});d(c$,"getS2",function(){return this.s2});d(c$,"getAlignedSeq1",
+function(){var a=new jalview.datamodel.Sequence(this.s1.getName(),this.getAStr1());a.setStart(this.s1.getStart()+this.getSeq1Start()-1);a.setEnd(this.s1.getStart()+this.getSeq1End()-1);a.setDatasetSequence(null==this.s1.getDatasetSequence()?this.s1:this.s1.getDatasetSequence());return a});d(c$,"getAlignedSeq2",function(){var a=new jalview.datamodel.Sequence(this.s2.getName(),this.getAStr2());a.setStart(this.s2.getStart()+this.getSeq2Start()-1);a.setEnd(this.s2.getStart()+this.getSeq2End()-1);a.setDatasetSequence(null==
+this.s2.getDatasetSequence()?this.s2:this.s2.getDatasetSequence());return a});d(c$,"SeqInit",function(a,b,c,f,l){this.s1=a;this.s2=c;this.setDefaultParams(l);this.SeqInit(b,f)},"jalview.datamodel.SequenceI,~S,jalview.datamodel.SequenceI,~S,~S");d(c$,"SeqInit",function(a,b,c,f,l){this.s1=a;this.s2=c;this.setType(l.isDNA()?"dna":"pep");this.lookup=l.getMatrix()},"jalview.datamodel.SequenceI,~S,jalview.datamodel.SequenceI,~S,jalview.schemes.ScoreMatrix");d(c$,"SeqInit",function(a,b){this.s1str=jalview.analysis.AlignSeq.extractGaps(jalview.util.Comparison.GapChars,
+a);this.s2str=jalview.analysis.AlignSeq.extractGaps(jalview.util.Comparison.GapChars,b);0==this.s1str.length||0==this.s2str.length?this.output.append("ALL GAPS: "+(0==this.s1str.length?this.s1.getName():" ")+(0==this.s2str.length?this.s2.getName():"")):(this.seq1=w(this.s1str.length,0),this.seq2=w(this.s2str.length,0),this.score=w(this.s1str.length,this.s2str.length,0),this.E=w(this.s1str.length,this.s2str.length,0),this.F=w(this.s1str.length,this.s2str.length,0),this.traceback=w(this.s1str.length,
+this.s2str.length,0),this.seq1=this.stringToInt(this.s1str,this.type),this.seq2=this.stringToInt(this.s2str,this.type))},"~S,~S");d(c$,"setDefaultParams",function(a){this.setType(a);a.equals("pep")?this.lookup=jalview.schemes.ResidueProperties.getDefaultPeptideMatrix():a.equals("dna")&&(this.lookup=jalview.schemes.ResidueProperties.getDefaultDnaMatrix())},"~S");d(c$,"setType",function(a){this.type=a;if(this.type.equals("pep"))this.intToStr=jalview.analysis.AlignSeq.pep,this.charToInt=jalview.schemes.ResidueProperties.aaIndex,
+this.defInt=23;else if(this.type.equals("dna"))this.intToStr=jalview.analysis.AlignSeq.dna,this.charToInt=jalview.schemes.ResidueProperties.nucleotideIndex,this.defInt=10;else throw this.output.append("Wrong type = dna or pep only"),Error(jalview.util.MessageManager.formatMessage("error.unknown_type_dna_or_pep",E(-1,[a])));},"~S");d(c$,"traceAlignment",function(){for(var a=-9999,b=0;b<this.seq1.length;b++)this.score[b][this.seq2.length-1]>a&&(a=this.score[b][this.seq2.length-1],this.maxi=b,this.maxj=
+this.seq2.length-1);for(var c=0;c<this.seq2.length;c++)this.score[this.seq1.length-1][c]>a&&(a=this.score[this.seq1.length-1][c],this.maxi=this.seq1.length-1,this.maxj=c);b=this.maxi;c=this.maxj;this.maxscore=F(this.score[b][c]/10);this.seq1end=this.maxi+1;this.seq2end=this.maxj+1;this.aseq1=w(this.seq1.length+this.seq2.length,0);this.aseq2=w(this.seq1.length+this.seq2.length,0);for(this.count=this.seq1.length+this.seq2.length-1;0<b&&0<c;)this.aseq1[this.count]!=this.defInt&&0<=b&&(this.aseq1[this.count]=
+this.seq1[b],this.astr1=this.s1str.charAt(b)+this.astr1),this.aseq2[this.count]!=this.defInt&&0<c&&(this.aseq2[this.count]=this.seq2[c],this.astr2=this.s2str.charAt(c)+this.astr2),a=this.findTrace(b,c),0==a?(b--,c--):1==a?(c--,this.aseq1[this.count]=this.defInt,this.astr1="-"+this.astr1.substring(1)):-1==a&&(b--,this.aseq2[this.count]=this.defInt,this.astr2="-"+this.astr2.substring(1)),this.count--;this.seq1start=b+1;this.seq2start=c+1;this.aseq1[this.count]!=this.defInt&&(this.aseq1[this.count]=
+this.seq1[b],this.astr1=this.s1str.charAt(b)+this.astr1);this.aseq2[this.count]!=this.defInt&&(this.aseq2[this.count]=this.seq2[c],this.astr2=this.s2str.charAt(c)+this.astr2)});d(c$,"printAlignment",function(a){var b=this.s1.getName(),c=this.s2.getName(),f=this.s1.getName().length;this.s2.getName().length>f&&(f=this.s2.getName().length);30<f&&(f=30,this.s1.getName().length>f&&(b=this.s1.getName().substring(0,30)),this.s2.getName().length>f&&(c=this.s2.getName().substring(0,30)));var l=72-f-1,d=F((this.aseq1.length-
+this.count)/l)+1;this.pid=0;this.output.append("Score = ").append(""+this.score[this.maxi][this.maxj]).append(jalview.analysis.AlignSeq.NEWLINE);this.output.append("Length of alignment = ").append(String.valueOf(this.aseq1.length-this.count)).append(jalview.analysis.AlignSeq.NEWLINE);this.output.append("Sequence ");this.output.append((new jalview.util.Format("%"+f+"s")).form(this.s1.getName()));this.output.append(" :  ").append(String.valueOf(this.s1.getStart())).append(" - ").append(String.valueOf(this.s1.getEnd()));
+this.output.append(" (Sequence length = ").append(String.valueOf(this.s1str.length)).append(")").append(jalview.analysis.AlignSeq.NEWLINE);this.output.append("Sequence ");this.output.append((new jalview.util.Format("%"+f+"s")).form(this.s2.getName()));this.output.append(" :  ").append(String.valueOf(this.s2.getStart())).append(" - ").append(String.valueOf(this.s2.getEnd()));this.output.append(" (Sequence length = ").append(String.valueOf(this.s2str.length)).append(")").append(jalview.analysis.AlignSeq.NEWLINE).append(jalview.analysis.AlignSeq.NEWLINE);
+for(var g=0;g<d;g++){this.output.append((new jalview.util.Format("%"+f+"s")).form(b)).append(" ");for(var e=0;e<l;e++)e+g*l<this.astr1.length&&this.output.append(this.astr1.charAt(e+g*l));this.output.append(jalview.analysis.AlignSeq.NEWLINE);this.output.append((new jalview.util.Format("%"+f+"s")).form(" ")).append(" ");for(e=0;e<l;e++)e+g*l<this.astr1.length&&(this.astr1.charAt(e+g*l)==this.astr2.charAt(e+g*l)&&!jalview.util.Comparison.isGap(this.astr1.charAt(e+g*l))?(this.pid++,this.output.append("|")):
+this.type.equals("pep")?0<jalview.schemes.ResidueProperties.getPAM250(this.astr1.charAt(e+g*l),this.astr2.charAt(e+g*l))?this.output.append("."):this.output.append(" "):this.output.append(" "));this.output=this.output.append(jalview.analysis.AlignSeq.NEWLINE);this.output=this.output.append((new jalview.util.Format("%"+f+"s")).form(c)).append(" ");for(e=0;e<l;e++)e+g*l<this.astr2.length&&this.output.append(this.astr2.charAt(e+g*l));this.output.append(jalview.analysis.AlignSeq.NEWLINE).append(jalview.analysis.AlignSeq.NEWLINE)}this.pid=
+100*(this.pid/(this.aseq1.length-this.count));this.output=this.output.append((new jalview.util.Format("Percentage ID = %2.2f\n\n")).formDouble(this.pid));try{a.print(this.output.toString())}catch(j){if(!y(j,Exception))throw j;}},"java.io.PrintStream");d(c$,"printScoreMatrix",function(a){for(var b=this.seq1.length,c=this.seq2.length,f=0;f<b;f++){if(0==f){jalview.util.Format.print(System.out,"%8s",this.s2str.substring(0,1));for(var l=1;l<c;l++)jalview.util.Format.print(System.out,"%5s",this.s2str.substring(l,
+l+1));System.out.println()}for(l=0;l<c;l++)0==l&&jalview.util.Format.print(System.out,"%3s",this.s1str.substring(f,f+1)),jalview.util.Format.printLong(System.out,"%3d ",F(a[f][l]/10));System.out.println()}},"~A");d(c$,"findTrace",function(a,b){var c=0,f=this.score[a-1][b-1]+10*this.lookup[this.seq1[a]][this.seq2[b]];this.F[a][b]>f?(f=this.F[a][b],c=-1):this.F[a][b]==f&&-1==this.prev&&(f=this.F[a][b],c=-1);this.E[a][b]>=f?c=1:this.E[a][b]==f&&1==this.prev&&(c=1);return this.prev=c},"~N,~N");d(c$,"calcScoreMatrix",
+function(){var a=this.seq1.length,b=this.seq2.length;this.score[0][0]=10*this.lookup[this.seq1[0]][this.seq2[0]];this.E[0][0]=-this.gapExtend;this.F[0][0]=0;for(var c=1;c<b;c++)this.E[0][c]=this.max(this.score[0][c-1]-this.gapOpen,this.E[0][c-1]-this.gapExtend),this.F[0][c]=-this.gapExtend,this.score[0][c]=this.max(10*this.lookup[this.seq1[0]][this.seq2[c]],-this.gapOpen,-this.gapExtend),this.traceback[0][c]=1;for(var f=1;f<a;f++)this.E[f][0]=-this.gapOpen,this.F[f][0]=this.max(this.score[f-1][0]-
+this.gapOpen,this.F[f-1][0]-this.gapExtend),this.score[f][0]=this.max(10*this.lookup[this.seq1[f]][this.seq2[0]],this.E[f][0],this.F[f][0]),this.traceback[f][0]=-1;for(f=1;f<a;f++)for(c=1;c<b;c++)this.E[f][c]=this.max(this.score[f][c-1]-this.gapOpen,this.E[f][c-1]-this.gapExtend),this.F[f][c]=this.max(this.score[f-1][c]-this.gapOpen,this.F[f-1][c]-this.gapExtend),this.score[f][c]=this.max(this.score[f-1][c-1]+10*this.lookup[this.seq1[f]][this.seq2[c]],this.E[f][c],this.F[f][c]),this.traceback[f][c]=
+this.findTrace(f,c)});c$.extractGaps=d(c$,"extractGaps",function(a,b){if(null==a||null==b)return null;for(var c=new java.util.StringTokenizer(b,a),f=new StringBuilder(b.length);c.hasMoreTokens();)f.append(c.nextToken());return f.toString()},"~S,~S");d(c$,"max",function(a,b,c){var f=a;b>a&&(f=b);c>f&&(f=c);return f},"~N,~N,~N");d(c$,"max",function(a,b){var c=a;b>a&&(c=b);return c},"~N,~N");d(c$,"stringToInt",function(a){for(var b=w(a.length,0),c=0;c<a.length;c++){var f=a.charAt(c);"a"<=f&&"z">=f&&
+(f=String.fromCharCode(f.charCodeAt(0)-32));try{if(b[c]=this.charToInt[f.charCodeAt(0)],0>b[c]||b[c]>this.defInt)b[c]=this.defInt}catch(l){if(y(l,Exception))b[c]=this.defInt;else throw l;}}return b},"~S,~S");c$.displayMatrix=d(c$,"displayMatrix",function(a,b,c,f,l){for(var d=-1E3,g=1E3,e=0;e<c;e++)for(var j=0;j<f;j++)b[e][j]>=d&&(d=b[e][j]),b[e][j]<=g&&(g=b[e][j]);System.out.println(d+" "+g);for(e=0;e<c;e++)for(j=0;j<f;j++){var n=l*e,x=l*j;a.setColor(new java.awt.Color((b[e][j]-g)/(d-g),0,0));a.fillRect(n,
+x,l,l)}},"java.awt.Graphics,~A,~N,~N,~N");c$.doGlobalNWAlignment=d(c$,"doGlobalNWAlignment",function(a,b,c){a=new jalview.analysis.AlignSeq(a,b,c);a.calcScoreMatrix();a.traceAlignment();return a},"jalview.datamodel.SequenceI,jalview.datamodel.SequenceI,~S");d(c$,"getMappingFromS1",function(a){for(var b=new java.util.ArrayList,c=new java.util.ArrayList,f=this.s2.getStart()+this.getSeq2Start()-2,l=this.s1.getStart()+this.getSeq1Start()-2,d=f-3,g=l-3,e=!1,j=0;j<this.astr1.length;j++){var n=this.astr1.charAt(j),
+x=this.astr2.charAt(j);"-"!=n&&l++;"-"!=x&&f++;if(a||n==x){if(g+1!=l||d+1!=f)b.add(Integer.$valueOf(l)),c.add(Integer.$valueOf(f));e=!0;g=l;d=f}else e&&(b.add(Integer.$valueOf(g)),c.add(Integer.$valueOf(d))),e=!1}a=w(b.size()+(e?1:0),0);for(var d=w(c.size()+(e?1:0),0),j=0,u,b=b.iterator();b.hasNext()&&((u=b.next())||1);)a[j++]=u.intValue();j=0;for(b=c.iterator();b.hasNext()&&((u=b.next())||1);)d[j++]=u.intValue();e&&(a[a.length-1]=l,d[d.length-1]=f);c=new jalview.util.MapList(a,d,1,1);c=new jalview.datamodel.Mapping(c);
+c.setTo(this.s2);return c},"~B");c$.replaceMatchingSeqsWith=d(c$,"replaceMatchingSeqsWith",function(a,b,c,f,l,d){var g=new java.util.ArrayList,e=new java.util.ArrayList,j=new java.util.ArrayList;if(null!=f&&0<f.getHeight()){for(var n=new java.util.ArrayList,x=new java.util.ArrayList,u,D=c.iterator();D.hasNext()&&((u=D.next())||1);){for(var m=null,p=null,q=0,s,r=f.getSequences().iterator();r.hasNext()&&((s=r.next())||1);){var t=jalview.analysis.AlignSeq.doGlobalNWAlignment(s,u,l);if(null==m||t.getMaxScore()>
+q)q=t.getMaxScore(),p=t,m=s}System.out.println("Best Score for "+(n.size()+1)+" :"+q);n.add(m);x.add(p);f.deleteSequence(m)}f=0;for(l=a.size();f<l;f++)if(D=a.get(f),-1<(p=c.indexOf(D))){a.set(f,u=n.get(p));g.add(D);e.add(u);u.setName(D.getName());u.setDescription(D.getDescription());u.transferAnnotation(D,m=x.get(p).getMappingFromS1(!1));j.add(x.get(p));p=-1;for(q=0;q<b.size();)b.get(q).sequenceRef===D?(-1==p&&(p=q),d?b.remove(q):(s=b.remove(q),s.liftOver(u,m),s.setSequenceRef(u),u.addAlignmentAnnotation(s))):
+q++;null!=u.getAnnotation()&&0<u.getAnnotation().length&&b.addAll(-1==p?b.size():p,java.util.Arrays.asList(u.getAnnotation()))}}return java.util.Arrays.asList([g,e,j])},"java.util.List,java.util.List,java.util.List,jalview.datamodel.AlignmentI,~S,~B");c$.computeRedundancyMatrix=d(c$,"computeRedundancyMatrix",function(a,b,c,f,l){for(var d=a.length,g=Q(d,0),e=w(d,0),j=0;j<d;j++)g[j]=0,e[j]=-1;for(var n,x,j=0;j<d;j++)for(var u=0;u<j;u++)if(j!=u){null==b?(n=a[j].getSequenceAsString(c,f),x=a[u].getSequenceAsString(c,
+f)):(n=b[j],x=b[u]);if(-1==e[j]){var D=jalview.analysis.AlignSeq.extractGaps(jalview.util.Comparison.GapChars,n);e[j]=D.length;l&&(n=D)}-1==e[u]&&(D=jalview.analysis.AlignSeq.extractGaps(jalview.util.Comparison.GapChars,x),e[u]=D.length,l&&(x=D));n=jalview.util.Comparison.PID(n,x);e[u]<e[j]?g[u]=Math.max(n,g[u]):g[j]=Math.max(n,g[j])}return g},"~A,~A,~N,~N,~B");G(c$,"PEP","pep","DNA","dna");c$.NEWLINE=c$.prototype.NEWLINE=System.lineSeparator();G(c$,"dna",E(-1,["A","C","G","T","-"]),"pep",E(-1,"ARNDCQEGHILKMFPSTWYVBZX-".split("")))});
+p("jalview.schemes");q("jalview.analysis.scoremodels.FeatureScoreModel $.PIDScoreModel jalview.schemes.ScoreMatrix java.awt.Color java.util.ArrayList $.HashMap $.Hashtable $.Vector".split(" "),"jalview.schemes.ResidueProperties",["java.lang.StringBuffer"],function(){c$=B(jalview.schemes,"ResidueProperties");c$.buildAmbiguityCodonSet=d(c$,"buildAmbiguityCodonSet",function(){if(0<jalview.schemes.ResidueProperties._ambiguityCodes.size())System.err.println("Ignoring multiple calls to buildAmbiguityCodonSet");
+else{for(var a,b=jalview.schemes.ResidueProperties.ambiguityCodes.entrySet().iterator();b.hasNext()&&((a=b.next())||1);)for(var c,f=0,l=a.getValue();f<l.length&&((c=l[f])||1);f++){var d=jalview.schemes.ResidueProperties._ambiguityCodes.get(c);null==d&&jalview.schemes.ResidueProperties._ambiguityCodes.put(c,d=new java.util.ArrayList);d.contains(a.getKey())?System.err.println("Inconsistency in the IUBMB ambiguity code nomenclature table: collision for "+a.getKey()+" in residue "+c):d.add(a.getKey())}var g;
+a=0;for(b=jalview.schemes.ResidueProperties.codonHash2.keySet().toArray(Array(jalview.schemes.ResidueProperties.codonHash2.size()));a<b.length&&((g=b[a])||1);a++){c=jalview.schemes.ResidueProperties.codonHash2.get(g);for(var f=Array(g.length),k=0,l=g.length;k<l;k++)d=""+g.charAt(k),d=jalview.schemes.ResidueProperties._ambiguityCodes.get(d),f[k]=null!=d?d.toArray(Array(d.size())):E(-1,[]);l=w(g.length,0);d=w(g.length,0);for(k=0;k<l.length;k++)l[k]=-1;l[f.length-1]=0;for(var e,h;l[0]<f[0].length;){var k=
+N(l.length,"\x00"),j="";for(e=0;e<l.length;e++)if(0==f[e].length||0>l[e])j+=g.charAt(e),k[e]=N(-1,[g.charAt(e)]);else{var j=j+f[e][l[e]],n=jalview.schemes.ResidueProperties.ambiguityCodes.get(f[e][l[e]]);k[e]=N(n.length,"\x00");h=0;for(var x,u=0;u<n.length&&((x=n[u])||1);u++)k[e][h++]=x.charAt(0)}for(e=0;e<d.length;e++)d[e]=0;h=!0;do{e="";for(h=0;h<d.length;h++)e+=k[h][d[h]];e=jalview.schemes.ResidueProperties.codonHash2.get(e);if(h=null!=e&&e.equals(c))for(e=f.length-1;++d[e]>=k[e].length&&0<e;)d[e]=
+0,e--}while(h&&d[0]<k[0].length);h&&jalview.schemes.ResidueProperties.codonHash2.put(j,c);for(e=f.length-1;++l[e]>=f[e].length&&0<e;)l[e]=-1,e--}}}});c$.getHydmax=d(c$,"getHydmax",function(){return 4.5});c$.getHydmin=d(c$,"getHydmin",function(){return-3.9});c$.getHyd=d(c$,"getHyd",function(){return jalview.schemes.ResidueProperties.hyd});c$.getAA3Hash=d(c$,"getAA3Hash",function(){return jalview.schemes.ResidueProperties.aa3Hash});c$.getDNA=d(c$,"getDNA",function(){return jalview.schemes.ResidueProperties.DNA});
+c$.getBLOSUM62=d(c$,"getBLOSUM62",function(){return jalview.schemes.ResidueProperties.BLOSUM62});c$.getPAM250=d(c$,"getPAM250",function(a,b){return jalview.schemes.ResidueProperties.getPAM250(a.charAt(0),b.charAt(0))},"~S,~S");c$.getBLOSUM62=d(c$,"getBLOSUM62",function(a,b){var c=0;try{var f=jalview.schemes.ResidueProperties.aaIndex[a.charCodeAt(0)],l=jalview.schemes.ResidueProperties.aaIndex[b.charCodeAt(0)],c=jalview.schemes.ResidueProperties.BLOSUM62[f][l]}catch(d){if(!y(d,Exception))throw d;}return c},
+"~S,~S");c$.getCodons=d(c$,"getCodons",function(a){return jalview.schemes.ResidueProperties.codonHash.containsKey(a)?jalview.schemes.ResidueProperties.codonHash.get(a):null},"~S");c$.codonTranslate=d(c$,"codonTranslate",function(a){a=jalview.schemes.ResidueProperties.codonHash2.get(a.toUpperCase());return null!=a&&a.equals("*")?"STOP":a},"~S");c$._codonTranslate=d(c$,"_codonTranslate",function(a){a=a.toUpperCase();if(-1<a.indexOf("X")||-1<a.indexOf("N"))return"X";for(var b,c=jalview.schemes.ResidueProperties.codonHash.keySet().iterator();c.hasNext()&&
+((b=c.next())||1);)if(jalview.schemes.ResidueProperties.codonHash.get(b).contains(a))return b;return null},"~S");c$.getDefaultPeptideMatrix=d(c$,"getDefaultPeptideMatrix",function(){return jalview.schemes.ResidueProperties.getBLOSUM62()});c$.getDefaultDnaMatrix=d(c$,"getDefaultDnaMatrix",function(){return jalview.schemes.ResidueProperties.getDNA()});c$.getScoreMatrix=d(c$,"getScoreMatrix",function(a){a=jalview.schemes.ResidueProperties.scoreMatrices.get(a);return null!=a&&v(a,jalview.schemes.ScoreMatrix)?
+a:null},"~S");c$.getScoreModel=d(c$,"getScoreModel",function(a){return jalview.schemes.ResidueProperties.scoreMatrices.get(a)},"~S");c$.getPAM250=d(c$,"getPAM250",function(a,b){var c=jalview.schemes.ResidueProperties.aaIndex[a.charCodeAt(0)],f=jalview.schemes.ResidueProperties.aaIndex[b.charCodeAt(0)];return jalview.schemes.ResidueProperties.PAM250[c][f]},"~S,~S");c$.getDssp3state=d(c$,"getDssp3state",function(a){if(null==a)return null;for(var b=new StringBuffer,c=0;c<a.length;c++){var f=a.substring(c,
+c+1);jalview.schemes.ResidueProperties.toDssp3State.containsKey(f)?b.append(jalview.schemes.ResidueProperties.toDssp3State.get(f)):b.append(" ")}return b.toString()},"~S");c$.getRNASecStrucState=d(c$,"getRNASecStrucState",function(a){if(null==a)return null;for(var b=new StringBuffer,c=0;c<a.length;c++){var f=a.substring(c,c+1);jalview.schemes.ResidueProperties.toRNAssState.containsKey(f)?b.append(f):b.append(" ")}return b.toString()},"~S");c$.isCloseParenRNA=d(c$,"isCloseParenRNA",function(a){return jalview.schemes.ResidueProperties.RNAcloseParen[a.charCodeAt(0)]},
+"~S");c$.getResidues=d(c$,"getResidues",function(a,b){var c=new java.util.ArrayList;if(a)for(var f,l=jalview.schemes.ResidueProperties.nucleotideName.keySet().iterator();l.hasNext()&&((f=l.next())||1);){var d=jalview.schemes.ResidueProperties.nucleotideIndex[f.charCodeAt(0)];!b&&4<d||10<=d||(f=f.toUpperCase(),c.contains(f)||c.add(f))}else for(f=jalview.schemes.ResidueProperties.aa3Hash.keySet().iterator();f.hasNext()&&((l=f.next())||1);)d=jalview.schemes.ResidueProperties.aa3Hash.get(l).intValue(),
+!b&&20<=d||23<=d||(l=l.toUpperCase(),c.contains(l)||c.add(l));return c},"~B,~B");c$.scoreMatrices=c$.prototype.scoreMatrices=new java.util.Hashtable;G(c$,"aaIndex",null,"nucleotideIndex",null,"purinepyrimidineIndex",null);c$.aa3Hash=c$.prototype.aa3Hash=new java.util.HashMap;c$.aa2Triplet=c$.prototype.aa2Triplet=new java.util.HashMap;c$.nucleotideName=c$.prototype.nucleotideName=new java.util.HashMap;jalview.schemes.ResidueProperties.aaIndex=w(255,0);for(var a=0;255>a;a++)jalview.schemes.ResidueProperties.aaIndex[a]=
+23;jalview.schemes.ResidueProperties.aaIndex[65]=0;jalview.schemes.ResidueProperties.aaIndex[82]=1;jalview.schemes.ResidueProperties.aaIndex[78]=2;jalview.schemes.ResidueProperties.aaIndex[68]=3;jalview.schemes.ResidueProperties.aaIndex[67]=4;jalview.schemes.ResidueProperties.aaIndex[81]=5;jalview.schemes.ResidueProperties.aaIndex[69]=6;jalview.schemes.ResidueProperties.aaIndex[71]=7;jalview.schemes.ResidueProperties.aaIndex[72]=8;jalview.schemes.ResidueProperties.aaIndex[73]=9;jalview.schemes.ResidueProperties.aaIndex[76]=
+10;jalview.schemes.ResidueProperties.aaIndex[75]=11;jalview.schemes.ResidueProperties.aaIndex[77]=12;jalview.schemes.ResidueProperties.aaIndex[70]=13;jalview.schemes.ResidueProperties.aaIndex[80]=14;jalview.schemes.ResidueProperties.aaIndex[83]=15;jalview.schemes.ResidueProperties.aaIndex[84]=16;jalview.schemes.ResidueProperties.aaIndex[87]=17;jalview.schemes.ResidueProperties.aaIndex[89]=18;jalview.schemes.ResidueProperties.aaIndex[86]=19;jalview.schemes.ResidueProperties.aaIndex[66]=20;jalview.schemes.ResidueProperties.aaIndex[90]=
+21;jalview.schemes.ResidueProperties.aaIndex[88]=22;jalview.schemes.ResidueProperties.aaIndex[85]=22;jalview.schemes.ResidueProperties.aaIndex[97]=0;jalview.schemes.ResidueProperties.aaIndex[114]=1;jalview.schemes.ResidueProperties.aaIndex[110]=2;jalview.schemes.ResidueProperties.aaIndex[100]=3;jalview.schemes.ResidueProperties.aaIndex[99]=4;jalview.schemes.ResidueProperties.aaIndex[113]=5;jalview.schemes.ResidueProperties.aaIndex[101]=6;jalview.schemes.ResidueProperties.aaIndex[103]=7;jalview.schemes.ResidueProperties.aaIndex[104]=
+8;jalview.schemes.ResidueProperties.aaIndex[105]=9;jalview.schemes.ResidueProperties.aaIndex[108]=10;jalview.schemes.ResidueProperties.aaIndex[107]=11;jalview.schemes.ResidueProperties.aaIndex[109]=12;jalview.schemes.ResidueProperties.aaIndex[102]=13;jalview.schemes.ResidueProperties.aaIndex[112]=14;jalview.schemes.ResidueProperties.aaIndex[115]=15;jalview.schemes.ResidueProperties.aaIndex[116]=16;jalview.schemes.ResidueProperties.aaIndex[119]=17;jalview.schemes.ResidueProperties.aaIndex[121]=18;
+jalview.schemes.ResidueProperties.aaIndex[118]=19;jalview.schemes.ResidueProperties.aaIndex[98]=20;jalview.schemes.ResidueProperties.aaIndex[122]=21;jalview.schemes.ResidueProperties.aaIndex[120]=22;jalview.schemes.ResidueProperties.aaIndex[117]=22;G(c$,"maxProteinIndex",23,"maxNucleotideIndex",10);jalview.schemes.ResidueProperties.nucleotideIndex=w(255,0);for(a=0;255>a;a++)jalview.schemes.ResidueProperties.nucleotideIndex[a]=10;jalview.schemes.ResidueProperties.nucleotideIndex[65]=0;jalview.schemes.ResidueProperties.nucleotideIndex[97]=
+0;jalview.schemes.ResidueProperties.nucleotideIndex[67]=1;jalview.schemes.ResidueProperties.nucleotideIndex[99]=1;jalview.schemes.ResidueProperties.nucleotideIndex[71]=2;jalview.schemes.ResidueProperties.nucleotideIndex[103]=2;jalview.schemes.ResidueProperties.nucleotideIndex[84]=3;jalview.schemes.ResidueProperties.nucleotideIndex[116]=3;jalview.schemes.ResidueProperties.nucleotideIndex[85]=4;jalview.schemes.ResidueProperties.nucleotideIndex[117]=4;jalview.schemes.ResidueProperties.nucleotideIndex[73]=
+5;jalview.schemes.ResidueProperties.nucleotideIndex[105]=5;jalview.schemes.ResidueProperties.nucleotideIndex[88]=6;jalview.schemes.ResidueProperties.nucleotideIndex[120]=6;jalview.schemes.ResidueProperties.nucleotideIndex[82]=7;jalview.schemes.ResidueProperties.nucleotideIndex[114]=7;jalview.schemes.ResidueProperties.nucleotideIndex[89]=8;jalview.schemes.ResidueProperties.nucleotideIndex[121]=8;jalview.schemes.ResidueProperties.nucleotideIndex[78]=9;jalview.schemes.ResidueProperties.nucleotideIndex[110]=
+9;jalview.schemes.ResidueProperties.nucleotideName.put("A","Adenine");jalview.schemes.ResidueProperties.nucleotideName.put("a","Adenine");jalview.schemes.ResidueProperties.nucleotideName.put("G","Guanine");jalview.schemes.ResidueProperties.nucleotideName.put("g","Guanine");jalview.schemes.ResidueProperties.nucleotideName.put("C","Cytosine");jalview.schemes.ResidueProperties.nucleotideName.put("c","Cytosine");jalview.schemes.ResidueProperties.nucleotideName.put("T","Thymine");jalview.schemes.ResidueProperties.nucleotideName.put("t",
+"Thymine");jalview.schemes.ResidueProperties.nucleotideName.put("U","Uracil");jalview.schemes.ResidueProperties.nucleotideName.put("u","Uracil");jalview.schemes.ResidueProperties.nucleotideName.put("I","Inosine");jalview.schemes.ResidueProperties.nucleotideName.put("i","Inosine");jalview.schemes.ResidueProperties.nucleotideName.put("X","Xanthine");jalview.schemes.ResidueProperties.nucleotideName.put("x","Xanthine");jalview.schemes.ResidueProperties.nucleotideName.put("R","Unknown Purine");jalview.schemes.ResidueProperties.nucleotideName.put("r",
+"Unknown Purine");jalview.schemes.ResidueProperties.nucleotideName.put("Y","Unknown Pyrimidine");jalview.schemes.ResidueProperties.nucleotideName.put("y","Unknown Pyrimidine");jalview.schemes.ResidueProperties.nucleotideName.put("N","Unknown");jalview.schemes.ResidueProperties.nucleotideName.put("n","Unknown");jalview.schemes.ResidueProperties.nucleotideName.put("W","Weak nucleotide (A or T)");jalview.schemes.ResidueProperties.nucleotideName.put("w","Weak nucleotide (A or T)");jalview.schemes.ResidueProperties.nucleotideName.put("S",
+"Strong nucleotide (G or C)");jalview.schemes.ResidueProperties.nucleotideName.put("s","Strong nucleotide (G or C)");jalview.schemes.ResidueProperties.nucleotideName.put("M","Amino (A or C)");jalview.schemes.ResidueProperties.nucleotideName.put("m","Amino (A or C)");jalview.schemes.ResidueProperties.nucleotideName.put("K","Keto (G or T)");jalview.schemes.ResidueProperties.nucleotideName.put("k","Keto (G or T)");jalview.schemes.ResidueProperties.nucleotideName.put("B","Not A (G or C or T)");jalview.schemes.ResidueProperties.nucleotideName.put("b",
+"Not A (G or C or T)");jalview.schemes.ResidueProperties.nucleotideName.put("H","Not G (A or C or T)");jalview.schemes.ResidueProperties.nucleotideName.put("h","Not G (A or C or T)");jalview.schemes.ResidueProperties.nucleotideName.put("D","Not C (A or G or T)");jalview.schemes.ResidueProperties.nucleotideName.put("d","Not C (A or G or T)");jalview.schemes.ResidueProperties.nucleotideName.put("V","Not T (A or G or C");jalview.schemes.ResidueProperties.nucleotideName.put("v","Not T (A or G or C");
+jalview.schemes.ResidueProperties.purinepyrimidineIndex=w(255,0);for(a=0;255>a;a++)jalview.schemes.ResidueProperties.purinepyrimidineIndex[a]=3;jalview.schemes.ResidueProperties.purinepyrimidineIndex[65]=0;jalview.schemes.ResidueProperties.purinepyrimidineIndex[97]=0;jalview.schemes.ResidueProperties.purinepyrimidineIndex[67]=1;jalview.schemes.ResidueProperties.purinepyrimidineIndex[99]=1;jalview.schemes.ResidueProperties.purinepyrimidineIndex[71]=0;jalview.schemes.ResidueProperties.purinepyrimidineIndex[103]=
+0;jalview.schemes.ResidueProperties.purinepyrimidineIndex[84]=1;jalview.schemes.ResidueProperties.purinepyrimidineIndex[116]=1;jalview.schemes.ResidueProperties.purinepyrimidineIndex[85]=1;jalview.schemes.ResidueProperties.purinepyrimidineIndex[117]=1;jalview.schemes.ResidueProperties.purinepyrimidineIndex[73]=2;jalview.schemes.ResidueProperties.purinepyrimidineIndex[105]=2;jalview.schemes.ResidueProperties.purinepyrimidineIndex[88]=2;jalview.schemes.ResidueProperties.purinepyrimidineIndex[120]=2;
+jalview.schemes.ResidueProperties.purinepyrimidineIndex[82]=0;jalview.schemes.ResidueProperties.purinepyrimidineIndex[114]=0;jalview.schemes.ResidueProperties.purinepyrimidineIndex[89]=1;jalview.schemes.ResidueProperties.purinepyrimidineIndex[121]=1;jalview.schemes.ResidueProperties.purinepyrimidineIndex[78]=2;jalview.schemes.ResidueProperties.purinepyrimidineIndex[110]=2;jalview.schemes.ResidueProperties.aa3Hash.put("ALA",new Integer(0));jalview.schemes.ResidueProperties.aa3Hash.put("ARG",new Integer(1));
+jalview.schemes.ResidueProperties.aa3Hash.put("ASN",new Integer(2));jalview.schemes.ResidueProperties.aa3Hash.put("ASP",new Integer(3));jalview.schemes.ResidueProperties.aa3Hash.put("CYS",new Integer(4));jalview.schemes.ResidueProperties.aa3Hash.put("GLN",new Integer(5));jalview.schemes.ResidueProperties.aa3Hash.put("GLU",new Integer(6));jalview.schemes.ResidueProperties.aa3Hash.put("GLY",new Integer(7));jalview.schemes.ResidueProperties.aa3Hash.put("HIS",new Integer(8));jalview.schemes.ResidueProperties.aa3Hash.put("ILE",
+new Integer(9));jalview.schemes.ResidueProperties.aa3Hash.put("LEU",new Integer(10));jalview.schemes.ResidueProperties.aa3Hash.put("LYS",new Integer(11));jalview.schemes.ResidueProperties.aa3Hash.put("MET",new Integer(12));jalview.schemes.ResidueProperties.aa3Hash.put("PHE",new Integer(13));jalview.schemes.ResidueProperties.aa3Hash.put("PRO",new Integer(14));jalview.schemes.ResidueProperties.aa3Hash.put("SER",new Integer(15));jalview.schemes.ResidueProperties.aa3Hash.put("THR",new Integer(16));jalview.schemes.ResidueProperties.aa3Hash.put("TRP",
+new Integer(17));jalview.schemes.ResidueProperties.aa3Hash.put("TYR",new Integer(18));jalview.schemes.ResidueProperties.aa3Hash.put("VAL",new Integer(19));jalview.schemes.ResidueProperties.aa3Hash.put("ASX",new Integer(20));jalview.schemes.ResidueProperties.aa3Hash.put("GLX",new Integer(21));jalview.schemes.ResidueProperties.aa3Hash.put("XAA",new Integer(22));jalview.schemes.ResidueProperties.aa3Hash.put("-",new Integer(23));jalview.schemes.ResidueProperties.aa3Hash.put("*",new Integer(23));jalview.schemes.ResidueProperties.aa3Hash.put(".",
+new Integer(23));jalview.schemes.ResidueProperties.aa3Hash.put(" ",new Integer(23));jalview.schemes.ResidueProperties.aa3Hash.put("Gap",new Integer(23));jalview.schemes.ResidueProperties.aa2Triplet.put("A","ALA");jalview.schemes.ResidueProperties.aa2Triplet.put("a","ALA");jalview.schemes.ResidueProperties.aa2Triplet.put("R","ARG");jalview.schemes.ResidueProperties.aa2Triplet.put("r","ARG");jalview.schemes.ResidueProperties.aa2Triplet.put("N","ASN");jalview.schemes.ResidueProperties.aa2Triplet.put("n",
+"ASN");jalview.schemes.ResidueProperties.aa2Triplet.put("D","ASP");jalview.schemes.ResidueProperties.aa2Triplet.put("d","ASP");jalview.schemes.ResidueProperties.aa2Triplet.put("C","CYS");jalview.schemes.ResidueProperties.aa2Triplet.put("c","CYS");jalview.schemes.ResidueProperties.aa2Triplet.put("Q","GLN");jalview.schemes.ResidueProperties.aa2Triplet.put("q","GLN");jalview.schemes.ResidueProperties.aa2Triplet.put("E","GLU");jalview.schemes.ResidueProperties.aa2Triplet.put("e","GLU");jalview.schemes.ResidueProperties.aa2Triplet.put("G",
+"GLY");jalview.schemes.ResidueProperties.aa2Triplet.put("g","GLY");jalview.schemes.ResidueProperties.aa2Triplet.put("H","HIS");jalview.schemes.ResidueProperties.aa2Triplet.put("h","HIS");jalview.schemes.ResidueProperties.aa2Triplet.put("I","ILE");jalview.schemes.ResidueProperties.aa2Triplet.put("i","ILE");jalview.schemes.ResidueProperties.aa2Triplet.put("L","LEU");jalview.schemes.ResidueProperties.aa2Triplet.put("l","LEU");jalview.schemes.ResidueProperties.aa2Triplet.put("K","LYS");jalview.schemes.ResidueProperties.aa2Triplet.put("k",
+"LYS");jalview.schemes.ResidueProperties.aa2Triplet.put("M","MET");jalview.schemes.ResidueProperties.aa2Triplet.put("m","MET");jalview.schemes.ResidueProperties.aa2Triplet.put("F","PHE");jalview.schemes.ResidueProperties.aa2Triplet.put("f","PHE");jalview.schemes.ResidueProperties.aa2Triplet.put("P","PRO");jalview.schemes.ResidueProperties.aa2Triplet.put("p","PRO");jalview.schemes.ResidueProperties.aa2Triplet.put("S","SER");jalview.schemes.ResidueProperties.aa2Triplet.put("s","SER");jalview.schemes.ResidueProperties.aa2Triplet.put("T",
+"THR");jalview.schemes.ResidueProperties.aa2Triplet.put("t","THR");jalview.schemes.ResidueProperties.aa2Triplet.put("W","TRP");jalview.schemes.ResidueProperties.aa2Triplet.put("w","TRP");jalview.schemes.ResidueProperties.aa2Triplet.put("Y","TYR");jalview.schemes.ResidueProperties.aa2Triplet.put("y","TYR");jalview.schemes.ResidueProperties.aa2Triplet.put("V","VAL");jalview.schemes.ResidueProperties.aa2Triplet.put("v","VAL");G(c$,"aa",E(-1,"ARNDCQEGHILKMFPSTWYVBZX_*. ".split("")));c$.midBlue=c$.prototype.midBlue=
+new java.awt.Color(100,100,255);c$.scaleColours=c$.prototype.scaleColours=new java.util.Vector;jalview.schemes.ResidueProperties.scaleColours.addElement(new java.awt.Color(114,0,147));jalview.schemes.ResidueProperties.scaleColours.addElement(new java.awt.Color(156,0,98));jalview.schemes.ResidueProperties.scaleColours.addElement(new java.awt.Color(190,0,0));jalview.schemes.ResidueProperties.scaleColours.addElement(java.awt.Color.red);jalview.schemes.ResidueProperties.scaleColours.addElement(new java.awt.Color(255,
+125,0));jalview.schemes.ResidueProperties.scaleColours.addElement(java.awt.Color.orange);jalview.schemes.ResidueProperties.scaleColours.addElement(new java.awt.Color(255,194,85));jalview.schemes.ResidueProperties.scaleColours.addElement(java.awt.Color.yellow);jalview.schemes.ResidueProperties.scaleColours.addElement(new java.awt.Color(255,255,181));jalview.schemes.ResidueProperties.scaleColours.addElement(java.awt.Color.white);c$.taylor=c$.prototype.taylor=E(-1,[new java.awt.Color(204,255,0),new java.awt.Color(0,
+0,255),new java.awt.Color(204,0,255),new java.awt.Color(255,0,0),new java.awt.Color(255,255,0),new java.awt.Color(255,0,204),new java.awt.Color(255,0,102),new java.awt.Color(255,153,0),new java.awt.Color(0,102,255),new java.awt.Color(102,255,0),new java.awt.Color(51,255,0),new java.awt.Color(102,0,255),new java.awt.Color(0,255,0),new java.awt.Color(0,255,102),new java.awt.Color(255,204,0),new java.awt.Color(255,51,0),new java.awt.Color(255,102,0),new java.awt.Color(0,204,255),new java.awt.Color(0,
+255,204),new java.awt.Color(153,255,0),java.awt.Color.white,java.awt.Color.white,java.awt.Color.white,java.awt.Color.white,java.awt.Color.white,java.awt.Color.white]);c$.nucleotide=c$.prototype.nucleotide=E(-1,[new java.awt.Color(100,247,63),new java.awt.Color(255,179,64),new java.awt.Color(235,65,60),new java.awt.Color(60,136,238),new java.awt.Color(60,136,238),java.awt.Color.white,java.awt.Color.white,java.awt.Color.white,java.awt.Color.white,java.awt.Color.white,java.awt.Color.white]);c$.purinepyrimidine=
+c$.prototype.purinepyrimidine=E(-1,[new java.awt.Color(255,131,250),new java.awt.Color(64,224,208),java.awt.Color.white,java.awt.Color.white]);c$.zappo=c$.prototype.zappo=E(-1,[java.awt.Color.pink,jalview.schemes.ResidueProperties.midBlue,java.awt.Color.green,java.awt.Color.red,java.awt.Color.yellow,java.awt.Color.green,java.awt.Color.red,java.awt.Color.magenta,jalview.schemes.ResidueProperties.midBlue,java.awt.Color.pink,java.awt.Color.pink,jalview.schemes.ResidueProperties.midBlue,java.awt.Color.pink,
+java.awt.Color.orange,java.awt.Color.magenta,java.awt.Color.green,java.awt.Color.green,java.awt.Color.orange,java.awt.Color.orange,java.awt.Color.pink,java.awt.Color.white,java.awt.Color.white,java.awt.Color.white,java.awt.Color.white,java.awt.Color.white,java.awt.Color.white,java.awt.Color.white]);G(c$,"hyd2",U(-1,[0.62,0.29,-0.9,-0.74,1.19,0.48,-0.4,1.38,-1.5,1.06,0.64,-0.78,0.12,-0.85,-2.53,-0.18,-0.05,1.08,0.81,0,0.26,0,0]),"helix",U(-1,[1.42,0.98,0.67,1.01,0.7,1.11,1.51,0.57,1,1.08,1.21,1.16,
+1.45,1.13,0.57,0.77,0.83,1.08,0.69,1.06,0.84,1.31,1,0]),"helixmin",0.57,"helixmax",1.51,"strand",U(-1,[0.83,0.93,0.89,0.54,1.19,1.1,0.37,0.75,0.87,1.6,1.3,0.74,1.05,1.38,0.55,0.75,1.19,1.37,1.47,1.7,0.72,0.74,1,0]),"strandmin",0.37,"strandmax",1.7,"turn",U(-1,[0.66,0.95,1.56,1.46,1.19,0.98,0.74,1.56,0.95,0.47,0.59,1.01,0.6,0.6,1.52,1.43,0.96,0.96,1.14,0.5,1.51,0.86,1,0,0]),"turnmin",0.47,"turnmax",1.56,"buried",U(-1,[1.7,0.1,0.4,0.4,4.6,0.3,0.3,1.8,0.8,3.1,2.4,0.05,1.9,2.2,0.6,0.8,0.7,1.6,0.5,2.9,
+0.4,0.3,1.358,0]),"buriedmin",0.05,"buriedmax",4.6,"hyd",U(-1,[1.8,-4.5,-3.5,-3.5,2.5,-3.5,-3.5,-0.4,-3.2,4.5,3.8,-3.9,1.9,2.8,-1.6,-0.8,-0.7,-0.9,-1.3,4.2,-3.5,-3.5,-0.49,0]),"hydmax",4.5,"hydmin",-3.9,"BLOSUM62",E(-1,[w(-1,[4,-1,-2,-2,0,-1,-1,0,-2,-1,-1,-1,-1,-2,-1,1,0,-3,-2,0,-2,-1,0,-4]),w(-1,[-1,5,0,-2,-3,1,0,-2,0,-3,-2,2,-1,-3,-2,-1,-1,-3,-2,-3,-1,0,-1,-4]),w(-1,[-2,0,6,1,-3,0,0,0,1,-3,-3,0,-2,-3,-2,1,0,-4,-2,-3,3,0,-1,-4]),w(-1,[-2,-2,1,6,-3,0,2,-1,-1,-3,-4,-1,-3,-3,-1,0,-1,-4,-3,-3,4,1,-1,
+-4]),w(-1,[0,3,-3,-3,9,-3,-4,-3,-3,-1,-1,-3,-1,-2,-3,-1,-1,-2,-2,-1,-3,-3,-2,-4]),w(-1,[-1,1,0,0,-3,5,2,-2,0,-3,-2,1,0,-3,-1,0,-1,-2,-1,-2,0,3,-1,-4]),w(-1,[-1,0,0,2,-4,2,5,-2,0,-3,-3,1,-2,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4]),w(-1,[0,-2,0,-1,-3,-2,-2,6,-2,-4,-4,-2,-3,-3,-2,0,-2,-2,-3,-3,-1,-2,-1,-4]),w(-1,[-2,0,1,-1,-3,0,0,-2,8,-3,-3,-1,-2,-1,-2,-1,-2,-2,2,-3,0,0,-1,-4]),w(-1,[-1,-3,-3,-3,-1,-3,-3,-4,-3,4,2,-3,1,0,-3,-2,-1,-3,-1,3,-3,-3,-1,-4]),w(-1,[-1,-2,-3,-4,-1,-2,-3,-4,-3,2,4,-2,2,0,-3,-2,-1,-2,-1,
+1,-4,-3,-1,-4]),w(-1,[-1,2,0,-1,-3,1,1,-2,-1,-3,-2,5,-1,-3,-1,0,-1,-3,-2,-2,0,1,-1,-4]),w(-1,[-1,-1,-2,-3,-1,0,-2,-3,-2,1,2,-1,5,0,-2,-1,-1,-1,-1,1,-3,-1,-1,-4]),w(-1,[-2,-3,-3,-3,-2,-3,-3,-3,-1,0,0,-3,0,6,-4,-2,-2,1,3,-1,-3,-3,-1,-4]),w(-1,[-1,-2,-2,-1,-3,-1,-1,-2,-2,-3,-3,-1,-2,-4,7,-1,-1,-4,-3,-2,-2,-1,-2,-4]),w(-1,[1,-1,1,0,-1,0,0,0,-1,-2,-2,0,-1,-2,-1,4,1,-3,-2,-2,0,0,0,-4]),w(-1,[0,-1,0,-1,-1,-1,-1,-2,-2,-1,-1,-1,-1,-2,-1,1,5,-2,-2,0,-1,-1,0,-4]),w(-1,[-3,-3,-4,-4,-2,-2,-3,-2,-2,-3,-2,-3,-1,
+1,-4,-3,-2,11,2,-3,-4,-3,-2,-4]),w(-1,[-2,-2,-2,-3,-2,-1,-2,-3,2,-1,-1,-2,-1,3,-3,-2,-2,2,7,-1,-3,-2,-1,-4]),w(-1,[0,-3,-3,-3,-1,-2,-2,-3,-3,3,1,-2,1,-1,-2,-2,0,-3,-1,4,-3,-2,-1,-4]),w(-1,[-2,-1,3,4,-3,0,1,-1,0,-3,-4,0,-3,-3,-2,0,-1,-4,-3,-3,4,1,-1,-4]),w(-1,[-1,0,0,1,-3,3,4,-2,0,-3,-3,1,-1,-3,-1,0,-1,-3,-2,-2,1,4,-1,-4]),w(-1,[0,-1,-1,-1,-2,-1,-1,-1,-1,-1,-1,-1,-1,-1,-2,0,0,-2,-1,-1,-1,-1,-1,-4]),w(-1,[-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,-4,1])]),"PAM250",E(-1,[w(-1,
+[2,-2,0,0,-2,0,0,1,-1,-1,-2,-1,-1,-3,1,1,1,-6,-3,0,0,0,0,-8]),w(-1,[-2,6,0,-1,-4,1,-1,-3,2,-2,-3,3,0,-4,0,0,-1,2,-4,-2,-1,0,-1,-8]),w(-1,[0,0,2,2,-4,1,1,0,2,-2,-3,1,-2,-3,0,1,0,-4,-2,-2,2,1,0,-8]),w(-1,[0,-1,2,4,-5,2,3,1,1,-2,-4,0,-3,-6,-1,0,0,-7,-4,-2,3,3,-1,-8]),w(-1,[-2,-4,-4,-5,12,-5,-5,-3,-3,-2,-6,-5,-5,-4,-3,0,-2,-8,0,-2,-4,-5,-3,-8]),w(-1,[0,1,1,2,-5,4,2,-1,3,-2,-2,1,-1,-5,0,-1,-1,-5,-4,-2,1,3,-1,-8]),w(-1,[0,-1,1,3,-5,2,4,0,1,-2,-3,0,-2,-5,-1,0,0,-7,-4,-2,3,3,-1,-8]),w(-1,[1,-3,0,1,-3,-1,
+0,5,-2,-3,-4,-2,-3,-5,0,1,0,-7,-5,-1,0,0,-1,-8]),w(-1,[-1,2,2,1,-3,3,1,-2,6,-2,-2,0,-2,-2,0,-1,-1,-3,0,-2,1,2,-1,-8]),w(-1,[-1,-2,-2,-2,-2,-2,-2,-3,-2,5,2,-2,2,1,-2,-1,0,-5,-1,4,-2,-2,-1,-8]),w(-1,[-2,-3,-3,-4,-6,-2,-3,-4,-2,2,6,-3,4,2,-3,-3,-2,-2,-1,2,-3,-3,-1,-8]),w(-1,[-1,3,1,0,-5,1,0,-2,0,-2,-3,5,0,-5,-1,0,0,-3,-4,-2,1,0,-1,-8]),w(-1,[-1,0,-2,-3,-5,-1,-2,-3,-2,2,4,0,6,0,-2,-2,-1,-4,-2,2,-2,-2,-1,-8]),w(-1,[-3,-4,-3,-6,-4,-5,-5,-5,-2,1,2,-5,0,9,-5,-3,-3,0,7,-1,-4,-5,-2,-8]),w(-1,[1,0,0,-1,-3,0,
+-1,0,0,-2,-3,-1,-2,-5,6,1,0,-6,-5,-1,-1,0,-1,-8]),w(-1,[1,0,1,0,0,-1,0,1,-1,-1,-3,0,-2,-3,1,2,1,-2,-3,-1,0,0,0,-8]),w(-1,[1,-1,0,0,-2,-1,0,0,-1,0,-2,0,-1,-3,0,1,3,-5,-3,0,0,-1,0,-8]),w(-1,[-6,2,-4,-7,-8,-5,-7,-7,-3,-5,-2,-3,-4,0,-6,-2,-5,17,0,-6,-5,-6,-4,-8]),w(-1,[-3,-4,-2,-4,0,-4,-4,-5,0,-1,-1,-4,-2,7,-5,-3,-3,0,10,-2,-3,-4,-2,-8]),w(-1,[0,-2,-2,-2,-2,-2,-2,-1,-2,4,2,-2,2,-1,-1,-1,0,-6,-2,4,-2,-2,-1,-8]),w(-1,[0,-1,2,3,-4,1,3,0,1,-2,-3,1,-2,-4,-1,0,0,-5,-3,-2,3,2,-1,-8]),w(-1,[0,0,1,3,-5,3,3,0,
+2,-2,-3,0,-2,-5,0,0,-1,-6,-4,-2,2,3,-1,-8]),w(-1,[0,-1,0,-1,-3,-1,-1,-1,-1,-1,-1,-1,-1,-2,-1,0,0,-4,-2,-1,-1,-1,-1,-8]),w(-1,[-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,-8,1])]));c$.ssHash=c$.prototype.ssHash=new java.util.Hashtable;jalview.schemes.ResidueProperties.ssHash.put("H",java.awt.Color.magenta);jalview.schemes.ResidueProperties.ssHash.put("E",java.awt.Color.yellow);jalview.schemes.ResidueProperties.ssHash.put("-",java.awt.Color.white);jalview.schemes.ResidueProperties.ssHash.put(".",
+java.awt.Color.white);jalview.schemes.ResidueProperties.ssHash.put("S",java.awt.Color.cyan);jalview.schemes.ResidueProperties.ssHash.put("T",java.awt.Color.blue);jalview.schemes.ResidueProperties.ssHash.put("G",java.awt.Color.pink);jalview.schemes.ResidueProperties.ssHash.put("I",java.awt.Color.pink);jalview.schemes.ResidueProperties.ssHash.put("B",java.awt.Color.yellow);G(c$,"DNA",E(-1,[w(-1,[10,-8,-8,-8,-8,1,1,1,-8,1,1]),w(-1,[-8,10,-8,-8,-8,1,1,-8,1,1,1]),w(-1,[-8,-8,10,-8,-8,1,1,1,-8,1,1]),w(-1,
+[-8,-8,-8,10,10,1,1,-8,1,1,1]),w(-1,[-8,-8,-8,10,10,1,1,-8,1,1,1]),w(-1,[1,1,1,1,1,10,0,0,0,1,1]),w(-1,[1,1,1,1,1,0,10,0,0,1,1]),w(-1,[1,-8,1,-8,-8,0,0,10,-8,1,1]),w(-1,[-8,1,-8,1,1,0,0,-8,10,1,1]),w(-1,[1,1,1,1,1,1,1,1,1,10,1]),w(-1,[1,1,1,1,1,1,1,1,1,1,1])]));jalview.schemes.ResidueProperties.scoreMatrices.put("BLOSUM62",new jalview.schemes.ScoreMatrix("BLOSUM62",jalview.schemes.ResidueProperties.BLOSUM62,0));jalview.schemes.ResidueProperties.scoreMatrices.put("PAM250",new jalview.schemes.ScoreMatrix("PAM250",
+jalview.schemes.ResidueProperties.PAM250,0));jalview.schemes.ResidueProperties.scoreMatrices.put("DNA",new jalview.schemes.ScoreMatrix("DNA",jalview.schemes.ResidueProperties.DNA,1));c$.pidColours=c$.prototype.pidColours=E(-1,[jalview.schemes.ResidueProperties.midBlue,new java.awt.Color(153,153,255),new java.awt.Color(204,204,255)]);G(c$,"pidThresholds",Q(-1,[80,60,40]));c$.codonHash=c$.prototype.codonHash=new java.util.HashMap;c$.Lys=c$.prototype.Lys=new java.util.ArrayList;c$.Asn=c$.prototype.Asn=
+new java.util.ArrayList;c$.Gln=c$.prototype.Gln=new java.util.ArrayList;c$.His=c$.prototype.His=new java.util.ArrayList;c$.Glu=c$.prototype.Glu=new java.util.ArrayList;c$.Asp=c$.prototype.Asp=new java.util.ArrayList;c$.Tyr=c$.prototype.Tyr=new java.util.ArrayList;c$.Thr=c$.prototype.Thr=new java.util.ArrayList;c$.Pro=c$.prototype.Pro=new java.util.ArrayList;c$.Ala=c$.prototype.Ala=new java.util.ArrayList;c$.Ser=c$.prototype.Ser=new java.util.ArrayList;c$.Arg=c$.prototype.Arg=new java.util.ArrayList;
+c$.Gly=c$.prototype.Gly=new java.util.ArrayList;c$.Trp=c$.prototype.Trp=new java.util.ArrayList;c$.Cys=c$.prototype.Cys=new java.util.ArrayList;c$.Ile=c$.prototype.Ile=new java.util.ArrayList;c$.Met=c$.prototype.Met=new java.util.ArrayList;c$.Leu=c$.prototype.Leu=new java.util.ArrayList;c$.Val=c$.prototype.Val=new java.util.ArrayList;c$.Phe=c$.prototype.Phe=new java.util.ArrayList;c$.STOP=c$.prototype.STOP=new java.util.ArrayList;G(c$,"START","ATG");jalview.schemes.ResidueProperties.codonHash.put("K",
+jalview.schemes.ResidueProperties.Lys);jalview.schemes.ResidueProperties.codonHash.put("N",jalview.schemes.ResidueProperties.Asn);jalview.schemes.ResidueProperties.codonHash.put("Q",jalview.schemes.ResidueProperties.Gln);jalview.schemes.ResidueProperties.codonHash.put("H",jalview.schemes.ResidueProperties.His);jalview.schemes.ResidueProperties.codonHash.put("E",jalview.schemes.ResidueProperties.Glu);jalview.schemes.ResidueProperties.codonHash.put("D",jalview.schemes.ResidueProperties.Asp);jalview.schemes.ResidueProperties.codonHash.put("Y",
+jalview.schemes.ResidueProperties.Tyr);jalview.schemes.ResidueProperties.codonHash.put("T",jalview.schemes.ResidueProperties.Thr);jalview.schemes.ResidueProperties.codonHash.put("P",jalview.schemes.ResidueProperties.Pro);jalview.schemes.ResidueProperties.codonHash.put("A",jalview.schemes.ResidueProperties.Ala);jalview.schemes.ResidueProperties.codonHash.put("S",jalview.schemes.ResidueProperties.Ser);jalview.schemes.ResidueProperties.codonHash.put("R",jalview.schemes.ResidueProperties.Arg);jalview.schemes.ResidueProperties.codonHash.put("G",
+jalview.schemes.ResidueProperties.Gly);jalview.schemes.ResidueProperties.codonHash.put("W",jalview.schemes.ResidueProperties.Trp);jalview.schemes.ResidueProperties.codonHash.put("C",jalview.schemes.ResidueProperties.Cys);jalview.schemes.ResidueProperties.codonHash.put("I",jalview.schemes.ResidueProperties.Ile);jalview.schemes.ResidueProperties.codonHash.put("M",jalview.schemes.ResidueProperties.Met);jalview.schemes.ResidueProperties.codonHash.put("L",jalview.schemes.ResidueProperties.Leu);jalview.schemes.ResidueProperties.codonHash.put("V",
+jalview.schemes.ResidueProperties.Val);jalview.schemes.ResidueProperties.codonHash.put("F",jalview.schemes.ResidueProperties.Phe);jalview.schemes.ResidueProperties.codonHash.put("STOP",jalview.schemes.ResidueProperties.STOP);c$.ambiguityCodes=c$.prototype.ambiguityCodes=new java.util.Hashtable;c$.codonHash2=c$.prototype.codonHash2=new java.util.Hashtable;c$._ambiguityCodes=c$.prototype._ambiguityCodes=new java.util.Hashtable;jalview.schemes.ResidueProperties.ambiguityCodes.put("R",E(-1,["A","G"]));
+jalview.schemes.ResidueProperties.ambiguityCodes.put("Y",E(-1,["T","C"]));jalview.schemes.ResidueProperties.ambiguityCodes.put("W",E(-1,["A","T"]));jalview.schemes.ResidueProperties.ambiguityCodes.put("S",E(-1,["G","C"]));jalview.schemes.ResidueProperties.ambiguityCodes.put("M",E(-1,["A","C"]));jalview.schemes.ResidueProperties.ambiguityCodes.put("K",E(-1,["G","T"]));jalview.schemes.ResidueProperties.ambiguityCodes.put("H",E(-1,["A","T","C"]));jalview.schemes.ResidueProperties.ambiguityCodes.put("B",
+E(-1,["G","T","C"]));jalview.schemes.ResidueProperties.ambiguityCodes.put("V",E(-1,["G","A","C"]));jalview.schemes.ResidueProperties.ambiguityCodes.put("D",E(-1,["G","A","T"]));jalview.schemes.ResidueProperties.ambiguityCodes.put("N",E(-1,["G","A","T","C"]));jalview.schemes.ResidueProperties.codonHash2.put("AAA","K");jalview.schemes.ResidueProperties.codonHash2.put("AAG","K");jalview.schemes.ResidueProperties.codonHash2.put("AAC","N");jalview.schemes.ResidueProperties.codonHash2.put("AAT","N");jalview.schemes.ResidueProperties.codonHash2.put("CAA",
+"Q");jalview.schemes.ResidueProperties.codonHash2.put("CAG","Q");jalview.schemes.ResidueProperties.codonHash2.put("CAC","H");jalview.schemes.ResidueProperties.codonHash2.put("CAT","H");jalview.schemes.ResidueProperties.codonHash2.put("GAA","E");jalview.schemes.ResidueProperties.codonHash2.put("GAG","E");jalview.schemes.ResidueProperties.codonHash2.put("GAC","D");jalview.schemes.ResidueProperties.codonHash2.put("GAT","D");jalview.schemes.ResidueProperties.codonHash2.put("TAC","Y");jalview.schemes.ResidueProperties.codonHash2.put("TAT",
+"Y");jalview.schemes.ResidueProperties.codonHash2.put("ACA","T");jalview.schemes.ResidueProperties.codonHash2.put("ACC","T");jalview.schemes.ResidueProperties.codonHash2.put("ACT","T");jalview.schemes.ResidueProperties.codonHash2.put("ACG","T");jalview.schemes.ResidueProperties.codonHash2.put("CCA","P");jalview.schemes.ResidueProperties.codonHash2.put("CCG","P");jalview.schemes.ResidueProperties.codonHash2.put("CCC","P");jalview.schemes.ResidueProperties.codonHash2.put("CCT","P");jalview.schemes.ResidueProperties.codonHash2.put("GCA",
+"A");jalview.schemes.ResidueProperties.codonHash2.put("GCG","A");jalview.schemes.ResidueProperties.codonHash2.put("GCC","A");jalview.schemes.ResidueProperties.codonHash2.put("GCT","A");jalview.schemes.ResidueProperties.codonHash2.put("TCA","S");jalview.schemes.ResidueProperties.codonHash2.put("TCG","S");jalview.schemes.ResidueProperties.codonHash2.put("TCC","S");jalview.schemes.ResidueProperties.codonHash2.put("TCT","S");jalview.schemes.ResidueProperties.codonHash2.put("AGC","S");jalview.schemes.ResidueProperties.codonHash2.put("AGT",
+"S");jalview.schemes.ResidueProperties.codonHash2.put("AGA","R");jalview.schemes.ResidueProperties.codonHash2.put("AGG","R");jalview.schemes.ResidueProperties.codonHash2.put("CGA","R");jalview.schemes.ResidueProperties.codonHash2.put("CGG","R");jalview.schemes.ResidueProperties.codonHash2.put("CGC","R");jalview.schemes.ResidueProperties.codonHash2.put("CGT","R");jalview.schemes.ResidueProperties.codonHash2.put("GGA","G");jalview.schemes.ResidueProperties.codonHash2.put("GGG","G");jalview.schemes.ResidueProperties.codonHash2.put("GGC",
+"G");jalview.schemes.ResidueProperties.codonHash2.put("GGT","G");jalview.schemes.ResidueProperties.codonHash2.put("TGA","*");jalview.schemes.ResidueProperties.codonHash2.put("TAA","*");jalview.schemes.ResidueProperties.codonHash2.put("TAG","*");jalview.schemes.ResidueProperties.codonHash2.put("TGG","W");jalview.schemes.ResidueProperties.codonHash2.put("TGC","C");jalview.schemes.ResidueProperties.codonHash2.put("TGT","C");jalview.schemes.ResidueProperties.codonHash2.put("ATA","I");jalview.schemes.ResidueProperties.codonHash2.put("ATC",
+"I");jalview.schemes.ResidueProperties.codonHash2.put("ATT","I");jalview.schemes.ResidueProperties.codonHash2.put("ATG","M");jalview.schemes.ResidueProperties.codonHash2.put("CTA","L");jalview.schemes.ResidueProperties.codonHash2.put("CTG","L");jalview.schemes.ResidueProperties.codonHash2.put("CTC","L");jalview.schemes.ResidueProperties.codonHash2.put("CTT","L");jalview.schemes.ResidueProperties.codonHash2.put("TTA","L");jalview.schemes.ResidueProperties.codonHash2.put("TTG","L");jalview.schemes.ResidueProperties.codonHash2.put("GTA",
+"V");jalview.schemes.ResidueProperties.codonHash2.put("GTG","V");jalview.schemes.ResidueProperties.codonHash2.put("GTC","V");jalview.schemes.ResidueProperties.codonHash2.put("GTT","V");jalview.schemes.ResidueProperties.codonHash2.put("TTC","F");jalview.schemes.ResidueProperties.codonHash2.put("TTT","F");jalview.schemes.ResidueProperties.buildAmbiguityCodonSet();jalview.schemes.ResidueProperties.Lys.add("AAA");jalview.schemes.ResidueProperties.Lys.add("AAG");jalview.schemes.ResidueProperties.Asn.add("AAC");
+jalview.schemes.ResidueProperties.Asn.add("AAT");jalview.schemes.ResidueProperties.Gln.add("CAA");jalview.schemes.ResidueProperties.Gln.add("CAG");jalview.schemes.ResidueProperties.His.add("CAC");jalview.schemes.ResidueProperties.His.add("CAT");jalview.schemes.ResidueProperties.Glu.add("GAA");jalview.schemes.ResidueProperties.Glu.add("GAG");jalview.schemes.ResidueProperties.Asp.add("GAC");jalview.schemes.ResidueProperties.Asp.add("GAT");jalview.schemes.ResidueProperties.Tyr.add("TAC");jalview.schemes.ResidueProperties.Tyr.add("TAT");
+jalview.schemes.ResidueProperties.Thr.add("ACA");jalview.schemes.ResidueProperties.Thr.add("ACG");jalview.schemes.ResidueProperties.Thr.add("ACC");jalview.schemes.ResidueProperties.Thr.add("ACT");jalview.schemes.ResidueProperties.Pro.add("CCA");jalview.schemes.ResidueProperties.Pro.add("CCG");jalview.schemes.ResidueProperties.Pro.add("CCC");jalview.schemes.ResidueProperties.Pro.add("CCT");jalview.schemes.ResidueProperties.Ala.add("GCA");jalview.schemes.ResidueProperties.Ala.add("GCG");jalview.schemes.ResidueProperties.Ala.add("GCC");
+jalview.schemes.ResidueProperties.Ala.add("GCT");jalview.schemes.ResidueProperties.Ser.add("TCA");jalview.schemes.ResidueProperties.Ser.add("TCG");jalview.schemes.ResidueProperties.Ser.add("TCC");jalview.schemes.ResidueProperties.Ser.add("TCT");jalview.schemes.ResidueProperties.Ser.add("AGC");jalview.schemes.ResidueProperties.Ser.add("AGT");jalview.schemes.ResidueProperties.Arg.add("AGA");jalview.schemes.ResidueProperties.Arg.add("AGG");jalview.schemes.ResidueProperties.Arg.add("CGA");jalview.schemes.ResidueProperties.Arg.add("CGG");
+jalview.schemes.ResidueProperties.Arg.add("CGC");jalview.schemes.ResidueProperties.Arg.add("CGT");jalview.schemes.ResidueProperties.Gly.add("GGA");jalview.schemes.ResidueProperties.Gly.add("GGG");jalview.schemes.ResidueProperties.Gly.add("GGC");jalview.schemes.ResidueProperties.Gly.add("GGT");jalview.schemes.ResidueProperties.STOP.add("TGA");jalview.schemes.ResidueProperties.STOP.add("TAA");jalview.schemes.ResidueProperties.STOP.add("TAG");jalview.schemes.ResidueProperties.Trp.add("TGG");jalview.schemes.ResidueProperties.Cys.add("TGC");
+jalview.schemes.ResidueProperties.Cys.add("TGT");jalview.schemes.ResidueProperties.Ile.add("ATA");jalview.schemes.ResidueProperties.Ile.add("ATC");jalview.schemes.ResidueProperties.Ile.add("ATT");jalview.schemes.ResidueProperties.Met.add("ATG");jalview.schemes.ResidueProperties.Leu.add("CTA");jalview.schemes.ResidueProperties.Leu.add("CTG");jalview.schemes.ResidueProperties.Leu.add("CTC");jalview.schemes.ResidueProperties.Leu.add("CTT");jalview.schemes.ResidueProperties.Leu.add("TTA");jalview.schemes.ResidueProperties.Leu.add("TTG");
+jalview.schemes.ResidueProperties.Val.add("GTA");jalview.schemes.ResidueProperties.Val.add("GTG");jalview.schemes.ResidueProperties.Val.add("GTC");jalview.schemes.ResidueProperties.Val.add("GTT");jalview.schemes.ResidueProperties.Phe.add("TTC");jalview.schemes.ResidueProperties.Phe.add("TTT");c$.propHash=c$.prototype.propHash=new java.util.Hashtable;c$.hydrophobic=c$.prototype.hydrophobic=new java.util.Hashtable;c$.polar=c$.prototype.polar=new java.util.Hashtable;c$.small=c$.prototype.small=new java.util.Hashtable;
+c$.positive=c$.prototype.positive=new java.util.Hashtable;c$.negative=c$.prototype.negative=new java.util.Hashtable;c$.charged=c$.prototype.charged=new java.util.Hashtable;c$.aromatic=c$.prototype.aromatic=new java.util.Hashtable;c$.aliphatic=c$.prototype.aliphatic=new java.util.Hashtable;c$.tiny=c$.prototype.tiny=new java.util.Hashtable;c$.proline=c$.prototype.proline=new java.util.Hashtable;jalview.schemes.ResidueProperties.hydrophobic.put("I",new Integer(1));jalview.schemes.ResidueProperties.hydrophobic.put("L",
+new Integer(1));jalview.schemes.ResidueProperties.hydrophobic.put("V",new Integer(1));jalview.schemes.ResidueProperties.hydrophobic.put("C",new Integer(1));jalview.schemes.ResidueProperties.hydrophobic.put("A",new Integer(1));jalview.schemes.ResidueProperties.hydrophobic.put("G",new Integer(1));jalview.schemes.ResidueProperties.hydrophobic.put("M",new Integer(1));jalview.schemes.ResidueProperties.hydrophobic.put("F",new Integer(1));jalview.schemes.ResidueProperties.hydrophobic.put("Y",new Integer(1));
+jalview.schemes.ResidueProperties.hydrophobic.put("W",new Integer(1));jalview.schemes.ResidueProperties.hydrophobic.put("H",new Integer(1));jalview.schemes.ResidueProperties.hydrophobic.put("K",new Integer(1));jalview.schemes.ResidueProperties.hydrophobic.put("X",new Integer(1));jalview.schemes.ResidueProperties.hydrophobic.put("-",new Integer(1));jalview.schemes.ResidueProperties.hydrophobic.put("*",new Integer(1));jalview.schemes.ResidueProperties.hydrophobic.put("R",new Integer(0));jalview.schemes.ResidueProperties.hydrophobic.put("E",
+new Integer(0));jalview.schemes.ResidueProperties.hydrophobic.put("Q",new Integer(0));jalview.schemes.ResidueProperties.hydrophobic.put("D",new Integer(0));jalview.schemes.ResidueProperties.hydrophobic.put("N",new Integer(0));jalview.schemes.ResidueProperties.hydrophobic.put("S",new Integer(0));jalview.schemes.ResidueProperties.hydrophobic.put("T",new Integer(0));jalview.schemes.ResidueProperties.hydrophobic.put("P",new Integer(0));jalview.schemes.ResidueProperties.polar.put("Y",new Integer(1));jalview.schemes.ResidueProperties.polar.put("W",
+new Integer(1));jalview.schemes.ResidueProperties.polar.put("H",new Integer(1));jalview.schemes.ResidueProperties.polar.put("K",new Integer(1));jalview.schemes.ResidueProperties.polar.put("R",new Integer(1));jalview.schemes.ResidueProperties.polar.put("E",new Integer(1));jalview.schemes.ResidueProperties.polar.put("Q",new Integer(1));jalview.schemes.ResidueProperties.polar.put("D",new Integer(1));jalview.schemes.ResidueProperties.polar.put("N",new Integer(1));jalview.schemes.ResidueProperties.polar.put("S",
+new Integer(1));jalview.schemes.ResidueProperties.polar.put("T",new Integer(1));jalview.schemes.ResidueProperties.polar.put("X",new Integer(1));jalview.schemes.ResidueProperties.polar.put("-",new Integer(1));jalview.schemes.ResidueProperties.polar.put("*",new Integer(1));jalview.schemes.ResidueProperties.polar.put("I",new Integer(0));jalview.schemes.ResidueProperties.polar.put("L",new Integer(0));jalview.schemes.ResidueProperties.polar.put("V",new Integer(0));jalview.schemes.ResidueProperties.polar.put("C",
+new Integer(0));jalview.schemes.ResidueProperties.polar.put("A",new Integer(0));jalview.schemes.ResidueProperties.polar.put("G",new Integer(0));jalview.schemes.ResidueProperties.polar.put("M",new Integer(0));jalview.schemes.ResidueProperties.polar.put("F",new Integer(0));jalview.schemes.ResidueProperties.polar.put("P",new Integer(0));jalview.schemes.ResidueProperties.small.put("I",new Integer(0));jalview.schemes.ResidueProperties.small.put("L",new Integer(0));jalview.schemes.ResidueProperties.small.put("V",
+new Integer(1));jalview.schemes.ResidueProperties.small.put("C",new Integer(1));jalview.schemes.ResidueProperties.small.put("A",new Integer(1));jalview.schemes.ResidueProperties.small.put("G",new Integer(1));jalview.schemes.ResidueProperties.small.put("M",new Integer(0));jalview.schemes.ResidueProperties.small.put("F",new Integer(0));jalview.schemes.ResidueProperties.small.put("Y",new Integer(0));jalview.schemes.ResidueProperties.small.put("W",new Integer(0));jalview.schemes.ResidueProperties.small.put("H",
+new Integer(0));jalview.schemes.ResidueProperties.small.put("K",new Integer(0));jalview.schemes.ResidueProperties.small.put("R",new Integer(0));jalview.schemes.ResidueProperties.small.put("E",new Integer(0));jalview.schemes.ResidueProperties.small.put("Q",new Integer(0));jalview.schemes.ResidueProperties.small.put("D",new Integer(1));jalview.schemes.ResidueProperties.small.put("N",new Integer(1));jalview.schemes.ResidueProperties.small.put("S",new Integer(1));jalview.schemes.ResidueProperties.small.put("T",
+new Integer(1));jalview.schemes.ResidueProperties.small.put("P",new Integer(1));jalview.schemes.ResidueProperties.small.put("-",new Integer(1));jalview.schemes.ResidueProperties.small.put("*",new Integer(1));jalview.schemes.ResidueProperties.positive.put("I",new Integer(0));jalview.schemes.ResidueProperties.positive.put("L",new Integer(0));jalview.schemes.ResidueProperties.positive.put("V",new Integer(0));jalview.schemes.ResidueProperties.positive.put("C",new Integer(0));jalview.schemes.ResidueProperties.positive.put("A",
+new Integer(0));jalview.schemes.ResidueProperties.positive.put("G",new Integer(0));jalview.schemes.ResidueProperties.positive.put("M",new Integer(0));jalview.schemes.ResidueProperties.positive.put("F",new Integer(0));jalview.schemes.ResidueProperties.positive.put("Y",new Integer(0));jalview.schemes.ResidueProperties.positive.put("W",new Integer(0));jalview.schemes.ResidueProperties.positive.put("H",new Integer(1));jalview.schemes.ResidueProperties.positive.put("K",new Integer(1));jalview.schemes.ResidueProperties.positive.put("R",
+new Integer(1));jalview.schemes.ResidueProperties.positive.put("E",new Integer(0));jalview.schemes.ResidueProperties.positive.put("Q",new Integer(0));jalview.schemes.ResidueProperties.positive.put("D",new Integer(0));jalview.schemes.ResidueProperties.positive.put("N",new Integer(0));jalview.schemes.ResidueProperties.positive.put("S",new Integer(0));jalview.schemes.ResidueProperties.positive.put("T",new Integer(0));jalview.schemes.ResidueProperties.positive.put("P",new Integer(0));jalview.schemes.ResidueProperties.positive.put("-",
+new Integer(1));jalview.schemes.ResidueProperties.positive.put("*",new Integer(1));jalview.schemes.ResidueProperties.negative.put("I",new Integer(0));jalview.schemes.ResidueProperties.negative.put("L",new Integer(0));jalview.schemes.ResidueProperties.negative.put("V",new Integer(0));jalview.schemes.ResidueProperties.negative.put("C",new Integer(0));jalview.schemes.ResidueProperties.negative.put("A",new Integer(0));jalview.schemes.ResidueProperties.negative.put("G",new Integer(0));jalview.schemes.ResidueProperties.negative.put("M",
+new Integer(0));jalview.schemes.ResidueProperties.negative.put("F",new Integer(0));jalview.schemes.ResidueProperties.negative.put("Y",new Integer(0));jalview.schemes.ResidueProperties.negative.put("W",new Integer(0));jalview.schemes.ResidueProperties.negative.put("H",new Integer(0));jalview.schemes.ResidueProperties.negative.put("K",new Integer(0));jalview.schemes.ResidueProperties.negative.put("R",new Integer(0));jalview.schemes.ResidueProperties.negative.put("E",new Integer(1));jalview.schemes.ResidueProperties.negative.put("Q",
+new Integer(0));jalview.schemes.ResidueProperties.negative.put("D",new Integer(1));jalview.schemes.ResidueProperties.negative.put("N",new Integer(0));jalview.schemes.ResidueProperties.negative.put("S",new Integer(0));jalview.schemes.ResidueProperties.negative.put("T",new Integer(0));jalview.schemes.ResidueProperties.negative.put("P",new Integer(0));jalview.schemes.ResidueProperties.negative.put("-",new Integer(1));jalview.schemes.ResidueProperties.negative.put("*",new Integer(1));jalview.schemes.ResidueProperties.charged.put("I",
+new Integer(0));jalview.schemes.ResidueProperties.charged.put("L",new Integer(0));jalview.schemes.ResidueProperties.charged.put("V",new Integer(0));jalview.schemes.ResidueProperties.charged.put("C",new Integer(0));jalview.schemes.ResidueProperties.charged.put("A",new Integer(0));jalview.schemes.ResidueProperties.charged.put("G",new Integer(0));jalview.schemes.ResidueProperties.charged.put("M",new Integer(0));jalview.schemes.ResidueProperties.charged.put("F",new Integer(0));jalview.schemes.ResidueProperties.charged.put("Y",
+new Integer(0));jalview.schemes.ResidueProperties.charged.put("W",new Integer(0));jalview.schemes.ResidueProperties.charged.put("H",new Integer(1));jalview.schemes.ResidueProperties.charged.put("K",new Integer(1));jalview.schemes.ResidueProperties.charged.put("R",new Integer(1));jalview.schemes.ResidueProperties.charged.put("E",new Integer(1));jalview.schemes.ResidueProperties.charged.put("Q",new Integer(0));jalview.schemes.ResidueProperties.charged.put("D",new Integer(1));jalview.schemes.ResidueProperties.charged.put("N",
+new Integer(0));jalview.schemes.ResidueProperties.charged.put("S",new Integer(0));jalview.schemes.ResidueProperties.charged.put("T",new Integer(0));jalview.schemes.ResidueProperties.charged.put("P",new Integer(0));jalview.schemes.ResidueProperties.charged.put("-",new Integer(1));jalview.schemes.ResidueProperties.charged.put("*",new Integer(1));jalview.schemes.ResidueProperties.aromatic.put("I",new Integer(0));jalview.schemes.ResidueProperties.aromatic.put("L",new Integer(0));jalview.schemes.ResidueProperties.aromatic.put("V",
+new Integer(0));jalview.schemes.ResidueProperties.aromatic.put("C",new Integer(0));jalview.schemes.ResidueProperties.aromatic.put("A",new Integer(0));jalview.schemes.ResidueProperties.aromatic.put("G",new Integer(0));jalview.schemes.ResidueProperties.aromatic.put("M",new Integer(0));jalview.schemes.ResidueProperties.aromatic.put("F",new Integer(1));jalview.schemes.ResidueProperties.aromatic.put("Y",new Integer(1));jalview.schemes.ResidueProperties.aromatic.put("W",new Integer(1));jalview.schemes.ResidueProperties.aromatic.put("H",
+new Integer(1));jalview.schemes.ResidueProperties.aromatic.put("K",new Integer(0));jalview.schemes.ResidueProperties.aromatic.put("R",new Integer(0));jalview.schemes.ResidueProperties.aromatic.put("E",new Integer(0));jalview.schemes.ResidueProperties.aromatic.put("Q",new Integer(0));jalview.schemes.ResidueProperties.aromatic.put("D",new Integer(0));jalview.schemes.ResidueProperties.aromatic.put("N",new Integer(0));jalview.schemes.ResidueProperties.aromatic.put("S",new Integer(0));jalview.schemes.ResidueProperties.aromatic.put("T",
+new Integer(0));jalview.schemes.ResidueProperties.aromatic.put("P",new Integer(0));jalview.schemes.ResidueProperties.aromatic.put("-",new Integer(1));jalview.schemes.ResidueProperties.aromatic.put("*",new Integer(1));jalview.schemes.ResidueProperties.aliphatic.put("I",new Integer(1));jalview.schemes.ResidueProperties.aliphatic.put("L",new Integer(1));jalview.schemes.ResidueProperties.aliphatic.put("V",new Integer(1));jalview.schemes.ResidueProperties.aliphatic.put("C",new Integer(0));jalview.schemes.ResidueProperties.aliphatic.put("A",
+new Integer(0));jalview.schemes.ResidueProperties.aliphatic.put("G",new Integer(0));jalview.schemes.ResidueProperties.aliphatic.put("M",new Integer(0));jalview.schemes.ResidueProperties.aliphatic.put("F",new Integer(0));jalview.schemes.ResidueProperties.aliphatic.put("Y",new Integer(0));jalview.schemes.ResidueProperties.aliphatic.put("W",new Integer(0));jalview.schemes.ResidueProperties.aliphatic.put("H",new Integer(0));jalview.schemes.ResidueProperties.aliphatic.put("K",new Integer(0));jalview.schemes.ResidueProperties.aliphatic.put("R",
+new Integer(0));jalview.schemes.ResidueProperties.aliphatic.put("E",new Integer(0));jalview.schemes.ResidueProperties.aliphatic.put("Q",new Integer(0));jalview.schemes.ResidueProperties.aliphatic.put("D",new Integer(0));jalview.schemes.ResidueProperties.aliphatic.put("N",new Integer(0));jalview.schemes.ResidueProperties.aliphatic.put("S",new Integer(0));jalview.schemes.ResidueProperties.aliphatic.put("T",new Integer(0));jalview.schemes.ResidueProperties.aliphatic.put("P",new Integer(0));jalview.schemes.ResidueProperties.aliphatic.put("-",
+new Integer(1));jalview.schemes.ResidueProperties.aliphatic.put("*",new Integer(1));jalview.schemes.ResidueProperties.tiny.put("I",new Integer(0));jalview.schemes.ResidueProperties.tiny.put("L",new Integer(0));jalview.schemes.ResidueProperties.tiny.put("V",new Integer(0));jalview.schemes.ResidueProperties.tiny.put("C",new Integer(0));jalview.schemes.ResidueProperties.tiny.put("A",new Integer(1));jalview.schemes.ResidueProperties.tiny.put("G",new Integer(1));jalview.schemes.ResidueProperties.tiny.put("M",
+new Integer(0));jalview.schemes.ResidueProperties.tiny.put("F",new Integer(0));jalview.schemes.ResidueProperties.tiny.put("Y",new Integer(0));jalview.schemes.ResidueProperties.tiny.put("W",new Integer(0));jalview.schemes.ResidueProperties.tiny.put("H",new Integer(0));jalview.schemes.ResidueProperties.tiny.put("K",new Integer(0));jalview.schemes.ResidueProperties.tiny.put("R",new Integer(0));jalview.schemes.ResidueProperties.tiny.put("E",new Integer(0));jalview.schemes.ResidueProperties.tiny.put("Q",
+new Integer(0));jalview.schemes.ResidueProperties.tiny.put("D",new Integer(0));jalview.schemes.ResidueProperties.tiny.put("N",new Integer(0));jalview.schemes.ResidueProperties.tiny.put("S",new Integer(1));jalview.schemes.ResidueProperties.tiny.put("T",new Integer(0));jalview.schemes.ResidueProperties.tiny.put("P",new Integer(0));jalview.schemes.ResidueProperties.tiny.put("-",new Integer(1));jalview.schemes.ResidueProperties.tiny.put("*",new Integer(1));jalview.schemes.ResidueProperties.proline.put("I",
+new Integer(0));jalview.schemes.ResidueProperties.proline.put("L",new Integer(0));jalview.schemes.ResidueProperties.proline.put("V",new Integer(0));jalview.schemes.ResidueProperties.proline.put("C",new Integer(0));jalview.schemes.ResidueProperties.proline.put("A",new Integer(0));jalview.schemes.ResidueProperties.proline.put("G",new Integer(0));jalview.schemes.ResidueProperties.proline.put("M",new Integer(0));jalview.schemes.ResidueProperties.proline.put("F",new Integer(0));jalview.schemes.ResidueProperties.proline.put("Y",
+new Integer(0));jalview.schemes.ResidueProperties.proline.put("W",new Integer(0));jalview.schemes.ResidueProperties.proline.put("H",new Integer(0));jalview.schemes.ResidueProperties.proline.put("K",new Integer(0));jalview.schemes.ResidueProperties.proline.put("R",new Integer(0));jalview.schemes.ResidueProperties.proline.put("E",new Integer(0));jalview.schemes.ResidueProperties.proline.put("Q",new Integer(0));jalview.schemes.ResidueProperties.proline.put("D",new Integer(0));jalview.schemes.ResidueProperties.proline.put("N",
+new Integer(0));jalview.schemes.ResidueProperties.proline.put("S",new Integer(0));jalview.schemes.ResidueProperties.proline.put("T",new Integer(0));jalview.schemes.ResidueProperties.proline.put("P",new Integer(1));jalview.schemes.ResidueProperties.proline.put("-",new Integer(1));jalview.schemes.ResidueProperties.proline.put("*",new Integer(1));jalview.schemes.ResidueProperties.propHash.put("hydrophobic",jalview.schemes.ResidueProperties.hydrophobic);jalview.schemes.ResidueProperties.propHash.put("small",
+jalview.schemes.ResidueProperties.small);jalview.schemes.ResidueProperties.propHash.put("positive",jalview.schemes.ResidueProperties.positive);jalview.schemes.ResidueProperties.propHash.put("negative",jalview.schemes.ResidueProperties.negative);jalview.schemes.ResidueProperties.propHash.put("charged",jalview.schemes.ResidueProperties.charged);jalview.schemes.ResidueProperties.propHash.put("aromatic",jalview.schemes.ResidueProperties.aromatic);jalview.schemes.ResidueProperties.propHash.put("aliphatic",
+jalview.schemes.ResidueProperties.aliphatic);jalview.schemes.ResidueProperties.propHash.put("tiny",jalview.schemes.ResidueProperties.tiny);jalview.schemes.ResidueProperties.propHash.put("proline",jalview.schemes.ResidueProperties.proline);jalview.schemes.ResidueProperties.propHash.put("polar",jalview.schemes.ResidueProperties.polar);for(var b=w(23,23,0),c=w(23,23,0),f=w(23,23,0),a=0;23>a;a++){for(var l=0,k=0,g=0,e="",e=jalview.schemes.ResidueProperties.aa.length>a?e+jalview.schemes.ResidueProperties.aa[a]:
+"-",j=a+1;23>j;j++){var n="",n=jalview.schemes.ResidueProperties.aa.length>j?n+jalview.schemes.ResidueProperties.aa[j]:"-";b[a][j]=0;c[a][j]=0;f[a][j]=0;for(var x=jalview.schemes.ResidueProperties.propHash.keys();x.hasMoreElements();){var u=x.nextElement(),D=jalview.schemes.ResidueProperties.propHash.get(u);null!=D.get(e)&&null!=D.get(n)&&(u=D.get(e).intValue(),D=D.get(n).intValue(),c[a][j]+=u==D&&0<u?2:0,c[j][a]+=u==D&&0<u?2:0,b[a][j]+=u==D?2:0,b[j][a]+=u==D?2:0,f[a][j]+=u==D?1+2*u:0,f[j][a]+=u==
+D?1+2*u:0)}l<b[a][j]&&(l=b[a][j]);k<c[a][j]&&(k=c[a][j]);g<f[a][j]&&(g=f[a][j])}b[a][a]=l;c[a][a]=k;f[a][a]=g}jalview.schemes.ResidueProperties.scoreMatrices.put("PID",new jalview.analysis.scoremodels.PIDScoreModel);jalview.schemes.ResidueProperties.scoreMatrices.put("Displayed Features",new jalview.analysis.scoremodels.FeatureScoreModel);G(c$,"toDssp3State",null);jalview.schemes.ResidueProperties.toDssp3State=new java.util.Hashtable;jalview.schemes.ResidueProperties.toDssp3State.put("H","H");jalview.schemes.ResidueProperties.toDssp3State.put("E",
+"E");jalview.schemes.ResidueProperties.toDssp3State.put("C"," ");jalview.schemes.ResidueProperties.toDssp3State.put(" "," ");jalview.schemes.ResidueProperties.toDssp3State.put("T"," ");jalview.schemes.ResidueProperties.toDssp3State.put("B","E");jalview.schemes.ResidueProperties.toDssp3State.put("G","H");jalview.schemes.ResidueProperties.toDssp3State.put("I","H");jalview.schemes.ResidueProperties.toDssp3State.put("X"," ");G(c$,"toRNAssState",null,"RNAcloseParen",X(255,!1));jalview.schemes.ResidueProperties.toRNAssState=
+new java.util.Hashtable;jalview.schemes.ResidueProperties.toRNAssState.put(")","(");jalview.schemes.ResidueProperties.toRNAssState.put("(","(");jalview.schemes.ResidueProperties.toRNAssState.put("]","[");jalview.schemes.ResidueProperties.toRNAssState.put("[","[");jalview.schemes.ResidueProperties.toRNAssState.put("{","{");jalview.schemes.ResidueProperties.toRNAssState.put("}","{");jalview.schemes.ResidueProperties.toRNAssState.put(">",">");jalview.schemes.ResidueProperties.toRNAssState.put("<",">");
+jalview.schemes.ResidueProperties.toRNAssState.put("A","A");jalview.schemes.ResidueProperties.toRNAssState.put("a","A");jalview.schemes.ResidueProperties.toRNAssState.put("B","B");jalview.schemes.ResidueProperties.toRNAssState.put("b","B");jalview.schemes.ResidueProperties.toRNAssState.put("C","C");jalview.schemes.ResidueProperties.toRNAssState.put("c","C");jalview.schemes.ResidueProperties.toRNAssState.put("D","D");jalview.schemes.ResidueProperties.toRNAssState.put("d","D");jalview.schemes.ResidueProperties.toRNAssState.put("E",
+"E");jalview.schemes.ResidueProperties.toRNAssState.put("e","E");jalview.schemes.ResidueProperties.toRNAssState.put("F","F");jalview.schemes.ResidueProperties.toRNAssState.put("f","F");jalview.schemes.ResidueProperties.toRNAssState.put("G","G");jalview.schemes.ResidueProperties.toRNAssState.put("g","G");jalview.schemes.ResidueProperties.toRNAssState.put("H","H");jalview.schemes.ResidueProperties.toRNAssState.put("h","H");jalview.schemes.ResidueProperties.toRNAssState.put("I","I");jalview.schemes.ResidueProperties.toRNAssState.put("i",
+"I");jalview.schemes.ResidueProperties.toRNAssState.put("J","J");jalview.schemes.ResidueProperties.toRNAssState.put("j","J");jalview.schemes.ResidueProperties.toRNAssState.put("K","K");jalview.schemes.ResidueProperties.toRNAssState.put("k","K");jalview.schemes.ResidueProperties.toRNAssState.put("L","L");jalview.schemes.ResidueProperties.toRNAssState.put("l","L");jalview.schemes.ResidueProperties.toRNAssState.put("M","M");jalview.schemes.ResidueProperties.toRNAssState.put("m","M");jalview.schemes.ResidueProperties.toRNAssState.put("N",
+"N");jalview.schemes.ResidueProperties.toRNAssState.put("n","N");jalview.schemes.ResidueProperties.toRNAssState.put("O","O");jalview.schemes.ResidueProperties.toRNAssState.put("o","O");jalview.schemes.ResidueProperties.toRNAssState.put("P","P");jalview.schemes.ResidueProperties.toRNAssState.put("p","P");jalview.schemes.ResidueProperties.toRNAssState.put("Q","Q");jalview.schemes.ResidueProperties.toRNAssState.put("q","Q");jalview.schemes.ResidueProperties.toRNAssState.put("R","R");jalview.schemes.ResidueProperties.toRNAssState.put("r",
+"R");jalview.schemes.ResidueProperties.toRNAssState.put("S","S");jalview.schemes.ResidueProperties.toRNAssState.put("s","S");jalview.schemes.ResidueProperties.toRNAssState.put("T","T");jalview.schemes.ResidueProperties.toRNAssState.put("t","T");jalview.schemes.ResidueProperties.toRNAssState.put("U","U");jalview.schemes.ResidueProperties.toRNAssState.put("u","U");jalview.schemes.ResidueProperties.toRNAssState.put("V","V");jalview.schemes.ResidueProperties.toRNAssState.put("v","V");jalview.schemes.ResidueProperties.toRNAssState.put("W",
+"W");jalview.schemes.ResidueProperties.toRNAssState.put("w","W");jalview.schemes.ResidueProperties.toRNAssState.put("X","X");jalview.schemes.ResidueProperties.toRNAssState.put("x","X");jalview.schemes.ResidueProperties.toRNAssState.put("Y","Y");jalview.schemes.ResidueProperties.toRNAssState.put("y","Y");jalview.schemes.ResidueProperties.toRNAssState.put("Z","Z");jalview.schemes.ResidueProperties.toRNAssState.put("z","Z");for(a=0;a<jalview.schemes.ResidueProperties.RNAcloseParen.length;a++)jalview.schemes.ResidueProperties.RNAcloseParen[a]=
+!1;for(var m,a=jalview.schemes.ResidueProperties.toRNAssState.keySet().iterator();a.hasNext()&&((m=a.next())||1);)jalview.schemes.ResidueProperties.RNAcloseParen[m.charCodeAt(0)]=m.charAt(0)!=jalview.schemes.ResidueProperties.toRNAssState.get(m).charAt(0)});p("jalview.analysis.scoremodels");q(["jalview.api.analysis.ScoreModelI","$.ViewBasedAnalysisI"],"jalview.analysis.scoremodels.FeatureScoreModel",["jalview.util.Comparison","java.util.ArrayList","$.Arrays","$.Hashtable"],function(){c$=s(function(){this.fr=
+null;r(this,arguments)},jalview.analysis.scoremodels,"FeatureScoreModel",null,[jalview.api.analysis.ScoreModelI,jalview.api.analysis.ViewBasedAnalysisI]);e(c$,"configureFromAlignmentView",function(a){this.fr=a.cloneFeatureRenderer();return!0},"jalview.api.AlignmentViewPanel");e(c$,"findDistances",function(a){var b=0,c=java.util.Arrays.asList(this.fr.getDisplayedFeatureTypes());null!=c&&(b=c.size());var c=a.getVisibleAlignment(jalview.util.Comparison.GapChars.charAt(0)).getSequencesArray(),f=c.length,
+l=a.getWidth();a=Q(f,f,0);if(0==b){for(var d,g=0;g<a.length&&((d=a[g])||1);g++)for(b=0;b<d.length;d[b++]=0);return a}for(d=0;d<l;d++){for(var e=new java.util.ArrayList,b=0;b<f;b++){for(var j=new java.util.Hashtable,n=this.fr.findFeaturesAtRes(c[b],c[b].findPosition(d)).iterator();n.hasNext()&&((g=n.next())||1);)j.put(g.getType(),g);e.add(j)}for(b=0;b<f-1;b++){0==d&&(a[b][b]=0);for(j=b+1;j<f;j++){var n=0,x=e.get(b),u,D=e.get(j);x.size()>D.size()?u=D:(u=x,x=D);for(var m,D=x.keySet().iterator();D.hasNext()&&
+((m=D.next())||1);)null!=u.get(m)&&n++;a[b][j]+=x.size()+u.size()-2*n;a[j][b]+=a[b][j]}}}for(b=0;b<f;b++)for(j=b+1;j<f;j++)a[b][j]/=l,a[j][b]=a[b][j];return a},"jalview.datamodel.AlignmentView");e(c$,"getName",function(){return"Sequence Feature Similarity"});e(c$,"isDNA",function(){return!0});e(c$,"isProtein",function(){return!0});e(c$,"toString",function(){return"Score between sequences based on hamming distance between binary vectors marking features displayed at each column"})});p("jalview.api.analysis");
+M(jalview.api.analysis,"ScoreModelI");p("jalview.api.analysis");M(jalview.api.analysis,"ViewBasedAnalysisI");p("jalview.analysis.scoremodels");q(["jalview.api.analysis.ScoreModelI"],"jalview.analysis.scoremodels.PIDScoreModel",["jalview.util.Comparison"],function(){c$=B(jalview.analysis.scoremodels,"PIDScoreModel",null,jalview.api.analysis.ScoreModelI);e(c$,"findDistances",function(a){a=a.getSequenceStrings(jalview.util.Comparison.GapChars.charAt(0));for(var b=a.length,c=Q(b,b,0),f=0;f<b-1;f++)for(var l=
+f;l<b;l++)l==f?c[f][f]=0:(c[f][l]=100-jalview.util.Comparison.PID(a[f],a[l]),c[l][f]=c[f][l]);return c},"jalview.datamodel.AlignmentView");e(c$,"getName",function(){return"PID"});e(c$,"isDNA",function(){return!0});e(c$,"isProtein",function(){return!0})});p("jalview.schemes");q(["jalview.analysis.scoremodels.PairwiseSeqScoreModel","jalview.api.analysis.ScoreModelI"],"jalview.schemes.ScoreMatrix",["jalview.schemes.ResidueProperties","java.lang.StringBuffer"],function(){c$=s(function(){this.matrix=this.name=
+null;this.type=0;r(this,arguments)},jalview.schemes,"ScoreMatrix",jalview.analysis.scoremodels.PairwiseSeqScoreModel,jalview.api.analysis.ScoreModelI);e(c$,"getName",function(){return this.name});m(c$,function(a,b,c){t(this,jalview.schemes.ScoreMatrix,[]);this.matrix=b;this.type=c;this.name=a},"~S,~A,~N");e(c$,"isDNA",function(){return 1==this.type});e(c$,"isProtein",function(){return 0==this.type});e(c$,"getMatrix",function(){return this.matrix});d(c$,"getPairwiseScore",function(a,b){return this.getPairwiseScore(a.charAt(0),
+b.charAt(0))},"~S,~S");d(c$,"getPairwiseScore",function(a,b){var c=0;try{var f=0==this.type?jalview.schemes.ResidueProperties.aaIndex[a.charCodeAt(0)]:jalview.schemes.ResidueProperties.nucleotideIndex[a.charCodeAt(0)],l=0==this.type?jalview.schemes.ResidueProperties.aaIndex[b.charCodeAt(0)]:jalview.schemes.ResidueProperties.nucleotideIndex[b.charCodeAt(0)],c=this.matrix[f][l]}catch(d){if(!y(d,Exception))throw d;}return c},"~S,~S");e(c$,"toString",function(){return this.outputMatrix(!1)});d(c$,"outputMatrix",
+function(a){var b=new StringBuffer,c=0==this.type?jalview.schemes.ResidueProperties.aaIndex:jalview.schemes.ResidueProperties.nucleotideIndex,f=0==this.type?23:10,l=!0;a&&b.append('<table border="1">');for(var d="A";"Z">=d;d=String.fromCharCode(d.charCodeAt(0)+1))if(0<=c[d.charCodeAt(0)]&&c[d.charCodeAt(0)]<f){if(l){b.append(a?"<tr><td></td>":"");for(var g="A";"Z">=g;g=String.fromCharCode(g.charCodeAt(0)+1))0<=c[g.charCodeAt(0)]&&c[g.charCodeAt(0)]<f&&b.append((a?"<td>&nbsp;":"\t")+g+(a?"&nbsp;</td>":
+""));l=!1;b.append(a?"</tr>\n":"\n")}a&&b.append("<tr>");b.append((a?"<td>":"")+d+(a?"</td>":""));for(g="A";"Z">=g;g=String.fromCharCode(g.charCodeAt(0)+1))0<=c[g.charCodeAt(0)]&&c[g.charCodeAt(0)]<f&&b.append((a?"<td>":"\t")+this.matrix[c[d.charCodeAt(0)]][c[g.charCodeAt(0)]]+(a?"</td>":""));b.append(a?"</tr>\n":"\n")}a&&b.append("</table>");return b.toString()},"~B")});p("jalview.analysis.scoremodels");q(["jalview.api.analysis.ScoreModelI"],"jalview.analysis.scoremodels.PairwiseSeqScoreModel",["jalview.util.Comparison"],
+function(){c$=B(jalview.analysis.scoremodels,"PairwiseSeqScoreModel",null,jalview.api.analysis.ScoreModelI);e(c$,"findDistances",function(a){a=a.getSequenceStrings(jalview.util.Comparison.GapChars.charAt(0));for(var b=a.length,c=Q(b,b,0),f=0,l=a[0].length,d=0;d<b-1;d++)for(var g=d;g<b;g++){for(var e=0,j=0;j<l;j++)try{e+=this.getPairwiseScore(a[d].charAt(j),a[g].charAt(j))}catch(n){if(y(n,Exception))System.err.println("err creating "+this.getName()+" tree"),n.printStackTrace();else throw n;}c[d][g]=
+e;e>f&&(f=e)}for(d=0;d<b-1;d++)for(g=d;g<b;g++)c[d][g]=f-c[d][g],c[g][d]=c[d][g];return c},"jalview.datamodel.AlignmentView")});p("jalview.datamodel");q(["jalview.datamodel.ASequence","$.SequenceI","jalview.jsdev.RegExp"],"jalview.datamodel.Sequence","jalview.analysis.AlignSeq jalview.datamodel.AlignmentAnnotation $.DBRefEntry $.DBRefSource $.PDBEntry $.SequenceFeature jalview.schemes.ResidueProperties jalview.util.Comparison $.StringUtils java.lang.StringBuffer java.util.ArrayList $.Vector".split(" "),
+function(){c$=s(function(){this.description=this.sequence=this.name=this.datasetSequence=null;this.end=this.start=0;this.annotation=this.rna=this.dbrefs=this.vamsasId=this.pdbIds=null;this.index=-1;this.endrx=this.limitrx=this.sequenceFeatures=null;r(this,arguments)},jalview.datamodel,"Sequence",jalview.datamodel.ASequence,jalview.datamodel.SequenceI);J(c$,function(){this.limitrx=jalview.jsdev.RegExp.newRegex(["[/][0-9]{1,}[-][0-9]{1,}$"]);this.endrx=jalview.jsdev.RegExp.newRegex(["[0-9]{1,}$"])});
+m(c$,function(a,b,c,f){t(this,jalview.datamodel.Sequence,[]);this.initSeqAndName(a,b.toCharArray(),c,f)},"~S,~S,~N,~N");m(c$,function(a,b,c,f){t(this,jalview.datamodel.Sequence,[]);this.initSeqAndName(a,b,c,f)},"~S,~A,~N,~N");d(c$,"initSeqAndName",function(a,b,c,f){this.name=a;this.sequence=b;this.start=c;this.end=f;this.parseId();this.checkValidRange()},"~S,~A,~N,~N");d(c$,"parseId",function(){null==this.name&&(System.err.println("POSSIBLE IMPLEMENTATION ERROR: null sequence name passed to constructor."),
+this.name="");this.limitrx.search(this.name)&&(this.name=this.limitrx.left(),this.endrx.search(this.limitrx.stringMatched()),this.setStart(Integer.parseInt(this.limitrx.stringMatched().substring(1,this.endrx.matchedFrom()-1))),this.setEnd(Integer.parseInt(this.endrx.stringMatched())))});d(c$,"checkValidRange",function(){for(var a=0,b=0;b<this.sequence.length;b++)jalview.util.Comparison.isGap(this.sequence[b])||a++;0<a&&(a+=this.start-1);this.end<a&&(this.end=a)});m(c$,function(a,b){this.construct(a,
+b,1,-1)},"~S,~S");m(c$,function(a){this.construct(a,a.getAnnotation())},"jalview.datamodel.SequenceI");m(c$,function(a,b){t(this,jalview.datamodel.Sequence,[]);this.initSeqFrom(a,b)},"jalview.datamodel.SequenceI,~A");d(c$,"initSeqFrom",function(a,b){this.initSeqAndName(a.getName(),a.getSequence(),a.getStart(),a.getEnd());this.description=a.getDescription();if(null!=a.getSequenceFeatures())for(var c=a.getSequenceFeatures(),f=0;f<c.length;f++)this.addSequenceFeature(new jalview.datamodel.SequenceFeature(c[f]));
+this.setDatasetSequence(a.getDatasetSequence());if(null==this.datasetSequence&&null!=a.getDBRef()){c=a.getDBRef();for(f=0;f<c.length;f++)this.addDBRef(new jalview.datamodel.DBRefEntry(c[f]))}if(null!=a.getAnnotation()){c=a.getAnnotation();for(f=0;f<c.length;f++)if(null!=c[f]){var l=null==b;if(!l)for(var d=0;!l&&d<b.length;d++)l=b[d]===c[f];l&&(l=new jalview.datamodel.AlignmentAnnotation(c[f]),this.addAlignmentAnnotation(l))}}if(null!=a.getPDBId())for(f=a.getPDBId().elements();f.hasMoreElements();)this.addPDBId(new jalview.datamodel.PDBEntry(f.nextElement()))},
+"jalview.datamodel.SequenceI,~A");d(c$,"setSequenceFeatures",function(a){this.sequenceFeatures=a},"~A");e(c$,"addSequenceFeature",function(a){null==this.sequenceFeatures&&(this.sequenceFeatures=[]);for(var b=0;b<this.sequenceFeatures.length;b++)if(this.sequenceFeatures[b].equals(a))return;b=Array(this.sequenceFeatures.length+1);System.arraycopy(this.sequenceFeatures,0,b,0,this.sequenceFeatures.length);b[this.sequenceFeatures.length]=a;this.sequenceFeatures=b},"jalview.datamodel.SequenceFeature");
+e(c$,"deleteFeature",function(a){if(null!=this.sequenceFeatures){for(var b=0,b=0;b<this.sequenceFeatures.length&&!this.sequenceFeatures[b].equals(a);b++);if(b!=this.sequenceFeatures.length)if(a=this.sequenceFeatures.length,2>a)this.sequenceFeatures=null;else{var c=Array(a-1);System.arraycopy(this.sequenceFeatures,0,c,0,b);b<a&&System.arraycopy(this.sequenceFeatures,b+1,c,b,this.sequenceFeatures.length-b-1);this.sequenceFeatures=c}}},"jalview.datamodel.SequenceFeature");d(c$,"getSequenceFeatures",
+function(){for(var a=this.sequenceFeatures,b=this,c=0;null==a&&null!=b.getDatasetSequence()&&10>c++;)b=b.getDatasetSequence(),a=b.sequenceFeatures;return a});e(c$,"addPDBId",function(a){null==this.pdbIds&&(this.pdbIds=new java.util.Vector);this.pdbIds.contains(a)?jalview.datamodel.Sequence.updatePDBEntry(this.pdbIds.get(this.pdbIds.indexOf(a)),a):this.pdbIds.addElement(a)},"jalview.datamodel.PDBEntry");c$.updatePDBEntry=d(c$,"updatePDBEntry",function(a,b){null!=b.getFile()&&a.setFile(b.getFile())},
+"jalview.datamodel.PDBEntry,jalview.datamodel.PDBEntry");d(c$,"setPDBId",function(a){this.pdbIds=a},"java.util.Vector");d(c$,"getPDBId",function(){return this.pdbIds});e(c$,"getDisplayId",function(a){var b=new StringBuffer(this.name);a&&b.append("/"+this.start+"-"+this.end);return b.toString()},"~B");e(c$,"setName",function(a){this.name=a;this.parseId()},"~S");d(c$,"getName",function(){return this.name});e(c$,"setStart",function(a){this.start=a},"~N");d(c$,"getStart",function(){return this.start});
+e(c$,"setEnd",function(a){this.end=a},"~N");d(c$,"getEnd",function(){return this.end});e(c$,"getLength",function(){return this.sequence.length});d(c$,"setSequence",function(a){this.sequence=a.toCharArray();this.checkValidRange()},"~S");d(c$,"getSequenceAsString",function(){return String.instantialize(this.sequence)});d(c$,"getSequenceAsString",function(a,b){return String.instantialize(this.getSequence(a,b))},"~N,~N");d(c$,"getSequence",function(){return this.sequence});d(c$,"getSequence",function(a,
+b){0>a&&(a=0);if(a>=this.sequence.length)return N(0,"\x00");b>=this.sequence.length&&(b=this.sequence.length);var c=N(b-a,"\x00");System.arraycopy(this.sequence,a,c,0,b-a);return c},"~N,~N");e(c$,"getSubSequence",function(a,b){0>a&&(a=0);var c=this.getSequence(a,b);if(0==c.length)return null;var f=this.findPosition(a),l=this.findPosition(b)-1,c=new jalview.datamodel.Sequence(this.getName(),c,f,l);c.setDescription(this.description);null!=this.datasetSequence?c.setDatasetSequence(this.datasetSequence):
+c.setDatasetSequence(this);return c},"~N,~N");e(c$,"getCharAt",function(a){return a<this.sequence.length?this.sequence[a]:" "},"~N");d(c$,"setDescription",function(a){this.description=a},"~S");d(c$,"getDescription",function(){return this.description});e(c$,"findIndex",function(a){for(var b=this.start,c=0;c<this.sequence.length&&b<=this.end&&b<=a;)jalview.util.Comparison.isGap(this.sequence[c])||b++,c++;return b==this.end&&b<a?this.end+1:c},"~N");e(c$,"findPosition",function(a){for(var b=0,c=this.start,
+f=this.sequence.length;b<a&&b<f;)jalview.util.Comparison.isGap(this.sequence[b])||c++,b++;return c},"~N");e(c$,"gapMap",function(){for(var a=jalview.analysis.AlignSeq.extractGaps(jalview.util.Comparison.GapChars,String.instantialize(this.sequence)),a=w(a.length,0),b=0,c=0;b<this.sequence.length;)jalview.util.Comparison.isGap(this.sequence[b])||(a[c++]=b),b++;return a});e(c$,"findPositionMap",function(){for(var a=w(this.sequence.length,0),b=0,c=this.start,f=this.sequence.length;b<f;)a[b]=c,jalview.util.Comparison.isGap(this.sequence[b])||
+c++,b++;return a});e(c$,"getInsertions",function(){for(var a=new java.util.ArrayList,b=-1,c=0,f=this.sequence.length;c<f;)jalview.util.Comparison.isGap(this.sequence[c])?-1==b&&(b=c):-1!=b&&(a.add(w(-1,[b,c-1])),b=-1),c++;-1!=b&&a.add(w(-1,[b,c-1]));return a});e(c$,"deleteChars",function(a,b){var c=this.start,f=this.end;if(!(a>=this.sequence.length||0>a)){for(var l=jalview.util.StringUtils.deleteChars(this.sequence,a,b),d=!1,g=-1,e=-1,j=!1,n=!1,x=a;x<b;x++)if(23!=jalview.schemes.ResidueProperties.aaIndex[this.sequence[x].charCodeAt(0)])if(d)f--;
+else if(n||(e=this.findIndex(this.start)-1,n=!0),e==x){c=this.findPosition(b);break}else if(j||(g=this.findIndex(this.end)-1,j=!0),g<b){f=this.findPosition(a-1);break}else d=!0,f--;d&&null!=this.datasetSequence&&(d=new jalview.datamodel.Sequence(this.datasetSequence),d.deleteChars(a,b),this.datasetSequence=d);this.start=c;this.end=f;this.sequence=l}},"~N,~N");d(c$,"insertCharAt",function(a,b,c){var f=N(this.sequence.length+b,"\x00");a>=this.sequence.length?(System.arraycopy(this.sequence,0,f,0,this.sequence.length),
+a=this.sequence.length):System.arraycopy(this.sequence,0,f,0,a);for(var l=a;0<b;)f[l++]=c,b--;a<this.sequence.length&&System.arraycopy(this.sequence,a,f,l,this.sequence.length-a);this.sequence=f},"~N,~N,~S");d(c$,"insertCharAt",function(a,b){this.insertCharAt(a,1,b)},"~N,~S");e(c$,"getVamsasId",function(){return this.vamsasId});e(c$,"setVamsasId",function(a){this.vamsasId=a},"~S");d(c$,"setDBRef",function(a){this.dbrefs=a},"~A");d(c$,"getDBRef",function(){return null==this.dbrefs&&null!=this.datasetSequence&&
+this!==this.datasetSequence?this.datasetSequence.getDBRef():this.dbrefs});e(c$,"addDBRef",function(a){null==this.dbrefs&&(this.dbrefs=[]);var b,c=this.dbrefs.length;for(b=0;b<c;b++)if(this.dbrefs[b].equalRef(a)){null!=a.getMap()&&null==this.dbrefs[b].getMap()&&(this.dbrefs[b]=a);return}b=Array(c+1);System.arraycopy(this.dbrefs,0,b,0,c);b[b.length-1]=a;this.dbrefs=b},"jalview.datamodel.DBRefEntry");d(c$,"setDatasetSequence",function(a){this.datasetSequence=a},"jalview.datamodel.SequenceI");d(c$,"getDatasetSequence",
+function(){return this.datasetSequence});d(c$,"getAnnotation",function(){return null==this.annotation?null:this.annotation.toArray(Array(this.annotation.size()))});e(c$,"hasAnnotation",function(a){return null==this.annotation?!1:this.annotation.contains(a)},"jalview.datamodel.AlignmentAnnotation");d(c$,"addAlignmentAnnotation",function(a){null==this.annotation&&(this.annotation=new java.util.Vector);this.annotation.contains(a)||this.annotation.addElement(a);a.setSequenceRef(this)},"jalview.datamodel.AlignmentAnnotation");
+e(c$,"removeAlignmentAnnotation",function(a){null!=this.annotation&&(this.annotation.removeElement(a),0==this.annotation.size()&&(this.annotation=null))},"jalview.datamodel.AlignmentAnnotation");d(c$,"isValidDatasetSequence",function(){if(null!=this.datasetSequence)return!1;for(var a=0;a<this.sequence.length;a++)if(jalview.util.Comparison.isGap(this.sequence[a]))return!1;return!0});e(c$,"deriveSequence",function(){var a=new jalview.datamodel.Sequence(this);null!=this.datasetSequence?a.setDatasetSequence(this.datasetSequence):
+this.isValidDatasetSequence()?a.setDatasetSequence(this):(a.setSequence(jalview.analysis.AlignSeq.extractGaps(jalview.util.Comparison.GapChars,String.instantialize(this.sequence))),this.setDatasetSequence(a),a.setSequenceFeatures(this.getSequenceFeatures()),a=this);return a});e(c$,"createDatasetSequence",function(){if(null==this.datasetSequence&&(this.datasetSequence=new jalview.datamodel.Sequence(this.getName(),jalview.analysis.AlignSeq.extractGaps(jalview.util.Comparison.GapChars,this.getSequenceAsString()),
+this.getStart(),this.getEnd()),this.datasetSequence.setSequenceFeatures(this.getSequenceFeatures()),this.datasetSequence.setDescription(this.getDescription()),this.setSequenceFeatures(null),this.datasetSequence.setDBRef(this.getDBRef()),this.setDBRef(null),this.datasetSequence.setPDBId(this.getPDBId()),this.setPDBId(null),this.datasetSequence.updatePDBIds(),null!=this.annotation))for(var a,b=this.annotation.iterator();b.hasNext()&&((a=b.next())||1);){var c=new jalview.datamodel.AlignmentAnnotation(a);
+c.sequenceRef=this.datasetSequence;c.adjustForAlignment();this.datasetSequence.addAlignmentAnnotation(c)}return this.datasetSequence});e(c$,"setAlignmentAnnotation",function(a){null!=this.annotation&&this.annotation.removeAllElements();if(null!=a)for(var b=0;b<a.length;b++)null!=a[b]&&this.addAlignmentAnnotation(a[b])},"~A");d(c$,"getAnnotation",function(a){if(null==this.annotation||0==this.annotation.size())return null;for(var b=new java.util.Vector,c=this.annotation.elements();c.hasMoreElements();){var f=
+c.nextElement();null!=f.label&&f.label.equals(a)&&b.addElement(f)}if(0==b.size())return null;a=Array(b.size());f=0;for(c=b.elements();c.hasMoreElements();)a[f++]=c.nextElement();b.removeAllElements();return a},"~S");d(c$,"updatePDBIds",function(){if(null!=this.datasetSequence)return this.datasetSequence.updatePDBIds();if(null==this.dbrefs||0==this.dbrefs.length)return!1;for(var a=new java.util.Vector,b=0;b<this.dbrefs.length;b++)if(jalview.datamodel.DBRefSource.PDB.equals(this.dbrefs[b].getSource())){var c=
+new jalview.datamodel.PDBEntry;c.setId(this.dbrefs[b].getAccessionId());if(null==this.pdbIds||0==this.pdbIds.size())a.addElement(c);else{for(var f=this.pdbIds.elements(),l=!1;!l&&f.hasMoreElements();)f.nextElement().getId().equals(c.getId())&&(l=!0);l||a.addElement(c)}}if(0<a.size()){for(f=a.elements();f.hasMoreElements();)this.addPDBId(f.nextElement());return!0}return!1});d(c$,"transferAnnotation",function(a,b){if(null!=this.datasetSequence)this.datasetSequence.transferAnnotation(a,b);else if(null!=
+a.getDatasetSequence())this.transferAnnotation(a.getDatasetSequence(),b);else{if(null!=a.getSequenceFeatures())for(var c=a.getSequenceFeatures(),f=0;f<c.length;f++){var l=null!=b?b.locateFeature(c[f]):E(-1,[new jalview.datamodel.SequenceFeature(c[f])]);if(null!=l&&0<l.length)for(var d=0;d<l.length;d++)this.addSequenceFeature(l[d])}if(null!=a.getPDBId())for(c=a.getPDBId().elements();c.hasMoreElements();)f=c.nextElement(),this.addPDBId(f);c=a.getDBRef();if(null!=c)for(f=0;f<c.length;f++)l=new jalview.datamodel.DBRefEntry(c[f]),
+l.getMap(),this.addDBRef(l)}},"jalview.datamodel.SequenceI,jalview.datamodel.Mapping");e(c$,"getIndex",function(){return this.index});e(c$,"setIndex",function(a){this.index=a},"~N");e(c$,"setRNA",function(a){this.rna=a},"jalview.jsdev.api.VarnaRNA");e(c$,"getRNA",function(){return this.rna});e(c$,"getAlignmentAnnotations",function(a,b){var c=new java.util.ArrayList;if(null!=this.annotation)for(var f,l=this.annotation.iterator();l.hasNext()&&((f=l.next())||1);)null!=f.calcId&&(f.calcId.equals(a)&&
+null!=f.label&&f.label.equals(b))&&c.add(f);return c},"~S,~S")});p("jalview.datamodel");q(["jalview.datamodel.ASequenceI"],"jalview.datamodel.ASequence",null,function(){c$=B(jalview.datamodel,"ASequence",null,jalview.datamodel.ASequenceI)});p("jalview.jsdev");q(null,"jalview.jsdev.RegExp",["com.stevesoft.pat.Regex"],function(){c$=s(function(){this.rg=null;r(this,arguments)},jalview.jsdev,"RegExp");c$.newRegex=d(c$,"newRegex",function(a){return new com.stevesoft.pat.Regex(1>a.length?null:a[0],2>a.length?
+"":a[1])},"~A");c$.perlCode=d(c$,"perlCode",function(a){return com.stevesoft.pat.Regex.perlCode(a)},"~S")});p("com.stevesoft.pat");q("com.stevesoft.pat.RegRes $.UniValidator jalview.jsdev.api.RegExpInterface com.stevesoft.pat.NoPattern $.Pthings $.patInt java.util.Hashtable".split(" "),"com.stevesoft.pat.UnicodeW $.UnicodeCurrency $.UnicodeAlpha $.UnicodeUpper $.NUnicodeCurrency $.NUnicodeW $.NUnicodeAlpha $.UnicodeMath $.UnicodeWhite $.UnicodeDigit $.NUnicodeMath $.Regex $.NUnicodeDigit $.NUnicodeWhite $.NUnicodePunct $.UnicodePunct $.UnicodeLower".split(" "),
+"com.stevesoft.pat.Any $.BackG $.BackMatch $.Backup $.Boundary $.Bracket $.CaseMgr $.Ctrl $.Custom $.CustomEndpoint $.DotMulti $.End $.FastMulti $.Group $.MessageManager $.Multi $.NullPattern $.Or $.OrMark $.Prop $.Range $.RegOpt $.RegSyntax $.RegSyntaxError $.ReplaceRule $.Replacer $.Rthings $.Skip $.Skipped $.Start $.StrPos $.lookAhead $.oneChar $.parsePerl $.patInf com.stevesoft.pat.wrap.StringWrap java.lang.NullPointerException $.StringBuffer java.util.BitSet".split(" "),function(){c$=B(com.stevesoft.pat,
+"UnicodePunct",com.stevesoft.pat.UniValidator);e(c$,"validate",function(a,b,c){return b<a.length()&&com.stevesoft.pat.Prop.isPunct(a.charAt(b))?c:-1},"com.stevesoft.pat.StringLike,~N,~N");c$=B(com.stevesoft.pat,"UnicodeWhite",com.stevesoft.pat.UniValidator);e(c$,"validate",function(a,b,c){return b<a.length()&&com.stevesoft.pat.Prop.isWhite(a.charAt(b))?c:-1},"com.stevesoft.pat.StringLike,~N,~N");c$=B(com.stevesoft.pat,"NUnicodePunct",com.stevesoft.pat.UniValidator);e(c$,"validate",function(a,b,c){return b<
+a.length()&&!com.stevesoft.pat.Prop.isPunct(a.charAt(b))?c:-1},"com.stevesoft.pat.StringLike,~N,~N");c$=B(com.stevesoft.pat,"NUnicodeWhite",com.stevesoft.pat.UniValidator);e(c$,"validate",function(a,b,c){return b<a.length()&&!com.stevesoft.pat.Prop.isWhite(a.charAt(b))?c:-1},"com.stevesoft.pat.StringLike,~N,~N");c$=B(com.stevesoft.pat,"UnicodeW",com.stevesoft.pat.UniValidator);e(c$,"validate",function(a,b,c){if(b>=a.length())return-1;a=a.charAt(b);return com.stevesoft.pat.Prop.isAlphabetic(a)||com.stevesoft.pat.Prop.isDecimalDigit(a)||
+"_"==a?c:-1},"com.stevesoft.pat.StringLike,~N,~N");c$=B(com.stevesoft.pat,"NUnicodeW",com.stevesoft.pat.UniValidator);e(c$,"validate",function(a,b,c){if(b>=a.length())return-1;a=a.charAt(b);return!com.stevesoft.pat.Prop.isAlphabetic(a)&&!(com.stevesoft.pat.Prop.isDecimalDigit(a)||"_"==a)?c:-1},"com.stevesoft.pat.StringLike,~N,~N");c$=B(com.stevesoft.pat,"UnicodeDigit",com.stevesoft.pat.UniValidator);e(c$,"validate",function(a,b,c){return b<a.length()&&com.stevesoft.pat.Prop.isDecimalDigit(a.charAt(b))?
+c:-1},"com.stevesoft.pat.StringLike,~N,~N");c$=B(com.stevesoft.pat,"NUnicodeDigit",com.stevesoft.pat.UniValidator);e(c$,"validate",function(a,b,c){return b<a.length()&&!com.stevesoft.pat.Prop.isDecimalDigit(a.charAt(b))?c:-1},"com.stevesoft.pat.StringLike,~N,~N");c$=B(com.stevesoft.pat,"UnicodeMath",com.stevesoft.pat.UniValidator);e(c$,"validate",function(a,b,c){return b<a.length()&&com.stevesoft.pat.Prop.isMath(a.charAt(b))?c:-1},"com.stevesoft.pat.StringLike,~N,~N");c$=B(com.stevesoft.pat,"NUnicodeMath",
+com.stevesoft.pat.UniValidator);e(c$,"validate",function(a,b,c){return b<a.length()&&!com.stevesoft.pat.Prop.isMath(a.charAt(b))?c:-1},"com.stevesoft.pat.StringLike,~N,~N");c$=B(com.stevesoft.pat,"UnicodeCurrency",com.stevesoft.pat.UniValidator);e(c$,"validate",function(a,b,c){return b<a.length()&&com.stevesoft.pat.Prop.isCurrency(a.charAt(b))?c:-1},"com.stevesoft.pat.StringLike,~N,~N");c$=B(com.stevesoft.pat,"NUnicodeCurrency",com.stevesoft.pat.UniValidator);e(c$,"validate",function(a,b,c){return b<
+a.length()&&!com.stevesoft.pat.Prop.isCurrency(a.charAt(b))?c:-1},"com.stevesoft.pat.StringLike,~N,~N");c$=B(com.stevesoft.pat,"UnicodeAlpha",com.stevesoft.pat.UniValidator);e(c$,"validate",function(a,b,c){return b<a.length()&&com.stevesoft.pat.Prop.isAlphabetic(a.charAt(b))?c:-1},"com.stevesoft.pat.StringLike,~N,~N");c$=B(com.stevesoft.pat,"NUnicodeAlpha",com.stevesoft.pat.UniValidator);e(c$,"validate",function(a,b,c){return b<a.length()&&!com.stevesoft.pat.Prop.isAlphabetic(a.charAt(b))?c:-1},"com.stevesoft.pat.StringLike,~N,~N");
+c$=B(com.stevesoft.pat,"UnicodeUpper",com.stevesoft.pat.UniValidator);e(c$,"validate",function(a,b,c){return b<a.length()&&this.isUpper(a.charAt(b))?c:-1},"com.stevesoft.pat.StringLike,~N,~N");d(c$,"isUpper",function(a){return a==com.stevesoft.pat.CaseMgr.toUpperCaseC(a)&&a!=com.stevesoft.pat.CaseMgr.toLowerCaseC(a)},"~S");c$=B(com.stevesoft.pat,"UnicodeLower",com.stevesoft.pat.UniValidator);e(c$,"validate",function(a,b,c){return b<a.length()&&this.isLower(a.charAt(b))?c:-1},"com.stevesoft.pat.StringLike,~N,~N");
+d(c$,"isLower",function(a){return a!=com.stevesoft.pat.CaseMgr.toUpperCaseC(a)&&a==com.stevesoft.pat.CaseMgr.toLowerCaseC(a)},"~S");c$=s(function(){this.rep=this.minMatch=this.thePattern=null;this.ignoreCase=this.dontMatchInQuotes=!1;this.repr=null;this.esc="\\";this.gFlags=this.pt=null;this.gFlagto=0;this.mFlag=this.sFlag=this.gFlag=!1;this.skipper=this.or=this.p=null;r(this,arguments)},com.stevesoft.pat,"Regex",com.stevesoft.pat.RegRes,[jalview.jsdev.api.RegExpInterface,Cloneable]);J(c$,function(){this.thePattern=
+com.stevesoft.pat.Regex.none;this.minMatch=new com.stevesoft.pat.patInt(0);this.pt=new com.stevesoft.pat.Pthings});m(c$,function(a,b){t(this,com.stevesoft.pat.Regex,[]);try{null!=a&&this.compile(a),0<b.length&&(this.rep=com.stevesoft.pat.ReplaceRule.perlCode(b))}catch(c){if(!y(c,com.stevesoft.pat.RegSyntax))throw c;}},"~S,~S");e(c$,"clone",function(){return(new com.stevesoft.pat.Regex(null,"")).cloneFrom(this)});d(c$,"cloneFrom",function(a){this.copyOutOf(a);this.dontMatchInQuotes=a.dontMatchInQuotes;
+this.esc=a.esc;this.ignoreCase=a.ignoreCase;this.gFlag=a.gFlag;this.rep=null==a.rep?null:a.rep.clone();this.thePattern=a.thePattern.clone(new java.util.Hashtable);this.minMatch=a.minMatch;this.skipper=a.skipper;return this},"com.stevesoft.pat.Regex");d(c$,"setDontMatchInQuotes",function(a){this.dontMatchInQuotes=a},"~B");d(c$,"getDontMatchInQuotes",function(){return this.dontMatchInQuotes});e(c$,"setIgnoreCase",function(a){this.ignoreCase=a},"~B");d(c$,"getIgnoreCase",function(){return this.ignoreCase});
+c$.setDefaultMFlag=d(c$,"setDefaultMFlag",function(a){com.stevesoft.pat.Regex.defaultMFlag=a},"~B");c$.getDefaultMFlag=d(c$,"getDefaultMFlag",function(){return com.stevesoft.pat.Regex.defaultMFlag});d(c$,"setReplaceRuleStr",function(a){this.rep=com.stevesoft.pat.ReplaceRule.perlCode(a);this.repr=null},"~S");d(c$,"setReplaceRule",function(a){this.rep=a},"com.stevesoft.pat.ReplaceRule");c$.isDefined=d(c$,"isDefined",function(a){return null!=com.stevesoft.pat.Regex.validators.get(a)},"~S");c$.undefine=
+d(c$,"undefine",function(a){com.stevesoft.pat.Regex.validators.remove(a)},"~S");c$.defineV=d(c$,"defineV",function(a,b,c){c.pattern=b;com.stevesoft.pat.Regex.validators.put(a,c)},"~S,~S,com.stevesoft.pat.Validator");c$.define=d(c$,"define",function(a,b){com.stevesoft.pat.Regex.validators.put(a,b)},"~S,~S");d(c$,"getReplaceRule",function(){return this.rep});d(c$,"_getReplacer",function(){return null==this.repr?this.repr=new com.stevesoft.pat.Replacer:this.repr});d(c$,"getReplacer",function(){null==
+this.repr&&(this.repr=new com.stevesoft.pat.Replacer);this.repr.rh.me=this;this.repr.rh.prev=null;return this.repr});d(c$,"replaceFirst",function(a){return this._getReplacer().replaceFirstRegion(a,this,0,a.length).toString()},"~S");d(c$,"replaceFirstFrom",function(a,b){return this._getReplacer().replaceFirstRegion(a,this,b,a.length).toString()},"~S,~N");d(c$,"replaceFirstRegion",function(a,b,c){return this._getReplacer().replaceFirstRegion(a,this,b,c).toString()},"~S,~N,~N");e(c$,"replaceAll",function(a){return this._getReplacer().replaceAllRegion(a,
+this,0,a.length).toString()},"~S");d(c$,"replaceAllLike",function(a){return this._getReplacer().replaceAllRegion(a,this,0,a.length())},"com.stevesoft.pat.StringLike");d(c$,"replaceAllFrom",function(a,b){return this._getReplacer().replaceAllRegion(a,this,b,a.length).toString()},"~S,~N");d(c$,"replaceAllRegion",function(a,b,c){return this._getReplacer().replaceAllRegion(a,this,b,c).toString()},"~S,~N,~N");d(c$,"compile",function(a){var b=com.stevesoft.pat.parsePerl.codify(a,!0);a=null==b?a:b;this.minMatch=
+null;this.dontMatchInQuotes=this.ignoreCase=!1;var b=new com.stevesoft.pat.Rthings(this),c=b.val,f=a;this.thePattern=com.stevesoft.pat.Regex.none;this.or=this.p=null;this.minMatch=new com.stevesoft.pat.patInt(0);var l=new com.stevesoft.pat.StrPos(a,0);if(l.incMatch("(?e=")){var d=l.c;l.inc();l.match(")")&&(f=com.stevesoft.pat.Regex.reEscape(a.substring(6),d,"\\"))}else"\\"!=this.esc&&(f=com.stevesoft.pat.Regex.reEscape(a,this.esc,"\\"));this.thePattern=this._compile(f,b);this.numSubs_=b.val-c;b.set(this)},
+"~S");d(c$,"equals",function(a){return v(a,com.stevesoft.pat.Regex)?this.toString().equals(a.toString())?K(this,com.stevesoft.pat.Regex,"equals",[a]):!1:K(this,com.stevesoft.pat.Regex,"equals",[a])},"~O");d(c$,"prep",function(a){this.pt.lastPos=this.matchedTo();0>this.pt.lastPos&&(this.pt.lastPos=0);if((null==a?null:a.unwrap())!==(null==this.src?null:a.unwrap()))this.pt.lastPos=0;this.src=a;this.pt.dotDoesntMatchCR=com.stevesoft.pat.Regex.dotDoesntMatchCR&&!this.sFlag;this.pt.mFlag=(new Boolean(this.mFlag|
+com.stevesoft.pat.Regex.defaultMFlag)).valueOf();this.pt.ignoreCase=this.ignoreCase;this.pt.no_check=!1;if(null!=this.pt.marks)for(var b=0;b<this.pt.marks.length;b++)this.pt.marks[b]=-1;this.pt.marks=null;this.pt.nMarks=this.numSubs_;this.pt.src=a;this.dontMatchInQuotes?com.stevesoft.pat.Regex.setCbits(a,this.pt):this.pt.cbits=null;return this.pt},"com.stevesoft.pat.StringLike");d(c$,"matchAt",function(a,b){return this._search(a,b,b)},"~S,~N");d(c$,"matchAtLike",function(a,b){return this._searchLike(a,
+b,b)},"com.stevesoft.pat.StringLike,~N");e(c$,"search",function(a){if(null==a)throw new NullPointerException(com.stevesoft.pat.MessageManager.getString("exception.null_string_given_to_regex_search"));return this._search(a,0,a.length)},"~S");d(c$,"searchLike",function(a){if(null==a)throw new NullPointerException(com.stevesoft.pat.MessageManager.getString("exception.null_string_like_given_to_regex_search"));return this._searchLike(a,0,a.length())},"com.stevesoft.pat.StringLike");d(c$,"reverseSearch",
+function(a){if(null==a)throw new NullPointerException(com.stevesoft.pat.MessageManager.getString("exception.null_string_given_to_regex_reverse_search"));return this._reverseSearch(a,0,a.length)},"~S");d(c$,"reverseSearchLike",function(a){if(null==a)throw new NullPointerException(com.stevesoft.pat.MessageManager.getString("exception.null_string_like_given_to_regex_reverse_search"));return this._reverseSearchLike(a,0,a.length())},"com.stevesoft.pat.StringLike");e(c$,"searchFrom",function(a,b){if(null==
+a)throw new NullPointerException(com.stevesoft.pat.MessageManager.getString("exception.null_string_like_given_to_regex_search_from"));return this._search(a,b,a.length)},"~S,~N");d(c$,"searchFromLike",function(a,b){if(null==a)throw new NullPointerException(com.stevesoft.pat.MessageManager.getString("exception.null_string_like_given_to_regex_search_from"));return this._searchLike(a,b,a.length())},"com.stevesoft.pat.StringLike,~N");d(c$,"searchRegion",function(a,b,c){if(null==a)throw new NullPointerException(com.stevesoft.pat.MessageManager.getString("exception.null_string_like_given_to_regex_search_region"));
+return this._search(a,b,c)},"~S,~N,~N");d(c$,"setGFlag",function(a){this.gFlag=a},"~B");d(c$,"getGFlag",function(){return this.gFlag});d(c$,"getSFlag",function(){return this.sFlag});d(c$,"getMFlag",function(){return this.mFlag});d(c$,"_search",function(a,b,c){return this._searchLike(new com.stevesoft.pat.wrap.StringWrap(a),b,c)},"~S,~N,~N");d(c$,"_searchLike",function(a,b,c){this.gFlag&&(0<this.gFlagto&&null!=this.gFlags&&a.unwrap()===this.gFlags.unwrap())&&(b=this.gFlagto);this.gFlags=null;var f=
+this.prep(a),l=null==this.minMatch?c:c-this.minMatch.i;l<b&&c>=b&&(l=b);if(null==this.skipper)for(;b<=l;b++){if(this.charsMatched_=this.thePattern.matchAt(a,b,f),0<=this.charsMatched_)return this.matchFrom_=this.thePattern.mfrom,this.marks=f.marks,this.gFlagto=this.matchFrom_+this.charsMatched_,this.gFlags=a,this.didMatch_=!0}else for(f.no_check=!0;b<=l;b++){b=this.skipper.find(this.src,b,l);if(0>b){this.charsMatched_=this.matchFrom_=-1;break}this.charsMatched_=this.thePattern.matchAt(a,b,f);if(0<=
+this.charsMatched_)return this.matchFrom_=this.thePattern.mfrom,this.marks=f.marks,this.gFlagto=this.matchFrom_+this.charsMatched_,this.gFlags=a,this.didMatch_=!0}return this.didMatch_=!1},"com.stevesoft.pat.StringLike,~N,~N");d(c$,"_reverseSearch",function(a,b,c){return this._reverseSearchLike(new com.stevesoft.pat.wrap.StringWrap(a),b,c)},"~S,~N,~N");d(c$,"_reverseSearchLike",function(a,b,c){this.gFlag&&(0<this.gFlagto&&a.unwrap()===this.gFlags.unwrap())&&(c=this.gFlagto);this.gFlags=null;for(var f=
+this.prep(a);c>=b;c--)if(this.charsMatched_=this.thePattern.matchAt(a,c,f),0<=this.charsMatched_)return this.matchFrom_=this.thePattern.mfrom,this.marks=f.marks,this.gFlagto=this.matchFrom_-1,this.gFlags=a,this.didMatch_=!0;return this.didMatch_=!1},"com.stevesoft.pat.StringLike,~N,~N");c$.setCbits=d(c$,"setCbits",function(a,b){if(a===com.stevesoft.pat.Regex.lasts)b.cbits=com.stevesoft.pat.Regex.lastbs;else{for(var c=new java.util.BitSet(a.length()),f=" ",l=!1,d=0;d<a.length();d++){l&&c.set(d);var g=
+a.charAt(d);!l&&'"'==g?(f=g,l=!0,c.set(d)):!l&&"'"==g?(f=g,l=!0,c.set(d)):l&&g==f?l=!1:l&&("\\"==g&&d+1<a.length())&&(d++,l&&c.set(d))}b.cbits=com.stevesoft.pat.Regex.lastbs=c;com.stevesoft.pat.Regex.lasts=a}},"com.stevesoft.pat.StringLike,com.stevesoft.pat.Pthings");d(c$,"add",function(a){null==this.p?this.p=a:this.p.add(a)},"com.stevesoft.pat.Pattern");d(c$,"compileSP",function(a,b){if(a.match("["))a.inc(),this.add(this.matchBracket(a));else if(a.match("|"))null==this.or&&(this.or=new com.stevesoft.pat.Or),
+null==this.p&&(this.p=new com.stevesoft.pat.NullPattern),this.or.addOr(this.p),this.p=null;else if(a.incMatch("(?<")){var c=a.getPatInt();null==c&&com.stevesoft.pat.RegSyntaxError.endItAll("No int after (?<");this.add(new com.stevesoft.pat.Backup(c.intValue()));a.match(")")||com.stevesoft.pat.RegSyntaxError.endItAll("No ) after (?<")}else if(a.incMatch("(?>"))c=a.getPatInt(),null==c&&com.stevesoft.pat.RegSyntaxError.endItAll("No int after (?>"),this.add(new com.stevesoft.pat.Backup(-c.intValue())),
+a.match(")")||com.stevesoft.pat.RegSyntaxError.endItAll("No ) after (?<");else if(a.incMatch("(?@")){c=a.c;a.inc();var f=a.c;a.inc();a.match(")")||com.stevesoft.pat.RegSyntaxError.endItAll("(?@ does not have closing paren");this.add(new com.stevesoft.pat.Group(c,f))}else if(a.incMatch("(?#"))for(;!a.match(")");)a.inc();else if(a.dontMatch&&"w"==a.c)c=new com.stevesoft.pat.Bracket(!1),c.addOr(new com.stevesoft.pat.Range("a","z")),c.addOr(new com.stevesoft.pat.Range("A","Z")),c.addOr(new com.stevesoft.pat.Range("0",
+"9")),c.addOr(new com.stevesoft.pat.oneChar("_")),this.add(c);else if(a.dontMatch&&"G"==a.c)this.add(new com.stevesoft.pat.BackG);else if(a.dontMatch&&"s"==a.c)c=new com.stevesoft.pat.Bracket(!1),c.addOr(new com.stevesoft.pat.oneChar(String.fromCharCode(32))),c.addOr(new com.stevesoft.pat.Range(String.fromCharCode(8),String.fromCharCode(10))),c.addOr(new com.stevesoft.pat.oneChar(String.fromCharCode(13))),this.add(c);else if(a.dontMatch&&"d"==a.c)c=new com.stevesoft.pat.Range("0","9"),c.printBrackets=
+!0,this.add(c);else if(a.dontMatch&&"W"==a.c)c=new com.stevesoft.pat.Bracket(!0),c.addOr(new com.stevesoft.pat.Range("a","z")),c.addOr(new com.stevesoft.pat.Range("A","Z")),c.addOr(new com.stevesoft.pat.Range("0","9")),c.addOr(new com.stevesoft.pat.oneChar("_")),this.add(c);else if(a.dontMatch&&"S"==a.c)c=new com.stevesoft.pat.Bracket(!0),c.addOr(new com.stevesoft.pat.oneChar(String.fromCharCode(32))),c.addOr(new com.stevesoft.pat.Range(String.fromCharCode(8),String.fromCharCode(10))),c.addOr(new com.stevesoft.pat.oneChar(String.fromCharCode(13))),
+this.add(c);else if(a.dontMatch&&"D"==a.c)c=new com.stevesoft.pat.Bracket(!0),c.addOr(new com.stevesoft.pat.Range("0","9")),this.add(c);else if(a.dontMatch&&"B"==a.c)f=new com.stevesoft.pat.Regex(null,""),f._compile("(?!\\b)",b),this.add(f.thePattern);else if(this.isOctalString(a))f=a.c.charCodeAt(0)-48,a.inc(),f=8*f+a.c.charCodeAt(0)-48,c=new com.stevesoft.pat.StrPos(a),c.inc(),this.isOctalDigit(c,!1)&&(a.inc(),f=8*f+a.c.charCodeAt(0)-48),this.add(new com.stevesoft.pat.oneChar(String.fromCharCode(f)));
+else if(a.dontMatch&&"1"<=a.c&&"9">=a.c)c=a.c.charCodeAt(0)-48,f=new com.stevesoft.pat.StrPos(a),f.inc(),!f.dontMatch&&("0"<=f.c&&"9">=f.c)&&(c=10*c+(f.c.charCodeAt(0)-48),a.inc()),this.add(new com.stevesoft.pat.BackMatch(c));else if(a.dontMatch&&"b"==a.c)this.add(new com.stevesoft.pat.Boundary);else if(a.match("\b"))this.add(new com.stevesoft.pat.Boundary);else if(a.match("$"))this.add(new com.stevesoft.pat.End(!0));else if(a.dontMatch&&"Z"==a.c)this.add(new com.stevesoft.pat.End(!1));else if(a.match("."))this.add(new com.stevesoft.pat.Any);
+else if(a.incMatch("(??")){c=new StringBuffer;for(f=new StringBuffer;!a.match(")")&&!a.match(":");)c.append(a.c),a.inc();if(a.incMatch(":"))for(;!a.match(")");)f.append(a.c),a.inc();var l=c.toString();v(com.stevesoft.pat.Regex.validators.get(l),String)?(c=com.stevesoft.pat.Regex.validators.get(l),f=new com.stevesoft.pat.Regex(null,""),l=new com.stevesoft.pat.Rthings(this),l.noBackRefs=!0,f._compile(c,l),this.add(f.thePattern)):(c=new com.stevesoft.pat.Custom(c.toString()),null!=c.v&&(l=c.v.arg(f.toString()),
+null!=l&&(l.argsave=f.toString(),f=c.v.pattern,c.v=l,l.pattern=f),f=new com.stevesoft.pat.Regex(null,""),l=new com.stevesoft.pat.Rthings(this),l.noBackRefs=!0,f._compile(c.v.pattern,l),c.sub=f.thePattern,c.sub.add(new com.stevesoft.pat.CustomEndpoint(c)),c.sub.setParent(c),this.add(c)))}else if(a.match("(")){b.parenLevel++;f=new com.stevesoft.pat.Regex(null,"");a.inc();if(a.incMatch("?:"))f.or=new com.stevesoft.pat.Or;else if(a.incMatch("?="))f.or=new com.stevesoft.pat.lookAhead(!1);else if(a.incMatch("?!"))f.or=
+new com.stevesoft.pat.lookAhead(!0);else if(a.match("?")){a.inc();do"i"==a.c&&(b.ignoreCase=!0),"Q"==a.c&&(b.dontMatchInQuotes=!0),"o"==a.c&&(b.optimizeMe=!0),"g"==a.c&&(b.gFlag=!0),"s"==a.c&&(b.sFlag=!0),"m"==a.c&&(b.mFlag=!0),a.inc();while(!a.match(")")&&!a.$eos);f=null;b.parenLevel--;a.$eos&&com.stevesoft.pat.RegSyntaxError.endItAll("Unclosed ()")}else f.or=b.noBackRefs?new com.stevesoft.pat.Or:new com.stevesoft.pat.OrMark(b.val++);null!=f&&this.add(f._compileSP(a,b))}else if(a.match("^"))this.add(new com.stevesoft.pat.Start(!0));
+else if(a.dontMatch&&"A"==a.c)this.add(new com.stevesoft.pat.Start(!1));else if(a.match("*"))this.addMulti(new com.stevesoft.pat.patInt(0),new com.stevesoft.pat.patInf);else if(a.match("+"))this.addMulti(new com.stevesoft.pat.patInt(1),new com.stevesoft.pat.patInf);else if(a.match("?"))this.addMulti(new com.stevesoft.pat.patInt(0),new com.stevesoft.pat.patInt(1));else if(a.match("{")){f=!1;c=new com.stevesoft.pat.StrPos(a);a.inc();var l=a.getPatInt(),d=null;a.match("}")?d=l:(a.match(",")||(f=!0),
+a.inc(),d=a.match("}")?new com.stevesoft.pat.patInf:a.getPatInt());if(null==l||null==d)f=!0;f?(a.dup(c),this.add(new com.stevesoft.pat.oneChar(a.c))):this.addMulti(l,d)}else a.escMatch("x")&&this.next2Hex(a)?(a.inc(),f=this.getHexDigit(a),a.inc(),f=16*f+this.getHexDigit(a),this.add(new com.stevesoft.pat.oneChar(String.fromCharCode(f)))):a.escMatch("c")?(a.inc(),a.c.charCodeAt(0)<com.stevesoft.pat.Ctrl.cmap.length?this.add(new com.stevesoft.pat.oneChar(com.stevesoft.pat.Ctrl.cmap[a.c.charCodeAt(0)])):
+this.add(new com.stevesoft.pat.oneChar(a.c))):a.escMatch("f")?this.add(new com.stevesoft.pat.oneChar(String.fromCharCode(12))):a.escMatch("a")?this.add(new com.stevesoft.pat.oneChar(String.fromCharCode(7))):a.escMatch("t")?this.add(new com.stevesoft.pat.oneChar("\t")):a.escMatch("n")?this.add(new com.stevesoft.pat.oneChar("\n")):a.escMatch("r")?this.add(new com.stevesoft.pat.oneChar("\r")):a.escMatch("b")?this.add(new com.stevesoft.pat.oneChar("\b")):a.escMatch("e")?this.add(new com.stevesoft.pat.oneChar(String.fromCharCode(27))):
+(this.add(new com.stevesoft.pat.oneChar(a.c)),a.match(")")&&com.stevesoft.pat.RegSyntaxError.endItAll("Unmatched right paren in pattern"))},"com.stevesoft.pat.StrPos,com.stevesoft.pat.Rthings");d(c$,"_compile",function(a,b){this.minMatch=null;this.sFlag=this.mFlag=this.ignoreCase=this.gFlag=!1;var c=new com.stevesoft.pat.StrPos(a,0);this.thePattern=this._compileSP(c,b);this.pt.marks=null;return this.thePattern},"~S,com.stevesoft.pat.Rthings");d(c$,"_compileSP",function(a,b){for(;!(a.$eos||null!=this.or&&
+a.match(")"));)this.compileSP(a,b),a.inc();a.match(")")?b.parenLevel--:a.$eos&&0!=b.parenLevel&&com.stevesoft.pat.RegSyntaxError.endItAll("Unclosed Parenthesis! lvl="+b.parenLevel);return null!=this.or?(null==this.p&&(this.p=new com.stevesoft.pat.NullPattern),this.or.addOr(this.p),this.or):null==this.p?new com.stevesoft.pat.NullPattern:this.p},"com.stevesoft.pat.StrPos,com.stevesoft.pat.Rthings");d(c$,"addMulti",function(a,b){var c,f;for(c=this.p;null!=c&&null!=c.next;c=c.next);if(null==c||c===this.p)f=
+null;else for(f=this.p;f.next!==c;f=f.next);if(v(c,com.stevesoft.pat.Multi)&&0==a.intValue()&&1==b.intValue())c.matchFewest=!0;else if(v(c,com.stevesoft.pat.FastMulti)&&0==a.intValue()&&1==b.intValue())c.matchFewest=!0;else if(v(c,com.stevesoft.pat.DotMulti)&&0==a.intValue()&&1==b.intValue())c.matchFewest=!0;else{if(v(c,com.stevesoft.pat.Multi)||v(c,com.stevesoft.pat.DotMulti)||v(c,com.stevesoft.pat.FastMulti))throw new com.stevesoft.pat.RegSyntax("Syntax error.");null==f?this.p=com.stevesoft.pat.Regex.mkMulti(a,
+b,this.p):f.next=com.stevesoft.pat.Regex.mkMulti(a,b,c)}},"com.stevesoft.pat.patInt,com.stevesoft.pat.patInt");c$.mkMulti=d(c$,"mkMulti",function(a,b,c){return v(c,com.stevesoft.pat.Any)&&null==c.next?new com.stevesoft.pat.DotMulti(a,b):com.stevesoft.pat.RegOpt.safe4fm(c)?new com.stevesoft.pat.FastMulti(a,b,c):new com.stevesoft.pat.Multi(a,b,c)},"com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");d(c$,"matchBracket",function(a){var b;a.match("^")?(b=new com.stevesoft.pat.Bracket(!0),
+a.inc()):b=new com.stevesoft.pat.Bracket(!1);for(a.match("]")&&com.stevesoft.pat.RegSyntaxError.endItAll("Unmatched []");!a.$eos&&!a.match("]");){var c=new com.stevesoft.pat.StrPos(a);c.inc();var f=new com.stevesoft.pat.StrPos(c);f.inc();if(c.match("-")&&!f.match("]"))c=new com.stevesoft.pat.StrPos(c),c.inc(),c.$eos||b.addOr(new com.stevesoft.pat.Range(a.c,c.c)),a.inc(),a.inc();else if(a.escMatch("Q"))for(a.inc();!a.escMatch("E");)b.addOr(new com.stevesoft.pat.oneChar(a.c)),a.inc();else a.escMatch("d")?
+b.addOr(new com.stevesoft.pat.Range("0","9")):a.escMatch("s")?(b.addOr(new com.stevesoft.pat.oneChar(String.fromCharCode(32))),b.addOr(new com.stevesoft.pat.Range(String.fromCharCode(8),String.fromCharCode(10))),b.addOr(new com.stevesoft.pat.oneChar(String.fromCharCode(13)))):a.escMatch("w")?(b.addOr(new com.stevesoft.pat.Range("a","z")),b.addOr(new com.stevesoft.pat.Range("A","Z")),b.addOr(new com.stevesoft.pat.Range("0","9")),b.addOr(new com.stevesoft.pat.oneChar("_"))):a.escMatch("D")?(b.addOr(new com.stevesoft.pat.Range(String.fromCharCode(0),
+String.fromCharCode(47))),b.addOr(new com.stevesoft.pat.Range(String.fromCharCode(58),String.fromCharCode(65535)))):a.escMatch("S")?(b.addOr(new com.stevesoft.pat.Range(String.fromCharCode(0),String.fromCharCode(7))),b.addOr(new com.stevesoft.pat.Range(String.fromCharCode(11),String.fromCharCode(12))),b.addOr(new com.stevesoft.pat.Range(String.fromCharCode(14),String.fromCharCode(31))),b.addOr(new com.stevesoft.pat.Range(String.fromCharCode(33),String.fromCharCode(65535)))):a.escMatch("W")?(b.addOr(new com.stevesoft.pat.Range(String.fromCharCode(0),
+String.fromCharCode(64))),b.addOr(new com.stevesoft.pat.Range(String.fromCharCode(91),String.fromCharCode(94))),b.addOr(new com.stevesoft.pat.oneChar(String.fromCharCode(96))),b.addOr(new com.stevesoft.pat.Range(String.fromCharCode(123),String.fromCharCode(65535)))):a.escMatch("x")&&this.next2Hex(a)?(a.inc(),c=this.getHexDigit(a),a.inc(),c=16*c+this.getHexDigit(a),b.addOr(new com.stevesoft.pat.oneChar(String.fromCharCode(c)))):a.escMatch("a")?b.addOr(new com.stevesoft.pat.oneChar(String.fromCharCode(7))):
+a.escMatch("f")?b.addOr(new com.stevesoft.pat.oneChar(String.fromCharCode(12))):a.escMatch("e")?b.addOr(new com.stevesoft.pat.oneChar(String.fromCharCode(27))):a.escMatch("n")?b.addOr(new com.stevesoft.pat.oneChar("\n")):a.escMatch("t")?b.addOr(new com.stevesoft.pat.oneChar("\t")):a.escMatch("r")?b.addOr(new com.stevesoft.pat.oneChar("\r")):a.escMatch("c")?(a.inc(),a.c.charCodeAt(0)<com.stevesoft.pat.Ctrl.cmap.length?b.addOr(new com.stevesoft.pat.oneChar(com.stevesoft.pat.Ctrl.cmap[a.c.charCodeAt(0)])):
+b.addOr(new com.stevesoft.pat.oneChar(a.c))):this.isOctalString(a)?(c=a.c.charCodeAt(0)-48,a.inc(),c=8*c+a.c.charCodeAt(0)-48,f=new com.stevesoft.pat.StrPos(a),f.inc(),this.isOctalDigit(f,!1)&&(a.inc(),c=8*c+a.c.charCodeAt(0)-48),b.addOr(new com.stevesoft.pat.oneChar(String.fromCharCode(c)))):b.addOr(new com.stevesoft.pat.oneChar(a.c));a.inc()}return b},"com.stevesoft.pat.StrPos");e(c$,"toString",function(){var a=new StringBuffer;"\\"!=this.esc&&(a.append("(?e="),a.append(this.esc),a.append(")"));
+if(this.gFlag||this.mFlag||!com.stevesoft.pat.Regex.dotDoesntMatchCR||this.sFlag||this.ignoreCase||this.dontMatchInQuotes||this.optimized())a.append("(?"),this.ignoreCase&&a.append("i"),this.mFlag&&a.append("m"),(this.sFlag||!com.stevesoft.pat.Regex.dotDoesntMatchCR)&&a.append("s"),this.dontMatchInQuotes&&a.append("Q"),this.optimized()&&a.append("o"),this.gFlag&&a.append("g"),a.append(")");var b=this.thePattern.toString();"\\"!=this.esc&&(b=com.stevesoft.pat.Regex.reEscape(b,"\\",this.esc));a.append(b);
+return a.toString()});c$.reEscape=d(c$,"reEscape",function(a,b,c){if(b==c)return a;var f,l=new StringBuffer;for(f=0;f<a.length;f++)a.charAt(f)==b&&f+1<a.length?(a.charAt(f+1)==b?l.append(b):(l.append(c),l.append(a.charAt(f+1))),f++):a.charAt(f)==c?(l.append(c),l.append(c)):l.append(a.charAt(f));return l.toString()},"~S,~S,~S");d(c$,"accept",function(a,b){return this.search(b)},"java.io.File,~S");c$.version=d(c$,"version",function(){return"lgpl release 1.5.3"});d(c$,"optimize",function(){this.optimized()||
+null==this.thePattern||(this.minMatch=new com.stevesoft.pat.patInt(0),this.thePattern=com.stevesoft.pat.RegOpt.opt(this.thePattern,this.ignoreCase,this.dontMatchInQuotes),this.skipper=com.stevesoft.pat.Skip.findSkipRegex(this))});d(c$,"optimized",function(){return null!=this.minMatch});c$.perlCode=d(c$,"perlCode",function(a){return com.stevesoft.pat.parsePerl.parse(a)},"~S");d(c$,"isLiteral",function(){for(var a=this.thePattern;null!=a;){if(!v(a,com.stevesoft.pat.oneChar)&&!v(a,com.stevesoft.pat.Skipped))return!1;
+a=a.next}return!0});d(c$,"countMinChars",function(){return this.thePattern.countMinChars()});d(c$,"countMaxChars",function(){return this.thePattern.countMaxChars()});d(c$,"isHexDigit",function(a){return!a.$eos&&!a.dontMatch&&("0"<=a.c&&"9">=a.c||"a"<=a.c&&"f">=a.c||"A"<=a.c&&"F">=a.c)},"com.stevesoft.pat.StrPos");d(c$,"isOctalDigit",function(a,b){return!a.$eos&&!(new Boolean(b^a.dontMatch)).valueOf()&&"0"<=a.c&&"7">=a.c},"com.stevesoft.pat.StrPos,~B");d(c$,"getHexDigit",function(a){return"0"<=a.c&&
+"9">=a.c?a.c.charCodeAt(0)-48:"a"<=a.c&&"f">=a.c?a.c.charCodeAt(0)-97+10:a.c.charCodeAt(0)-65+10},"com.stevesoft.pat.StrPos");d(c$,"next2Hex",function(a){a=new com.stevesoft.pat.StrPos(a);a.inc();if(!this.isHexDigit(a))return!1;a.inc();return!this.isHexDigit(a)?!1:!0},"com.stevesoft.pat.StrPos");d(c$,"isOctalString",function(a){if(!this.isOctalDigit(a,!0))return!1;a=new com.stevesoft.pat.StrPos(a);a.inc();return!this.isOctalDigit(a,!1)?!1:!0},"com.stevesoft.pat.StrPos");G(c$,"BackRefOffset",1);c$.none=
+c$.prototype.none=new com.stevesoft.pat.NoPattern;c$.validators=c$.prototype.validators=new java.util.Hashtable;com.stevesoft.pat.Regex.defineV("p","(?>1)",new com.stevesoft.pat.UnicodePunct);com.stevesoft.pat.Regex.defineV("P","(?>1)",new com.stevesoft.pat.NUnicodePunct);com.stevesoft.pat.Regex.defineV("s","(?>1)",new com.stevesoft.pat.UnicodeWhite);com.stevesoft.pat.Regex.defineV("S","(?>1)",new com.stevesoft.pat.NUnicodeWhite);com.stevesoft.pat.Regex.defineV("w","(?>1)",new com.stevesoft.pat.UnicodeW);
+com.stevesoft.pat.Regex.defineV("W","(?>1)",new com.stevesoft.pat.NUnicodeW);com.stevesoft.pat.Regex.defineV("d","(?>1)",new com.stevesoft.pat.UnicodeDigit);com.stevesoft.pat.Regex.defineV("D","(?>1)",new com.stevesoft.pat.NUnicodeDigit);com.stevesoft.pat.Regex.defineV("m","(?>1)",new com.stevesoft.pat.UnicodeMath);com.stevesoft.pat.Regex.defineV("M","(?>1)",new com.stevesoft.pat.NUnicodeMath);com.stevesoft.pat.Regex.defineV("c","(?>1)",new com.stevesoft.pat.UnicodeCurrency);com.stevesoft.pat.Regex.defineV("C",
+"(?>1)",new com.stevesoft.pat.NUnicodeCurrency);com.stevesoft.pat.Regex.defineV("a","(?>1)",new com.stevesoft.pat.UnicodeAlpha);com.stevesoft.pat.Regex.defineV("A","(?>1)",new com.stevesoft.pat.NUnicodeAlpha);com.stevesoft.pat.Regex.defineV("uc","(?>1)",new com.stevesoft.pat.UnicodeUpper);com.stevesoft.pat.Regex.defineV("lc","(?>1)",new com.stevesoft.pat.UnicodeLower);G(c$,"defaultMFlag",!1,"dotDoesntMatchCR",!0,"lasts",null,"lastbs",null,"back_slash","\\")});p("com.stevesoft.pat");q(null,"com.stevesoft.pat.RegRes",
+["java.lang.StringBuffer"],function(){c$=s(function(){this.marks=null;this.didMatch_=!1;this.src=null;this.numSubs_=this.matchFrom_=this.charsMatched_=0;r(this,arguments)},com.stevesoft.pat,"RegRes");d(c$,"getString",function(){return this.src.toString()});d(c$,"getStringLike",function(){return this.src});e(c$,"toString",function(){var a=new StringBuffer;a.append("match="+this.matchedFrom()+":"+this.charsMatched());if(!this.didMatch())return a.toString();for(var b=0;b<this.numSubs();b++){var c=b+
+1;a.append(" sub("+c+")="+this.matchedFromI(c)+":"+this.charsMatchedI(c))}return a.toString()});d(c$,"copyOutOf",function(a){if(null==a.marks)this.marks=null;else try{this.marks=w(a.marks.length,0);for(var b=0;b<this.marks.length;b++)this.marks[b]=a.marks[b]}catch(c){}this.didMatch_=a.didMatch_;this.src=a.src;this.charsMatched_=a.charsMatched_;this.matchFrom_=a.matchFrom_;this.numSubs_=a.numSubs_},"com.stevesoft.pat.RegRes");d(c$,"equals",function(a){if(this.charsMatched_!=a.charsMatched_||(this.matchFrom_!=
+a.matchFrom_||this.didMatch_!=a.didMatch_||this.numSubs_!=a.numSubs_||!this.src.unwrap().equals(a.src.unwrap()))||null==this.marks&&null!=a.marks||null!=this.marks&&null==a.marks)return!1;for(var b=1;b<=this.numSubs_;b++)if(this.matchedFromI(b)!=a.matchedFromI(b)||this.charsMatchedI(b)!=a.charsMatchedI(b))return!1;return!0},"com.stevesoft.pat.RegRes");d(c$,"stringMatched",function(){var a=this.matchedFrom(),b=this.charsMatched();return!this.didMatch_||0>a||0>b?null:this.src.substring(a,a+b)});d(c$,
+"matchedFromI",function(a){return null==this.marks||a>this.numSubs_?-1:this.marks[a]},"~N");d(c$,"charsMatchedI",function(a){return null==this.marks||a>this.numSubs_||!this.didMatch_?-1:0>this.matchedFromI(a)?-1:this.marks[a+this.numSubs_]-this.matchedFromI(a)},"~N");d(c$,"matchedToI",function(a){return null==this.marks||a>this.numSubs_||!this.didMatch_?-1:this.marks[a+this.numSubs_]},"~N");d(c$,"stringMatchedI",function(a){var b=this.matchedFromI(a);a=this.charsMatchedI(a);return!this.didMatch_||
+0>b||0>a?null:this.src.substring(b,b+a)},"~N");d(c$,"left",function(){var a=this.matchedFrom();return!this.didMatch_||0>a?null:this.src.substring(0,a)});d(c$,"leftI",function(a){a=this.matchedFromI(a);return!this.didMatch_||0>a?null:this.src.substring(0,a)},"~N");d(c$,"right",function(){var a=this.matchedFrom(),b=this.charsMatched();return!this.didMatch_||0>a||0>b?null:this.src.substring(a+b,this.src.length())});d(c$,"rightI",function(a){var b=this.matchedFromI(a);a=this.charsMatchedI(a);return!this.didMatch_||
+0>b||0>a?null:this.src.substring(b+a,this.src.length())},"~N");d(c$,"matchedFrom",function(){return!this.didMatch_?-1:this.matchFrom_});d(c$,"charsMatched",function(){return!this.didMatch_||0>this.matchFrom_?-1:this.charsMatched_});d(c$,"matchedTo",function(){return!this.didMatch_?-1:this.matchFrom_+this.charsMatched_});d(c$,"numSubs",function(){return this.numSubs_});d(c$,"didMatch",function(){return this.didMatch_});d(c$,"matchFrom",function(){return this.matchedFrom()});d(c$,"substring",function(){return this.stringMatched()});
+d(c$,"matchFromI",function(a){return this.matchedFromI(a)},"~N");d(c$,"substringI",function(a){return this.stringMatchedI(a)},"~N")});p("com.stevesoft.pat");q(["com.stevesoft.pat.Validator"],"com.stevesoft.pat.UniValidator",["com.stevesoft.pat.patInt"],function(){c$=B(com.stevesoft.pat,"UniValidator",com.stevesoft.pat.Validator);e(c$,"minChars",function(){return new com.stevesoft.pat.patInt(1)});e(c$,"maxChars",function(){return new com.stevesoft.pat.patInt(1)})});p("com.stevesoft.pat");q(null,"com.stevesoft.pat.Validator",
+["com.stevesoft.pat.patInf","$.patInt"],function(){c$=s(function(){this.argsave=null;this.pattern=".";r(this,arguments)},com.stevesoft.pat,"Validator");d(c$,"validate",function(a,b,c){return c},"com.stevesoft.pat.StringLike,~N,~N");d(c$,"arg",function(){return null},"~S");d(c$,"minChars",function(){return new com.stevesoft.pat.patInt(0)});d(c$,"maxChars",function(){return new com.stevesoft.pat.patInf})});p("com.stevesoft.pat");q(["com.stevesoft.pat.patInt"],"com.stevesoft.pat.patInf",null,function(){c$=
+B(com.stevesoft.pat,"patInf",com.stevesoft.pat.patInt);m(c$,function(){t(this,com.stevesoft.pat.patInf,[]);this.inf=!0})});p("com.stevesoft.pat");c$=s(function(){this.i=0;this.inf=!1;r(this,arguments)},com.stevesoft.pat,"patInt");m(c$,function(){this.i=0;this.inf=!1});m(c$,function(a){this.i=a;this.inf=!1},"~N");m(c$,function(a){this.i=a.i;this.inf=a.inf},"com.stevesoft.pat.patInt");d(c$,"setInf",function(a){if(this.inf=a)this.i=2147483647},"~B");d(c$,"inc",function(){this.inf||this.i++});d(c$,"dec",
+function(){this.inf||this.i--});d(c$,"lessEq",function(a){return!this.inf&&(a.inf||this.i<=a.i)},"com.stevesoft.pat.patInt");d(c$,"equals",function(a){return!a.inf&&!this.inf&&this.i==a.i},"com.stevesoft.pat.patInt");e(c$,"toString",function(){return this.inf?"":""+this.i});d(c$,"pluseq",function(a){this.inf||a.inf?this.setInf(!0):this.i+=a.i;return this},"com.stevesoft.pat.patInt");d(c$,"mul",function(a){return this.inf||a.inf?new com.stevesoft.pat.patInf:new com.stevesoft.pat.patInt(this.i*a.i)},
+"com.stevesoft.pat.patInt");d(c$,"mineq",function(a){if(a.inf)return this;this.inf?this.i=a.i:a.i<this.i&&(this.i=a.i);this.setInf(!1);return this},"com.stevesoft.pat.patInt");d(c$,"maxeq",function(a){if(this.inf||a.inf)return this.setInf(!0),this;a.i>this.i&&(this.i=a.i);return this},"com.stevesoft.pat.patInt");d(c$,"finite",function(){return!this.inf});d(c$,"intValue",function(){return this.inf?2147483647:this.i});p("jalview.jsdev.api");M(jalview.jsdev.api,"RegExpInterface");p("com.stevesoft.pat");
+q(["com.stevesoft.pat.Pattern"],"com.stevesoft.pat.NoPattern",null,function(){c$=B(com.stevesoft.pat,"NoPattern",com.stevesoft.pat.Pattern);e(c$,"toString",function(){return"(?e=#)[^#d#D]"});e(c$,"matchInternal",function(){return-1},"~N,com.stevesoft.pat.Pthings");e(c$,"clone1",function(){return new com.stevesoft.pat.NoPattern},"java.util.Hashtable")});p("com.stevesoft.pat");q(null,"com.stevesoft.pat.Pattern",["com.stevesoft.pat.MessageManager","$.patInf","$.patInt","java.lang.Error","$.StringBuffer"],
+function(){c$=s(function(){this.parent=this.next=null;this.mfrom=0;r(this,arguments)},com.stevesoft.pat,"Pattern");d(c$,"getNext",function(){return null!=this.next?this.next:null==this.parent?null:this.parent.getNext()});d(c$,"setParent",function(a){null!=this.next?this.next.setParent(a):this.parent=a},"com.stevesoft.pat.Pattern");d(c$,"nextMatch",function(a,b){var c=this.getNext();return null==c?a:c.matchInternal(a,b)},"~N,com.stevesoft.pat.Pthings");d(c$,"nextString",function(){return null==this.next?
+"":this.next.toString()});c$.inString=d(c$,"inString",function(a,b){var c;for(c=0;c<b.length;c++)if(b.charAt(c)==a)return!0;return!1},"~S,~S");c$.protect=d(c$,"protect",function(a,b,c){var f=new StringBuffer,l=b+c;for(b=0;b<a.length;b++){var d=a.charAt(b);com.stevesoft.pat.Pattern.inString(d,l)&&f.append(c);f.append(d)}return f.toString()},"~S,~S,~S");d(c$,"match",function(a,b){return this.matchAt(a,0,b)},"com.stevesoft.pat.StringLike,com.stevesoft.pat.Pthings");d(c$,"matchAt",function(a,b,c){c.src=
+a;a=this.matchInternal(b,c);if(0>a)return-1;this.mfrom=a<b?a+1:b;return a<b?b-a-1:a-b},"com.stevesoft.pat.StringLike,~N,com.stevesoft.pat.Pthings");d(c$,"Masked",function(a,b){return null==b.cbits?!1:b.cbits.get(a)},"~N,com.stevesoft.pat.Pthings");d(c$,"add",function(a){if(null==this.next){if(null==a)return this;this.next=a;a.parent=this.parent;this.parent=null}else this.next.add(a);return this},"com.stevesoft.pat.Pattern");d(c$,"minChars",function(){return new com.stevesoft.pat.patInt(0)});d(c$,
+"maxChars",function(){return new com.stevesoft.pat.patInf});d(c$,"countMinChars",function(){for(var a=this,b=new com.stevesoft.pat.patInt(0);null!=a;)b.pluseq(a.minChars()),a=a.next;return b});d(c$,"countMaxChars",function(){for(var a=this,b=new com.stevesoft.pat.patInt(0);null!=a;)b.pluseq(a.maxChars()),a=a.next;return b});d(c$,"testMatch",function(a,b,c){var f=null;if(null!=c.marks)try{for(var f=w(c.marks.length,0),l=0;l<f.length;l++)f[l]=c.marks[l]}catch(d){}a=a.matchInternal(b,c);0>a&&(c.marks=
+f);return a},"com.stevesoft.pat.Pattern,~N,com.stevesoft.pat.Pthings");d(c$,"clone1",function(){throw Error(com.stevesoft.pat.MessageManager.formatMessage("error.no_such_method_as_clone1_for",E(-1,[this.getClass().getName()])));},"java.util.Hashtable");d(c$,"clone",function(a){var b=a.get(this);if(null!=b)return b;b=this.clone1(a);if(null==b)throw Error(com.stevesoft.pat.MessageManager.getString("error.null_from_clone1"));a.put(this,b);a.put(b,b);null!=this.next&&(b.next=this.next.clone(a));null!=
+this.parent&&(b.parent=this.parent.clone(a));return b},"java.util.Hashtable");e(c$,"equals",function(a){return a===this},"~O");G(c$,"ESC","\\","PROTECT_THESE",'[]{}(),$,-"^.')});p("com.stevesoft.pat");c$=B(com.stevesoft.pat,"MessageManager");c$.getString=d(c$,"getString",function(a){return a},"~S");c$.formatMessage=d(c$,"formatMessage",function(a,b){for(var c=0;c<b.length;c++)a+=" "+b[c];return a},"~S,~A");p("com.stevesoft.pat");c$=s(function(){this.src=null;this.mFlag=this.ignoreCase=!1;this.marks=
+this.cbits=null;this.nMarks=0;this.no_check=this.dotDoesntMatchCR=!1;this.lastPos=0;r(this,arguments)},com.stevesoft.pat,"Pthings");p("com.stevesoft.pat");q(["com.stevesoft.pat.Pattern"],"com.stevesoft.pat.Any",["com.stevesoft.pat.patInt"],function(){c$=B(com.stevesoft.pat,"Any",com.stevesoft.pat.Pattern);e(c$,"matchInternal",function(a,b){if(a<b.src.length())if(b.dotDoesntMatchCR){if("\n"!=b.src.charAt(a))return this.nextMatch(a+1,b)}else return this.nextMatch(a+1,b);return-1},"~N,com.stevesoft.pat.Pthings");
+e(c$,"toString",function(){return"."+this.nextString()});e(c$,"minChars",function(){return new com.stevesoft.pat.patInt(1)});e(c$,"maxChars",function(){return new com.stevesoft.pat.patInt(1)});e(c$,"clone1",function(){return new com.stevesoft.pat.Any},"java.util.Hashtable")});p("com.stevesoft.pat");q(["com.stevesoft.pat.Pattern"],"com.stevesoft.pat.BackG",["com.stevesoft.pat.patInt"],function(){c$=s(function(){this.altc2=this.altc=this.c="\x00";this.mask=0;r(this,arguments)},com.stevesoft.pat,"BackG",
+com.stevesoft.pat.Pattern);m(c$,function(){t(this,com.stevesoft.pat.BackG,[])});e(c$,"matchInternal",function(a,b){return a==b.lastPos?this.nextMatch(a,b):-1},"~N,com.stevesoft.pat.Pthings");e(c$,"toString",function(){return"\\G"+this.nextString()});e(c$,"minChars",function(){return new com.stevesoft.pat.patInt(1)});e(c$,"maxChars",function(){return new com.stevesoft.pat.patInt(1)});e(c$,"clone1",function(){return new com.stevesoft.pat.BackG},"java.util.Hashtable")});p("com.stevesoft.pat");q(["com.stevesoft.pat.Pattern"],
+"com.stevesoft.pat.BackMatch",null,function(){c$=s(function(){this.id=0;r(this,arguments)},com.stevesoft.pat,"BackMatch",com.stevesoft.pat.Pattern);m(c$,function(a){t(this,com.stevesoft.pat.BackMatch,[]);this.id=a},"~N");e(c$,"toString",function(){return"\\"+this.id+this.nextString()});e(c$,"matchInternal",function(a,b){var c=b.marks[this.id],f=b.marks[this.id+b.nMarks]-c;if(0>c||0>f||a+f>b.src.length())return-1;var l=b.src.length()-a;f<l&&(l=f);for(var d=0;d<l;d++)if(b.src.charAt(d+c)!=b.src.charAt(a+
+d))return-1;return this.nextMatch(a+f,b)},"~N,com.stevesoft.pat.Pthings");e(c$,"clone1",function(){return new com.stevesoft.pat.BackMatch(this.id)},"java.util.Hashtable")});p("com.stevesoft.pat");q(["com.stevesoft.pat.Pattern"],"com.stevesoft.pat.Backup",["com.stevesoft.pat.patInt"],function(){c$=s(function(){this.bk=0;r(this,arguments)},com.stevesoft.pat,"Backup",com.stevesoft.pat.Pattern);m(c$,function(a){t(this,com.stevesoft.pat.Backup,[]);this.bk=a},"~N");e(c$,"toString",function(){return"(?"+
+(0>this.bk?">"+-this.bk:"<"+this.bk)+")"+this.nextString()});e(c$,"matchInternal",function(a,b){return a<this.bk?-1:this.nextMatch(a-this.bk,b)},"~N,com.stevesoft.pat.Pthings");e(c$,"minChars",function(){return new com.stevesoft.pat.patInt(-this.bk)});e(c$,"maxChars",function(){return new com.stevesoft.pat.patInt(-this.bk)});e(c$,"clone1",function(){return new com.stevesoft.pat.Backup(this.bk)},"java.util.Hashtable")});p("com.stevesoft.pat");q(["com.stevesoft.pat.Pattern"],"com.stevesoft.pat.Boundary",
+["com.stevesoft.pat.patInt"],function(){c$=B(com.stevesoft.pat,"Boundary",com.stevesoft.pat.Pattern);e(c$,"toString",function(){return"\\b"+this.nextString()});d(c$,"isAChar",function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"0"<=a&&"9">=a||"_"==a?!0:!1},"~S");d(c$,"matchLeft",function(a,b){return 0>=a?!0:this.isAChar(b.src.charAt(a))&&this.isAChar(b.src.charAt(a-1))?!1:!0},"~N,com.stevesoft.pat.Pthings");d(c$,"matchRight",function(a,b){return 0>a?!1:a+1>=b.src.length()?!0:this.isAChar(b.src.charAt(a))&&
+this.isAChar(b.src.charAt(a+1))?!1:!0},"~N,com.stevesoft.pat.Pthings");e(c$,"matchInternal",function(a,b){return this.matchRight(a-1,b)||this.matchLeft(a,b)?this.nextMatch(a,b):-1},"~N,com.stevesoft.pat.Pthings");e(c$,"maxChars",function(){return new com.stevesoft.pat.patInt(0)});e(c$,"clone1",function(){return new com.stevesoft.pat.Boundary},"java.util.Hashtable")});p("com.stevesoft.pat");q(["com.stevesoft.pat.Or"],"com.stevesoft.pat.Bracket",["com.stevesoft.pat.patInt","java.util.Vector"],function(){c$=
+s(function(){this.neg=!1;r(this,arguments)},com.stevesoft.pat,"Bracket",com.stevesoft.pat.Or);m(c$,function(a){t(this,com.stevesoft.pat.Bracket,[]);this.neg=a},"~B");e(c$,"leftForm",function(){return this.neg?"[^":"["});e(c$,"rightForm",function(){return"]"});e(c$,"sepForm",function(){return""});d(c$,"matchInternal",function(a,b){if(a>=b.src.length())return-1;var c=K(this,com.stevesoft.pat.Bracket,"matchInternal",[a,b]);return this.neg&&0>c||!this.neg&&0<=c?this.nextMatch(a+1,b):-1},"~N,com.stevesoft.pat.Pthings");
+e(c$,"minChars",function(){return new com.stevesoft.pat.patInt(1)});e(c$,"maxChars",function(){return new com.stevesoft.pat.patInt(1)});e(c$,"addOr",function(a){this.pv=null;this.v.addElement(a);a.setParent(null);return this},"com.stevesoft.pat.Pattern");e(c$,"clone1",function(a){var b=new com.stevesoft.pat.Bracket(this.neg);b.v=new java.util.Vector;for(var c=0;c<this.v.size();c++)b.v.addElement(this.v.elementAt(c).clone1(a));return b},"java.util.Hashtable")});p("com.stevesoft.pat");q(["com.stevesoft.pat.Pattern"],
+"com.stevesoft.pat.Or",["com.stevesoft.pat.patInt","java.lang.StringBuffer","java.util.Vector"],function(){c$=s(function(){this.pv=this.v=null;r(this,arguments)},com.stevesoft.pat,"Or",com.stevesoft.pat.Pattern);m(c$,function(){t(this,com.stevesoft.pat.Or,[]);this.v=new java.util.Vector});d(c$,"leftForm",function(){return"(?:"});d(c$,"rightForm",function(){return")"});d(c$,"sepForm",function(){return"|"});d(c$,"addOr",function(a){this.pv=null;this.v.addElement(a);a.setParent(this);return this},"com.stevesoft.pat.Pattern");
+d(c$,"toString",function(){var a,b=new StringBuffer;b.append(this.leftForm());0<this.v.size()&&b.append(this.v.elementAt(0).toString());for(a=1;a<this.v.size();a++)b.append(this.sepForm()),b.append(this.v.elementAt(a).toString());b.append(this.rightForm());b.append(this.nextString());return b.toString()});d(c$,"matchInternal",function(a,b){null==this.pv&&(this.pv=Array(this.v.size()),this.v.copyInto(this.pv));for(var c=0;c<this.v.size();c++){var f=this.pv[c].matchInternal(a,b);if(0<=f)return f}return-1},
+"~N,com.stevesoft.pat.Pthings");e(c$,"minChars",function(){if(0==this.v.size())return new com.stevesoft.pat.patInt(0);for(var a=this.v.elementAt(0).countMinChars(),b=1;b<this.v.size();b++){var c=this.v.elementAt(b);a.mineq(c.countMinChars())}return a});e(c$,"maxChars",function(){if(0==this.v.size())return new com.stevesoft.pat.patInt(0);for(var a=this.v.elementAt(0).countMaxChars(),b=1;b<this.v.size();b++){var c=this.v.elementAt(b);a.maxeq(c.countMaxChars())}return a});e(c$,"clone1",function(a){var b=
+new com.stevesoft.pat.Or;a.put(this,b);a.put(b,b);for(var c=0;c<this.v.size();c++)b.v.addElement(this.v.elementAt(c).clone(a));return b},"java.util.Hashtable")});p("com.stevesoft.pat");q(null,"com.stevesoft.pat.CaseMgr",["java.lang.Character"],function(){c$=B(com.stevesoft.pat,"CaseMgr");c$.toUpperCaseC=d(c$,"toUpperCaseC",function(a){return Character.toUpperCase(a)},"~S");c$.toLowerCaseC=d(c$,"toLowerCaseC",function(a){return Character.toLowerCase(a)},"~S");c$.toUpperCase=d(c$,"toUpperCase",function(a){return a.toUpperCase()},
+"~S");c$.toLowerCase=d(c$,"toLowerCase",function(a){return a.toLowerCase()},"~S");c$.toTitleCaseC=d(c$,"toTitleCaseC",function(a){return Character.toUpperCase(a)},"~S");c$.regionMatchesLike=d(c$,"regionMatchesLike",function(a,b,c,f,l,d){var g=l+d;if(g>f.length()||c+d>a.length())return!1;if(b)for(b=l;b<g;b++){if(com.stevesoft.pat.CaseMgr.toLowerCaseC(f.charAt(b))!=com.stevesoft.pat.CaseMgr.toLowerCaseC(a.charAt(c++)))return!1}else for(b=l;b<g;b++)if(f.charAt(b)!=a.charAt(c++))return!1;return!0},"com.stevesoft.pat.StringLike,~B,~N,com.stevesoft.pat.StringLike,~N,~N");
+c$.regionMatches=d(c$,"regionMatches",function(a,b,c,f,l,d){var g=l+d;if(g>f.length()||c+d>a.length)return!1;if(b)for(b=l;b<g;b++){if(com.stevesoft.pat.CaseMgr.toLowerCaseC(f.charAt(b))!=com.stevesoft.pat.CaseMgr.toLowerCaseC(a.charAt(c++)))return!1}else for(b=l;b<g;b++)if(f.charAt(b)!=a.charAt(c++))return!1;return!0},"~S,~B,~N,com.stevesoft.pat.StringLike,~N,~N");c$.regionMatchesLike2=d(c$,"regionMatchesLike2",function(a,b,c,f,l,d){var g=l+d;if(g>f.length||c+d>a.length())return!1;if(b)for(b=l;b<
+g;b++){if(com.stevesoft.pat.CaseMgr.toLowerCaseC(f.charAt(b))!=com.stevesoft.pat.CaseMgr.toLowerCaseC(a.charAt(c++)))return!1}else for(b=l;b<g;b++)if(f.charAt(b)!=a.charAt(c++))return!1;return!0},"com.stevesoft.pat.StringLike,~B,~N,~S,~N,~N");c$.regionMatches2=d(c$,"regionMatches2",function(a,b,c,f,l,d){var g=l+d;if(g>f.length||c+d>a.length)return!1;if(b)for(b=l;b<g;b++){if(com.stevesoft.pat.CaseMgr.toLowerCaseC(f.charAt(b))!=com.stevesoft.pat.CaseMgr.toLowerCaseC(a.charAt(c++)))return!1}else for(b=
+l;b<g;b++)if(f.charAt(b)!=a.charAt(c++))return!1;return!0},"~S,~B,~N,~S,~N,~N");G(c$,"java_1_0",!1)});p("com.stevesoft.pat");c$=B(com.stevesoft.pat,"Ctrl");G(c$,"cmap",N(-1,[String.fromCharCode(64),"A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z",String.fromCharCode(91),String.fromCharCode(92),String.fromCharCode(93),String.fromCharCode(94),String.fromCharCode(95),String.fromCharCode(96),"a","a","c","d","e","f","g","h","i","j","k","l","m","n",
+"o","p","q","r","s","t","u","v","w","x","y","z",String.fromCharCode(123),String.fromCharCode(124),String.fromCharCode(125),String.fromCharCode(126),String.fromCharCode(127),String.fromCharCode(0),String.fromCharCode(1),String.fromCharCode(2),String.fromCharCode(3),String.fromCharCode(4),String.fromCharCode(5),String.fromCharCode(6),String.fromCharCode(7),String.fromCharCode(8),String.fromCharCode(9),String.fromCharCode(10),String.fromCharCode(11),String.fromCharCode(12),String.fromCharCode(13),String.fromCharCode(14),
+String.fromCharCode(15),String.fromCharCode(16),String.fromCharCode(17),String.fromCharCode(18),String.fromCharCode(19),String.fromCharCode(20),String.fromCharCode(21),String.fromCharCode(22),String.fromCharCode(23),String.fromCharCode(24),String.fromCharCode(25),String.fromCharCode(26),String.fromCharCode(27),String.fromCharCode(27),String.fromCharCode(29),String.fromCharCode(30),String.fromCharCode(31),String.fromCharCode(32),String.fromCharCode(1),String.fromCharCode(2),String.fromCharCode(3),
+String.fromCharCode(4),String.fromCharCode(5),String.fromCharCode(6),String.fromCharCode(7),String.fromCharCode(8),String.fromCharCode(9),String.fromCharCode(10),String.fromCharCode(11),String.fromCharCode(12),String.fromCharCode(13),String.fromCharCode(14),String.fromCharCode(15),String.fromCharCode(16),String.fromCharCode(17),String.fromCharCode(18),String.fromCharCode(19),String.fromCharCode(20),String.fromCharCode(21),String.fromCharCode(22),String.fromCharCode(23),String.fromCharCode(24),String.fromCharCode(25),
+String.fromCharCode(26),String.fromCharCode(59),String.fromCharCode(60),String.fromCharCode(61),String.fromCharCode(62),String.fromCharCode(63),String.fromCharCode(192),String.fromCharCode(193),String.fromCharCode(194),String.fromCharCode(195),String.fromCharCode(196),String.fromCharCode(197),String.fromCharCode(198),String.fromCharCode(199),String.fromCharCode(200),String.fromCharCode(201),String.fromCharCode(202),String.fromCharCode(203),String.fromCharCode(204),String.fromCharCode(205),String.fromCharCode(206),
+String.fromCharCode(207),String.fromCharCode(208),String.fromCharCode(209),String.fromCharCode(210),String.fromCharCode(211),String.fromCharCode(212),String.fromCharCode(213),String.fromCharCode(214),String.fromCharCode(215),String.fromCharCode(216),String.fromCharCode(217),String.fromCharCode(218),String.fromCharCode(219),String.fromCharCode(220),String.fromCharCode(221),String.fromCharCode(222),String.fromCharCode(223),String.fromCharCode(224),String.fromCharCode(225),String.fromCharCode(226),String.fromCharCode(227),
+String.fromCharCode(228),String.fromCharCode(229),String.fromCharCode(230),String.fromCharCode(231),String.fromCharCode(232),String.fromCharCode(233),String.fromCharCode(234),String.fromCharCode(235),String.fromCharCode(236),String.fromCharCode(237),String.fromCharCode(238),String.fromCharCode(239),String.fromCharCode(240),String.fromCharCode(241),String.fromCharCode(242),String.fromCharCode(243),String.fromCharCode(244),String.fromCharCode(245),String.fromCharCode(246),String.fromCharCode(247),String.fromCharCode(248),
+String.fromCharCode(249),String.fromCharCode(250),String.fromCharCode(251),String.fromCharCode(252),String.fromCharCode(253),String.fromCharCode(254),String.fromCharCode(255),String.fromCharCode(128),String.fromCharCode(129),String.fromCharCode(130),String.fromCharCode(131),String.fromCharCode(132),String.fromCharCode(133),String.fromCharCode(134),String.fromCharCode(135),String.fromCharCode(136),String.fromCharCode(137),String.fromCharCode(138),String.fromCharCode(139),String.fromCharCode(140),String.fromCharCode(141),
+String.fromCharCode(142),String.fromCharCode(143),String.fromCharCode(144),String.fromCharCode(145),String.fromCharCode(146),String.fromCharCode(147),String.fromCharCode(148),String.fromCharCode(149),String.fromCharCode(150),String.fromCharCode(151),String.fromCharCode(152),String.fromCharCode(153),String.fromCharCode(154),String.fromCharCode(155),String.fromCharCode(156),String.fromCharCode(157),String.fromCharCode(158),String.fromCharCode(159),String.fromCharCode(160),String.fromCharCode(161),String.fromCharCode(162),
+String.fromCharCode(163),String.fromCharCode(164),String.fromCharCode(165),String.fromCharCode(166),String.fromCharCode(167),String.fromCharCode(168),String.fromCharCode(169),String.fromCharCode(170),String.fromCharCode(171),String.fromCharCode(172),String.fromCharCode(173),String.fromCharCode(174),String.fromCharCode(175),String.fromCharCode(176),String.fromCharCode(177),String.fromCharCode(178),String.fromCharCode(179),String.fromCharCode(180),String.fromCharCode(181),String.fromCharCode(182),String.fromCharCode(183),
+String.fromCharCode(184),String.fromCharCode(185),String.fromCharCode(186),String.fromCharCode(187),String.fromCharCode(188),String.fromCharCode(189),String.fromCharCode(190),String.fromCharCode(191)]));p("com.stevesoft.pat");q(["com.stevesoft.pat.PatternSub"],"com.stevesoft.pat.Custom",["com.stevesoft.pat.Regex"],function(){c$=s(function(){this.v=this.select=null;this.start=0;r(this,arguments)},com.stevesoft.pat,"Custom",com.stevesoft.pat.PatternSub);m(c$,function(a){t(this,com.stevesoft.pat.Custom,
+[]);this.select=a;this.v=com.stevesoft.pat.Regex.validators.get(a)},"~S");d(c$,"matchInternal",function(a,b){this.start=a;return this.sub.matchInternal(a,b)},"~N,com.stevesoft.pat.Pthings");e(c$,"toString",function(){return"(??"+this.select+(null==this.v.argsave?"":":"+this.v.argsave)+")"+this.nextString()});e(c$,"minChars",function(){return this.v.minChars()});e(c$,"maxChars",function(){return this.v.maxChars()});e(c$,"clone1",function(a){var b=new com.stevesoft.pat.Custom(this.select);a.put(b,b);
+a.put(this,b);b.sub=this.sub.clone(a);return b},"java.util.Hashtable")});p("com.stevesoft.pat");q(["com.stevesoft.pat.Pattern"],"com.stevesoft.pat.PatternSub",null,function(){c$=s(function(){this.sub=null;r(this,arguments)},com.stevesoft.pat,"PatternSub",com.stevesoft.pat.Pattern)});p("com.stevesoft.pat");q(["com.stevesoft.pat.Pattern"],"com.stevesoft.pat.CustomEndpoint",null,function(){c$=s(function(){this.c=null;r(this,arguments)},com.stevesoft.pat,"CustomEndpoint",com.stevesoft.pat.Pattern);m(c$,
+function(a){t(this,com.stevesoft.pat.CustomEndpoint,[]);this.c=a},"com.stevesoft.pat.Custom");e(c$,"matchInternal",function(a,b){var c=this.c.v.validate(b.src,this.c.start,a);return 0<=c?this.nextMatch(c,b):-1},"~N,com.stevesoft.pat.Pthings");e(c$,"toString",function(){return""});e(c$,"clone1",function(a){return new com.stevesoft.pat.CustomEndpoint(this.c.clone(a))},"java.util.Hashtable")});p("com.stevesoft.pat");q(["com.stevesoft.pat.PatternSub"],"com.stevesoft.pat.DotMulti",null,function(){c$=s(function(){this.mostMatches=
+this.fewestMatches=null;this.matchFewest=!1;this.src=null;this.srclength=0;this.dotDoesntMatchCR=!0;r(this,arguments)},com.stevesoft.pat,"DotMulti",com.stevesoft.pat.PatternSub);e(c$,"minChars",function(){return this.fewestMatches});e(c$,"maxChars",function(){return this.mostMatches});m(c$,function(a,b){t(this,com.stevesoft.pat.DotMulti,[]);this.fewestMatches=a;this.mostMatches=b},"com.stevesoft.pat.patInt,com.stevesoft.pat.patInt");e(c$,"toString",function(){return".{"+this.fewestMatches+","+this.mostMatches+
+"}"+(this.matchFewest?"?":"")+"(?# <= dot multi)"+this.nextString()});d(c$,"submatchInternal",function(a){if(a<this.srclength)if(this.dotDoesntMatchCR){if("\n"!=this.src.charAt(a))return 1+a}else return 1+a;return-1},"~N,com.stevesoft.pat.Pthings");e(c$,"matchInternal",function(a,b){var c=-1,f=a;this.src=b.src;this.srclength=this.src.length();this.dotDoesntMatchCR=b.dotDoesntMatchCR;if(this.matchFewest){for(var l=0;this.fewestMatches.intValue()>l;){f=this.submatchInternal(f,b);if(0>f)return-1;l++}if(0>
+f)return-1;c=this.nextMatch(f,b);if(0<=c)return c;if(this.mostMatches.finite())for(;0<f;){f=this.submatchInternal(f,b);if(0>f)break;l++;if(l>this.mostMatches.intValue())break;c=this.nextMatch(f,b);if(0<=c)return c}else for(;0<=f;){f=this.submatchInternal(f,b);if(0>f)break;c=this.nextMatch(f,b);if(0<=c)return c}return-1}for(l=0;this.fewestMatches.intValue()>l;)if(f=this.submatchInternal(f,b),0<=f)l++;else return-1;c=f;if(this.mostMatches.finite())for(;l<this.mostMatches.intValue();)if(f=this.submatchInternal(f,
+b),0<=f)c=f,l++;else break;else for(;;)if(f=this.submatchInternal(f,b),0<=f)c=f,l++;else break;for(;c>=a;){f=this.nextMatch(c,b);if(0<=f)return f;c-=1;l--;if(l<this.fewestMatches.intValue())break}return-1},"~N,com.stevesoft.pat.Pthings");e(c$,"clone1",function(){var a=new com.stevesoft.pat.DotMulti(this.fewestMatches,this.mostMatches);a.matchFewest=this.matchFewest;return a},"java.util.Hashtable");G(c$,"step",1,"idcount",1)});p("com.stevesoft.pat");q(["com.stevesoft.pat.Pattern"],"com.stevesoft.pat.End",
+["com.stevesoft.pat.patInt"],function(){c$=s(function(){this.retIsEnd=!1;r(this,arguments)},com.stevesoft.pat,"End",com.stevesoft.pat.Pattern);m(c$,function(a){t(this,com.stevesoft.pat.End,[]);this.retIsEnd=a},"~B");e(c$,"matchInternal",function(a,b){if(this.retIsEnd&&(b.mFlag&&a<b.src.length())&&"\n"==b.src.charAt(a)||b.src.length()==a)return this.nextMatch(a,b);a<b.src.length()&&b.src.charAt(a);return-1},"~N,com.stevesoft.pat.Pthings");e(c$,"toString",function(){return this.retIsEnd?"$":"\\Z"});
+e(c$,"maxChars",function(){return new com.stevesoft.pat.patInt(1)});e(c$,"clone1",function(){return new com.stevesoft.pat.End(this.retIsEnd)},"java.util.Hashtable")});p("com.stevesoft.pat");q(["com.stevesoft.pat.PatternSub"],"com.stevesoft.pat.FastMulti",["com.stevesoft.pat.RegSyntaxError","$.patInt"],function(){c$=s(function(){this.mostMatches=this.fewestMatches=null;this.matchFewest=!1;this.step=-1;r(this,arguments)},com.stevesoft.pat,"FastMulti",com.stevesoft.pat.PatternSub);e(c$,"minChars",function(){return this.sub.countMinChars().mul(this.fewestMatches)});
+e(c$,"maxChars",function(){return this.sub.countMaxChars().mul(this.mostMatches)});m(c$,function(a,b,c){t(this,com.stevesoft.pat.FastMulti,[]);null==c&&com.stevesoft.pat.RegSyntaxError.endItAll("Null length pattern followed by *, +, or other Multi.");this.fewestMatches=a;this.mostMatches=b;this.sub=c;this.step=c.countMinChars().intValue();this.sub.setParent(null)},"com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");d(c$,"toString",function(){return this.sub.toString()+"{"+
+this.fewestMatches+","+this.mostMatches+"}"+(this.matchFewest?"?":"")+"(?# <= fast multi)"+this.nextString()});d(c$,"matchInternal",function(a,b){var c=-1,f=a,c=b.src.length()-this.step,l=new com.stevesoft.pat.patInt(0);if(this.matchFewest){if(this.fewestMatches.lessEq(l)){var d=this.nextMatch(f,b);if(0<=d)return d}for(;0<=f&&f<=c;)if(f=this.sub.matchInternal(f,b),0<=f){l.inc();if(this.fewestMatches.lessEq(l)&&(d=this.nextMatch(f,b),0<=d))return d;if(l.equals(this.mostMatches))break}return-1}for(l=
+0;this.fewestMatches.intValue()>l;)if(f=this.sub.matchInternal(f,b),0<=f)l++;else return-1;c=f;if(this.mostMatches.finite())for(;l<this.mostMatches.intValue();)if(f=this.sub.matchInternal(f,b),0<=f)c=f,l++;else break;else for(;;)if(f=this.sub.matchInternal(f,b),0<=f)c=f,l++;else break;for(;c>=a;){f=this.nextMatch(c,b);if(0<=f)return f;c-=this.step;l--;if(l<this.fewestMatches.intValue())break}return-1},"~N,com.stevesoft.pat.Pthings");e(c$,"clone1",function(a){try{var b=new com.stevesoft.pat.FastMulti(this.fewestMatches,
+this.mostMatches,this.sub.clone(a));b.matchFewest=this.matchFewest;return b}catch(c){if(y(c,com.stevesoft.pat.RegSyntax))return null;throw c;}},"java.util.Hashtable")});p("com.stevesoft.pat");q(["java.lang.Error"],"com.stevesoft.pat.RegSyntaxError",["com.stevesoft.pat.RegSyntax"],function(){c$=B(com.stevesoft.pat,"RegSyntaxError",Error);m(c$,function(){t(this,com.stevesoft.pat.RegSyntaxError,[])});c$.endItAll=d(c$,"endItAll",function(a){if(com.stevesoft.pat.RegSyntaxError.RegSyntaxErrorEnabled)throw new com.stevesoft.pat.RegSyntaxError(a);
+throw new com.stevesoft.pat.RegSyntax(a);},"~S");G(c$,"RegSyntaxErrorEnabled",!1)});p("com.stevesoft.pat");q(["java.lang.Exception"],"com.stevesoft.pat.RegSyntax",null,function(){c$=B(com.stevesoft.pat,"RegSyntax",Exception);m(c$,function(){t(this,com.stevesoft.pat.RegSyntax,[])})});p("com.stevesoft.pat");q(["com.stevesoft.pat.Pattern"],"com.stevesoft.pat.Group",["com.stevesoft.pat.patInt"],function(){c$=s(function(){this.cl=this.op="\x00";r(this,arguments)},com.stevesoft.pat,"Group",com.stevesoft.pat.Pattern);
+m(c$,function(a,b){t(this,com.stevesoft.pat.Group,[]);this.op=a;this.cl=b},"~S,~S");e(c$,"matchInternal",function(a,b){var c,f=1;if(a<b.src.length()&&!this.Masked(a,b)&&b.src.charAt(a)!=this.op)return-1;for(c=a+1;c<b.src.length();c++){var d=b.src.charAt(c),k=!this.Masked(c,b);if(k&&"\\"==d)c++;else{k&&d==this.cl&&f--;if(0==f)return this.nextMatch(c+1,b);k&&d==this.op&&f++}}return-1},"~N,com.stevesoft.pat.Pthings");e(c$,"toString",function(){return"(?@"+this.op+this.cl+")"+this.nextString()});e(c$,
+"minChars",function(){return new com.stevesoft.pat.patInt(2)});e(c$,"clone1",function(){return new com.stevesoft.pat.Group(this.op,this.cl)},"java.util.Hashtable")});p("com.stevesoft.pat");q(["com.stevesoft.pat.PatternSub"],"com.stevesoft.pat.Multi",["com.stevesoft.pat.Multi_stage2"],function(){c$=s(function(){this.st2=this.p=this.b=this.a=null;this.matchFewest=!1;r(this,arguments)},com.stevesoft.pat,"Multi",com.stevesoft.pat.PatternSub);e(c$,"minChars",function(){return this.a.mul(this.p.countMinChars())});
+e(c$,"maxChars",function(){return this.b.mul(this.p.countMaxChars())});m(c$,function(a,b,c){t(this,com.stevesoft.pat.Multi,[]);this.a=a;this.b=b;this.p=c;this.st2=new com.stevesoft.pat.Multi_stage2(a,b,c);this.st2.parent=this;this.sub=this.st2.sub},"com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");e(c$,"toString",function(){this.st2.matchFewest=this.matchFewest;return this.st2.toString()});e(c$,"matchInternal",function(a,b){try{this.st2=new com.stevesoft.pat.Multi_stage2(this.a,
+this.b,this.p)}catch(c){if(!y(c,com.stevesoft.pat.RegSyntax))throw c;}this.st2.matchFewest=this.matchFewest;this.st2.parent=this;return this.st2.matchInternal(a,b)},"~N,com.stevesoft.pat.Pthings");e(c$,"clone1",function(a){try{var b=new com.stevesoft.pat.Multi(this.a,this.b,this.p.clone(a));b.matchFewest=this.matchFewest;return b}catch(c){if(y(c,com.stevesoft.pat.RegSyntax))return null;throw c;}},"java.util.Hashtable")});p("com.stevesoft.pat");q(["com.stevesoft.pat.PatternSub"],"com.stevesoft.pat.Multi_stage2",
+["com.stevesoft.pat.RegSyntaxError","$.patInt"],function(){c$=s(function(){this.matchMax=this.matchMin=this.count=this.nextRet=null;this.matchFewest=!1;this.pos_old=-1;r(this,arguments)},com.stevesoft.pat,"Multi_stage2",com.stevesoft.pat.PatternSub);d(c$,"toString",function(){var a;a=""+this.sub.toString();a+="{"+this.matchMin+","+this.matchMax+"}";this.matchFewest&&(a+="?");return a+=this.parent.nextString()});m(c$,function(a,b,c){t(this,com.stevesoft.pat.Multi_stage2,[]);null==c&&com.stevesoft.pat.RegSyntaxError.endItAll("Multiple match of Null pattern requested.");
+this.sub=c;this.nextRet=this;this.sub.setParent(this);this.matchMin=a;this.matchMax=b;this.count=new com.stevesoft.pat.patInt(0);a.lessEq(b)||com.stevesoft.pat.RegSyntaxError.endItAll("Bad Multi Args: "+a+">"+b);b=new com.stevesoft.pat.patInt(-1);a.lessEq(b)&&com.stevesoft.pat.RegSyntaxError.endItAll("Bad Multi Args: "+a+"< 0")},"com.stevesoft.pat.patInt,com.stevesoft.pat.patInt,com.stevesoft.pat.Pattern");d(c$,"getNext",function(){return this.nextRet});e(c$,"matchInternal",function(a,b){this.sub.setParent(this);
+var c=-1;if(0<=this.pos_old&&a==this.pos_old)return-1;this.pos_old=a;this.matchMin.lessEq(this.count)&&(c=a);if(!this.count.lessEq(this.matchMax)||a>b.src.length())return-1;if((this.matchFewest||this.count.equals(this.matchMax))&&0<=c){var f=K(this,com.stevesoft.pat.Multi_stage2,"getNext",[]);if(null==f)return c;c=this.testMatch(f,a,b);if(0<=c)return c;c=-1}this.count.inc();try{if(this.count.lessEq(this.matchMax)){var d=this.testMatch(this.sub,a,b);if(0<=d)return d}}finally{this.count.dec()}if(!this.matchFewest&&
+0<=c){f=K(this,com.stevesoft.pat.Multi_stage2,"getNext",[]);if(null==f)return c;c=this.testMatch(f,a,b)}return c},"~N,com.stevesoft.pat.Pthings");e(c$,"clone1",function(a){try{var b=new com.stevesoft.pat.Multi_stage2(this.matchMin,this.matchMax,this.sub.clone(a));b.matchFewest=this.matchFewest;return b}catch(c){if(y(c,com.stevesoft.pat.RegSyntax))return null;throw c;}},"java.util.Hashtable")});p("com.stevesoft.pat");q(["com.stevesoft.pat.Pattern"],"com.stevesoft.pat.NullPattern",["com.stevesoft.pat.patInt"],
+function(){c$=B(com.stevesoft.pat,"NullPattern",com.stevesoft.pat.Pattern);e(c$,"toString",function(){return this.nextString()});e(c$,"matchInternal",function(a,b){return this.nextMatch(a,b)},"~N,com.stevesoft.pat.Pthings");e(c$,"maxChars",function(){return new com.stevesoft.pat.patInt(0)});e(c$,"clone1",function(){return new com.stevesoft.pat.NullPattern},"java.util.Hashtable")});p("com.stevesoft.pat");q(["com.stevesoft.pat.Or","$.SubMark"],"com.stevesoft.pat.OrMark",null,function(){c$=s(function(){this.sm=
+null;this.id=0;r(this,arguments)},com.stevesoft.pat,"OrMark",com.stevesoft.pat.Or);J(c$,function(){this.sm=new com.stevesoft.pat.SubMark});m(c$,function(a){t(this,com.stevesoft.pat.OrMark,[]);this.sm.om=this;this.id=a},"~N");e(c$,"leftForm",function(){return"("});d(c$,"getNext",function(){return this.sm});d(c$,"matchInternal",function(a,b){this.sm.next=K(this,com.stevesoft.pat.OrMark,"getNext",[]);if(null==b.marks){var c=2*b.nMarks+2;b.marks=w(c,0);for(var f=0;f<c;f++)b.marks[f]=-1}b.marks[this.id]=
+a;c=K(this,com.stevesoft.pat.OrMark,"matchInternal",[a,b]);0>c?b.marks[this.id]=-1:b.marks[this.id]>b.marks[this.id+b.nMarks]&&(f=b.marks[this.id],b.marks[this.id]=b.marks[this.id+b.nMarks]+1,b.marks[this.id+b.nMarks]=f+1);return c},"~N,com.stevesoft.pat.Pthings");e(c$,"clone1",function(a){var b=new com.stevesoft.pat.OrMark(this.id);a.put(b,b);a.put(this,b);for(var c=0;c<this.v.size();c++)b.v.addElement(this.v.elementAt(c).clone(a));return b},"java.util.Hashtable")});p("com.stevesoft.pat");q(["com.stevesoft.pat.Pattern"],
+"com.stevesoft.pat.SubMark",null,function(){c$=s(function(){this.start_pos=this.end_pos=0;this.om=null;r(this,arguments)},com.stevesoft.pat,"SubMark",com.stevesoft.pat.Pattern);e(c$,"toString",function(){return""});e(c$,"matchInternal",function(a,b){b.marks[this.om.id+b.nMarks]=a;var c=this.nextMatch(a,b);0>c&&(b.marks[this.om.id+b.nMarks]=-1);return c},"~N,com.stevesoft.pat.Pthings")});p("com.stevesoft.pat");q(null,"com.stevesoft.pat.Prop",["com.stevesoft.pat.Bits"],function(){c$=B(com.stevesoft.pat,
+"Prop");c$.isDecimalDigit=d(c$,"isDecimalDigit",function(a){null==com.stevesoft.pat.Bits.decimal_digit&&com.stevesoft.pat.Bits.decimal_digit_f();return com.stevesoft.pat.Bits.decimal_digit.get(a.charCodeAt(0))},"~S");c$.isAlphabetic=d(c$,"isAlphabetic",function(a){null==com.stevesoft.pat.Bits.letter&&com.stevesoft.pat.Bits.letter_f();return com.stevesoft.pat.Bits.letter.get(a.charCodeAt(0))},"~S");c$.isMath=d(c$,"isMath",function(a){null==com.stevesoft.pat.Bits.math&&com.stevesoft.pat.Bits.math_f();
+return com.stevesoft.pat.Bits.math.get(a.charCodeAt(0))},"~S");c$.isCurrency=d(c$,"isCurrency",function(a){null==com.stevesoft.pat.Bits.currency&&com.stevesoft.pat.Bits.currency_f();return com.stevesoft.pat.Bits.currency.get(a.charCodeAt(0))},"~S");c$.isWhite=d(c$,"isWhite",function(a){null==com.stevesoft.pat.Bits.white&&com.stevesoft.pat.Bits.white_f();return com.stevesoft.pat.Bits.white.get(a.charCodeAt(0))},"~S");c$.isPunct=d(c$,"isPunct",function(a){null==com.stevesoft.pat.Bits.punct&&com.stevesoft.pat.Bits.punct_f();
+return com.stevesoft.pat.Bits.punct.get(a.charCodeAt(0))},"~S")});p("com.stevesoft.pat");c$=s(function(){this.carray=null;r(this,arguments)},com.stevesoft.pat,"Bits");m(c$,function(a){this.carray=a},"~A");d(c$,"get",function(a){return 0!=(this.carray[a>>4].charCodeAt(0)&1<<(a&15))},"~N");d(c$,"set",function(a,b){this.carray[a>>4]=b?String.fromCharCode(this.carray[a>>4].charCodeAt(0)|String.fromCharCode(1).charCodeAt(0)<<(a&15)):String.fromCharCode(this.carray[a>>4].charCodeAt(0)&String.fromCharCode(~(1<<
+(a&15))).charCodeAt(0))},"~N,~B");c$.upper_f=d(c$,"upper_f",function(){var a=N(4159,"\x00");com.stevesoft.pat.Bits.upper=new com.stevesoft.pat.Bits(a);a[4]=String.fromCharCode(65534);a[5]=String.fromCharCode(2047);a[12]=String.fromCharCode(65535);a[13]=String.fromCharCode(32639);a[16]=String.fromCharCode(21845);a[17]=String.fromCharCode(21845);a[18]=String.fromCharCode(21845);a[19]=String.fromCharCode(43605);a[20]=String.fromCharCode(21674);a[21]=String.fromCharCode(21845);a[22]=String.fromCharCode(21845);
+a[23]=String.fromCharCode(11093);a[24]=String.fromCharCode(52950);a[25]=String.fromCharCode(45531);a[26]=String.fromCharCode(53973);a[27]=String.fromCharCode(4526);a[28]=String.fromCharCode(42128);a[29]=String.fromCharCode(19114);a[30]=String.fromCharCode(21845);a[31]=String.fromCharCode(21522);a[32]=String.fromCharCode(21845);a[33]="U";a[56]=String.fromCharCode(55104);a[57]=String.fromCharCode(65534);a[58]=String.fromCharCode(4091);a[61]=String.fromCharCode(21532);a[62]=String.fromCharCode(21845);
+a[64]=String.fromCharCode(57342);a[65]=String.fromCharCode(65535);a[66]=String.fromCharCode(65535);a[70]=String.fromCharCode(21845);a[71]=String.fromCharCode(21845);a[72]=String.fromCharCode(1);a[73]=String.fromCharCode(21845);a[74]=String.fromCharCode(21845);a[75]=String.fromCharCode(21845);a[76]=String.fromCharCode(2186);a[77]=String.fromCharCode(21845);a[78]=String.fromCharCode(17749);a[79]=String.fromCharCode(277);a[83]=String.fromCharCode(65534);a[84]=String.fromCharCode(65535);a[85]=String.fromCharCode(127);
+a[266]=String.fromCharCode(65535);a[267]=String.fromCharCode(65535);a[268]=String.fromCharCode(63);a[480]=String.fromCharCode(21845);a[481]=String.fromCharCode(21845);a[482]=String.fromCharCode(21845);a[483]=String.fromCharCode(21845);a[484]=String.fromCharCode(21845);a[485]=String.fromCharCode(21845);a[486]=String.fromCharCode(21845);a[487]=String.fromCharCode(21845);a[488]=String.fromCharCode(21845);a[489]=String.fromCharCode(21);a[490]=String.fromCharCode(21845);a[491]=String.fromCharCode(21845);
+a[492]=String.fromCharCode(21845);a[493]=String.fromCharCode(21845);a[494]=String.fromCharCode(21845);a[495]=String.fromCharCode(341);a[496]=String.fromCharCode(65280);a[497]=String.fromCharCode(16128);a[498]=String.fromCharCode(65280);a[499]=String.fromCharCode(65280);a[500]=String.fromCharCode(16128);a[501]=String.fromCharCode(43520);a[502]=String.fromCharCode(65280);a[504]=String.fromCharCode(65280);a[505]=String.fromCharCode(65280);a[506]=String.fromCharCode(65280);a[507]=String.fromCharCode(24320);
+a[508]=String.fromCharCode(7936);a[509]=String.fromCharCode(3840);a[510]=String.fromCharCode(7936);a[511]=String.fromCharCode(7936);a[528]=String.fromCharCode(14468);a[529]=String.fromCharCode(16167);a[530]=String.fromCharCode(15696);a[531]=String.fromCharCode(11);a[4082]=String.fromCharCode(65534);a[4083]=String.fromCharCode(2047);a[4100]=String.fromCharCode(65534);a[4101]=String.fromCharCode(2047);a[4108]=String.fromCharCode(65535);a[4109]=String.fromCharCode(32639);a[4112]=String.fromCharCode(21845);
+a[4113]=String.fromCharCode(21845);a[4114]=String.fromCharCode(21845);a[4115]=String.fromCharCode(43605);a[4116]=String.fromCharCode(21674);a[4117]=String.fromCharCode(21845);a[4118]=String.fromCharCode(21845);a[4119]=String.fromCharCode(11093);a[4120]=String.fromCharCode(52950);a[4121]=String.fromCharCode(45531);a[4122]=String.fromCharCode(53973);a[4123]=String.fromCharCode(4526);a[4124]=String.fromCharCode(42128);a[4125]=String.fromCharCode(19114);a[4126]=String.fromCharCode(21845);a[4127]=String.fromCharCode(21522);
+a[4128]=String.fromCharCode(21845);a[4129]="U";a[4152]=String.fromCharCode(55104);a[4153]=String.fromCharCode(65534);a[4154]=String.fromCharCode(4091);a[4157]=String.fromCharCode(21532);a[4158]="U"});c$.lower_f=d(c$,"lower_f",function(){var a=N(4159,"\x00");com.stevesoft.pat.Bits.lower=new com.stevesoft.pat.Bits(a);a[6]=String.fromCharCode(65534);a[7]=String.fromCharCode(2047);a[10]=String.fromCharCode(1024);a[11]=String.fromCharCode(1056);a[13]=String.fromCharCode(32768);a[14]=String.fromCharCode(65535);
+a[15]=String.fromCharCode(65407);a[16]=String.fromCharCode(43690);a[17]=String.fromCharCode(43690);a[18]=String.fromCharCode(43690);a[19]=String.fromCharCode(21930);a[20]=String.fromCharCode(43861);a[21]=String.fromCharCode(43690);a[22]=String.fromCharCode(43690);a[23]=String.fromCharCode(54442);a[24]=String.fromCharCode(12585);a[25]=String.fromCharCode(20004);a[26]=String.fromCharCode(10538);a[27]=String.fromCharCode(9809);a[28]=String.fromCharCode(21056);a[29]=String.fromCharCode(46421);a[30]=String.fromCharCode(43690);
+a[31]=String.fromCharCode(43049);a[32]=String.fromCharCode(43690);a[33]=String.fromCharCode(170);a[37]=String.fromCharCode(65535);a[38]=String.fromCharCode(65535);a[39]=String.fromCharCode(65535);a[40]=String.fromCharCode(65535);a[41]=String.fromCharCode(65535);a[42]=String.fromCharCode(511);a[57]=String.fromCharCode(1);a[58]=String.fromCharCode(61440);a[59]=String.fromCharCode(65535);a[60]=String.fromCharCode(32767);a[61]="c";a[62]=String.fromCharCode(43688);a[63]=String.fromCharCode(7);a[67]=String.fromCharCode(65535);
+a[68]=String.fromCharCode(65535);a[69]=String.fromCharCode(57342);a[70]=String.fromCharCode(43690);a[71]=String.fromCharCode(43690);a[72]=String.fromCharCode(2);a[73]=String.fromCharCode(43690);a[74]=String.fromCharCode(43690);a[75]=String.fromCharCode(43690);a[76]=String.fromCharCode(4372);a[77]=String.fromCharCode(43690);a[78]=String.fromCharCode(35498);a[79]=String.fromCharCode(554);a[86]=String.fromCharCode(65534);a[87]=String.fromCharCode(65535);a[88]=String.fromCharCode(255);a[269]=String.fromCharCode(65535);
+a[270]=String.fromCharCode(65535);a[271]=String.fromCharCode(127);a[480]=String.fromCharCode(43690);a[481]=String.fromCharCode(43690);a[482]=String.fromCharCode(43690);a[483]=String.fromCharCode(43690);a[484]=String.fromCharCode(43690);a[485]=String.fromCharCode(43690);a[486]=String.fromCharCode(43690);a[487]=String.fromCharCode(43690);a[488]=String.fromCharCode(43690);a[489]=String.fromCharCode(4074);a[490]=String.fromCharCode(43690);a[491]=String.fromCharCode(43690);a[492]=String.fromCharCode(43690);
+a[493]=String.fromCharCode(43690);a[494]=String.fromCharCode(43690);a[495]=String.fromCharCode(682);a[496]=String.fromCharCode(255);a[497]=String.fromCharCode(63);a[498]=String.fromCharCode(255);a[499]=String.fromCharCode(255);a[500]=String.fromCharCode(63);a[501]=String.fromCharCode(255);a[502]=String.fromCharCode(255);a[503]=String.fromCharCode(16383);a[504]=String.fromCharCode(255);a[505]=String.fromCharCode(255);a[506]=String.fromCharCode(255);a[507]=String.fromCharCode(223);a[508]=String.fromCharCode(220);
+a[509]=String.fromCharCode(207);a[510]=String.fromCharCode(255);a[511]=String.fromCharCode(220);a[519]=String.fromCharCode(32768);a[528]=String.fromCharCode(50176);a[529]=String.fromCharCode(8);a[530]=String.fromCharCode(49152);a[531]=String.fromCharCode(16);a[4016]=String.fromCharCode(127);a[4017]=String.fromCharCode(248);a[4084]=String.fromCharCode(65534);a[4085]=String.fromCharCode(2047);a[4102]=String.fromCharCode(65534);a[4103]=String.fromCharCode(2047);a[4106]=String.fromCharCode(1024);a[4107]=
+String.fromCharCode(1056);a[4109]=String.fromCharCode(32768);a[4110]=String.fromCharCode(65535);a[4111]=String.fromCharCode(65407);a[4112]=String.fromCharCode(43690);a[4113]=String.fromCharCode(43690);a[4114]=String.fromCharCode(43690);a[4115]=String.fromCharCode(21930);a[4116]=String.fromCharCode(43861);a[4117]=String.fromCharCode(43690);a[4118]=String.fromCharCode(43690);a[4119]=String.fromCharCode(54442);a[4120]=String.fromCharCode(12585);a[4121]=String.fromCharCode(20004);a[4122]=String.fromCharCode(10538);
+a[4123]=String.fromCharCode(9809);a[4124]=String.fromCharCode(21056);a[4125]=String.fromCharCode(46421);a[4126]=String.fromCharCode(43690);a[4127]=String.fromCharCode(43049);a[4128]=String.fromCharCode(43690);a[4129]=String.fromCharCode(170);a[4133]=String.fromCharCode(65535);a[4134]=String.fromCharCode(65535);a[4135]=String.fromCharCode(65535);a[4136]=String.fromCharCode(65535);a[4137]=String.fromCharCode(65535);a[4138]=String.fromCharCode(511);a[4153]=String.fromCharCode(1);a[4154]=String.fromCharCode(61440);
+a[4155]=String.fromCharCode(65535);a[4156]=String.fromCharCode(32767);a[4157]="c";a[4158]=String.fromCharCode(168)});c$.title_f=d(c$,"title_f",function(){var a=N(4159,"\x00");com.stevesoft.pat.Bits.title=new com.stevesoft.pat.Bits(a);a[6]=String.fromCharCode(65534);a[7]=String.fromCharCode(2047);a[10]=String.fromCharCode(1024);a[11]=String.fromCharCode(1056);a[13]=String.fromCharCode(32768);a[14]=String.fromCharCode(65535);a[15]=String.fromCharCode(65407);a[16]=String.fromCharCode(43690);a[17]=String.fromCharCode(43690);
+a[18]=String.fromCharCode(43690);a[19]=String.fromCharCode(21930);a[20]=String.fromCharCode(43861);a[21]=String.fromCharCode(43690);a[22]=String.fromCharCode(43690);a[23]=String.fromCharCode(54442);a[24]=String.fromCharCode(12585);a[25]=String.fromCharCode(20004);a[26]=String.fromCharCode(10538);a[27]=String.fromCharCode(9809);a[28]=String.fromCharCode(21056);a[29]=String.fromCharCode(46421);a[30]=String.fromCharCode(43690);a[31]=String.fromCharCode(43049);a[32]=String.fromCharCode(43690);a[33]=String.fromCharCode(170);
+a[37]=String.fromCharCode(65535);a[38]=String.fromCharCode(65535);a[39]=String.fromCharCode(65535);a[40]=String.fromCharCode(65535);a[41]=String.fromCharCode(65535);a[42]=String.fromCharCode(511);a[57]=String.fromCharCode(1);a[58]=String.fromCharCode(61440);a[59]=String.fromCharCode(65535);a[60]=String.fromCharCode(32767);a[61]="c";a[62]=String.fromCharCode(43688);a[63]=String.fromCharCode(7);a[67]=String.fromCharCode(65535);a[68]=String.fromCharCode(65535);a[69]=String.fromCharCode(57342);a[70]=
+String.fromCharCode(43690);a[71]=String.fromCharCode(43690);a[72]=String.fromCharCode(2);a[73]=String.fromCharCode(43690);a[74]=String.fromCharCode(43690);a[75]=String.fromCharCode(43690);a[76]=String.fromCharCode(4372);a[77]=String.fromCharCode(43690);a[78]=String.fromCharCode(35498);a[79]=String.fromCharCode(554);a[86]=String.fromCharCode(65534);a[87]=String.fromCharCode(65535);a[88]=String.fromCharCode(255);a[269]=String.fromCharCode(65535);a[270]=String.fromCharCode(65535);a[271]=String.fromCharCode(127);
+a[480]=String.fromCharCode(43690);a[481]=String.fromCharCode(43690);a[482]=String.fromCharCode(43690);a[483]=String.fromCharCode(43690);a[484]=String.fromCharCode(43690);a[485]=String.fromCharCode(43690);a[486]=String.fromCharCode(43690);a[487]=String.fromCharCode(43690);a[488]=String.fromCharCode(43690);a[489]=String.fromCharCode(4074);a[490]=String.fromCharCode(43690);a[491]=String.fromCharCode(43690);a[492]=String.fromCharCode(43690);a[493]=String.fromCharCode(43690);a[494]=String.fromCharCode(43690);
+a[495]=String.fromCharCode(682);a[496]=String.fromCharCode(255);a[497]=String.fromCharCode(63);a[498]=String.fromCharCode(255);a[499]=String.fromCharCode(255);a[500]=String.fromCharCode(63);a[501]=String.fromCharCode(255);a[502]=String.fromCharCode(255);a[503]=String.fromCharCode(16383);a[504]=String.fromCharCode(255);a[505]=String.fromCharCode(255);a[506]=String.fromCharCode(255);a[507]=String.fromCharCode(223);a[508]=String.fromCharCode(220);a[509]=String.fromCharCode(207);a[510]=String.fromCharCode(255);
+a[511]=String.fromCharCode(220);a[519]=String.fromCharCode(32768);a[528]=String.fromCharCode(50176);a[529]=String.fromCharCode(8);a[530]=String.fromCharCode(49152);a[531]=String.fromCharCode(16);a[4016]=String.fromCharCode(127);a[4017]=String.fromCharCode(248);a[4084]=String.fromCharCode(65534);a[4085]=String.fromCharCode(2047);a[4102]=String.fromCharCode(65534);a[4103]=String.fromCharCode(2047);a[4106]=String.fromCharCode(1024);a[4107]=String.fromCharCode(1056);a[4109]=String.fromCharCode(32768);
+a[4110]=String.fromCharCode(65535);a[4111]=String.fromCharCode(65407);a[4112]=String.fromCharCode(43690);a[4113]=String.fromCharCode(43690);a[4114]=String.fromCharCode(43690);a[4115]=String.fromCharCode(21930);a[4116]=String.fromCharCode(43861);a[4117]=String.fromCharCode(43690);a[4118]=String.fromCharCode(43690);a[4119]=String.fromCharCode(54442);a[4120]=String.fromCharCode(12585);a[4121]=String.fromCharCode(20004);a[4122]=String.fromCharCode(10538);a[4123]=String.fromCharCode(9809);a[4124]=String.fromCharCode(21056);
+a[4125]=String.fromCharCode(46421);a[4126]=String.fromCharCode(43690);a[4127]=String.fromCharCode(43049);a[4128]=String.fromCharCode(43690);a[4129]=String.fromCharCode(170);a[4133]=String.fromCharCode(65535);a[4134]=String.fromCharCode(65535);a[4135]=String.fromCharCode(65535);a[4136]=String.fromCharCode(65535);a[4137]=String.fromCharCode(65535);a[4138]=String.fromCharCode(511);a[4153]=String.fromCharCode(1);a[4154]=String.fromCharCode(61440);a[4155]=String.fromCharCode(65535);a[4156]=String.fromCharCode(32767);
+a[4157]="c";a[4158]=String.fromCharCode(168)});c$.currency_f=d(c$,"currency_f",function(){var a=N(4159,"\x00");com.stevesoft.pat.Bits.currency=new com.stevesoft.pat.Bits(a);a[2]=String.fromCharCode(16);a[10]=String.fromCharCode(60);a[159]=String.fromCharCode(12);a[227]=String.fromCharCode(32768);a[522]=String.fromCharCode(8191);a[4070]=String.fromCharCode(512);a[4080]=String.fromCharCode(16);a[4094]="c";a[4098]=String.fromCharCode(16);a[4106]=String.fromCharCode(60)});c$.decimal_digit_f=d(c$,"decimal_digit_f",
+function(){var a=N(4159,"\x00");com.stevesoft.pat.Bits.decimal_digit=new com.stevesoft.pat.Bits(a);a[3]=String.fromCharCode(1023);a[102]=String.fromCharCode(1023);a[111]=String.fromCharCode(1023);a[150]=String.fromCharCode(65472);a[158]=String.fromCharCode(65472);a[166]=String.fromCharCode(65472);a[174]=String.fromCharCode(65472);a[182]=String.fromCharCode(65472);a[190]=String.fromCharCode(65408);a[198]=String.fromCharCode(65472);a[206]=String.fromCharCode(65472);a[214]=String.fromCharCode(65472);
+a[229]=String.fromCharCode(1023);a[237]=String.fromCharCode(1023);a[242]=String.fromCharCode(1023);a[4081]=String.fromCharCode(1023);a[4099]=String.fromCharCode(1023)});c$.math_f=d(c$,"math_f",function(){var a=N(4159,"\x00");com.stevesoft.pat.Bits.math=new com.stevesoft.pat.Bits(a);a[2]=String.fromCharCode(2048);a[3]=String.fromCharCode(28672);a[7]=String.fromCharCode(20480);a[10]=String.fromCharCode(4096);a[11]=String.fromCharCode(2);a[13]=String.fromCharCode(128);a[15]=String.fromCharCode(128);
+a[516]=String.fromCharCode(16);a[519]=String.fromCharCode(7168);a[520]=String.fromCharCode(7168);a[537]=String.fromCharCode(31);a[541]=String.fromCharCode(20);a[544]=String.fromCharCode(65535);a[545]=String.fromCharCode(65535);a[546]=String.fromCharCode(65535);a[547]=String.fromCharCode(65535);a[548]=String.fromCharCode(65535);a[549]=String.fromCharCode(65535);a[550]=String.fromCharCode(65535);a[551]=String.fromCharCode(65535);a[552]=String.fromCharCode(65535);a[553]=String.fromCharCode(65535);a[554]=
+String.fromCharCode(65535);a[555]=String.fromCharCode(65535);a[556]=String.fromCharCode(65535);a[557]=String.fromCharCode(65535);a[558]=String.fromCharCode(65535);a[559]=String.fromCharCode(3);a[560]=String.fromCharCode(3840);a[562]=String.fromCharCode(3);a[4018]=String.fromCharCode(512);a[4070]="t";a[4080]=String.fromCharCode(2048);a[4081]=String.fromCharCode(28672);a[4085]=String.fromCharCode(20480);a[4094]=String.fromCharCode(7940);a[4098]=String.fromCharCode(2048);a[4099]=String.fromCharCode(28672);
+a[4103]=String.fromCharCode(20480);a[4106]=String.fromCharCode(4096);a[4107]=String.fromCharCode(2);a[4109]=String.fromCharCode(128);a[4111]=String.fromCharCode(128)});c$.letter_f=d(c$,"letter_f",function(){var a=N(4159,"\x00");com.stevesoft.pat.Bits.letter=new com.stevesoft.pat.Bits(a);a[4]=String.fromCharCode(65534);a[5]=String.fromCharCode(2047);a[6]=String.fromCharCode(65534);a[7]=String.fromCharCode(2047);a[10]=String.fromCharCode(1024);a[11]=String.fromCharCode(1056);a[12]=String.fromCharCode(65535);
+a[13]=String.fromCharCode(65407);a[14]=String.fromCharCode(65535);a[15]=String.fromCharCode(65407);a[16]=String.fromCharCode(65535);a[17]=String.fromCharCode(65535);a[18]=String.fromCharCode(65535);a[19]=String.fromCharCode(65535);a[20]=String.fromCharCode(65535);a[21]=String.fromCharCode(65535);a[22]=String.fromCharCode(65535);a[23]=String.fromCharCode(65535);a[24]=String.fromCharCode(65535);a[25]=String.fromCharCode(65535);a[26]=String.fromCharCode(65535);a[27]=String.fromCharCode(65535);a[28]=
+String.fromCharCode(65535);a[29]=String.fromCharCode(65535);a[30]=String.fromCharCode(65535);a[31]=String.fromCharCode(64575);a[32]=String.fromCharCode(65535);a[33]=String.fromCharCode(255);a[37]=String.fromCharCode(65535);a[38]=String.fromCharCode(65535);a[39]=String.fromCharCode(65535);a[40]=String.fromCharCode(65535);a[41]=String.fromCharCode(65535);a[42]=String.fromCharCode(511);a[43]=String.fromCharCode(63999);a[44]=String.fromCharCode(3);a[45]=String.fromCharCode(3);a[46]=String.fromCharCode(31);
+a[55]=String.fromCharCode(1024);a[56]=String.fromCharCode(55104);a[57]=String.fromCharCode(65535);a[58]=String.fromCharCode(65531);a[59]=String.fromCharCode(65535);a[60]=String.fromCharCode(32767);a[61]=String.fromCharCode(21631);a[62]=String.fromCharCode(65533);a[63]=String.fromCharCode(15);a[64]=String.fromCharCode(57342);a[65]=String.fromCharCode(65535);a[66]=String.fromCharCode(65535);a[67]=String.fromCharCode(65535);a[68]=String.fromCharCode(65535);a[69]=String.fromCharCode(57342);a[70]=String.fromCharCode(65535);
+a[71]=String.fromCharCode(65535);a[72]=String.fromCharCode(3);a[73]=String.fromCharCode(65535);a[74]=String.fromCharCode(65535);a[75]=String.fromCharCode(65535);a[76]=String.fromCharCode(6559);a[77]=String.fromCharCode(65535);a[78]=String.fromCharCode(53247);a[79]=String.fromCharCode(831);a[83]=String.fromCharCode(65534);a[84]=String.fromCharCode(65535);a[85]=String.fromCharCode(639);a[86]=String.fromCharCode(65534);a[87]=String.fromCharCode(65535);a[88]=String.fromCharCode(255);a[93]=String.fromCharCode(65535);
+a[94]=String.fromCharCode(2047);a[95]=String.fromCharCode(7);a[98]=String.fromCharCode(65534);a[99]=String.fromCharCode(2047);a[100]=String.fromCharCode(2047);a[103]=String.fromCharCode(65534);a[104]=String.fromCharCode(65535);a[105]=String.fromCharCode(65535);a[106]=String.fromCharCode(65535);a[107]=String.fromCharCode(31999);a[108]=String.fromCharCode(32767);a[109]=String.fromCharCode(47);a[110]=String.fromCharCode(96);a[144]=String.fromCharCode(65504);a[145]=String.fromCharCode(65535);a[146]=String.fromCharCode(65535);
+a[147]=String.fromCharCode(9215);a[149]=String.fromCharCode(65280);a[150]=String.fromCharCode(3);a[152]=String.fromCharCode(40928);a[153]=String.fromCharCode(65529);a[154]=String.fromCharCode(65023);a[155]=String.fromCharCode(965);a[157]=String.fromCharCode(45056);a[158]=String.fromCharCode(3);a[159]=String.fromCharCode(3);a[160]=String.fromCharCode(34784);a[161]=String.fromCharCode(65529);a[162]=String.fromCharCode(65023);a[163]=String.fromCharCode(877);a[165]=String.fromCharCode(24064);a[167]=String.fromCharCode(28);
+a[168]=String.fromCharCode(45024);a[169]=String.fromCharCode(65531);a[170]=String.fromCharCode(65023);a[171]=String.fromCharCode(9197);a[174]=String.fromCharCode(1);a[176]=String.fromCharCode(40928);a[177]=String.fromCharCode(65529);a[178]=String.fromCharCode(65023);a[179]=String.fromCharCode(9165);a[181]=String.fromCharCode(45056);a[182]=String.fromCharCode(3);a[184]=String.fromCharCode(51168);a[185]=String.fromCharCode(54845);a[186]=String.fromCharCode(50968);a[187]=String.fromCharCode(959);a[192]=
+String.fromCharCode(57312);a[193]=String.fromCharCode(65533);a[194]=String.fromCharCode(65023);a[195]=String.fromCharCode(1007);a[198]=String.fromCharCode(3);a[200]=String.fromCharCode(57312);a[201]=String.fromCharCode(65533);a[202]=String.fromCharCode(65023);a[203]=String.fromCharCode(1007);a[205]=String.fromCharCode(16384);a[206]=String.fromCharCode(3);a[208]=String.fromCharCode(57312);a[209]=String.fromCharCode(65533);a[210]=String.fromCharCode(65023);a[211]=String.fromCharCode(1023);a[214]=String.fromCharCode(3);
+a[224]=String.fromCharCode(65534);a[225]=String.fromCharCode(65535);a[226]=String.fromCharCode(32767);a[227]=String.fromCharCode(13);a[228]=String.fromCharCode(127);a[232]=String.fromCharCode(9622);a[233]=String.fromCharCode(65264);a[234]=String.fromCharCode(27822);a[235]=String.fromCharCode(8205);a[236]=String.fromCharCode(95);a[237]=String.fromCharCode(12288);a[244]=String.fromCharCode(65279);a[245]=String.fromCharCode(65535);a[246]=String.fromCharCode(1023);a[266]=String.fromCharCode(65535);a[267]=
+String.fromCharCode(65535);a[268]=String.fromCharCode(63);a[269]=String.fromCharCode(65535);a[270]=String.fromCharCode(65535);a[271]=String.fromCharCode(127);a[272]=String.fromCharCode(65535);a[273]=String.fromCharCode(65535);a[274]=String.fromCharCode(65535);a[275]=String.fromCharCode(65535);a[276]=String.fromCharCode(65535);a[277]=String.fromCharCode(33791);a[278]=String.fromCharCode(65535);a[279]=String.fromCharCode(65535);a[280]=String.fromCharCode(65535);a[281]=String.fromCharCode(65535);a[282]=
+String.fromCharCode(65287);a[283]=String.fromCharCode(65535);a[284]=String.fromCharCode(65535);a[285]=String.fromCharCode(65535);a[286]=String.fromCharCode(65535);a[287]=String.fromCharCode(1023);a[480]=String.fromCharCode(65535);a[481]=String.fromCharCode(65535);a[482]=String.fromCharCode(65535);a[483]=String.fromCharCode(65535);a[484]=String.fromCharCode(65535);a[485]=String.fromCharCode(65535);a[486]=String.fromCharCode(65535);a[487]=String.fromCharCode(65535);a[488]=String.fromCharCode(65535);
+a[489]=String.fromCharCode(4095);a[490]=String.fromCharCode(65535);a[491]=String.fromCharCode(65535);a[492]=String.fromCharCode(65535);a[493]=String.fromCharCode(65535);a[494]=String.fromCharCode(65535);a[495]=String.fromCharCode(1023);a[496]=String.fromCharCode(65535);a[497]=String.fromCharCode(16191);a[498]=String.fromCharCode(65535);a[499]=String.fromCharCode(65535);a[500]=String.fromCharCode(16191);a[501]=String.fromCharCode(43775);a[502]=String.fromCharCode(65535);a[503]=String.fromCharCode(16383);
+a[504]=String.fromCharCode(65535);a[505]=String.fromCharCode(65535);a[506]=String.fromCharCode(65535);a[507]=String.fromCharCode(24543);a[508]=String.fromCharCode(8156);a[509]=String.fromCharCode(4047);a[510]=String.fromCharCode(8191);a[511]=String.fromCharCode(8156);a[519]=String.fromCharCode(32768);a[528]=String.fromCharCode(64644);a[529]=String.fromCharCode(16175);a[530]=String.fromCharCode(64848);a[531]=String.fromCharCode(507);a[768]=String.fromCharCode(32);a[771]=String.fromCharCode(62);a[772]=
+String.fromCharCode(65534);a[773]=String.fromCharCode(65535);a[774]=String.fromCharCode(65535);a[775]=String.fromCharCode(65535);a[776]=String.fromCharCode(65535);a[777]=String.fromCharCode(30751);a[778]=String.fromCharCode(65534);a[779]=String.fromCharCode(65535);a[780]=String.fromCharCode(65535);a[781]=String.fromCharCode(65535);a[782]=String.fromCharCode(65535);a[783]=String.fromCharCode(30719);a[784]=String.fromCharCode(65504);a[785]=String.fromCharCode(65535);a[786]=String.fromCharCode(8191);
+a[787]=String.fromCharCode(65534);a[788]=String.fromCharCode(65535);a[789]=String.fromCharCode(65535);a[790]=String.fromCharCode(65535);a[791]=String.fromCharCode(65535);a[792]=String.fromCharCode(32767);a[1248]=String.fromCharCode(65535);a[1249]=String.fromCharCode(65535);a[1250]=String.fromCharCode(65535);a[1251]=String.fromCharCode(65535);a[1252]=String.fromCharCode(65535);a[1253]=String.fromCharCode(65535);a[1254]=String.fromCharCode(65535);a[1255]=String.fromCharCode(65535);a[1256]=String.fromCharCode(65535);
+a[1257]=String.fromCharCode(65535);a[1258]=String.fromCharCode(65535);a[1259]=String.fromCharCode(65535);a[1260]=String.fromCharCode(65535);a[1261]=String.fromCharCode(65535);a[1262]=String.fromCharCode(65535);a[1263]=String.fromCharCode(65535);a[1264]=String.fromCharCode(65535);a[1265]=String.fromCharCode(65535);a[1266]=String.fromCharCode(65535);a[1267]=String.fromCharCode(65535);a[1268]=String.fromCharCode(65535);a[1269]=String.fromCharCode(65535);a[1270]=String.fromCharCode(65535);a[1271]=String.fromCharCode(65535);
+a[1272]=String.fromCharCode(65535);a[1273]=String.fromCharCode(65535);a[1274]=String.fromCharCode(65535);a[1275]=String.fromCharCode(65535);a[1276]=String.fromCharCode(65535);a[1277]=String.fromCharCode(65535);a[1278]=String.fromCharCode(65535);a[1279]=String.fromCharCode(65535);a[1280]=String.fromCharCode(65535);a[1281]=String.fromCharCode(65535);a[1282]=String.fromCharCode(65535);a[1283]=String.fromCharCode(65535);a[1284]=String.fromCharCode(65535);a[1285]=String.fromCharCode(65535);a[1286]=String.fromCharCode(65535);
+a[1287]=String.fromCharCode(65535);a[1288]=String.fromCharCode(65535);a[1289]=String.fromCharCode(65535);a[1290]=String.fromCharCode(65535);a[1291]=String.fromCharCode(65535);a[1292]=String.fromCharCode(65535);a[1293]=String.fromCharCode(65535);a[1294]=String.fromCharCode(65535);a[1295]=String.fromCharCode(65535);a[1296]=String.fromCharCode(65535);a[1297]=String.fromCharCode(65535);a[1298]=String.fromCharCode(65535);a[1299]=String.fromCharCode(65535);a[1300]=String.fromCharCode(65535);a[1301]=String.fromCharCode(65535);
+a[1302]=String.fromCharCode(65535);a[1303]=String.fromCharCode(65535);a[1304]=String.fromCharCode(65535);a[1305]=String.fromCharCode(65535);a[1306]=String.fromCharCode(65535);a[1307]=String.fromCharCode(65535);a[1308]=String.fromCharCode(65535);a[1309]=String.fromCharCode(65535);a[1310]=String.fromCharCode(65535);a[1311]=String.fromCharCode(65535);a[1312]=String.fromCharCode(65535);a[1313]=String.fromCharCode(65535);a[1314]=String.fromCharCode(65535);a[1315]=String.fromCharCode(65535);a[1316]=String.fromCharCode(65535);
+a[1317]=String.fromCharCode(65535);a[1318]=String.fromCharCode(65535);a[1319]=String.fromCharCode(65535);a[1320]=String.fromCharCode(65535);a[1321]=String.fromCharCode(65535);a[1322]=String.fromCharCode(65535);a[1323]=String.fromCharCode(65535);a[1324]=String.fromCharCode(65535);a[1325]=String.fromCharCode(65535);a[1326]=String.fromCharCode(65535);a[1327]=String.fromCharCode(65535);a[1328]=String.fromCharCode(65535);a[1329]=String.fromCharCode(65535);a[1330]=String.fromCharCode(65535);a[1331]=String.fromCharCode(65535);
+a[1332]=String.fromCharCode(65535);a[1333]=String.fromCharCode(65535);a[1334]=String.fromCharCode(65535);a[1335]=String.fromCharCode(65535);a[1336]=String.fromCharCode(65535);a[1337]=String.fromCharCode(65535);a[1338]=String.fromCharCode(65535);a[1339]=String.fromCharCode(65535);a[1340]=String.fromCharCode(65535);a[1341]=String.fromCharCode(65535);a[1342]=String.fromCharCode(65535);a[1343]=String.fromCharCode(65535);a[1344]=String.fromCharCode(65535);a[1345]=String.fromCharCode(65535);a[1346]=String.fromCharCode(65535);
+a[1347]=String.fromCharCode(65535);a[1348]=String.fromCharCode(65535);a[1349]=String.fromCharCode(65535);a[1350]=String.fromCharCode(65535);a[1351]=String.fromCharCode(65535);a[1352]=String.fromCharCode(65535);a[1353]=String.fromCharCode(65535);a[1354]=String.fromCharCode(65535);a[1355]=String.fromCharCode(65535);a[1356]=String.fromCharCode(65535);a[1357]=String.fromCharCode(65535);a[1358]=String.fromCharCode(65535);a[1359]=String.fromCharCode(65535);a[1360]=String.fromCharCode(65535);a[1361]=String.fromCharCode(65535);
+a[1362]=String.fromCharCode(65535);a[1363]=String.fromCharCode(65535);a[1364]=String.fromCharCode(65535);a[1365]=String.fromCharCode(65535);a[1366]=String.fromCharCode(65535);a[1367]=String.fromCharCode(65535);a[1368]=String.fromCharCode(65535);a[1369]=String.fromCharCode(65535);a[1370]=String.fromCharCode(65535);a[1371]=String.fromCharCode(65535);a[1372]=String.fromCharCode(65535);a[1373]=String.fromCharCode(65535);a[1374]=String.fromCharCode(65535);a[1375]=String.fromCharCode(65535);a[1376]=String.fromCharCode(65535);
+a[1377]=String.fromCharCode(65535);a[1378]=String.fromCharCode(65535);a[1379]=String.fromCharCode(65535);a[1380]=String.fromCharCode(65535);a[1381]=String.fromCharCode(65535);a[1382]=String.fromCharCode(65535);a[1383]=String.fromCharCode(65535);a[1384]=String.fromCharCode(65535);a[1385]=String.fromCharCode(65535);a[1386]=String.fromCharCode(65535);a[1387]=String.fromCharCode(65535);a[1388]=String.fromCharCode(65535);a[1389]=String.fromCharCode(65535);a[1390]=String.fromCharCode(65535);a[1391]=String.fromCharCode(65535);
+a[1392]=String.fromCharCode(65535);a[1393]=String.fromCharCode(65535);a[1394]=String.fromCharCode(65535);a[1395]=String.fromCharCode(65535);a[1396]=String.fromCharCode(65535);a[1397]=String.fromCharCode(65535);a[1398]=String.fromCharCode(65535);a[1399]=String.fromCharCode(65535);a[1400]=String.fromCharCode(65535);a[1401]=String.fromCharCode(65535);a[1402]=String.fromCharCode(65535);a[1403]=String.fromCharCode(65535);a[1404]=String.fromCharCode(65535);a[1405]=String.fromCharCode(65535);a[1406]=String.fromCharCode(65535);
+a[1407]=String.fromCharCode(65535);a[1408]=String.fromCharCode(65535);a[1409]=String.fromCharCode(65535);a[1410]=String.fromCharCode(65535);a[1411]=String.fromCharCode(65535);a[1412]=String.fromCharCode(65535);a[1413]=String.fromCharCode(65535);a[1414]=String.fromCharCode(65535);a[1415]=String.fromCharCode(65535);a[1416]=String.fromCharCode(65535);a[1417]=String.fromCharCode(65535);a[1418]=String.fromCharCode(65535);a[1419]=String.fromCharCode(65535);a[1420]=String.fromCharCode(65535);a[1421]=String.fromCharCode(65535);
+a[1422]=String.fromCharCode(65535);a[1423]=String.fromCharCode(65535);a[1424]=String.fromCharCode(65535);a[1425]=String.fromCharCode(65535);a[1426]=String.fromCharCode(65535);a[1427]=String.fromCharCode(65535);a[1428]=String.fromCharCode(65535);a[1429]=String.fromCharCode(65535);a[1430]=String.fromCharCode(65535);a[1431]=String.fromCharCode(65535);a[1432]=String.fromCharCode(65535);a[1433]=String.fromCharCode(65535);a[1434]=String.fromCharCode(65535);a[1435]=String.fromCharCode(65535);a[1436]=String.fromCharCode(65535);
+a[1437]=String.fromCharCode(65535);a[1438]=String.fromCharCode(65535);a[1439]=String.fromCharCode(65535);a[1440]=String.fromCharCode(65535);a[1441]=String.fromCharCode(65535);a[1442]=String.fromCharCode(65535);a[1443]=String.fromCharCode(65535);a[1444]=String.fromCharCode(65535);a[1445]=String.fromCharCode(65535);a[1446]=String.fromCharCode(65535);a[1447]=String.fromCharCode(65535);a[1448]=String.fromCharCode(65535);a[1449]=String.fromCharCode(65535);a[1450]=String.fromCharCode(65535);a[1451]=String.fromCharCode(65535);
+a[1452]=String.fromCharCode(65535);a[1453]=String.fromCharCode(65535);a[1454]=String.fromCharCode(65535);a[1455]=String.fromCharCode(65535);a[1456]=String.fromCharCode(65535);a[1457]=String.fromCharCode(65535);a[1458]=String.fromCharCode(65535);a[1459]=String.fromCharCode(65535);a[1460]=String.fromCharCode(65535);a[1461]=String.fromCharCode(65535);a[1462]=String.fromCharCode(65535);a[1463]=String.fromCharCode(65535);a[1464]=String.fromCharCode(65535);a[1465]=String.fromCharCode(65535);a[1466]=String.fromCharCode(65535);
+a[1467]=String.fromCharCode(65535);a[1468]=String.fromCharCode(65535);a[1469]=String.fromCharCode(65535);a[1470]=String.fromCharCode(65535);a[1471]=String.fromCharCode(65535);a[1472]=String.fromCharCode(65535);a[1473]=String.fromCharCode(65535);a[1474]=String.fromCharCode(65535);a[1475]=String.fromCharCode(65535);a[1476]=String.fromCharCode(65535);a[1477]=String.fromCharCode(65535);a[1478]=String.fromCharCode(65535);a[1479]=String.fromCharCode(65535);a[1480]=String.fromCharCode(65535);a[1481]=String.fromCharCode(65535);
+a[1482]=String.fromCharCode(65535);a[1483]=String.fromCharCode(65535);a[1484]=String.fromCharCode(65535);a[1485]=String.fromCharCode(65535);a[1486]=String.fromCharCode(65535);a[1487]=String.fromCharCode(65535);a[1488]=String.fromCharCode(65535);a[1489]=String.fromCharCode(65535);a[1490]=String.fromCharCode(65535);a[1491]=String.fromCharCode(65535);a[1492]=String.fromCharCode(65535);a[1493]=String.fromCharCode(65535);a[1494]=String.fromCharCode(65535);a[1495]=String.fromCharCode(65535);a[1496]=String.fromCharCode(65535);
+a[1497]=String.fromCharCode(65535);a[1498]=String.fromCharCode(65535);a[1499]=String.fromCharCode(65535);a[1500]=String.fromCharCode(65535);a[1501]=String.fromCharCode(65535);a[1502]=String.fromCharCode(65535);a[1503]=String.fromCharCode(65535);a[1504]=String.fromCharCode(65535);a[1505]=String.fromCharCode(65535);a[1506]=String.fromCharCode(65535);a[1507]=String.fromCharCode(65535);a[1508]=String.fromCharCode(65535);a[1509]=String.fromCharCode(65535);a[1510]=String.fromCharCode(65535);a[1511]=String.fromCharCode(65535);
+a[1512]=String.fromCharCode(65535);a[1513]=String.fromCharCode(65535);a[1514]=String.fromCharCode(65535);a[1515]=String.fromCharCode(65535);a[1516]=String.fromCharCode(65535);a[1517]=String.fromCharCode(65535);a[1518]=String.fromCharCode(65535);a[1519]=String.fromCharCode(65535);a[1520]=String.fromCharCode(65535);a[1521]=String.fromCharCode(65535);a[1522]=String.fromCharCode(65535);a[1523]=String.fromCharCode(65535);a[1524]=String.fromCharCode(65535);a[1525]=String.fromCharCode(65535);a[1526]=String.fromCharCode(65535);
+a[1527]=String.fromCharCode(65535);a[1528]=String.fromCharCode(65535);a[1529]=String.fromCharCode(65535);a[1530]=String.fromCharCode(65535);a[1531]=String.fromCharCode(65535);a[1532]=String.fromCharCode(65535);a[1533]=String.fromCharCode(65535);a[1534]=String.fromCharCode(65535);a[1535]=String.fromCharCode(65535);a[1536]=String.fromCharCode(65535);a[1537]=String.fromCharCode(65535);a[1538]=String.fromCharCode(65535);a[1539]=String.fromCharCode(65535);a[1540]=String.fromCharCode(65535);a[1541]=String.fromCharCode(65535);
+a[1542]=String.fromCharCode(65535);a[1543]=String.fromCharCode(65535);a[1544]=String.fromCharCode(65535);a[1545]=String.fromCharCode(65535);a[1546]=String.fromCharCode(65535);a[1547]=String.fromCharCode(65535);a[1548]=String.fromCharCode(65535);a[1549]=String.fromCharCode(65535);a[1550]=String.fromCharCode(65535);a[1551]=String.fromCharCode(65535);a[1552]=String.fromCharCode(65535);a[1553]=String.fromCharCode(65535);a[1554]=String.fromCharCode(65535);a[1555]=String.fromCharCode(65535);a[1556]=String.fromCharCode(65535);
+a[1557]=String.fromCharCode(65535);a[1558]=String.fromCharCode(65535);a[1559]=String.fromCharCode(65535);a[1560]=String.fromCharCode(65535);a[1561]=String.fromCharCode(65535);a[1562]=String.fromCharCode(65535);a[1563]=String.fromCharCode(65535);a[1564]=String.fromCharCode(65535);a[1565]=String.fromCharCode(65535);a[1566]=String.fromCharCode(65535);a[1567]=String.fromCharCode(65535);a[1568]=String.fromCharCode(65535);a[1569]=String.fromCharCode(65535);a[1570]=String.fromCharCode(65535);a[1571]=String.fromCharCode(65535);
+a[1572]=String.fromCharCode(65535);a[1573]=String.fromCharCode(65535);a[1574]=String.fromCharCode(65535);a[1575]=String.fromCharCode(65535);a[1576]=String.fromCharCode(65535);a[1577]=String.fromCharCode(65535);a[1578]=String.fromCharCode(65535);a[1579]=String.fromCharCode(65535);a[1580]=String.fromCharCode(65535);a[1581]=String.fromCharCode(65535);a[1582]=String.fromCharCode(65535);a[1583]=String.fromCharCode(65535);a[1584]=String.fromCharCode(65535);a[1585]=String.fromCharCode(65535);a[1586]=String.fromCharCode(65535);
+a[1587]=String.fromCharCode(65535);a[1588]=String.fromCharCode(65535);a[1589]=String.fromCharCode(65535);a[1590]=String.fromCharCode(65535);a[1591]=String.fromCharCode(65535);a[1592]=String.fromCharCode(65535);a[1593]=String.fromCharCode(65535);a[1594]=String.fromCharCode(65535);a[1595]=String.fromCharCode(65535);a[1596]=String.fromCharCode(65535);a[1597]=String.fromCharCode(65535);a[1598]=String.fromCharCode(65535);a[1599]=String.fromCharCode(65535);a[1600]=String.fromCharCode(65535);a[1601]=String.fromCharCode(65535);
+a[1602]=String.fromCharCode(65535);a[1603]=String.fromCharCode(65535);a[1604]=String.fromCharCode(65535);a[1605]=String.fromCharCode(65535);a[1606]=String.fromCharCode(65535);a[1607]=String.fromCharCode(65535);a[1608]=String.fromCharCode(65535);a[1609]=String.fromCharCode(65535);a[1610]=String.fromCharCode(65535);a[1611]=String.fromCharCode(65535);a[1612]=String.fromCharCode(65535);a[1613]=String.fromCharCode(65535);a[1614]=String.fromCharCode(65535);a[1615]=String.fromCharCode(65535);a[1616]=String.fromCharCode(65535);
+a[1617]=String.fromCharCode(65535);a[1618]=String.fromCharCode(65535);a[1619]=String.fromCharCode(65535);a[1620]=String.fromCharCode(65535);a[1621]=String.fromCharCode(65535);a[1622]=String.fromCharCode(65535);a[1623]=String.fromCharCode(65535);a[1624]=String.fromCharCode(65535);a[1625]=String.fromCharCode(65535);a[1626]=String.fromCharCode(65535);a[1627]=String.fromCharCode(65535);a[1628]=String.fromCharCode(65535);a[1629]=String.fromCharCode(65535);a[1630]=String.fromCharCode(65535);a[1631]=String.fromCharCode(65535);
+a[1632]=String.fromCharCode(65535);a[1633]=String.fromCharCode(65535);a[1634]=String.fromCharCode(65535);a[1635]=String.fromCharCode(65535);a[1636]=String.fromCharCode(65535);a[1637]=String.fromCharCode(65535);a[1638]=String.fromCharCode(65535);a[1639]=String.fromCharCode(65535);a[1640]=String.fromCharCode(65535);a[1641]=String.fromCharCode(65535);a[1642]=String.fromCharCode(65535);a[1643]=String.fromCharCode(65535);a[1644]=String.fromCharCode(65535);a[1645]=String.fromCharCode(65535);a[1646]=String.fromCharCode(65535);
+a[1647]=String.fromCharCode(65535);a[1648]=String.fromCharCode(65535);a[1649]=String.fromCharCode(65535);a[1650]=String.fromCharCode(65535);a[1651]=String.fromCharCode(65535);a[1652]=String.fromCharCode(65535);a[1653]=String.fromCharCode(65535);a[1654]=String.fromCharCode(65535);a[1655]=String.fromCharCode(65535);a[1656]=String.fromCharCode(65535);a[1657]=String.fromCharCode(65535);a[1658]=String.fromCharCode(65535);a[1659]=String.fromCharCode(65535);a[1660]=String.fromCharCode(65535);a[1661]=String.fromCharCode(65535);
+a[1662]=String.fromCharCode(65535);a[1663]=String.fromCharCode(65535);a[1664]=String.fromCharCode(65535);a[1665]=String.fromCharCode(65535);a[1666]=String.fromCharCode(65535);a[1667]=String.fromCharCode(65535);a[1668]=String.fromCharCode(65535);a[1669]=String.fromCharCode(65535);a[1670]=String.fromCharCode(65535);a[1671]=String.fromCharCode(65535);a[1672]=String.fromCharCode(65535);a[1673]=String.fromCharCode(65535);a[1674]=String.fromCharCode(65535);a[1675]=String.fromCharCode(65535);a[1676]=String.fromCharCode(65535);
+a[1677]=String.fromCharCode(65535);a[1678]=String.fromCharCode(65535);a[1679]=String.fromCharCode(65535);a[1680]=String.fromCharCode(65535);a[1681]=String.fromCharCode(65535);a[1682]=String.fromCharCode(65535);a[1683]=String.fromCharCode(65535);a[1684]=String.fromCharCode(65535);a[1685]=String.fromCharCode(65535);a[1686]=String.fromCharCode(65535);a[1687]=String.fromCharCode(65535);a[1688]=String.fromCharCode(65535);a[1689]=String.fromCharCode(65535);a[1690]=String.fromCharCode(65535);a[1691]=String.fromCharCode(65535);
+a[1692]=String.fromCharCode(65535);a[1693]=String.fromCharCode(65535);a[1694]=String.fromCharCode(65535);a[1695]=String.fromCharCode(65535);a[1696]=String.fromCharCode(65535);a[1697]=String.fromCharCode(65535);a[1698]=String.fromCharCode(65535);a[1699]=String.fromCharCode(65535);a[1700]=String.fromCharCode(65535);a[1701]=String.fromCharCode(65535);a[1702]=String.fromCharCode(65535);a[1703]=String.fromCharCode(65535);a[1704]=String.fromCharCode(65535);a[1705]=String.fromCharCode(65535);a[1706]=String.fromCharCode(65535);
+a[1707]=String.fromCharCode(65535);a[1708]=String.fromCharCode(65535);a[1709]=String.fromCharCode(65535);a[1710]=String.fromCharCode(65535);a[1711]=String.fromCharCode(65535);a[1712]=String.fromCharCode(65535);a[1713]=String.fromCharCode(65535);a[1714]=String.fromCharCode(65535);a[1715]=String.fromCharCode(65535);a[1716]=String.fromCharCode(65535);a[1717]=String.fromCharCode(65535);a[1718]=String.fromCharCode(65535);a[1719]=String.fromCharCode(65535);a[1720]=String.fromCharCode(65535);a[1721]=String.fromCharCode(65535);
+a[1722]=String.fromCharCode(65535);a[1723]=String.fromCharCode(65535);a[1724]=String.fromCharCode(65535);a[1725]=String.fromCharCode(65535);a[1726]=String.fromCharCode(65535);a[1727]=String.fromCharCode(65535);a[1728]=String.fromCharCode(65535);a[1729]=String.fromCharCode(65535);a[1730]=String.fromCharCode(65535);a[1731]=String.fromCharCode(65535);a[1732]=String.fromCharCode(65535);a[1733]=String.fromCharCode(65535);a[1734]=String.fromCharCode(65535);a[1735]=String.fromCharCode(65535);a[1736]=String.fromCharCode(65535);
+a[1737]=String.fromCharCode(65535);a[1738]=String.fromCharCode(65535);a[1739]=String.fromCharCode(65535);a[1740]=String.fromCharCode(65535);a[1741]=String.fromCharCode(65535);a[1742]=String.fromCharCode(65535);a[1743]=String.fromCharCode(65535);a[1744]=String.fromCharCode(65535);a[1745]=String.fromCharCode(65535);a[1746]=String.fromCharCode(65535);a[1747]=String.fromCharCode(65535);a[1748]=String.fromCharCode(65535);a[1749]=String.fromCharCode(65535);a[1750]=String.fromCharCode(65535);a[1751]=String.fromCharCode(65535);
+a[1752]=String.fromCharCode(65535);a[1753]=String.fromCharCode(65535);a[1754]=String.fromCharCode(65535);a[1755]=String.fromCharCode(65535);a[1756]=String.fromCharCode(65535);a[1757]=String.fromCharCode(65535);a[1758]=String.fromCharCode(65535);a[1759]=String.fromCharCode(65535);a[1760]=String.fromCharCode(65535);a[1761]=String.fromCharCode(65535);a[1762]=String.fromCharCode(65535);a[1763]=String.fromCharCode(65535);a[1764]=String.fromCharCode(65535);a[1765]=String.fromCharCode(65535);a[1766]=String.fromCharCode(65535);
+a[1767]=String.fromCharCode(65535);a[1768]=String.fromCharCode(65535);a[1769]=String.fromCharCode(65535);a[1770]=String.fromCharCode(65535);a[1771]=String.fromCharCode(65535);a[1772]=String.fromCharCode(65535);a[1773]=String.fromCharCode(65535);a[1774]=String.fromCharCode(65535);a[1775]=String.fromCharCode(65535);a[1776]=String.fromCharCode(65535);a[1777]=String.fromCharCode(65535);a[1778]=String.fromCharCode(65535);a[1779]=String.fromCharCode(65535);a[1780]=String.fromCharCode(65535);a[1781]=String.fromCharCode(65535);
+a[1782]=String.fromCharCode(65535);a[1783]=String.fromCharCode(65535);a[1784]=String.fromCharCode(65535);a[1785]=String.fromCharCode(65535);a[1786]=String.fromCharCode(65535);a[1787]=String.fromCharCode(65535);a[1788]=String.fromCharCode(65535);a[1789]=String.fromCharCode(65535);a[1790]=String.fromCharCode(65535);a[1791]=String.fromCharCode(65535);a[1792]=String.fromCharCode(65535);a[1793]=String.fromCharCode(65535);a[1794]=String.fromCharCode(65535);a[1795]=String.fromCharCode(65535);a[1796]=String.fromCharCode(65535);
+a[1797]=String.fromCharCode(65535);a[1798]=String.fromCharCode(65535);a[1799]=String.fromCharCode(65535);a[1800]=String.fromCharCode(65535);a[1801]=String.fromCharCode(65535);a[1802]=String.fromCharCode(65535);a[1803]=String.fromCharCode(65535);a[1804]=String.fromCharCode(65535);a[1805]=String.fromCharCode(65535);a[1806]=String.fromCharCode(65535);a[1807]=String.fromCharCode(65535);a[1808]=String.fromCharCode(65535);a[1809]=String.fromCharCode(65535);a[1810]=String.fromCharCode(65535);a[1811]=String.fromCharCode(65535);
+a[1812]=String.fromCharCode(65535);a[1813]=String.fromCharCode(65535);a[1814]=String.fromCharCode(65535);a[1815]=String.fromCharCode(65535);a[1816]=String.fromCharCode(65535);a[1817]=String.fromCharCode(65535);a[1818]=String.fromCharCode(65535);a[1819]=String.fromCharCode(65535);a[1820]=String.fromCharCode(65535);a[1821]=String.fromCharCode(65535);a[1822]=String.fromCharCode(65535);a[1823]=String.fromCharCode(65535);a[1824]=String.fromCharCode(65535);a[1825]=String.fromCharCode(65535);a[1826]=String.fromCharCode(65535);
+a[1827]=String.fromCharCode(65535);a[1828]=String.fromCharCode(65535);a[1829]=String.fromCharCode(65535);a[1830]=String.fromCharCode(65535);a[1831]=String.fromCharCode(65535);a[1832]=String.fromCharCode(65535);a[1833]=String.fromCharCode(65535);a[1834]=String.fromCharCode(65535);a[1835]=String.fromCharCode(65535);a[1836]=String.fromCharCode(65535);a[1837]=String.fromCharCode(65535);a[1838]=String.fromCharCode(65535);a[1839]=String.fromCharCode(65535);a[1840]=String.fromCharCode(65535);a[1841]=String.fromCharCode(65535);
+a[1842]=String.fromCharCode(65535);a[1843]=String.fromCharCode(65535);a[1844]=String.fromCharCode(65535);a[1845]=String.fromCharCode(65535);a[1846]=String.fromCharCode(65535);a[1847]=String.fromCharCode(65535);a[1848]=String.fromCharCode(65535);a[1849]=String.fromCharCode(65535);a[1850]=String.fromCharCode(65535);a[1851]=String.fromCharCode(65535);a[1852]=String.fromCharCode(65535);a[1853]=String.fromCharCode(65535);a[1854]=String.fromCharCode(65535);a[1855]=String.fromCharCode(65535);a[1856]=String.fromCharCode(65535);
+a[1857]=String.fromCharCode(65535);a[1858]=String.fromCharCode(65535);a[1859]=String.fromCharCode(65535);a[1860]=String.fromCharCode(65535);a[1861]=String.fromCharCode(65535);a[1862]=String.fromCharCode(65535);a[1863]=String.fromCharCode(65535);a[1864]=String.fromCharCode(65535);a[1865]=String.fromCharCode(65535);a[1866]=String.fromCharCode(65535);a[1867]=String.fromCharCode(65535);a[1868]=String.fromCharCode(65535);a[1869]=String.fromCharCode(65535);a[1870]=String.fromCharCode(65535);a[1871]=String.fromCharCode(65535);
+a[1872]=String.fromCharCode(65535);a[1873]=String.fromCharCode(65535);a[1874]=String.fromCharCode(65535);a[1875]=String.fromCharCode(65535);a[1876]=String.fromCharCode(65535);a[1877]=String.fromCharCode(65535);a[1878]=String.fromCharCode(65535);a[1879]=String.fromCharCode(65535);a[1880]=String.fromCharCode(65535);a[1881]=String.fromCharCode(65535);a[1882]=String.fromCharCode(65535);a[1883]=String.fromCharCode(65535);a[1884]=String.fromCharCode(65535);a[1885]=String.fromCharCode(65535);a[1886]=String.fromCharCode(65535);
+a[1887]=String.fromCharCode(65535);a[1888]=String.fromCharCode(65535);a[1889]=String.fromCharCode(65535);a[1890]=String.fromCharCode(65535);a[1891]=String.fromCharCode(65535);a[1892]=String.fromCharCode(65535);a[1893]=String.fromCharCode(65535);a[1894]=String.fromCharCode(65535);a[1895]=String.fromCharCode(65535);a[1896]=String.fromCharCode(65535);a[1897]=String.fromCharCode(65535);a[1898]=String.fromCharCode(65535);a[1899]=String.fromCharCode(65535);a[1900]=String.fromCharCode(65535);a[1901]=String.fromCharCode(65535);
+a[1902]=String.fromCharCode(65535);a[1903]=String.fromCharCode(65535);a[1904]=String.fromCharCode(65535);a[1905]=String.fromCharCode(65535);a[1906]=String.fromCharCode(65535);a[1907]=String.fromCharCode(65535);a[1908]=String.fromCharCode(65535);a[1909]=String.fromCharCode(65535);a[1910]=String.fromCharCode(65535);a[1911]=String.fromCharCode(65535);a[1912]=String.fromCharCode(65535);a[1913]=String.fromCharCode(65535);a[1914]=String.fromCharCode(65535);a[1915]=String.fromCharCode(65535);a[1916]=String.fromCharCode(65535);
+a[1917]=String.fromCharCode(65535);a[1918]=String.fromCharCode(65535);a[1919]=String.fromCharCode(65535);a[1920]=String.fromCharCode(65535);a[1921]=String.fromCharCode(65535);a[1922]=String.fromCharCode(65535);a[1923]=String.fromCharCode(65535);a[1924]=String.fromCharCode(65535);a[1925]=String.fromCharCode(65535);a[1926]=String.fromCharCode(65535);a[1927]=String.fromCharCode(65535);a[1928]=String.fromCharCode(65535);a[1929]=String.fromCharCode(65535);a[1930]=String.fromCharCode(65535);a[1931]=String.fromCharCode(65535);
+a[1932]=String.fromCharCode(65535);a[1933]=String.fromCharCode(65535);a[1934]=String.fromCharCode(65535);a[1935]=String.fromCharCode(65535);a[1936]=String.fromCharCode(65535);a[1937]=String.fromCharCode(65535);a[1938]=String.fromCharCode(65535);a[1939]=String.fromCharCode(65535);a[1940]=String.fromCharCode(65535);a[1941]=String.fromCharCode(65535);a[1942]=String.fromCharCode(65535);a[1943]=String.fromCharCode(65535);a[1944]=String.fromCharCode(65535);a[1945]=String.fromCharCode(65535);a[1946]=String.fromCharCode(65535);
+a[1947]=String.fromCharCode(65535);a[1948]=String.fromCharCode(65535);a[1949]=String.fromCharCode(65535);a[1950]=String.fromCharCode(65535);a[1951]=String.fromCharCode(65535);a[1952]=String.fromCharCode(65535);a[1953]=String.fromCharCode(65535);a[1954]=String.fromCharCode(65535);a[1955]=String.fromCharCode(65535);a[1956]=String.fromCharCode(65535);a[1957]=String.fromCharCode(65535);a[1958]=String.fromCharCode(65535);a[1959]=String.fromCharCode(65535);a[1960]=String.fromCharCode(65535);a[1961]=String.fromCharCode(65535);
+a[1962]=String.fromCharCode(65535);a[1963]=String.fromCharCode(65535);a[1964]=String.fromCharCode(65535);a[1965]=String.fromCharCode(65535);a[1966]=String.fromCharCode(65535);a[1967]=String.fromCharCode(65535);a[1968]=String.fromCharCode(65535);a[1969]=String.fromCharCode(65535);a[1970]=String.fromCharCode(65535);a[1971]=String.fromCharCode(65535);a[1972]=String.fromCharCode(65535);a[1973]=String.fromCharCode(65535);a[1974]=String.fromCharCode(65535);a[1975]=String.fromCharCode(65535);a[1976]=String.fromCharCode(65535);
+a[1977]=String.fromCharCode(65535);a[1978]=String.fromCharCode(65535);a[1979]=String.fromCharCode(65535);a[1980]=String.fromCharCode(65535);a[1981]=String.fromCharCode(65535);a[1982]=String.fromCharCode(65535);a[1983]=String.fromCharCode(65535);a[1984]=String.fromCharCode(65535);a[1985]=String.fromCharCode(65535);a[1986]=String.fromCharCode(65535);a[1987]=String.fromCharCode(65535);a[1988]=String.fromCharCode(65535);a[1989]=String.fromCharCode(65535);a[1990]=String.fromCharCode(65535);a[1991]=String.fromCharCode(65535);
+a[1992]=String.fromCharCode(65535);a[1993]=String.fromCharCode(65535);a[1994]=String.fromCharCode(65535);a[1995]=String.fromCharCode(65535);a[1996]=String.fromCharCode(65535);a[1997]=String.fromCharCode(65535);a[1998]=String.fromCharCode(65535);a[1999]=String.fromCharCode(65535);a[2E3]=String.fromCharCode(65535);a[2001]=String.fromCharCode(65535);a[2002]=String.fromCharCode(65535);a[2003]=String.fromCharCode(65535);a[2004]=String.fromCharCode(65535);a[2005]=String.fromCharCode(65535);a[2006]=String.fromCharCode(65535);
+a[2007]=String.fromCharCode(65535);a[2008]=String.fromCharCode(65535);a[2009]=String.fromCharCode(65535);a[2010]=String.fromCharCode(65535);a[2011]=String.fromCharCode(65535);a[2012]=String.fromCharCode(65535);a[2013]=String.fromCharCode(65535);a[2014]=String.fromCharCode(65535);a[2015]=String.fromCharCode(65535);a[2016]=String.fromCharCode(65535);a[2017]=String.fromCharCode(65535);a[2018]=String.fromCharCode(65535);a[2019]=String.fromCharCode(65535);a[2020]=String.fromCharCode(65535);a[2021]=String.fromCharCode(65535);
+a[2022]=String.fromCharCode(65535);a[2023]=String.fromCharCode(65535);a[2024]=String.fromCharCode(65535);a[2025]=String.fromCharCode(65535);a[2026]=String.fromCharCode(65535);a[2027]=String.fromCharCode(65535);a[2028]=String.fromCharCode(65535);a[2029]=String.fromCharCode(65535);a[2030]=String.fromCharCode(65535);a[2031]=String.fromCharCode(65535);a[2032]=String.fromCharCode(65535);a[2033]=String.fromCharCode(65535);a[2034]=String.fromCharCode(65535);a[2035]=String.fromCharCode(65535);a[2036]=String.fromCharCode(65535);
+a[2037]=String.fromCharCode(65535);a[2038]=String.fromCharCode(65535);a[2039]=String.fromCharCode(65535);a[2040]=String.fromCharCode(65535);a[2041]=String.fromCharCode(65535);a[2042]=String.fromCharCode(65535);a[2043]=String.fromCharCode(65535);a[2044]=String.fromCharCode(65535);a[2045]=String.fromCharCode(65535);a[2046]=String.fromCharCode(65535);a[2047]=String.fromCharCode(65535);a[2048]=String.fromCharCode(65535);a[2049]=String.fromCharCode(65535);a[2050]=String.fromCharCode(65535);a[2051]=String.fromCharCode(65535);
+a[2052]=String.fromCharCode(65535);a[2053]=String.fromCharCode(65535);a[2054]=String.fromCharCode(65535);a[2055]=String.fromCharCode(65535);a[2056]=String.fromCharCode(65535);a[2057]=String.fromCharCode(65535);a[2058]=String.fromCharCode(65535);a[2059]=String.fromCharCode(65535);a[2060]=String.fromCharCode(65535);a[2061]=String.fromCharCode(65535);a[2062]=String.fromCharCode(65535);a[2063]=String.fromCharCode(65535);a[2064]=String.fromCharCode(65535);a[2065]=String.fromCharCode(65535);a[2066]=String.fromCharCode(65535);
+a[2067]=String.fromCharCode(65535);a[2068]=String.fromCharCode(65535);a[2069]=String.fromCharCode(65535);a[2070]=String.fromCharCode(65535);a[2071]=String.fromCharCode(65535);a[2072]=String.fromCharCode(65535);a[2073]=String.fromCharCode(65535);a[2074]=String.fromCharCode(65535);a[2075]=String.fromCharCode(65535);a[2076]=String.fromCharCode(65535);a[2077]=String.fromCharCode(65535);a[2078]=String.fromCharCode(65535);a[2079]=String.fromCharCode(65535);a[2080]=String.fromCharCode(65535);a[2081]=String.fromCharCode(65535);
+a[2082]=String.fromCharCode(65535);a[2083]=String.fromCharCode(65535);a[2084]=String.fromCharCode(65535);a[2085]=String.fromCharCode(65535);a[2086]=String.fromCharCode(65535);a[2087]=String.fromCharCode(65535);a[2088]=String.fromCharCode(65535);a[2089]=String.fromCharCode(65535);a[2090]=String.fromCharCode(65535);a[2091]=String.fromCharCode(65535);a[2092]=String.fromCharCode(65535);a[2093]=String.fromCharCode(65535);a[2094]=String.fromCharCode(65535);a[2095]=String.fromCharCode(65535);a[2096]=String.fromCharCode(65535);
+a[2097]=String.fromCharCode(65535);a[2098]=String.fromCharCode(65535);a[2099]=String.fromCharCode(65535);a[2100]=String.fromCharCode(65535);a[2101]=String.fromCharCode(65535);a[2102]=String.fromCharCode(65535);a[2103]=String.fromCharCode(65535);a[2104]=String.fromCharCode(65535);a[2105]=String.fromCharCode(65535);a[2106]=String.fromCharCode(65535);a[2107]=String.fromCharCode(65535);a[2108]=String.fromCharCode(65535);a[2109]=String.fromCharCode(65535);a[2110]=String.fromCharCode(65535);a[2111]=String.fromCharCode(65535);
+a[2112]=String.fromCharCode(65535);a[2113]=String.fromCharCode(65535);a[2114]=String.fromCharCode(65535);a[2115]=String.fromCharCode(65535);a[2116]=String.fromCharCode(65535);a[2117]=String.fromCharCode(65535);a[2118]=String.fromCharCode(65535);a[2119]=String.fromCharCode(65535);a[2120]=String.fromCharCode(65535);a[2121]=String.fromCharCode(65535);a[2122]=String.fromCharCode(65535);a[2123]=String.fromCharCode(65535);a[2124]=String.fromCharCode(65535);a[2125]=String.fromCharCode(65535);a[2126]=String.fromCharCode(65535);
+a[2127]=String.fromCharCode(65535);a[2128]=String.fromCharCode(65535);a[2129]=String.fromCharCode(65535);a[2130]=String.fromCharCode(65535);a[2131]=String.fromCharCode(65535);a[2132]=String.fromCharCode(65535);a[2133]=String.fromCharCode(65535);a[2134]=String.fromCharCode(65535);a[2135]=String.fromCharCode(65535);a[2136]=String.fromCharCode(65535);a[2137]=String.fromCharCode(65535);a[2138]=String.fromCharCode(65535);a[2139]=String.fromCharCode(65535);a[2140]=String.fromCharCode(65535);a[2141]=String.fromCharCode(65535);
+a[2142]=String.fromCharCode(65535);a[2143]=String.fromCharCode(65535);a[2144]=String.fromCharCode(65535);a[2145]=String.fromCharCode(65535);a[2146]=String.fromCharCode(65535);a[2147]=String.fromCharCode(65535);a[2148]=String.fromCharCode(65535);a[2149]=String.fromCharCode(65535);a[2150]=String.fromCharCode(65535);a[2151]=String.fromCharCode(65535);a[2152]=String.fromCharCode(65535);a[2153]=String.fromCharCode(65535);a[2154]=String.fromCharCode(65535);a[2155]=String.fromCharCode(65535);a[2156]=String.fromCharCode(65535);
+a[2157]=String.fromCharCode(65535);a[2158]=String.fromCharCode(65535);a[2159]=String.fromCharCode(65535);a[2160]=String.fromCharCode(65535);a[2161]=String.fromCharCode(65535);a[2162]=String.fromCharCode(65535);a[2163]=String.fromCharCode(65535);a[2164]=String.fromCharCode(65535);a[2165]=String.fromCharCode(65535);a[2166]=String.fromCharCode(65535);a[2167]=String.fromCharCode(65535);a[2168]=String.fromCharCode(65535);a[2169]=String.fromCharCode(65535);a[2170]=String.fromCharCode(65535);a[2171]=String.fromCharCode(65535);
+a[2172]=String.fromCharCode(65535);a[2173]=String.fromCharCode(65535);a[2174]=String.fromCharCode(65535);a[2175]=String.fromCharCode(65535);a[2176]=String.fromCharCode(65535);a[2177]=String.fromCharCode(65535);a[2178]=String.fromCharCode(65535);a[2179]=String.fromCharCode(65535);a[2180]=String.fromCharCode(65535);a[2181]=String.fromCharCode(65535);a[2182]=String.fromCharCode(65535);a[2183]=String.fromCharCode(65535);a[2184]=String.fromCharCode(65535);a[2185]=String.fromCharCode(65535);a[2186]=String.fromCharCode(65535);
+a[2187]=String.fromCharCode(65535);a[2188]=String.fromCharCode(65535);a[2189]=String.fromCharCode(65535);a[2190]=String.fromCharCode(65535);a[2191]=String.fromCharCode(65535);a[2192]=String.fromCharCode(65535);a[2193]=String.fromCharCode(65535);a[2194]=String.fromCharCode(65535);a[2195]=String.fromCharCode(65535);a[2196]=String.fromCharCode(65535);a[2197]=String.fromCharCode(65535);a[2198]=String.fromCharCode(65535);a[2199]=String.fromCharCode(65535);a[2200]=String.fromCharCode(65535);a[2201]=String.fromCharCode(65535);
+a[2202]=String.fromCharCode(65535);a[2203]=String.fromCharCode(65535);a[2204]=String.fromCharCode(65535);a[2205]=String.fromCharCode(65535);a[2206]=String.fromCharCode(65535);a[2207]=String.fromCharCode(65535);a[2208]=String.fromCharCode(65535);a[2209]=String.fromCharCode(65535);a[2210]=String.fromCharCode(65535);a[2211]=String.fromCharCode(65535);a[2212]=String.fromCharCode(65535);a[2213]=String.fromCharCode(65535);a[2214]=String.fromCharCode(65535);a[2215]=String.fromCharCode(65535);a[2216]=String.fromCharCode(65535);
+a[2217]=String.fromCharCode(65535);a[2218]=String.fromCharCode(65535);a[2219]=String.fromCharCode(65535);a[2220]=String.fromCharCode(65535);a[2221]=String.fromCharCode(65535);a[2222]=String.fromCharCode(65535);a[2223]=String.fromCharCode(65535);a[2224]=String.fromCharCode(65535);a[2225]=String.fromCharCode(65535);a[2226]=String.fromCharCode(65535);a[2227]=String.fromCharCode(65535);a[2228]=String.fromCharCode(65535);a[2229]=String.fromCharCode(65535);a[2230]=String.fromCharCode(65535);a[2231]=String.fromCharCode(65535);
+a[2232]=String.fromCharCode(65535);a[2233]=String.fromCharCode(65535);a[2234]=String.fromCharCode(65535);a[2235]=String.fromCharCode(65535);a[2236]=String.fromCharCode(65535);a[2237]=String.fromCharCode(65535);a[2238]=String.fromCharCode(65535);a[2239]=String.fromCharCode(65535);a[2240]=String.fromCharCode(65535);a[2241]=String.fromCharCode(65535);a[2242]=String.fromCharCode(65535);a[2243]=String.fromCharCode(65535);a[2244]=String.fromCharCode(65535);a[2245]=String.fromCharCode(65535);a[2246]=String.fromCharCode(65535);
+a[2247]=String.fromCharCode(65535);a[2248]=String.fromCharCode(65535);a[2249]=String.fromCharCode(65535);a[2250]=String.fromCharCode(65535);a[2251]=String.fromCharCode(65535);a[2252]=String.fromCharCode(65535);a[2253]=String.fromCharCode(65535);a[2254]=String.fromCharCode(65535);a[2255]=String.fromCharCode(65535);a[2256]=String.fromCharCode(65535);a[2257]=String.fromCharCode(65535);a[2258]=String.fromCharCode(65535);a[2259]=String.fromCharCode(65535);a[2260]=String.fromCharCode(65535);a[2261]=String.fromCharCode(65535);
+a[2262]=String.fromCharCode(65535);a[2263]=String.fromCharCode(65535);a[2264]=String.fromCharCode(65535);a[2265]=String.fromCharCode(65535);a[2266]=String.fromCharCode(65535);a[2267]=String.fromCharCode(65535);a[2268]=String.fromCharCode(65535);a[2269]=String.fromCharCode(65535);a[2270]=String.fromCharCode(65535);a[2271]=String.fromCharCode(65535);a[2272]=String.fromCharCode(65535);a[2273]=String.fromCharCode(65535);a[2274]=String.fromCharCode(65535);a[2275]=String.fromCharCode(65535);a[2276]=String.fromCharCode(65535);
+a[2277]=String.fromCharCode(65535);a[2278]=String.fromCharCode(65535);a[2279]=String.fromCharCode(65535);a[2280]=String.fromCharCode(65535);a[2281]=String.fromCharCode(65535);a[2282]=String.fromCharCode(65535);a[2283]=String.fromCharCode(65535);a[2284]=String.fromCharCode(65535);a[2285]=String.fromCharCode(65535);a[2286]=String.fromCharCode(65535);a[2287]=String.fromCharCode(65535);a[2288]=String.fromCharCode(65535);a[2289]=String.fromCharCode(65535);a[2290]=String.fromCharCode(65535);a[2291]=String.fromCharCode(65535);
+a[2292]=String.fromCharCode(65535);a[2293]=String.fromCharCode(65535);a[2294]=String.fromCharCode(65535);a[2295]=String.fromCharCode(65535);a[2296]=String.fromCharCode(65535);a[2297]=String.fromCharCode(65535);a[2298]=String.fromCharCode(65535);a[2299]=String.fromCharCode(65535);a[2300]=String.fromCharCode(65535);a[2301]=String.fromCharCode(65535);a[2302]=String.fromCharCode(65535);a[2303]=String.fromCharCode(65535);a[2304]=String.fromCharCode(65535);a[2305]=String.fromCharCode(65535);a[2306]=String.fromCharCode(65535);
+a[2307]=String.fromCharCode(65535);a[2308]=String.fromCharCode(65535);a[2309]=String.fromCharCode(65535);a[2310]=String.fromCharCode(65535);a[2311]=String.fromCharCode(65535);a[2312]=String.fromCharCode(65535);a[2313]=String.fromCharCode(65535);a[2314]=String.fromCharCode(65535);a[2315]=String.fromCharCode(65535);a[2316]=String.fromCharCode(65535);a[2317]=String.fromCharCode(65535);a[2318]=String.fromCharCode(65535);a[2319]=String.fromCharCode(65535);a[2320]=String.fromCharCode(65535);a[2321]=String.fromCharCode(65535);
+a[2322]=String.fromCharCode(65535);a[2323]=String.fromCharCode(65535);a[2324]=String.fromCharCode(65535);a[2325]=String.fromCharCode(65535);a[2326]=String.fromCharCode(65535);a[2327]=String.fromCharCode(65535);a[2328]=String.fromCharCode(65535);a[2329]=String.fromCharCode(65535);a[2330]=String.fromCharCode(65535);a[2331]=String.fromCharCode(65535);a[2332]=String.fromCharCode(65535);a[2333]=String.fromCharCode(65535);a[2334]=String.fromCharCode(65535);a[2335]=String.fromCharCode(65535);a[2336]=String.fromCharCode(65535);
+a[2337]=String.fromCharCode(65535);a[2338]=String.fromCharCode(65535);a[2339]=String.fromCharCode(65535);a[2340]=String.fromCharCode(65535);a[2341]=String.fromCharCode(65535);a[2342]=String.fromCharCode(65535);a[2343]=String.fromCharCode(65535);a[2344]=String.fromCharCode(65535);a[2345]=String.fromCharCode(65535);a[2346]=String.fromCharCode(65535);a[2347]=String.fromCharCode(65535);a[2348]=String.fromCharCode(65535);a[2349]=String.fromCharCode(65535);a[2350]=String.fromCharCode(65535);a[2351]=String.fromCharCode(65535);
+a[2352]=String.fromCharCode(65535);a[2353]=String.fromCharCode(65535);a[2354]=String.fromCharCode(65535);a[2355]=String.fromCharCode(65535);a[2356]=String.fromCharCode(65535);a[2357]=String.fromCharCode(65535);a[2358]=String.fromCharCode(65535);a[2359]=String.fromCharCode(65535);a[2360]=String.fromCharCode(65535);a[2361]=String.fromCharCode(65535);a[2362]=String.fromCharCode(65535);a[2363]=String.fromCharCode(65535);a[2364]=String.fromCharCode(65535);a[2365]=String.fromCharCode(65535);a[2366]=String.fromCharCode(65535);
+a[2367]=String.fromCharCode(65535);a[2368]=String.fromCharCode(65535);a[2369]=String.fromCharCode(65535);a[2370]=String.fromCharCode(65535);a[2371]=String.fromCharCode(65535);a[2372]=String.fromCharCode(65535);a[2373]=String.fromCharCode(65535);a[2374]=String.fromCharCode(65535);a[2375]=String.fromCharCode(65535);a[2376]=String.fromCharCode(65535);a[2377]=String.fromCharCode(65535);a[2378]=String.fromCharCode(65535);a[2379]=String.fromCharCode(65535);a[2380]=String.fromCharCode(65535);a[2381]=String.fromCharCode(65535);
+a[2382]=String.fromCharCode(65535);a[2383]=String.fromCharCode(65535);a[2384]=String.fromCharCode(65535);a[2385]=String.fromCharCode(65535);a[2386]=String.fromCharCode(65535);a[2387]=String.fromCharCode(65535);a[2388]=String.fromCharCode(65535);a[2389]=String.fromCharCode(65535);a[2390]=String.fromCharCode(65535);a[2391]=String.fromCharCode(65535);a[2392]=String.fromCharCode(65535);a[2393]=String.fromCharCode(65535);a[2394]=String.fromCharCode(65535);a[2395]=String.fromCharCode(65535);a[2396]=String.fromCharCode(65535);
+a[2397]=String.fromCharCode(65535);a[2398]=String.fromCharCode(65535);a[2399]=String.fromCharCode(65535);a[2400]=String.fromCharCode(65535);a[2401]=String.fromCharCode(65535);a[2402]=String.fromCharCode(65535);a[2403]=String.fromCharCode(65535);a[2404]=String.fromCharCode(65535);a[2405]=String.fromCharCode(65535);a[2406]=String.fromCharCode(65535);a[2407]=String.fromCharCode(65535);a[2408]=String.fromCharCode(65535);a[2409]=String.fromCharCode(65535);a[2410]=String.fromCharCode(65535);a[2411]=String.fromCharCode(65535);
+a[2412]=String.fromCharCode(65535);a[2413]=String.fromCharCode(65535);a[2414]=String.fromCharCode(65535);a[2415]=String.fromCharCode(65535);a[2416]=String.fromCharCode(65535);a[2417]=String.fromCharCode(65535);a[2418]=String.fromCharCode(65535);a[2419]=String.fromCharCode(65535);a[2420]=String.fromCharCode(65535);a[2421]=String.fromCharCode(65535);a[2422]=String.fromCharCode(65535);a[2423]=String.fromCharCode(65535);a[2424]=String.fromCharCode(65535);a[2425]=String.fromCharCode(65535);a[2426]=String.fromCharCode(65535);
+a[2427]=String.fromCharCode(65535);a[2428]=String.fromCharCode(65535);a[2429]=String.fromCharCode(65535);a[2430]=String.fromCharCode(65535);a[2431]=String.fromCharCode(65535);a[2432]=String.fromCharCode(65535);a[2433]=String.fromCharCode(65535);a[2434]=String.fromCharCode(65535);a[2435]=String.fromCharCode(65535);a[2436]=String.fromCharCode(65535);a[2437]=String.fromCharCode(65535);a[2438]=String.fromCharCode(65535);a[2439]=String.fromCharCode(65535);a[2440]=String.fromCharCode(65535);a[2441]=String.fromCharCode(65535);
+a[2442]=String.fromCharCode(65535);a[2443]=String.fromCharCode(65535);a[2444]=String.fromCharCode(65535);a[2445]=String.fromCharCode(65535);a[2446]=String.fromCharCode(65535);a[2447]=String.fromCharCode(65535);a[2448]=String.fromCharCode(65535);a[2449]=String.fromCharCode(65535);a[2450]=String.fromCharCode(65535);a[2451]=String.fromCharCode(65535);a[2452]=String.fromCharCode(65535);a[2453]=String.fromCharCode(65535);a[2454]=String.fromCharCode(65535);a[2455]=String.fromCharCode(65535);a[2456]=String.fromCharCode(65535);
+a[2457]=String.fromCharCode(65535);a[2458]=String.fromCharCode(65535);a[2459]=String.fromCharCode(65535);a[2460]=String.fromCharCode(65535);a[2461]=String.fromCharCode(65535);a[2462]=String.fromCharCode(65535);a[2463]=String.fromCharCode(65535);a[2464]=String.fromCharCode(65535);a[2465]=String.fromCharCode(65535);a[2466]=String.fromCharCode(65535);a[2467]=String.fromCharCode(65535);a[2468]=String.fromCharCode(65535);a[2469]=String.fromCharCode(65535);a[2470]=String.fromCharCode(65535);a[2471]=String.fromCharCode(65535);
+a[2472]=String.fromCharCode(65535);a[2473]=String.fromCharCode(65535);a[2474]=String.fromCharCode(65535);a[2475]=String.fromCharCode(65535);a[2476]=String.fromCharCode(65535);a[2477]=String.fromCharCode(65535);a[2478]=String.fromCharCode(65535);a[2479]=String.fromCharCode(65535);a[2480]=String.fromCharCode(65535);a[2481]=String.fromCharCode(65535);a[2482]=String.fromCharCode(65535);a[2483]=String.fromCharCode(65535);a[2484]=String.fromCharCode(65535);a[2485]=String.fromCharCode(65535);a[2486]=String.fromCharCode(65535);
+a[2487]=String.fromCharCode(65535);a[2488]=String.fromCharCode(65535);a[2489]=String.fromCharCode(65535);a[2490]=String.fromCharCode(65535);a[2491]=String.fromCharCode(65535);a[2492]=String.fromCharCode(65535);a[2493]=String.fromCharCode(65535);a[2494]=String.fromCharCode(65535);a[2495]=String.fromCharCode(65535);a[2496]=String.fromCharCode(65535);a[2497]=String.fromCharCode(65535);a[2498]=String.fromCharCode(65535);a[2499]=String.fromCharCode(65535);a[2500]=String.fromCharCode(65535);a[2501]=String.fromCharCode(65535);
+a[2502]=String.fromCharCode(65535);a[2503]=String.fromCharCode(65535);a[2504]=String.fromCharCode(65535);a[2505]=String.fromCharCode(65535);a[2506]=String.fromCharCode(65535);a[2507]=String.fromCharCode(65535);a[2508]=String.fromCharCode(65535);a[2509]=String.fromCharCode(65535);a[2510]=String.fromCharCode(65535);a[2511]=String.fromCharCode(65535);a[2512]=String.fromCharCode(65535);a[2513]=String.fromCharCode(65535);a[2514]=String.fromCharCode(65535);a[2515]=String.fromCharCode(65535);a[2516]=String.fromCharCode(65535);
+a[2517]=String.fromCharCode(65535);a[2518]=String.fromCharCode(65535);a[2519]=String.fromCharCode(65535);a[2520]=String.fromCharCode(65535);a[2521]=String.fromCharCode(65535);a[2522]=String.fromCharCode(65535);a[2523]=String.fromCharCode(65535);a[2524]=String.fromCharCode(65535);a[2525]=String.fromCharCode(65535);a[2526]=String.fromCharCode(65535);a[2527]=String.fromCharCode(65535);a[2528]=String.fromCharCode(65535);a[2529]=String.fromCharCode(65535);a[2530]=String.fromCharCode(65535);a[2531]=String.fromCharCode(65535);
+a[2532]=String.fromCharCode(65535);a[2533]=String.fromCharCode(65535);a[2534]=String.fromCharCode(65535);a[2535]=String.fromCharCode(65535);a[2536]=String.fromCharCode(65535);a[2537]=String.fromCharCode(65535);a[2538]=String.fromCharCode(65535);a[2539]=String.fromCharCode(65535);a[2540]=String.fromCharCode(65535);a[2541]=String.fromCharCode(65535);a[2542]=String.fromCharCode(65535);a[2543]=String.fromCharCode(65535);a[2544]=String.fromCharCode(65535);a[2545]=String.fromCharCode(65535);a[2546]=String.fromCharCode(65535);
+a[2547]=String.fromCharCode(65535);a[2548]=String.fromCharCode(65535);a[2549]=String.fromCharCode(65535);a[2550]=String.fromCharCode(65535);a[2551]=String.fromCharCode(65535);a[2552]=String.fromCharCode(65535);a[2553]=String.fromCharCode(65535);a[2554]=String.fromCharCode(63);a[2752]=String.fromCharCode(65535);a[2753]=String.fromCharCode(65535);a[2754]=String.fromCharCode(65535);a[2755]=String.fromCharCode(65535);a[2756]=String.fromCharCode(65535);a[2757]=String.fromCharCode(65535);a[2758]=String.fromCharCode(65535);
+a[2759]=String.fromCharCode(65535);a[2760]=String.fromCharCode(65535);a[2761]=String.fromCharCode(65535);a[2762]=String.fromCharCode(65535);a[2763]=String.fromCharCode(65535);a[2764]=String.fromCharCode(65535);a[2765]=String.fromCharCode(65535);a[2766]=String.fromCharCode(65535);a[2767]=String.fromCharCode(65535);a[2768]=String.fromCharCode(65535);a[2769]=String.fromCharCode(65535);a[2770]=String.fromCharCode(65535);a[2771]=String.fromCharCode(65535);a[2772]=String.fromCharCode(65535);a[2773]=String.fromCharCode(65535);
+a[2774]=String.fromCharCode(65535);a[2775]=String.fromCharCode(65535);a[2776]=String.fromCharCode(65535);a[2777]=String.fromCharCode(65535);a[2778]=String.fromCharCode(65535);a[2779]=String.fromCharCode(65535);a[2780]=String.fromCharCode(65535);a[2781]=String.fromCharCode(65535);a[2782]=String.fromCharCode(65535);a[2783]=String.fromCharCode(65535);a[2784]=String.fromCharCode(65535);a[2785]=String.fromCharCode(65535);a[2786]=String.fromCharCode(65535);a[2787]=String.fromCharCode(65535);a[2788]=String.fromCharCode(65535);
+a[2789]=String.fromCharCode(65535);a[2790]=String.fromCharCode(65535);a[2791]=String.fromCharCode(65535);a[2792]=String.fromCharCode(65535);a[2793]=String.fromCharCode(65535);a[2794]=String.fromCharCode(65535);a[2795]=String.fromCharCode(65535);a[2796]=String.fromCharCode(65535);a[2797]=String.fromCharCode(65535);a[2798]=String.fromCharCode(65535);a[2799]=String.fromCharCode(65535);a[2800]=String.fromCharCode(65535);a[2801]=String.fromCharCode(65535);a[2802]=String.fromCharCode(65535);a[2803]=String.fromCharCode(65535);
+a[2804]=String.fromCharCode(65535);a[2805]=String.fromCharCode(65535);a[2806]=String.fromCharCode(65535);a[2807]=String.fromCharCode(65535);a[2808]=String.fromCharCode(65535);a[2809]=String.fromCharCode(65535);a[2810]=String.fromCharCode(65535);a[2811]=String.fromCharCode(65535);a[2812]=String.fromCharCode(65535);a[2813]=String.fromCharCode(65535);a[2814]=String.fromCharCode(65535);a[2815]=String.fromCharCode(65535);a[2816]=String.fromCharCode(65535);a[2817]=String.fromCharCode(65535);a[2818]=String.fromCharCode(65535);
+a[2819]=String.fromCharCode(65535);a[2820]=String.fromCharCode(65535);a[2821]=String.fromCharCode(65535);a[2822]=String.fromCharCode(65535);a[2823]=String.fromCharCode(65535);a[2824]=String.fromCharCode(65535);a[2825]=String.fromCharCode(65535);a[2826]=String.fromCharCode(65535);a[2827]=String.fromCharCode(65535);a[2828]=String.fromCharCode(65535);a[2829]=String.fromCharCode(65535);a[2830]=String.fromCharCode(65535);a[2831]=String.fromCharCode(65535);a[2832]=String.fromCharCode(65535);a[2833]=String.fromCharCode(65535);
+a[2834]=String.fromCharCode(65535);a[2835]=String.fromCharCode(65535);a[2836]=String.fromCharCode(65535);a[2837]=String.fromCharCode(65535);a[2838]=String.fromCharCode(65535);a[2839]=String.fromCharCode(65535);a[2840]=String.fromCharCode(65535);a[2841]=String.fromCharCode(65535);a[2842]=String.fromCharCode(65535);a[2843]=String.fromCharCode(65535);a[2844]=String.fromCharCode(65535);a[2845]=String.fromCharCode(65535);a[2846]=String.fromCharCode(65535);a[2847]=String.fromCharCode(65535);a[2848]=String.fromCharCode(65535);
+a[2849]=String.fromCharCode(65535);a[2850]=String.fromCharCode(65535);a[2851]=String.fromCharCode(65535);a[2852]=String.fromCharCode(65535);a[2853]=String.fromCharCode(65535);a[2854]=String.fromCharCode(65535);a[2855]=String.fromCharCode(65535);a[2856]=String.fromCharCode(65535);a[2857]=String.fromCharCode(65535);a[2858]=String.fromCharCode(65535);a[2859]=String.fromCharCode(65535);a[2860]=String.fromCharCode(65535);a[2861]=String.fromCharCode(65535);a[2862]=String.fromCharCode(65535);a[2863]=String.fromCharCode(65535);
+a[2864]=String.fromCharCode(65535);a[2865]=String.fromCharCode(65535);a[2866]=String.fromCharCode(65535);a[2867]=String.fromCharCode(65535);a[2868]=String.fromCharCode(65535);a[2869]=String.fromCharCode(65535);a[2870]=String.fromCharCode(65535);a[2871]=String.fromCharCode(65535);a[2872]=String.fromCharCode(65535);a[2873]=String.fromCharCode(65535);a[2874]=String.fromCharCode(65535);a[2875]=String.fromCharCode(65535);a[2876]=String.fromCharCode(65535);a[2877]=String.fromCharCode(65535);a[2878]=String.fromCharCode(65535);
+a[2879]=String.fromCharCode(65535);a[2880]=String.fromCharCode(65535);a[2881]=String.fromCharCode(65535);a[2882]=String.fromCharCode(65535);a[2883]=String.fromCharCode(65535);a[2884]=String.fromCharCode(65535);a[2885]=String.fromCharCode(65535);a[2886]=String.fromCharCode(65535);a[2887]=String.fromCharCode(65535);a[2888]=String.fromCharCode(65535);a[2889]=String.fromCharCode(65535);a[2890]=String.fromCharCode(65535);a[2891]=String.fromCharCode(65535);a[2892]=String.fromCharCode(65535);a[2893]=String.fromCharCode(65535);
+a[2894]=String.fromCharCode(65535);a[2895]=String.fromCharCode(65535);a[2896]=String.fromCharCode(65535);a[2897]=String.fromCharCode(65535);a[2898]=String.fromCharCode(65535);a[2899]=String.fromCharCode(65535);a[2900]=String.fromCharCode(65535);a[2901]=String.fromCharCode(65535);a[2902]=String.fromCharCode(65535);a[2903]=String.fromCharCode(65535);a[2904]=String.fromCharCode(65535);a[2905]=String.fromCharCode(65535);a[2906]=String.fromCharCode(65535);a[2907]=String.fromCharCode(65535);a[2908]=String.fromCharCode(65535);
+a[2909]=String.fromCharCode(65535);a[2910]=String.fromCharCode(65535);a[2911]=String.fromCharCode(65535);a[2912]=String.fromCharCode(65535);a[2913]=String.fromCharCode(65535);a[2914]=String.fromCharCode(65535);a[2915]=String.fromCharCode(65535);a[2916]=String.fromCharCode(65535);a[2917]=String.fromCharCode(65535);a[2918]=String.fromCharCode(65535);a[2919]=String.fromCharCode(65535);a[2920]=String.fromCharCode(65535);a[2921]=String.fromCharCode(65535);a[2922]=String.fromCharCode(65535);a[2923]=String.fromCharCode(65535);
+a[2924]=String.fromCharCode(65535);a[2925]=String.fromCharCode(65535);a[2926]=String.fromCharCode(65535);a[2927]=String.fromCharCode(65535);a[2928]=String.fromCharCode(65535);a[2929]=String.fromCharCode(65535);a[2930]=String.fromCharCode(65535);a[2931]=String.fromCharCode(65535);a[2932]=String.fromCharCode(65535);a[2933]=String.fromCharCode(65535);a[2934]=String.fromCharCode(65535);a[2935]=String.fromCharCode(65535);a[2936]=String.fromCharCode(65535);a[2937]=String.fromCharCode(65535);a[2938]=String.fromCharCode(65535);
+a[2939]=String.fromCharCode(65535);a[2940]=String.fromCharCode(65535);a[2941]=String.fromCharCode(65535);a[2942]=String.fromCharCode(65535);a[2943]=String.fromCharCode(65535);a[2944]=String.fromCharCode(65535);a[2945]=String.fromCharCode(65535);a[2946]=String.fromCharCode(65535);a[2947]=String.fromCharCode(65535);a[2948]=String.fromCharCode(65535);a[2949]=String.fromCharCode(65535);a[2950]=String.fromCharCode(65535);a[2951]=String.fromCharCode(65535);a[2952]=String.fromCharCode(65535);a[2953]=String.fromCharCode(65535);
+a[2954]=String.fromCharCode(65535);a[2955]=String.fromCharCode(65535);a[2956]=String.fromCharCode(65535);a[2957]=String.fromCharCode(65535);a[2958]=String.fromCharCode(65535);a[2959]=String.fromCharCode(65535);a[2960]=String.fromCharCode(65535);a[2961]=String.fromCharCode(65535);a[2962]=String.fromCharCode(65535);a[2963]=String.fromCharCode(65535);a[2964]=String.fromCharCode(65535);a[2965]=String.fromCharCode(65535);a[2966]=String.fromCharCode(65535);a[2967]=String.fromCharCode(65535);a[2968]=String.fromCharCode(65535);
+a[2969]=String.fromCharCode(65535);a[2970]=String.fromCharCode(65535);a[2971]=String.fromCharCode(65535);a[2972]=String.fromCharCode(65535);a[2973]=String.fromCharCode(65535);a[2974]=String.fromCharCode(65535);a[2975]=String.fromCharCode(65535);a[2976]=String.fromCharCode(65535);a[2977]=String.fromCharCode(65535);a[2978]=String.fromCharCode(65535);a[2979]=String.fromCharCode(65535);a[2980]=String.fromCharCode(65535);a[2981]=String.fromCharCode(65535);a[2982]=String.fromCharCode(65535);a[2983]=String.fromCharCode(65535);
+a[2984]=String.fromCharCode(65535);a[2985]=String.fromCharCode(65535);a[2986]=String.fromCharCode(65535);a[2987]=String.fromCharCode(65535);a[2988]=String.fromCharCode(65535);a[2989]=String.fromCharCode(65535);a[2990]=String.fromCharCode(65535);a[2991]=String.fromCharCode(65535);a[2992]=String.fromCharCode(65535);a[2993]=String.fromCharCode(65535);a[2994]=String.fromCharCode(65535);a[2995]=String.fromCharCode(65535);a[2996]=String.fromCharCode(65535);a[2997]=String.fromCharCode(65535);a[2998]=String.fromCharCode(65535);
+a[2999]=String.fromCharCode(65535);a[3E3]=String.fromCharCode(65535);a[3001]=String.fromCharCode(65535);a[3002]=String.fromCharCode(65535);a[3003]=String.fromCharCode(65535);a[3004]=String.fromCharCode(65535);a[3005]=String.fromCharCode(65535);a[3006]=String.fromCharCode(65535);a[3007]=String.fromCharCode(65535);a[3008]=String.fromCharCode(65535);a[3009]=String.fromCharCode(65535);a[3010]=String.fromCharCode(65535);a[3011]=String.fromCharCode(65535);a[3012]=String.fromCharCode(65535);a[3013]=String.fromCharCode(65535);
+a[3014]=String.fromCharCode(65535);a[3015]=String.fromCharCode(65535);a[3016]=String.fromCharCode(65535);a[3017]=String.fromCharCode(65535);a[3018]=String.fromCharCode(65535);a[3019]=String.fromCharCode(65535);a[3020]=String.fromCharCode(65535);a[3021]=String.fromCharCode(65535);a[3022]=String.fromCharCode(65535);a[3023]=String.fromCharCode(65535);a[3024]=String.fromCharCode(65535);a[3025]=String.fromCharCode(65535);a[3026]=String.fromCharCode(65535);a[3027]=String.fromCharCode(65535);a[3028]=String.fromCharCode(65535);
+a[3029]=String.fromCharCode(65535);a[3030]=String.fromCharCode(65535);a[3031]=String.fromCharCode(65535);a[3032]=String.fromCharCode(65535);a[3033]=String.fromCharCode(65535);a[3034]=String.fromCharCode(65535);a[3035]=String.fromCharCode(65535);a[3036]=String.fromCharCode(65535);a[3037]=String.fromCharCode(65535);a[3038]=String.fromCharCode(65535);a[3039]=String.fromCharCode(65535);a[3040]=String.fromCharCode(65535);a[3041]=String.fromCharCode(65535);a[3042]=String.fromCharCode(65535);a[3043]=String.fromCharCode(65535);
+a[3044]=String.fromCharCode(65535);a[3045]=String.fromCharCode(65535);a[3046]=String.fromCharCode(65535);a[3047]=String.fromCharCode(65535);a[3048]=String.fromCharCode(65535);a[3049]=String.fromCharCode(65535);a[3050]=String.fromCharCode(65535);a[3051]=String.fromCharCode(65535);a[3052]=String.fromCharCode(65535);a[3053]=String.fromCharCode(65535);a[3054]=String.fromCharCode(65535);a[3055]=String.fromCharCode(65535);a[3056]=String.fromCharCode(65535);a[3057]=String.fromCharCode(65535);a[3058]=String.fromCharCode(65535);
+a[3059]=String.fromCharCode(65535);a[3060]=String.fromCharCode(65535);a[3061]=String.fromCharCode(65535);a[3062]=String.fromCharCode(65535);a[3063]=String.fromCharCode(65535);a[3064]=String.fromCharCode(65535);a[3065]=String.fromCharCode(65535);a[3066]=String.fromCharCode(65535);a[3067]=String.fromCharCode(65535);a[3068]=String.fromCharCode(65535);a[3069]=String.fromCharCode(65535);a[3070]=String.fromCharCode(65535);a[3071]=String.fromCharCode(65535);a[3072]=String.fromCharCode(65535);a[3073]=String.fromCharCode(65535);
+a[3074]=String.fromCharCode(65535);a[3075]=String.fromCharCode(65535);a[3076]=String.fromCharCode(65535);a[3077]=String.fromCharCode(65535);a[3078]=String.fromCharCode(65535);a[3079]=String.fromCharCode(65535);a[3080]=String.fromCharCode(65535);a[3081]=String.fromCharCode(65535);a[3082]=String.fromCharCode(65535);a[3083]=String.fromCharCode(65535);a[3084]=String.fromCharCode(65535);a[3085]=String.fromCharCode(65535);a[3086]=String.fromCharCode(65535);a[3087]=String.fromCharCode(65535);a[3088]=String.fromCharCode(65535);
+a[3089]=String.fromCharCode(65535);a[3090]=String.fromCharCode(65535);a[3091]=String.fromCharCode(65535);a[3092]=String.fromCharCode(65535);a[3093]=String.fromCharCode(65535);a[3094]=String.fromCharCode(65535);a[3095]=String.fromCharCode(65535);a[3096]=String.fromCharCode(65535);a[3097]=String.fromCharCode(65535);a[3098]=String.fromCharCode(65535);a[3099]=String.fromCharCode(65535);a[3100]=String.fromCharCode(65535);a[3101]=String.fromCharCode(65535);a[3102]=String.fromCharCode(65535);a[3103]=String.fromCharCode(65535);
+a[3104]=String.fromCharCode(65535);a[3105]=String.fromCharCode(65535);a[3106]=String.fromCharCode(65535);a[3107]=String.fromCharCode(65535);a[3108]=String.fromCharCode(65535);a[3109]=String.fromCharCode(65535);a[3110]=String.fromCharCode(65535);a[3111]=String.fromCharCode(65535);a[3112]=String.fromCharCode(65535);a[3113]=String.fromCharCode(65535);a[3114]=String.fromCharCode(65535);a[3115]=String.fromCharCode(65535);a[3116]=String.fromCharCode(65535);a[3117]=String.fromCharCode(65535);a[3118]=String.fromCharCode(65535);
+a[3119]=String.fromCharCode(65535);a[3120]=String.fromCharCode(65535);a[3121]=String.fromCharCode(65535);a[3122]=String.fromCharCode(65535);a[3123]=String.fromCharCode(65535);a[3124]=String.fromCharCode(65535);a[3125]=String.fromCharCode(65535);a[3126]=String.fromCharCode(65535);a[3127]=String.fromCharCode(65535);a[3128]=String.fromCharCode(65535);a[3129]=String.fromCharCode(65535);a[3130]=String.fromCharCode(65535);a[3131]=String.fromCharCode(65535);a[3132]=String.fromCharCode(65535);a[3133]=String.fromCharCode(65535);
+a[3134]=String.fromCharCode(65535);a[3135]=String.fromCharCode(65535);a[3136]=String.fromCharCode(65535);a[3137]=String.fromCharCode(65535);a[3138]=String.fromCharCode(65535);a[3139]=String.fromCharCode(65535);a[3140]=String.fromCharCode(65535);a[3141]=String.fromCharCode(65535);a[3142]=String.fromCharCode(65535);a[3143]=String.fromCharCode(65535);a[3144]=String.fromCharCode(65535);a[3145]=String.fromCharCode(65535);a[3146]=String.fromCharCode(65535);a[3147]=String.fromCharCode(65535);a[3148]=String.fromCharCode(65535);
+a[3149]=String.fromCharCode(65535);a[3150]=String.fromCharCode(65535);a[3151]=String.fromCharCode(65535);a[3152]=String.fromCharCode(65535);a[3153]=String.fromCharCode(65535);a[3154]=String.fromCharCode(65535);a[3155]=String.fromCharCode(65535);a[3156]=String.fromCharCode(65535);a[3157]=String.fromCharCode(65535);a[3158]=String.fromCharCode(65535);a[3159]=String.fromCharCode(65535);a[3160]=String.fromCharCode(65535);a[3161]=String.fromCharCode(65535);a[3162]=String.fromCharCode(65535);a[3163]=String.fromCharCode(65535);
+a[3164]=String.fromCharCode(65535);a[3165]=String.fromCharCode(65535);a[3166]=String.fromCharCode(65535);a[3167]=String.fromCharCode(65535);a[3168]=String.fromCharCode(65535);a[3169]=String.fromCharCode(65535);a[3170]=String.fromCharCode(65535);a[3171]=String.fromCharCode(65535);a[3172]=String.fromCharCode(65535);a[3173]=String.fromCharCode(65535);a[3174]=String.fromCharCode(65535);a[3175]=String.fromCharCode(65535);a[3176]=String.fromCharCode(65535);a[3177]=String.fromCharCode(65535);a[3178]=String.fromCharCode(65535);
+a[3179]=String.fromCharCode(65535);a[3180]=String.fromCharCode(65535);a[3181]=String.fromCharCode(65535);a[3182]=String.fromCharCode(65535);a[3183]=String.fromCharCode(65535);a[3184]=String.fromCharCode(65535);a[3185]=String.fromCharCode(65535);a[3186]=String.fromCharCode(65535);a[3187]=String.fromCharCode(65535);a[3188]=String.fromCharCode(65535);a[3189]=String.fromCharCode(65535);a[3190]=String.fromCharCode(65535);a[3191]=String.fromCharCode(65535);a[3192]=String.fromCharCode(65535);a[3193]=String.fromCharCode(65535);
+a[3194]=String.fromCharCode(65535);a[3195]=String.fromCharCode(65535);a[3196]=String.fromCharCode(65535);a[3197]=String.fromCharCode(65535);a[3198]=String.fromCharCode(65535);a[3199]=String.fromCharCode(65535);a[3200]=String.fromCharCode(65535);a[3201]=String.fromCharCode(65535);a[3202]=String.fromCharCode(65535);a[3203]=String.fromCharCode(65535);a[3204]=String.fromCharCode(65535);a[3205]=String.fromCharCode(65535);a[3206]=String.fromCharCode(65535);a[3207]=String.fromCharCode(65535);a[3208]=String.fromCharCode(65535);
+a[3209]=String.fromCharCode(65535);a[3210]=String.fromCharCode(65535);a[3211]=String.fromCharCode(65535);a[3212]=String.fromCharCode(65535);a[3213]=String.fromCharCode(65535);a[3214]=String.fromCharCode(65535);a[3215]=String.fromCharCode(65535);a[3216]=String.fromCharCode(65535);a[3217]=String.fromCharCode(65535);a[3218]=String.fromCharCode(65535);a[3219]=String.fromCharCode(65535);a[3220]=String.fromCharCode(65535);a[3221]=String.fromCharCode(65535);a[3222]=String.fromCharCode(65535);a[3223]=String.fromCharCode(65535);
+a[3224]=String.fromCharCode(65535);a[3225]=String.fromCharCode(65535);a[3226]=String.fromCharCode(65535);a[3227]=String.fromCharCode(65535);a[3228]=String.fromCharCode(65535);a[3229]=String.fromCharCode(65535);a[3230]=String.fromCharCode(65535);a[3231]=String.fromCharCode(65535);a[3232]=String.fromCharCode(65535);a[3233]=String.fromCharCode(65535);a[3234]=String.fromCharCode(65535);a[3235]=String.fromCharCode(65535);a[3236]=String.fromCharCode(65535);a[3237]=String.fromCharCode(65535);a[3238]=String.fromCharCode(65535);
+a[3239]=String.fromCharCode(65535);a[3240]=String.fromCharCode(65535);a[3241]=String.fromCharCode(65535);a[3242]=String.fromCharCode(65535);a[3243]=String.fromCharCode(65535);a[3244]=String.fromCharCode(65535);a[3245]=String.fromCharCode(65535);a[3246]=String.fromCharCode(65535);a[3247]=String.fromCharCode(65535);a[3248]=String.fromCharCode(65535);a[3249]=String.fromCharCode(65535);a[3250]=String.fromCharCode(65535);a[3251]=String.fromCharCode(65535);a[3252]=String.fromCharCode(65535);a[3253]=String.fromCharCode(65535);
+a[3254]=String.fromCharCode(65535);a[3255]=String.fromCharCode(65535);a[3256]=String.fromCharCode(65535);a[3257]=String.fromCharCode(65535);a[3258]=String.fromCharCode(65535);a[3259]=String.fromCharCode(65535);a[3260]=String.fromCharCode(65535);a[3261]=String.fromCharCode(65535);a[3262]=String.fromCharCode(65535);a[3263]=String.fromCharCode(65535);a[3264]=String.fromCharCode(65535);a[3265]=String.fromCharCode(65535);a[3266]=String.fromCharCode(65535);a[3267]=String.fromCharCode(65535);a[3268]=String.fromCharCode(65535);
+a[3269]=String.fromCharCode(65535);a[3270]=String.fromCharCode(65535);a[3271]=String.fromCharCode(65535);a[3272]=String.fromCharCode(65535);a[3273]=String.fromCharCode(65535);a[3274]=String.fromCharCode(65535);a[3275]=String.fromCharCode(65535);a[3276]=String.fromCharCode(65535);a[3277]=String.fromCharCode(65535);a[3278]=String.fromCharCode(65535);a[3279]=String.fromCharCode(65535);a[3280]=String.fromCharCode(65535);a[3281]=String.fromCharCode(65535);a[3282]=String.fromCharCode(65535);a[3283]=String.fromCharCode(65535);
+a[3284]=String.fromCharCode(65535);a[3285]=String.fromCharCode(65535);a[3286]=String.fromCharCode(65535);a[3287]=String.fromCharCode(65535);a[3288]=String.fromCharCode(65535);a[3289]=String.fromCharCode(65535);a[3290]=String.fromCharCode(65535);a[3291]=String.fromCharCode(65535);a[3292]=String.fromCharCode(65535);a[3293]=String.fromCharCode(65535);a[3294]=String.fromCharCode(65535);a[3295]=String.fromCharCode(65535);a[3296]=String.fromCharCode(65535);a[3297]=String.fromCharCode(65535);a[3298]=String.fromCharCode(65535);
+a[3299]=String.fromCharCode(65535);a[3300]=String.fromCharCode(65535);a[3301]=String.fromCharCode(65535);a[3302]=String.fromCharCode(65535);a[3303]=String.fromCharCode(65535);a[3304]=String.fromCharCode(65535);a[3305]=String.fromCharCode(65535);a[3306]=String.fromCharCode(65535);a[3307]=String.fromCharCode(65535);a[3308]=String.fromCharCode(65535);a[3309]=String.fromCharCode(65535);a[3310]=String.fromCharCode(65535);a[3311]=String.fromCharCode(65535);a[3312]=String.fromCharCode(65535);a[3313]=String.fromCharCode(65535);
+a[3314]=String.fromCharCode(65535);a[3315]=String.fromCharCode(65535);a[3316]=String.fromCharCode(65535);a[3317]=String.fromCharCode(65535);a[3318]=String.fromCharCode(65535);a[3319]=String.fromCharCode(65535);a[3320]=String.fromCharCode(65535);a[3321]=String.fromCharCode(65535);a[3322]=String.fromCharCode(65535);a[3323]=String.fromCharCode(65535);a[3324]=String.fromCharCode(65535);a[3325]=String.fromCharCode(65535);a[3326]=String.fromCharCode(65535);a[3327]=String.fromCharCode(65535);a[3328]=String.fromCharCode(65535);
+a[3329]=String.fromCharCode(65535);a[3330]=String.fromCharCode(65535);a[3331]=String.fromCharCode(65535);a[3332]=String.fromCharCode(65535);a[3333]=String.fromCharCode(65535);a[3334]=String.fromCharCode(65535);a[3335]=String.fromCharCode(65535);a[3336]=String.fromCharCode(65535);a[3337]=String.fromCharCode(65535);a[3338]=String.fromCharCode(65535);a[3339]=String.fromCharCode(65535);a[3340]=String.fromCharCode(65535);a[3341]=String.fromCharCode(65535);a[3342]=String.fromCharCode(65535);a[3343]=String.fromCharCode(65535);
+a[3344]=String.fromCharCode(65535);a[3345]=String.fromCharCode(65535);a[3346]=String.fromCharCode(65535);a[3347]=String.fromCharCode(65535);a[3348]=String.fromCharCode(65535);a[3349]=String.fromCharCode(65535);a[3350]=String.fromCharCode(65535);a[3351]=String.fromCharCode(65535);a[3352]=String.fromCharCode(65535);a[3353]=String.fromCharCode(65535);a[3354]=String.fromCharCode(65535);a[3355]=String.fromCharCode(65535);a[3356]=String.fromCharCode(65535);a[3357]=String.fromCharCode(65535);a[3358]=String.fromCharCode(65535);
+a[3359]=String.fromCharCode(65535);a[3360]=String.fromCharCode(65535);a[3361]=String.fromCharCode(65535);a[3362]=String.fromCharCode(65535);a[3363]=String.fromCharCode(65535);a[3364]=String.fromCharCode(65535);a[3365]=String.fromCharCode(65535);a[3366]=String.fromCharCode(65535);a[3367]=String.fromCharCode(65535);a[3368]=String.fromCharCode(65535);a[3369]=String.fromCharCode(65535);a[3370]=String.fromCharCode(65535);a[3371]=String.fromCharCode(65535);a[3372]=String.fromCharCode(65535);a[3373]=String.fromCharCode(65535);
+a[3374]=String.fromCharCode(65535);a[3375]=String.fromCharCode(65535);a[3376]=String.fromCharCode(65535);a[3377]=String.fromCharCode(65535);a[3378]=String.fromCharCode(65535);a[3379]=String.fromCharCode(65535);a[3380]=String.fromCharCode(65535);a[3381]=String.fromCharCode(65535);a[3382]=String.fromCharCode(65535);a[3383]=String.fromCharCode(65535);a[3384]=String.fromCharCode(65535);a[3385]=String.fromCharCode(65535);a[3386]=String.fromCharCode(65535);a[3387]=String.fromCharCode(65535);a[3388]=String.fromCharCode(65535);
+a[3389]=String.fromCharCode(65535);a[3390]=String.fromCharCode(65535);a[3391]=String.fromCharCode(65535);a[3392]=String.fromCharCode(65535);a[3393]=String.fromCharCode(65535);a[3394]=String.fromCharCode(65535);a[3395]=String.fromCharCode(65535);a[3396]=String.fromCharCode(65535);a[3397]=String.fromCharCode(65535);a[3398]=String.fromCharCode(65535);a[3399]=String.fromCharCode(65535);a[3400]=String.fromCharCode(65535);a[3401]=String.fromCharCode(65535);a[3402]=String.fromCharCode(65535);a[3403]=String.fromCharCode(65535);
+a[3404]=String.fromCharCode(65535);a[3405]=String.fromCharCode(65535);a[3406]=String.fromCharCode(65535);a[3407]=String.fromCharCode(65535);a[3408]=String.fromCharCode(65535);a[3409]=String.fromCharCode(65535);a[3410]=String.fromCharCode(65535);a[3411]=String.fromCharCode(65535);a[3412]=String.fromCharCode(65535);a[3413]=String.fromCharCode(65535);a[3414]=String.fromCharCode(65535);a[3415]=String.fromCharCode(65535);a[3416]=String.fromCharCode(65535);a[3417]=String.fromCharCode(65535);a[3418]=String.fromCharCode(65535);
+a[3419]=String.fromCharCode(65535);a[3420]=String.fromCharCode(65535);a[3421]=String.fromCharCode(65535);a[3422]=String.fromCharCode(65535);a[3423]=String.fromCharCode(65535);a[3424]=String.fromCharCode(65535);a[3425]=String.fromCharCode(65535);a[3426]=String.fromCharCode(65535);a[3427]=String.fromCharCode(65535);a[3428]=String.fromCharCode(65535);a[3429]=String.fromCharCode(65535);a[3430]=String.fromCharCode(65535);a[3431]=String.fromCharCode(65535);a[3432]=String.fromCharCode(65535);a[3433]=String.fromCharCode(65535);
+a[3434]=String.fromCharCode(65535);a[3435]=String.fromCharCode(65535);a[3436]=String.fromCharCode(65535);a[3437]=String.fromCharCode(65535);a[3438]=String.fromCharCode(65535);a[3439]=String.fromCharCode(65535);a[3440]=String.fromCharCode(65535);a[3441]=String.fromCharCode(65535);a[3442]=String.fromCharCode(65535);a[3443]=String.fromCharCode(65535);a[3444]=String.fromCharCode(65535);a[3445]=String.fromCharCode(65535);a[3446]=String.fromCharCode(65535);a[3447]=String.fromCharCode(65535);a[3448]=String.fromCharCode(65535);
+a[3449]=String.fromCharCode(65535);a[3450]=String.fromCharCode(15);a[3984]=String.fromCharCode(65535);a[3985]=String.fromCharCode(65535);a[3986]=String.fromCharCode(65535);a[3987]=String.fromCharCode(65535);a[3988]=String.fromCharCode(65535);a[3989]=String.fromCharCode(65535);a[3990]=String.fromCharCode(65535);a[3991]=String.fromCharCode(65535);a[3992]=String.fromCharCode(65535);a[3993]=String.fromCharCode(65535);a[3994]=String.fromCharCode(65535);a[3995]=String.fromCharCode(65535);a[3996]=String.fromCharCode(65535);
+a[3997]=String.fromCharCode(65535);a[3998]=String.fromCharCode(65535);a[3999]=String.fromCharCode(65535);a[4E3]=String.fromCharCode(65535);a[4001]=String.fromCharCode(65535);a[4002]=String.fromCharCode(16383);a[4016]=String.fromCharCode(127);a[4017]=String.fromCharCode(33016);a[4018]=String.fromCharCode(65023);a[4019]=String.fromCharCode(24447);a[4020]=String.fromCharCode(65499);a[4021]=String.fromCharCode(65535);a[4022]=String.fromCharCode(65535);a[4023]=String.fromCharCode(65535);a[4024]=String.fromCharCode(65535);
+a[4025]=String.fromCharCode(65535);a[4026]=String.fromCharCode(65535);a[4027]=String.fromCharCode(3);a[4029]=String.fromCharCode(65528);a[4030]=String.fromCharCode(65535);a[4031]=String.fromCharCode(65535);a[4032]=String.fromCharCode(65535);a[4033]=String.fromCharCode(65535);a[4034]=String.fromCharCode(65535);a[4035]=String.fromCharCode(65535);a[4036]=String.fromCharCode(65535);a[4037]=String.fromCharCode(65535);a[4038]=String.fromCharCode(65535);a[4039]=String.fromCharCode(65535);a[4040]=String.fromCharCode(65535);
+a[4041]=String.fromCharCode(65535);a[4042]=String.fromCharCode(65535);a[4043]=String.fromCharCode(65535);a[4044]=String.fromCharCode(65535);a[4045]=String.fromCharCode(65535);a[4046]=String.fromCharCode(65535);a[4047]=String.fromCharCode(65535);a[4048]=String.fromCharCode(65535);a[4049]=String.fromCharCode(65535);a[4050]=String.fromCharCode(65535);a[4051]=String.fromCharCode(16383);a[4053]=String.fromCharCode(65535);a[4054]=String.fromCharCode(65535);a[4055]=String.fromCharCode(65535);a[4056]=String.fromCharCode(65535);
+a[4057]=String.fromCharCode(65532);a[4058]=String.fromCharCode(65535);a[4059]=String.fromCharCode(65535);a[4060]=String.fromCharCode(255);a[4063]=String.fromCharCode(4095);a[4071]=String.fromCharCode(65495);a[4072]=String.fromCharCode(65535);a[4073]=String.fromCharCode(65535);a[4074]=String.fromCharCode(65535);a[4075]=String.fromCharCode(65535);a[4076]=String.fromCharCode(65535);a[4077]=String.fromCharCode(65535);a[4078]=String.fromCharCode(65535);a[4079]=String.fromCharCode(8191);a[4082]=String.fromCharCode(65534);
+a[4083]=String.fromCharCode(2047);a[4084]=String.fromCharCode(65534);a[4085]=String.fromCharCode(2047);a[4086]=String.fromCharCode(65472);a[4087]=String.fromCharCode(65535);a[4088]=String.fromCharCode(65535);a[4089]=String.fromCharCode(65535);a[4090]=String.fromCharCode(65535);a[4091]=String.fromCharCode(32767);a[4092]=String.fromCharCode(64764);a[4093]=String.fromCharCode(7420);a[4100]=String.fromCharCode(65534);a[4101]=String.fromCharCode(2047);a[4102]=String.fromCharCode(65534);a[4103]=String.fromCharCode(2047);
+a[4106]=String.fromCharCode(1024);a[4107]=String.fromCharCode(1056);a[4108]=String.fromCharCode(65535);a[4109]=String.fromCharCode(65407);a[4110]=String.fromCharCode(65535);a[4111]=String.fromCharCode(65407);a[4112]=String.fromCharCode(65535);a[4113]=String.fromCharCode(65535);a[4114]=String.fromCharCode(65535);a[4115]=String.fromCharCode(65535);a[4116]=String.fromCharCode(65535);a[4117]=String.fromCharCode(65535);a[4118]=String.fromCharCode(65535);a[4119]=String.fromCharCode(65535);a[4120]=String.fromCharCode(65535);
+a[4121]=String.fromCharCode(65535);a[4122]=String.fromCharCode(65535);a[4123]=String.fromCharCode(65535);a[4124]=String.fromCharCode(65535);a[4125]=String.fromCharCode(65535);a[4126]=String.fromCharCode(65535);a[4127]=String.fromCharCode(64575);a[4128]=String.fromCharCode(65535);a[4129]=String.fromCharCode(255);a[4133]=String.fromCharCode(65535);a[4134]=String.fromCharCode(65535);a[4135]=String.fromCharCode(65535);a[4136]=String.fromCharCode(65535);a[4137]=String.fromCharCode(65535);a[4138]=String.fromCharCode(511);
+a[4139]=String.fromCharCode(63999);a[4140]=String.fromCharCode(3);a[4141]=String.fromCharCode(3);a[4142]=String.fromCharCode(31);a[4151]=String.fromCharCode(1024);a[4152]=String.fromCharCode(55104);a[4153]=String.fromCharCode(65535);a[4154]=String.fromCharCode(65531);a[4155]=String.fromCharCode(65535);a[4156]=String.fromCharCode(32767);a[4157]=String.fromCharCode(21631);a[4158]=String.fromCharCode(253)});c$.white_f=d(c$,"white_f",function(){var a=N(4159,"\x00");com.stevesoft.pat.Bits.white=new com.stevesoft.pat.Bits(a);
+a[0]=String.fromCharCode(15872);a[1]=String.fromCharCode(61440);a[2]=String.fromCharCode(1);a[512]=String.fromCharCode(4095);a[514]=String.fromCharCode(768);a[768]=String.fromCharCode(1);a[4096]=String.fromCharCode(15872);a[4097]=String.fromCharCode(61440);a[4098]=String.fromCharCode(1)});c$.punct_f=d(c$,"punct_f",function(){var a=N(4159,"\x00");com.stevesoft.pat.Bits.punct=new com.stevesoft.pat.Bits(a);a[2]=String.fromCharCode(63470);a[3]=String.fromCharCode(35840);a[4]=String.fromCharCode(1);a[5]=
+String.fromCharCode(47104);a[7]=String.fromCharCode(10240);a[10]=String.fromCharCode(10242);a[11]=String.fromCharCode(34944);a[55]=String.fromCharCode(16432);a[56]=String.fromCharCode(128);a[85]=String.fromCharCode(64512);a[88]=String.fromCharCode(512);a[91]=String.fromCharCode(16384);a[92]=String.fromCharCode(9);a[95]=String.fromCharCode(24);a[96]=String.fromCharCode(4096);a[97]=String.fromCharCode(34816);a[102]=String.fromCharCode(15360);a[109]=String.fromCharCode(16);a[150]="0";a[151]=String.fromCharCode(1);
+a[226]=String.fromCharCode(32768);a[229]=String.fromCharCode(3072);a[234]=String.fromCharCode(32768);a[240]=String.fromCharCode(65520);a[241]=String.fromCharCode(7);a[243]=String.fromCharCode(15360);a[248]=String.fromCharCode(32);a[271]=String.fromCharCode(2048);a[513]=String.fromCharCode(65535);a[514]=String.fromCharCode(255);a[515]=String.fromCharCode(65535);a[516]="o";a[519]=String.fromCharCode(24576);a[520]=String.fromCharCode(24576);a[562]=String.fromCharCode(1536);a[768]=String.fromCharCode(65358);
+a[769]=String.fromCharCode(65523);a[771]=String.fromCharCode(1);a[783]=String.fromCharCode(2048);a[4051]=String.fromCharCode(49152);a[4067]=String.fromCharCode(65535);a[4068]=String.fromCharCode(65055);a[4069]=String.fromCharCode(65527);a[4070]=String.fromCharCode(3339);a[4080]=String.fromCharCode(63470);a[4081]=String.fromCharCode(35840);a[4082]=String.fromCharCode(1);a[4083]=String.fromCharCode(47104);a[4085]=String.fromCharCode(10240);a[4086]=String.fromCharCode(62);a[4098]=String.fromCharCode(63470);
+a[4099]=String.fromCharCode(35840);a[4100]=String.fromCharCode(1);a[4101]=String.fromCharCode(47104);a[4103]=String.fromCharCode(10240);a[4106]=String.fromCharCode(10242);a[4107]=String.fromCharCode(34944);a[4151]=String.fromCharCode(16432);a[4152]=String.fromCharCode(128)});G(c$,"upper",null,"lower",null,"title",null,"currency",null,"decimal_digit",null,"math",null,"letter",null,"white",null,"punct",null);p("com.stevesoft.pat");q(["com.stevesoft.pat.Pattern","$.RegSyntax"],["com.stevesoft.pat.BadRangeArgs",
+"$.Range"],["com.stevesoft.pat.RegSyntaxError","$.oneChar","$.patInt"],function(){c$=B(com.stevesoft.pat,"BadRangeArgs",com.stevesoft.pat.RegSyntax);c$=s(function(){this.althi=this.altlo=this.hi=this.lo="\x00";this.printBrackets=!1;r(this,arguments)},com.stevesoft.pat,"Range",com.stevesoft.pat.Pattern);e(c$,"toString",function(){var a=com.stevesoft.pat.Pattern.protect(""+this.lo,'[]{}(),$,-"^.',"\\")+"-"+com.stevesoft.pat.Pattern.protect(""+this.hi,'[]{}(),$,-"^.',"\\");return!this.printBrackets?
+a:"["+a+"]"});m(c$,function(a,b){t(this,com.stevesoft.pat.Range,[]);this.lo=a;this.hi=b;var c=null;this.lo>=this.hi&&com.stevesoft.pat.RegSyntaxError.endItAll("Badly formed []'s : "+this.lo+" >= "+this.hi);c=new com.stevesoft.pat.oneChar(this.lo);this.altlo=c.altc;c=new com.stevesoft.pat.oneChar(this.hi);this.althi=c.altc},"~S,~S");e(c$,"matchInternal",function(a,b){if(a>=b.src.length()||this.Masked(a,b))return-1;var c=b.src.charAt(a);return this.lo<=c&&c<=this.hi||b.ignoreCase&&this.altlo<=c&&c<=
+this.althi?this.nextMatch(a+1,b):-1},"~N,com.stevesoft.pat.Pthings");e(c$,"minChars",function(){return new com.stevesoft.pat.patInt(1)});e(c$,"maxChars",function(){return new com.stevesoft.pat.patInt(1)});e(c$,"clone1",function(){try{var a=new com.stevesoft.pat.Range(this.lo,this.hi);a.printBrackets=this.printBrackets;return a}catch(b){if(y(b,com.stevesoft.pat.RegSyntax))return null;throw b;}},"java.util.Hashtable")});p("com.stevesoft.pat");q(["com.stevesoft.pat.Pattern"],"com.stevesoft.pat.oneChar",
+["com.stevesoft.pat.CaseMgr","$.patInt"],function(){c$=s(function(){this.altc2=this.altc=this.c="\x00";this.mask=0;r(this,arguments)},com.stevesoft.pat,"oneChar",com.stevesoft.pat.Pattern);m(c$,function(a){t(this,com.stevesoft.pat.oneChar,[]);this.c=a;var b,c;a=com.stevesoft.pat.CaseMgr.toUpperCaseC(this.c);b=com.stevesoft.pat.CaseMgr.toLowerCaseC(this.c);c=com.stevesoft.pat.CaseMgr.toTitleCaseC(this.c);this.c==a?(this.altc=b,this.altc2=c):this.c==b?(this.altc=a,this.altc2=c):(this.altc=b,this.altc2=
+a);this.mask=this.c.charCodeAt(0)&this.altc.charCodeAt(0)&this.altc2.charCodeAt(0)},"~S");e(c$,"matchInternal",function(a,b){var c,f=-1;if(a<b.src.length()&&!this.Masked(a,b)&&((c=b.src.charAt(a))==this.c||b.ignoreCase&&(c==this.altc||c==this.altc2)))f=this.nextMatch(a+1,b);return f},"~N,com.stevesoft.pat.Pthings");e(c$,"toString",function(){return com.stevesoft.pat.Pattern.protect(""+this.c,'[]{}(),$,-"^.',"\\")+this.nextString()});e(c$,"minChars",function(){return new com.stevesoft.pat.patInt(1)});
+e(c$,"maxChars",function(){return new com.stevesoft.pat.patInt(1)});e(c$,"clone1",function(){return new com.stevesoft.pat.oneChar(this.c)},"java.util.Hashtable")});p("com.stevesoft.pat");q(["com.stevesoft.pat.Pattern","$.oneChar","java.util.Hashtable","$.Vector"],["com.stevesoft.pat.Branch","$.RegOpt","$.FastChar"],"com.stevesoft.pat.Any $.Bracket $.Custom $.FastBracket $.FastMulti $.Multi $.NullPattern $.Or $.Range $.UniValidator $.patInt java.lang.Character $.StringBuffer".split(" "),function(){c$=
+B(com.stevesoft.pat,"FastChar",com.stevesoft.pat.oneChar);e(c$,"matchInternal",function(a,b){return a<b.src.length()&&b.src.charAt(a)==this.c?this.nextMatch(a+1,b):-1},"~N,com.stevesoft.pat.Pthings");e(c$,"clone1",function(){return new com.stevesoft.pat.FastChar(this.c)},"java.util.Hashtable");c$=s(function(){this.keys=this.h=null;r(this,arguments)},com.stevesoft.pat,"Branch",com.stevesoft.pat.Pattern);J(c$,function(){this.h=new java.util.Hashtable;this.keys=new java.util.Vector});m(c$,function(){t(this,
+com.stevesoft.pat.Branch,[])});e(c$,"clone1",function(a){var b=new com.stevesoft.pat.Branch;b.keys=this.keys.clone();a.put(this,b);a.put(b,b);for(var c=0;c<this.keys.size();c++){var f=this.h.get(this.keys.elementAt(c));b.h.put(this.keys.elementAt(c),f.clone(a))}return b},"java.util.Hashtable");d(c$,"reduce",function(a,b){if(1==this.h.size()){var c=this.h.keys().nextElement(),f;f=a||b?new com.stevesoft.pat.oneChar(c.charValue()):new com.stevesoft.pat.FastChar(c.charValue());f.next=this.h.get(c);f.add(this.next);
+return f}return 0==this.h.size()?null:this},"~B,~B");d(c$,"maxChars",function(){for(var a=this.h.keys(),b=new com.stevesoft.pat.patInt(0);a.hasMoreElements();){var c=a.nextElement(),c=this.h.get(c).maxChars();c.inc();b.maxeq(c)}return b});d(c$,"minChars",function(){for(var a=this.h.keys(),b=new com.stevesoft.pat.patInt(0);a.hasMoreElements();){var c=a.nextElement(),c=this.h.get(c).minChars();c.inc();b.mineq(c)}return b});d(c$,"addc",function(a,b,c){var f=a.next,f=null==f?new com.stevesoft.pat.NullPattern:
+com.stevesoft.pat.RegOpt.opt(f,b,c);f.setParent(this);this.set(new Character(a.c),f,b,c);b&&(a.c!=a.altc&&this.set(new Character(a.altc),f,b,c),a.c!=a.altc2&&a.altc!=a.altc2&&this.set(new Character(a.altc2),f,b,c))},"com.stevesoft.pat.oneChar,~B,~B");d(c$,"set",function(a,b,c,f){var d=this.h.get(a);this.next=null;if(null==d)v(b,com.stevesoft.pat.Or)?(c=new com.stevesoft.pat.NullPattern,c.add(b),this.h.put(a,c)):this.h.put(a,b),this.keys.addElement(a);else if(v(d,com.stevesoft.pat.Or))d.addOr(b);else if(v(d,
+com.stevesoft.pat.oneChar)&&v(b,com.stevesoft.pat.oneChar)&&d.c!=b.c){var k=new com.stevesoft.pat.Branch;k.addc(d,c,f);k.addc(b,c,f);this.h.put(a,k);k.setParent(this)}else v(d,com.stevesoft.pat.Branch)&&v(b,com.stevesoft.pat.oneChar)?(d.addc(b,c,f),b.setParent(d)):(k=new com.stevesoft.pat.Or,k.setParent(this),v(d,com.stevesoft.pat.NullPattern)&&null==d.parent&&null!=d.next?k.addOr(d.next):k.addOr(d),k.addOr(b),b=com.stevesoft.pat.RegOpt.opt(k,c,f),this.h.put(a,b),b.setParent(this))},"Character,com.stevesoft.pat.Pattern,~B,~B");
+e(c$,"toString",function(){var a=new StringBuffer;a.append("(?:(?#branch)");for(var b=0;b<this.keys.size();b++){var c=this.keys.elementAt(b);a.append(c);a.append(this.h.get(c));b+1<this.keys.size()&&a.append("|")}a.append(")");a.append(this.nextString());return a.toString()});d(c$,"matchInternal",function(a,b){if(a>=b.src.length())return-1;var c=this.h.get(new Character(b.src.charAt(a)));return null==c||null!=b.cbits&&b.cbits.get(a)?-1:c.matchInternal(a+1,b)},"~N,com.stevesoft.pat.Pthings");c$=B(com.stevesoft.pat,
+"RegOpt");c$.opt=d(c$,"opt",function(a,b,c){if(null==a)return a;if(v(a,com.stevesoft.pat.Bracket)){var f=a;a=com.stevesoft.pat.FastBracket.process(f,b);a.next=f.next;a.parent=f.parent}else if(v(a,com.stevesoft.pat.oneChar)&&!b&&!c){var d=a;a=new com.stevesoft.pat.FastChar(d.c);a.next=d.next;a.parent=d.parent}else if(v(a,com.stevesoft.pat.Or)&&a.leftForm().equals("(?:")&&1==a.v.size())d=a,a=d.v.elementAt(0),a.setParent(null),a=com.stevesoft.pat.RegOpt.opt(a,b,c),a.add(d.next);else if(v(a,com.stevesoft.pat.Or)){d=
+a;d.pv=null;var k=d.v;d.v=new java.util.Vector;f=new com.stevesoft.pat.Branch;f.parent=d.parent;for(var g=0;g<k.size();g++){var e=k.elementAt(g);if(v(e,com.stevesoft.pat.oneChar)&&(1<=f.h.size()||g+1<k.size()&&v(k.elementAt(g+1),com.stevesoft.pat.oneChar)))f.addc(e,b,c);else{if(0<f.keys.size()){var j=f.reduce(b,c);null!=j&&(d.addOr(j),f=new com.stevesoft.pat.Branch,f.parent=d.parent)}d.addOr(com.stevesoft.pat.RegOpt.opt(e,b,c))}}0<f.keys.size()&&(j=f.reduce(b,c),null!=j&&d.addOr(j));1==d.v.size()&&
+d.leftForm().equals("(?:")&&(a=d.v.elementAt(0),a.setParent(null),a=com.stevesoft.pat.RegOpt.opt(a,b,c),a.add(d.next))}else if(v(a,com.stevesoft.pat.FastMulti))f=a,f.sub=com.stevesoft.pat.RegOpt.opt(f.sub,b,c);else if(v(a,com.stevesoft.pat.Multi)&&com.stevesoft.pat.RegOpt.safe4fm(a.sub)){f=null;try{f=new com.stevesoft.pat.FastMulti(a.a,a.b,com.stevesoft.pat.RegOpt.opt(a.sub,b,c))}catch(n){if(!y(n,com.stevesoft.pat.RegSyntax))throw n;}f.parent=a.parent;f.matchFewest=a.matchFewest;f.next=a.next;a=f}null!=
+a.next&&(a.next=com.stevesoft.pat.RegOpt.opt(a.next,b,c));return a},"com.stevesoft.pat.Pattern,~B,~B");c$.safe4fm=d(c$,"safe4fm",function(a){for(;null!=a;){if(!v(a,com.stevesoft.pat.Bracket)&&!v(a,com.stevesoft.pat.Range)&&!v(a,com.stevesoft.pat.oneChar)&&!v(a,com.stevesoft.pat.Any)&&(!v(a,com.stevesoft.pat.Custom)||!v(a.v,com.stevesoft.pat.UniValidator)))if(v(a,com.stevesoft.pat.Or)){var b=a;if(!b.leftForm().equals("(?:"))return!1;var c=b.countMinChars(),f=b.countMaxChars();if(!c.equals(f))return!1;
+for(c=0;c<b.v.size();c++)if(!com.stevesoft.pat.RegOpt.safe4fm(b.v.elementAt(c)))return!1}else return!1;a=a.next}return!0},"com.stevesoft.pat.Pattern")});p("com.stevesoft.pat");q(["com.stevesoft.pat.Bracket"],"com.stevesoft.pat.FastBracket",["com.stevesoft.pat.Range","$.oneChar","java.util.BitSet","$.Vector"],function(){c$=s(function(){this.$max=this.$min=0;this.bs=null;r(this,arguments)},com.stevesoft.pat,"FastBracket",com.stevesoft.pat.Bracket);c$.process=d(c$,"process",function(a,b){var c=a.v;a.pv=
+null;try{var f=c;if(b)for(var f=new java.util.Vector,d=0;d<c.size();d++){var k=c.elementAt(d);f.addElement(k);if(v(k,com.stevesoft.pat.oneChar))f.addElement(new com.stevesoft.pat.oneChar(k.altc));else if(v(k,com.stevesoft.pat.Range)){var g=k;f.addElement(new com.stevesoft.pat.Range(g.altlo,g.althi))}}c=f;for(d=0;d<c.size()-1;d++)for(g=0;g<c.size()-1;g++){var e=com.stevesoft.pat.FastBracket.getl(c.elementAt(g));if(com.stevesoft.pat.FastBracket.getl(c.elementAt(g+1))<e){var j=c.elementAt(g);c.setElementAt(c.elementAt(g+
+1),g);c.setElementAt(j,g+1)}}f=new java.util.Vector;k=c.elementAt(0);f.addElement(k);for(d=1;d<c.size();d++)if(com.stevesoft.pat.FastBracket.geth(k).charCodeAt(0)+1>=com.stevesoft.pat.FastBracket.getl(c.elementAt(d)).charCodeAt(0)){var n=c.elementAt(d),x=com.stevesoft.pat.FastBracket.min(com.stevesoft.pat.FastBracket.getl(k),com.stevesoft.pat.FastBracket.getl(n)),u=com.stevesoft.pat.FastBracket.max(com.stevesoft.pat.FastBracket.geth(k),com.stevesoft.pat.FastBracket.geth(n));f.setElementAt(k=com.stevesoft.pat.FastBracket.mkelem(x,
+u),f.size()-1)}else k=c.elementAt(d),f.addElement(k);a.v=c=f}catch(D){if(y(D,com.stevesoft.pat.RegSyntax))D.printStackTrace();else throw D;}f=com.stevesoft.pat.FastBracket.neg(c);if(1==c.size())return a;if(1==f.size())return a.v=f,a.neg=!a.neg,a;c=com.stevesoft.pat.FastBracket.newbrack(c,a.neg);null==c&&(c=com.stevesoft.pat.FastBracket.newbrack(f,!a.neg));return null!=c?(c.parent=a.parent,c.next=a.next,c):a},"com.stevesoft.pat.Bracket,~B");c$.newbrack=d(c$,"newbrack",function(a,b){var c=new com.stevesoft.pat.FastBracket(b);
+c.v=a;if(0==a.size())return null;c.$min=com.stevesoft.pat.FastBracket.getl(a.elementAt(0)).charCodeAt(0);c.$max=com.stevesoft.pat.FastBracket.geth(a.elementAt(a.size()-1)).charCodeAt(0);if(256>=c.$max-c.$min){c.bs=new java.util.BitSet(c.$max-c.$min+1);for(var f=0;f<a.size();f++)for(var d=a.elementAt(f),k=com.stevesoft.pat.FastBracket.getl(d).charCodeAt(0)-c.$min,d=com.stevesoft.pat.FastBracket.geth(d).charCodeAt(0)-c.$min;k<=d;k++)c.bs.set(k);return c}return null},"java.util.Vector,~B");c$.neg=d(c$,
+"neg",function(a){try{var b=new java.util.Vector;if(0==a.size())return b.addElement(new com.stevesoft.pat.Range(String.fromCharCode(0),String.fromCharCode(65535))),b;var c=com.stevesoft.pat.FastBracket.getl(a.elementAt(0)).charCodeAt(0);0!=c&&b.addElement(com.stevesoft.pat.FastBracket.mkelem(String.fromCharCode(0),String.fromCharCode(c-1)));for(c=0;c<a.size()-1;c++){var f=com.stevesoft.pat.FastBracket.getl(a.elementAt(c+1)).charCodeAt(0)-1,d=com.stevesoft.pat.FastBracket.geth(a.elementAt(c)).charCodeAt(0)+
+1;b.addElement(com.stevesoft.pat.FastBracket.mkelem(String.fromCharCode(d),String.fromCharCode(f)))}var k=com.stevesoft.pat.FastBracket.geth(a.lastElement()).charCodeAt(0);65535!=k&&b.addElement(com.stevesoft.pat.FastBracket.mkelem(String.fromCharCode(k+1),String.fromCharCode(65535)));return b}catch(g){if(y(g,com.stevesoft.pat.RegSyntax))return null;throw g;}},"java.util.Vector");c$.mkelem=d(c$,"mkelem",function(a,b){return a==b?new com.stevesoft.pat.oneChar(a):new com.stevesoft.pat.Range(a,b)},"~S,~S");
+c$.min=d(c$,"min",function(a,b){return a<b?a:b},"~S,~S");c$.max=d(c$,"max",function(a,b){return a>b?a:b},"~S,~S");c$.getl=d(c$,"getl",function(a){return v(a,com.stevesoft.pat.Range)?a.lo:a.c},"~O");c$.geth=d(c$,"geth",function(a){return v(a,com.stevesoft.pat.Range)?a.hi:a.c},"~O");e(c$,"matchInternal",function(a,b){if(a>=b.src.length()||this.Masked(a,b))return-1;var c=b.src.charAt(a);return(new Boolean(this.neg^(c.charCodeAt(0)>=this.$min&&c.charCodeAt(0)<=this.$max&&this.bs.get(c.charCodeAt(0)-this.$min)))).valueOf()?
+this.nextMatch(a+1,b):-1},"~N,com.stevesoft.pat.Pthings")});q(null,"java.util.BitSet",["java.lang.IndexOutOfBoundsException","$.NegativeArraySizeException","$.StringBuffer","java.util.Arrays"],function(){c$=s(function(){this.bits=null;r(this,arguments)},java.util,"BitSet",null,[Cloneable,java.io.Serializable]);m(c$,function(){this.construct(32)});m(c$,function(a){if(0>a)throw new NegativeArraySizeException;var b=a>>>5;0!=(a&4)&&++b;this.bits=E(b,0)},"~N");d(c$,"and",function(a){var b=Math.min(this.bits.length,
+a.bits.length),c;for(c=0;c<b;++c)this.bits[c]&=a.bits[c];for(;c<this.bits.length;)this.bits[c++]=0},"java.util.BitSet");d(c$,"andNot",function(a){for(var b=Math.min(this.bits.length,a.bits.length);0<=--b;)this.bits[b]&=~a.bits[b]},"java.util.BitSet");d(c$,"cardinality",function(){for(var a=0,b=this.bits.length-1;0<=b;b--){var c=this.bits[b];0!=c&&(-1==c?a+=32:(c=(c>>1&1431655765)+(c&1431655765),c=(c>>2&858993459)+(c&858993459),c=(c>>4&252645135)+(c&252645135),c=(c>>8&16711935)+(c&16711935),a+=(c>>
+16&65535)+(c&65535)))}return a});d(c$,"clear",function(){java.util.Arrays.fill(this.bits,0)});d(c$,"clear",function(a){var b=a>>5;this.ensure(b);this.bits[b]&=~(1<<a)},"~N");d(c$,"clear",function(a,b){if(0>a||a>b)throw new IndexOutOfBoundsException;if(a!=b){var c=a>>>5,f=b>>>5;this.ensure(f);if(c==f)this.bits[f]&=(1<<a)-1|-1<<b;else{this.bits[c]&=(1<<a)-1;this.bits[f]&=-1<<b;for(c+=1;c<f;c++)this.bits[c]=0}}},"~N,~N");d(c$,"clone",function(){try{var a=K(this,java.util.BitSet,"clone",[]);a.bits=this.bits.clone();
+return a}catch(b){if(y(b,CloneNotSupportedException))return null;throw b;}});e(c$,"equals",function(a){if(!v(a,java.util.BitSet))return!1;var b=Math.min(this.bits.length,a.bits.length),c;for(c=0;c<b;++c)if(this.bits[c]!=a.bits[c])return!1;for(b=c;b<this.bits.length;++b)if(0!=this.bits[b])return!1;for(b=c;b<a.bits.length;++b)if(0!=a.bits[b])return!1;return!0},"~O");d(c$,"flip",function(a){var b=a>>5;this.ensure(b);this.bits[b]^=1<<a},"~N");d(c$,"flip",function(a,b){if(0>a||a>b)throw new IndexOutOfBoundsException;
+if(a!=b){var c=a>>>5,f=b>>>5;this.ensure(f);if(c==f)this.bits[f]^=-1<<a&(1<<b)-1;else{this.bits[c]^=-1<<a;this.bits[f]^=(1<<b)-1;for(c+=1;c<f;c++)this.bits[c]^=-1}}},"~N,~N");d(c$,"get",function(a){var b=a>>5;return b>=this.bits.length?!1:0!=(this.bits[b]&1<<a)},"~N");d(c$,"get",function(a,b){if(0>a||a>b)throw new IndexOutOfBoundsException;var c=new java.util.BitSet(b-a),f=a>>>5;if(f>=this.bits.length)return c;var d=a&4,k=b>>>5;if(0==d){var g=Math.min(k-f+1,this.bits.length-f);System.arraycopy(this.bits,
+f,c.bits,0,g);k<this.bits.length&&(c.bits[k-f]&=(1<<b)-1);return c}var g=Math.min(k,this.bits.length-1),e=~d,j;for(j=0;f<g;f++,j++)c.bits[j]=this.bits[f]>>>d|this.bits[f+1]<<e;(b&4)>d&&(c.bits[j++]=this.bits[f]>>>d);k<this.bits.length&&(c.bits[j-1]&=(1<<b-a)-1);return c},"~N,~N");e(c$,"hashCode",function(){for(var a=1234,b=this.bits.length;0<b;)a^=b*this.bits[--b];return a});d(c$,"intersects",function(a){for(var b=Math.min(this.bits.length,a.bits.length);0<=--b;)if(0!=(this.bits[b]&a.bits[b]))return!0;
+return!1},"java.util.BitSet");d(c$,"isEmpty",function(){for(var a=this.bits.length-1;0<=a;a--)if(0!=this.bits[a])return!1;return!0});d(c$,"length",function(){var a;for(a=this.bits.length-1;0<=a&&0==this.bits[a];--a);if(0>a)return 0;var b=this.bits[a];for(a=32*(a+1);0==(b&2147483648);)--a,b<<=1;return a});d(c$,"nextClearBit",function(a){for(var b=a>>5,c=1<<a;b<this.bits.length;){var f=this.bits[b];do{if(0==(f&c))return a;c<<=1;a++}while(0!=c);c=1;b++}return a},"~N");d(c$,"nextSetBit",function(a){for(var b=
+a>>5,c=1<<a;b<this.bits.length;){var f=this.bits[b];do{if(0!=(f&c))return a;c<<=1;a++}while(0!=c);c=1;b++}return-1},"~N");d(c$,"or",function(a){this.ensure(a.bits.length-1);for(var b=a.bits.length-1;0<=b;b--)this.bits[b]|=a.bits[b]},"java.util.BitSet");d(c$,"set",function(a){var b=a>>5;this.ensure(b);this.bits[b]|=1<<a},"~N");d(c$,"set",function(a,b){b?this.set(a):this.clear(a)},"~N,~B");d(c$,"set",function(a,b){if(0>a||a>b)throw new IndexOutOfBoundsException;if(a!=b){var c=a>>>5,f=b>>>5;this.ensure(f);
+if(c==f)this.bits[f]|=-1<<a&(1<<b)-1;else{this.bits[c]|=-1<<a;this.bits[f]|=(1<<b)-1;for(c+=1;c<f;c++)this.bits[c]=-1}}},"~N,~N");d(c$,"set",function(a,b,c){c?this.set(a,b):this.clear(a,b)},"~N,~N,~B");d(c$,"size",function(){return 32*this.bits.length});e(c$,"toString",function(){for(var a=new StringBuffer("{"),b=!0,c=0;c<this.bits.length;++c){var f=1,d=this.bits[c];if(0!=d)for(var k=0;32>k;++k)0!=(d&f)&&(b||a.append(", "),a.append(32*c+k),b=!1),f<<=1}return a.append("}").toString()});d(c$,"xor",
+function(a){this.ensure(a.bits.length-1);for(var b=a.bits.length-1;0<=b;b--)this.bits[b]^=a.bits[b]},"java.util.BitSet");d(c$,"ensure",function(a){a>=this.bits.length&&(a=E(a+1,0),System.arraycopy(this.bits,0,a,0,this.bits.length),this.bits=a)},"~N");G(c$,"INT_MASK",4)});p("com.stevesoft.pat");q(["java.util.Hashtable"],"com.stevesoft.pat.ReplaceRule",["com.stevesoft.pat.Ctrl","$.Regex","$.Transformer","java.lang.StringBuffer"],function(){c$=s(function(){this.name=this.next=null;r(this,arguments)},
+com.stevesoft.pat,"ReplaceRule");J(c$,function(){this.name=this.getClass().getName()});d(c$,"clone1",function(){return new com.stevesoft.pat.RuleHolder(this)});e(c$,"clone",function(){for(var a=this.clone1(),b=a,c=this;null!=c.next;)a.next=c.next.clone1(),a.name=c.name,a=a.next,c=c.next;return b});c$.add=d(c$,"add",function(a,b){if(null==a)return b;a.addRule(b);return a},"com.stevesoft.pat.ReplaceRule,com.stevesoft.pat.ReplaceRule");d(c$,"add",function(a){return com.stevesoft.pat.ReplaceRule.add(this,
+a)},"com.stevesoft.pat.ReplaceRule");d(c$,"addRule",function(a){null==this.next?this.next=a:this.next.addRule(a)},"com.stevesoft.pat.ReplaceRule");c$.getv=d(c$,"getv",function(){if(null!=com.stevesoft.pat.ReplaceRule.getvar)return com.stevesoft.pat.ReplaceRule.getvar.clone();com.stevesoft.pat.ReplaceRule.getvar=new com.stevesoft.pat.Regex("(?:\\\\(\\d+)|\\$(?:(\\d+)|(\\w+)|([&'`])|\\{(?:(\\d+)|([^\n}\\\\]+))})|\\\\([nrbtaef])|\\\\c([\x00-\uffff])|\\\\x([A-Fa-f0-9]{2})|\\\\([\x00-\uffff]))","");com.stevesoft.pat.ReplaceRule.getvar.optimize();
+return com.stevesoft.pat.ReplaceRule.getvar});c$.perlCode=d(c$,"perlCode",function(a){for(var b=0,c=0,f=com.stevesoft.pat.ReplaceRule.getv(),d=null,k=null;f.searchFrom(a,c);){var g=com.stevesoft.pat.Regex.BackRefOffset-1,b=f.matchedFrom();b>c&&(d=com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.StringRule(a.substring(c,b))));b=null;if(null!=(b=f.stringMatchedI(1+g))||null!=(b=f.stringMatchedI(2+g))||null!=(b=f.stringMatchedI(5+g))){for(c=g=0;c<b.length;c++)g=8*g+(b.charCodeAt(c)-48);d=1==
+b.length?com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.BackRefRule(g)):new com.stevesoft.pat.StringRule(""+String.fromCharCode(g))}else if(null!=(b=f.stringMatchedI(10+g)))d=0<="QELlUu".indexOf(b)?com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.CodeRule(b.charAt(0))):com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.StringRule(b));else if(null!=(b=f.stringMatchedI(3+g))||null!=(b=f.stringMatchedI(4+g))||null!=(b=f.stringMatchedI(6+g))){g="";if(0<(c=b.indexOf(":")))g=
+b.substring(c+1),b=b.substring(0,c);b.equals("&")||b.equals("MATCH")?d=com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.AmpersandRule):b.equals("`")||b.equals("PREMATCH")?d=com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.LeftRule):b.equals("'")||b.equals("POSTMATCH")?d=com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.RightRule):b.equals("WANT_MORE_TEXT")?d=com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.WantMoreTextReplaceRule):b.equals("POP")?d=com.stevesoft.pat.ReplaceRule.add(d,
+new com.stevesoft.pat.PopRule):b.startsWith("+")&&null!=(k=com.stevesoft.pat.ReplaceRule.defs.get(b.substring(1)))?d=v(k,com.stevesoft.pat.Regex)?com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.PushRule(b.substring(1),k)):v(k,com.stevesoft.pat.Transformer)?com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.PushRule(b.substring(1),k)):com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.StringRule("${"+b+"}")):b.startsWith("=")&&null!=(k=com.stevesoft.pat.ReplaceRule.defs.get(b.substring(1)))?
+d=v(k,com.stevesoft.pat.Regex)?com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.ChangeRule(b.substring(1),k)):v(k,com.stevesoft.pat.Transformer)?com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.ChangeRule(b.substring(1),k)):com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.StringRule("${"+b+"}")):null!=(k=com.stevesoft.pat.ReplaceRule.defs.get(b))?v(k,com.stevesoft.pat.ReplaceRule)&&(b=k.arg(g),null==b&&(b=k),d=com.stevesoft.pat.ReplaceRule.add(d,b.clone())):d=com.stevesoft.pat.ReplaceRule.add(d,
+new com.stevesoft.pat.StringRule("${"+b+"}"))}else if(null!=(b=f.stringMatchedI(7+g)))b=b.charAt(0),"n"==b?d=com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.StringRule("\n")):"t"==b?d=com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.StringRule("\t")):"r"==b?d=com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.StringRule("\r")):"b"==b?d=com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.StringRule("\r")):"a"==b?d=com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.StringRule("\u0007")):
+"e"==b?d=com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.StringRule("\u001b")):"f"==b&&(d=com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.StringRule("\f")));else if(null!=(b=f.stringMatchedI(8+g)))b=b.charAt(0),b.charCodeAt(0)<com.stevesoft.pat.Ctrl.cmap.length&&(b=com.stevesoft.pat.Ctrl.cmap[b.charCodeAt(0)]),d=com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.StringRule(""+b));else if(null!=(b=f.stringMatchedI(9+g)))g=16*com.stevesoft.pat.ReplaceRule.getHexDigit(b.charAt(0))+
+com.stevesoft.pat.ReplaceRule.getHexDigit(b.charAt(1)),d=com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.StringRule(""+String.fromCharCode(g)));c=f.matchedTo()}c<=a.length&&(d=com.stevesoft.pat.ReplaceRule.add(d,new com.stevesoft.pat.StringRule(a.substring(c))));return d},"~S");c$.isDefined=d(c$,"isDefined",function(a){return null!=com.stevesoft.pat.ReplaceRule.defs.get(a)},"~S");c$.define=d(c$,"define",function(a,b){com.stevesoft.pat.ReplaceRule.defs.put(a,b)},"~S,com.stevesoft.pat.Regex");
+c$.define=d(c$,"define",function(a,b){com.stevesoft.pat.ReplaceRule.defs.put(a,b);b.name=a},"~S,com.stevesoft.pat.ReplaceRule");c$.define=d(c$,"define",function(a,b){com.stevesoft.pat.ReplaceRule.defs.put(a,b)},"~S,com.stevesoft.pat.Transformer");c$.undefine=d(c$,"undefine",function(a){com.stevesoft.pat.ReplaceRule.defs.remove(a)},"~S");d(c$,"toString1",function(){return"${"+this.name+"}"});e(c$,"toString",function(){var a=new StringBuffer;a.append(this.toString1());for(var b=this.next;null!=b;)a.append(b.toString1()),
+b=b.next;return a.toString()});d(c$,"arg",function(){return null},"~S");c$.getHexDigit=d(c$,"getHexDigit",function(a){return"0"<=a&&"9">=a?a.charCodeAt(0)-48:"a"<=a&&"f">=a?a.charCodeAt(0)-97+10:a.charCodeAt(0)-65+10},"~S");G(c$,"getvar",null);c$.defs=c$.prototype.defs=new java.util.Hashtable});p("com.stevesoft.pat");q(["com.stevesoft.pat.ReplaceRule","$.Replacer"],["com.stevesoft.pat.Transformer","$.TransRepRule"],"com.stevesoft.pat.MessageManager $.Regex $.TransPat com.stevesoft.pat.wrap.StringWrap java.lang.ArrayIndexOutOfBoundsException $.NullPointerException".split(" "),
+function(){c$=s(function(){this.t=null;r(this,arguments)},com.stevesoft.pat,"TransRepRule",com.stevesoft.pat.ReplaceRule);m(c$,function(a){t(this,com.stevesoft.pat.TransRepRule,[]);this.t=a},"com.stevesoft.pat.Transformer");e(c$,"toString1",function(){return""});e(c$,"clone1",function(){return new com.stevesoft.pat.TransRepRule(this.t)});e(c$,"apply",function(){this.next=this.t.tp.ra[this.t.tp.pn].getReplaceRule()},"com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");c$=s(function(){this.rp=
+this.tp=null;this.auto_optimize=!1;this.repr=null;r(this,arguments)},com.stevesoft.pat,"Transformer");J(c$,function(){this.repr=new com.stevesoft.pat.Replacer});d(c$,"getReplacer",function(){return this.rp.getReplacer()});m(c$,function(a){this.rp=new com.stevesoft.pat.Regex(null,"");this.auto_optimize=a;this.tp=new com.stevesoft.pat.TransPat;this.rp.setReplaceRule(new com.stevesoft.pat.TransRepRule(this));this.rp.thePattern=this.tp},"~B");d(c$,"add",function(a){this.auto_optimize&&a.optimize();this.tp.ra[this.tp.ra_len++]=
+a;if(this.tp.ra.length==this.tp.ra_len){for(var b=Array(this.tp.ra_len+10),c=0;c<this.tp.ra_len;c++)b[c]=this.tp.ra[c];this.tp.ra=b}this.rp.numSubs_=a.numSubs_>this.rp.numSubs_?a.numSubs_:this.rp.numSubs_},"com.stevesoft.pat.Regex");d(c$,"patterns",function(){return this.tp.ra_len});d(c$,"getRegexAt",function(a){if(a>=this.tp.ra_len)throw new ArrayIndexOutOfBoundsException("i="+a+">="+this.patterns());if(0>a)throw new ArrayIndexOutOfBoundsException("i="+a+"< 0");return this.tp.ra[a]},"~N");d(c$,"setRegexAt",
+function(a,b){if(b>=this.tp.ra_len)throw new ArrayIndexOutOfBoundsException("i="+b+">="+this.patterns());if(0>b)throw new ArrayIndexOutOfBoundsException("i="+b+"< 0");this.tp.ra[b]=a},"com.stevesoft.pat.Regex,~N");d(c$,"add",function(a){var b=com.stevesoft.pat.Regex.perlCode(a);if(null==b)throw new NullPointerException(com.stevesoft.pat.MessageManager.formatMessage("exception.bad_pattern_to_regex_perl_code",E(-1,[a])));this.add(b)},"~S");d(c$,"add",function(a){for(var b=0;b<a.length;b++)this.add(a[b])},
+"~A");d(c$,"replaceAll",function(a){return this.dorep(a,0,a.length)},"~S");d(c$,"replaceAll",function(a){return this.dorep(a,0,a.length())},"com.stevesoft.pat.StringLike");d(c$,"replaceAllFrom",function(a,b){return this.dorep(a,b,a.length)},"~S,~N");d(c$,"replaceAllRegion",function(a,b,c){return this.dorep(a,b,c)},"~S,~N,~N");d(c$,"dorep",function(a,b,c){a=this.repr.replaceAllRegion(a,this.rp,b,c);this.tp.lastMatchedTo=this.repr.$lastMatchedTo;return a},"com.stevesoft.pat.StringLike,~N,~N");d(c$,
+"dorep",function(a,b,c){return this.dorep(new com.stevesoft.pat.wrap.StringWrap(a),b,c).toString()},"~S,~N,~N");d(c$,"replaceFirst",function(a){return this.dorep(a,0,a.length)},"~S");d(c$,"replaceFirstFrom",function(a,b){return this.dorep(a,b,a.length)},"~S,~N");d(c$,"replaceFirstRegion",function(a,b,c){return this.dorep(a,b,c)},"~S,~N,~N")});p("com.stevesoft.pat");q(null,["com.stevesoft.pat.RegHolder","$.Replacer","$.CodeVal"],"com.stevesoft.pat.AmpersandRule $.ChangeRule $.MessageManager $.PopRule $.PushRule $.RuleHolder $.SpecialRule $.StringBufferLike $.WantMoreTextReplaceRule com.stevesoft.pat.wrap.StringWrap java.lang.NullPointerException".split(" "),
+function(){c$=s(function(){this.prev=this.me=null;r(this,arguments)},com.stevesoft.pat,"RegHolder");c$=s(function(){this.pos=0;this.code="\x00";r(this,arguments)},com.stevesoft.pat,"CodeVal");m(c$,function(a,b){this.pos=a;this.code=b},"~N,~S");e(c$,"toString",function(){return"("+this.pos+","+this.code+")"});c$=s(function(){this.first=!1;this.src=this.sb=this.rh=null;this.pos=0;this.want_more_text_enable=this.want_more_text=!1;this.$lastMatchedTo=0;r(this,arguments)},com.stevesoft.pat,"Replacer");
+J(c$,function(){this.rh=new com.stevesoft.pat.RegHolder});m(c$,function(){});d(c$,"replaceFirstRegion",function(a,b,c,f){return this.replaceFirstRegion(new com.stevesoft.pat.wrap.StringWrap(a),b,c,f)},"~S,com.stevesoft.pat.Regex,~N,~N");d(c$,"replaceFirstRegion",function(a,b,c,f){this.first=!0;this.rh.me=b;this.rh.prev=null;return this.dorep(a,c,f)},"com.stevesoft.pat.StringLike,com.stevesoft.pat.Regex,~N,~N");d(c$,"replaceFirst",function(a){return this.replaceFirstRegion(a,0,a.length())},"com.stevesoft.pat.StringLike");
+d(c$,"replaceFirstFrom",function(a,b){return this.replaceFirstRegion(a,b,a.length())},"com.stevesoft.pat.StringLike,~N");d(c$,"replaceFirstRegion",function(a,b,c){this.first=!0;return this.dorep(a,b,c)},"com.stevesoft.pat.StringLike,~N,~N");d(c$,"replaceAllRegion",function(a,b,c,f){return this.replaceAllRegion(new com.stevesoft.pat.wrap.StringWrap(a),b,c,f)},"~S,com.stevesoft.pat.Regex,~N,~N");d(c$,"replaceAllRegion",function(a,b,c,f){this.first=!1;this.rh.me=b;this.rh.prev=null;return this.dorep(a,
+c,f)},"com.stevesoft.pat.StringLike,com.stevesoft.pat.Regex,~N,~N");d(c$,"replaceAll",function(a){return this.replaceAllRegion(a,0,a.length())},"com.stevesoft.pat.StringLike");d(c$,"replaceAllFrom",function(a,b){return this.replaceAllRegion(a,b,a.length())},"com.stevesoft.pat.StringLike,~N");d(c$,"replaceAllRegion",function(a,b,c){this.first=!1;return this.dorep(a,b,c)},"com.stevesoft.pat.StringLike,~N,~N");d(c$,"replaceAll",function(a){return this.replaceAllRegion(new com.stevesoft.pat.wrap.StringWrap(a),
+0,a.length).toString()},"~S");d(c$,"replaceAllFrom",function(a,b){return this.replaceAllRegion(new com.stevesoft.pat.wrap.StringWrap(a),b,a.length).toString()},"~S,~N");d(c$,"replaceAllRegion",function(a,b,c){this.first=!1;return this.dorep(new com.stevesoft.pat.wrap.StringWrap(a),b,c).toString()},"~S,~N,~N");d(c$,"isSpecial",function(a){for(;null!=a;){if(v(a,com.stevesoft.pat.SpecialRule)||v(a,com.stevesoft.pat.RuleHolder)&&v(a.held,com.stevesoft.pat.SpecialRule))return!0;a=a.next}return!1},"com.stevesoft.pat.ReplaceRule");
+d(c$,"apply1",function(a){a.charsMatched_++;this.apply(a,null);a.charsMatched_--},"com.stevesoft.pat.RegRes");d(c$,"dorep",function(a,b,c){var f=a;this.want_more_text=!1;this.$lastMatchedTo=0;if(null==this.rh.me)throw new NullPointerException(com.stevesoft.pat.MessageManager.getString("exception.replace_null_regex_pointer"));if(this.rh.me._searchLike(a,b,c)){b=this.rh.me.matchedTo();0==this.rh.me.charsMatched()&&!this.isSpecial(this.rh.me.getReplaceRule())&&(this.apply1(this.rh.me),b++);this.apply(this.rh.me);
+if(!this.first)for(;!this.want_more_text&&this.rh.me._searchLike(a,b,c);)b=this.rh.me.matchedTo(),0==this.rh.me.charsMatched()&&(this.isSpecial(this.rh.me.getReplaceRule())||this.apply1(this.rh.me),b++),this.apply(this.rh.me);f=this.finish();f=null==f?a:f}return f},"com.stevesoft.pat.StringLike,~N,~N");d(c$,"apply",function(a,b){if(!(null==b||null==b.next&&v(b,com.stevesoft.pat.AmpersandRule))&&a.didMatch()){null==this.src&&(this.src=a.getStringLike());null==this.sb&&(this.sb=new com.stevesoft.pat.StringBufferLike(this.src.newStringBufferLike()));
+for(var c=a.matchedFrom(),f=this.pos;f<c;f++)this.sb.appendC(this.src.charAt(f));for(c=b;null!=c;c=c.next)c.apply(this.sb,a),v(c,com.stevesoft.pat.SpecialRule)&&(v(c,com.stevesoft.pat.WantMoreTextReplaceRule)&&this.want_more_text_enable?this.want_more_text=!0:v(c,com.stevesoft.pat.PushRule)?(f=new com.stevesoft.pat.RegHolder,f.me=c.NewRule,f.prev=this.rh,this.rh=f):v(c,com.stevesoft.pat.PopRule)?null!=this.rh.prev&&(this.rh=this.rh.prev):v(c,com.stevesoft.pat.ChangeRule)&&(this.rh.me=c.NewRule));
+this.want_more_text||(this.pos=a.matchedTo())}},"com.stevesoft.pat.RegRes,com.stevesoft.pat.ReplaceRule");d(c$,"WantMoreText",function(){return this.want_more_text});d(c$,"apply",function(a){this.apply(a,a.getReplaceRule())},"com.stevesoft.pat.Regex");d(c$,"finish",function(){if(null==this.src)return null;for(var a=this.src.length(),b=this.pos;b<a;b++)this.sb.appendC(this.src.charAt(b));this.src=null;this.$lastMatchedTo=this.pos;this.pos=0;a=this.sb.toStringLike();this.sb=null;return a});e(c$,"clone",
+function(){var a=new com.stevesoft.pat.Replacer;a.first=this.first;a.src=this.src;a.sb=this.sb;a.pos=this.pos;a.$lastMatchedTo=this.$lastMatchedTo;a.want_more_text=this.want_more_text;a.want_more_text_enable=this.want_more_text_enable;a.rh.me=this.rh.me;a.rh.prev=this.rh.prev;return a});d(c$,"lastMatchedTo",function(){return this.$lastMatchedTo});d(c$,"getRegex",function(){return this.rh.me});d(c$,"setSource",function(a){this.src=a},"com.stevesoft.pat.StringLike");d(c$,"setBuffer",function(a){this.sb=
+a},"com.stevesoft.pat.StringBufferLike");d(c$,"setPos",function(a){this.pos=a},"~N")});p("com.stevesoft.pat");q(["com.stevesoft.pat.ReplaceRule"],"com.stevesoft.pat.AmpersandRule",null,function(){c$=B(com.stevesoft.pat,"AmpersandRule",com.stevesoft.pat.ReplaceRule);m(c$,function(){t(this,com.stevesoft.pat.AmpersandRule,[])});e(c$,"apply",function(a,b){a.append(b.stringMatched())},"com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");e(c$,"toString1",function(){return"$&"})});p("com.stevesoft.pat");
+q(["com.stevesoft.pat.SpecialRule"],"com.stevesoft.pat.ChangeRule",null,function(){c$=s(function(){this.NewRule=null;r(this,arguments)},com.stevesoft.pat,"ChangeRule",com.stevesoft.pat.SpecialRule);m(c$,function(a){t(this,com.stevesoft.pat.ChangeRule,[]);this.NewRule=a.NewRule},"com.stevesoft.pat.ChangeRule");m(c$,function(a,b){t(this,com.stevesoft.pat.ChangeRule,[]);this.name=a;this.NewRule=b},"~S,com.stevesoft.pat.Regex");m(c$,function(a,b){t(this,com.stevesoft.pat.ChangeRule,[]);this.name=a;this.NewRule=
+b.rp},"~S,com.stevesoft.pat.Transformer");e(c$,"clone1",function(){return new com.stevesoft.pat.ChangeRule(this)});e(c$,"toString1",function(){return"${="+this.name+"}"});e(c$,"apply",function(){},"com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes")});p("com.stevesoft.pat");q(["com.stevesoft.pat.ReplaceRule"],"com.stevesoft.pat.SpecialRule",null,function(){c$=B(com.stevesoft.pat,"SpecialRule",com.stevesoft.pat.ReplaceRule);m(c$,function(){t(this,com.stevesoft.pat.SpecialRule,[])});e(c$,
+"apply",function(){},"com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes")});p("com.stevesoft.pat");q(["com.stevesoft.pat.SpecialRule"],"com.stevesoft.pat.PopRule",null,function(){c$=B(com.stevesoft.pat,"PopRule",com.stevesoft.pat.SpecialRule);m(c$,function(){t(this,com.stevesoft.pat.PopRule,[])});e(c$,"toString1",function(){return"${POP}"})});p("com.stevesoft.pat");q(["com.stevesoft.pat.SpecialRule"],"com.stevesoft.pat.PushRule",null,function(){c$=s(function(){this.NewRule=null;r(this,arguments)},
+com.stevesoft.pat,"PushRule",com.stevesoft.pat.SpecialRule);m(c$,function(a){t(this,com.stevesoft.pat.PushRule,[]);this.NewRule=a.NewRule},"com.stevesoft.pat.PushRule");m(c$,function(a,b){t(this,com.stevesoft.pat.PushRule,[]);this.name=a;this.NewRule=b},"~S,com.stevesoft.pat.Regex");m(c$,function(a,b){t(this,com.stevesoft.pat.PushRule,[]);this.name=a;this.NewRule=b.rp},"~S,com.stevesoft.pat.Transformer");e(c$,"clone1",function(){return new com.stevesoft.pat.PushRule(this)});d(c$,"String1",function(){return"${+"+
+this.name+"}"});e(c$,"apply",function(){},"com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes")});p("com.stevesoft.pat");q(["com.stevesoft.pat.ReplaceRule"],"com.stevesoft.pat.RuleHolder",null,function(){c$=s(function(){this.held=null;r(this,arguments)},com.stevesoft.pat,"RuleHolder",com.stevesoft.pat.ReplaceRule);m(c$,function(){t(this,com.stevesoft.pat.RuleHolder,[])});m(c$,function(a){t(this,com.stevesoft.pat.RuleHolder,[]);this.held=a},"com.stevesoft.pat.ReplaceRule");e(c$,"clone1",function(){return new com.stevesoft.pat.RuleHolder(this.held)});
+d(c$,"toString1",function(){return this.held.toString1()});d(c$,"apply",function(a,b){this.held.apply(a,b)},"com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");d(c$,"arg",function(a){return new com.stevesoft.pat.RuleHolder(this.held.arg(a))},"~S")});p("com.stevesoft.pat");q(["com.stevesoft.pat.BasicStringBufferLike"],"com.stevesoft.pat.StringBufferLike",["com.stevesoft.pat.CaseMgr"],function(){c$=s(function(){this.sbl=null;this.mode="E";this.altMode=" ";r(this,arguments)},com.stevesoft.pat,
+"StringBufferLike",null,com.stevesoft.pat.BasicStringBufferLike);m(c$,function(a){this.sbl=a},"com.stevesoft.pat.BasicStringBufferLike");d(c$,"toStringLike",function(){return this.sbl.toStringLike()});d(c$,"toString",function(){return this.sbl.toString()});d(c$,"appendC",function(a){switch(this.mode){case "u":this.mode=this.altMode,this.altMode=" ";case "U":this.sbl.appendC(com.stevesoft.pat.CaseMgr.toUpperCaseC(a));break;case "l":this.mode=this.altMode,this.altMode=" ";case "L":this.sbl.appendC(com.stevesoft.pat.CaseMgr.toLowerCaseC(a));
+break;case "Q":"a"<=a&&"z">=a||("A"<=a&&"Z">=a||"0"<=a&&"9">=a)||this.sbl.appendC("\\");default:this.sbl.appendC(a)}},"~S");e(c$,"append",function(a){for(var b=0;b<a.length;b++)this.appendC(a.charAt(b))},"~S");d(c$,"setMode",function(a){if(("u"==a||"l"==a)&&" "==this.altMode)this.altMode=this.mode;this.mode=a},"~S");d(c$,"unwrap",function(){return this.sbl.unwrap()})});p("com.stevesoft.pat");M(com.stevesoft.pat,"BasicStringBufferLike");p("com.stevesoft.pat");q(["com.stevesoft.pat.SpecialRule"],"com.stevesoft.pat.WantMoreTextReplaceRule",
+null,function(){c$=B(com.stevesoft.pat,"WantMoreTextReplaceRule",com.stevesoft.pat.SpecialRule);m(c$,function(){t(this,com.stevesoft.pat.WantMoreTextReplaceRule,[])});e(c$,"apply",function(){},"com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");e(c$,"toString1",function(){return"${WANT_MORE_TEXT}"})});p("com.stevesoft.pat.wrap");q(["com.stevesoft.pat.StringLike"],"com.stevesoft.pat.wrap.StringWrap",["com.stevesoft.pat.wrap.StringBufferWrap"],function(){c$=s(function(){this.s=null;r(this,
+arguments)},com.stevesoft.pat.wrap,"StringWrap",null,com.stevesoft.pat.StringLike);m(c$,function(a){this.s=a},"~S");e(c$,"toString",function(){return this.s});e(c$,"charAt",function(a){return this.s.charAt(a)},"~N");e(c$,"length",function(){return this.s.length});e(c$,"substring",function(a,b){return this.s.substring(a,b)},"~N,~N");e(c$,"unwrap",function(){return this.s});e(c$,"newStringBufferLike",function(){return new com.stevesoft.pat.wrap.StringBufferWrap});e(c$,"indexOf",function(a){return this.s.indexOf(a)},
+"~S")});p("com.stevesoft.pat");M(com.stevesoft.pat,"StringLike");p("com.stevesoft.pat.wrap");q(["com.stevesoft.pat.BasicStringBufferLike","java.lang.StringBuffer"],"com.stevesoft.pat.wrap.StringBufferWrap",["com.stevesoft.pat.wrap.StringWrap"],function(){c$=s(function(){this.sb=null;r(this,arguments)},com.stevesoft.pat.wrap,"StringBufferWrap",null,com.stevesoft.pat.BasicStringBufferLike);J(c$,function(){this.sb=new StringBuffer});e(c$,"appendC",function(a){this.sb.append(a)},"~S");e(c$,"append",function(a){this.sb.append(a)},
+"~S");d(c$,"length",function(){return this.sb.length()});e(c$,"toString",function(){return this.sb.toString()});e(c$,"toStringLike",function(){return new com.stevesoft.pat.wrap.StringWrap(this.sb.toString())});e(c$,"unwrap",function(){return this.sb})});p("com.stevesoft.pat");q(["com.stevesoft.pat.Pattern"],"com.stevesoft.pat.TransPat",["com.stevesoft.pat.Regex"],function(){c$=s(function(){this.ra=null;this.ra_len=0;this.lastMatchedTo=this.pn=-1;r(this,arguments)},com.stevesoft.pat,"TransPat",com.stevesoft.pat.Pattern);
+J(c$,function(){this.ra=Array(10)});e(c$,"toString",function(){return"(?#TransPat)"});m(c$,function(){t(this,com.stevesoft.pat.TransPat,[])});d(c$,"matchInternal",function(a,b){for(var c=0;c<this.ra_len;c++){b.ignoreCase=this.ra[c].ignoreCase;b.mFlag=this.ra[c].mFlag;b.dotDoesntMatchCR=com.stevesoft.pat.Regex.dotDoesntMatchCR;var f=this.ra[c].thePattern.matchInternal(a,b);if(0<=f)return this.pn=c,f}return this.pn=-1},"~N,com.stevesoft.pat.Pthings")});p("com.stevesoft.pat");q(["com.stevesoft.pat.Regex"],
+"com.stevesoft.pat.Rthings",null,function(){c$=s(function(){this.val=0;this.noBackRefs=this.optimizeMe=this.dontMatchInQuotes=this.ignoreCase=!1;this.parenLevel=0;this.sFlag=this.mFlag=this.gFlag=!1;this.o=this.p=null;r(this,arguments)},com.stevesoft.pat,"Rthings");J(c$,function(){this.val=com.stevesoft.pat.Regex.BackRefOffset});m(c$,function(a){this.ignoreCase=a.ignoreCase;this.dontMatchInQuotes=a.dontMatchInQuotes},"com.stevesoft.pat.Regex");d(c$,"set",function(a){a.gFlag=this.gFlag;a.mFlag=this.mFlag;
+a.sFlag=this.sFlag;a.ignoreCase=this.ignoreCase;a.dontMatchInQuotes=this.dontMatchInQuotes;this.optimizeMe&&a.optimize()},"com.stevesoft.pat.Regex")});p("com.stevesoft.pat");q(null,"com.stevesoft.pat.Skip",["com.stevesoft.pat.CaseMgr","$.Or","$.Skipped","$.oneChar","java.lang.StringBuffer"],function(){c$=s(function(){this.src=null;this.$offset=this.mask=this.c=0;this.m1=this.ign=!1;r(this,arguments)},com.stevesoft.pat,"Skip");c$.mkmask=d(c$,"mkmask",function(a){a=String.fromCharCode(a);return~(com.stevesoft.pat.CaseMgr.toUpperCaseC(a).charCodeAt(0)|
+com.stevesoft.pat.CaseMgr.toLowerCaseC(a).charCodeAt(0)|com.stevesoft.pat.CaseMgr.toTitleCaseC(a).charCodeAt(0))},"~N");c$.string=d(c$,"string",function(a){return null==a.skipper?null:a.skipper.src},"com.stevesoft.pat.Regex");c$.offset=d(c$,"offset",function(a){return null==a.skipper?-1:a.skipper.$offset},"com.stevesoft.pat.Regex");m(c$,function(a,b,c){this.src=a;this.c=a.charCodeAt(0);this.mask=b?com.stevesoft.pat.Skip.mkmask(this.c):0;this.$offset=c;this.ign=b;this.m1=1==a.length},"~S,~B,~N");d(c$,
+"find",function(a){return this.find(a,0,a.length())},"com.stevesoft.pat.StringLike");c$.min=d(c$,"min",function(a,b){return a<b?a:b},"~N,~N");d(c$,"find",function(a,b,c){if(b>c)return-1;b+=this.$offset;c=com.stevesoft.pat.Skip.min(a.length()-1,c+this.$offset);if(this.mask!=this.c)for(;b<=c;b++){if(0==(a.charCodeAt(b)&this.mask)&&(this.m1||com.stevesoft.pat.CaseMgr.regionMatchesLike2(a,this.ign,b,this.src,0,this.src.length)))return b-this.$offset}else for(;b<=c;b++)if(this.c==a.charCodeAt(b)&&(this.m1||
+com.stevesoft.pat.CaseMgr.regionMatchesLike2(a,this.ign,b,this.src,0,this.src.length)))return b-this.$offset;return-1},"com.stevesoft.pat.StringLike,~N,~N");c$.findSkipRegex=d(c$,"findSkipRegex",function(a){return com.stevesoft.pat.Skip.findSkip(a.thePattern,a.ignoreCase,!a.dontMatchInQuotes)},"com.stevesoft.pat.Regex");c$.findSkip=d(c$,"findSkip",function(a,b,c){for(var f=new StringBuffer,d=null,k=0,g=-1,e=0;null!=a;a=a.next){v(a,com.stevesoft.pat.oneChar)&&(g=a.c.charCodeAt(0),e=k);if(v(a,com.stevesoft.pat.oneChar)&&
+v(a.next,com.stevesoft.pat.oneChar)){d=a;for(f.append(a.c);v(a.next,com.stevesoft.pat.oneChar);)f.append(a.next.c),a=a.next;f=f.toString();g=null;g=2<f.length?new com.stevesoft.pat.SkipBMH(f,b,k):new com.stevesoft.pat.Skip2(f,b,k);c&&2<f.length&&(d.next=new com.stevesoft.pat.Skipped(f.substring(1)),d.next.next=a.next,d.next.parent=a.parent);return g}if(v(a,com.stevesoft.pat.Or)&&1==a.v.size()&&!a.leftForm().equals("(?!")&&null!=(d=com.stevesoft.pat.Skip.findSkip(a.v.elementAt(0),b,c)))return d.$offset+=
+k,d;if(a.minChars().equals(a.maxChars()))k+=a.minChars().intValue();else return 0>g?null:new com.stevesoft.pat.Skip(""+String.fromCharCode(g),b,e)}return null},"com.stevesoft.pat.Pattern,~B,~B")});p("com.stevesoft.pat");q(["com.stevesoft.pat.Pattern"],"com.stevesoft.pat.Skipped",["com.stevesoft.pat.CaseMgr","$.patInt"],function(){c$=s(function(){this.s=null;r(this,arguments)},com.stevesoft.pat,"Skipped",com.stevesoft.pat.Pattern);m(c$,function(a){t(this,com.stevesoft.pat.Skipped,[]);this.s=a},"~S");
+e(c$,"toString",function(){return this.s+this.nextString()});e(c$,"matchInternal",function(a,b){return b.no_check||com.stevesoft.pat.CaseMgr.regionMatches(this.s,b.ignoreCase,0,b.src,a,this.s.length)?this.nextMatch(a+this.s.length,b):-1},"~N,com.stevesoft.pat.Pthings");e(c$,"minChars",function(){return new com.stevesoft.pat.patInt(this.s.length)});e(c$,"maxChars",function(){return new com.stevesoft.pat.patInt(this.s.length)});e(c$,"clone1",function(){return new com.stevesoft.pat.Skipped(this.s)},
+"java.util.Hashtable")});p("com.stevesoft.pat");q(["com.stevesoft.pat.Pattern"],"com.stevesoft.pat.Start",["com.stevesoft.pat.patInt"],function(){c$=s(function(){this.retIsStart=!1;r(this,arguments)},com.stevesoft.pat,"Start",com.stevesoft.pat.Pattern);m(c$,function(a){t(this,com.stevesoft.pat.Start,[]);this.retIsStart=a},"~B");e(c$,"matchInternal",function(a,b){return this.retIsStart&&b.mFlag&&0<a&&"\n"==b.src.charAt(a-1)||0==a?this.nextMatch(a,b):-1},"~N,com.stevesoft.pat.Pthings");e(c$,"toString",
+function(){return this.retIsStart?"^"+this.nextString():"\\A"+this.nextString()});e(c$,"maxChars",function(){return new com.stevesoft.pat.patInt(0)});e(c$,"clone1",function(){return new com.stevesoft.pat.Start(this.retIsStart)},"java.util.Hashtable")});p("com.stevesoft.pat");q(null,"com.stevesoft.pat.StrPos",["com.stevesoft.pat.patInf","$.patInt"],function(){c$=s(function(){this.s=null;this.$pos=0;this.esc="\\";this.c="\x00";this.$eos=this.dontMatch=!1;r(this,arguments)},com.stevesoft.pat,"StrPos");
+d(c$,"pos",function(){return this.$pos});d(c$,"thisChar",function(){return this.c});d(c$,"eos",function(){return this.$eos});m(c$,function(a){this.dup(a)},"com.stevesoft.pat.StrPos");d(c$,"dup",function(a){this.s=a.s;this.$pos=a.$pos;this.c=a.c;this.dontMatch=a.dontMatch;this.$eos=a.$eos},"com.stevesoft.pat.StrPos");m(c$,function(a,b){this.s=a;this.$pos=b-1;this.inc()},"~S,~N");d(c$,"inc",function(){this.$pos++;if(this.$pos>=this.s.length)return this.$eos=!0,this;this.$eos=!1;this.c=this.s.charAt(this.$pos);
+this.c==this.esc&&this.$pos+1<this.s.length?(this.$pos++,this.c=this.s.charAt(this.$pos),this.dontMatch=this.c!=this.esc?!0:!1):this.dontMatch=!1;return this});d(c$,"match",function(a){return this.dontMatch||this.$eos?!1:this.c==a},"~S");d(c$,"escMatch",function(a){return!this.dontMatch||this.$eos?!1:this.c==a},"~S");d(c$,"escaped",function(){return this.dontMatch});d(c$,"incMatch",function(a){var b=new com.stevesoft.pat.StrPos(this),c;for(c=0;c<a.length;c++){if(!b.match(a.charAt(c)))return!1;b.inc()}this.dup(b);
+return!0},"~S");d(c$,"getPatInt",function(){if(this.incMatch("inf"))return new com.stevesoft.pat.patInf;var a,b=0,c=new com.stevesoft.pat.StrPos(this);for(a=0;!c.$eos&&"0"<=c.c&&"9">=c.c;a++)b=10*b+c.c.charCodeAt(0)-48,c.inc();if(0==a)return null;this.dup(c);return new com.stevesoft.pat.patInt(b)});d(c$,"getString",function(){return this.s})});p("com.stevesoft.pat");q(["com.stevesoft.pat.Or"],"com.stevesoft.pat.lookAhead",["com.stevesoft.pat.patInt"],function(){c$=s(function(){this.reverse=!1;r(this,
+arguments)},com.stevesoft.pat,"lookAhead",com.stevesoft.pat.Or);m(c$,function(a){t(this,com.stevesoft.pat.lookAhead,[]);this.reverse=a},"~B");d(c$,"getNext",function(){return null});e(c$,"nextMatch",function(a,b){var c=K(this,com.stevesoft.pat.lookAhead,"getNext",[]);return null!=c?c.matchInternal(a,b):a},"~N,com.stevesoft.pat.Pthings");d(c$,"matchInternal",function(a,b){return 0<=K(this,com.stevesoft.pat.lookAhead,"matchInternal",[a,b])?this.reverse?-1:this.nextMatch(a,b):this.reverse?this.nextMatch(a,
+b):-1},"~N,com.stevesoft.pat.Pthings");e(c$,"leftForm",function(){return this.reverse?"(?!":"(?="});e(c$,"minChars",function(){return new com.stevesoft.pat.patInt(0)});e(c$,"maxChars",function(){return new com.stevesoft.pat.patInt(0)});e(c$,"clone1",function(a){var b=new com.stevesoft.pat.lookAhead(this.reverse);a.put(this,b);a.put(b,b);for(var c=0;c<this.v.size();c++)b.v.addElement(this.v.elementAt(c).clone(a));return b},"java.util.Hashtable")});p("com.stevesoft.pat");q(null,"com.stevesoft.pat.parsePerl",
+"com.stevesoft.pat.CaseMgr $.Prop $.RegSyntaxError $.Regex $.ReplaceRule $.StringRule java.lang.StringBuffer".split(" "),function(){c$=B(com.stevesoft.pat,"parsePerl");c$.close=d(c$,"close",function(a){return"<"==a?">":"["==a?"]":"("==a?")":"{"==a?"}":a},"~S");c$.codify=d(c$,"codify",function(a,b){return com.stevesoft.pat.parsePerl.codifyRange(a,0,a.length,b)},"~S,~B");c$.codifyRange=d(c$,"codifyRange",function(a,b,c,f){for(var d=new StringBuffer,k=!1,g=!1,e=!1,j=!1,n=!1,x=!1;b<c;b++){var u=a.charAt(b),
+D=!0,m=!0;if("\\"==u&&(m=!1,b++,b<a.length)){var p=a.charAt(b);switch(p){case "Q":e=!0;break;case "U":k=!0;break;case "L":g=!0;break;case "u":j=!0;break;case "l":n=!0;break;case "E":j=n=k=g=e=!1;break;default:f&&d.append("\\"),u=p,f&&(D=!1),m=!0}x=(new Boolean(x|D)).valueOf()}m&&(n?(u=com.stevesoft.pat.parsePerl.lc(u),n=!1):j?(u=com.stevesoft.pat.parsePerl.uc(u),j=!1):k?u=com.stevesoft.pat.parsePerl.uc(u):g&&(u=com.stevesoft.pat.parsePerl.lc(u)),e&&com.stevesoft.pat.parsePerl.needbs(u)&&d.append("\\"),
+d.append(u))}return x?d.toString():a},"~S,~N,~N,~B");c$.uc=d(c$,"uc",function(a){return com.stevesoft.pat.CaseMgr.toUpperCaseC(a)},"~S");c$.lc=d(c$,"lc",function(a){return com.stevesoft.pat.CaseMgr.toLowerCaseC(a)},"~S");c$.needbs=d(c$,"needbs",function(a){return"a"<=a&&"z">=a||"A"<=a&&"Z">=a||"0"<=a&&"9">=a||"_"==a?!1:!0},"~S");c$.parse=d(c$,"parse",function(a){var b=!1,c=!1,f=!1,d=!1,k=!1,g=!1,e=new StringBuffer,j=new StringBuffer,n=0,x=0,u,D="/",m="/";if(3<=a.length&&"s"==a.charAt(0))u="s",D=a.charAt(1),
+m=com.stevesoft.pat.parsePerl.close(D),n=2;else if(2<=a.length&&"m"==a.charAt(0))u="m",D=a.charAt(1),m=com.stevesoft.pat.parsePerl.close(D),n=2;else if(1<=a.length&&"/"==a.charAt(0))u="m",n=1;else{try{com.stevesoft.pat.RegSyntaxError.endItAll("Regex.perlCode should be of the form s/// or m// or //")}catch(p){if(!y(p,com.stevesoft.pat.RegSyntax))throw p;}return null}for(;n<a.length;n++){if("\\"==a.charAt(n))e.append("\\"),n++;else if(a.charAt(n)==m&&0==x){n++;break}else a.charAt(n)==D&&m!=D?x++:a.charAt(n)==
+m&&m!=D&&x--;e.append(a.charAt(n))}if("s"==u&&m!=D){for(;n<a.length&&com.stevesoft.pat.Prop.isWhite(a.charAt(n));)n++;if(n>=a.length){try{com.stevesoft.pat.RegSyntaxError.endItAll(""+u+D+" needs "+m)}catch(q){if(!y(q,com.stevesoft.pat.RegSyntax))throw q;}return null}m=com.stevesoft.pat.parsePerl.close(D=a.charAt(n));n++}x=0;if("s"==u)for(;n<a.length;n++){if("\\"==a.charAt(n))j.append("\\"),n++;else if(a.charAt(n)==m&&0==x){n++;break}else a.charAt(n)==D&&m!=D?x++:a.charAt(n)==m&&m!=D&&x--;j.append(a.charAt(n))}for(;n<
+a.length;n++)switch(x=a.charAt(n),x){case "x":g=!0;break;case "i":b=!0;break;case "o":c=!0;break;case "s":d=!0;break;case "m":k=!0;break;case "g":f=!0;break;default:try{com.stevesoft.pat.RegSyntaxError.endItAll("Illegal flag to pattern: "+x)}catch(s){if(!y(s,com.stevesoft.pat.RegSyntax))throw s;}return null}a=new com.stevesoft.pat.Regex(null,"");try{var r=e.toString(),t=j.toString();g&&(r=com.stevesoft.pat.parsePerl.strip(r),t=com.stevesoft.pat.parsePerl.strip(t));a.compile(r);a.ignoreCase=(new Boolean(a.ignoreCase|
+b)).valueOf();a.gFlag=(new Boolean(a.gFlag|f)).valueOf();a.sFlag=(new Boolean(a.sFlag|d)).valueOf();a.mFlag=(new Boolean(a.mFlag|k)).valueOf();c&&a.optimize();"'"==D?a.setReplaceRule(new com.stevesoft.pat.StringRule(t)):a.setReplaceRule(com.stevesoft.pat.ReplaceRule.perlCode(t))}catch(v){if(y(v,com.stevesoft.pat.RegSyntax))a=null;else throw v;}return a},"~S");c$.strip=d(c$,"strip",function(a){for(var b=new StringBuffer,c=0;c<a.length;c++){var f=a.charAt(c);if(!com.stevesoft.pat.Prop.isWhite(f))if("#"==
+f)for(c++;c<a.length&&"\n"!=a.charAt(c);)c++;else"\\"==f?(b.append(f),b.append(a.charAt(++c))):b.append(f)}return b.toString()},"~S")});p("com.stevesoft.pat");q(["com.stevesoft.pat.ReplaceRule"],"com.stevesoft.pat.StringRule",null,function(){c$=s(function(){this.s=null;r(this,arguments)},com.stevesoft.pat,"StringRule",com.stevesoft.pat.ReplaceRule);m(c$,function(a){t(this,com.stevesoft.pat.StringRule,[]);this.s=a},"~S");e(c$,"apply",function(a){a.append(this.s)},"com.stevesoft.pat.StringBufferLike,com.stevesoft.pat.RegRes");
+e(c$,"toString1",function(){return this.s});e(c$,"clone1",function(){return new com.stevesoft.pat.StringRule(this.s)})});p("jalview.datamodel");q(["java.util.HashMap"],"jalview.datamodel.AlignmentAnnotation","jalview.analysis.Rna jalview.datamodel.Annotation $.GraphLine jalview.schemes.ResidueProperties java.lang.Double $.Error $.Long $.StringBuffer $.StringBuilder java.util.Collections".split(" "),function(){c$=s(function(){this.autoCalculated=!1;this._rnasecstr=this.bps=this.annotations=this.description=
+this.label=this.sequenceRef=this.annotationId=null;this.invalidrnastruc=-2;this.sequenceMapping=null;this.graphMax=this.graphMin=0;this.score=NaN;this.$hasScore=!1;this.threshold=null;this.hasText=this.hasIcons=this.editable=!1;this.visible=!0;this.graphGroup=-1;this.graph=this.height=0;this.graphHeight=40;this.padGaps=!1;this.belowAlignment=!0;this.groupRef=null;this.isrna=this.centreColLabels=this.scaleColLabel=this.showAllColLabels=!1;H("jalview.datamodel.AlignmentAnnotation.AnnotCharSequence")||
+jalview.datamodel.AlignmentAnnotation.$AlignmentAnnotation$AnnotCharSequence$();this._lastrnaannot=-1;this.calcId="";this._linecolour=this.properties=null;r(this,arguments)},jalview.datamodel,"AlignmentAnnotation");J(c$,function(){this.properties=new java.util.HashMap});d(c$,"_updateRnaSecStr",function(a){try{this._rnasecstr=jalview.analysis.Rna.GetBasePairs(a),this.bps=jalview.analysis.Rna.GetModeleBP(a),this.invalidrnastruc=-1}catch(b){if(y(b,jalview.analysis.WUSSParseException))this.invalidrnastruc=
+b.getProblemPos();else throw b;}-1<this.invalidrnastruc||(jalview.analysis.Rna.HelixMap(this._rnasecstr),null!=this._rnasecstr&&0<this._rnasecstr.length&&(this.scaleColLabel=this.showAllColLabels=this.isrna=!0,this._markRnaHelices()))},"CharSequence");d(c$,"_markRnaHelices",function(){for(var a=0,b=0;b<this._rnasecstr.length;b++){var c=0;try{c=Integer.$valueOf(this._rnasecstr[b].getFeatureGroup()).intValue(),a<c&&(a=c)}catch(f){if(!y(f,NumberFormatException))throw f;}this.annotations[this._rnasecstr[b].getBegin()].value=
+c;this.annotations[this._rnasecstr[b].getEnd()].value=c}this.setScore(a)});d(c$,"finalize",function(){this.groupRef=this.sequenceRef=null;K(this,jalview.datamodel.AlignmentAnnotation,"finalize",[])});c$.getGraphValueFromString=d(c$,"getGraphValueFromString",function(a){return a.equalsIgnoreCase("BAR_GRAPH")?1:a.equalsIgnoreCase("LINE_GRAPH")?2:0},"~S");d(c$,"ConcenStru",function(a){this.bps=jalview.analysis.Rna.GetModeleBP(a)},"CharSequence");m(c$,function(a,b,c){this.setAnnotationId();this.editable=
+!0;this.label=a;this.description=b;this.annotations=c;this.validateRangeAndDisplay()},"~S,~S,~A");d(c$,"areLabelsSecondaryStructure",function(){var a=!1;this.isrna=!1;for(var b=new StringBuffer,c=String.fromCharCode(0),f=0;f<this.annotations.length;f++)if(null!=this.annotations[f]){if("H"==this.annotations[f].secondaryStructure||"E"==this.annotations[f].secondaryStructure)this.hasIcons=(new Boolean(this.hasIcons|1)).valueOf();else if("("==this.annotations[f].secondaryStructure||"["==this.annotations[f].secondaryStructure||
+"<"==this.annotations[f].secondaryStructure||"{"==this.annotations[f].secondaryStructure||"A"==this.annotations[f].secondaryStructure||"B"==this.annotations[f].secondaryStructure||"C"==this.annotations[f].secondaryStructure||"D"==this.annotations[f].secondaryStructure||"E"==this.annotations[f].secondaryStructure||"F"==this.annotations[f].secondaryStructure||"G"==this.annotations[f].secondaryStructure||"H"==this.annotations[f].secondaryStructure||"I"==this.annotations[f].secondaryStructure||"J"==this.annotations[f].secondaryStructure||
+"K"==this.annotations[f].secondaryStructure||"L"==this.annotations[f].secondaryStructure||"M"==this.annotations[f].secondaryStructure||"N"==this.annotations[f].secondaryStructure||"O"==this.annotations[f].secondaryStructure||"P"==this.annotations[f].secondaryStructure||"Q"==this.annotations[f].secondaryStructure||"R"==this.annotations[f].secondaryStructure||"S"==this.annotations[f].secondaryStructure||"T"==this.annotations[f].secondaryStructure||"U"==this.annotations[f].secondaryStructure||"V"==this.annotations[f].secondaryStructure||
+"W"==this.annotations[f].secondaryStructure||"X"==this.annotations[f].secondaryStructure||"Y"==this.annotations[f].secondaryStructure||"Z"==this.annotations[f].secondaryStructure)this.hasIcons=(new Boolean(this.hasIcons|1)).valueOf(),this.isrna=(new Boolean(this.isrna|1)).valueOf();null==this.annotations[f].displayCharacter||0==this.annotations[f].displayCharacter.length?b.append("."):(1==this.annotations[f].displayCharacter.length?(c=this.annotations[f].displayCharacter.charAt(0)," "!=this.annotations[f].secondaryStructure&&
+!this.hasIcons&&" "!=c&&"$"!=c&&206!=c.charCodeAt(0)&&"("!=c&&"["!=c&&">"!=c&&"{"!=c&&"A"!=c&&"B"!=c&&"C"!=c&&"D"!=c&&"E"!=c&&"F"!=c&&"G"!=c&&"H"!=c&&"I"!=c&&"J"!=c&&"K"!=c&&"L"!=c&&"M"!=c&&"N"!=c&&"O"!=c&&"P"!=c&&"Q"!=c&&"R"!=c&&"S"!=c&&"T"!=c&&"U"!=c&&"V"!=c&&"W"!=c&&"X"!=c&&"Y"!=c&&"Z"!=c&&"-"!=c&&c.charCodeAt(0)<jalview.schemes.ResidueProperties.aaIndex.length&&23>jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt(0)]&&(a=!0)):b.append(this.annotations[f].displayCharacter.charAt(1)),0<this.annotations[f].displayCharacter.length&&
+(this.hasText=!0))}if(a){this.hasIcons=!1;for(a=0;a<this.annotations.length;a++)null!=this.annotations[a]&&" "!=this.annotations[a].secondaryStructure&&(this.annotations[a].displayCharacter=String.valueOf(this.annotations[a].secondaryStructure),this.annotations[a].secondaryStructure=" ")}else this.isrna&&this._updateRnaSecStr(C(jalview.datamodel.AlignmentAnnotation.AnnotCharSequence,this,null))});d(c$,"getRNAStruc",function(){if(this.isrna){var a=C(jalview.datamodel.AlignmentAnnotation.AnnotCharSequence,
+this,null).toString();this._lastrnaannot!=a.hashCode()&&(this._lastrnaannot=a.hashCode(),this._updateRnaSecStr(a));return a}return null});m(c$,function(a,b,c,f,d,k){this.setAnnotationId();this.editable=0==k;this.label=a;this.description=b;this.annotations=c;this.graph=k;this.graphMin=f;this.graphMax=d;this.validateRangeAndDisplay()},"~S,~S,~A,~N,~N,~N");d(c$,"validateRangeAndDisplay",function(){if(null==this.annotations)this.visible=!1;else{var a=this.graph,b=this.graphMin,c=this.graphMax,f=!0;this._linecolour=
+null;if(b==c){for(var b=999999999,d=0;d<this.annotations.length;d++)null!=this.annotations[d]&&(f&&(null!=this.annotations[d].displayCharacter&&1<this.annotations[d].displayCharacter.length)&&(f=!1),this.annotations[d].value>c&&(c=this.annotations[d].value),this.annotations[d].value<b&&(b=this.annotations[d].value),null==this._linecolour&&null!=this.annotations[d].colour&&(this._linecolour=this.annotations[d].colour));0<b?b=0:0>c&&(c=0)}this.graphMin=b;this.graphMax=c;this.areLabelsSecondaryStructure();
+if(!f&&0!=a)for(d=0;d<this.annotations.length;d++)null!=this.annotations[d]&&(this.annotations[d].displayCharacter="")}});m(c$,function(a){this.setAnnotationId();this.label=String.instantialize(a.label);null!=a.description&&(this.description=String.instantialize(a.description));this.graphMin=a.graphMin;this.graphMax=a.graphMax;this.graph=a.graph;this.graphHeight=a.graphHeight;this.graphGroup=a.graphGroup;this.groupRef=a.groupRef;this.editable=a.editable;this.autoCalculated=a.autoCalculated;this.hasIcons=
+a.hasIcons;this.hasText=a.hasText;this.height=a.height;this.label=a.label;this.padGaps=a.padGaps;this.visible=a.visible;this.centreColLabels=a.centreColLabels;this.scaleColLabel=a.scaleColLabel;this.showAllColLabels=a.showAllColLabels;this.calcId=a.calcId;if(null!=a.properties){this.properties=new java.util.HashMap;for(var b,c=a.properties.entrySet().iterator();c.hasNext()&&((b=c.next())||1);)this.properties.put(b.getKey(),b.getValue())}if(this.$hasScore=a.$hasScore)this.score=a.score;null!=a.threshold&&
+(this.threshold=new jalview.datamodel.GraphLine(a.threshold));b=a.annotations;if(null!=a.annotations){this.annotations=Array(b.length);for(c=0;c<b.length;c++)null!=b[c]&&(this.annotations[c]=new jalview.datamodel.Annotation(b[c]),null!=this._linecolour&&(this._linecolour=this.annotations[c].colour))}if(null!=a.sequenceRef)if(this.sequenceRef=a.sequenceRef,null!=a.sequenceMapping){var f=null;this.sequenceMapping=new java.util.HashMap;for(var d=a.sequenceMapping.keySet().iterator();d.hasNext();){var f=
+d.next(),k=a.sequenceMapping.get(f);if(null!=k&&null!=b)for(c=0;c<b.length;c++)b[c]===k&&this.sequenceMapping.put(f,this.annotations[c])}}else this.sequenceMapping=null;this.validateRangeAndDisplay()},"jalview.datamodel.AlignmentAnnotation");d(c$,"restrict",function(a,b){if(null!=this.annotations&&(0>a&&(a=0),a>=this.annotations.length&&(a=this.annotations.length-1),b>=this.annotations.length&&(b=this.annotations.length-1),null!=this.annotations)){var c=Array(b-a+1);a<this.annotations.length&&System.arraycopy(this.annotations,
+a,c,0,b-a+1);if(null!=this.sequenceRef){var f=this.sequenceRef.findPosition(a),d=this.sequenceRef.findPosition(b);if(null!=this.sequenceMapping){for(var k=new java.util.HashMap,g=this.sequenceMapping.keySet().iterator();g.hasNext();){var e=g.next();e.intValue()>=f&&e.intValue()<=d&&k.put(e,this.sequenceMapping.get(e))}this.sequenceMapping.clear();this.sequenceMapping=k}}this.annotations=c}},"~N,~N");d(c$,"padAnnotation",function(a){return null==this.annotations?!0:this.annotations.length<a?(a=Array(a),
+System.arraycopy(this.annotations,0,a,0,this.annotations.length),this.annotations=a,!0):this.annotations.length>a},"~N");e(c$,"toString",function(){for(var a=new StringBuilder(256),b=0;b<this.annotations.length;b++)null!=this.annotations[b]&&(0!=this.graph?a.append(this.annotations[b].value):this.hasIcons?a.append(this.annotations[b].secondaryStructure):a.append(this.annotations[b].displayCharacter)),a.append(", ");if(0==this.label.indexOf("Consensus")){a.append("\n");for(b=0;b<this.annotations.length;b++)null!=
+this.annotations[b]&&a.append(this.annotations[b].description),a.append(", ")}return a.toString()});d(c$,"setThreshold",function(a){this.threshold=a},"jalview.datamodel.GraphLine");d(c$,"getThreshold",function(){return this.threshold});d(c$,"createSequenceMapping",function(a,b,c){if(null!=a&&(this.sequenceRef=a,null!=this.annotations)){this.sequenceMapping=new java.util.HashMap;for(var f,d=0;d<this.annotations.length;d++)null!=this.annotations[d]&&(f=c?a.findPosition(d):d+b,this.sequenceMapping.put(new Integer(f),
+this.annotations[d]))}},"jalview.datamodel.SequenceI,~N,~B");d(c$,"adjustForAlignment",function(){if(null!=this.sequenceRef&&null!=this.annotations){var a=0,a=this.sequenceRef.getLength();if(0!=a){for(var b,c=Array(a),f,a=this.sequenceRef.getStart();a<=this.sequenceRef.getEnd();a++)f=new Integer(a),this.sequenceMapping.containsKey(f)&&(b=this.sequenceRef.findIndex(a)-1,c[b]=this.sequenceMapping.get(f));this.annotations=c}}});d(c$,"compactAnnotationArray",function(){for(var a=0,b=this.annotations.length;a<
+b;)null==this.annotations[a]?(a+1<b&&System.arraycopy(this.annotations,a+1,this.annotations,a,b-a-1),b--):a++;var c=this.annotations;this.annotations=Array(a);System.arraycopy(c,0,this.annotations,0,a);return b});d(c$,"setSequenceRef",function(a){if(null!=a)if(null!=this.sequenceRef){var b=null==this.sequenceRef.getDatasetSequence(),c=null==a.getDatasetSequence();this.sequenceRef!==a&&b&&!c&&this.sequenceRef!==a.getDatasetSequence()&&!b&&c&&this.sequenceRef.getDatasetSequence()!==a&&!b&&(!c&&this.sequenceRef.getDatasetSequence()!==
+a.getDatasetSequence())&&!this.sequenceRef.equals(a)?(this.sequenceRef=null,null!=this.sequenceMapping&&(this.sequenceMapping=null),this.createSequenceMapping(a,1,!0),this.adjustForAlignment()):this.sequenceRef=a}else this.createSequenceMapping(a,1,!0),this.adjustForAlignment();else this.sequenceRef=this.sequenceMapping=null},"jalview.datamodel.SequenceI");d(c$,"getScore",function(){return this.score});d(c$,"setScore",function(a){this.$hasScore=!0;this.score=a},"~N");d(c$,"hasScore",function(){return this.$hasScore||
+!Double.isNaN(this.score)});m(c$,function(a,b,c){this.construct(a,b,null);this.setScore(c)},"~S,~S,~N");m(c$,function(a,b){this.construct(a);null!=this.annotations&&b.makeVisibleAnnotation(this)},"jalview.datamodel.AlignmentAnnotation,jalview.datamodel.ColumnSelection");d(c$,"setPadGaps",function(a,b){if(this.padGaps=a){this.hasText=!0;for(var c=0;c<this.annotations.length;c++)if(null==this.annotations[c])this.annotations[c]=new jalview.datamodel.Annotation(String.valueOf(b),null," ",0,null);else if(null==
+this.annotations[c].displayCharacter||this.annotations[c].displayCharacter.equals(" "))this.annotations[c].displayCharacter=String.valueOf(b)}},"~B,~S");d(c$,"getDescription",function(a){return a&&null!=this.sequenceRef?(a=this.description.toLowerCase().indexOf("<html>"),-1<a?"<html>"+this.sequenceRef.getName()+" : "+this.description.substring(a+6):this.sequenceRef.getName()+" : "+this.description):this.description},"~B");d(c$,"isValidStruc",function(){return-1==this.invalidrnastruc});d(c$,"getInvalidStrucPos",
+function(){return this.invalidrnastruc});d(c$,"getCalcId",function(){return this.calcId});d(c$,"setCalcId",function(a){this.calcId=a},"~S");d(c$,"isRNA",function(){return this.isrna});d(c$,"liftOver",function(a,b){if(b.getMappedWidth()!=b.getWidth())throw Error("liftOver currently not implemented for transfer of annotation between different types of seqeunce");var c=null!=b?b.getTo()===a||b.getTo()===a.getDatasetSequence():!1,f=new java.util.HashMap;if(null!=this.sequenceMapping&&null!=b){for(var d,
+k=this.sequenceMapping.entrySet().iterator();k.hasNext()&&((d=k.next())||1);){var g=Integer.$valueOf(c?b.getMappedPosition(d.getKey().intValue()):b.getPosition(d.getKey().intValue()));g.intValue()>=a.getStart()&&g.intValue()<=a.getEnd()&&f.put(g,d.getValue())}this.sequenceMapping=f;this.sequenceRef=a;this.adjustForAlignment()}},"jalview.datamodel.SequenceI,jalview.datamodel.Mapping");d(c$,"remap",function(a,b,c,f,d){if(null!=b){for(var k=this.sequenceMapping,g=new java.util.HashMap,e=-1,j,n=0;n<b.length&&
+((j=b[n])||1);n++)if(!(0>e++)){var x=null;-1==c?x=this.sequenceMapping.get(Integer.$valueOf(d+e)):null!=j&&j.length>c&&(x=this.sequenceMapping.get(Integer.$valueOf(j[c])));null!=x&&(-1==f?g.put(Integer.$valueOf(d+e),x):-1<f&&f<j.length&&g.put(Integer.$valueOf(j[f]),x))}this.sequenceMapping=g;k.clear();null!=a&&(this.sequenceRef=a);this.adjustForAlignment()}},"jalview.datamodel.SequenceI,~A,~N,~N,~N");d(c$,"getProperty",function(a){return null==this.properties?null:this.properties.get(a)},"~S");d(c$,
+"setProperty",function(a,b){null==this.properties&&(this.properties=new java.util.HashMap);this.properties.put(a,b)},"~S,~S");d(c$,"hasProperties",function(){return null!=this.properties&&0<this.properties.size()});d(c$,"getProperties",function(){return null==this.properties?java.util.Collections.emptyList():this.properties.keySet()});d(c$,"getAnnotationForPosition",function(a){return null==this.sequenceMapping?null:this.sequenceMapping.get(new Integer(a))},"~N");d(c$,"setAnnotationId",function(){this.annotationId=
+"ann"+Long.toString(jalview.datamodel.AlignmentAnnotation.nextId())});c$.nextId=d(c$,"nextId",function(){return jalview.datamodel.AlignmentAnnotation.counter++});c$.$AlignmentAnnotation$AnnotCharSequence$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.max=this.offset=0;r(this,arguments)},jalview.datamodel.AlignmentAnnotation,"AnnotCharSequence",null,CharSequence);m(c$,function(){this.construct(0,this.b$["jalview.datamodel.AlignmentAnnotation"].annotations.length)});m(c$,function(a,b){this.offset=
+a;this.max=b},"~N,~N");e(c$,"subSequence",function(a,b){return C(jalview.datamodel.AlignmentAnnotation.AnnotCharSequence,this,null,this.offset+a,this.offset+b)},"~N,~N");e(c$,"length",function(){return this.max-this.offset});e(c$,"charAt",function(a){return 0>a+this.offset||a+this.offset>=this.max||null==this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a+this.offset]||" ">=this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a+this.offset].secondaryStructure?" ":null==this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a+
+this.offset].displayCharacter||0==this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a+this.offset].displayCharacter.length?this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a+this.offset].secondaryStructure:this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[a+this.offset].displayCharacter.charAt(0)},"~N");e(c$,"toString",function(){for(var a=N(this.max-this.offset,"\x00"),b=this.b$["jalview.datamodel.AlignmentAnnotation"].annotations.length,c=this.offset;c<b;c++)a[c]=
+null==this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c]||32>=this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].secondaryStructure.charCodeAt(0)?" ":null==this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].displayCharacter||0==this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].displayCharacter.length?this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].secondaryStructure:this.b$["jalview.datamodel.AlignmentAnnotation"].annotations[c].displayCharacter.charAt(0);
+return String.instantialize(a)});c$=z()};G(c$,"ANNOTATION_ID_PREFIX","ann","SEQUENCE_PROFILE",0,"STRUCTURE_PROFILE",1,"CDNA_PROFILE",2,"counter",0,"NO_GRAPH",0,"BAR_GRAPH",1,"LINE_GRAPH",2)});p("jalview.analysis");q(["java.util.Arrays","$.HashSet","$.Hashtable"],"jalview.analysis.Rna","jalview.analysis.SecStrConsensus $.WUSSParseException jalview.datamodel.SequenceFeature jalview.util.MessageManager java.lang.StringBuffer java.util.ArrayList $.Stack $.Vector".split(" "),function(){c$=B(jalview.analysis,
+"Rna");c$.isOpeningParenthesis=d(c$,"isOpeningParenthesis",function(a){return jalview.analysis.Rna.openingParsSet.contains((new Character(a)).charCodeAt(0))},"~S");c$.isClosingParenthesis=d(c$,"isClosingParenthesis",function(a){return jalview.analysis.Rna.closingParsSet.contains((new Character(a)).charCodeAt(0))},"~S");c$.matchingOpeningParenthesis=d(c$,"matchingOpeningParenthesis",function(a){if(!jalview.analysis.Rna.isClosingParenthesis(a))throw new jalview.analysis.WUSSParseException(jalview.util.MessageManager.formatMessage("exception.querying_matching_opening_parenthesis_for_non_closing_parenthesis",
+E(-1,[(new StringBuffer(a.charCodeAt(0))).toString()])),-1);return String.fromCharCode(jalview.analysis.Rna.closingToOpening.get((new Character(a)).charCodeAt(0)))},"~S");c$.GetSimpleBPs=d(c$,"GetSimpleBPs",function(a){for(var c=new java.util.Hashtable,f=new java.util.Vector,d=0;d<a.length;){var k=a.charAt(d);if(jalview.analysis.Rna.isOpeningParenthesis(k))c.containsKey((new Character(k)).charCodeAt(0))||c.put((new Character(k)).charCodeAt(0),new java.util.Stack),c.get((new Character(k)).charCodeAt(0)).push(new Integer(d));
+else if(jalview.analysis.Rna.isClosingParenthesis(k)){var g=jalview.analysis.Rna.matchingOpeningParenthesis(k);if(!c.containsKey((new Character(g)).charCodeAt(0)))throw new jalview.analysis.WUSSParseException(jalview.util.MessageManager.formatMessage("exception.mismatched_unseen_closing_char",E(-1,[(new StringBuffer(k.charCodeAt(0))).toString()])),d);var e=c.get((new Character(g)).charCodeAt(0));if(e.isEmpty())throw new jalview.analysis.WUSSParseException(jalview.util.MessageManager.formatMessage("exception.mismatched_closing_char",
+E(-1,[(new StringBuffer(k.charCodeAt(0))).toString()])),d);e=e.pop().intValue();f.add(new jalview.analysis.SecStrConsensus.SimpleBP(e,d))}d++}for(a=c.keySet().iterator();a.hasNext()&&((g=a.next())||1);)if(e=c.get((new Character(g)).charCodeAt(0)),!e.empty())throw new jalview.analysis.WUSSParseException(jalview.util.MessageManager.formatMessage("exception.mismatched_opening_char",E(-1,[(new StringBuffer(g.charCodeAt(0))).toString(),Integer.$valueOf(e.pop().intValue()).toString()])),d);return f},"CharSequence");
+c$.GetBasePairs=d(c$,"GetBasePairs",function(a){a=jalview.analysis.Rna.GetSimpleBPs(a);for(var c=Array(a.size()),f=0;f<a.size();f++){var d=a.elementAt(f);c[f]=new jalview.datamodel.SequenceFeature("RNA helix","","",d.getBP5(),d.getBP3(),"")}return c},"CharSequence");c$.GetModeleBP=d(c$,"GetModeleBP",function(a){a=jalview.analysis.Rna.GetSimpleBPs(a);return new java.util.ArrayList(a)},"CharSequence");c$.HelixMap=d(c$,"HelixMap",function(a){for(var c=0,f=0,d=9999999,k=a.length,g,e,j=new java.util.Hashtable,
+k=0;k<a.length;k++){g=a[k].getBegin();e=a[k].getEnd();g>d&&c++;for(d=a.length-1;0<=d;){var n=a[d].getBegin();if(n<f&&n>g)if(j.containsValue(new Integer(n))&&j.get(new Integer(n)).intValue()===c)continue;else{c++;break}d-=1}j.put(new Integer(g),new Integer(c));j.put(new Integer(e),new Integer(c));a[k].setFeatureGroup(Integer.toString(c));f=g;d=e}},"~A");c$.pairHash=c$.prototype.pairHash=new java.util.Hashtable;G(c$,"openingPars",E(-1,[new Character("("),new Character("["),new Character("{"),new Character("<"),
+new Character("A"),new Character("B"),new Character("C"),new Character("D"),new Character("E"),new Character("F"),new Character("G"),new Character("H"),new Character("I"),new Character("J"),new Character("K"),new Character("L"),new Character("M"),new Character("N"),new Character("O"),new Character("P"),new Character("Q"),new Character("R"),new Character("S"),new Character("T"),new Character("U"),new Character("V"),new Character("W"),new Character("X"),new Character("Y"),new Character("Z")]),"closingPars",
+E(-1,[new Character(")"),new Character("]"),new Character("}"),new Character(">"),new Character("a"),new Character("b"),new Character("c"),new Character("d"),new Character("e"),new Character("f"),new Character("g"),new Character("h"),new Character("i"),new Character("j"),new Character("k"),new Character("l"),new Character("m"),new Character("n"),new Character("o"),new Character("p"),new Character("q"),new Character("r"),new Character("s"),new Character("t"),new Character("u"),new Character("v"),new Character("w"),
+new Character("x"),new Character("y"),new Character("z")]));c$.openingParsSet=c$.prototype.openingParsSet=new java.util.HashSet(java.util.Arrays.asList(jalview.analysis.Rna.openingPars));c$.closingParsSet=c$.prototype.closingParsSet=new java.util.HashSet(java.util.Arrays.asList(jalview.analysis.Rna.closingPars));c$.closingToOpening=c$.prototype.closingToOpening=new java.util.Hashtable;for(var a=0;a<jalview.analysis.Rna.openingPars.length;a++)jalview.analysis.Rna.closingToOpening.put(jalview.analysis.Rna.closingPars[a],
+jalview.analysis.Rna.openingPars[a])});p("jalview.analysis");q(null,"jalview.analysis.SecStrConsensus",["java.util.ArrayList","$.Hashtable"],function(){c$=B(jalview.analysis,"SecStrConsensus");c$.extractConsensus=d(c$,"extractConsensus",function(a){for(var b=0,c,f=a.iterator();f.hasNext()&&((c=f.next())||1);)for(var d,k=c.iterator();k.hasNext()&&((d=k.next())||1);)b=Math.max(1+Math.max(d.bp5,d.bp3),b);for(var g=new java.util.ArrayList,e=0;e<b;e++)g.add(new java.util.Hashtable);for(f=a.iterator();f.hasNext()&&
+((c=f.next())||1);)for(k=c.iterator();k.hasNext()&&((d=k.next())||1);)e=d.bp5,a=d.bp3,e=g.get(e),e.containsKey(new Integer(a))||e.put(new Integer(a),new Double(0)),e.put(new Integer(a),new Double(e.get(new Integer(a)).doubleValue()+1));k=jalview.analysis.SecStrConsensus.fillMatrix(g);k=jalview.analysis.SecStrConsensus.backtrack(k,g);c=w(g.size(),0);for(e=0;e<g.size();e++)c[e]=-1;for(k=k.iterator();k.hasNext()&&((d=k.next())||1);)c[d.bp5]=d.bp3,c[d.bp3]=d.bp5;return c},"java.util.ArrayList");c$.canBasePair=
+d(c$,"canBasePair",function(a,b,c){return a.get(b).containsKey(new Integer(c))},"java.util.ArrayList,~N,~N");c$.basePairScore=d(c$,"basePairScore",function(a,b,c){return a.get(b).get(new Integer(c))},"java.util.ArrayList,~N,~N");c$.fillMatrix=d(c$,"fillMatrix",function(a){for(var b=a.size(),c=U(b,b,0),f=1;f<=b;f++)for(var d=0;d<b-f+1;d++){var k=d+f-1;c[d][k]=0;if(d<k){c[d][k]=Math.max(c[d][k],c[d+1][k]);for(var g=d+1;g<=k;g++)if(jalview.analysis.SecStrConsensus.canBasePair(a,d,g)){var e=0;g>d+1&&
+(e=c[d+1][g-1]);var j=0;g<k&&(j=c[g+1][k]);c[d][k]=Math.max(c[d][k],jalview.analysis.SecStrConsensus.basePairScore(a,d,g)+e+j)}}}return c},"java.util.ArrayList");c$.backtrack=d(c$,"backtrack",function(a,b){return jalview.analysis.SecStrConsensus.backtrack(a,b,0,b.size()-1)},"~A,java.util.ArrayList");c$.backtrack=d(c$,"backtrack",function(a,b,c,f){var d=new java.util.ArrayList;if(c<f){var k=new java.util.ArrayList;k.add(new Integer(-1));for(var g=c+1;g<=f;g++)k.add(new Integer(g));for(k=k.iterator();k.hasNext()&&
+((g=k.next())||1);)if(-1==g)a[c][f]==a[c+1][f]&&(d=jalview.analysis.SecStrConsensus.backtrack(a,b,c+1,f));else if(jalview.analysis.SecStrConsensus.canBasePair(b,c,g)){var e=0;g>c+1&&(e=a[c+1][g-1]);var j=0;g<f&&(j=a[g+1][f]);a[c][f]==jalview.analysis.SecStrConsensus.basePairScore(b,c,g)+e+j&&(d=jalview.analysis.SecStrConsensus.backtrack(a,b,c+1,g-1),d.addAll(jalview.analysis.SecStrConsensus.backtrack(a,b,g+1,f)),d.add(new jalview.analysis.SecStrConsensus.SimpleBP(c,g)))}}return d},"~A,java.util.ArrayList,~N,~N");
+A(self.c$);c$=s(function(){this.bp3=this.bp5=0;r(this,arguments)},jalview.analysis.SecStrConsensus,"SimpleBP");m(c$,function(){});m(c$,function(a,b){this.bp5=a;this.bp3=b},"~N,~N");d(c$,"setBP5",function(a){this.bp5=a},"~N");d(c$,"setBP3",function(a){this.bp3=a},"~N");d(c$,"getBP5",function(){return this.bp5});d(c$,"getBP3",function(){return this.bp3});e(c$,"toString",function(){return"("+this.bp5+","+this.bp3+")"});c$=z()});p("jalview.analysis");q(["java.lang.Exception"],"jalview.analysis.WUSSParseException",
+null,function(){c$=s(function(){this.problemPos=0;r(this,arguments)},jalview.analysis,"WUSSParseException",Exception);m(c$,function(a){this.construct("Invalid WUSS Notation",a)},"~N");m(c$,function(a,b){t(this,jalview.analysis.WUSSParseException,[a+" at or near position "+b]);this.problemPos=b},"~S,~N");d(c$,"getProblemPos",function(){return this.problemPos})});q(["java.util.Vector"],"java.util.Stack",["java.util.EmptyStackException"],function(){c$=B(java.util,"Stack",java.util.Vector);d(c$,"empty",
+function(){return 0==this.elementCount});d(c$,"peek",function(){try{return this.elementData[this.elementCount-1]}catch(a){if(v(a,IndexOutOfBoundsException))throw new java.util.EmptyStackException;throw a;}});d(c$,"pop",function(){try{var a=this.elementCount-1,b=this.elementData[a];this.removeElementAt(a);return b}catch(c){if(v(c,IndexOutOfBoundsException))throw new java.util.EmptyStackException;throw c;}});d(c$,"push",function(a){this.addElement(a);return a},"~O");d(c$,"search",function(a){a=this.lastIndexOf(a);
+return 0<=a?this.elementCount-a:-1},"~O")});p("jalview.datamodel");q(null,"jalview.datamodel.Annotation",["java.lang.Float","$.StringBuffer"],function(){c$=s(function(){this.description=this.displayCharacter="";this.secondaryStructure=" ";this.value=0;this.colour=null;r(this,arguments)},jalview.datamodel,"Annotation");m(c$,function(a,b,c,f){this.displayCharacter=a;this.description=b;this.secondaryStructure=c;this.value=f},"~S,~S,~S,~N");m(c$,function(a,b,c,f,d){this.construct(a,b,c,f);this.colour=
+d},"~S,~S,~S,~N,java.awt.Color");m(c$,function(a){null==a||this===a||(null!=a.displayCharacter&&(this.displayCharacter=String.instantialize(a.displayCharacter)),null!=a.description&&(this.description=String.instantialize(a.description)),this.secondaryStructure=a.secondaryStructure,this.value=a.value,this.colour=a.colour)},"jalview.datamodel.Annotation");m(c$,function(a){this.construct(null,null," ",a,null)},"~N");e(c$,"toString",function(){var a=new StringBuffer;null!=this.displayCharacter&&(a.append("'"),
+a.append(this.displayCharacter),a.append("'"));a.append(",");0!=this.secondaryStructure.charCodeAt(0)&&!(""+this.displayCharacter).equals(""+this.secondaryStructure)&&(a.append("'"),a.append(this.secondaryStructure),a.append("'"));a.append(",");null!=this.description&&0<this.description.length&&(a.append('"'),a.append(this.description),a.append('"'));a.append(",");Float.isNaN(this.value)||a.append(this.value);null!=this.colour&&(0<a.length()&&a.append(","),a.append("["),a.append(""+this.colour.getRed()),
+a.append(","),a.append(""+this.colour.getGreen()),a.append(","),a.append(""+this.colour.getBlue()),a.append("]"));return a.toString()})});p("jalview.datamodel");q(["java.awt.Color"],"jalview.datamodel.GraphLine",null,function(){c$=s(function(){this.value=0;this.label="";this.colour=null;this.displayed=!0;r(this,arguments)},jalview.datamodel,"GraphLine");J(c$,function(){this.colour=java.awt.Color.black});m(c$,function(a,b,c){this.value=a;null!=b&&(this.label=b);null!=c&&(this.colour=c)},"~N,~S,java.awt.Color");
+m(c$,function(a){null!=a&&(this.value=a.value,this.label=String.instantialize(a.label),this.colour=a.colour,this.displayed=a.displayed)},"jalview.datamodel.GraphLine");e(c$,"equals",function(a){return null!=a&&v(a,jalview.datamodel.GraphLine)?this.displayed==a.displayed&&this.value==a.value&&(null!=this.colour?null!=a.colour&&a.colour.equals(this.colour):null==a.colour)&&(null!=this.label?null!=a.label&&a.label.equals(this.label):null==a.label):!1},"~O")});p("jalview.datamodel");q(null,"jalview.datamodel.DBRefEntry",
+["jalview.datamodel.Mapping"],function(){c$=s(function(){this.accessionId=this.version=this.source="";this.map=null;r(this,arguments)},jalview.datamodel,"DBRefEntry");m(c$,function(){});m(c$,function(a,b,c){this.construct(a,b,c,null)},"~S,~S,~S");m(c$,function(a,b,c,f){this.source=a.toUpperCase();this.version=b;this.accessionId=c;this.map=f},"~S,~S,~S,jalview.datamodel.Mapping");m(c$,function(a){this.construct(null==a.source?"":String.instantialize(a.source),null==a.version?"":String.instantialize(a.version),
+null==a.accessionId?"":String.instantialize(a.accessionId),null==a.map?null:new jalview.datamodel.Mapping(a.map))},"jalview.datamodel.DBRefEntry");e(c$,"equals",function(a){return null==a||!v(a,jalview.datamodel.DBRefEntry)?!1:a===this||this.equalRef(a)&&(null==this.map&&null==a.map||null!=this.map&&null!=a.map&&this.map.equals(a.map))?!0:!1},"~O");d(c$,"equalRef",function(a){return null==a?!1:a===this||null!=this.source&&null!=a.source&&this.source.equalsIgnoreCase(a.source)&&null!=this.accessionId&&
+null!=a.accessionId&&this.accessionId.equalsIgnoreCase(a.accessionId)&&null!=this.version&&null!=a.version&&this.version.equalsIgnoreCase(a.version)?!0:!1},"jalview.datamodel.DBRefEntry");d(c$,"getSource",function(){return this.source});d(c$,"getVersion",function(){return this.version});d(c$,"getAccessionId",function(){return this.accessionId});d(c$,"setAccessionId",function(a){this.accessionId=a},"~S");d(c$,"setSource",function(a){this.source=a},"~S");d(c$,"setVersion",function(a){this.version=a},
+"~S");d(c$,"getMap",function(){return this.map});d(c$,"setMap",function(a){this.map=a},"jalview.datamodel.Mapping");d(c$,"hasMap",function(){return null!=this.map});d(c$,"getSrcAccString",function(){return(null!=this.source?this.source:"")+":"+(null!=this.accessionId?this.accessionId:"")});e(c$,"toString",function(){return this.getSrcAccString()})});p("jalview.datamodel");c$=B(jalview.datamodel,"DBRefSource");G(c$,"UNIPROT","UNIPROT");c$.UP_NAME=c$.prototype.UP_NAME="UNIPROT_NAME";c$.UNIPROTKB=c$.prototype.UNIPROTKB=
+"UNIPROTKB/TREMBL";c$.EMBLCDSProduct=c$.prototype.EMBLCDSProduct="EMBLCDSPROTEIN";G(c$,"PDB","PDB","EMBL","EMBL","EMBLCDS","EMBLCDS","PFAM","PFAM","RFAM","RFAM");c$.GENEDB=c$.prototype.GENEDB="GENEDB";c$.DNACODINGDBS=c$.prototype.DNACODINGDBS=E(-1,[jalview.datamodel.DBRefSource.EMBL,jalview.datamodel.DBRefSource.EMBLCDS,jalview.datamodel.DBRefSource.GENEDB]);c$.CODINGDBS=c$.prototype.CODINGDBS=E(-1,[jalview.datamodel.DBRefSource.EMBLCDS,jalview.datamodel.DBRefSource.GENEDB]);c$.PROTEINDBS=c$.prototype.PROTEINDBS=
+E(-1,[jalview.datamodel.DBRefSource.UNIPROT,jalview.datamodel.DBRefSource.PDB,jalview.datamodel.DBRefSource.UNIPROTKB,jalview.datamodel.DBRefSource.EMBLCDSProduct]);c$.PROTEINSEQ=c$.prototype.PROTEINSEQ=E(-1,[jalview.datamodel.DBRefSource.UNIPROT,jalview.datamodel.DBRefSource.UNIPROTKB,jalview.datamodel.DBRefSource.EMBLCDSProduct]);c$.PROTEINSTR=c$.prototype.PROTEINSTR=E(-1,[jalview.datamodel.DBRefSource.PDB]);c$.DOMAINDBS=c$.prototype.DOMAINDBS=E(-1,[jalview.datamodel.DBRefSource.PFAM,jalview.datamodel.DBRefSource.RFAM]);
+G(c$,"SEQDB","SQ","DNASEQDB","NASQ","PROTSEQDB","PROTSQ","CODINGSEQDB","CODING","DNACODINGSEQDB","XONCODING","DOMAINDB","DOMAIN","MULTIACC","MULTIACC","ALIGNMENTDB","ALIGNMENTS");p("jalview.datamodel");q(["java.lang.Enum"],"jalview.datamodel.PDBEntry",null,function(){c$=s(function(){this.properties=this.chainCode=this.id=this.type=this.file=null;r(this,arguments)},jalview.datamodel,"PDBEntry");e(c$,"equals",function(a){return null==a||!v(a,jalview.datamodel.PDBEntry)?!1:a===this?!0:(this.type===a.type||
+null!=this.type&&null!=a.type&&a.type.equals(this.type))&&(this.id===a.id||null!=this.id&&null!=a.id&&a.id.equalsIgnoreCase(this.id))&&(this.chainCode===a.chainCode||null!=this.chainCode&&null!=a.chainCode&&a.chainCode.equalsIgnoreCase(this.chainCode))&&(this.properties===a.properties||null!=this.properties&&null!=a.properties&&this.properties.equals(a.properties))},"~O");m(c$,function(){});m(c$,function(a,b,c,f){this.id=a;this.chainCode=b;this.type=null==c?null:c.toString();this.file=f},"~S,~S,jalview.datamodel.PDBEntry.Type,~S");
+m(c$,function(a){this.file=a.file;this.type=a.type;this.id=a.id;this.chainCode=a.chainCode;null!=a.properties&&(this.properties=a.properties.clone())},"jalview.datamodel.PDBEntry");d(c$,"setFile",function(a){this.file=a},"~S");d(c$,"getFile",function(){return this.file});d(c$,"setType",function(a){this.type=a},"~S");d(c$,"setType",function(a){this.type=null==a?null:a.toString()},"jalview.datamodel.PDBEntry.Type");d(c$,"getType",function(){return this.type});d(c$,"setId",function(a){this.id=a},"~S");
+d(c$,"getId",function(){return this.id});d(c$,"setProperty",function(a){this.properties=a},"java.util.Hashtable");d(c$,"getProperty",function(){return this.properties});d(c$,"getChainCode",function(){return this.chainCode});d(c$,"setChainCode",function(a){this.chainCode=a},"~S");A(self.c$);c$=B(jalview.datamodel.PDBEntry,"Type",Enum);R(c$,"PDB",0,[]);R(c$,"FILE",1,[]);c$=z()});p("jalview.util");q(["java.util.regex.Pattern"],"jalview.util.StringUtils",["java.lang.StringBuffer","java.util.ArrayList"],
+function(){c$=B(jalview.util,"StringUtils");c$.insertCharAt=d(c$,"insertCharAt",function(a,b,c,f){var d=N(a.length+c,"\x00");b>=a.length?(System.arraycopy(a,0,d,0,a.length),b=a.length):System.arraycopy(a,0,d,0,b);for(var k=b;0<c;)d[k++]=f,c--;b<a.length&&System.arraycopy(a,b,d,k,a.length-b);return d},"~A,~N,~N,~S");c$.deleteChars=d(c$,"deleteChars",function(a,b,c){if(b>=a.length||0>b)return a;var f;c>=a.length?(f=N(b,"\x00"),System.arraycopy(a,0,f,0,b)):(f=N(a.length-c+b,"\x00"),System.arraycopy(a,
+0,f,0,b),System.arraycopy(a,c,f,b,a.length-c));return f},"~A,~N,~N");c$.getLastToken=d(c$,"getLastToken",function(a,b){if(null==a)return null;if(null==b)return a;var c=a.$plit(b);return c[c.length-1]},"~S,~S");c$.separatorListToArray=d(c$,"separatorListToArray",function(a,b){var c=b.length;if(null==a||a.equals("")||a.equals(b))return null;for(var f=new java.util.ArrayList,d=0,k,g,e=!1,j=!1,n=null;(k=a.indexOf(b,d))>=d;)g=0<k&&"\\"==a.charAt(k-1)?-1:0,e||j?f.set(f.size()-1,n=n+b+a.substring(d,k+g)):
+f.add(n=a.substring(d,k+g)),d=k+c,e=-1==g,j=jalview.util.StringUtils.DELIMITERS_PATTERN.matcher(n).matches();d<a.length&&(c=a.substring(d),e||j?f.set(f.size()-1,n+b+c):c.equals(b)||f.add(c));return 0<f.size()?(e=f.toArray(Array(f.size())),f.clear(),e):null},"~S,~S");c$.arrayToSeparatorList=d(c$,"arrayToSeparatorList",function(a,b){var c=new StringBuffer;if(null!=a&&0<a.length){for(var f=0,d=a.length;f<d;f++)null!=a[f]&&(0<c.length()&&c.append(b),c.append(a[f]));return c.toString()}return""+b},"~A,~S");
+c$.DELIMITERS_PATTERN=c$.prototype.DELIMITERS_PATTERN=java.util.regex.Pattern.compile(".*='[^']*(?!')");G(c$,"DEBUG",!1)});p("java.util.regex");q(null,"java.util.regex.Pattern",["java.lang.IllegalArgumentException","$.StringBuffer","java.util.regex.Matcher"],function(){c$=s(function(){this.$flags=0;this.regexp=null;r(this,arguments)},java.util.regex,"Pattern",null,java.io.Serializable);d(c$,"matcher",function(a){return new java.util.regex.Matcher(this,a)},"CharSequence");d(c$,"split",function(a,b){var c=
+[],f=this.matcher(a),d=0,k=0;if(0==a.length())return[""];for(;f.find()&&(d+1<b||0>=b);)c[c.length]=a.subSequence(k,f.start()).toString(),k=f.end(),d++;c[c.length]=a.subSequence(k,a.length()).toString();d++;if(0==b)for(;0<=--d&&0==c[d].toString().length;)c.length--;return c},"CharSequence,~N");d(c$,"split",function(a){return this.split(a,0)},"CharSequence");d(c$,"pattern",function(){return this.regexp.source});d(c$,"toString",function(){return this.pattern()});d(c$,"flags",function(){return this.$flags});
+c$.compile=d(c$,"compile",function(a,b){if(0!=b&&239!=(b|239))throw new IllegalArgumentException("Illegal flags");var c="g";0!=(b&8)&&(c+="m");0!=(b&2)&&(c+="i");var f=new java.util.regex.Pattern;f.regexp=RegExp(a,c);return f},"~S,~N");c$.compile=d(c$,"compile",function(a){return java.util.regex.Pattern.compile(a,0)},"~S");c$.matches=d(c$,"matches",function(a,b){return java.util.regex.Pattern.compile(a).matcher(b).matches()},"~S,CharSequence");c$.quote=d(c$,"quote",function(a){for(var b=(new StringBuffer).append("\\Q"),
+c=0,f;0<=(f=a.indexOf("\\E",c));)b.append(a.substring(c,f+2)).append("\\\\E\\Q"),c=f+2;return b.append(a.substring(c)).append("\\E").toString()},"~S");m(c$,($fz=function(){},$fz.isPrivate=!0,$fz));G(c$,"UNIX_LINES",1,"CASE_INSENSITIVE",2,"COMMENTS",4,"MULTILINE",8,"LITERAL",16,"DOTALL",32,"UNICODE_CASE",64,"CANON_EQ",128,"flagsBitMask",239)});p("java.util.regex");q(["java.util.regex.MatchResult"],"java.util.regex.Matcher",["java.lang.IllegalArgumentException","$.IndexOutOfBoundsException","$.NullPointerException",
+"$.StringBuffer"],function(){c$=s(function(){this.string=this.pat=null;this.rightBound=this.leftBound=-1;this.appendPos=0;this.results=this.replacementParts=this.processedRepl=this.replacement=null;r(this,arguments)},java.util.regex,"Matcher",null,java.util.regex.MatchResult);d(c$,"appendReplacement",function(a,b){this.processedRepl=this.processReplacement(b);a.append(this.string.subSequence(this.appendPos,this.start()));a.append(this.processedRepl);this.appendPos=this.end();return this},"StringBuffer,~S");
+d(c$,"processReplacement",($fz=function(a){if(null!=this.replacement&&this.replacement.equals(a)){if(null==this.replacementParts)return this.processedRepl;for(var b=new StringBuffer,c=0;c<this.replacementParts.length;c++)b.append(this.replacementParts[c]);return b.toString()}this.replacement=a;a=a.toCharArray();var f=new StringBuffer;this.replacementParts=null;for(var d=0,k=0,g=!1;d<a.length;){92==a[d].charCodeAt(0)&&!g&&(g=!0,d++);if(g)f.append(a[d]),g=!1;else if(36==a[d].charCodeAt(0)){null==this.replacementParts&&
+(this.replacementParts=[]);try{b=Integer.parseInt(String.instantialize(a,++d,1)),k!=f.length()&&(this.replacementParts[this.replacementParts.length]=f.subSequence(k,f.length()),k=f.length()),this.replacementParts[this.replacementParts.length]=(H("java.util.regex.Matcher$1")?0:java.util.regex.Matcher.$Matcher$1$(),C(java.util.regex.Matcher$1,this,null)),c=this.group(b),k+=c.length,f.append(c)}catch(e){if(v(e,IndexOutOfBoundsException))throw e;if(v(e,Exception))throw new IllegalArgumentException("Illegal regular expression format");
+throw e;}}else f.append(a[d]);d++}null!=this.replacementParts&&k!=f.length()&&(this.replacementParts[this.replacementParts.length]=f.subSequence(k,f.length()));return f.toString()},$fz.isPrivate=!0,$fz),"~S");d(c$,"reset",function(a){if(null==a)throw new NullPointerException("Empty new sequence!");this.string=a;return this.reset()},"CharSequence");d(c$,"reset",function(){this.leftBound=0;this.rightBound=this.string.length();this.appendPos=0;this.replacement=null;this.pat.regexp=RegExp(this.pat.regexp.source,
+""+(this.pat.regexp.ignoreCase?"i":"")+(this.pat.regexp.global?"g":"")+(this.pat.regexp.multiline?"m":""));return this});d(c$,"region",function(a,b){if(a>b||0>a||0>b||a>this.string.length()||b>this.string.length())throw new IndexOutOfBoundsException(a+" is out of bound of "+b);this.leftBound=a;this.rightBound=b;this.results=null;this.appendPos=0;this.replacement=null;return this},"~N,~N");d(c$,"appendTail",function(a){return a.append(this.string.subSequence(this.appendPos,this.string.length()))},
+"StringBuffer");d(c$,"replaceFirst",function(a){this.reset();if(this.find()){var b=new StringBuffer;this.appendReplacement(b,a);return this.appendTail(b).toString()}return this.string.toString()},"~S");d(c$,"replaceAll",function(a){var b=new StringBuffer;for(this.reset();this.find();)this.appendReplacement(b,a);return this.appendTail(b).toString()},"~S");d(c$,"pattern",function(){return this.pat});d(c$,"group",function(a){return null==this.results||0>a||a>this.results.length?null:this.results[a]},
+"~N");d(c$,"group",function(){return this.group(0)});d(c$,"find",function(a){var b=this.string.length();if(0>a||a>b)throw new IndexOutOfBoundsException("Out of bound "+a);this.findAt(a);return!1},"~N");d(c$,"findAt",($fz=function(){return-1},$fz.isPrivate=!0,$fz),"~N");d(c$,"find",function(){this.results=this.pat.regexp.exec(this.string.subSequence(this.leftBound,this.rightBound));return null!=this.results});d(c$,"start",function(){var a=0,a=this.pat.regexp.lastIndex;return a-=this.results[0].length},
+"~N");d(c$,"end",function(){return this.pat.regexp.lastIndex},"~N");d(c$,"matches",function(){return this.find()});c$.quoteReplacement=d(c$,"quoteReplacement",function(a){if(0>a.indexOf("\\")&&0>a.indexOf("$"))return a;for(var b=new StringBuffer(2*a.length),c,f=a.length,d=0;d<f;d++)switch(c=a.charAt(d)){case "$":b.append("\\");b.append("$");break;case "\\":b.append("\\");b.append("\\");break;default:b.append(c)}return b.toString()},"~S");d(c$,"lookingAt",function(){return!1});d(c$,"start",function(){return this.start(0)});
+e(c$,"groupCount",function(){return null==this.results?0:this.results.length});d(c$,"end",function(){return this.end(0)});d(c$,"toMatchResult",function(){return this});d(c$,"useAnchoringBounds",function(){return this},"~B");d(c$,"hasAnchoringBounds",function(){return!1});d(c$,"useTransparentBounds",function(){return this},"~B");d(c$,"hasTransparentBounds",function(){return!1});d(c$,"regionStart",function(){return this.leftBound});d(c$,"regionEnd",function(){return this.rightBound});d(c$,"requireEnd",
+function(){return!1});d(c$,"hitEnd",function(){return!1});d(c$,"usePattern",function(a){if(null==a)throw new IllegalArgumentException("Empty pattern!");this.pat=a;this.results=null;return this},"java.util.regex.Pattern");m(c$,function(a,b){this.pat=a;this.string=b;this.leftBound=0;this.rightBound=this.string.toString().length},"java.util.regex.Pattern,CharSequence");c$.$Matcher$1$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.grN=0;r(this,arguments)},java.util.regex,"Matcher$1");J(c$,
+function(){this.grN=gr});e(c$,"toString",function(){return this.b$["java.util.regex.Matcher"].group(this.grN)});c$=z()};G(c$,"MODE_FIND",1,"MODE_MATCH",2)});p("java.util.regex");M(java.util.regex,"MatchResult");p("jalview.util");q(null,"jalview.util.Format",["java.lang.Character","$.IllegalArgumentException","$.StringBuffer"],function(){c$=s(function(){this.precision=this.width=0;this.post=this.pre=null;this.left_align=this.show_space=this.alternate=this.show_plus=this.leading_zeroes=!1;this.fmt=
+"\x00";this.formatString=null;r(this,arguments)},jalview.util,"Format");m(c$,function(a){this.formatString=a;this.width=0;this.precision=-1;this.post=this.pre="";this.left_align=this.show_space=this.alternate=this.show_plus=this.leading_zeroes=!1;this.fmt=" ";for(var b=a.length,c=0,f=0;0==c;){if(f>=b)c=5;else if("%"==a.charAt(f))if(f<b-1)"%"==a.charAt(f+1)?(this.pre+="%",f++):c=1;else throw new IllegalArgumentException;else this.pre+=a.charAt(f);f++}for(;1==c;)f>=b?c=5:" "==a.charAt(f)?this.show_space=
+!0:"-"==a.charAt(f)?this.left_align=!0:"+"==a.charAt(f)?this.show_plus=!0:"0"==a.charAt(f)?this.leading_zeroes=!0:"#"==a.charAt(f)?this.alternate=!0:(c=2,f--),f++;for(;2==c;)f>=b?c=5:"0"<=a.charAt(f)&&"9">=a.charAt(f)?(this.width=10*this.width+a.charCodeAt(f)-48,f++):"."==a.charAt(f)?(c=3,this.precision=0,f++):c=4;for(;3==c;)f>=b?c=5:"0"<=a.charAt(f)&&"9">=a.charAt(f)?(this.precision=10*this.precision+a.charCodeAt(f)-48,f++):c=4;4==c&&(f>=b||(this.fmt=a.charAt(f)),f++);f<b&&(this.post=a.substring(f,
+b))},"~S");c$.getHexString=d(c$,"getHexString",function(a){var b,c;b=Integer.toHexString(a.getRed());2>b.length&&(b="0"+b);c=Integer.toHexString(a.getGreen());2>c.length&&(c="0"+c);a=Integer.toHexString(a.getBlue());2>a.length&&(a="0"+a);return b+c+a},"java.awt.Color");c$.printDouble=d(c$,"printDouble",function(a,b,c){a.print((new jalview.util.Format(b)).formDouble(c))},"java.io.PrintStream,~S,~N");c$.printLong=d(c$,"printLong",function(a,b,c){a.print((new jalview.util.Format(b)).formLong(c))},"java.io.PrintStream,~S,~N");
+c$.printChar=d(c$,"printChar",function(a,b,c){a.print((new jalview.util.Format(b)).formChar(c))},"java.io.PrintStream,~S,~S");c$.print=d(c$,"print",function(a,b,c){a.print((new jalview.util.Format(b)).form(c))},"java.io.PrintStream,~S,~S");c$.atoi=d(c$,"atoi",function(a){return jalview.util.Format.atol(a)},"~S");c$.atol=d(c$,"atol",function(a){for(var b=0;b<a.length&&Character.isWhitespace(a.charAt(b));)b++;return b<a.length&&"0"==a.charAt(b)?b+1<a.length&&("x"==a.charAt(b+1)||"X"==a.charAt(b+1))?
+jalview.util.Format.parseLong(a.substring(b+2),16):jalview.util.Format.parseLong(a,8):jalview.util.Format.parseLong(a,10)},"~S");c$.parseLong=d(c$,"parseLong",function(a,b){for(var c=0,f=1,d=0;c<a.length&&Character.isWhitespace(a.charAt(c));)c++;c<a.length&&"-"==a.charAt(c)?(f=-1,c++):c<a.length&&"+"==a.charAt(c)&&c++;for(;c<a.length;){var k=a.charAt(c);if("0"<=k&&k.charCodeAt(0)<48+b)d=d*b+k.charCodeAt(0)-48;else if("A"<=k&&k.charCodeAt(0)<65+b-10)d=d*b+k.charCodeAt(0)-65+10;else if("a"<=k&&k.charCodeAt(0)<
+97+b-10)d=d*b+k.charCodeAt(0)-97+10;else break;c++}return d*f},"~S,~N");c$.atof=d(c$,"atof",function(a){for(var b=0,c=1,f=0,d=1,k=0;b<a.length&&Character.isWhitespace(a.charAt(b));)b++;b<a.length&&"-"==a.charAt(b)?(c=-1,b++):b<a.length&&"+"==a.charAt(b)&&b++;for(;b<a.length;){var g=a.charAt(b);if("0"<=g&&"9">=g)0==k?f=10*f+g.charCodeAt(0)-48:1==k&&(d/=10,f+=d*(g.charCodeAt(0)-48));else if("."==g)if(0==k)k=1;else break;else{if("e"==g||"E"==g)return a=jalview.util.Format.parseLong(a.substring(b+1),
+10),c*f*Math.pow(10,a);break}b++}return c*f},"~S");d(c$,"formDouble",function(a){0>this.precision&&(this.precision=6);var b=1;0>a&&(a=-a,b=-1);if("f"==this.fmt)a=this.fixed_format(a);else if("e"==this.fmt||"E"==this.fmt||"g"==this.fmt||"G"==this.fmt)a=this.exp_format(a);else throw new IllegalArgumentException;return this.pad(this.sign(b,a))},"~N");d(c$,"formLong",function(a){var b=0;if("d"==this.fmt||"i"==this.fmt)0>a?(a=(""+a).substring(1),b=-1):(a=""+a,b=1);else if("o"==this.fmt)a=jalview.util.Format.convert(a,
+3,7,"01234567");else if("x"==this.fmt)a=jalview.util.Format.convert(a,4,15,"0123456789abcdef");else if("X"==this.fmt)a=jalview.util.Format.convert(a,4,15,"0123456789ABCDEF");else throw new IllegalArgumentException;return this.pad(this.sign(b,a))},"~N");d(c$,"formChar",function(a){if("c"!=this.fmt)throw new IllegalArgumentException;return this.pad(""+a)},"~S");d(c$,"form",function(a){if("s"!=this.fmt)throw new IllegalArgumentException;0<=this.precision&&(a=a.substring(0,this.precision));return this.pad(a)},
+"~S");c$.repeat=d(c$,"repeat",function(a,b){if(0>=b)return"";for(var c=new StringBuffer(b),f=0;f<b;f++)c.append(a);return c.toString()},"~S,~N");c$.convert=d(c$,"convert",function(a,b,c,f){if(0==a)return"0";for(var d="";0!=a;)d=f.charAt(a&c)+d,a>>>=b;return d},"~N,~N,~N,~S");d(c$,"pad",function(a){var b=jalview.util.Format.repeat(" ",this.width-a.length);return this.left_align?this.pre+a+b+this.post:this.pre+b+a+this.post},"~S");d(c$,"sign",function(a,b){var c="";0>a?c="-":0<a?this.show_plus?c="+":
+this.show_space&&(c=" "):"o"==this.fmt&&this.alternate&&0<b.length&&"0"!=b.charAt(0)?c="0":"x"==this.fmt&&this.alternate?c="0x":"X"==this.fmt&&this.alternate&&(c="0X");var f=0;if(this.leading_zeroes)f=this.width;else if(("d"==this.fmt||"i"==this.fmt||"x"==this.fmt||"X"==this.fmt||"o"==this.fmt)&&0<this.precision)f=this.precision;return c+jalview.util.Format.repeat("0",f-c.length-b.length)+b},"~N,~S");d(c$,"fixed_format",function(a){var b=("G"==this.fmt||"g"==this.fmt)&&!this.alternate;if(9223372036854775E3<
+a)return this.exp_format(a);if(0==this.precision)return Z(a+0.5)+(b?"":".");var c=Z(a),f=a-c;if(1<=f||0>f)return this.exp_format(a);a=1;for(var d="",k=1;k<=this.precision&&9223372036854775E3>=a;k++)a*=10,d+="0";f=Z(a*f+0.5);f>=a&&(f=0,c++);f=d+f;f="."+f.substring(f.length-this.precision,f.length);if(b){for(b=f.length-1;0<=b&&"0"==f.charAt(b);)b--;0<=b&&"."==f.charAt(b)&&b--;f=f.substring(0,b+1)}return c+f},"~N");d(c$,"exp_format",function(a){var b="",c=0,f=a,d=1;if(0!=a){for(;10<f;)c++,d/=10,f/=10;
+for(;1>f;)c--,d*=10,f*=10}if(("g"==this.fmt||"G"==this.fmt)&&-4<=c&&c<this.precision)return this.fixed_format(a);b+=this.fixed_format(a*d);b="e"==this.fmt||"g"==this.fmt?b+"e":b+"E";a="000";0<=c?(b+="+",a+=c):(b+="-",a+=-c);return b+a.substring(a.length-3,a.length)},"~N");e(c$,"toString",function(){return this.formatString})});p("jalview.util");q(["java.util.Iterator"],"jalview.util.ReverseListIterator",null,function(){c$=s(function(){this.iterator=null;r(this,arguments)},jalview.util,"ReverseListIterator",
+null,java.util.Iterator);m(c$,function(a){this.iterator=a.listIterator(a.size())},"java.util.List");e(c$,"hasNext",function(){return this.iterator.hasPrevious()});e(c$,"next",function(){return this.iterator.previous()});e(c$,"remove",function(){this.iterator.remove()})});p("jalview.commands");q(["jalview.commands.CommandI"],"jalview.commands.OrderCommand",["jalview.analysis.AlignmentSorter"],function(){c$=s(function(){this.al=this.seqs2=this.seqs=this.description=null;r(this,arguments)},jalview.commands,
+"OrderCommand",null,jalview.commands.CommandI);m(c$,function(a,b,c){this.description=a;this.seqs=b;this.seqs2=c.getSequencesArray();this.al=c;this.doCommand(null)},"~S,~A,jalview.datamodel.AlignmentI");e(c$,"getDescription",function(){return this.description});e(c$,"getSize",function(){return 1});e(c$,"doCommand",function(){jalview.analysis.AlignmentSorter.setOrder(this.al,this.seqs2)},"~A");e(c$,"undoCommand",function(){jalview.analysis.AlignmentSorter.setOrder(this.al,this.seqs)},"~A");d(c$,"getSequenceOrder",
+function(a){return a?this.seqs:this.seqs2},"~B")});p("jalview.datamodel");q(null,"jalview.datamodel.AlignmentOrder",["java.lang.Error","java.util.ArrayList","$.Arrays"],function(){c$=s(function(){this.Type=0;this.Order=this.Name=null;r(this,arguments)},jalview.datamodel,"AlignmentOrder");m(c$,function(){});m(c$,function(a){this.Order=a},"java.util.List");m(c$,function(a){this.Order=new java.util.ArrayList;var b;for(a=a.getSequences().iterator();a.hasNext()&&((b=a.next())||1);)this.Order.add(b)},"jalview.datamodel.AlignmentI");
+m(c$,function(a){this.Order=new java.util.ArrayList(java.util.Arrays.asList(a))},"~A");d(c$,"setType",function(a){this.Type=a},"~N");d(c$,"getType",function(){return this.Type});d(c$,"setName",function(a){this.Name=a},"~S");d(c$,"getName",function(){return this.Name});d(c$,"setOrder",function(a){this.Order=a},"java.util.List");d(c$,"getOrder",function(){return this.Order});d(c$,"updateSequence",function(a,b){var c=this.Order.indexOf(a);-1<c&&this.Order.set(c,b);return-1<c},"jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");
+d(c$,"equals",function(a){return null==a||!v(a,jalview.datamodel.AlignmentOrder)?!1:this.equals(a,!0)},"~O");d(c$,"equals",function(a,b){if(a!==this)if(null!=a&&null!=this.Order&&null!=a.Order&&this.Order.size()==a.Order.size())if(b)for(var c=0,f=a.Order.size();c<f;c++){if(this.Order.get(c)!==a.Order.get(c))return!1}else throw Error("Weak sequenceI equivalence not yet implemented.");else return!1;return!0},"jalview.datamodel.AlignmentOrder,~B");d(c$,"isConsistent",function(a){return this.isConsistent(a,
+!0)},"jalview.datamodel.AlignmentOrder");d(c$,"isConsistent",function(a,b){if(a!==this)if(null!=a&&null!=this.Order&&null!=a.Order){var c,f;a.Order.size()>this.Order.size()?(c=a.Order,f=this.Order):(c=this.Order,f=a.Order);if(b)for(var d=-1,k=0,g=f.size();k<g;k++){var e=c.indexOf(f.get(k));if(e>d)d=e;else return!1}else throw Error("Weak sequenceI equivalence not yet implemented.");}else return!1;return!0},"jalview.datamodel.AlignmentOrder,~B");G(c$,"FILE",0,"MSA",1,"USER",2)});p("jalview.datamodel");
+q(["java.util.Vector"],"jalview.datamodel.ColumnSelection",["jalview.util.ShiftList","jalview.viewmodel.annotationfilter.AnnotationFilterParameter","java.lang.StringBuffer","java.util.ArrayList","$.Collections"],function(){c$=s(function(){this.hiddenColumns=this.selected=null;r(this,arguments)},jalview.datamodel,"ColumnSelection");J(c$,function(){this.selected=new java.util.Vector});d(c$,"addElement",function(a){a=new Integer(a);this.selected.contains(a)||this.selected.addElement(a)},"~N");d(c$,"clear",
+function(){this.selected.removeAllElements()});d(c$,"removeElement",function(a){a=new Integer(a);this.selected.contains(a)&&this.selected.removeElement(a)},"~N");d(c$,"removeElements",function(a,b){for(var c,f=a;f<b;f++)c=new Integer(f),this.selected.contains(c)&&this.selected.removeElement(c)},"~N,~N");d(c$,"getSelected",function(){return this.selected});d(c$,"contains",function(a){return this.selected.contains(new Integer(a))},"~N");d(c$,"columnAt",function(a){return this.selected.elementAt(a).intValue()},
+"~N");d(c$,"size",function(){return this.selected.size()});d(c$,"getMax",function(){for(var a=-1,b=0;b<this.selected.size();b++)this.columnAt(b)>a&&(a=this.columnAt(b));return a});d(c$,"getMin",function(){for(var a=1E9,b=0;b<this.selected.size();b++)this.columnAt(b)<a&&(a=this.columnAt(b));return a});d(c$,"compensateForEdit",function(a,b){for(var c=null,f=0;f<this.size();f++){var d=this.columnAt(f);d>=a&&this.selected.setElementAt(new Integer(d-b),f)}if(null!=this.hiddenColumns){c=new java.util.ArrayList;
+d=this.hiddenColumns.size();for(f=0;f<d;f++){var k=this.hiddenColumns.elementAt(f);k[0]>a&&a+b>k[1]?(c.add(k),this.hiddenColumns.removeElementAt(f),f--,d--):(k[0]>a&&(k[0]-=b,k[1]-=b),0>k[0]&&(k[0]=0))}this.revealHiddenColumns(0)}return c},"~N,~N");d(c$,"compensateForDelEdits",function(a,b){for(var c=0;c<this.size();c++){var f=this.columnAt(c);f>=a&&this.selected.setElementAt(new Integer(f-b),c)}if(null!=this.hiddenColumns)for(c=0;c<this.hiddenColumns.size();c++)f=this.hiddenColumns.elementAt(c),
+f[0]>=a&&(f[0]-=b),f[1]>=a&&(f[1]-=b),f[1]<f[0]&&this.hiddenColumns.removeElementAt(c--),0>f[0]&&(f[0]=0),0>f[1]&&(f[1]=0)},"~N,~N");d(c$,"compensateForEdits",function(a){if(null!=a){var b=a.getShifts();if(null!=b&&0<b.size())for(var c=0,f=0,d=b.size();f<d;f++){var k=b.get(f);this.compensateForDelEdits(c+k[0],k[1]);c-=k[1]}return a.getInverse()}return null},"jalview.util.ShiftList");d(c$,"pruneIntervalVector",function(a,b){for(var c=!1,f=0,d=b.size()-1,k=0,g=a.size()-1,e=b.elementAt(f),j=a.get(k);f<=
+d&&k<=g;){var n=e[1]>=j[0];if(n){var x=j[0]+j[1];if(x<e[0]||x<j[0])k<g?j=a.get(++k):k++;else{var u=e[0]>=j[0],m=e[0]<x,p=e[1]<x;if(u){if(p){b.removeElementAt(f);c=!0;d--;f<=d&&(e=b.elementAt(f));continue}m&&(e[0]=x,u=!u,c=!0)}u||(p?n&&(e[1]=j[0]-1,c=!0):k<g?j=a.get(++k):k++)}}else f<d?e=b.elementAt(++f):f++}return c},"java.util.List,java.util.Vector");d(c$,"pruneColumnList",function(a,b){for(var c=0,f=a.size(),d=a.get(c++),k=0,g=b.size();k<g&&c<=f;){var e=b.elementAt(k++).intValue();d[0]<=e&&(d[1]+
+d[0]>=e?(b.removeElementAt(--k),g--):(c<f&&(d=a.get(c)),c++))}return!1},"java.util.List,java.util.Vector");d(c$,"pruneDeletions",function(a){if(null!=a){var b=a.getShifts();null!=b&&0<b.size()&&(null!=this.hiddenColumns&&(this.pruneIntervalVector(b,this.hiddenColumns),null!=this.hiddenColumns&&0==this.hiddenColumns.size()&&(this.hiddenColumns=null)),null!=this.selected&&0<this.selected.size()&&(this.pruneColumnList(b,this.selected),null!=this.selected&&0==this.selected.size()&&(this.selected=null)),
+this.compensateForEdits(a))}},"jalview.util.ShiftList");d(c$,"getHiddenColumns",function(){return null==this.hiddenColumns?java.util.Collections.emptyList():this.hiddenColumns});d(c$,"adjustForHiddenColumns",function(a){if(null!=this.hiddenColumns)for(var b=0;b<this.hiddenColumns.size();b++){var c=this.hiddenColumns.elementAt(b);a>=c[0]&&(a+=c[1]-c[0]+1)}return a},"~N");d(c$,"findColumnPosition",function(a){var b=a;if(null!=this.hiddenColumns){var c=0,f;do f=this.hiddenColumns.elementAt(c++),a>f[1]&&
+(b-=f[1]+1-f[0]);while(a>f[1]&&c<this.hiddenColumns.size());if(a>f[0]&&a<f[1])return f[0]+a-b}return b},"~N");d(c$,"findHiddenRegionPosition",function(a){var b=0;if(null!=this.hiddenColumns){var c=0,f=0;do{b=this.hiddenColumns.elementAt(c);if(0==a)return b[0];f+=b[1]+1-b[0];b=b[1]+1;c++}while(c<a+1);b-=f}return b},"~N");d(c$,"getHiddenBoundaryRight",function(a){if(null!=this.hiddenColumns){var b=0;do{var c=this.hiddenColumns.elementAt(b);if(a<c[0])return c[0];b++}while(b<this.hiddenColumns.size())}return a},
+"~N");d(c$,"getHiddenBoundaryLeft",function(a){if(null!=this.hiddenColumns){var b=this.hiddenColumns.size()-1;do{var c=this.hiddenColumns.elementAt(b);if(a>c[1])return c[1];b--}while(-1<b)}return a},"~N");d(c$,"hideSelectedColumns",function(){for(;0<this.size();){var a=this.getSelected().firstElement().intValue();this.hideColumns(a)}});d(c$,"hideColumns",function(a,b){null==this.hiddenColumns&&(this.hiddenColumns=new java.util.Vector);for(var c=!1,f=!1,d=0;d<this.hiddenColumns.size();d++){var k=this.hiddenColumns.elementAt(d);
+if(a<=k[1]&&b>=k[0]){this.hiddenColumns.removeElementAt(d);f=!0;break}else if(b<k[0]&&a<k[0]){this.hiddenColumns.insertElementAt(w(-1,[a,b]),d);c=!0;break}}f?this.hideColumns(a,b):c||this.hiddenColumns.addElement(w(-1,[a,b]))},"~N,~N");d(c$,"hideColumns",function(a){var b=a;for(a+=1;this.contains(b);)this.removeElement(b),b--;for(;this.contains(a);)this.removeElement(a),a++;b++;a--;b>a&&(b=a);this.hideColumns(b,a)},"~N");d(c$,"revealAllHiddenColumns",function(){if(null!=this.hiddenColumns)for(var a=
+0;a<this.hiddenColumns.size();a++)for(var b=this.hiddenColumns.elementAt(a),c=b[0];c<b[1]+1;c++)this.addElement(c);this.hiddenColumns=null});d(c$,"revealHiddenColumns",function(a){for(var b=0;b<this.hiddenColumns.size();b++){var c=this.hiddenColumns.elementAt(b);if(a==c[0]){for(a=c[0];a<c[1]+1;a++)this.addElement(a);this.hiddenColumns.removeElement(c);break}}0==this.hiddenColumns.size()&&(this.hiddenColumns=null)},"~N");d(c$,"isVisible",function(a){if(null!=this.hiddenColumns)for(var b=0;b<this.hiddenColumns.size();b++){var c=
+this.hiddenColumns.elementAt(b);if(a>=c[0]&&a<=c[1])return!1}return!0},"~N");m(c$,function(a){if(null!=a){if(null!=a.selected){this.selected=new java.util.Vector;for(var b=0,c=a.selected.size();b<c;b++)this.selected.addElement(a.selected.elementAt(b))}if(null!=a.hiddenColumns){this.hiddenColumns=new java.util.Vector(a.hiddenColumns.size());b=0;for(c=a.hiddenColumns.size();b<c;b++){var f,d;f=a.hiddenColumns.elementAt(b);null!=f&&(d=w(f.length,0),System.arraycopy(f,0,d,0,f.length),this.hiddenColumns.addElement(d))}}}},
+"jalview.datamodel.ColumnSelection");m(c$,function(){});d(c$,"getVisibleSequenceStrings",function(a,b,c){var f,d=c.length,k=Array(d);if(null!=this.hiddenColumns&&0<this.hiddenColumns.size())for(f=0;f<d;f++){for(var g=new StringBuffer,e=this.getHiddenColumns(),j=a,n=b,x,u,m=0;m<e.size();m++)if(x=e.get(m),u=x[0],x=x[1],!(u<a)){j=Math.min(j,x+1);n=Math.min(n,u);if(j>n)break;g.append(c[f].getSequence(j,n));j=x+1;n=b}b>j&&g.append(c[f].getSequence(j,b));k[f]=g.toString()}else for(f=0;f<d;f++)k[f]=c[f].getSequenceAsString(a,
+b);return k},"~N,~N,~A");d(c$,"getVisibleContigs",function(a,b){if(null!=this.hiddenColumns&&0<this.hiddenColumns.size()){for(var c=new java.util.ArrayList,f=this.getHiddenColumns(),d=a,k,g,e=0;d<b&&e<f.size();e++)k=f.get(e),g=k[0],k=k[1],k<d||(g>d&&c.add(w(-1,[d,g-1])),d=k+1);d<b&&c.add(w(-1,[d,b-1]));f=w(2*c.size(),0);d=0;for(e=c.size();d<e;d++)g=c.get(d),c.set(d,null),f[2*d]=g[0],f[2*d+1]=g[1];c.clear();return f}return w(-1,[a,b-1])},"~N,~N");d(c$,"makeVisibleAnnotation",function(a){this.makeVisibleAnnotation(-1,
+-1,a)},"jalview.datamodel.AlignmentAnnotation");d(c$,"makeVisibleAnnotation",function(a,b,c){if(null!=c.annotations)if(a==b&&-1==b&&(a=0,b=c.annotations.length),null!=this.hiddenColumns&&0<this.hiddenColumns.size()){for(var f=new java.util.Vector,d=null,k=this.getHiddenColumns(),g=a,d=b,e,j,n=0,x=0;x<k.size();x++)if(e=k.get(x),j=e[0],e=e[1],!(j<a)){g=Math.min(g,e+1);d=Math.min(d,j);if(g>d)break;f.addElement(d=Array(d-g));System.arraycopy(c.annotations,g,d,0,d.length);n+=d.length;g=e+1;d=b}b>g&&(f.addElement(d=
+Array(b-g+1)),d.length+g<=c.annotations.length?System.arraycopy(c.annotations,g,d,0,d.length):System.arraycopy(c.annotations,g,d,0,c.annotations.length-g),n+=d.length);if(0!=n){c.annotations=Array(n);var n=0,u;for(a=f.iterator();a.hasNext()&&((u=a.next())||1);)System.arraycopy(u,0,c.annotations,n,u.length),n+=u.length}}else c.restrict(a,b)},"~N,~N,jalview.datamodel.AlignmentAnnotation");d(c$,"invertColumnSelection",function(a,b){for(var c=null!=this.hiddenColumns&&0<this.hiddenColumns.size(),f=a;f<
+b;f++)this.contains(f)?this.removeElement(f):(!c||this.isVisible(f))&&this.addElement(f)},"~N,~N");d(c$,"addElementsFrom",function(a){if(null!=a&&0<a.size()){var b;for(a=a.getSelected().iterator();a.hasNext()&&((b=a.next())||1);)null!=this.hiddenColumns&&this.isVisible(b.intValue())&&(this.selected.contains(b)||this.selected.addElement(b))}},"jalview.datamodel.ColumnSelection");d(c$,"setElementsFrom",function(a){this.selected=new java.util.Vector;if(null!=a.selected&&0<a.selected.size())if(null!=
+this.hiddenColumns&&0<this.hiddenColumns.size())this.addElementsFrom(a);else{var b;for(a=a.getSelected().iterator();a.hasNext()&&((b=a.next())||1);)this.addElement(b.intValue())}},"jalview.datamodel.ColumnSelection");c$.propagateInsertions=d(c$,"propagateInsertions",function(a,b,c){var f=b.getGapCharacter();c=c.getAlignmentAndColumnSelection(f);f=c[1];f.propagateInsertions(a,b,c[0][0]);return f},"jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentView");d(c$,"propagateInsertions",
+function(a,b,c){var f=b.getGapCharacter();this.pruneDeletions(jalview.util.ShiftList.parseMap(c.gapMap()));for(var d=this.getVisibleContigs(0,a.getLength()),k=0,g=0;g<d.length;g+=2){if(d[g]>k){for(var e=new StringBuffer,j=0,n=d[g]-k;j<n;j++)e.append(f);j=0;for(n=b.getHeight();j<n;j++){var x=b.getSequenceAt(j);if(x!==a)if(x=b.getSequenceAt(j).getSequenceAsString(),x.length<=k+0){var u=k+0-x.length-1;if(0<u)for(x+=e;0<(u=k+0-x.length-1);)if(u>=e.length())x+=e.toString();else{var m=N(u,"\x00");e.getChars(0,
+u,m,0);x+=m.toString()}}else b.getSequenceAt(j).setSequence(x.substring(0,k+0)+e.toString()+x.substring(k+0))}}k=d[g+1]+1}if(0+k<a.getLength()){e=new StringBuffer;j=0;for(n=a.getLength()-k-0;j<n;j++)e.append(f);j=0;for(n=b.getHeight();j<n;j++)if(x=b.getSequenceAt(j),x!==a){x=x.getSequenceAsString();for(u=c.getLength()-x.length;0<u;)u>=e.length()?x+=e.toString():(m=N(u,"\x00"),e.getChars(0,u,m,0),x+=m.toString()),u=c.getLength()-x.length}}},"jalview.datamodel.SequenceI,jalview.datamodel.AlignmentI,jalview.datamodel.SequenceI");
+d(c$,"hasSelectedColumns",function(){return null!=this.selected&&0<this.selected.size()});d(c$,"hasHiddenColumns",function(){return null!=this.hiddenColumns&&0<this.hiddenColumns.size()});d(c$,"hasManyHiddenColumns",function(){return null!=this.hiddenColumns&&1<this.hiddenColumns.size()});d(c$,"hideInsertionsFor",function(a){var b;for(a=a.getInsertions().iterator();a.hasNext()&&((b=a.next())||1);)this.hideColumns(b[0],b[1])},"jalview.datamodel.SequenceI");d(c$,"filterAnnotations",function(a,b){this.revealAllHiddenColumns();
+this.clear();var c=0;do{if(null!=a[c]){var f=!1;b.getThresholdType()===jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.ABOVE_THRESHOLD&&a[c].value>=b.getThresholdValue()&&(f=!0);b.getThresholdType()===jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.BELOW_THRESHOLD&&a[c].value<=b.getThresholdValue()&&(f=!0);b.isFilterAlphaHelix()&&"H"==a[c].secondaryStructure&&(f=!0);b.isFilterBetaSheet()&&"E"==a[c].secondaryStructure&&(f=!0);b.isFilterTurn()&&
+"S"==a[c].secondaryStructure&&(f=!0);var d=b.getRegexString();if(null!=d&&!b.getRegexSearchFields().isEmpty()){var k=b.getRegexSearchFields();try{k.contains(jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DISPLAY_STRING)&&a[c].displayCharacter.matches(d)&&(f=!0)}catch(g){if(y(g,java.util.regex.PatternSyntaxException))a[c].displayCharacter.equals(d)&&(f=!0);else throw g;}k.contains(jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DESCRIPTION)&&
+(null!=a[c].description&&a[c].description.matches(d))&&(f=!0)}f&&this.addElement(c)}c++}while(c<a.length);return!1},"~A,jalview.viewmodel.annotationfilter.AnnotationFilterParameter")});p("jalview.util");q(null,"jalview.util.ShiftList",["java.util.ArrayList"],function(){c$=s(function(){this.shifts=null;r(this,arguments)},jalview.util,"ShiftList");m(c$,function(){this.shifts=new java.util.ArrayList});d(c$,"addShift",function(a,b){for(var c=0,f=null;c<this.shifts.size()&&(f=this.shifts.get(c))[0]<a;)c++;
+c==this.shifts.size()?this.shifts.add(c,w(-1,[a,b])):f[1]+=b},"~N,~N");d(c$,"shift",function(a){if(0==this.shifts.size())return a;for(var b=a,c=0,f;c<this.shifts.size()&&(f=this.shifts.get(c++))[0]<=a;)b+=f[1];return b},"~N");d(c$,"clear",function(){this.shifts.clear()});d(c$,"getInverse",function(){var a=new jalview.util.ShiftList;if(null!=this.shifts)for(var b,c=this.shifts.iterator();c.hasNext()&&((b=c.next())||1);)null!=b&&a.shifts.add(w(-1,[b[0],-b[1]]));return a});c$.parseMap=d(c$,"parseMap",
+function(a){var b=null;if(null!=a&&0<a.length)for(var b=new jalview.util.ShiftList,c=0,f=0;c<a.length;f++,c++)f!=a[c]&&(b.addShift(f,a[c]-f),f=a[c]);return b},"~A");d(c$,"getShifts",function(){return this.shifts})});p("jalview.viewmodel.annotationfilter");q(["java.lang.Enum","java.util.ArrayList"],"jalview.viewmodel.annotationfilter.AnnotationFilterParameter",null,function(){c$=s(function(){this.thresholdType=null;this.thresholdValue=0;this.filterTurn=this.filterBetaSheet=this.filterAlphaHelix=!1;
+this.regexSearchFields=this.regexString=null;r(this,arguments)},jalview.viewmodel.annotationfilter,"AnnotationFilterParameter");J(c$,function(){this.regexSearchFields=new java.util.ArrayList});d(c$,"getThresholdType",function(){return this.thresholdType});d(c$,"setThresholdType",function(a){this.thresholdType=a},"jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType");d(c$,"getThresholdValue",function(){return this.thresholdValue});d(c$,"setThresholdValue",function(a){this.thresholdValue=
+a},"~N");d(c$,"getRegexString",function(){return this.regexString});d(c$,"setRegexString",function(a){this.regexString=a},"~S");d(c$,"getRegexSearchFields",function(){return this.regexSearchFields});d(c$,"addRegexSearchField",function(a){this.regexSearchFields.add(a)},"jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField");d(c$,"isFilterAlphaHelix",function(){return this.filterAlphaHelix});d(c$,"setFilterAlphaHelix",function(a){this.filterAlphaHelix=a},"~B");d(c$,
+"isFilterBetaSheet",function(){return this.filterBetaSheet});d(c$,"setFilterBetaSheet",function(a){this.filterBetaSheet=a},"~B");d(c$,"isFilterTurn",function(){return this.filterTurn});d(c$,"setFilterTurn",function(a){this.filterTurn=a},"~B");A(self.c$);c$=B(jalview.viewmodel.annotationfilter.AnnotationFilterParameter,"ThresholdType",Enum);R(c$,"NO_THRESHOLD",0,[]);R(c$,"BELOW_THRESHOLD",1,[]);R(c$,"ABOVE_THRESHOLD",2,[]);c$=z();A(self.c$);c$=B(jalview.viewmodel.annotationfilter.AnnotationFilterParameter,
+"SearchableAnnotationField",Enum);R(c$,"DISPLAY_STRING",0,[]);R(c$,"DESCRIPTION",1,[]);c$=z()});p("jalview.datamodel");q(["java.util.ArrayList"],"jalview.datamodel.SearchResults",["java.lang.StringBuilder","java.util.Arrays"],function(){c$=s(function(){this.matches=null;H("jalview.datamodel.SearchResults.Match")||jalview.datamodel.SearchResults.$SearchResults$Match$();r(this,arguments)},jalview.datamodel,"SearchResults");J(c$,function(){this.matches=new java.util.ArrayList});d(c$,"addResult",function(a,
+b,c){this.matches.add(C(jalview.datamodel.SearchResults.Match,this,null,a,b,c))},"jalview.datamodel.SequenceI,~N,~N");d(c$,"involvesSequence",function(a){for(var b=a.getDatasetSequence(),c,f=this.matches.iterator();f.hasNext()&&((c=f.next())||1);)if(null!=c.sequence&&(c.sequence===a||c.sequence===b))return!0;return!1},"jalview.datamodel.SequenceI");d(c$,"getResults",function(a,b,c){if(this.matches.isEmpty())return null;for(var f=null,d=null,k,g=0,e=0,j,n=this.matches.iterator();n.hasNext()&&((j=n.next())||
+1);)d=!1,j.sequence===a?(d=!0,g=a.findIndex(j.start)-1,e=a.findIndex(j.end)-1):j.sequence===a.getDatasetSequence()&&(d=!0,g=a.findIndex(j.start)-1,e=a.findIndex(j.end)-1),d&&(g<=c&&e>=b)&&(g<b&&(g=b),e>c&&(e=c),null==f?f=w(-1,[g,e]):(k=f.length,d=w(k+2,0),System.arraycopy(f,0,d,0,k),f=d,f[k]=g,f[k+1]=e));return f},"jalview.datamodel.SequenceI,~N,~N");d(c$,"getSize",function(){return this.matches.size()});d(c$,"getResultSequence",function(a){return this.matches.get(a).sequence},"~N");d(c$,"getResultStart",
+function(a){return this.matches.get(a).start},"~N");d(c$,"getResultEnd",function(a){return this.matches.get(a).end},"~N");d(c$,"isEmpty",function(){return this.matches.isEmpty()});d(c$,"getResults",function(){return this.matches});e(c$,"toString",function(){for(var a=new StringBuilder(256),b,c=this.matches.iterator();c.hasNext()&&((b=c.next())||1);)a.append(b.toString());return a.toString()});c$.$SearchResults$Match$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.sequence=null;this.end=
+this.start=0;r(this,arguments)},jalview.datamodel.SearchResults,"Match");m(c$,function(a,b,c){this.sequence=a;this.start=b;this.end=c},"jalview.datamodel.SequenceI,~N,~N");d(c$,"getSequence",function(){return this.sequence});d(c$,"getStart",function(){return this.start});d(c$,"getEnd",function(){return this.end});e(c$,"toString",function(){var a=this.sequence.getSequence(),b=Math.max(this.start-1,0),c=Math.min(this.end,a.length+1);return String.valueOf(java.util.Arrays.copyOfRange(a,b,c))});d(c$,
+"setSequence",function(a){this.sequence=a},"jalview.datamodel.SequenceI");c$=z()}});p("jalview.datamodel");q(["jalview.datamodel.AnnotatedCollectionI","java.awt.Color","java.util.ArrayList"],"jalview.datamodel.SequenceGroup","jalview.analysis.AAFrequency $.Conservation jalview.datamodel.AlignmentAnnotation $.Sequence jalview.schemes.ResidueProperties jalview.util.Comparison java.lang.StringBuffer".split(" "),function(){c$=s(function(){this.aaFrequency=this.conserve=this.description=this.groupName=
+null;this.displayText=this.displayBoxes=!0;this.showNonconserved=this.colourText=!1;this.seqrep=this.sequences=null;this.width=-1;this.cs=null;this.endRes=this.startRes=0;this.idColour=this.outlineColour=null;this.thresholdTextColour=0;this.textColour2=this.textColour=null;this.ignoreGapsInConsensus=!0;this.normaliseSequenceLogo=this.showSequenceLogo=!1;this.consPercGaps=25;this.consensusData=null;this.hidecols=this.hidereps=!1;this.conservation=this.consensus=null;this.showConsensusHistogram=!1;
+this.context=null;r(this,arguments)},jalview.datamodel,"SequenceGroup",null,jalview.datamodel.AnnotatedCollectionI);J(c$,function(){this.sequences=new java.util.ArrayList;this.textColour=this.outlineColour=java.awt.Color.black;this.textColour2=java.awt.Color.white});d(c$,"isShowSequenceLogo",function(){return this.showSequenceLogo});m(c$,function(){this.groupName="JGroup:"+this.hashCode()});m(c$,function(a,b,c,f,d,k,g,e){this.sequences=a;this.groupName=b;this.displayBoxes=f;this.displayText=d;this.colourText=
+k;this.cs=c;this.startRes=g;this.endRes=e;this.recalcConservation()},"java.util.List,~S,jalview.schemes.ColourSchemeI,~B,~B,~B,~N,~N");m(c$,function(a){null!=a&&(this.sequences=new java.util.ArrayList,this.sequences.addAll(a.sequences),null!=a.groupName&&(this.groupName=String.instantialize(a.groupName)),this.displayBoxes=a.displayBoxes,this.displayText=a.displayText,this.colourText=a.colourText,this.startRes=a.startRes,this.endRes=a.endRes,this.cs=a.cs,null!=a.description&&(this.description=String.instantialize(a.description)),
+this.hidecols=a.hidecols,this.hidereps=a.hidereps,this.idColour=a.idColour,this.outlineColour=a.outlineColour,this.seqrep=a.seqrep,this.textColour=a.textColour,this.textColour2=a.textColour2,this.thresholdTextColour=a.thresholdTextColour,this.width=a.width,this.ignoreGapsInConsensus=a.ignoreGapsInConsensus,null!=a.conserve&&this.recalcConservation())},"jalview.datamodel.SequenceGroup");d(c$,"getSelectionAsNewSequences",function(a){for(var b=this.sequences.size(),c=Array(b),f=this.getSequencesInOrder(a),
+d=0,k=0;d<f.length;d++){var g=f[d];c[k]=g.getSubSequence(this.startRes,this.endRes+1);if(null!=c[k]){c[k].setDescription(g.getDescription());c[k].setDBRef(g.getDBRef());c[k].setSequenceFeatures(g.getSequenceFeatures());null!=g.getDatasetSequence()&&c[k].setDatasetSequence(g.getDatasetSequence());if(null!=g.getAnnotation())for(var e=a.getAlignmentAnnotation(),j=0;j<g.getAnnotation().length;j++){var n=g.getAnnotation()[j];if(null!=e){for(var x=!1,u=0;u<e.length;u++)if(e[u]===n){x=!0;break}if(!x)continue}n=
+new jalview.datamodel.AlignmentAnnotation(g.getAnnotation()[j]);n.restrict(this.startRes,this.endRes);n.setSequenceRef(c[k]);n.adjustForAlignment();c[k].addAlignmentAnnotation(n)}k++}else b--}b!=f.length&&(a=Array(b),System.arraycopy(c,0,a,0,b),c=a);return c},"jalview.datamodel.AlignmentI");d(c$,"findEndRes",function(a){for(var b=0,c,f=0;f<this.endRes+1&&f<a.getLength();f++)c=a.getCharAt(f),jalview.util.Comparison.isGap(c)||b++;0<b&&(b+=a.getStart()-1);return b},"jalview.datamodel.SequenceI");d(c$,
+"getSequences",function(){return this.sequences});d(c$,"getSequences",function(a){if(null==a)return this.sequences;for(var b=new java.util.ArrayList,c,f=this.sequences.iterator();f.hasNext()&&((c=f.next())||1);)if(b.add(c),a.containsKey(c))for(var d,k=a.get(c).getSequences().iterator();k.hasNext()&&((d=k.next())||1);)d!==c&&!b.contains(d)&&b.add(d);return b},"java.util.Map");d(c$,"getSequencesAsArray",function(a){a=this.getSequences(a);return null==a?null:a.toArray(Array(a.size()))},"java.util.Map");
+d(c$,"adjustForRemoveLeft",function(a){this.startRes>=a&&(this.startRes-=a);if(this.endRes>=a)this.endRes-=a,this.startRes>this.endRes&&(this.startRes=0);else return!1;return!0},"~N");d(c$,"adjustForRemoveRight",function(a){if(this.startRes>a)return!1;this.endRes>=a&&(this.endRes=a);return!0},"~N");d(c$,"getName",function(){return this.groupName});d(c$,"getDescription",function(){return this.description});d(c$,"setName",function(a){this.groupName=a},"~S");d(c$,"setDescription",function(a){this.description=
+a},"~S");d(c$,"getConservation",function(){return this.conserve});d(c$,"setConservation",function(a){this.conserve=a},"jalview.analysis.Conservation");d(c$,"addSequence",function(a,b){null!=a&&!this.sequences.contains(a)&&this.sequences.add(a);b&&this.recalcConservation()},"jalview.datamodel.SequenceI,~B");d(c$,"getConsPercGaps",function(){return this.consPercGaps});d(c$,"setConsPercGaps",function(a){this.consPercGaps=a},"~N");d(c$,"recalcConservation",function(){if(!(null==this.cs&&null==this.consensus&&
+null==this.conservation))try{var a=jalview.analysis.AAFrequency.calculate(this.sequences,this.startRes,this.endRes+1,this.showSequenceLogo);null!=this.consensus&&this._updateConsensusRow(a,this.sequences.size());null!=this.cs&&this.cs.setConsensus(a);if(null!=this.conservation||null!=this.cs&&this.cs.conservationApplied()){var b=new jalview.analysis.Conservation(this.groupName,jalview.schemes.ResidueProperties.propHash,3,this.sequences,this.startRes,this.endRes+1);b.calculate();b.verdict(!1,this.consPercGaps);
+null!=this.conservation&&this._updateConservationRow(b);null!=this.cs&&this.cs.conservationApplied()&&this.cs.setConservation(b)}null!=this.cs&&this.cs.alignmentChanged(null!=this.context?this.context:this,null)}catch(c){if(y(c,OutOfMemoryError))System.out.println("Out of memory loading groups: "+c);else throw c;}});d(c$,"_updateConservationRow",function(a){null==this.conservation&&this.getConservation();this.conservation.label="Conservation for "+this.getName();this.conservation.description="Conservation for group "+
+this.getName()+" less than "+this.consPercGaps+"% gaps";var b=null!=this.conservation.annotations?this.endRes<this.conservation.annotations.length?this.conservation.annotations.length:this.endRes+1:this.endRes+1;this.conservation.annotations=null;this.conservation.annotations=Array(b);a.completeAnnotations(this.conservation,null,this.startRes,this.endRes+1)},"jalview.analysis.Conservation");d(c$,"_updateConsensusRow",function(a,b){null==this.consensus&&this.getConsensus();this.consensus.label="Consensus for "+
+this.getName();this.consensus.description="Percent Identity";this.consensusData=a;var c=null!=this.consensus.annotations?this.endRes<this.consensus.annotations.length?this.consensus.annotations.length:this.endRes+1:this.endRes+1;this.consensus.annotations=null;this.consensus.annotations=Array(c);jalview.analysis.AAFrequency.completeConsensus(this.consensus,a,this.startRes,this.endRes+1,this.ignoreGapsInConsensus,this.showSequenceLogo,b)},"~A,~N");d(c$,"addOrRemove",function(a,b){this.sequences.contains(a)?
+this.deleteSequence(a,b):this.addSequence(a,b)},"jalview.datamodel.SequenceI,~B");d(c$,"deleteSequence",function(a,b){this.sequences.remove(a);b&&this.recalcConservation()},"jalview.datamodel.SequenceI,~B");e(c$,"getStartRes",function(){return this.startRes});e(c$,"getEndRes",function(){return this.endRes});d(c$,"setStartRes",function(a){this.startRes=a},"~N");d(c$,"setEndRes",function(a){this.endRes=a},"~N");d(c$,"getSize",function(){return this.sequences.size()});d(c$,"getSequenceAt",function(a){return this.sequences.get(a)},
+"~N");d(c$,"setColourText",function(a){this.colourText=a},"~B");d(c$,"getColourText",function(){return this.colourText});d(c$,"setDisplayText",function(a){this.displayText=a},"~B");d(c$,"getDisplayText",function(){return this.displayText});d(c$,"setDisplayBoxes",function(a){this.displayBoxes=a},"~B");d(c$,"getDisplayBoxes",function(){return this.displayBoxes});e(c$,"getWidth",function(){for(var a=!0,b,c=this.sequences.iterator();c.hasNext()&&((b=c.next())||1);)if(a||b.getLength()>this.width)this.width=
+b.getLength(),a=!1;return this.width});d(c$,"setOutlineColour",function(a){this.outlineColour=a},"java.awt.Color");d(c$,"getOutlineColour",function(){return this.outlineColour});d(c$,"getSequencesInOrder",function(a){return this.getSequencesInOrder(a,!0)},"jalview.datamodel.AlignmentI");d(c$,"getSequencesInOrder",function(a,b){for(var c=this.sequences.size(),f=a.getHeight(),d=Array(b?c:f),k=0,g=0;g<f&&k<c;g++)this.sequences.contains(a.getSequenceAt(g))&&(d[b?k:g]=a.getSequenceAt(g),k++);if(0==k)return null;
+if(!b)return d;if(k<d.length){c=d;for(d=Array(k);0<=--k;)d[k]=c[k],c[k]=null}return d},"jalview.datamodel.AlignmentI,~B");d(c$,"getIdColour",function(){return this.idColour});d(c$,"setIdColour",function(a){this.idColour=a},"java.awt.Color");e(c$,"getSeqrep",function(){return this.seqrep});e(c$,"setSeqrep",function(a){this.seqrep=a},"jalview.datamodel.SequenceI");e(c$,"hasSeqrep",function(){return null!=this.seqrep});d(c$,"setHidereps",function(a){this.hidereps=a},"~B");d(c$,"isHidereps",function(){return this.hidereps});
+d(c$,"setHideCols",function(a){this.hidecols=a},"~B");d(c$,"isHideCols",function(){return this.hidecols});d(c$,"intersect",function(a,b){var c=new jalview.datamodel.SequenceGroup(this),f=this.getSequencesInOrder(a);c.sequences=new java.util.ArrayList;for(var d=0;null!=f&&d<f.length;d++)(null==b||b.containsKey(f[d]))&&c.sequences.add(f[d]);return c},"jalview.datamodel.AlignmentI,java.util.Map");d(c$,"getShowNonconserved",function(){return this.showNonconserved});d(c$,"setShowNonconserved",function(a){this.showNonconserved=
+a},"~B");d(c$,"setConsensus",function(a){null==this.consensus&&(this.consensus=a)},"jalview.datamodel.AlignmentAnnotation");d(c$,"getConsensus",function(){if(0>this.getWidth())return null;null==this.consensus&&(this.consensus=new jalview.datamodel.AlignmentAnnotation("","",Array(1),0,100,1),this.consensus.hasText=!0,this.consensus.autoCalculated=!0,this.consensus.groupRef=this,this.consensus.label="Consensus for "+this.getName(),this.consensus.description="Percent Identity");return this.consensus});
+d(c$,"setConservationRow",function(a){null==this.conservation&&(this.conservation=a)},"jalview.datamodel.AlignmentAnnotation");d(c$,"getConservationRow",function(){null==this.conservation&&(this.conservation=new jalview.datamodel.AlignmentAnnotation("","",Array(1),0,11,1));this.conservation.hasText=!0;this.conservation.autoCalculated=!0;this.conservation.groupRef=this;this.conservation.label="Conservation for "+this.getName();this.conservation.description="Conservation for group "+this.getName()+
+" less than "+this.consPercGaps+"% gaps";return this.conservation});d(c$,"hasAnnotationRows",function(){return null!=this.consensus||null!=this.conservation});d(c$,"getConsensusSeq",function(){this.getConsensus();for(var a=new StringBuffer,b=0;b<this.consensus.annotations.length;b++)null!=this.consensus.annotations[b]&&("["==this.consensus.annotations[b].description.charAt(0)?a.append(this.consensus.annotations[b].description.charAt(1)):a.append(this.consensus.annotations[b].displayCharacter));a=
+new jalview.datamodel.Sequence("Group"+this.getName()+" Consensus",a.toString());a.setDescription("Percentage Identity Consensus "+(this.ignoreGapsInConsensus?" without gaps":""));return a});d(c$,"setIgnoreGapsConsensus",function(a){this.ignoreGapsInConsensus!=a&&null!=this.consensus&&(this.ignoreGapsInConsensus=a,this.recalcConservation());this.ignoreGapsInConsensus=a},"~B");d(c$,"getIgnoreGapsConsensus",function(){return this.ignoreGapsInConsensus});d(c$,"setshowSequenceLogo",function(a){this.showSequenceLogo!=
+a&&null!=this.consensus&&(this.showSequenceLogo=a,this.recalcConservation());this.showSequenceLogo=a},"~B");d(c$,"setShowConsensusHistogram",function(a){this.showConsensusHistogram!=a&&null!=this.consensus&&(this.showConsensusHistogram=a,this.recalcConservation());this.showConsensusHistogram=a},"~B");d(c$,"isShowConsensusHistogram",function(){return this.showConsensusHistogram});d(c$,"setNormaliseSequenceLogo",function(a){this.normaliseSequenceLogo=a},"~B");d(c$,"isNormaliseSequenceLogo",function(){return this.normaliseSequenceLogo});
+e(c$,"getAlignmentAnnotation",function(){for(var a=new java.util.ArrayList,b,c=this.sequences.iterator();c.hasNext()&&((b=c.next())||1);){var f=b.getAnnotation();if(null!=f)for(var d,k=0;k<f.length&&((d=f[k])||1);k++)d.groupRef===this&&a.add(d)}null!=this.consensus&&a.add(this.consensus);null!=this.conservation&&a.add(this.conservation);return a.toArray([])});e(c$,"findAnnotation",function(a){for(var b=new java.util.ArrayList,c,f=0,d=this.getAlignmentAnnotation();f<d.length&&((c=d[f])||1);f++)c.getCalcId()===
+a&&b.add(c);return b},"~S");e(c$,"findAnnotations",function(a,b,c){for(var f=new java.util.ArrayList,d,k=0,g=this.getAlignmentAnnotation();k<g.length&&((d=g[k])||1);k++)null!=d.getCalcId()&&(d.getCalcId().equals(b)&&null!=d.sequenceRef&&d.sequenceRef===a&&null!=d.label&&d.label.equals(c))&&f.add(d);return f},"jalview.datamodel.SequenceI,~S,~S");d(c$,"hasAnnotation",function(a){if(null!=a&&!"".equals(a))for(var b,c=0,f=this.getAlignmentAnnotation();c<f.length&&((b=f[c])||1);c++)if(b.getCalcId()===
+a)return!0;return!1},"~S");d(c$,"clear",function(){this.sequences.clear()});d(c$,"setContext",function(a){this.context=a},"jalview.datamodel.AnnotatedCollectionI");e(c$,"getContext",function(){return this.context})});p("jalview.datamodel");q(["jalview.datamodel.SequenceCollectionI"],"jalview.datamodel.AnnotatedCollectionI",null,function(){M(jalview.datamodel,"AnnotatedCollectionI",jalview.datamodel.SequenceCollectionI)});p("jalview.datamodel");M(jalview.datamodel,"SequenceCollectionI");p("jalview.analysis");
+q(null,"jalview.analysis.AAFrequency","jalview.analysis.CodingUtils jalview.datamodel.Annotation jalview.util.Format $.MappingUtils $.QuickSort java.lang.Float $.StringBuilder java.util.Arrays $.Hashtable".split(" "),function(){c$=B(jalview.analysis,"AAFrequency");c$.calculate=d(c$,"calculate",function(a,c,f){return jalview.analysis.AAFrequency.calculate(a,c,f,!1)},"java.util.List,~N,~N");c$.calculate=d(c$,"calculate",function(a,c,f,d){for(var k=Array(a.size()),g=0,e=0;e<a.size();e++)k[e]=a.get(e),
+k[e].getLength()>g&&(g=k[e].getLength());a=Array(g);f>=g&&(f=g);jalview.analysis.AAFrequency.calculate(k,c,f,a,d);return a},"java.util.List,~N,~N,~B");c$.calculate=d(c$,"calculate",function(a,c,f,d,k){var g,e,j,n,x=a.length,u,m="-",p;p=w(255,0);var q;for(j=c;j<f;j++){c=new java.util.Hashtable;g=0;u="";e=0;p=w(255,0);for(n=0;n<x;n++)if(null==a[n])System.err.println("WARNING: Consensus skipping null sequence - possible race condition.");else if(q=a[n].getSequence(),q.length>j){m=q[j];if("."==m||" "==
+m)m="-";"-"==m?p[45]++:("a"<=m&&"z">=m&&(m=String.fromCharCode(m.charCodeAt(0)+-32)),e++,p[m.charCodeAt(0)]++)}else p[45]++;if(1==x)u=String.valueOf(m),g=1;else for(n=65;90>=n;n++)1>p[n]||p[n]<g||(p[n]>g?u=jalview.analysis.AAFrequency.CHARS[n-65]:p[n]==g&&(u+=jalview.analysis.AAFrequency.CHARS[n-65]),g=p[n]);0==u.length&&(u="-");k&&c.put("P",E(-1,[p,w(-1,[x,e])]));c.put("C",new Integer(g));c.put("R",u);p=100*g/x;c.put("G",new Float(p));0<e&&(p=100*g/e);c.put("N",new Float(p));d[j]=c}},"~A,~N,~N,~A,~B");
+c$.completeConsensus=d(c$,"completeConsensus",function(a,c,f,d,e,g,h){jalview.analysis.AAFrequency.completeConsensus(a,c,f,d,e,g,null,h)},"jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~B,~B,~N");c$.completeConsensus=d(c$,"completeConsensus",function(a,c,f,d,e,g,h,j){if(!(null==a||null==a.annotations||a.annotations.length<d))for(j=jalview.analysis.AAFrequency.getPercentageFormat(j);f<d;f++){var n;if(f>=c.length||null==(n=c[f]))a.annotations[f]=null;else{var x=n.get(e?"N":"G");if(null==x)a.annotations[f]=
+null;else{var x=x.floatValue(),u=n.get("R").toString(),m=new StringBuilder(64);1<u.length?(m.append("[").append(u).append("] "),u="+"):m.append(n.get("R")+" ");var p=n.get("P");if(null!=p&&g){var q=p[1][0],s=p[1][1],q=e?s:q;m.setLength(0);if(null!=h)for(s=0;s<h.length;s++){var r=100*p[0][h[s].charCodeAt(0)]/q;m.append(0==s?"":"; ").append(h[s]).append(" ").append(null!=j?j.formDouble(r):I(r)).append("%")}else{for(var t=N(p[0].length,"\x00"),r=Q(p[0].length,0),s=0;s<t.length;s++)t[s]=String.fromCharCode(s),
+r[s]=p[0][s];jalview.util.QuickSort.sortFloatChar(r,t);for(var v=0,s=t.length-1;0<p[0][t[s].charCodeAt(0)];s--){var w=t[s];"-"!=w&&(r=100*p[0][w.charCodeAt(0)]/q,m.append(0==v?"":"; ").append(w).append(" ").append(null!=j?j.formDouble(r):I(r)).append("%"),v++)}}}else m.append(null!=j?j.formDouble(x):I(x)).append("%");a.annotations[f]=new jalview.datamodel.Annotation(u,m.toString()," ",x)}}}},"jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~B,~B,~A,~N");c$.getPercentageFormat=d(c$,"getPercentageFormat",
+function(a){for(var c=0;10<=a;)c++,a/=10;return 1>=c?null:new jalview.util.Format("%3."+(c-1)+"f")},"~N");c$.extractProfile=d(c$,"extractProfile",function(a,c){var f=w(64,0),d=a.get("P");if(null==d)return null;for(var e=N(d[0].length,"\x00"),g=Q(d[0].length,0),h=0;h<e.length;h++)e[h]=String.fromCharCode(h),g[h]=d[0][h];jalview.util.QuickSort.sortFloatChar(g,e);for(var g=2,j=0,n=0,x=d[1][c?1:0],h=e.length-1;0<d[0][e[h].charCodeAt(0)];h--)if("-"!=e[h]){f[g++]=e[h].charCodeAt(0);var u=I(100*d[0][e[h].charCodeAt(0)]/
+x);f[g++]=u;j+=u;n++}f[0]=n;f[1]=j;d=w(f.length+1,0);d[0]=0;System.arraycopy(f,0,d,1,f.length);return d},"java.util.Hashtable,~B");c$.extractCdnaProfile=d(c$,"extractCdnaProfile",function(a,c){var f=a.get("P"),d=w(f.length-2,0);System.arraycopy(f,2,d,0,f.length-2);var e=w(3+2*d.length,0);e[0]=2;for(var g=N(d.length,"\x00"),h=0;h<g.length;h++)g[h]=String.fromCharCode(h);jalview.util.QuickSort.sortIntChar(d,g);for(var j=0,n=0,x=3,f=c?f[1]:f[0],h=g.length-1;0<=h;h--){var u=d[h];if(0==u)break;n++;e[x++]=
+g[h].charCodeAt(0);u=F(100*u/f);e[x++]=u;j+=u}e[2]=j;e[1]=n;return java.util.Arrays.copyOfRange(e,0,x)},"java.util.Hashtable,~B");c$.calculateCdna=d(c$,"calculateCdna",function(a,c,f,d,e){for(var g=a.getGapCharacter();d<e;d++){var h=new java.util.Hashtable,j=w(66,0);j[0]=a.getSequences().size();for(var n=0,x,u=a.getSequences().iterator();u.hasNext()&&((x=u.next())||1);)if(x.getCharAt(d)!=g){var m=jalview.util.MappingUtils.findCodonFor(x,d,c),m=jalview.analysis.CodingUtils.encodeCodon(m);0<=m&&(j[m+
+2]++,n++)}j[1]=n;h.put("P",j);f[d]=h}},"jalview.datamodel.AlignmentI,java.util.Set,~A,~N,~N");c$.completeCdnaConsensus=d(c$,"completeCdnaConsensus",function(a,c,f,d){if(!(null==a||null==a.annotations||a.annotations.length<c.length)){a.scaleColLabel=!0;for(var e=0;e<c.length;e++){var g=c[e];if(null!=g){for(var h=g.get("P"),g=0,j=N(h.length-2,"\x00"),n=2;n<h.length;n++){var x=h[n];j[n-2]=String.fromCharCode(n-2);g+=x}var u=w(h.length-2,0);System.arraycopy(h,2,u,0,h.length-2);jalview.util.QuickSort.sortIntChar(u,
+j);var n=j[j.length-1].charCodeAt(0),h=u[j.length-1],m=String.valueOf(jalview.analysis.CodingUtils.decodeCodon(n));1<u.length&&u[j.length-2]==n&&(m="+");for(var p=100*u[u.length-1]/g,q=new StringBuilder(32),s=new StringBuilder,r=null,t=null,v=jalview.analysis.AAFrequency.getPercentageFormat(d),n=j.length-1;0<=n;n--){x=u[n];if(0==x){0<s.length()&&q.append(s).append(": ").append(r).append("% ");break}var y=j[n].charCodeAt(0),r=F(100*x/g),y=String.valueOf(jalview.analysis.CodingUtils.decodeCodon(y)),
+r=null==v?Integer.toString(r):v.formLong(r);if(f||x==h)r.equals(t)&&0<n?s.append(0==s.length()?"":", "):(0<s.length()&&q.append(s).append(": ").append(t).append("% "),s.setLength(0)),s.append(y),t=r}a.annotations[e]=new jalview.datamodel.Annotation(m,q.toString()," ",p)}}}},"jalview.datamodel.AlignmentAnnotation,~A,~B,~N");G(c$,"TO_UPPER_CASE",-32,"MAXCOUNT","C","MAXRESIDUE","R","PID_GAPS","G","PID_NOGAPS","N","PROFILE","P","ENCODED_CHARS","E");c$.CHARS=c$.prototype.CHARS=Array(26);for(var a="A";"Z">=
+a;a=String.fromCharCode(a.charCodeAt(0)+1))jalview.analysis.AAFrequency.CHARS[a.charCodeAt(0)-65]=String.valueOf(a)});p("jalview.analysis");c$=B(jalview.analysis,"CodingUtils");c$.encodeCodon=d(c$,"encodeCodon",function(a){return null==a?-1:jalview.analysis.CodingUtils.encodeCodon(a[2])+(jalview.analysis.CodingUtils.encodeCodon(a[1])<<2)+(jalview.analysis.CodingUtils.encodeCodon(a[0])<<4)},"~A");c$.encodeCodon=d(c$,"encodeCodon",function(a){var b=-2147483648;switch(a){case "A":case "a":b=0;break;
+case "C":case "c":b=1;break;case "G":case "g":b=2;break;case "T":case "t":case "U":case "u":b=3}return b},"~S");c$.decodeCodon=d(c$,"decodeCodon",function(a){var b=N(3,"\x00");b[2]=jalview.analysis.CodingUtils.decodeNucleotide(a&3);a>>>=2;b[1]=jalview.analysis.CodingUtils.decodeNucleotide(a&3);b[0]=jalview.analysis.CodingUtils.decodeNucleotide(a>>>2&3);return b},"~N");c$.decodeNucleotide=d(c$,"decodeNucleotide",function(a){var b="0";switch(a){case 0:b="A";break;case 1:b="C";break;case 2:b="G";break;
+case 3:b="T"}return b},"~N");G(c$,"CODON_ENCODING_BITSHIFT",2);p("jalview.analysis");q(null,"jalview.analysis.Conservation","jalview.datamodel.Annotation $.Sequence jalview.schemes.ResidueProperties jalview.util.Comparison java.awt.Color java.lang.Character $.Double $.StringBuffer java.util.Hashtable $.Vector".split(" "),function(){c$=s(function(){this.sequences=null;this.end=this.start=0;this.seqNums=null;this.maxLength=0;this.seqNumsChanged=!1;this.total=null;this.canonicaliseAa=!0;this.qualityRange=
+this.quality=null;this.consString="";this.propHash=this.consSequence=null;this.threshold=0;this.name="";this.consSymbs=this.cons2=null;r(this,arguments)},jalview.analysis,"Conservation");J(c$,function(){this.qualityRange=Array(2)});m(c$,function(a,b,c,f,d,e){this.name=a;this.propHash=b;this.threshold=c;this.start=d;this.end=e;this.maxLength=e-d+1;var g;a=f.size();this.sequences=b=Array(a);try{for(g=0;g<a;g++)b[g]=f.get(g),b[g].getLength()>this.maxLength&&(this.maxLength=b[g].getLength())}catch(h){if(y(h,
+ArrayIndexOutOfBoundsException))this.sequences=[],this.maxLength=0;else throw h;}},"~S,java.util.Hashtable,~N,java.util.List,~N,~N");d(c$,"calcSeqNum",function(a){var b=null,c=null,b=this.sequences.length;if(-1<a&&a<b)if(b=this.sequences[a].getSequenceAsString(),this.seqNums.size()<=a&&this.seqNums.addElement(w(b.length+1,0)),b.hashCode()!=this.seqNums.elementAt(a)[0]){var f,d;this.seqNumsChanged=!0;d=b.length;this.maxLength<d&&(this.maxLength=d);c=w(d+1,0);c[0]=b.hashCode();for(f=1;f<=d;f++)c[f]=
+jalview.schemes.ResidueProperties.aaIndex[b.charCodeAt(f-1)];this.seqNums.setElementAt(c,a)}else System.out.println("SEQUENCE HAS BEEN DELETED!!!");else System.err.println("ERROR: calcSeqNum called with out of range sequence index for Alignment\n")},"~N");d(c$,"calculate",function(){var a,b,c,f=this.sequences.length,d,e,g=null,h;this.total=Array(this.maxLength);for(var j=this.start;j<=this.end;j++){d=w(255,0);for(a=0;a<f;a++)if(this.sequences[a].getLength()>j){b=this.sequences[a].getCharAt(j);if(this.canonicaliseAa)b=
+String.fromCharCode(jalview.schemes.ResidueProperties.aaIndex[this.sequences[a].getCharAt(j).charCodeAt(0)]),b=20<b.charCodeAt(0)?"-":jalview.schemes.ResidueProperties.aa[b.charCodeAt(0)].charAt(0);else{if("."==b||" "==b)b="-";!this.canonicaliseAa&&("a"<=b&&"z">=b)&&(b=String.fromCharCode(b.charCodeAt(0)-32))}d[b.charCodeAt(0)]++}else d[45]++;c=F(this.threshold*f/100);a=new java.util.Hashtable;for(var n="-";"Z">n;n=String.fromCharCode(n.charCodeAt(0)+1))if(d[n.charCodeAt(0)]>c){g=String.valueOf(n);
+for(h=this.propHash.keys();h.hasMoreElements();)e=h.nextElement(),b=this.propHash.get(e),a.containsKey(e)?!1==a.get(e).equals(b.get(g))&&a.put(e,new Integer(-1)):b.containsKey(g)?a.put(e,b.get(g)):a.put(e,b.get("-"))}0<this.total.length&&(this.total[j-this.start]=a)}});d(c$,"countConsNGaps",function(a){var b=0,c=0,f=0,d=w(2,0),e="$",g,h=this.sequences.length,j;for(g=0;g<h;g++)a>=this.sequences[g].getLength()?b++:(j=this.sequences[g].getCharAt(a),jalview.util.Comparison.isGap(j)?b++:(f++,1==f?(e=j,
+c++):e==j&&c++));d[0]=f==c?1:0;d[1]=b;return d},"~N");d(c$,"verdict",function(a,b){for(var c=new StringBuffer,f,d,e,g,h,j,n=0;n<this.start;n++)c.append("-");this.consSymbs=Array(this.end-this.start+1);for(n=this.start;n<=this.end;n++)if(e=this.countConsNGaps(n),f=e[1],f=100*f/this.sequences.length,this.consSymbs[n-this.start]=String.instantialize(),b>f){h=this.total[n-this.start];g=0;for(j=h.keys();j.hasMoreElements();)f=j.nextElement(),d=h.get(f),a?1==d.intValue()&&(this.consSymbs[n-this.start]=
+f+" "+this.consSymbs[n-this.start],g++):-1!=d.intValue()&&(this.consSymbs[n-this.start]=0==d.intValue()?this.consSymbs[n-this.start]+" !"+f:f+" "+this.consSymbs[n-this.start],g++);10>g?c.append(""+g):c.append(1==e[0]?"*":"+")}else c.append("-");this.consSequence=new jalview.datamodel.Sequence(this.name,c.toString(),this.start,this.end)},"~B,~N");d(c$,"getConsSequence",function(){return this.consSequence});d(c$,"findQuality",function(){this.findQuality(0,this.maxLength-1)});d(c$,"percentIdentity2",
+function(){this.seqNums=new java.util.Vector;for(var a=0,b=this.sequences.length,a=0;a<b;a++)this.calcSeqNum(a);if(null==this.cons2||this.seqNumsChanged){this.cons2=w(this.maxLength,24,0);for(b=0;24>b;b++)for(a=0;a<this.maxLength;a++)this.cons2[a][b]=0;for(var c,b=0;b<this.sequences.length;){c=this.seqNums.elementAt(b);for(a=1;a<c.length;a++)this.cons2[a-1][c[a]]++;for(a=c.length-1;a<this.maxLength;a++)this.cons2[a][23]++;b++}}});d(c$,"findQuality",function(a,b){this.quality=new java.util.Vector;
+var c=-1E4,f=jalview.schemes.ResidueProperties.getBLOSUM62();this.percentIdentity2();var d=this.seqNums.size(),e=w(d,0),g,h,j,n,x,u,m,p,q;for(u=0;u<d;u++)e[u]=this.seqNums.elementAt(u).length-1;for(u=a;u<=b;u++){h=0;n=U(24,0);for(g=0;24>g;g++){for(j=n[g]=0;24>j;j++)n[g]+=this.cons2[u][j]*f[g][j]+4;n[g]/=d}for(p=0;p<d;p++){g=0;x=U(24,0);q=u<e[p]?this.seqNums.elementAt(p)[u+1]:23;for(m=0;23>m;m++)j=f[m][q]+4,x[m]=n[m]-j,g+=x[m]*x[m];h+=Math.sqrt(g)}c<h&&(c=h);this.quality.addElement(new Double(h))}e=
+-1E4;for(u=a;u<=b;u++)f=this.quality.elementAt(u).doubleValue(),f=(c-f)*(d-this.cons2[u][23])/d,this.quality.setElementAt(new Double(f),u),f>e&&(e=f);this.qualityRange[0]=new Double(0);this.qualityRange[1]=new Double(e)},"~N,~N");d(c$,"completeAnnotations",function(a,b,c,f){c=this.getConsSequence().getSequence();var d=0,e=0,g;null!=a.annotations&&a.annotations.length<f&&(a.annotations=Array(f));null!=b&&(b.graphMax=this.qualityRange[1].floatValue(),null!=b.annotations&&b.annotations.length<f&&(b.annotations=
+Array(f)),d=this.qualityRange[0].floatValue(),e=this.qualityRange[1].floatValue());for(var h=0;h<f;h++){var j=0;g=c[h];Character.isDigit(g)?j=g.charCodeAt(0)-48:"*"==g?j=11:"+"==g&&(j=10);var n=j-0,n=n/11;a.annotations[h]=new jalview.datamodel.Annotation(String.valueOf(g),this.consSymbs[h-this.start]," ",j,new java.awt.Color(0.3+0.7*n,0+0.9*n,0+0*n));null!=b&&(j=this.quality.elementAt(h).floatValue(),n=j-d,n/=e,b.annotations[h]=new jalview.datamodel.Annotation(" ",String.valueOf(j)," ",j,new java.awt.Color(0.3+
+0.7*n,0+0.9*n,0+0*n)))}},"jalview.datamodel.AlignmentAnnotation,jalview.datamodel.AlignmentAnnotation,~N,~N");c$.calculateConservation=d(c$,"calculateConservation",function(a,b,c,f,d,e,g,h,j){a=new jalview.analysis.Conservation(a,b,c,f,d,e);return jalview.analysis.Conservation.calculateConservation(a,g,h,j)},"~S,java.util.Hashtable,~N,java.util.List,~N,~N,~B,~N,~B");c$.calculateConservation=d(c$,"calculateConservation",function(a,b,c,f){a.calculate();a.verdict(b,c);f&&a.findQuality();return a},"jalview.analysis.Conservation,~B,~N,~B")});
+p("jalview.datamodel");q(["jalview.datamodel.AlignmentI","$.HiddenSequences","java.util.ArrayList","$.Collections","$.LinkedHashSet"],"jalview.datamodel.Alignment","jalview.analysis.AlignmentUtils jalview.datamodel.AlignmentAnnotation $.CigarArray $.SeqCigar $.Sequence jalview.util.Comparison $.MessageManager java.lang.Error java.util.HashSet $.Hashtable $.Vector".split(" "),function(){c$=s(function(){this.groups=this.sequences=this.dataset=null;this.gapCharacter="-";this.type=1;this.$hasRNAStructure=
+!1;this.codonFrameList=this.alignmentProperties=this.hiddenSequences=this.annotations=null;this.alignmentRefs=0;this.seqrep=null;r(this,arguments)},jalview.datamodel,"Alignment",null,jalview.datamodel.AlignmentI);J(c$,function(){this.groups=java.util.Collections.synchronizedList(new java.util.ArrayList);this.hiddenSequences=new jalview.datamodel.HiddenSequences(this);this.codonFrameList=new java.util.LinkedHashSet});d(c$,"initAlignment",function(a){var b=0;this.type=jalview.util.Comparison.isNucleotide(a)?
+1:0;this.sequences=java.util.Collections.synchronizedList(new java.util.ArrayList);for(b=0;b<a.length;b++)this.sequences.add(a[b])},"~A");m(c$,function(a){for(var b=a.getSequencesArray(),c=0;c<b.length;c++)b[c]=new jalview.datamodel.Sequence(b[c]);this.codonFrameList=a.codonFrameList;this.initAlignment(b)},"jalview.datamodel.AlignmentI");m(c$,function(a){this.initAlignment(a)},"~A");c$.createAlignment=d(c$,"createAlignment",function(){throw Error(jalview.util.MessageManager.getString("error.alignment_cigararray_not_implemented"));
+},"jalview.datamodel.CigarArray");d(c$,"getSequences",function(){return this.sequences});d(c$,"getSequences",function(){return this.sequences},"java.util.Map");d(c$,"getSequencesArray",function(){return null==this.sequences?null:this.sequences.toArray(Array(this.sequences.size()))});e(c$,"getSequencesByName",function(){return jalview.analysis.AlignmentUtils.getSequencesByName(this)});e(c$,"getSequenceAt",function(a){return-1<a&&a<this.sequences.size()?this.sequences.get(a):null},"~N");e(c$,"addSequence",
+function(a){null!=this.dataset&&(null==a.getDatasetSequence()&&(a=a.deriveSequence()),this.getDataset().addSequence(a.getDatasetSequence()));null==this.sequences?this.initAlignment(E(-1,[a])):this.sequences.add(a);null!=this.hiddenSequences&&this.hiddenSequences.adjustHeightSequenceAdded()},"jalview.datamodel.SequenceI");e(c$,"setSequenceAt",function(a,b){this.deleteSequence(a);this.sequences.set(a,b)},"~N,jalview.datamodel.SequenceI");d(c$,"getGroups",function(){return this.groups});e(c$,"finalize",
+function(){null!=this.getDataset()&&this.getDataset().removeAlignmentRef();this.hiddenSequences=this.annotations=this.groups=this.sequences=this.dataset=null});d(c$,"removeAlignmentRef",function(){0==--this.alignmentRefs&&this.finalize()});d(c$,"deleteSequence",function(a){this.deleteSequence(this.findIndex(a))},"jalview.datamodel.SequenceI");d(c$,"deleteSequence",function(a){-1<a&&a<this.getHeight()&&(this.sequences.remove(a),this.hiddenSequences.adjustHeightSequenceDeleted(a))},"~N");e(c$,"findGroup",
+function(a){for(var b=0;b<this.groups.size();b++){var c=this.groups.get(b);if(c.getSequences(null).contains(a))return c}return null},"jalview.datamodel.SequenceI");e(c$,"findAllGroups",function(a){for(var b=new java.util.ArrayList,c=this.groups.size(),f=0;f<c;f++){var d=this.groups.get(f);null==d||null==d.getSequences()?(this.deleteGroup(d),c--):d.getSequences().contains(a)&&b.add(d)}a=Array(b.size());return b.toArray(a)},"jalview.datamodel.SequenceI");e(c$,"addGroup",function(a){if(!this.groups.contains(a)){if(0<
+this.hiddenSequences.getSize()){var b,c=a.getSize();for(b=0;b<c;b++)this.sequences.contains(a.getSequenceAt(b))||(a.deleteSequence(a.getSequenceAt(b),!1),c--,b--);if(1>a.getSize())return}a.setContext(this);this.groups.add(a)}},"jalview.datamodel.SequenceGroup");d(c$,"removeAnnotationForGroup",function(a){if(!(null==this.annotations||0==this.annotations.length)){var b=Array(this.annotations.length),c=Array(this.annotations.length),f,d,e;if(null==a)for(e=d=f=0;f<this.annotations.length;f++)null!=this.annotations[f].groupRef?
+b[d++]=this.annotations[f]:c[e++]=this.annotations[f];else for(e=d=f=0;f<this.annotations.length;f++)this.annotations[f].groupRef===a?b[d++]=this.annotations[f]:c[e++]=this.annotations[f];if(0<d){for(f=0;f<d;f++)this.unhookAnnotation(b[f]),b[f]=null;a=Array(e);for(f=0;f<e;f++)a[f]=c[f];this.annotations=a}}},"jalview.datamodel.SequenceGroup");e(c$,"deleteAllGroups",function(){null!=this.annotations&&this.removeAnnotationForGroup(null);for(var a,b=this.groups.iterator();b.hasNext()&&((a=b.next())||
+1);)a.setContext(null);this.groups.clear()});e(c$,"deleteGroup",function(a){this.groups.contains(a)&&(this.removeAnnotationForGroup(a),this.groups.remove(a),a.setContext(null))},"jalview.datamodel.SequenceGroup");d(c$,"findName",function(a){return this.findName(a,!1)},"~S");d(c$,"findName",function(a,b){return this.findName(null,a,b)},"~S,~B");d(c$,"findName",function(a,b,c){var f=0,d=null,d=null;if(null!=a){for(d=!1;f<this.sequences.size();)if(this.getSequenceAt(f++)===a){d=!0;break}d||(f=0)}for(;f<
+this.sequences.size();){d=this.getSequenceAt(f);d=d.getName();if(d.equals(b)||c&&d.equalsIgnoreCase(b))return this.getSequenceAt(f);f++}return null},"jalview.datamodel.SequenceI,~S,~B");e(c$,"findSequenceMatch",function(a){for(var b=new java.util.Vector,c=0;c<this.sequences.size();)this.getSequenceAt(c).getName().equals(a)&&b.addElement(this.getSequenceAt(c)),c++;a=Array(b.size());for(c=0;c<a.length;c++)a[c]=b.elementAt(c);return a},"~S");d(c$,"findIndex",function(a){for(var b=0;b<this.sequences.size();){if(a===
+this.getSequenceAt(b))return b;b++}return-1},"jalview.datamodel.SequenceI");d(c$,"findIndex",function(a){for(var b=0;b<this.sequences.size();){if(a.involvesSequence(this.getSequenceAt(b)))return b;b++}return-1},"jalview.datamodel.SearchResults");e(c$,"getHeight",function(){return this.sequences.size()});e(c$,"getWidth",function(){for(var a=-1,b=0;b<this.sequences.size();b++)this.getSequenceAt(b).getLength()>a&&(a=this.getSequenceAt(b).getLength());return a});e(c$,"setGapCharacter",function(a){this.gapCharacter=
+a;for(var b,c=this.sequences.iterator();c.hasNext()&&((b=c.next())||1);)b.setSequence(b.getSequenceAsString().$replace(".",a).$replace("-",a).$replace(" ",a))},"~S");d(c$,"getGapCharacter",function(){return this.gapCharacter});d(c$,"isAligned",function(){return this.isAligned(!1)});d(c$,"isAligned",function(a){var b=this.getWidth();if(null==this.hiddenSequences||0==this.hiddenSequences.getSize())a=!0;for(var c=0;c<this.sequences.size();c++)if((a||!this.hiddenSequences.isHidden(this.getSequenceAt(c)))&&
+this.getSequenceAt(c).getLength()!=b)return!1;return!0},"~B");e(c$,"deleteAllAnnotations",function(a){for(var b=!1,c,f=0,d=this.getAlignmentAnnotation();f<d.length&&((c=d[f])||1);f++)if(!c.autoCalculated||a)this.deleteAnnotation(c),b=!0;return b},"~B");d(c$,"deleteAnnotation",function(a){return this.deleteAnnotation(a,!0)},"jalview.datamodel.AlignmentAnnotation");d(c$,"deleteAnnotation",function(a,b){var c=1;null!=this.annotations&&(c=this.annotations.length);if(1>c)return!1;for(var f=Array(c-1),
+d=!1,e=0,g=0;g<c;g++)this.annotations[g]===a?d=!0:e<f.length&&(f[e++]=this.annotations[g]);d&&(this.annotations=f,b&&this.unhookAnnotation(a));return d},"jalview.datamodel.AlignmentAnnotation,~B");d(c$,"unhookAnnotation",function(a){null!=a.sequenceRef&&a.sequenceRef.removeAlignmentAnnotation(a);null!=a.groupRef&&(a.groupRef=null)},"jalview.datamodel.AlignmentAnnotation");d(c$,"addAnnotation",function(a){this.addAnnotation(a,-1)},"jalview.datamodel.AlignmentAnnotation");d(c$,"addAnnotation",function(a,
+b){null!=a.getRNAStruc()&&(this.$hasRNAStructure=!0);var c=1;null!=this.annotations&&(c=this.annotations.length+1);var f=Array(c),d=0;-1==b||b>=c?f[c-1]=a:f[b]=a;if(1<c)for(var e=0,d=0;d<c-1;d++,e++)e==b&&e++,e<f.length&&(f[e]=this.annotations[d]);this.annotations=f},"jalview.datamodel.AlignmentAnnotation,~N");e(c$,"setAnnotationIndex",function(a,b){if(!(null==a||null==this.annotations||this.annotations.length-1<b)){var c=this.annotations.length,f=Array(c);f[b]=a;for(var d=0;d<c;d++)d!=b&&(f[d]=d<
+b?this.annotations[d]:this.annotations[d-1]);this.annotations=f}},"jalview.datamodel.AlignmentAnnotation,~N");d(c$,"getAlignmentAnnotation",function(){return this.annotations});e(c$,"setNucleotide",function(a){this.type=a?1:0},"~B");d(c$,"isNucleotide",function(){return 1==this.type?!0:!1});e(c$,"hasRNAStructure",function(){return this.$hasRNAStructure});e(c$,"setDataset",function(a){if(null==this.dataset&&null==a){for(var b=Array(this.getHeight()),c=0;c<this.getHeight();c++)a=this.getSequenceAt(c),
+b[c]=null!=a.getDatasetSequence()?a.getDatasetSequence():a.createDatasetSequence();this.dataset=new jalview.datamodel.Alignment(b)}else if(null==this.dataset&&null!=a){this.dataset=a;for(c=0;c<this.getHeight();c++)if(a=this.getSequenceAt(c),b=a.getDatasetSequence(),null==b)b=a.createDatasetSequence(),this.dataset.addSequence(b);else{for(;null!=b.getDatasetSequence();)b=b.getDatasetSequence();-1==this.dataset.findIndex(b)&&this.dataset.addSequence(b)}}this.dataset.addAlignmentRef()},"jalview.datamodel.Alignment");
+d(c$,"addAlignmentRef",function(){this.alignmentRefs++});e(c$,"getDataset",function(){return this.dataset});e(c$,"padGaps",function(){for(var a=!1,b=-1,c,f=0;f<this.sequences.size();f++){c=this.getSequenceAt(f);for(var d=c.getLength();d>b;d--)if(d>b&&!jalview.util.Comparison.isGap(c.getCharAt(d))){b=d;break}}b++;for(f=0;f<this.sequences.size();f++)c=this.getSequenceAt(f),d=c.getLength(),d<b?(c.insertCharAt(d,b-d,this.gapCharacter),a=!0):c.getLength()>b&&c.deleteChars(b,c.getLength());return a});e(c$,
+"justify",function(a){for(var b=!1,c=-1,f=w(2*this.sequences.size(),0),d,e=0;e<this.sequences.size();e++){d=this.getSequenceAt(e);f[2*e]=d.findIndex(d.getStart());f[2*e+1]=d.findIndex(d.getStart()+d.getLength());for(var g=!1,h=0,j=d.getLength();h<j;h++)jalview.util.Comparison.isGap(d.getCharAt(h))||(g?(f[2*e+1]=h,h-f[2*e]>c&&(c=h-f[2*e])):(f[2*e]=h,g=!0))}c++;for(e=0;e<this.sequences.size();e++)d=this.getSequenceAt(e),g=1+f[2*e+1]-f[2*e],h=c-g,g=d.getLength(),a?(g>f[2*e+1]&&(d.deleteChars(f[2*e+1]+
+1,g),b=!0),f[2*e]>h?(d.deleteChars(0,f[2*e]-h),b=!0):f[2*e]<h&&(d.insertCharAt(0,h-f[2*e],this.gapCharacter),b=!0)):(0<f[2*e]&&(d.deleteChars(0,f[2*e]),b=!0,f[2*e+1]-=f[2*e],g-=f[2*e]),g>c?(d.deleteChars(c+1,g),b=!0):g<c&&(d.insertCharAt(g,c-g,this.gapCharacter),b=!0));return b},"~B");d(c$,"getHiddenSequences",function(){return this.hiddenSequences});e(c$,"getCompactAlignment",function(){for(var a=Array(this.sequences.size()),b=0,c,f=this.sequences.iterator();f.hasNext()&&((c=f.next())||1);)a[b++]=
+new jalview.datamodel.SeqCigar(c);a=new jalview.datamodel.CigarArray(a);a.addOperation("M",this.getWidth());return a});e(c$,"setProperty",function(a,b){null==this.alignmentProperties&&(this.alignmentProperties=new java.util.Hashtable);this.alignmentProperties.put(a,b)},"~O,~O");d(c$,"getProperty",function(a){return null!=this.alignmentProperties?this.alignmentProperties.get(a):null},"~O");d(c$,"getProperties",function(){return this.alignmentProperties});e(c$,"addCodonFrame",function(a){null!=a&&this.codonFrameList.add(a)},
+"jalview.datamodel.AlignedCodonFrame");e(c$,"getCodonFrame",function(a){if(null==a)return null;for(var b=new java.util.ArrayList,c,f=this.codonFrameList.iterator();f.hasNext()&&((c=f.next())||1);)c.involvesSequence(a)&&b.add(c);return b},"jalview.datamodel.SequenceI");e(c$,"setCodonFrames",function(a){this.codonFrameList=a},"java.util.Set");d(c$,"getCodonFrames",function(){return this.codonFrameList});e(c$,"removeCodonFrame",function(a){return null==a||null==this.codonFrameList?!1:this.codonFrameList.remove(a)},
+"jalview.datamodel.AlignedCodonFrame");e(c$,"append",function(a){a===this&&System.err.println("Self append may cause a deadlock.");var b=a.getGapCharacter()==this.getGapCharacter(),c=a.getGapCharacter(),f=null!=a.getHiddenSequences()&&null!=a.getHiddenSequences().hiddenSequences?a.getHiddenSequences().getFullAlignment().getSequences():a.getSequences();if(null!=f)for(var d,f=f.iterator();f.hasNext()&&((d=f.next())||1);){if(!b)for(var e=d.getSequence(),g=0;g<e.length;g++)e[g]==c&&(e[g]=this.gapCharacter);
+this.addSequence(d)}b=a.getAlignmentAnnotation();for(c=0;null!=b&&c<b.length;c++)this.addAnnotation(b[c]);this.codonFrameList.addAll(a.getCodonFrames());b=a.getGroups();if(null!=b)for(var h,b=b.iterator();b.hasNext()&&((h=b.next())||1);)this.addGroup(h);if(null!=a.getHiddenSequences()&&(h=a.getHiddenSequences(),null==this.hiddenSequences&&(this.hiddenSequences=new jalview.datamodel.HiddenSequences(this)),null!=h.hiddenSequences))for(b=0;b<h.hiddenSequences.length;b++)null!=h.hiddenSequences[b]&&this.hiddenSequences.hideSequence(h.hiddenSequences[b]);
+if(null!=a.getProperties())for(h=a.getProperties().keys();h.hasMoreElements();)if(c=h.nextElement(),b=this.getProperty(c),d=a.getProperty(c),null!=b){if(b.getClass().equals(d.getClass())&&!b.equals(d))if(v(b,String))this.setProperty(c,b+"; "+d);else if(v(b,java.util.Vector))for(c=d.elements();c.hasMoreElements();)b.addElement(c)}else this.setProperty(c,d)},"jalview.datamodel.AlignmentI");e(c$,"findOrCreateAnnotation",function(a,b,c,f,d){if(null!=this.annotations)for(var e,g=0,h=this.getAlignmentAnnotation();g<
+h.length&&((e=h[g])||1);g++)if(e.autoCalculated==c&&a.equals(e.label)&&(null==b||e.getCalcId().equals(b))&&e.sequenceRef===f&&e.groupRef===d)return e;e=new jalview.datamodel.AlignmentAnnotation(a,a,Array(1),0,0,1);e.hasText=!1;e.setCalcId(String.instantialize(b));e.autoCalculated=c;null!=f&&e.setSequenceRef(f);e.groupRef=d;this.addAnnotation(e);return e},"~S,~S,~B,jalview.datamodel.SequenceI,jalview.datamodel.SequenceGroup");e(c$,"findAnnotation",function(a){for(var b=new java.util.ArrayList,c,f=
+0,d=this.getAlignmentAnnotation();f<d.length&&((c=d[f])||1);f++)(c.getCalcId()===a||null!=c.getCalcId()&&null!=a&&c.getCalcId().equals(a))&&b.add(c);return b},"~S");e(c$,"findAnnotations",function(a,b,c){for(var f=new java.util.ArrayList,d,e=0,g=this.getAlignmentAnnotation();e<g.length&&((d=g[e])||1);e++)null!=d.getCalcId()&&(d.getCalcId().equals(b)&&null!=d.sequenceRef&&d.sequenceRef===a&&null!=d.label&&d.label.equals(c))&&f.add(d);return f},"jalview.datamodel.SequenceI,~S,~S");e(c$,"moveSelectedSequencesByOne",
+function(a,b,c){if(c){c=1;for(var f=this.sequences.size();c<f;c++){var d=this.sequences.get(c);if(a.getSequences(b).contains(d)){var e=this.sequences.get(c-1);a.getSequences(null).contains(e)||(this.sequences.set(c,e),this.sequences.set(c-1,d))}}}else for(c=this.sequences.size()-2;-1<c;c--)d=this.sequences.get(c),a.getSequences(b).contains(d)&&(e=this.sequences.get(c+1),a.getSequences(b).contains(e)||(this.sequences.set(c,e),this.sequences.set(c+1,d)))},"jalview.datamodel.SequenceGroup,java.util.Map,~B");
+e(c$,"validateAnnotation",function(a){a.validateRangeAndDisplay();this.isNucleotide()&&a.isValidStruc()&&(this.$hasRNAStructure=!0)},"jalview.datamodel.AlignmentAnnotation");e(c$,"getSeqrep",function(){return this.seqrep});e(c$,"setSeqrep",function(a){this.seqrep=a},"jalview.datamodel.SequenceI");e(c$,"hasSeqrep",function(){return null!=this.seqrep});e(c$,"getEndRes",function(){return this.getWidth()-1});e(c$,"getStartRes",function(){return 0});e(c$,"getContext",function(){return this.dataset});d(c$,
+"alignAs",function(a){return this.alignAs(a,!1,!0)},"jalview.datamodel.AlignmentI");d(c$,"alignAs",function(a,b,c){var f=0,d=this.isNucleotide(),e=!a.isNucleotide();if(!e&&!d)return jalview.analysis.AlignmentUtils.alignProteinAsDna(this,a);for(var g=this.getGapCharacter(),d=d&&e?String.valueOf(N(-1,[g,g,g])):String.valueOf(g),h,e=this.getSequences().iterator();e.hasNext()&&((h=e.next())||1);)f+=jalview.analysis.AlignmentUtils.alignSequenceAs(h,a,d,b,c)?1:0;return f},"jalview.datamodel.AlignmentI,~B,~B");
+e(c$,"getSequenceNames",function(){for(var a=new java.util.HashSet,b,c=this.getSequences().iterator();c.hasNext()&&((b=c.next())||1);)a.add(b.getName());return a});e(c$,"toString",function(){var a=this.getSequencesArray();return""+JSON.stringify(a)});G(c$,"PROTEIN",0,"NUCLEOTIDE",1)});p("jalview.datamodel");q(["jalview.datamodel.AnnotatedCollectionI"],"jalview.datamodel.AlignmentI",null,function(){M(jalview.datamodel,"AlignmentI",jalview.datamodel.AnnotatedCollectionI)});p("jalview.datamodel");q(null,
+"jalview.datamodel.HiddenSequences",["jalview.datamodel.Alignment","java.util.ArrayList"],function(){c$=s(function(){this.alignment=this.hiddenSequences=null;r(this,arguments)},jalview.datamodel,"HiddenSequences");m(c$,function(a){this.alignment=a},"jalview.datamodel.AlignmentI");d(c$,"getSize",function(){if(null==this.hiddenSequences)return 0;for(var a=0,b=0;b<this.hiddenSequences.length;b++)null!=this.hiddenSequences[b]&&a++;return a});d(c$,"getWidth",function(){for(var a=0,b=0;b<this.hiddenSequences.length;b++)null!=
+this.hiddenSequences[b]&&this.hiddenSequences[b].getLength()>a&&(a=this.hiddenSequences[b].getLength());return a});d(c$,"adjustHeightSequenceDeleted",function(a){if(null!=this.hiddenSequences){var b=this.alignment.getHeight(),b=Array(b+this.getSize());a=this.adjustForHiddenSeqs(a);for(var c=0;c<this.hiddenSequences.length;c++)null!=this.hiddenSequences[c]&&(c>a?b[c-1]=this.hiddenSequences[c]:b[c]=this.hiddenSequences[c]);this.hiddenSequences=b}},"~N");d(c$,"adjustHeightSequenceAdded",function(){if(null!=
+this.hiddenSequences){var a=this.alignment.getHeight(),a=Array(a+this.getSize());System.arraycopy(this.hiddenSequences,0,a,0,this.hiddenSequences.length);this.hiddenSequences=a}});d(c$,"hideSequence",function(a){null==this.hiddenSequences&&(this.hiddenSequences=Array(this.alignment.getHeight()));var b=this.alignment.findIndex(a),b=this.adjustForHiddenSeqs(b);null!=this.hiddenSequences[b]&&System.out.println("ERROR!!!!!!!!!!!");this.hiddenSequences[b]=a;this.alignment.deleteSequence(a)},"jalview.datamodel.SequenceI");
+d(c$,"showAll",function(a){for(var b=new java.util.ArrayList,c=0;c<this.hiddenSequences.length;c++)if(null!=this.hiddenSequences[c])for(var f,d=this.showSequence(c,a).iterator();d.hasNext()&&((f=d.next())||1);)b.add(f);return b},"java.util.Map");d(c$,"showSequence",function(a,b){var c=new java.util.ArrayList,f=this.alignment.getSequenceAt(a);null!=f&&(null!=b&&b.containsKey(f))&&(b.remove(f),c.add(f));var f=this.adjustForHiddenSeqs(a-1),d=this.adjustForHiddenSeqs(a);for(d>=this.hiddenSequences.length&&
+(d=this.hiddenSequences.length-1);d>f;d--){var e=this.hiddenSequences[d];this.hiddenSequences[d]=null;null!=e&&(0<e.getLength()?(c.add(e),(void 0).add(a,e)):System.out.println(e.getName()+" has been deleted whilst hidden"))}return c},"~N,java.util.Map");d(c$,"getHiddenSequence",function(a){return this.hiddenSequences[a]},"~N");d(c$,"findIndexWithoutHiddenSeqs",function(a){var b=0,c=0;for(this.hiddenSequences.length<=a&&(a=this.hiddenSequences.length-1);b<=a;)null!=this.hiddenSequences[b]&&c++,b++;
+return a-c},"~N");d(c$,"adjustForHiddenSeqs",function(a){for(var b=0,c=this.hiddenSequences.length;b<=a&&b<c;)null!=this.hiddenSequences[b]&&a++,b++;return a},"~N");d(c$,"getFullAlignment",function(){for(var a=Array(this.hiddenSequences.length),b=0,c=0;c<this.hiddenSequences.length;c++)null!=this.hiddenSequences[c]?a[c]=this.hiddenSequences[c]:(a[c]=this.alignment.getSequenceAt(b),b++);a=new jalview.datamodel.Alignment(a);a.annotations=this.alignment.getAlignmentAnnotation();a.alignmentProperties=
+this.alignment.getProperties();a.groups=this.alignment.getGroups();a.$hasRNAStructure=this.alignment.hasRNAStructure();return a});d(c$,"isHidden",function(a){if(null!=this.hiddenSequences)for(var b=0;b<this.hiddenSequences.length;b++)if(null!=this.hiddenSequences[b]&&this.hiddenSequences[b]===a)return!0;return!1},"jalview.datamodel.SequenceI")});q(["java.util.HashSet","$.Set"],"java.util.LinkedHashSet",["java.util.LinkedHashMap"],function(){c$=B(java.util,"LinkedHashSet",java.util.HashSet,[java.util.Set,
+Cloneable,java.io.Serializable]);m(c$,function(){t(this,java.util.LinkedHashSet,[new java.util.LinkedHashMap])});m(c$,function(a){t(this,java.util.LinkedHashSet,[new java.util.LinkedHashMap(a)])},"~N");m(c$,function(a,b){t(this,java.util.LinkedHashSet,[new java.util.LinkedHashMap(a,b)])},"~N,~N");m(c$,function(a){t(this,java.util.LinkedHashSet,[new java.util.LinkedHashMap(6>a.size()?11:2*a.size())]);var b;for(a=a.iterator();a.hasNext()&&((b=a.next())||1);)this.add(b)},"java.util.Collection");e(c$,
+"createBackingMap",function(a,b){return new java.util.LinkedHashMap(a,b)},"~N,~N")});q(["java.util.HashMap"],"java.util.LinkedHashMap",["java.lang.IllegalStateException","java.util.AbstractCollection","$.AbstractSet","java.util.MapEntry.Type","java.util.NoSuchElementException"],function(){c$=s(function(){this.accessOrder=!1;this.tail=this.head=null;r(this,arguments)},java.util,"LinkedHashMap",java.util.HashMap);m(c$,function(){t(this,java.util.LinkedHashMap);this.accessOrder=!1;this.head=null});m(c$,
+function(a){t(this,java.util.LinkedHashMap,[a]);this.accessOrder=!1;this.head=null},"~N");m(c$,function(a,b){t(this,java.util.LinkedHashMap,[a,b]);this.accessOrder=!1;this.tail=this.head=null},"~N,~N");m(c$,function(a,b,c){t(this,java.util.LinkedHashMap,[a,b]);this.accessOrder=c;this.tail=this.head=null},"~N,~N,~B");m(c$,function(a){t(this,java.util.LinkedHashMap,[]);this.accessOrder=!1;this.tail=this.head=null;this.putAll(a)},"java.util.Map");e(c$,"newElementArray",function(a){return Array(a)},"~N");
+e(c$,"get",function(a){a=this.getEntry(a);if(null==a)return null;if(this.accessOrder&&this.tail!==a){var b=a.chainBackward,c=a.chainForward;c.chainBackward=b;null!=b?b.chainForward=c:this.head=c;a.chainForward=null;a.chainBackward=this.tail;this.tail=this.tail.chainForward=a}return a.value},"~O");e(c$,"createEntry",function(a,b,c){a=new java.util.LinkedHashMap.LinkedHashMapEntry(a,c);a.next=this.elementData[b];this.elementData[b]=a;this.linkEntry(a);return a},"~O,~N,~O");e(c$,"put",function(a,b){var c=
+this.getModuloHash(a),f=this.findEntry(a,c);null==f?(this.modCount++,++this.elementCount>this.threshold&&(this.rehash(),c=null==a?0:(a.hashCode()&2147483647)%this.elementData.length),f=this.createEntry(a,c,null)):this.linkEntry(f);c=f.value;f.value=b;this.removeEldestEntry(this.head)&&this.remove(this.head.key);return c},"~O,~O");d(c$,"linkEntry",function(a){if(this.tail!==a)if(null==this.head)this.head=this.tail=a;else{var b=a.chainBackward,c=a.chainForward;null==b?null!=c?this.accessOrder&&(this.head=
+c,c.chainBackward=null,a.chainBackward=this.tail,a.chainForward=null,this.tail=this.tail.chainForward=a):(a.chainBackward=this.tail,a.chainForward=null,this.tail=this.tail.chainForward=a):null!=c&&this.accessOrder&&(b.chainForward=c,c.chainBackward=b,a.chainForward=null,a.chainBackward=this.tail,this.tail=this.tail.chainForward=a)}},"java.util.LinkedHashMap.LinkedHashMapEntry");e(c$,"entrySet",function(){return new java.util.LinkedHashMap.LinkedHashMapEntrySet(this)});e(c$,"keySet",function(){null==
+this.$keySet&&(this.$keySet=(H("java.util.LinkedHashMap$1")?0:java.util.LinkedHashMap.$LinkedHashMap$1$(),C(java.util.LinkedHashMap$1,this,null)));return this.$keySet});e(c$,"values",function(){null==this.valuesCollection&&(this.valuesCollection=(H("java.util.LinkedHashMap$2")?0:java.util.LinkedHashMap.$LinkedHashMap$2$(),C(java.util.LinkedHashMap$2,this,null)));return this.valuesCollection});e(c$,"remove",function(a){a=this.removeEntry(a);if(null==a)return null;var b=a.chainBackward,c=a.chainForward;
+null!=b?b.chainForward=c:this.head=c;null!=c?c.chainBackward=b:this.tail=b;return a.value},"~O");d(c$,"removeEldestEntry",function(){return!1},"java.util.Map.Entry");d(c$,"clear",function(){K(this,java.util.LinkedHashMap,"clear",[]);this.head=this.tail=null});d(c$,"clone",function(){var a=K(this,java.util.LinkedHashMap,"clone",[]);a.clear();for(var b,c=this.entrySet().iterator();c.hasNext()&&((b=c.next())||1);)a.put(b.getKey(),b.getValue());return a});c$.$LinkedHashMap$1$=function(){A(self.c$);c$=
+L(java.util,"LinkedHashMap$1",java.util.AbstractSet);e(c$,"contains",function(a){return this.b$["java.util.LinkedHashMap"].containsKey(a)},"~O");e(c$,"size",function(){return this.b$["java.util.LinkedHashMap"].size()});e(c$,"clear",function(){this.b$["java.util.LinkedHashMap"].clear()});e(c$,"remove",function(a){return this.b$["java.util.LinkedHashMap"].containsKey(a)?(this.b$["java.util.LinkedHashMap"].remove(a),!0):!1},"~O");e(c$,"iterator",function(){return new java.util.LinkedHashMap.LinkedHashIterator((H("java.util.LinkedHashMap$1$1")?
+0:java.util.LinkedHashMap.$LinkedHashMap$1$1$(),C(java.util.LinkedHashMap$1$1,this,null)),this.b$["java.util.LinkedHashMap"])});c$=z()};c$.$LinkedHashMap$1$1$=function(){A(self.c$);c$=L(java.util,"LinkedHashMap$1$1",null,java.util.MapEntry.Type);e(c$,"get",function(a){return a.key},"java.util.MapEntry");c$=z()};c$.$LinkedHashMap$2$=function(){A(self.c$);c$=L(java.util,"LinkedHashMap$2",java.util.AbstractCollection);e(c$,"contains",function(a){return this.b$["java.util.LinkedHashMap"].containsValue(a)},
+"~O");e(c$,"size",function(){return this.b$["java.util.LinkedHashMap"].size()});e(c$,"clear",function(){this.b$["java.util.LinkedHashMap"].clear()});e(c$,"iterator",function(){return new java.util.LinkedHashMap.LinkedHashIterator((H("java.util.LinkedHashMap$2$1")?0:java.util.LinkedHashMap.$LinkedHashMap$2$1$(),C(java.util.LinkedHashMap$2$1,this,null)),this.b$["java.util.LinkedHashMap"])});c$=z()};c$.$LinkedHashMap$2$1$=function(){A(self.c$);c$=L(java.util,"LinkedHashMap$2$1",null,java.util.MapEntry.Type);
+e(c$,"get",function(a){return a.value},"java.util.MapEntry");c$=z()};A(self.c$);c$=B(java.util.LinkedHashMap,"LinkedHashIterator",java.util.HashMap.HashMapIterator);m(c$,function(a,b){t(this,java.util.LinkedHashMap.LinkedHashIterator,[a,b]);this.entry=b.head},"java.util.MapEntry.Type,java.util.LinkedHashMap");e(c$,"hasNext",function(){return null!=this.entry});e(c$,"next",function(){this.checkConcurrentMod();if(!this.hasNext())throw new java.util.NoSuchElementException;var a=this.type.get(this.entry);
+this.lastEntry=this.entry;this.entry=this.entry.chainForward;this.canRemove=!0;return a});e(c$,"remove",function(){this.checkConcurrentMod();if(!this.canRemove)throw new IllegalStateException;this.canRemove=!1;this.associatedMap.modCount++;var a=this.associatedMap.getModuloHash(this.lastEntry.key),b=this.associatedMap.elementData[a];if(b===this.lastEntry)this.associatedMap.elementData[a]=this.lastEntry.next;else{for(;null!=b.next&&b.next!==this.lastEntry;)b=b.next;b.next=this.lastEntry.next}var b=
+this.lastEntry,a=b.chainBackward,b=b.chainForward,c=this.associatedMap;null!=a?(a.chainForward=b,null!=b?b.chainBackward=a:c.tail=a):(c.head=b,null!=b?b.chainBackward=null:c.tail=null);this.associatedMap.elementCount--;this.expectedModCount++});c$=z();A(self.c$);c$=B(java.util.LinkedHashMap,"LinkedHashMapEntrySet",java.util.HashMap.HashMapEntrySet);e(c$,"iterator",function(){return new java.util.LinkedHashMap.LinkedHashIterator((H("java.util.LinkedHashMap$LinkedHashMapEntrySet$1")?0:java.util.LinkedHashMap.LinkedHashMapEntrySet.$LinkedHashMap$LinkedHashMapEntrySet$1$(),
+C(java.util.LinkedHashMap$LinkedHashMapEntrySet$1,this,null)),this.hashMap())});c$.$LinkedHashMap$LinkedHashMapEntrySet$1$=function(){A(self.c$);c$=L(java.util,"LinkedHashMap$LinkedHashMapEntrySet$1",null,java.util.MapEntry.Type);e(c$,"get",function(a){return a},"java.util.MapEntry");c$=z()};c$=z();A(self.c$);c$=s(function(){this.chainBackward=this.chainForward=null;r(this,arguments)},java.util.LinkedHashMap,"LinkedHashMapEntry",java.util.HashMap.Entry);m(c$,function(a,b){t(this,java.util.LinkedHashMap.LinkedHashMapEntry,
+[a,b]);this.chainBackward=this.chainForward=null},"~O,~O");d(c$,"clone",function(){var a=K(this,java.util.LinkedHashMap.LinkedHashMapEntry,"clone",[]);a.chainBackward=this.chainBackward;a.chainForward=this.chainForward;var b=a.next;null!=b&&(a.next=b.clone());return a});c$=z()});p("jalview.datamodel");q(["jalview.datamodel.CigarBase"],"jalview.datamodel.CigarArray",["jalview.datamodel.CigarCigar","$.SeqCigar","java.lang.StringBuffer","java.util.Vector"],function(){c$=s(function(){this.refCigars=null;
+this.seqcigararray=!1;r(this,arguments)},jalview.datamodel,"CigarArray",jalview.datamodel.CigarBase);d(c$,"isSeqCigarArray",function(){return this.seqcigararray});m(c$,function(a){t(this,jalview.datamodel.CigarArray);this.seqcigararray=!0;if(null!=a&&0<a.length){this.refCigars=Array(a.length);for(var b=0;b<a.length;b++)this.refCigars[b]=a[b],!v(a[b],jalview.datamodel.SeqCigar)&&!v(a[b],jalview.datamodel.CigarCigar)&&(this.seqcigararray=!1)}},"~A");m(c$,function(a,b,c){this.construct(jalview.datamodel.CigarArray.constructSeqCigarArray(a,
+c));this.constructFromAlignment(a,null!=b?b.getHiddenColumns():null,c)},"jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");c$._calcStartEndBounds=d(c$,"_calcStartEndBounds",function(a,b){var c=w(-1,[0,0,0]);null!=b?(c[0]=b.getSize(),c[1]=b.getStartRes(),c[2]=b.getEndRes()):(c[0]=a.getHeight(),c[2]=a.getWidth()-1);return c},"jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");c$.constructSeqCigarArray=d(c$,"constructSeqCigarArray",function(a,
+b){var c=null,f,d,c=jalview.datamodel.CigarArray._calcStartEndBounds(a,b),e=c[1],g=c[2];null!=b?(d=b.getSize(),c=b.getSequencesInOrder(a),e=b.getStartRes(),g=b.getEndRes()):(d=a.getHeight(),c=a.getSequencesArray(),g=a.getWidth()-1);var h=Array(d);for(f=0;f<d;f++)h[f]=new jalview.datamodel.SeqCigar(c[f],e,g);return h},"jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");d(c$,"constructFromAlignment",function(a,b,c){a=jalview.datamodel.CigarArray._calcStartEndBounds(a,c);c=a[1];a=a[2];if(null!=
+b){for(var f,d=c,e=0;(new Boolean(d<a&e<b.size())).valueOf();e++){f=b.get(e);c=f[0];f=f[1];if(c<d)if(f>d)c=d;else continue;if(c>a)break;f>a&&(f=a);if(c>f)break;d<c&&this.addOperation("M",c-d);this.addOperation("D",1+f-c);d=f+1}d<a&&this.addOperation("M",a-d+1)}else this.addOperation("M",a-c+1)},"jalview.datamodel.AlignmentI,java.util.List,jalview.datamodel.SequenceGroup");d(c$,"getArrayofSequenceAndDeletions",function(a){if(null==this.refCigars||0==this.refCigars.length||0==this.length)return null;
+for(var b=Array(this.refCigars.length),c=0;c<this.refCigars.length;c++){var f=this.refCigars[c].getSequenceString(a);b[c]=null!=f?this.getSequenceAndDeletions(f,a):null}return b},"~S");d(c$,"getSequenceString",function(a){if(0==this.length||null==this.refCigars)return"";var b=new StringBuffer;a=this.getArrayofSequenceAndDeletions(a);for(var c=0;c<this.refCigars.length;c++)null!=a[c]&&(b.append(a[c][0]),a[c][0]=null),b.append("\n");return b.toString()},"~S");d(c$,"getSequenceStrings",function(a){if(0==
+this.length||null==this.refCigars||0==this.refCigars.length)return null;a=this.getArrayofSequenceAndDeletions(a);for(var b=Array(a.length),c=0;c<this.refCigars.length;c++)b[c]=a[c][0];return b},"~S");d(c$,"applyDeletions",function(){var a=null;if(0==this.length)return null;for(var b=0,c=0,f=0,d=0;d<this.length;)if("D"!=this.operation[d])"M"==this.operation[d]&&(b+=this.range[d]),c+=this.range[d++];else{null==a&&(a=new java.util.Vector);var e=b,g=b+this.range[d]-1;a.addElement(w(-1,[c+f,this.range[d]]));
+f+=this.range[d]-1;System.arraycopy(this.operation,d+1,this.operation,d,this.length-d);System.arraycopy(this.range,d+1,this.range,d,this.length-d);this.length--;for(var h=0;h<this.refCigars.length;h++)this.refCigars[h].deleteRange(e,g)}if(null!=a){b=w(2*a.size(),0);c=0;for(f=a.size();c<f;c++)d=a.elementAt(c),b[2*c]=d[0],b[2*c+1]=d[1],a.setElementAt(null,c);return b}return null});d(c$,"getSeqCigarArray",function(){if(!this.isSeqCigarArray())return null;for(var a=Array(this.refCigars.length),b=0;b<
+this.refCigars.length;b++)a[b]=this.refCigars[b];return a})});p("jalview.datamodel");q(null,"jalview.datamodel.CigarBase","jalview.util.MessageManager java.lang.Error $.Exception $.StringBuffer java.util.Vector JU.AU".split(" "),function(){c$=s(function(){this.length=0;this._inc_length=10;this.range=this.operation=null;r(this,arguments)},jalview.datamodel,"CigarBase");m(c$,function(){});d(c$,"getSequenceAndDeletions",function(a,b){var c=0,f=JU.AU.newInt2(this.length),d=null,e=new StringBuffer,g=0,
+h=0,j=0,n=0,x=0,u=0,m=-1,p=!1;if(0==this.length)return null;null!=a&&(c=a.length);for(var q=!0,s=0;s<this.length;s++)switch(this.operation[s]){case "D":p||(f[++m]=w(-1,[g,0,h]));g+=this.range[s];f[m][1]=g-1;p=!0;break;case "I":for(var p=!1,r=0;r<this.range[s];r++)e.append(b),h++;break;case "M":p=!1;q&&(j=g,n=h,q=!1);if(null!=a)if(x=g+this.range[s],x>c)for(e.append(a.substring(g,c));x-- >=c;)e.append(b);else e.append(a.substring(g,x));h+=this.range[s];g+=this.range[s];x=g-1;u=h;break;default:throw Error(jalview.util.MessageManager.formatMessage("error.unknown_seq_cigar_operation",
+E(-1,[(new StringBuffer(this.operation[s].charCodeAt(0))).toString()])));}0<++m&&(d=w(m,0),System.arraycopy(f,0,d,0,m));return E(-1,[null!=a?e.toString():null,w(-1,[j,n,x,u]),d])},"~S,~S");d(c$,"compact_operations",function(){var a=1;if(null!=this.operation)for(var b=this.operation[0];a<this.length;)if(b==this.operation[a]){this.range[a-1]+=this.range[a];var c=this.length-a;0<c&&(System.arraycopy(this.range,a+1,this.range,a,c),System.arraycopy(this.operation,a+1,this.operation,a,c));this.length--}else b=
+this.operation[a++]});c$.parseCigarString=d(c$,"parseCigarString",function(a){for(var b=0,c=0,f=a.length;c<f;c++){var d=a.charAt(c);("M"==d||45==d.charCodeAt(0)||"I"==d||41==d.charCodeAt(0)||"D"==d||36==d.charCodeAt(0))&&b++}for(var e=N(b,"\x00"),b=w(b,0),g=0,c=0,f=a.length;c<f;){var h=c;do d=a.charAt(h++);while("0"<=d&&"9">=d&&h<f);if(h>=f&&"0"<=d&&"9">=d)throw new Exception(jalview.util.MessageManager.getString("exception.unterminated_cigar_string"));try{var j=a.substring(c,h-1);b[g]=Integer.parseInt(j);
+c=h}catch(n){if(y(n,Exception))throw Error(jalview.util.MessageManager.getString("error.implementation_bug_parse_cigar_string"));throw n;}"a"<=d&&"z">=d&&(d=String.fromCharCode(d.charCodeAt(0)-32));if("M"==d||"I"==d||"D"==d)e[g++]=d;else throw new Exception(jalview.util.MessageManager.formatMessage("exception.unexpected_operation_cigar_string_pos",E(-1,[(new StringBuffer(d.charCodeAt(0))).toString(),Integer.$valueOf(c).toString(),a])));}return E(-1,[e,b])},"~S");d(c$,"addOperation",function(a,b){"a"<=
+a&&"z">=a&&(a=String.fromCharCode(a.charCodeAt(0)-32));if("M"!=a&&"D"!=a&&"I"!=a)throw Error(jalview.util.MessageManager.getString("error.implementation_error_invalid_operation_string"));if(0!=b){if(0>b)throw Error(jalview.util.MessageManager.getString("error.invalid_range_string"));null==this.operation&&(this.operation=N(this._inc_length,"\x00"),this.range=w(this._inc_length,0));if(this.length+1==this.operation.length){var c=this.operation;this.operation=N(this.length+1+this._inc_length,"\x00");
+System.arraycopy(c,0,this.operation,0,this.length);c=this.range;this.range=w(this.length+1+this._inc_length,0);System.arraycopy(c,0,this.range,0,this.length)}0<this.length&&this.operation[this.length-1]==a?this.length--:this.range[this.length]=0;this.operation[this.length]=a;this.range[this.length++]+=b}},"~S,~N");d(c$,"deleteRange",function(a,b){var c=0;if(0==this.length)return c;if(0>a||a>b)throw Error(jalview.util.MessageManager.getString("error.implementation_error_delete_range_out_of_bounds"));
+var f=0,d=1+b-a,e=this.length,g=0,h=!1,j=this.operation,n=this.range;this.length=0;this.range=this.operation=null;for(this.compact_operations();g<e&&f<=b&&0<d;)if("D"==j[g])this.addDeleted(n[g++]);else{var x=n[g];if(!h){if(f+x<=a){this.addOperation(j[g],n[g]);f+=n[g++];continue}h=!0;0<a-f&&(this.addOperation(j[g],a-f),x-=a-f)}if(g<e&&h&&0<d&&0<x){switch(j[g]){case "M":d>x?(this.addDeleted(x),c+=x):(c+=d,this.addDeleted(d),0<x-d&&this.addOperation("M",x-d),x=d=0);break;case "I":0<x-d&&(this.addInsertion(x-
+d),d=0);break;case "D":throw Error(jalview.util.MessageManager.getString("error.implementation_error"));default:throw Error(jalview.util.MessageManager.formatMessage("error.implementation_error_unknown_operation",E(-1,[(new StringBuffer(j[g].charCodeAt(0))).toString()])));}d-=x;++g}}for(;g<e;)this.addOperation(j[g],n[g++]);return c},"~N,~N");d(c$,"hasDeletedRegions",function(){for(var a=0;a<this.length;a++)if("D"==this.operation[a])return!0;return!1});d(c$,"getDeletedRegions",function(){if(0==this.length)return null;
+for(var a=new java.util.Vector,b=0,c=0,f=0;f<this.length;f++)switch(this.operation[f]){case "M":b+=this.range[f];case "I":c+=this.range[f];break;case "D":a.addElement(w(-1,[c,b,this.range[f]])),b+=this.range[f]}if(0==a.size())return null;b=w(3*a.size(),0);f=0;for(c=a.size();f<c;f++){var d=a.elementAt(f);b[3*f]=d[0];b[3*f+1]=d[1];b[3*f+2]=d[2]}return b});d(c$,"getFullWidth",function(){var a=0;if(null!=this.range)for(var b=0;b<this.length;b++)a+=this.range[b];return a});d(c$,"getWidth",function(){var a=
+0;if(null!=this.range)for(var b=0;b<this.length;b++)if("M"==this.operation[b]||"I"==this.operation[b])a+=this.range[b];return a});d(c$,"addInsertion",function(a){this.addOperation("I",a)},"~N");d(c$,"addDeleted",function(a){this.addOperation("D",a)},"~N");d(c$,"getCigarstring",function(){for(var a=new StringBuffer,b=0;b<this.length;b++)a.append(""+this.range[b]),a.append(this.operation[b]);return a.toString()});G(c$,"D","D","I","I","M","M","_case_shift",String.fromCharCode(32))});p("jalview.datamodel");
+q(["jalview.datamodel.CigarSimple"],"jalview.datamodel.CigarCigar",null,function(){c$=s(function(){this.refCigar=null;r(this,arguments)},jalview.datamodel,"CigarCigar",jalview.datamodel.CigarSimple);m(c$,function(a){t(this,jalview.datamodel.CigarCigar);this.refCigar=a},"jalview.datamodel.SeqCigar");e(c$,"getSequenceString",function(a){if(0==this.length)return"";var b=this.refCigar.getSequenceString(a);return null!=b?0==this.length?"":this.getSequenceAndDeletions(b,a)[0]:null},"~S")});p("jalview.datamodel");
+q(["jalview.datamodel.CigarBase"],"jalview.datamodel.CigarSimple",null,function(){c$=B(jalview.datamodel,"CigarSimple",jalview.datamodel.CigarBase)});p("jalview.datamodel");q(["jalview.datamodel.CigarSimple"],"jalview.datamodel.SeqCigar","jalview.analysis.AlignSeq $.SeqsetUtils jalview.datamodel.Sequence jalview.util.Comparison $.MessageManager $.ShiftList java.lang.Error $.StringBuffer java.util.Hashtable".split(" "),function(){c$=s(function(){this.end=this.start=0;this.selGroups=this.seqProps=this.refseq=
+null;r(this,arguments)},jalview.datamodel,"SeqCigar",jalview.datamodel.CigarSimple);d(c$,"getRefSeq",function(){return this.refseq});d(c$,"getStart",function(){return this.start});d(c$,"getEnd",function(){return this.end});e(c$,"getSequenceString",function(a){return 0==this.length?"":this.getSequenceAndDeletions(this.refseq.getSequenceAsString(this.start,this.end),a)[0]},"~S");d(c$,"getSeq",function(a){if(null==this.refseq||0==this.length)return null;a=this.getSequenceAndDeletions(this.refseq.getSequenceAsString(this.start,
+this.end),a);if(null==a)throw Error(jalview.util.MessageManager.getString("error.implementation_error_unexpected_null_from_get_sequence_and_deletions"));var b=a[1];a=new jalview.datamodel.Sequence(this.refseq.getName(),a[0],this.refseq.getStart()+this.start+b[0],this.refseq.getStart()+this.start+(0==b[2]?-1:b[2]));a.setDescription(this.refseq.getDescription());var b=a.getStart(),c=a.getEnd();null!=this.seqProps&&jalview.analysis.SeqsetUtils.SeqCharacterUnhash(a,this.seqProps);a.setDatasetSequence(this.refseq);
+a.setStart(b);a.setEnd(c);return a},"~S");d(c$,"_setSeq",function(a,b,c,f){var d=!1;if(null==a)throw Error(jalview.util.MessageManager.getString("error.implementation_error_set_seq_null"));if(0>c)throw Error(jalview.util.MessageManager.formatMessage("error.implementation_error_s",E(-1,[Integer.$valueOf(c).toString()])));var e=a.getSequenceAsString();if(0==f||f<c||f>e.length)f=e.length;this.start=a.findPosition(c)-a.getStart();this.end=a.findPosition(f)-a.getStart();var g=this.end-this.start,h=a.getDatasetSequence();
+null==h&&(h=jalview.analysis.AlignSeq.extractGaps(jalview.util.Comparison.GapChars,String.instantialize(e)),g=h.length,h=g==a.getLength()?a:new jalview.datamodel.Sequence(a.getName(),h,a.getStart(),a.getStart()+h.length-1));h.getStart()<a.getStart()&&(e=a.getStart()-h.getStart(),b?(this.addDeleted(c+e),this.start=0):this.start+=e,this.end+=e);g!=f-c&&(d=!0);this.refseq=h;this.seqProps=jalview.analysis.SeqsetUtils.SeqCharacterHash(a);if(this.end>h.getLength())throw Error(jalview.util.MessageManager.getString("error.implementation_error_seqcigar_possible"));
+return d},"jalview.datamodel.SequenceI,~B,~N,~N");m(c$,function(a,b,c){t(this,jalview.datamodel.SeqCigar);if(null==a)throw Error(jalview.util.MessageManager.getString("error.implmentation_bug_seq_null"));if(b.length!=c.length)throw Error(jalview.util.MessageManager.getString("error.implementation_bug_cigar_operation_list_range_list"));if(null!=b){this.operation=N(b.length+this._inc_length,"\x00");this.range=w(b.length+this._inc_length,0);if(this._setSeq(a,!1,0,0))throw Error(jalview.util.MessageManager.getString("error.not_yet_implemented_cigar_object_from_cigar_string"));
+a=this.length;for(var f=0;f<b.length;a++,f++){var d=b[f];if("M"!=d&&"I"!=d&&"D"!=d)throw Error(jalview.util.MessageManager.formatMessage("error.implementation_bug_cigar_operation",E(-1,[Integer.$valueOf(f).toString(),Integer.$valueOf(d.charCodeAt(0)).toString(),Integer.$valueOf(77).toString(),Integer.$valueOf(73).toString(),Integer.$valueOf(68).toString()])));this.operation[a]=d;this.range[a]=c[f]}this.length+=b.length}else if(this.range=this.operation=null,this.length=0,this._setSeq(a,!1,0,0))throw Error(jalview.util.MessageManager.getString("error.not_yet_implemented_cigar_object_from_cigar_string"));
+},"jalview.datamodel.SequenceI,~A,~A");d(c$,"addMatch",function(a){this.addOperation("M",a)},"~N");c$.addSequenceOps=d(c$,"addSequenceOps",function(a,b,c,f,d){var e="\x00",g=0,h=0,j=b.getLength();for(d||(h=c);h<=f;)d=h<j?jalview.util.Comparison.isGap(b.getCharAt(h)):!0,c<=h&&h<=f?(d?(0<g&&"I"!=e&&(a.addOperation(e,g),g=0),e="I"):(0<g&&"M"!=e&&(a.addOperation(e,g),g=0),e="M"),g++):d||(0<g&&"D"!=e&&(a.addOperation(e,g),g=0),e="D",g++),h++;0<g&&a.addOperation(e,g)},"jalview.datamodel.CigarBase,jalview.datamodel.SequenceI,~N,~N,~B");
+m(c$,function(a){t(this,jalview.datamodel.SeqCigar);if(null==a)throw Error(jalview.util.MessageManager.getString("error.implementation_error_for_new_cigar"));this._setSeq(a,!1,0,0);jalview.datamodel.SeqCigar.addSequenceOps(this,a,0,a.getLength()-1,!1)},"jalview.datamodel.SequenceI");m(c$,function(a,b,c){t(this,jalview.datamodel.SeqCigar);if(null==a)throw Error(jalview.util.MessageManager.getString("error.implementation_error_for_new_cigar"));this._setSeq(a,!1,b,c+1);jalview.datamodel.SeqCigar.addSequenceOps(this,
+a,b,c,!1)},"jalview.datamodel.SequenceI,~N,~N");c$.parseCigar=d(c$,"parseCigar",function(a,b){var c=jalview.datamodel.CigarBase.parseCigarString(b);return new jalview.datamodel.SeqCigar(a,c[0],c[1])},"jalview.datamodel.SequenceI,~S");c$.createAlignmentSequences=d(c$,"createAlignmentSequences",function(a,b,c,f){for(var d=Array(a.length),e=Array(a.length),g=Array(a.length),h=Array(a.length),j=0;j<a.length;j++){g[j]=a[j].getRefSeq().getSequenceAsString(a[j].start,a[j].end);h[j]=a[j].getSequenceAndDeletions(g[j],
+b);if(null==h[j])throw Error(jalview.util.MessageManager.formatMessage("error.implementation_error_cigar_seq_no_operations",E(-1,[Integer.$valueOf(j).toString()])));e[j]=new StringBuffer(h[j][0])}for(var n=new jalview.util.ShiftList,j=0;j<a.length;j++){var x=h[j][2];if(null!=x)for(var u=0;u<x.length;u++){for(var m=x[u],p=N(m[1]-m[0]+1,"\x00"),q=0;q<p.length;q++)p[q]=b;for(var s=n.shift(m[2]),q=0;q<a.length;q++)if(q!=j){if(e[q].length()<=s)for(var r=s-e[q].length();0<r;r--)e[q].append(b);e[q].insert(s,
+p)}else e[q].insert(s,g[j].substring(m[0],m[1]+1));n.addShift(m[2],p.length);null==f&&c.hideColumns(s,s+p.length-1)}}for(j=0;j<a.length;j++)b=h[j][1],g=a[j].getRefSeq(),d[j]=new jalview.datamodel.Sequence(g.getName(),e[j].toString(),g.getStart()+a[j].start+b[0],g.getStart()+a[j].start+(0==b[2]?-1:b[2])),d[j].setDatasetSequence(g),d[j].setDescription(g.getDescription());if(null!=f)for(j=0;j<f.length;j+=3)c.hideColumns(f[j+1],f[j+1]+f[j+2]-1);return d},"~A,~S,jalview.datamodel.ColumnSelection,~A");
+d(c$,"setGroupMembership",function(a){null==this.selGroups&&(this.selGroups=new java.util.Hashtable);this.selGroups.put(a,w(0,0))},"~O");d(c$,"removeGroupMembership",function(a){return null!=this.selGroups&&this.selGroups.containsKey(a)?(this.selGroups.remove(a),!0):!1},"~O");d(c$,"clearMemberships",function(){null!=this.selGroups&&this.selGroups.clear();this.selGroups=null});d(c$,"getAllMemberships",function(){if(null==this.selGroups)return null;for(var a=Array(this.selGroups.size()),b=this.selGroups.keys(),
+c=0;b.hasMoreElements();c++)a[c]=b.nextElement();return a});d(c$,"isMemberOf",function(a){return null!=this.selGroups&&null!=this.selGroups.get(a)},"~O")});p("jalview.analysis");q(null,"jalview.analysis.SeqsetUtils","jalview.analysis.AlignSeq $.SequenceIdMatcher jalview.datamodel.Sequence jalview.util.Comparison java.util.Hashtable $.Vector".split(" "),function(){c$=B(jalview.analysis,"SeqsetUtils");c$.SeqCharacterHash=d(c$,"SeqCharacterHash",function(a){var b=new java.util.Hashtable;b.put("Name",
+a.getName());b.put("Start",new Integer(a.getStart()));b.put("End",new Integer(a.getEnd()));null!=a.getDescription()&&b.put("Description",a.getDescription());var c=new java.util.Vector,f=a.getSequenceFeatures();if(null!=f&&0<f.length)for(var d=0;d<f.length;d++)c.addElement(f[d]);b.put("SeqFeatures",c);b.put("PdbId",null!=a.getPDBId()?a.getPDBId():new java.util.Vector);b.put("datasetSequence",null!=a.getDatasetSequence()?a.getDatasetSequence():new jalview.datamodel.Sequence("THISISAPLACEHOLDER",""));
+return b},"jalview.datamodel.SequenceI");c$.SeqCharacterUnhash=d(c$,"SeqCharacterUnhash",function(a,b){var c=!0;if(null==b)return!1;var f=b.get("Name"),d=b.get("Start"),e=b.get("End"),g=b.get("SeqFeatures"),h=b.get("PdbId"),j=b.get("Description"),n=b.get("datasetSequence");null==f?c=!1:a.setName(f);null!=h&&0<h.size()&&a.setPDBId(h);null!=d&&null!=e&&(a.setStart(d.intValue()),a.setEnd(e.intValue()));if(null!=g&&0<g.size()){f=Array(g.size());d=0;for(e=g.size();d<e;d++)f[d]=g.elementAt(d);a.setSequenceFeatures(f)}null!=
+j&&a.setDescription(j);null!=n&&!(n.getName().equals("THISISAPLACEHOLDER")&&0==n.getLength())&&a.setDatasetSequence(n);return c},"jalview.datamodel.SequenceI,java.util.Hashtable");c$.unique_name=d(c$,"unique_name",function(a){return String.instantialize("Sequence"+a)},"~N");c$.uniquify=d(c$,"uniquify",function(a,b){for(var c=new java.util.Hashtable,f=0;f<a.length;f++){var d=jalview.analysis.SeqsetUtils.unique_name(f);c.put(d,jalview.analysis.SeqsetUtils.SeqCharacterHash(a[f]));b&&a[f].setName(d)}return c},
+"~A,~B");c$.deuniquify=d(c$,"deuniquify",function(a,b){return jalview.analysis.SeqsetUtils.deuniquify(a,b,!0)},"java.util.Hashtable,~A");c$.deuniquify=d(c$,"deuniquify",function(a,b,c){for(var f=new jalview.analysis.SequenceIdMatcher(b),d=null,e=a.keys(),g=new java.util.Vector,d=0,h=b.length;d<h;d++)g.addElement(b[d]);for(;e.hasMoreElements();)b=e.nextElement(),v(b,String)&&(null!=(d=f.findIdMatch(b))?(b=a.get(b),g.removeElement(d),jalview.analysis.SeqsetUtils.SeqCharacterUnhash(d,b)):c||System.err.println("Can't find '"+
+b+"' in uniquified alignment"));if(0<g.size()&&!c){System.err.println("Did not find matches for :");for(d=g.elements();d.hasMoreElements();System.out.println(d.nextElement().getName()));return!1}return!0},"java.util.Hashtable,~A,~B");c$.getNonEmptySequenceSet=d(c$,"getNonEmptySequenceSet",function(a){for(var b=X(a.length,!1),c=0,f=0,d=a.length;f<d;f++)0==jalview.analysis.AlignSeq.extractGaps(jalview.util.Comparison.GapChars,a[f].getSequenceAsString()).length?b[f]=!1:(b[f]=!0,c++);if(0==c)return null;
+for(var c=Array(c),f=0,d=a.length,e=0;f<d;f++)b[f]&&(c[e++]=a[f]);return c},"~A")});p("jalview.datamodel");q(null,"jalview.datamodel.FeatureProperties",["jalview.datamodel.DBRefSource"],function(){c$=B(jalview.datamodel,"FeatureProperties");c$.isCodingFeature=d(c$,"isCodingFeature",function(a,b){return b.equalsIgnoreCase("CDS")?null==a||a.equalsIgnoreCase(jalview.datamodel.DBRefSource.EMBL)||a.equalsIgnoreCase(jalview.datamodel.DBRefSource.EMBLCDS):!1},"~S,~S");c$.getCodingFeature=d(c$,"getCodingFeature",
+function(a){return jalview.datamodel.DBRefSource.EMBL.equalsIgnoreCase(a)||jalview.datamodel.DBRefSource.EMBLCDS.equalsIgnoreCase(a)?"CDS":null},"~S");G(c$,"EMBL_CODING_FEATURE","CDS","EXONPOS","exon number","EXONPRODUCT","product")});p("jalview.util");q(["java.util.HashMap"],"jalview.util.DBRefUtils","jalview.datamodel.DBRefEntry $.DBRefSource $.PDBEntry jalview.jsdev.RegExp java.util.ArrayList $.Hashtable".split(" "),function(){c$=B(jalview.util,"DBRefUtils");c$.selectRefs=d(c$,"selectRefs",function(a,
+b){if(null==a)return null;if(null==b)return a;for(var c=new java.util.HashMap,f=new java.util.ArrayList,d=0;d<b.length;d++)c.put(String.instantialize(b[d]),new Integer(d));for(var d=0,e=a.length;d<e;d++)c.containsKey(a[d].getSource())&&f.add(a[d]);return 0<f.size()?(c=Array(f.size()),f.toArray(c)):null},"~A,~A");c$.isDasCoordinateSystem=d(c$,"isDasCoordinateSystem",function(a,b){if(null==a||null==b)return!1;var c=jalview.util.DBRefUtils.dasCoordinateSystemsLookup.get(a.toLowerCase());return null==
+c?!1:c.equals(b.getSource())},"~S,jalview.datamodel.DBRefEntry");c$.getCanonicalName=d(c$,"getCanonicalName",function(a){if(null==a)return null;var b=jalview.util.DBRefUtils.canonicalSourceNameLookup.get(a.toLowerCase());return null==b?a:b},"~S");c$.searchRefs=d(c$,"searchRefs",function(a,b){return jalview.util.DBRefUtils.searchRefs(a,b,jalview.util.DBRefUtils.matchDbAndIdAndEitherMapOrEquivalentMapList)},"~A,jalview.datamodel.DBRefEntry");c$.searchRefs=d(c$,"searchRefs",function(a,b,c){if(null==
+a||null==b)return null;for(var f=new java.util.ArrayList,d=0;d<a.length;d++)c.matches(b,a[d])&&f.add(a[d]);return 0==f.size()?null:f.toArray(Array(f.size()))},"~A,jalview.datamodel.DBRefEntry,jalview.util.DBRefUtils.DbRefComp");c$.parseToDbRef=d(c$,"parseToDbRef",function(a,b,c,f){var d=null;if(null!=b)if(b=jalview.util.DBRefUtils.getCanonicalName(b),b.equals(jalview.datamodel.DBRefSource.PDB)){var e=jalview.jsdev.RegExp.newRegex(["([0-9][0-9A-Za-z]{3})\\s*(.?)\\s*;\\s*([0-9]+)-([0-9]+)"]);e.search(f.trim())?
+(f=e.stringMatchedI(1),e=e.stringMatchedI(2),null==e&&(e=" "),e.equals(" ")&&(e="_"),d=new jalview.datamodel.DBRefEntry(b,c,f+e),c=new jalview.datamodel.PDBEntry,c.setId(f),c.setType(jalview.datamodel.PDBEntry.Type.PDB),c.setProperty(new java.util.Hashtable),c.setChainCode(e),a.addPDBId(c)):System.err.println("Malformed PDB DR line:"+f)}else d=new jalview.datamodel.DBRefEntry(b,c,f);null!=d&&a.addDBRef(d);return d},"jalview.datamodel.SequenceI,~S,~S,~S");c$.$DBRefUtils$1$=function(){A(self.c$);c$=
+L(jalview.util,"DBRefUtils$1",null,jalview.util.DBRefUtils.DbRefComp);d(c$,"matches",function(a,b){if(null==a.getSource()||b.getSource().equals(a.getSource()))if(null==a.getVersion()||b.getVersion().equals(a.getVersion()))if(null==a.getAccessionId()||b.getAccessionId().equals(a.getAccessionId()))if(null==a.getMap()||null!=b.getMap()&&b.getMap().equals(a.getMap()))return!0;return!1},"jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");c$=z()};c$.$DBRefUtils$2$=function(){A(self.c$);c$=L(jalview.util,
+"DBRefUtils$2",null,jalview.util.DBRefUtils.DbRefComp);d(c$,"matches",function(a,b){if(null==a.getSource()||null==b.getSource()||b.getSource().equals(a.getSource()))if(null==a.getVersion()||null==b.getVersion()||b.getVersion().equals(a.getVersion()))if(null==a.getAccessionId()||null==b.getAccessionId()||b.getAccessionId().equals(a.getAccessionId()))if(null==a.getMap()||null==b.getMap()||null!=b.getMap()&&b.getMap().equals(a.getMap()))return!0;return!1},"jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");
+c$=z()};c$.$DBRefUtils$3$=function(){A(self.c$);c$=L(jalview.util,"DBRefUtils$3",null,jalview.util.DBRefUtils.DbRefComp);d(c$,"matches",function(a,b){if(null!=a.getSource()&&(null!=b.getSource()&&b.getSource().equals(a.getSource()))&&(null!=a.getAccessionId()&&null!=b.getAccessionId()||b.getAccessionId().equals(a.getAccessionId())))if(null==a.getMap()||null==b.getMap()||null!=a.getMap()&&null!=b.getMap()&&b.getMap().equals(a.getMap()))return!0;return!1},"jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");
+c$=z()};c$.$DBRefUtils$4$=function(){A(self.c$);c$=L(jalview.util,"DBRefUtils$4",null,jalview.util.DBRefUtils.DbRefComp);d(c$,"matches",function(a,b){if(null!=a.getSource()&&(null!=b.getSource()&&b.getSource().equals(a.getSource()))&&(null!=a.getAccessionId()&&null!=b.getAccessionId()||b.getAccessionId().equals(a.getAccessionId())))if(null==a.getMap()&&null==b.getMap()||null!=a.getMap()&&null!=b.getMap())if(null==b.getMap().getMap()&&null==a.getMap().getMap()||null!=b.getMap().getMap()&&null!=a.getMap().getMap()&&
+b.getMap().getMap().getInverse().equals(a.getMap().getMap()))return!0;return!1},"jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");c$=z()};c$.$DBRefUtils$5$=function(){A(self.c$);c$=L(jalview.util,"DBRefUtils$5",null,jalview.util.DBRefUtils.DbRefComp);d(c$,"matches",function(a,b){if(null!=a.getSource()&&(null!=b.getSource()&&b.getSource().equals(a.getSource()))&&(null!=a.getAccessionId()&&null!=b.getAccessionId()||b.getAccessionId().equals(a.getAccessionId())))if(null==a.getMap()&&null==
+b.getMap()||null!=a.getMap()&&null!=b.getMap()&&(null==b.getMap().getMap()&&null==a.getMap().getMap()||null!=b.getMap().getMap()&&null!=a.getMap().getMap()&&b.getMap().getMap().equals(a.getMap().getMap())))return!0;return!1},"jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");c$=z()};c$.$DBRefUtils$6$=function(){A(self.c$);c$=L(jalview.util,"DBRefUtils$6",null,jalview.util.DBRefUtils.DbRefComp);d(c$,"matches",function(a,b){return null!=a.getSource()&&null!=b.getSource()&&b.getSource().equals(a.getSource())&&
+null!=a.getAccessionId()&&(null!=b.getAccessionId()&&b.getAccessionId().equals(a.getAccessionId()))&&(null==a.getMap()||null==b.getMap()||null!=a.getMap()&&null!=b.getMap()&&null==b.getMap().getMap()&&null==a.getMap().getMap()||null!=b.getMap().getMap()&&null!=a.getMap().getMap()&&b.getMap().getMap().equals(a.getMap().getMap()))?!0:!1},"jalview.datamodel.DBRefEntry,jalview.datamodel.DBRefEntry");c$=z()};M(jalview.util.DBRefUtils,"DbRefComp");c$.canonicalSourceNameLookup=c$.prototype.canonicalSourceNameLookup=
+new java.util.HashMap;c$.dasCoordinateSystemsLookup=c$.prototype.dasCoordinateSystemsLookup=new java.util.HashMap;jalview.util.DBRefUtils.canonicalSourceNameLookup.put("uniprotkb/swiss-prot",jalview.datamodel.DBRefSource.UNIPROT);jalview.util.DBRefUtils.canonicalSourceNameLookup.put("uniprotkb/trembl",jalview.datamodel.DBRefSource.UNIPROT);jalview.util.DBRefUtils.canonicalSourceNameLookup.put("pdb",jalview.datamodel.DBRefSource.PDB);jalview.util.DBRefUtils.dasCoordinateSystemsLookup.put("pdbresnum",
+jalview.datamodel.DBRefSource.PDB);jalview.util.DBRefUtils.dasCoordinateSystemsLookup.put("uniprot",jalview.datamodel.DBRefSource.UNIPROT);jalview.util.DBRefUtils.dasCoordinateSystemsLookup.put("embl",jalview.datamodel.DBRefSource.EMBL);c$.matchNonNullonA=c$.prototype.matchNonNullonA=(H("jalview.util.DBRefUtils$1")?0:jalview.util.DBRefUtils.$DBRefUtils$1$(),C(jalview.util.DBRefUtils$1,this,null));c$.matchEitherNonNull=c$.prototype.matchEitherNonNull=(H("jalview.util.DBRefUtils$2")?0:jalview.util.DBRefUtils.$DBRefUtils$2$(),
+C(jalview.util.DBRefUtils$2,this,null));c$.matchDbAndIdAndEitherMap=c$.prototype.matchDbAndIdAndEitherMap=(H("jalview.util.DBRefUtils$3")?0:jalview.util.DBRefUtils.$DBRefUtils$3$(),C(jalview.util.DBRefUtils$3,this,null));c$.matchDbAndIdAndComplementaryMapList=c$.prototype.matchDbAndIdAndComplementaryMapList=(H("jalview.util.DBRefUtils$4")?0:jalview.util.DBRefUtils.$DBRefUtils$4$(),C(jalview.util.DBRefUtils$4,this,null));c$.matchDbAndIdAndEquivalentMapList=c$.prototype.matchDbAndIdAndEquivalentMapList=
+(H("jalview.util.DBRefUtils$5")?0:jalview.util.DBRefUtils.$DBRefUtils$5$(),C(jalview.util.DBRefUtils$5,this,null));c$.matchDbAndIdAndEitherMapOrEquivalentMapList=c$.prototype.matchDbAndIdAndEitherMapOrEquivalentMapList=(H("jalview.util.DBRefUtils$6")?0:jalview.util.DBRefUtils.$DBRefUtils$6$(),C(jalview.util.DBRefUtils$6,this,null))});q("java.util.AbstractCollection $.AbstractMap $.AbstractSet $.Iterator $.MapEntry $.Set $.SortedMap".split(" "),"java.util.TreeMap",["java.lang.IllegalArgumentException",
+"$.IllegalStateException","java.util.ConcurrentModificationException","$.NoSuchElementException"],function(){c$=s(function(){this.$size=0;this.$comparator=this.root=null;this.modCount=0;this.$entrySet=null;r(this,arguments)},java.util,"TreeMap",java.util.AbstractMap,[java.util.SortedMap,Cloneable,java.io.Serializable]);c$.toComparable=d(c$,"toComparable",($fz=function(a){return a},$fz.isPrivate=!0,$fz),"~O");m(c$,function(a){t(this,java.util.TreeMap,[]);this.$comparator=a},"java.util.Comparator");
+m(c$,function(a){this.construct();this.putAll(a)},"java.util.Map");m(c$,function(a){this.construct(a.comparator());a=a.entrySet().iterator();if(a.hasNext()){var b=a.next(),c=new java.util.TreeMap.Entry(b.getKey(),b.getValue());this.root=c;for(this.$size=1;a.hasNext();)b=a.next(),b=new java.util.TreeMap.Entry(b.getKey(),b.getValue()),b.parent=c,c.right=b,this.$size++,this.balance(b),c=b}},"java.util.SortedMap");d(c$,"balance",function(a){var b;for(a.color=!0;a!==this.root&&a.parent.color;)a.parent===
+a.parent.parent.left?(b=a.parent.parent.right,null!=b&&b.color?(a.parent.color=!1,b.color=!1,a.parent.parent.color=!0,a=a.parent.parent):(a===a.parent.right&&(a=a.parent,this.leftRotate(a)),a.parent.color=!1,a.parent.parent.color=!0,this.rightRotate(a.parent.parent))):(b=a.parent.parent.left,null!=b&&b.color?(a.parent.color=!1,b.color=!1,a.parent.parent.color=!0,a=a.parent.parent):(a===a.parent.left&&(a=a.parent,this.rightRotate(a)),a.parent.color=!1,a.parent.parent.color=!0,this.leftRotate(a.parent.parent)));
+this.root.color=!1},"java.util.TreeMap.Entry");e(c$,"clear",function(){this.root=null;this.$size=0;this.modCount++});d(c$,"clone",function(){try{var a=K(this,java.util.TreeMap,"clone",[]);a.$entrySet=null;null!=this.root&&(a.root=this.root.clone(null));return a}catch(b){if(v(b,CloneNotSupportedException))return null;throw b;}});e(c$,"comparator",function(){return this.$comparator});e(c$,"containsKey",function(a){return null!=this.find(a)},"~O");d(c$,"containsValue",function(a){return null!=this.root?
+this.containsValue(this.root,a):!1},"~O");d(c$,"containsValue",($fz=function(a,b){return(null==b?null==a.value:b.equals(a.value))||null!=a.left&&this.containsValue(a.left,b)||null!=a.right&&this.containsValue(a.right,b)?!0:!1},$fz.isPrivate=!0,$fz),"java.util.TreeMap.Entry,~O");e(c$,"entrySet",function(){null==this.$entrySet&&(this.$entrySet=(H("java.util.TreeMap$1")?0:java.util.TreeMap.$TreeMap$1$(),C(java.util.TreeMap$1,this,null)));return this.$entrySet});d(c$,"find",($fz=function(a){var b,c=null;
+null==this.$comparator&&(c=java.util.TreeMap.toComparable(a));for(var f=this.root;null!=f;){b=null!=c?c.compareTo(f.key):this.$comparator.compare(a,f.key);if(0==b)return f;f=0>b?f.left:f.right}return null},$fz.isPrivate=!0,$fz),"~O");d(c$,"findAfter",function(a){var b,c=null;null==this.$comparator&&(c=java.util.TreeMap.toComparable(a));for(var f=this.root,d=null;null!=f;){b=null!=c?c.compareTo(f.key):this.$comparator.compare(a,f.key);if(0==b)return f;0>b?(d=f,f=f.left):f=f.right}return d},"~O");d(c$,
+"findBefore",function(a){var b,c=null;null==this.$comparator&&(c=java.util.TreeMap.toComparable(a));for(var f=this.root,d=null;null!=f;)b=null!=c?c.compareTo(f.key):this.$comparator.compare(a,f.key),0>=b?f=f.left:(d=f,f=f.right);return d},"~O");e(c$,"firstKey",function(){if(null!=this.root)return java.util.TreeMap.minimum(this.root).key;throw new java.util.NoSuchElementException;});d(c$,"fixup",($fz=function(a){for(var b;a!==this.root&&!a.color;)if(a===a.parent.left)if(b=a.parent.right,null==b)a=
+a.parent;else{if(b.color&&(b.color=!1,a.parent.color=!0,this.leftRotate(a.parent),b=a.parent.right,null==b)){a=a.parent;continue}if((null==b.left||!b.left.color)&&(null==b.right||!b.right.color))b.color=!0,a=a.parent;else{if(null==b.right||!b.right.color)b.left.color=!1,b.color=!0,this.rightRotate(b),b=a.parent.right;b.color=a.parent.color;a.parent.color=!1;b.right.color=!1;this.leftRotate(a.parent);a=this.root}}else if(b=a.parent.left,null==b)a=a.parent;else{if(b.color&&(b.color=!1,a.parent.color=
+!0,this.rightRotate(a.parent),b=a.parent.left,null==b)){a=a.parent;continue}if((null==b.left||!b.left.color)&&(null==b.right||!b.right.color))b.color=!0,a=a.parent;else{if(null==b.left||!b.left.color)b.right.color=!1,b.color=!0,this.leftRotate(b),b=a.parent.left;b.color=a.parent.color;a.parent.color=!1;b.left.color=!1;this.rightRotate(a.parent);a=this.root}}a.color=!1},$fz.isPrivate=!0,$fz),"java.util.TreeMap.Entry");e(c$,"get",function(a){a=this.find(a);return null!=a?a.value:null},"~O");e(c$,"headMap",
+function(a){null==this.$comparator?java.util.TreeMap.toComparable(a).compareTo(a):this.$comparator.compare(a,a);return new java.util.TreeMap.SubMap(this,a)},"~O");e(c$,"keySet",function(){null==this.$keySet&&(this.$keySet=(H("java.util.TreeMap$2")?0:java.util.TreeMap.$TreeMap$2$(),C(java.util.TreeMap$2,this,null)));return this.$keySet});e(c$,"lastKey",function(){if(null!=this.root)return java.util.TreeMap.maximum(this.root).key;throw new java.util.NoSuchElementException;});d(c$,"leftRotate",($fz=
+function(a){var b=a.right;a.right=b.left;null!=b.left&&(b.left.parent=a);b.parent=a.parent;null==a.parent?this.root=b:a===a.parent.left?a.parent.left=b:a.parent.right=b;b.left=a;a.parent=b},$fz.isPrivate=!0,$fz),"java.util.TreeMap.Entry");c$.maximum=d(c$,"maximum",function(a){for(;null!=a.right;)a=a.right;return a},"java.util.TreeMap.Entry");c$.minimum=d(c$,"minimum",function(a){for(;null!=a.left;)a=a.left;return a},"java.util.TreeMap.Entry");c$.predecessor=d(c$,"predecessor",function(a){if(null!=
+a.left)return java.util.TreeMap.maximum(a.left);for(var b=a.parent;null!=b&&a===b.left;)a=b,b=b.parent;return b},"java.util.TreeMap.Entry");e(c$,"put",function(a,b){var c=this.rbInsert(a),f=c.value;c.value=b;return f},"~O,~O");d(c$,"rbDelete",function(a){var b=null==a.left||null==a.right?a:java.util.TreeMap.successor(a),c=null!=b.left?b.left:b.right;null!=c&&(c.parent=b.parent);null==b.parent?this.root=c:b===b.parent.left?b.parent.left=c:b.parent.right=c;this.modCount++;b!==a&&(a.key=b.key,a.value=
+b.value);!b.color&&null!=this.root&&(null==c?this.fixup(b.parent):this.fixup(c));this.$size--},"java.util.TreeMap.Entry");d(c$,"rbInsert",($fz=function(a){var b=0,c=null;if(0!=this.$size){var f=null;null==this.$comparator&&(f=java.util.TreeMap.toComparable(a));for(var d=this.root;null!=d;){c=d;b=null!=f?f.compareTo(d.key):this.$comparator.compare(a,d.key);if(0==b)return d;d=0>b?d.left:d.right}}this.$size++;this.modCount++;a=new java.util.TreeMap.Entry(a);if(null==c)return this.root=a;a.parent=c;0>
+b?c.left=a:c.right=a;this.balance(a);return a},$fz.isPrivate=!0,$fz),"~O");e(c$,"remove",function(a){a=this.find(a);if(null==a)return null;var b=a.value;this.rbDelete(a);return b},"~O");d(c$,"rightRotate",($fz=function(a){var b=a.left;a.left=b.right;null!=b.right&&(b.right.parent=a);b.parent=a.parent;null==a.parent?this.root=b:a===a.parent.right?a.parent.right=b:a.parent.left=b;b.right=a;a.parent=b},$fz.isPrivate=!0,$fz),"java.util.TreeMap.Entry");e(c$,"size",function(){return this.$size});e(c$,"subMap",
+function(a,b){if(null==this.$comparator){if(0>=java.util.TreeMap.toComparable(a).compareTo(b))return new java.util.TreeMap.SubMap(a,this,b)}else if(0>=this.$comparator.compare(a,b))return new java.util.TreeMap.SubMap(a,this,b);throw new IllegalArgumentException;},"~O,~O");c$.successor=d(c$,"successor",function(a){if(null!=a.right)return java.util.TreeMap.minimum(a.right);for(var b=a.parent;null!=b&&a===b.right;)a=b,b=b.parent;return b},"java.util.TreeMap.Entry");e(c$,"tailMap",function(a){null==this.$comparator?
+java.util.TreeMap.toComparable(a).compareTo(a):this.$comparator.compare(a,a);return new java.util.TreeMap.SubMap(a,this)},"~O");e(c$,"values",function(){null==this.valuesCollection&&(this.valuesCollection=(H("java.util.TreeMap$3")?0:java.util.TreeMap.$TreeMap$3$(),C(java.util.TreeMap$3,this,null)));return this.valuesCollection});c$.$TreeMap$1$=function(){A(self.c$);c$=L(java.util,"TreeMap$1",java.util.AbstractSet);e(c$,"size",function(){return this.b$["java.util.TreeMap"].$size});e(c$,"clear",function(){this.b$["java.util.TreeMap"].clear()});
+e(c$,"contains",function(a){if(v(a,java.util.Map.Entry)){var b=this.b$["java.util.TreeMap"].get(a.getKey());a=a.getValue();return null==b?null==a:b.equals(a)}return!1},"~O");d(c$,"iterator",function(){return new java.util.TreeMap.UnboundedEntryIterator(this.b$["java.util.TreeMap"])});c$=z()};c$.$TreeMap$2$=function(){A(self.c$);c$=L(java.util,"TreeMap$2",java.util.AbstractSet);e(c$,"contains",function(a){return this.b$["java.util.TreeMap"].containsKey(a)},"~O");e(c$,"size",function(){return this.b$["java.util.TreeMap"].$size});
+e(c$,"clear",function(){this.b$["java.util.TreeMap"].clear()});e(c$,"iterator",function(){return new java.util.TreeMap.UnboundedKeyIterator(this.b$["java.util.TreeMap"])});c$=z()};c$.$TreeMap$3$=function(){A(self.c$);c$=L(java.util,"TreeMap$3",java.util.AbstractCollection);e(c$,"contains",function(a){return this.b$["java.util.TreeMap"].containsValue(a)},"~O");e(c$,"size",function(){return this.b$["java.util.TreeMap"].$size});e(c$,"clear",function(){this.b$["java.util.TreeMap"].clear()});e(c$,"iterator",
+function(){return new java.util.TreeMap.UnboundedValueIterator(this.b$["java.util.TreeMap"])});c$=z()};A(self.c$);c$=s(function(){this.right=this.left=this.parent=null;this.color=!1;r(this,arguments)},java.util.TreeMap,"Entry",java.util.MapEntry);d(c$,"clone",function(a){var b=K(this,java.util.TreeMap.Entry,"clone",[]);b.parent=a;null!=this.left&&(b.left=this.left.clone(b));null!=this.right&&(b.right=this.right.clone(b));return b},"java.util.TreeMap.Entry");c$=z();A(self.c$);c$=s(function(){this.backingMap=
+null;this.expectedModCount=0;this.lastNode=this.node=null;r(this,arguments)},java.util.TreeMap,"AbstractMapIterator");m(c$,function(a,b){this.backingMap=a;this.expectedModCount=a.modCount;this.node=b},"java.util.TreeMap,java.util.TreeMap.Entry");d(c$,"hasNext",function(){return null!=this.node});d(c$,"remove",function(){if(this.expectedModCount==this.backingMap.modCount)if(null!=this.lastNode)this.backingMap.rbDelete(this.lastNode),this.lastNode=null,this.expectedModCount++;else throw new IllegalStateException;
+else throw new java.util.ConcurrentModificationException;});d(c$,"makeNext",function(){if(this.expectedModCount!=this.backingMap.modCount)throw new java.util.ConcurrentModificationException;if(null==this.node)throw new java.util.NoSuchElementException;this.lastNode=this.node;this.node=java.util.TreeMap.successor(this.node)});c$=z();A(self.c$);c$=B(java.util.TreeMap,"UnboundedEntryIterator",java.util.TreeMap.AbstractMapIterator,java.util.Iterator);m(c$,function(a){t(this,java.util.TreeMap.UnboundedEntryIterator,
+[a,null==a.root?null:java.util.TreeMap.minimum(a.root)])},"java.util.TreeMap");e(c$,"next",function(){this.makeNext();return this.lastNode});c$=z();A(self.c$);c$=B(java.util.TreeMap,"UnboundedKeyIterator",java.util.TreeMap.AbstractMapIterator,java.util.Iterator);m(c$,function(a){t(this,java.util.TreeMap.UnboundedKeyIterator,[a,null==a.root?null:java.util.TreeMap.minimum(a.root)])},"java.util.TreeMap");e(c$,"next",function(){this.makeNext();return this.lastNode.key});c$=z();A(self.c$);c$=B(java.util.TreeMap,
+"UnboundedValueIterator",java.util.TreeMap.AbstractMapIterator,java.util.Iterator);m(c$,function(a){t(this,java.util.TreeMap.UnboundedValueIterator,[a,null==a.root?null:java.util.TreeMap.minimum(a.root)])},"java.util.TreeMap");e(c$,"next",function(){this.makeNext();return this.lastNode.value});c$=z();A(self.c$);c$=s(function(){this.cmp=this.endKey=null;r(this,arguments)},java.util.TreeMap,"ComparatorBoundedIterator",java.util.TreeMap.AbstractMapIterator);m(c$,function(a,b,c){t(this,java.util.TreeMap.ComparatorBoundedIterator,
+[a,b]);this.endKey=c;this.cmp=a.comparator()},"java.util.TreeMap,java.util.TreeMap.Entry,~O");d(c$,"cleanNext",function(){null!=this.node&&0>=this.cmp.compare(this.endKey,this.node.key)&&(this.node=null)});e(c$,"hasNext",function(){return null!=this.node&&null!=this.endKey&&0>this.cmp.compare(this.node.key,this.endKey)});c$=z();A(self.c$);c$=B(java.util.TreeMap,"ComparatorBoundedEntryIterator",java.util.TreeMap.ComparatorBoundedIterator,java.util.Iterator);e(c$,"next",function(){this.makeNext();this.cleanNext();
+return this.lastNode});c$=z();A(self.c$);c$=B(java.util.TreeMap,"ComparatorBoundedKeyIterator",java.util.TreeMap.ComparatorBoundedIterator,java.util.Iterator);e(c$,"next",function(){this.makeNext();this.cleanNext();return this.lastNode.key});c$=z();A(self.c$);c$=B(java.util.TreeMap,"ComparatorBoundedValueIterator",java.util.TreeMap.ComparatorBoundedIterator,java.util.Iterator);e(c$,"next",function(){this.makeNext();this.cleanNext();return this.lastNode.value});c$=z();A(self.c$);c$=s(function(){this.endKey=
+null;r(this,arguments)},java.util.TreeMap,"ComparableBoundedIterator",java.util.TreeMap.AbstractMapIterator);m(c$,function(a,b,c){t(this,java.util.TreeMap.ComparableBoundedIterator,[a,b]);this.endKey=c},"java.util.TreeMap,java.util.TreeMap.Entry,Comparable");d(c$,"cleanNext",function(){null!=this.node&&0>=this.endKey.compareTo(this.node.key)&&(this.node=null)});e(c$,"hasNext",function(){return null!=this.node&&0<this.endKey.compareTo(this.node.key)});c$=z();A(self.c$);c$=B(java.util.TreeMap,"ComparableBoundedEntryIterator",
+java.util.TreeMap.ComparableBoundedIterator,java.util.Iterator);e(c$,"next",function(){this.makeNext();this.cleanNext();return this.lastNode});c$=z();A(self.c$);c$=B(java.util.TreeMap,"ComparableBoundedKeyIterator",java.util.TreeMap.ComparableBoundedIterator,java.util.Iterator);e(c$,"next",function(){this.makeNext();this.cleanNext();return this.lastNode.key});c$=z();A(self.c$);c$=B(java.util.TreeMap,"ComparableBoundedValueIterator",java.util.TreeMap.ComparableBoundedIterator,java.util.Iterator);e(c$,
+"next",function(){this.makeNext();this.cleanNext();return this.lastNode.value});c$=z();A(self.c$);c$=s(function(){this.backingMap=null;this.hasEnd=this.hasStart=!1;this.$entrySet=this.endKey=this.startKey=null;r(this,arguments)},java.util.TreeMap,"SubMap",java.util.AbstractMap,[java.util.SortedMap,java.io.Serializable]);m(c$,function(a,b){t(this,java.util.TreeMap.SubMap,[]);this.backingMap=b;this.hasStart=!0;this.startKey=a},"~O,java.util.TreeMap");m(c$,function(a,b,c){t(this,java.util.TreeMap.SubMap,
+[]);this.backingMap=b;this.hasStart=this.hasEnd=!0;this.startKey=a;this.endKey=c},"~O,java.util.TreeMap,~O");m(c$,function(a,b){t(this,java.util.TreeMap.SubMap,[]);this.backingMap=a;this.hasEnd=!0;this.endKey=b},"java.util.TreeMap,~O");e(c$,"comparator",function(){return this.backingMap.comparator()});e(c$,"containsKey",function(a){return this.isInRange(a)?this.backingMap.containsKey(a):!1},"~O");e(c$,"entrySet",function(){null==this.$entrySet&&(this.$entrySet=new java.util.TreeMap.SubMapEntrySet(this));
+return this.$entrySet});e(c$,"firstKey",function(){var a=this.firstEntry();if(null!=a)return a.key;throw new java.util.NoSuchElementException;});d(c$,"firstEntry",function(){if(!this.hasStart){var a=this.backingMap.root;return null==a?null:java.util.TreeMap.minimum(this.backingMap.root)}a=this.backingMap.findAfter(this.startKey);return null!=a&&this.checkUpperBound(a.key)?a:null});e(c$,"get",function(a){return this.isInRange(a)?this.backingMap.get(a):null},"~O");e(c$,"headMap",function(a){this.checkRange(a);
+return this.hasStart?new java.util.TreeMap.SubMap(this.startKey,this.backingMap,a):new java.util.TreeMap.SubMap(this.backingMap,a)},"~O");e(c$,"isEmpty",function(){if(this.hasStart){var a=this.backingMap.findAfter(this.startKey);return null==a||!this.checkUpperBound(a.key)}return null==this.backingMap.findBefore(this.endKey)});e(c$,"keySet",function(){null==this.$keySet&&(this.$keySet=new java.util.TreeMap.SubMapKeySet(this));return this.$keySet});e(c$,"lastKey",function(){if(!this.hasEnd)return this.backingMap.lastKey();
+var a=this.backingMap.findBefore(this.endKey);if(null!=a&&this.checkLowerBound(a.key))return a.key;throw new java.util.NoSuchElementException;});e(c$,"put",function(a,b){if(this.isInRange(a))return this.backingMap.put(a,b);throw new IllegalArgumentException;},"~O,~O");e(c$,"remove",function(a){return this.isInRange(a)?this.backingMap.remove(a):null},"~O");e(c$,"subMap",function(a,b){this.checkRange(a);this.checkRange(b);var c=this.backingMap.comparator();if(null==c){if(0>=java.util.TreeMap.toComparable(a).compareTo(b))return new java.util.TreeMap.SubMap(a,
+this.backingMap,b)}else if(0>=c.compare(a,b))return new java.util.TreeMap.SubMap(a,this.backingMap,b);throw new IllegalArgumentException;},"~O,~O");e(c$,"tailMap",function(a){this.checkRange(a);return this.hasEnd?new java.util.TreeMap.SubMap(a,this.backingMap,this.endKey):new java.util.TreeMap.SubMap(a,this.backingMap)},"~O");e(c$,"values",function(){null==this.valuesCollection&&(this.valuesCollection=new java.util.TreeMap.SubMapValuesCollection(this));return this.valuesCollection});c$=z();A(self.c$);
+c$=s(function(){this.subMap=null;r(this,arguments)},java.util.TreeMap,"SubMapEntrySet",java.util.AbstractSet,java.util.Set);m(c$,function(a){t(this,java.util.TreeMap.SubMapEntrySet,[]);this.subMap=a},"java.util.TreeMap.SubMap");e(c$,"isEmpty",function(){return this.subMap.isEmpty()});e(c$,"iterator",function(){var a=this.subMap.firstEntry();return this.subMap.hasEnd?null==this.subMap.comparator()?new java.util.TreeMap.ComparableBoundedEntryIterator(this.subMap.backingMap,a,java.util.TreeMap.toComparable(this.subMap.endKey)):
+new java.util.TreeMap.ComparatorBoundedEntryIterator(this.subMap.backingMap,a,this.subMap.endKey):new java.util.TreeMap.UnboundedEntryIterator(this.subMap.backingMap,a)});e(c$,"size",function(){for(var a=0,b=this.iterator();b.hasNext();)a++,b.next();return a});e(c$,"contains",function(a){if(v(a,java.util.Map.Entry)){var b=a.getKey();if(this.subMap.isInRange(b))return b=this.subMap.get(b),a=a.getValue(),null==b?null==a:b.equals(a)}return!1},"~O");c$=z();A(self.c$);c$=s(function(){this.subMap=null;
+r(this,arguments)},java.util.TreeMap,"SubMapKeySet",java.util.AbstractSet,java.util.Set);m(c$,function(a){t(this,java.util.TreeMap.SubMapKeySet,[]);this.subMap=a},"java.util.TreeMap.SubMap");e(c$,"contains",function(a){return this.subMap.containsKey(a)},"~O");e(c$,"isEmpty",function(){return this.subMap.isEmpty()});e(c$,"size",function(){for(var a=0,b=this.iterator();b.hasNext();)a++,b.next();return a});e(c$,"iterator",function(){var a=this.subMap.firstEntry();return this.subMap.hasEnd?null==this.subMap.comparator()?
+new java.util.TreeMap.ComparableBoundedKeyIterator(this.subMap.backingMap,a,java.util.TreeMap.toComparable(this.subMap.endKey)):new java.util.TreeMap.ComparatorBoundedKeyIterator(this.subMap.backingMap,a,this.subMap.endKey):new java.util.TreeMap.UnboundedKeyIterator(this.subMap.backingMap,a)});c$=z();A(self.c$);c$=s(function(){this.subMap=null;r(this,arguments)},java.util.TreeMap,"SubMapValuesCollection",java.util.AbstractCollection);m(c$,function(a){t(this,java.util.TreeMap.SubMapValuesCollection,
+[]);this.subMap=a},"java.util.TreeMap.SubMap");e(c$,"isEmpty",function(){return this.subMap.isEmpty()});e(c$,"iterator",function(){var a=this.subMap.firstEntry();return this.subMap.hasEnd?null==this.subMap.comparator()?new java.util.TreeMap.ComparableBoundedValueIterator(this.subMap.backingMap,a,java.util.TreeMap.toComparable(this.subMap.endKey)):new java.util.TreeMap.ComparatorBoundedValueIterator(this.subMap.backingMap,a,this.subMap.endKey):new java.util.TreeMap.UnboundedValueIterator(this.subMap.backingMap,
+a)});e(c$,"size",function(){for(var a=0,b=this.iterator();b.hasNext();)b.next(),a++;return a});c$=z()});p("jalview.appletgui");q(["jalview.structure.CommandListener","$.SelectionSource","$.VamsasSource","jalview.viewmodel.AlignmentViewport","java.awt.Font"],"jalview.appletgui.AlignViewport","awt2swing.Frame jalview.api.AlignViewportI jalview.bin.JalviewLite jalview.datamodel.ColumnSelection $.SearchResults $.Sequence $.SequenceGroup jalview.schemes.ColourSchemeProperty jalview.structure.StructureSelectionManager jalview.util.Platform jalview.workers.AlignCalcManager java.lang.Float $.StringBuilder".split(" "),
+function(){c$=s(function(){this.cursorMode=!1;this.font=null;this.validCharWidth=!0;this.applet=this.currentTree=null;this.MAC=!1;this.featureSettings=this.nullFrame=this.annotationColumnSelectionState=null;this.widthScale=this.heightScale=1;this.centreColumnLabels=!1;this.followSelection=!0;r(this,arguments)},jalview.appletgui,"AlignViewport",jalview.viewmodel.AlignmentViewport,[jalview.structure.SelectionSource,jalview.structure.VamsasSource,jalview.structure.CommandListener]);J(c$,function(){this.font=
+new java.awt.Font("SansSerif",0,10)});e(c$,"finalize",function(){this.colSel=this.alignment=this.quality=this.applet=null});m(c$,function(a,b){t(this,jalview.appletgui.AlignViewport);this.calculator=new jalview.workers.AlignCalcManager;this.applet=b;this.alignment=a;this.setPadGaps(!0);this.startRes=0;this.endRes=a.getWidth()-1;this.startSeq=0;this.endSeq=a.getHeight()-1;if(null!=b){var c=b.widthScale;if(null!=c){try{this.widthScale=(new Float(c)).floatValue()}catch(f){if(!y(f,Exception))throw f;
+}1>=this.widthScale&&(System.err.println("Invalid alignment character width scaling factor ("+this.widthScale+"). Ignoring."),this.widthScale=1);jalview.bin.JalviewLite.debug&&System.err.println("Alignment character width scaling factor is now "+this.widthScale)}c=b.heightScale;if(null!=c){try{this.heightScale=(new Float(c)).floatValue()}catch(d){if(!y(d,Exception))throw d;}1>=this.heightScale&&(System.err.println("Invalid alignment character height scaling factor ("+this.heightScale+"). Ignoring."),
+this.heightScale=1);jalview.bin.JalviewLite.debug&&System.err.println("Alignment character height scaling factor is now "+this.heightScale)}}this.setFont(this.font);this.MAC=jalview.util.Platform.isAMac();null!=b&&(this.setShowJVSuffix(b.getDefaultParameter("showFullId",this.getShowJVSuffix())),this.setShowAnnotation(b.getDefaultParameter("showAnnotation",this.isShowAnnotation())),this.showConservation=b.getDefaultParameter("showConservation",this.showConservation),this.showQuality=b.getDefaultParameter("showQuality",
+this.showQuality),this.showConsensus=b.getDefaultParameter("showConsensus",this.showConsensus),this.setShowUnconserved(b.getDefaultParameter("showUnconserved",this.getShowUnconserved())),this.setScaleProteinAsCdna(b.getDefaultParameter("scaleProteinAsCdna",this.isScaleProteinAsCdna())),c=b.upperCase,null!=c&&c.equalsIgnoreCase("bold")&&this.setUpperCasebold(!0),this.sortByTree=b.getDefaultParameter("sortByTree",this.sortByTree),this.setFollowHighlight(b.getDefaultParameter("automaticScrolling",this.isFollowHighlight())),
+this.followSelection=this.isFollowHighlight(),this.showSequenceLogo=b.getDefaultParameter("showSequenceLogo",this.showSequenceLogo),this.normaliseSequenceLogo=b.getDefaultParameter("normaliseSequenceLogo",b.getDefaultParameter("normaliseLogo",this.normaliseSequenceLogo)),this.showGroupConsensus=b.getDefaultParameter("showGroupConsensus",this.showGroupConsensus),this.showGroupConservation=b.getDefaultParameter("showGroupConservation",this.showGroupConservation),this.showConsensusHistogram=b.getDefaultParameter("showConsensusHistogram",
+this.showConsensusHistogram));null!=b&&(c=b.defaultColour,null==c&&(c=b.userDefinedColour,null!=c&&(c="User Defined")),null!=c&&(this.globalColourScheme=jalview.schemes.ColourSchemeProperty.getColour(this.alignment,c),null!=this.globalColourScheme&&this.globalColourScheme.setConsensus(this.hconsensus)),null!=b.userDefinedColour&&this.globalColourScheme.parseAppletParameter(b.userDefinedColour));this.initAutoAnnotation()},"jalview.datamodel.AlignmentI,jalview.bin.JalviewLite");d(c$,"getConsensusSeq",
+function(){null==this.consensus&&this.updateConsensus(null);if(null==this.consensus)return null;for(var a=new StringBuilder(this.consensus.annotations.length),b=0;b<this.consensus.annotations.length;b++)null!=this.consensus.annotations[b]&&("["==this.consensus.annotations[b].description.charAt(0)?a.append(this.consensus.annotations[b].description.charAt(1)):a.append(this.consensus.annotations[b].displayCharacter));a=new jalview.datamodel.Sequence("Consensus",a.toString());a.setDescription("Percentage Identity Consensus "+
+(this.ignoreGapsInConsensusCalculation?" without gaps":""));return a});d(c$,"setFont",function(a){this.font=a;null==this.nullFrame&&(this.nullFrame=new awt2swing.Frame,this.nullFrame.addNotify(),this.nullFrame.setFont(this.font));var b=this.nullFrame.getGraphics().getFontMetrics(this.font);this.setCharHeight(I(this.heightScale*b.getHeight()));this.setCharWidth(I(this.widthScale*b.charWidth("M")));this.isUpperCasebold()&&(a=new java.awt.Font(a.getName(),1,a.getSize()),b=this.nullFrame.getGraphics().getFontMetrics(a),
+this.setCharWidth(I(this.widthScale*F(b.stringWidth("MMMMMMMMMMM")/10))))},"java.awt.Font");d(c$,"getFont",function(){return this.font});d(c$,"resetSeqLimits",function(a){this.setEndSeq(F(a/this.getCharHeight()))},"~N");d(c$,"setCurrentTree",function(a){this.currentTree=a},"jalview.analysis.NJTree");d(c$,"getCurrentTree",function(){return this.currentTree});d(c$,"getCentreColumnLabels",function(){return this.centreColumnLabels});d(c$,"getFollowSelection",function(){return this.followSelection});e(c$,
+"sendSelection",function(){this.getStructureSelectionManager().sendSelection(new jalview.datamodel.SequenceGroup(this.getSelectionGroup()),new jalview.datamodel.ColumnSelection(this.getColumnSelection()),this)});e(c$,"getStructureSelectionManager",function(){return jalview.structure.StructureSelectionManager.getStructureSelectionManager(this.applet)});d(c$,"expandColSelection",function(a,b){var c,f;if(null!=a&&(0<=(c=a.getStartRes())&&a.getStartRes()<=(f=a.getEndRes())&&(null==this.colSel||null==
+this.colSel.getSelected()||0==this.colSel.getSelected().size()))&&(b||this.alignment.getWidth()!=1+f-c)){null==this.colSel&&(this.colSel=new jalview.datamodel.ColumnSelection);for(c=a.getStartRes();c<=a.getEndRes();c++)this.colSel.addElement(c)}},"jalview.datamodel.SequenceGroup,~B");e(c$,"isNormaliseSequenceLogo",function(){return this.normaliseSequenceLogo});d(c$,"setNormaliseSequenceLogo",function(a){this.normaliseSequenceLogo=a},"~B");e(c$,"isValidCharWidth",function(){return this.validCharWidth});
+d(c$,"getAnnotationColumnSelectionState",function(){return this.annotationColumnSelectionState});d(c$,"setAnnotationColumnSelectionState",function(a){this.annotationColumnSelectionState=a},"jalview.appletgui.AnnotationColumnChooser");e(c$,"mirrorCommand",function(a,b,c,f){v(f,jalview.api.AlignViewportI)&&f.getCodingComplement()===this&&(a=c.mapCommand(a,b,this.getAlignment(),this.getGapCharacter()),null!=a&&(a.doCommand(null),this.firePropertyChange("alignment",null,this.getAlignment().getSequences())))},
+"jalview.commands.CommandI,~B,jalview.structure.StructureSelectionManager,jalview.structure.VamsasSource");e(c$,"getVamsasSource",function(){return this});d(c$,"scrollComplementaryAlignment",function(a){if(null!=a){var b=new jalview.datamodel.SearchResults,c=this.findComplementScrollTarget(b);b.isEmpty()||(a.setFollowingComplementScroll(!0),a.scrollToCentre(b,c))}},"jalview.appletgui.AlignmentPanel")});p("jalview.structure");M(jalview.structure,"CommandListener");p("jalview.structure");M(jalview.structure,
+"SelectionSource");p("jalview.structure");M(jalview.structure,"VamsasSource");p("jalview.viewmodel");q("jalview.api.AlignViewportI jalview.structure.CommandListener $.VamsasSource jalview.datamodel.ColumnSelection jalview.viewmodel.styles.ViewStyle jalview.workers.AlignCalcManager java.beans.PropertyChangeSupport java.util.ArrayDeque $.HashMap".split(" "),"jalview.viewmodel.AlignmentViewport","jalview.analysis.Conservation jalview.datamodel.AlignmentAnnotation $.AlignmentView $.CigarArray $.Sequence $.SequenceGroup jalview.schemes.Blosum62ColourScheme $.PIDColourScheme $.ResidueProperties jalview.util.Comparison $.MappingUtils jalview.workers.ComplementConsensusThread $.ConsensusThread $.ConservationThread $.StrucConsensusThread java.awt.Color java.util.ArrayList $.BitSet $.Hashtable".split(" "),
+function(){c$=s(function(){this.sequenceSetID=this.alignment=this.redoList=this.historyList=this.featuresDisplayed=this.codingComplement=this.viewStyle=null;this.$isDataset=!1;this.colSel=this.hiddenRepSequences=null;this.autoCalculateStrucConsensus=this.autoCalculateConsensus=!0;this.ignoreGapsInConsensusCalculation=!1;this.hconservation=this.hStrucConsensus=this.hcomplementConsensus=this.hconsensus=this.groupConservation=this.groupConsensus=this.quality=this.conservation=this.strucConsensus=this.complementConsensus=
+this.consensus=this.globalColourScheme=null;this.ConsPercGaps=25;this.calculator=null;this.normaliseSequenceLogo=this.showSequenceLogo=this.showGroupConsensus=this.showGroupConservation=!1;this.showConsensusHistogram=!0;this.sortByTree=this.padGaps=!1;this.viewId=this.selectionGroup=null;this.colselhash=this.sgrouphash=-1;this.changeSupport=null;this.showConsensus=this.showQuality=this.showConservation=!0;this.sortAnnotationsBy=this.sequenceColours=null;this.showAutocalculatedAbove=!1;this.followHighlight=
+!0;this.endSeq=this.startSeq=this.endRes=this.startRes=0;r(this,arguments)},jalview.viewmodel,"AlignmentViewport",null,[jalview.api.AlignViewportI,jalview.structure.CommandListener,jalview.structure.VamsasSource]);J(c$,function(){this.viewStyle=new jalview.viewmodel.styles.ViewStyle;this.historyList=new java.util.ArrayDeque;this.redoList=new java.util.ArrayDeque;this.colSel=new jalview.datamodel.ColumnSelection;this.calculator=new jalview.workers.AlignCalcManager;this.changeSupport=new java.beans.PropertyChangeSupport(this);
+this.sequenceColours=new java.util.HashMap});d(c$,"setFontName",function(a){this.viewStyle.setFontName(a)},"~S");d(c$,"setFontStyle",function(a){this.viewStyle.setFontStyle(a)},"~N");d(c$,"setFontSize",function(a){this.viewStyle.setFontSize(a)},"~N");d(c$,"getFontStyle",function(){return this.viewStyle.getFontStyle()});d(c$,"getFontName",function(){return this.viewStyle.getFontName()});d(c$,"getFontSize",function(){return this.viewStyle.getFontSize()});d(c$,"setUpperCasebold",function(a){this.viewStyle.setUpperCasebold(a)},
+"~B");d(c$,"isUpperCasebold",function(){return this.viewStyle.isUpperCasebold()});d(c$,"isSeqNameItalics",function(){return this.viewStyle.isSeqNameItalics()});d(c$,"setColourByReferenceSeq",function(a){this.viewStyle.setColourByReferenceSeq(a)},"~B");d(c$,"setColourAppliesToAllGroups",function(a){this.viewStyle.setColourAppliesToAllGroups(a)},"~B");d(c$,"getColourAppliesToAllGroups",function(){return this.viewStyle.getColourAppliesToAllGroups()});d(c$,"getAbovePIDThreshold",function(){return this.viewStyle.getAbovePIDThreshold()});
+d(c$,"setIncrement",function(a){this.viewStyle.setIncrement(a)},"~N");d(c$,"getIncrement",function(){return this.viewStyle.getIncrement()});d(c$,"setConservationSelected",function(a){this.viewStyle.setConservationSelected(a)},"~B");d(c$,"setShowHiddenMarkers",function(a){this.viewStyle.setShowHiddenMarkers(a)},"~B");d(c$,"getShowHiddenMarkers",function(){return this.viewStyle.getShowHiddenMarkers()});d(c$,"setScaleRightWrapped",function(a){this.viewStyle.setScaleRightWrapped(a)},"~B");d(c$,"setScaleLeftWrapped",
+function(a){this.viewStyle.setScaleLeftWrapped(a)},"~B");d(c$,"setScaleAboveWrapped",function(a){this.viewStyle.setScaleAboveWrapped(a)},"~B");d(c$,"getScaleLeftWrapped",function(){return this.viewStyle.getScaleLeftWrapped()});d(c$,"getScaleAboveWrapped",function(){return this.viewStyle.getScaleAboveWrapped()});d(c$,"getScaleRightWrapped",function(){return this.viewStyle.getScaleRightWrapped()});d(c$,"setAbovePIDThreshold",function(a){this.viewStyle.setAbovePIDThreshold(a)},"~B");d(c$,"setThreshold",
+function(a){this.viewStyle.setThreshold(a)},"~N");d(c$,"getThreshold",function(){return this.viewStyle.getThreshold()});d(c$,"getShowJVSuffix",function(){return this.viewStyle.getShowJVSuffix()});d(c$,"setShowJVSuffix",function(a){this.viewStyle.setShowJVSuffix(a)},"~B");d(c$,"setWrapAlignment",function(a){this.viewStyle.setWrapAlignment(a)},"~B");d(c$,"setShowText",function(a){this.viewStyle.setShowText(a)},"~B");d(c$,"setRenderGaps",function(a){this.viewStyle.setRenderGaps(a)},"~B");d(c$,"getColourText",
+function(){return this.viewStyle.getColourText()});d(c$,"setColourText",function(a){this.viewStyle.setColourText(a)},"~B");d(c$,"getWrapAlignment",function(){return this.viewStyle.getWrapAlignment()});d(c$,"getShowText",function(){return this.viewStyle.getShowText()});d(c$,"getWrappedWidth",function(){return this.viewStyle.getWrappedWidth()});d(c$,"setWrappedWidth",function(a){this.viewStyle.setWrappedWidth(a)},"~N");d(c$,"getCharHeight",function(){return this.viewStyle.getCharHeight()});d(c$,"setCharHeight",
+function(a){this.viewStyle.setCharHeight(a)},"~N");d(c$,"getCharWidth",function(){return this.viewStyle.getCharWidth()});d(c$,"setCharWidth",function(a){this.viewStyle.setCharWidth(a)},"~N");d(c$,"getShowBoxes",function(){return this.viewStyle.getShowBoxes()});d(c$,"getShowUnconserved",function(){return this.viewStyle.getShowUnconserved()});d(c$,"setShowUnconserved",function(a){this.viewStyle.setShowUnconserved(a)},"~B");d(c$,"setSeqNameItalics",function(a){this.viewStyle.setSeqNameItalics(a)},"~B");
+d(c$,"getAlignment",function(){return this.alignment});e(c$,"getGapCharacter",function(){return this.alignment.getGapCharacter()});d(c$,"setDataset",function(a){this.$isDataset=a},"~B");d(c$,"isDataset",function(){return this.$isDataset});e(c$,"setGlobalColourScheme",function(a){this.globalColourScheme=a;var b=!1;null!=a&&(a.setConservationApplied(b=this.getConservationSelected()),this.getAbovePIDThreshold()||v(a,jalview.schemes.PIDColourScheme)||v(a,jalview.schemes.Blosum62ColourScheme)?(b=!0,a.setThreshold(this.viewStyle.getThreshold(),
+this.ignoreGapsInConsensusCalculation)):a.setThreshold(0,this.ignoreGapsInConsensusCalculation),b&&(a.setConsensus(this.hconsensus),a.setConservation(this.hconservation)),a.alignmentChanged(this.alignment,this.hiddenRepSequences));if(this.getColourAppliesToAllGroups())for(var c,f=this.getAlignment().getGroups().iterator();f.hasNext()&&((c=f.next())||1);)null==a?c.cs=null:(c.cs=a.applyTo(c,this.getHiddenRepSequences()),c.setConsPercGaps(this.ConsPercGaps),this.getAbovePIDThreshold()||v(a,jalview.schemes.PIDColourScheme)||
+v(a,jalview.schemes.Blosum62ColourScheme)?(c.cs.setThreshold(this.viewStyle.getThreshold(),this.isIgnoreGapsConsensus()),b=!0):c.cs.setThreshold(0,this.isIgnoreGapsConsensus()),this.getConservationSelected()?(c.cs.setConservationApplied(!0),b=!0):c.cs.setConservation(null),b?c.recalcConservation():c.cs.alignmentChanged(c,this.hiddenRepSequences))},"jalview.schemes.ColourSchemeI");e(c$,"getGlobalColourScheme",function(){return this.globalColourScheme});e(c$,"setConservation",function(a){this.hconservation=
+a},"jalview.analysis.Conservation");e(c$,"getConsPercGaps",function(){return this.ConsPercGaps});e(c$,"setSequenceConsensusHash",function(a){this.hconsensus=a},"~A");e(c$,"setComplementConsensusHash",function(a){this.hcomplementConsensus=a},"~A");e(c$,"getSequenceConsensusHash",function(){return this.hconsensus});e(c$,"getComplementConsensusHash",function(){return this.hcomplementConsensus});e(c$,"getRnaStructureConsensusHash",function(){return this.hStrucConsensus});e(c$,"setRnaStructureConsensusHash",
+function(a){this.hStrucConsensus=a},"~A");e(c$,"getAlignmentQualityAnnot",function(){return this.quality});e(c$,"getAlignmentConservationAnnotation",function(){return this.conservation});e(c$,"getAlignmentConsensusAnnotation",function(){return this.consensus});e(c$,"getComplementConsensusAnnotation",function(){return this.complementConsensus});e(c$,"getAlignmentStrucConsensusAnnotation",function(){return this.strucConsensus});d(c$,"updateConservation",function(a){!this.alignment.isNucleotide()&&null!=
+this.conservation&&this.autoCalculateConsensus&&null==this.calculator.getRegisteredWorkersOfClass(jalview.workers.ConservationThread)&&this.calculator.registerWorker(new jalview.workers.ConservationThread(this,a))},"jalview.api.AlignmentViewPanel");d(c$,"updateConsensus",function(a){if(null!=this.consensus&&this.autoCalculateConsensus){null==this.calculator.getRegisteredWorkersOfClass(jalview.workers.ConsensusThread)&&this.calculator.registerWorker(new jalview.workers.ConsensusThread(this,a));var b=
+this.getAlignment();!b.isNucleotide()&&null!=b.getCodonFrames()&&!b.getCodonFrames().isEmpty()&&null==this.calculator.getRegisteredWorkersOfClass(jalview.workers.ComplementConsensusThread)&&this.calculator.registerWorker(new jalview.workers.ComplementConsensusThread(this,a))}},"jalview.api.AlignmentViewPanel");d(c$,"updateStrucConsensus",function(a){this.autoCalculateStrucConsensus&&(null==this.strucConsensus&&this.alignment.isNucleotide()&&this.alignment.hasRNAStructure())&&this.initRNAStructure();
+null!=this.strucConsensus&&this.autoCalculateStrucConsensus&&null==this.calculator.getRegisteredWorkersOfClass(jalview.workers.StrucConsensusThread)&&this.calculator.registerWorker(new jalview.workers.StrucConsensusThread(this,a))},"jalview.api.AlignmentViewPanel");d(c$,"isCalcInProgress",function(){return this.calculator.isWorking()});e(c$,"isCalculationInProgress",function(a){return!a.autoCalculated?!1:this.calculator.workingInvolvedWith(a)?!0:!1},"jalview.datamodel.AlignmentAnnotation");e(c$,"isClosed",
+function(){return null==this.alignment});e(c$,"getCalcManager",function(){return this.calculator});e(c$,"isShowSequenceLogo",function(){return this.showSequenceLogo});d(c$,"setShowSequenceLogo",function(a){a!=this.showSequenceLogo&&(this.showSequenceLogo=a,this.calculator.updateAnnotationFor(jalview.workers.ConsensusThread),this.calculator.updateAnnotationFor(jalview.workers.ComplementConsensusThread),this.calculator.updateAnnotationFor(jalview.workers.StrucConsensusThread));this.showSequenceLogo=
+a},"~B");d(c$,"setShowConsensusHistogram",function(a){this.showConsensusHistogram=a},"~B");d(c$,"isShowGroupConservation",function(){return this.showGroupConservation});d(c$,"setShowGroupConservation",function(a){this.showGroupConservation=a},"~B");d(c$,"isShowGroupConsensus",function(){return this.showGroupConsensus});d(c$,"setShowGroupConsensus",function(a){this.showGroupConsensus=a},"~B");e(c$,"isShowConsensusHistogram",function(){return this.showConsensusHistogram});e(c$,"getSelectionGroup",function(){return this.selectionGroup});
+e(c$,"setSelectionGroup",function(a){this.selectionGroup=a},"jalview.datamodel.SequenceGroup");d(c$,"setHiddenColumns",function(a){this.colSel=a},"jalview.datamodel.ColumnSelection");e(c$,"getColumnSelection",function(){return this.colSel});e(c$,"setColumnSelection",function(a){this.colSel=a;null!=a&&this.updateHiddenColumns()},"jalview.datamodel.ColumnSelection");e(c$,"getHiddenRepSequences",function(){return this.hiddenRepSequences});e(c$,"setHiddenRepSequences",function(a){this.hiddenRepSequences=
+a},"java.util.Map");e(c$,"hasHiddenColumns",function(){return null!=this.colSel&&this.colSel.hasHiddenColumns()});d(c$,"updateHiddenColumns",function(){});e(c$,"hasHiddenRows",function(){return 0<this.alignment.getHiddenSequences().getSize()});d(c$,"setSequenceSetId",function(a){null!=this.sequenceSetID&&System.err.println("Warning - overwriting a sequenceSetId for a viewport!");this.sequenceSetID=String.instantialize(a)},"~S");e(c$,"getSequenceSetId",function(){null==this.sequenceSetID&&(this.sequenceSetID=
+this.alignment.hashCode()+"");return this.sequenceSetID});e(c$,"getViewId",function(){null==this.viewId&&(this.viewId=this.getSequenceSetId()+"."+this.hashCode()+"");return this.viewId});d(c$,"setIgnoreGapsConsensus",function(a,b){this.ignoreGapsInConsensusCalculation=a;null!=b&&(this.updateConsensus(b),null!=this.globalColourScheme&&this.globalColourScheme.setThreshold(this.globalColourScheme.getThreshold(),this.ignoreGapsInConsensusCalculation))},"~B,jalview.api.AlignmentViewPanel");d(c$,"isSelectionGroupChanged",
+function(a){var b=null==this.selectionGroup||0==this.selectionGroup.getSize()?-1:this.selectionGroup.hashCode();return-1!=b&&b!=this.sgrouphash?(a&&(this.sgrouphash=b),!0):!1},"~B");d(c$,"isColSelChanged",function(a){var b=null==this.colSel||0==this.colSel.size()?-1:this.colSel.hashCode();return-1!=b&&b!=this.colselhash?(a&&(this.colselhash=b),!0):!1},"~B");e(c$,"isIgnoreGapsConsensus",function(){return this.ignoreGapsInConsensusCalculation});d(c$,"addPropertyChangeListener",function(a){this.changeSupport.addPropertyChangeListener(a)},
+"java.beans.PropertyChangeListener");d(c$,"removePropertyChangeListener",function(a){this.changeSupport.removePropertyChangeListener(a)},"java.beans.PropertyChangeListener");d(c$,"firePropertyChange",function(a,b,c){this.changeSupport.firePropertyChange(a,b,c)},"~S,~O,~O");d(c$,"hideSelectedColumns",function(){1>this.colSel.size()||(this.colSel.hideSelectedColumns(),this.setSelectionGroup(null))});d(c$,"hideColumns",function(a,b){a==b?this.colSel.hideColumns(a):this.colSel.hideColumns(a,b)},"~N,~N");
+d(c$,"showColumn",function(a){this.colSel.revealHiddenColumns(a)},"~N");d(c$,"showAllHiddenColumns",function(){this.colSel.revealAllHiddenColumns()});d(c$,"showAllHiddenSeqs",function(){if(0<this.alignment.getHiddenSequences().getSize()){null==this.selectionGroup&&(this.selectionGroup=new jalview.datamodel.SequenceGroup,this.selectionGroup.setEndRes(this.alignment.getWidth()-1));for(var a,b=this.alignment.getHiddenSequences().showAll(this.hiddenRepSequences).iterator();b.hasNext()&&((a=b.next())||
+1);)this.selectionGroup.addSequence(a,!1),this.setSequenceAnnotationsVisible(a,!0);this.hiddenRepSequences=null;this.firePropertyChange("alignment",null,this.alignment.getSequences());this.sendSelection()}});d(c$,"showSequence",function(a){a=this.alignment.getHiddenSequences().showSequence(a,this.hiddenRepSequences);if(0<a.size()){null==this.selectionGroup&&(this.selectionGroup=new jalview.datamodel.SequenceGroup,this.selectionGroup.setEndRes(this.alignment.getWidth()-1));var b;for(a=a.iterator();a.hasNext()&&
+((b=a.next())||1);)this.selectionGroup.addSequence(b,!1),this.setSequenceAnnotationsVisible(b,!0);this.firePropertyChange("alignment",null,this.alignment.getSequences());this.sendSelection()}},"~N");d(c$,"hideAllSelectedSeqs",function(){if(!(null==this.selectionGroup||1>this.selectionGroup.getSize())){var a=this.selectionGroup.getSequencesInOrder(this.alignment);this.hideSequence(a);this.setSelectionGroup(null)}});d(c$,"hideSequence",function(a){if(null!=a){for(var b=0;b<a.length;b++)this.alignment.getHiddenSequences().hideSequence(a[b]),
+this.setSequenceAnnotationsVisible(a[b],!1);this.firePropertyChange("alignment",null,this.alignment.getSequences())}},"~A");d(c$,"setSequenceAnnotationsVisible",function(a,b){for(var c,f=0,d=this.alignment.getAlignmentAnnotation();f<d.length&&((c=d[f])||1);f++)c.sequenceRef===a&&(c.visible=b)},"jalview.datamodel.SequenceI,~B");d(c$,"hideRepSequences",function(a,b){var c=b.getSize();if(!(2>c)){null==this.hiddenRepSequences&&(this.hiddenRepSequences=new java.util.Hashtable);this.hiddenRepSequences.put(a,
+b);for(var f=Array(c-1),d=0,e=0;e<c;e++)if(b.getSequenceAt(e)!==a){if(d==c-1)return;f[d++]=b.getSequenceAt(e)}b.setSeqrep(a);b.setHidereps(!0);this.hideSequence(f)}},"jalview.datamodel.SequenceI,jalview.datamodel.SequenceGroup");d(c$,"isHiddenRepSequence",function(a){return this.alignment.getSeqrep()===a||null!=this.hiddenRepSequences&&this.hiddenRepSequences.containsKey(a)},"jalview.datamodel.SequenceI");d(c$,"getRepresentedSequences",function(a){return null==this.hiddenRepSequences?null:this.hiddenRepSequences.get(a)},
+"jalview.datamodel.SequenceI");e(c$,"adjustForHiddenSeqs",function(a){return this.alignment.getHiddenSequences().adjustForHiddenSeqs(a)},"~N");e(c$,"invertColumnSelection",function(){this.colSel.invertColumnSelection(0,this.alignment.getWidth())});e(c$,"getSelectionAsNewSequence",function(){var a;if(null==this.selectionGroup||0==this.selectionGroup.getSize()){a=this.alignment.getSequencesArray();for(var b=this.alignment.getAlignmentAnnotation(),c=0;c<a.length;c++)a[c]=new jalview.datamodel.Sequence(a[c],
+b)}else a=this.selectionGroup.getSelectionAsNewSequences(this.alignment);return a});e(c$,"getSequenceSelection",function(){var a=null;null!=this.selectionGroup&&(a=this.selectionGroup.getSequencesInOrder(this.alignment));null==a&&(a=this.alignment.getSequencesArray());return a});e(c$,"getViewAsCigars",function(a){return new jalview.datamodel.CigarArray(this.alignment,this.colSel,a?this.selectionGroup:null)},"~B");d(c$,"getAlignmentView",function(a){return this.getAlignmentView(a,!1)},"~B");d(c$,"getAlignmentView",
+function(a,b){return new jalview.datamodel.AlignmentView(this.alignment,this.colSel,this.selectionGroup,null!=this.colSel&&this.colSel.hasHiddenColumns(),a,b)},"~B,~B");e(c$,"getViewAsString",function(a){var b=null,c=null,f,d=0,e=0;a&&null!=this.selectionGroup?(f=this.selectionGroup.getSize(),c=this.selectionGroup.getSequencesInOrder(this.alignment),d=this.selectionGroup.getStartRes(),e=this.selectionGroup.getEndRes()+1):(f=this.alignment.getHeight(),c=this.alignment.getSequencesArray(),e=this.alignment.getWidth());
+b=Array(f);if(null!=this.colSel&&this.colSel.hasHiddenColumns())b=this.colSel.getVisibleSequenceStrings(d,e,c);else for(a=0;a<f;a++)b[a]=c[a].getSequenceAsString(d,e);return b},"~B");e(c$,"getVisibleRegionBoundaries",function(a,b){var c=new java.util.ArrayList,f=a,d=b;do null!=this.colSel&&this.colSel.hasHiddenColumns()&&(0==f&&(f=this.colSel.adjustForHiddenColumns(f)),d=this.colSel.getHiddenBoundaryRight(f),f==d&&(d=b),d>b&&(d=b)),c.add(w(-1,[f,d])),null!=this.colSel&&this.colSel.hasHiddenColumns()&&
+(f=this.colSel.adjustForHiddenColumns(d),f=this.colSel.getHiddenBoundaryLeft(f)+1);while(d<b);w(c.size(),2,0);return c},"~N,~N");e(c$,"getVisibleAlignmentAnnotation",function(a){var b=new java.util.ArrayList,c;if(null!=(c=this.alignment.getAlignmentAnnotation()))for(var f,d=0;d<c.length&&((f=c[d])||1);d++){var e=new jalview.datamodel.AlignmentAnnotation(f);a&&null!=this.selectionGroup?this.colSel.makeVisibleAnnotation(this.selectionGroup.getStartRes(),this.selectionGroup.getEndRes(),e):this.colSel.makeVisibleAnnotation(e);
+b.add(e)}return b},"~B");e(c$,"isPadGaps",function(){return this.padGaps});e(c$,"setPadGaps",function(a){this.padGaps=a},"~B");e(c$,"alignmentChanged",function(a){this.isPadGaps()&&this.alignment.padGaps();this.autoCalculateConsensus&&this.updateConsensus(a);null!=this.hconsensus&&this.autoCalculateConsensus&&this.updateConservation(a);this.autoCalculateStrucConsensus&&this.updateStrucConsensus(a);a=this.alignment.getWidth();var b=this.alignment.getGroups();if(null!=b)for(var c,b=b.iterator();b.hasNext()&&
+((c=b.next())||1);)c.getEndRes()>a&&c.setEndRes(a-1);null!=this.selectionGroup&&this.selectionGroup.getEndRes()>a&&this.selectionGroup.setEndRes(a-1);this.resetAllColourSchemes();this.calculator.restartWorkers()},"jalview.api.AlignmentViewPanel");d(c$,"resetAllColourSchemes",function(){var a=this.globalColourScheme;null!=a&&(a.alignmentChanged(this.alignment,this.hiddenRepSequences),a.setConsensus(this.hconsensus),a.conservationApplied()&&a.setConservation(jalview.analysis.Conservation.calculateConservation("All",
+jalview.schemes.ResidueProperties.propHash,3,this.alignment.getSequences(),0,this.alignment.getWidth(),!1,this.getConsPercGaps(),!1)));for(var b,a=this.alignment.getGroups().iterator();a.hasNext()&&((b=a.next())||1);)null!=b.cs&&b.cs.alignmentChanged(b,this.hiddenRepSequences),b.recalcConservation()});d(c$,"initAutoAnnotation",function(){null==this.hconsensus&&!this.$isDataset&&(this.alignment.isNucleotide()?this.initRNAStructure():(this.initConservation(),this.initQuality()),this.consensus=new jalview.datamodel.AlignmentAnnotation("Consensus",
+"PID",Array(1),0,100,1),this.initConsensus(this.consensus),this.initComplementConsensus())});d(c$,"initComplementConsensus",function(){if(!this.alignment.isNucleotide()){var a=this.alignment.getCodonFrames();null!=a&&!a.isEmpty()&&(this.complementConsensus=new jalview.datamodel.AlignmentAnnotation("cDNA Consensus","PID for cDNA",Array(1),0,100,1),this.initConsensus(this.complementConsensus))}});d(c$,"initConsensus",function(a){a.hasText=!0;a.autoCalculated=!0;this.showConsensus&&this.alignment.addAnnotation(a)},
+"jalview.datamodel.AlignmentAnnotation");d(c$,"initConservation",function(){this.showConservation&&null==this.conservation&&(this.conservation=new jalview.datamodel.AlignmentAnnotation("Conservation","Conservation of total alignment less than "+this.getConsPercGaps()+"% gaps",Array(1),0,11,1),this.conservation.hasText=!0,this.conservation.autoCalculated=!0,this.alignment.addAnnotation(this.conservation))});d(c$,"initQuality",function(){this.showQuality&&null==this.quality&&(this.quality=new jalview.datamodel.AlignmentAnnotation("Quality",
+"Alignment Quality based on Blosum62 scores",Array(1),0,11,1),this.quality.hasText=!0,this.quality.autoCalculated=!0,this.alignment.addAnnotation(this.quality))});d(c$,"initRNAStructure",function(){this.alignment.hasRNAStructure()&&null==this.strucConsensus&&(this.strucConsensus=new jalview.datamodel.AlignmentAnnotation("StrucConsensus","PID",Array(1),0,100,1),this.strucConsensus.hasText=!0,this.strucConsensus.autoCalculated=!0,this.showConsensus&&this.alignment.addAnnotation(this.strucConsensus))});
+e(c$,"calcPanelHeight",function(){var a=this.getAlignment().getAlignmentAnnotation(),b=0,c=this.getCharHeight();if(null!=a)for(var f=new java.util.BitSet,d,e=0;e<a.length&&((d=a[e])||1);e++)if(null==d)System.err.println("Null annotation row: ignoring.");else if(d.visible){if(-1<d.graphGroup)if(f.get(d.graphGroup))continue;else f.set(d.graphGroup);d.height=0;d.hasText&&(d.height+=c);d.hasIcons&&(d.height+=16);0<d.graph&&(d.height+=d.graphHeight);0==d.height&&(d.height=20);b+=d.height}0==b&&(b=20);
+return b});e(c$,"updateGroupAnnotationSettings",function(a,b){var c=!1,f=this.isShowGroupConservation(),d=this.isShowGroupConsensus(),e=this.isShowSequenceLogo(),g=this.isShowConsensusHistogram(),h=this.isNormaliseSequenceLogo(),c=this.alignment.getAlignmentAnnotation(),j=new java.util.ArrayList;if(null!=c)for(var n=0;n<c.length;n++)c[n].autoCalculated&&null!=c[n].groupRef&&(j.add(c[n].groupRef),this.alignment.deleteAnnotation(c[n],!1));if(null!=this.alignment.getGroups())for(var x,n=this.alignment.getGroups().iterator();n.hasNext()&&
+((x=n.next())||1);){c=!1;if(a||!b&&!j.contains(x))x.setshowSequenceLogo(e),x.setShowConsensusHistogram(g),x.setNormaliseSequenceLogo(h);f&&(c=!0,this.alignment.addAnnotation(x.getConservationRow(),0));d&&(c=!0,this.alignment.addAnnotation(x.getConsensus(),0));c&&x.recalcConservation()}j.clear()},"~B,~B");d(c$,"isDisplayReferenceSeq",function(){return this.alignment.hasSeqrep()&&this.viewStyle.isDisplayReferenceSeq()});d(c$,"setDisplayReferenceSeq",function(a){this.viewStyle.setDisplayReferenceSeq(a)},
+"~B");d(c$,"isColourByReferenceSeq",function(){return this.alignment.hasSeqrep()&&this.viewStyle.isColourByReferenceSeq()});e(c$,"getSequenceColour",function(a){a=this.sequenceColours.get(a);return null==a?java.awt.Color.white:a},"jalview.datamodel.SequenceI");e(c$,"setSequenceColour",function(a,b){null==b?this.sequenceColours.remove(a):this.sequenceColours.put(a,b)},"jalview.datamodel.SequenceI,java.awt.Color");e(c$,"updateSequenceIdColours",function(){for(var a,b=this.alignment.getGroups().iterator();b.hasNext()&&
+((a=b.next())||1);)if(null!=a.idColour)for(var c,f=a.getSequences(this.getHiddenRepSequences()).iterator();f.hasNext()&&((c=f.next())||1);)this.sequenceColours.put(c,a.idColour)});e(c$,"clearSequenceColours",function(){this.sequenceColours.clear()});d(c$,"getCodingComplement",function(){return this.codingComplement});d(c$,"setCodingComplement",function(a){this===a?System.err.println("Ignoring recursive setCodingComplement request"):(this.codingComplement=a,a.getCodingComplement()!==this&&a.setCodingComplement(this))},
+"jalview.api.AlignViewportI");e(c$,"isNucleotide",function(){return null==this.getAlignment()?!1:this.getAlignment().isNucleotide()});e(c$,"getFeaturesDisplayed",function(){return this.featuresDisplayed});e(c$,"setFeaturesDisplayed",function(a){this.featuresDisplayed=a},"jalview.api.FeaturesDisplayedI");e(c$,"areFeaturesDisplayed",function(){return null!=this.featuresDisplayed&&0<this.featuresDisplayed.getRegisterdFeaturesCount()});d(c$,"setShowSequenceFeatures",function(a){this.viewStyle.setShowSequenceFeatures(a)},
+"~B");d(c$,"isShowSequenceFeatures",function(){return this.viewStyle.isShowSequenceFeatures()});d(c$,"setShowSequenceFeaturesHeight",function(a){this.viewStyle.setShowSequenceFeaturesHeight(a)},"~B");d(c$,"isShowSequenceFeaturesHeight",function(){return this.viewStyle.isShowSequenceFeaturesHeight()});d(c$,"setShowAnnotation",function(a){this.viewStyle.setShowAnnotation(a)},"~B");d(c$,"isShowAnnotation",function(){return this.viewStyle.isShowAnnotation()});d(c$,"isRightAlignIds",function(){return this.viewStyle.isRightAlignIds()});
+d(c$,"setRightAlignIds",function(a){this.viewStyle.setRightAlignIds(a)},"~B");d(c$,"getConservationSelected",function(){return this.viewStyle.getConservationSelected()});d(c$,"setShowBoxes",function(a){this.viewStyle.setShowBoxes(a)},"~B");d(c$,"getTextColour",function(){return this.viewStyle.getTextColour()});d(c$,"getTextColour2",function(){return this.viewStyle.getTextColour2()});d(c$,"getThresholdTextColour",function(){return this.viewStyle.getThresholdTextColour()});d(c$,"isConservationColourSelected",
+function(){return this.viewStyle.isConservationColourSelected()});d(c$,"isRenderGaps",function(){return this.viewStyle.isRenderGaps()});d(c$,"isShowColourText",function(){return this.viewStyle.isShowColourText()});d(c$,"setConservationColourSelected",function(a){this.viewStyle.setConservationColourSelected(a)},"~B");d(c$,"setShowColourText",function(a){this.viewStyle.setShowColourText(a)},"~B");d(c$,"setTextColour",function(a){this.viewStyle.setTextColour(a)},"java.awt.Color");d(c$,"setThresholdTextColour",
+function(a){this.viewStyle.setThresholdTextColour(a)},"~N");d(c$,"setTextColour2",function(a){this.viewStyle.setTextColour2(a)},"java.awt.Color");e(c$,"getViewStyle",function(){return new jalview.viewmodel.styles.ViewStyle(this.viewStyle)});e(c$,"setViewStyle",function(a){this.viewStyle=new jalview.viewmodel.styles.ViewStyle(a)},"jalview.api.ViewStyleI");d(c$,"sameStyle",function(a){return this.viewStyle.sameStyle(a)},"jalview.api.ViewStyleI");d(c$,"getIdWidth",function(){return this.viewStyle.getIdWidth()});
+d(c$,"setIdWidth",function(a){this.viewStyle.setIdWidth(a)},"~N");d(c$,"isCentreColumnLabels",function(){return this.viewStyle.isCentreColumnLabels()});d(c$,"setCentreColumnLabels",function(a){this.viewStyle.setCentreColumnLabels(a)},"~B");d(c$,"setShowDBRefs",function(a){this.viewStyle.setShowDBRefs(a)},"~B");d(c$,"isShowDBRefs",function(){return this.viewStyle.isShowDBRefs()});d(c$,"isShowNPFeats",function(){return this.viewStyle.isShowNPFeats()});d(c$,"setShowNPFeats",function(a){this.viewStyle.setShowNPFeats(a)},
+"~B");d(c$,"addToHistoryList",function(a){null!=this.historyList&&(this.historyList.push(a),this.broadcastCommand(a,!1))},"jalview.commands.CommandI");d(c$,"broadcastCommand",function(a,b){this.getStructureSelectionManager().commandPerformed(a,b,this.getVamsasSource())},"jalview.commands.CommandI,~B");d(c$,"addToRedoList",function(a){null!=this.redoList&&this.redoList.push(a);this.broadcastCommand(a,!0)},"jalview.commands.CommandI");d(c$,"clearRedoList",function(){null!=this.redoList&&this.redoList.clear()});
+d(c$,"setHistoryList",function(a){this.historyList=a},"java.util.Deque");d(c$,"getHistoryList",function(){return this.historyList});d(c$,"setRedoList",function(a){this.redoList=a},"java.util.Deque");d(c$,"getRedoList",function(){return this.redoList});e(c$,"getVamsasSource",function(){return this});d(c$,"getSortAnnotationsBy",function(){return this.sortAnnotationsBy});d(c$,"setSortAnnotationsBy",function(a){this.sortAnnotationsBy=a},"jalview.analysis.AnnotationSorter.SequenceAnnotationOrder");d(c$,
+"isShowAutocalculatedAbove",function(){return this.showAutocalculatedAbove});d(c$,"setShowAutocalculatedAbove",function(a){this.showAutocalculatedAbove=a},"~B");d(c$,"isScaleProteinAsCdna",function(){return this.viewStyle.isScaleProteinAsCdna()});d(c$,"setScaleProteinAsCdna",function(a){this.viewStyle.setScaleProteinAsCdna(a)},"~B");d(c$,"isFollowHighlight",function(){return this.followHighlight});e(c$,"setFollowHighlight",function(a){this.followHighlight=a},"~B");d(c$,"getStartRes",function(){return this.startRes});
+e(c$,"getEndRes",function(){return this.endRes});d(c$,"getStartSeq",function(){return this.startSeq});d(c$,"setStartRes",function(a){this.startRes=a},"~N");d(c$,"setStartSeq",function(a){this.startSeq=a},"~N");d(c$,"setEndRes",function(a){a>this.alignment.getWidth()-1&&(a=this.alignment.getWidth()-1);0>a&&(a=0);this.endRes=a},"~N");d(c$,"setEndSeq",function(a){a>this.alignment.getHeight()&&(a=this.alignment.getHeight());0>a&&(a=0);this.endSeq=a},"~N");d(c$,"getEndSeq",function(){return this.endSeq});
+d(c$,"findComplementScrollTarget",function(a){var b=this.getCodingComplement();if(null==b||!b.isFollowHighlight())return 0;b=!this.getAlignment().isNucleotide()?this.getAlignment():b.getAlignment();if(null==b)return 0;for(var b=b.getCodonFrames(),c=0,f=null,d=this.getStartRes()+F((this.getEndRes()-this.getStartRes())/2),e=this.getAlignment().getHiddenSequences(),g=this.getStartSeq();g<this.getEndSeq()&&!(f=this.getAlignment().getSequenceAt(g),!(null!=e&&e.isHidden(f))&&!jalview.util.Comparison.isGap(f.getCharAt(d))&&
+!jalview.util.MappingUtils.findMappingsForSequence(f,b).isEmpty());g++,c++);if(null==f)return 0;jalview.util.MappingUtils.addSearchResults(a,f,f.findPosition(d),b);return c},"jalview.datamodel.SearchResults")});p("jalview.api");q(["jalview.api.ViewStyleI"],"jalview.api.AlignViewportI",null,function(){M(jalview.api,"AlignViewportI",jalview.api.ViewStyleI)});p("jalview.api");M(jalview.api,"ViewStyleI");p("jalview.viewmodel.styles");q(["jalview.api.ViewStyleI","java.awt.Color"],"jalview.viewmodel.styles.ViewStyle",
+["java.lang.Boolean"],function(){c$=s(function(){this.abovePIDThreshold=!1;this.charWidth=this.charHeight=0;this.idWidth=-1;this.displayReferenceSeq=this.conservationColourSelected=this.colourByReferenceSeq=this.shownpfeats=this.showdbrefs=this.centreColumnLabels=this.colourAppliesToAllGroups=!1;this.increment=0;this.renderGaps=!0;this.scaleAboveWrapped=this.rightAlignIds=!1;this.scaleRightWrapped=this.scaleLeftWrapped=!0;this.seqNameItalics=!1;this.showBoxes=this.showAnnotation=!0;this.showColourText=
+!1;this.showJVSuffix=this.showHiddenMarkers=!0;this.showSequenceFeatures=this.showSeqFeaturesHeight=!1;this.showText=!0;this.showUnconserved=!1;this.textColour2=this.textColour=null;this.thresholdTextColour=this.threshold=0;this.upperCasebold=!1;this.fontName=null;this.fontSize=0;this.scaleProteinAsCdna=!0;this.wrapAlignment=!1;this.fontStyle=this.wrappedWidth=0;r(this,arguments)},jalview.viewmodel.styles,"ViewStyle",null,jalview.api.ViewStyleI);J(c$,function(){this.textColour=java.awt.Color.black;
+this.textColour2=java.awt.Color.white});m(c$,function(a){this.setAbovePIDThreshold(a.getAbovePIDThreshold());this.setCentreColumnLabels(a.isCentreColumnLabels());this.setCharHeight(a.getCharHeight());this.setCharWidth(a.getCharWidth());this.setColourAppliesToAllGroups(a.getColourAppliesToAllGroups());this.setColourByReferenceSeq(a.isColourByReferenceSeq());this.setColourText(a.getColourText());this.setConservationColourSelected(a.isConservationColourSelected());this.setConservationSelected(a.getConservationSelected());
+this.setDisplayReferenceSeq(a.isDisplayReferenceSeq());this.setFontName(a.getFontName());this.setFontSize(a.getFontSize());this.setFontStyle(a.getFontStyle());this.setIdWidth(a.getIdWidth());this.setIncrement(a.getIncrement());this.setRenderGaps(a.isRenderGaps());this.setRightAlignIds(a.isRightAlignIds());this.setScaleAboveWrapped(a.getScaleAboveWrapped());this.setScaleLeftWrapped(a.getScaleLeftWrapped());this.setScaleProteinAsCdna(a.isScaleProteinAsCdna());this.setScaleRightWrapped(a.getScaleRightWrapped());
+this.setSeqNameItalics(a.isSeqNameItalics());this.setShowAnnotation(a.isShowAnnotation());this.setShowBoxes(a.getShowBoxes());this.setShowColourText(a.isShowColourText());this.setShowDBRefs(a.isShowDBRefs());this.setShowHiddenMarkers(a.getShowHiddenMarkers());this.setShowJVSuffix(a.getShowJVSuffix());this.setShowNPFeats(a.isShowNPFeats());this.setShowSequenceFeaturesHeight(a.isShowSequenceFeaturesHeight());this.setShowSequenceFeatures(a.isShowSequenceFeatures());this.setShowText(a.getShowText());
+this.setShowUnconserved(a.getShowUnconserved());this.setTextColour(a.getTextColour());this.setTextColour2(a.getTextColour2());this.setThreshold(a.getThreshold());this.setThresholdTextColour(a.getThresholdTextColour());this.setUpperCasebold(a.isUpperCasebold());this.setWrapAlignment(a.getWrapAlignment());this.setWrappedWidth(a.getWrappedWidth())},"jalview.api.ViewStyleI");m(c$,function(){});e(c$,"equals",function(a){if(null==a||!v(a,jalview.viewmodel.styles.ViewStyle))return!1;var b=this.getAbovePIDThreshold()==
+a.getAbovePIDThreshold()&&this.isCentreColumnLabels()==a.isCentreColumnLabels()&&this.getCharHeight()==a.getCharHeight()&&this.getCharWidth()==a.getCharWidth()&&this.getColourAppliesToAllGroups()==a.getColourAppliesToAllGroups()&&this.isColourByReferenceSeq()==a.isColourByReferenceSeq()&&this.getColourText()==a.getColourText()&&this.isConservationColourSelected()==a.isConservationColourSelected()&&this.getConservationSelected()==a.getConservationSelected()&&this.isDisplayReferenceSeq()==a.isDisplayReferenceSeq()&&
+this.getFontSize()==a.getFontSize()&&this.getFontStyle()==a.getFontStyle()&&this.getIdWidth()==a.getIdWidth()&&this.getIncrement()==a.getIncrement()&&this.isRenderGaps()==a.isRenderGaps()&&this.isRightAlignIds()==a.isRightAlignIds()&&this.getScaleAboveWrapped()==a.getScaleAboveWrapped()&&this.getScaleLeftWrapped()==a.getScaleLeftWrapped()&&this.isScaleProteinAsCdna()==a.isScaleProteinAsCdna()&&this.getScaleRightWrapped()==a.getScaleRightWrapped()&&this.isSeqNameItalics()==a.isSeqNameItalics()&&this.isShowAnnotation()==
+a.isShowAnnotation()&&this.getShowBoxes()==a.getShowBoxes()&&this.isShowColourText()==a.isShowColourText()&&this.isShowDBRefs()==a.isShowDBRefs()&&this.getShowHiddenMarkers()==a.getShowHiddenMarkers()&&this.getShowJVSuffix()==a.getShowJVSuffix()&&this.isShowNPFeats()==a.isShowNPFeats()&&this.isShowSequenceFeaturesHeight()==a.isShowSequenceFeaturesHeight()&&this.isShowSequenceFeatures()==a.isShowSequenceFeatures()&&this.getShowText()==a.getShowText()&&this.getShowUnconserved()==a.getShowUnconserved()&&
+this.getThreshold()==a.getThreshold()&&this.getThresholdTextColour()==a.getThresholdTextColour()&&this.isUpperCasebold()==a.isUpperCasebold()&&this.getWrapAlignment()==a.getWrapAlignment()&&this.getWrappedWidth()==a.getWrappedWidth();return b=(b=(b=b&&String.valueOf(this.getFontName()).equals(String.valueOf(a.getFontName())))&&String.valueOf(this.getTextColour()).equals(String.valueOf(a.getTextColour())))&&String.valueOf(this.getTextColour2()).equals(String.valueOf(a.getTextColour2()))},"~O");e(c$,
+"hashCode",function(){var a,b=1;a=0+b++*Boolean.$valueOf(this.abovePIDThreshold).hashCode();a+=b++*Boolean.$valueOf(this.centreColumnLabels).hashCode();a+=b++*Boolean.$valueOf(this.colourAppliesToAllGroups).hashCode();a+=b++*Boolean.$valueOf(this.displayReferenceSeq).hashCode();a+=b++*Boolean.$valueOf(this.renderGaps).hashCode();a+=b++*Boolean.$valueOf(this.rightAlignIds).hashCode();a+=b++*Boolean.$valueOf(this.scaleProteinAsCdna).hashCode();a+=b++*Boolean.$valueOf(this.scaleRightWrapped).hashCode();
+a+=b++*Boolean.$valueOf(this.seqNameItalics).hashCode();a+=b++*Boolean.$valueOf(this.showAnnotation).hashCode();a+=b++*Boolean.$valueOf(this.showBoxes).hashCode();a+=b++*Boolean.$valueOf(this.showdbrefs).hashCode();a+=b++*Boolean.$valueOf(this.showJVSuffix).hashCode();a+=b++*Boolean.$valueOf(this.showSequenceFeatures).hashCode();a+=b++*Boolean.$valueOf(this.showUnconserved).hashCode();a+=b++*Boolean.$valueOf(this.wrapAlignment).hashCode();a+=b++*this.charHeight;a+=b++*this.charWidth;a+=b++*this.fontSize;
+a+=b++*this.fontStyle;a+=b++*this.idWidth;return a+=String.valueOf(this.fontName).hashCode()});d(c$,"isUpperCasebold",function(){return this.upperCasebold});e(c$,"setUpperCasebold",function(a){this.upperCasebold=a},"~B");d(c$,"getAbovePIDThreshold",function(){return this.abovePIDThreshold});d(c$,"getCharHeight",function(){return this.charHeight});d(c$,"getCharWidth",function(){return this.charWidth});d(c$,"getColourAppliesToAllGroups",function(){return this.colourAppliesToAllGroups});d(c$,"getColourText",
+function(){return this.showColourText});d(c$,"getConservationSelected",function(){return this.conservationColourSelected});d(c$,"getIncrement",function(){return this.increment});d(c$,"getScaleAboveWrapped",function(){return this.scaleAboveWrapped});d(c$,"getScaleLeftWrapped",function(){return this.scaleLeftWrapped});d(c$,"getScaleRightWrapped",function(){return this.scaleRightWrapped});d(c$,"getShowBoxes",function(){return this.showBoxes});d(c$,"getShowHiddenMarkers",function(){return this.showHiddenMarkers});
+d(c$,"getShowJVSuffix",function(){return this.showJVSuffix});d(c$,"getShowText",function(){return this.showText});d(c$,"getShowUnconserved",function(){return this.showUnconserved});d(c$,"getTextColour",function(){return this.textColour});d(c$,"getTextColour2",function(){return this.textColour2});d(c$,"getThreshold",function(){return this.threshold});d(c$,"getThresholdTextColour",function(){return this.thresholdTextColour});d(c$,"getWrapAlignment",function(){return this.wrapAlignment});d(c$,"getWrappedWidth",
+function(){return this.wrappedWidth});d(c$,"isColourByReferenceSeq",function(){return this.colourByReferenceSeq});d(c$,"isConservationColourSelected",function(){return this.conservationColourSelected});d(c$,"isDisplayReferenceSeq",function(){return this.displayReferenceSeq});d(c$,"isRenderGaps",function(){return this.renderGaps});d(c$,"isRightAlignIds",function(){return this.rightAlignIds});d(c$,"isSeqNameItalics",function(){return this.seqNameItalics});d(c$,"isShowAnnotation",function(){return this.showAnnotation});
+d(c$,"isShowColourText",function(){return this.showColourText});d(c$,"isShowSequenceFeaturesHeight",function(){return this.showSeqFeaturesHeight});d(c$,"isShowSequenceFeatures",function(){return this.showSequenceFeatures});e(c$,"setAbovePIDThreshold",function(a){this.abovePIDThreshold=a},"~B");e(c$,"setCharHeight",function(a){this.charHeight=a},"~N");e(c$,"setCharWidth",function(a){this.charWidth=a},"~N");e(c$,"setColourAppliesToAllGroups",function(a){this.colourAppliesToAllGroups=a},"~B");e(c$,"setColourByReferenceSeq",
+function(a){this.colourByReferenceSeq=a},"~B");e(c$,"setColourText",function(a){this.showColourText=a},"~B");e(c$,"setConservationColourSelected",function(a){this.conservationColourSelected=a},"~B");e(c$,"setConservationSelected",function(a){this.conservationColourSelected=a},"~B");e(c$,"setDisplayReferenceSeq",function(a){this.displayReferenceSeq=a},"~B");e(c$,"setIncrement",function(a){this.increment=a},"~N");e(c$,"setRenderGaps",function(a){this.renderGaps=a},"~B");e(c$,"setRightAlignIds",function(a){this.rightAlignIds=
+a},"~B");e(c$,"setScaleAboveWrapped",function(a){this.scaleAboveWrapped=a},"~B");e(c$,"setScaleLeftWrapped",function(a){this.scaleLeftWrapped=a},"~B");e(c$,"setScaleRightWrapped",function(a){this.scaleRightWrapped=a},"~B");e(c$,"setSeqNameItalics",function(a){this.seqNameItalics=a},"~B");e(c$,"setShowAnnotation",function(a){this.showAnnotation=a},"~B");e(c$,"setShowBoxes",function(a){this.showBoxes=a},"~B");e(c$,"setShowColourText",function(a){this.showColourText=a},"~B");e(c$,"setShowHiddenMarkers",
+function(a){this.showHiddenMarkers=a},"~B");e(c$,"setShowJVSuffix",function(a){this.showJVSuffix=a},"~B");e(c$,"setShowSequenceFeaturesHeight",function(a){this.showSeqFeaturesHeight=a},"~B");e(c$,"setShowSequenceFeatures",function(a){this.showSequenceFeatures=a},"~B");e(c$,"setShowText",function(a){this.showText=a},"~B");e(c$,"setShowUnconserved",function(a){this.showUnconserved=a},"~B");e(c$,"setTextColour",function(a){this.textColour=a},"java.awt.Color");e(c$,"setTextColour2",function(a){this.textColour2=
+a},"java.awt.Color");e(c$,"setThreshold",function(a){this.threshold=a},"~N");e(c$,"setThresholdTextColour",function(a){this.thresholdTextColour=a},"~N");e(c$,"setWrapAlignment",function(a){this.wrapAlignment=a},"~B");e(c$,"setWrappedWidth",function(a){this.wrappedWidth=a},"~N");e(c$,"sameStyle",function(a){return this.equals(a)},"jalview.api.ViewStyleI");d(c$,"getFontName",function(){return this.fontName});d(c$,"getFontSize",function(){return this.fontSize});d(c$,"getFontStyle",function(){return this.fontStyle});
+e(c$,"setFontName",function(a){this.fontName=a},"~S");e(c$,"setFontSize",function(a){this.fontSize=a},"~N");e(c$,"setFontStyle",function(a){this.fontStyle=a},"~N");d(c$,"getIdWidth",function(){return this.idWidth});e(c$,"setIdWidth",function(a){this.idWidth=a},"~N");d(c$,"isCentreColumnLabels",function(){return this.centreColumnLabels});e(c$,"setCentreColumnLabels",function(a){this.centreColumnLabels=a},"~B");d(c$,"isShowDBRefs",function(){return this.showdbrefs});e(c$,"setShowDBRefs",function(a){this.showdbrefs=
+a},"~B");d(c$,"isShowNPFeats",function(){return this.shownpfeats});e(c$,"setShowNPFeats",function(a){this.shownpfeats=a},"~B");d(c$,"isScaleProteinAsCdna",function(){return this.scaleProteinAsCdna});e(c$,"setScaleProteinAsCdna",function(a){this.scaleProteinAsCdna=a},"~B")});p("jalview.workers");q(["jalview.api.AlignCalcManagerI","java.util.ArrayList","$.Collections","$.HashSet","$.Hashtable"],"jalview.workers.AlignCalcManager",null,function(){c$=s(function(){this.canUpdate=this.updating=this.inProgress=
+this.blackList=this.restartable=null;r(this,arguments)},jalview.workers,"AlignCalcManager",null,jalview.api.AlignCalcManagerI);J(c$,function(){this.restartable=java.util.Collections.synchronizedList(new java.util.ArrayList);this.blackList=java.util.Collections.synchronizedList(new java.util.ArrayList);this.inProgress=java.util.Collections.synchronizedMap(new java.util.Hashtable);this.updating=java.util.Collections.synchronizedMap(new java.util.Hashtable);this.canUpdate=new java.util.HashSet});e(c$,
+"notifyStart",function(a){var b=this.updating.get(a.getClass());null==b&&this.updating.put(a.getClass(),b=java.util.Collections.synchronizedList(new java.util.ArrayList));b.add(a)},"jalview.api.AlignCalcWorkerI");e(c$,"alreadyDoing",function(a){return this.inProgress.containsKey(a.getClass())},"jalview.api.AlignCalcWorkerI");e(c$,"isPending",function(a){a=this.updating.get(a.getClass());return null==a?!1:1<a.size()?!0:!1},"jalview.api.AlignCalcWorkerI");d(c$,"numberLive",function(a){a=this.updating.get(a.getClass());
+return null==a?0:a.size()},"jalview.api.AlignCalcWorkerI");e(c$,"notifyWorking",function(a){if(null!=this.inProgress.get(a.getClass()))return!1;this.inProgress.put(a.getClass(),a);return!0},"jalview.api.AlignCalcWorkerI");e(c$,"workerComplete",function(a){this.inProgress.remove(a.getClass());var b=this.updating.get(a.getClass());null!=b&&(b.remove(a),this.canUpdate.add(a))},"jalview.api.AlignCalcWorkerI");e(c$,"workerCannotRun",function(a){this.blackList.add(a.getClass())},"jalview.api.AlignCalcWorkerI");
+d(c$,"isBlackListed",function(a){return this.blackList.contains(a)},"Class");e(c$,"startWorker",function(a){var b=a;b.isAlive()&&(b.interrupt(),a=a.getNewWorker());a.setName(a.getClass().getName());a.start()},"jalview.api.AlignCalcWorkerI");d(c$,"isWorking",function(a){return null!=a&&this.inProgress.get(a.getClass())===a},"jalview.api.AlignCalcWorkerI");d(c$,"isWorking",function(){return 0<this.inProgress.size()});e(c$,"registerWorker",function(a){this.restartable.contains(a)||this.restartable.add(a);
+this.startWorker(a)},"jalview.api.AlignCalcWorkerI");e(c$,"restartWorkers",function(){for(var a,b=this.restartable.iterator();b.hasNext()&&((a=b.next())||1);)this.startWorker(a)});e(c$,"workingInvolvedWith",function(a){for(var b,c=this.inProgress.values().iterator();c.hasNext()&&((b=c.next())||1);)if(b.involves(a))return!0;for(var f,d=this.updating.values().iterator();d.hasNext()&&((f=d.next())||1);)for(c=f.iterator();c.hasNext()&&((b=c.next())||1);)if(b.involves(a))return!0;return!1},"jalview.datamodel.AlignmentAnnotation");
+e(c$,"updateAnnotationFor",function(a){for(var b,c=0,f=this.canUpdate.toArray([]);c<f.length&&((b=f[c])||1);c++)a.equals(b.getClass())&&b.updateAnnotation()},"Class");e(c$,"getRegisteredWorkersOfClass",function(a){for(var b=new java.util.ArrayList,c,f=0,d=this.canUpdate.toArray(Array(this.canUpdate.size()));f<d.length&&((c=d[f])||1);f++)a.equals(c.getClass())&&b.add(c);return 0==b.size()?null:b},"Class");e(c$,"startRegisteredWorkersOfClass",function(a){var b=this.getRegisteredWorkersOfClass(a);if(null==
+b)return!1;for(var c,b=b.iterator();b.hasNext()&&((c=b.next())||1);)this.isPending(c)?System.err.println("Pending exists for "+a):this.startWorker(c);return!0},"Class");e(c$,"workerMayRun",function(a){this.blackList.contains(a.getClass())&&this.blackList.remove(a.getClass())},"jalview.api.AlignCalcWorkerI");e(c$,"removeRegisteredWorkersOfClass",function(a){this.getRegisteredWorkersOfClass(a);for(var b=new java.util.ArrayList,c=new java.util.HashSet,f,d=this.restartable.iterator();d.hasNext()&&((f=
+d.next())||1);)a.equals(f.getClass())&&(b.add(f),c.add(f));this.restartable.removeAll(b);for(d=this.canUpdate.iterator();d.hasNext()&&((f=d.next())||1);)a.equals(f.getClass())&&(b.add(f),c.add(f));this.canUpdate.removeAll(b)},"Class")});p("jalview.api");M(jalview.api,"AlignCalcManagerI");p("java.util");q(["java.util.AbstractCollection","$.Iterator","java.util.Deque"],"java.util.ArrayDeque","java.lang.AssertionError $.IllegalStateException $.NullPointerException java.lang.reflect.Array java.util.Arrays $.ConcurrentModificationException $.NoSuchElementException".split(" "),
+function(){c$=s(function(){this.elements=null;this.tail=this.head=0;H("java.util.ArrayDeque.DeqIterator")||java.util.ArrayDeque.$ArrayDeque$DeqIterator$();H("java.util.ArrayDeque.DescendingIterator")||java.util.ArrayDeque.$ArrayDeque$DescendingIterator$();r(this,arguments)},java.util,"ArrayDeque",java.util.AbstractCollection,[java.util.Deque,Cloneable,java.io.Serializable]);d(c$,"allocateElements",function(a){var b=8;a>=b&&(b=a,b|=b>>>1,b|=b>>>2,b|=b>>>4,b|=b>>>8,b|=b>>>16,b++,0>b&&(b>>>=1));this.elements=
+Array(b)},"~N");d(c$,"doubleCapacity",function(){var a=this.head,b=this.elements.length,c=b-a,f=b<<1;if(0>f)throw new IllegalStateException("Sorry, deque too big");f=Array(f);System.arraycopy(this.elements,a,f,0,c);System.arraycopy(this.elements,0,f,c,a);this.elements=f;this.head=0;this.tail=b});d(c$,"copyElements",function(a){if(this.head<this.tail)System.arraycopy(this.elements,this.head,a,0,this.size());else if(this.head>this.tail){var b=this.elements.length-this.head;System.arraycopy(this.elements,
+this.head,a,0,b);System.arraycopy(this.elements,0,a,b,this.tail)}return a},"~A");m(c$,function(){t(this,java.util.ArrayDeque,[]);this.elements=Array(16)});m(c$,function(a){t(this,java.util.ArrayDeque,[]);this.allocateElements(a)},"~N");m(c$,function(a){t(this,java.util.ArrayDeque,[]);this.allocateElements(a.size());this.addAll(a)},"java.util.Collection");e(c$,"addFirst",function(a){if(null==a)throw new NullPointerException;this.elements[this.head=this.head-1&this.elements.length-1]=a;this.head==this.tail&&
+this.doubleCapacity()},"~O");e(c$,"addLast",function(a){if(null==a)throw new NullPointerException;this.elements[this.tail]=a;(this.tail=this.tail+1&this.elements.length-1)==this.head&&this.doubleCapacity()},"~O");e(c$,"offerFirst",function(a){this.addFirst(a);return!0},"~O");e(c$,"offerLast",function(a){this.addLast(a);return!0},"~O");e(c$,"removeFirst",function(){var a=this.pollFirst();if(null==a)throw new java.util.NoSuchElementException;return a});e(c$,"removeLast",function(){var a=this.pollLast();
+if(null==a)throw new java.util.NoSuchElementException;return a});e(c$,"pollFirst",function(){var a=this.head,b=this.elements[a];if(null==b)return null;this.elements[a]=null;this.head=a+1&this.elements.length-1;return b});e(c$,"pollLast",function(){var a=this.tail-1&this.elements.length-1,b=this.elements[a];if(null==b)return null;this.elements[a]=null;this.tail=a;return b});e(c$,"getFirst",function(){var a=this.elements[this.head];if(null==a)throw new java.util.NoSuchElementException;return a});e(c$,
+"getLast",function(){var a=this.elements[this.tail-1&this.elements.length-1];if(null==a)throw new java.util.NoSuchElementException;return a});e(c$,"peekFirst",function(){return this.elements[this.head]});e(c$,"peekLast",function(){return this.elements[this.tail-1&this.elements.length-1]});e(c$,"removeFirstOccurrence",function(a){if(null==a)return!1;for(var b=this.elements.length-1,c=this.head,f;null!=(f=this.elements[c]);){if(a.equals(f))return this.$delete(c),!0;c=c+1&b}return!1},"~O");e(c$,"removeLastOccurrence",
+function(a){if(null==a)return!1;for(var b=this.elements.length-1,c=this.tail-1&b,f;null!=(f=this.elements[c]);){if(a.equals(f))return this.$delete(c),!0;c=c-1&b}return!1},"~O");e(c$,"add",function(a){this.addLast(a);return!0},"~O");e(c$,"offer",function(a){return this.offerLast(a)},"~O");d(c$,"remove",function(){return this.removeFirst()});e(c$,"poll",function(){return this.pollFirst()});e(c$,"element",function(){return this.getFirst()});e(c$,"peek",function(){return this.peekFirst()});e(c$,"push",
+function(a){this.addFirst(a)},"~O");e(c$,"pop",function(){return this.removeFirst()});d(c$,"checkInvariants",function(){});d(c$,"$delete",function(a){this.checkInvariants();var b=this.elements,c=b.length-1,f=this.head,d=this.tail,e=a-f&c,g=d-a&c;if(e>=(d-f&c))throw new java.util.ConcurrentModificationException;if(e<g)return f<=a?System.arraycopy(b,f,b,f+1,e):(System.arraycopy(b,0,b,1,a),b[0]=b[c],System.arraycopy(b,f,b,f+1,c-f)),b[f]=null,this.head=f+1&c,!1;a<d?(System.arraycopy(b,a+1,b,a,g),this.tail=
+d-1):(System.arraycopy(b,a+1,b,a,c-a),b[c]=b[0],System.arraycopy(b,1,b,0,d),this.tail=d-1&c);return!0},"~N");e(c$,"size",function(){return this.tail-this.head&this.elements.length-1});e(c$,"isEmpty",function(){return this.head==this.tail});e(c$,"iterator",function(){return C(java.util.ArrayDeque.DeqIterator,this,null)});e(c$,"descendingIterator",function(){return C(java.util.ArrayDeque.DescendingIterator,this,null)});e(c$,"contains",function(a){if(null==a)return!1;for(var b=this.elements.length-1,
+c=this.head,f;null!=(f=this.elements[c]);){if(a.equals(f))return!0;c=c+1&b}return!1},"~O");d(c$,"remove",function(a){return this.removeFirstOccurrence(a)},"~O");e(c$,"clear",function(){var a=this.head,b=this.tail;if(a!=b){this.head=this.tail=0;var c=this.elements.length-1;do this.elements[a]=null,a=a+1&c;while(a!=b)}});d(c$,"toArray",function(){return this.copyElements(Array(this.size()))});d(c$,"toArray",function(a){var b=this.size();a.length<b&&(a=java.lang.reflect.Array.newInstance(a.getClass().getComponentType(),
+b));this.copyElements(a);a.length>b&&(a[b]=null);return a},"~A");d(c$,"clone",function(){try{var a=K(this,java.util.ArrayDeque,"clone",[]);a.elements=java.util.Arrays.copyOf(this.elements,this.elements.length);return a}catch(b){if(y(b,CloneNotSupportedException))throw new AssertionError;throw b;}});c$.$ArrayDeque$DeqIterator$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.fence=this.cursor=0;this.lastRet=-1;r(this,arguments)},java.util.ArrayDeque,"DeqIterator",null,java.util.Iterator);
+J(c$,function(){this.cursor=this.b$["java.util.ArrayDeque"].head;this.fence=this.b$["java.util.ArrayDeque"].tail});e(c$,"hasNext",function(){return this.cursor!=this.fence});e(c$,"next",function(){if(this.cursor==this.fence)throw new java.util.NoSuchElementException;var a=this.b$["java.util.ArrayDeque"].elements[this.cursor];if(this.b$["java.util.ArrayDeque"].tail!=this.fence||null==a)throw new java.util.ConcurrentModificationException;this.lastRet=this.cursor;this.cursor=this.cursor+1&this.b$["java.util.ArrayDeque"].elements.length-
+1;return a});e(c$,"remove",function(){if(0>this.lastRet)throw new IllegalStateException;this.b$["java.util.ArrayDeque"].$delete(this.lastRet)&&(this.cursor=this.cursor-1&this.b$["java.util.ArrayDeque"].elements.length-1,this.fence=this.b$["java.util.ArrayDeque"].tail);this.lastRet=-1});c$=z()};c$.$ArrayDeque$DescendingIterator$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.fence=this.cursor=0;this.lastRet=-1;r(this,arguments)},java.util.ArrayDeque,"DescendingIterator",null,java.util.Iterator);
+J(c$,function(){this.cursor=this.b$["java.util.ArrayDeque"].tail;this.fence=this.b$["java.util.ArrayDeque"].head});e(c$,"hasNext",function(){return this.cursor!=this.fence});e(c$,"next",function(){if(this.cursor==this.fence)throw new java.util.NoSuchElementException;this.cursor=this.cursor-1&this.b$["java.util.ArrayDeque"].elements.length-1;var a=this.b$["java.util.ArrayDeque"].elements[this.cursor];if(this.b$["java.util.ArrayDeque"].head!=this.fence||null==a)throw new java.util.ConcurrentModificationException;
+this.lastRet=this.cursor;return a});e(c$,"remove",function(){if(0>this.lastRet)throw new IllegalStateException;this.b$["java.util.ArrayDeque"].$delete(this.lastRet)||(this.cursor=this.cursor+1&this.b$["java.util.ArrayDeque"].elements.length-1,this.fence=this.b$["java.util.ArrayDeque"].head);this.lastRet=-1});c$=z()};G(c$,"MIN_INITIAL_CAPACITY",8)});p("java.util");q(["java.util.Queue"],"java.util.Deque",null,function(){M(java.util,"Deque",java.util.Queue)});p("jalview.datamodel");q(null,"jalview.datamodel.AlignmentView",
+"jalview.datamodel.Alignment $.CigarArray $.ColumnSelection $.SeqCigar $.SequenceGroup jalview.util.MessageManager $.ShiftList java.lang.Error java.util.ArrayList $.Vector".split(" "),function(){c$=s(function(){this.contigs=this.sequences=null;this.firstCol=this.width=0;this.scGroups=null;this.$isNa=!1;H("jalview.datamodel.AlignmentView.ScGroup")||jalview.datamodel.AlignmentView.$AlignmentView$ScGroup$();this.selected=null;r(this,arguments)},jalview.datamodel,"AlignmentView");d(c$,"isNa",function(){return this.$isNa});
+m(c$,function(a,b,c,f,d){this.construct(new jalview.datamodel.CigarArray(a,f?b:null,d?c:null),d&&null!=c?c.getStartRes():0);this.$isNa=a.isNucleotide();null!=c&&0<c.getSize()?(c.getSequences(null),this.selected=new java.util.Vector,b=c.getSequencesInOrder(a,d)):b=a.getSequencesArray();f=new java.util.ArrayList;var e=new java.util.ArrayList;a=a.getGroups();e.addAll(a);var g=a=null;if(null!=e){if(null!=c&&d){a=c.getStartRes();for(var g=c.getEndRes(),h=new java.util.ArrayList,j,e=e.iterator();e.hasNext()&&
+((j=e.next())||1);)j.getStartRes()>g||j.getEndRes()<a||(j.getStartRes()<a&&j.setStartRes(a),j.getEndRes()>g&&j.setEndRes(g),j.setStartRes(j.getStartRes()-a+1),j.setEndRes(j.getEndRes()-a+1),h.add(j));e=h}a=Array(e.size());g=X(e.size(),!1);for(h=0;h<a.length;h++)j=e.get(h),a[h]=C(jalview.datamodel.AlignmentView.ScGroup,this,null),a[h].sg=new jalview.datamodel.SequenceGroup(j),g[h]=!1,f.add(j.getSequences())}for(h=e=0;h<b.length;h++)if(null!=b[h]){null!=c&&(0<c.getSize()&&!d)&&(this.sequences[e].setGroupMembership(this.selected),
+this.selected.addElement(this.sequences[e]));if(null!=f)for(j=0;j<a.length;j++)f.get(j).contains(b[h])&&(this.sequences[e].setGroupMembership(a[j]),a[j].sg.deleteSequence(b[h],!1),a[j].seqs.addElement(this.sequences[e]),g[j]||(null==this.scGroups&&(this.scGroups=new java.util.ArrayList),g[j]=!0,this.scGroups.add(a[j])));e++}for(j=0;j<a.length;j++){c=a[j].sg.getSequencesAsArray(null);for(d=0;d<c.length;d++)a[j].sg.deleteSequence(c[d],!1);a[j]=null}},"jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup,~B,~B,~B");
+m(c$,function(a){if(!a.isSeqCigarArray())throw Error(jalview.util.MessageManager.getString("error.implementation_error_can_only_make_alignmnet_from_cigararray"));this.contigs=a.getDeletedRegions();this.sequences=a.getSeqCigarArray();this.width=a.getWidth()},"jalview.datamodel.CigarArray");m(c$,function(a,b){this.construct(a);this.firstCol=b},"jalview.datamodel.CigarArray,~N");d(c$,"setSequences",function(a){this.sequences=a},"~A");d(c$,"setContigs",function(a){this.contigs=a},"~A");d(c$,"getSequences",
+function(){return this.sequences});d(c$,"getContigs",function(){return this.contigs});d(c$,"getAlignmentAndColumnSelection",function(a){var b=new jalview.datamodel.ColumnSelection;return E(-1,[jalview.datamodel.SeqCigar.createAlignmentSequences(this.sequences,a,b,this.contigs),b])},"~S");d(c$,"getVisibleAlignment",function(a){a=this.getVisibleSeqs(a);a=new jalview.datamodel.Alignment(a);this.addPrunedGroupsInOrder(a,-1,-1,!0);return a},"~S");d(c$,"addPrunedGroupsInOrder",function(a,b,c,f){var d=!1;
+-1<b&&b<=c&&(d=!0);var e=a.getSequencesArray(),g=null!=this.scGroups?this.scGroups.size():0;if(0<g){for(var h=Array(g),j=0;j<g;j++){var n=this.scGroups.get(j).sg;d&&(n.getStartRes()>c||n.getEndRes()<b)?h[j]=null:(h[j]=new jalview.datamodel.SequenceGroup(n),d&&!f&&(h[j].getStartRes()<b?h[j].setStartRes(0):(h[j].setStartRes(h[j].getStartRes()-b),h[j].setEndRes(h[j].getEndRes()-b)),h[j].getEndRes()>c-b&&h[j].setEndRes(c-b)))}if(f&&null!=this.contigs){j=0;f=new jalview.util.ShiftList;d&&f.addShift(b,
+-b);for(n=0;n<this.contigs.length;n+=3)f.addShift(j+this.contigs[n+1],this.contigs[n+2]-this.contigs[n+1]),j=this.contigs[n+1]+this.contigs[n+2];for(j=0;j<h.length;j++)if(null!=h[j]){var n=h[j].getStartRes(),x=h[j].getEndRes();d&&(n<b&&(n=b),x>c&&(x=c));n=f.shift(n);x=f.shift(x);h[j].setStartRes(n);h[j].setEndRes(x)}}for(b=0;b<e.length;b++)for(j=0;j<g;j++)null!=h[j]&&this.sequences[b].isMemberOf(this.scGroups.get(j))&&h[j].addSequence(e[b],!1);for(j=0;j<g;j++)null!=h[j]&&0<h[j].getSize()&&a.addGroup(h[j]),
+h[j]=null}},"jalview.datamodel.AlignmentI,~N,~N,~B");d(c$,"getVisibleSeqs",function(){for(var a=Array(this.sequences.length),b=0,c=this.sequences.length;b<c;b++)a[b]=this.sequences[b].getSeq("-");for(var f=this.getSequenceStrings("-"),b=0,c=a.length;b<c;b++)a[b].setSequence(f[b]);return a},"~S");d(c$,"getVisibleContigAlignments",function(a){var b=0,c=this.getVisibleContigs();a=this.getVisibleContigs(a);for(var f=Array(a.length),b=0;b<a.length;b++)f[b]=new jalview.datamodel.Alignment(a[b]),null!=this.scGroups&&
+0<this.scGroups.size()&&this.addPrunedGroupsInOrder(f[b],c[2*b],c[2*b+1],!0);return f},"~S");d(c$,"getSequenceStrings",function(a){for(var b=Array(this.sequences.length),c=0;c<this.sequences.length;c++){var f=this.sequences[c].getSequenceString(a);if(null!=this.contigs){b[c]="";for(var d=0,e=0;e<this.contigs.length;e+=3)b[c]+=f.substring(d,this.contigs[e+1]),d=this.contigs[e+1]+this.contigs[e+2];b[c]+=f.substring(d)}else b[c]=f}return b},"~S");d(c$,"getWidth",function(){return this.width});d(c$,"setWidth",
+function(a){this.width=a},"~N");d(c$,"getVisibleContigs",function(a){var b;b=1;if(null==this.sequences||0>=this.width)return null;if(null!=this.contigs&&0<this.contigs.length){var c=0;b=0;for(var f=this.width,d=0;d<this.contigs.length;d+=3)0<this.contigs[d+1]-c&&b++,f+=this.contigs[d+2],c=this.contigs[d+1]+this.contigs[d+2];c<f&&b++;b=Array(b);for(var e=c=0,d=0;d<this.contigs.length;d+=3){if(0<this.contigs[d+1]-c){for(var g=Array(this.sequences.length),h=0;h<g.length;h++)g[h]=this.sequences[h].getSeq(a).getSubSequence(c,
+this.contigs[d+1]);b[e]=g;e++}c=this.contigs[d+1]+this.contigs[d+2]}if(c<f){g=Array(this.sequences.length);for(h=0;h<g.length;h++)g[h]=this.sequences[h].getSeq(a).getSubSequence(c,f+1);b[e]=g}}else{b=Array(1);b[0]=Array(this.sequences.length);for(h=0;h<this.sequences.length;h++)b[0][h]=this.sequences[h].getSeq(a)}return b},"~S");d(c$,"getUpdatedView",function(a,b,c){if(null==this.sequences||0>=this.width)throw Error(jalview.util.MessageManager.getString("error.empty_view_cannot_be_updated"));if(null==
+a)throw Error("nvismsa==null. use getAlignmentAndColumnSelection() instead.");if(null!=this.contigs&&0<this.contigs.length){var f=Array(this.sequences.length),d=new jalview.datamodel.ColumnSelection;if(null!=this.contigs&&0<this.contigs.length){for(var e=0,g=0,h=this.width,j=0,n=0;n<this.contigs.length;n+=3){h+=this.contigs[n+2];if(0<this.contigs[n+1]-e){var x=0;if(null!=a[j]){var e=a[j],u=null==b?null:b[j];j++;if(e.length!=this.sequences.length)throw Error(jalview.util.MessageManager.formatMessage("error.mismatch_between_number_of_sequences_in_block",
+E(-1,[Integer.$valueOf(j).toString(),Integer.$valueOf(e.length).toString(),Integer.$valueOf(this.sequences.length).toString()])));for(var x=e[0].getLength(),m=0;m<e.length;m++)null==f[m]?f[m]=e[m]:(f[m].setSequence(f[m].getSequenceAsString()+e[m].getSequenceAsString()),e[m].getStart()<=e[m].getEnd()&&f[m].setEnd(e[m].getEnd()),null!=u&&u.updateSequence(e[m],f[m]))}else{for(m=0;m<this.sequences.length;m++)u=this.sequences[m].getSeq(c).getSubSequence(e,this.contigs[n+1]),x<u.getLength()&&(x=u.getLength()),
+null==f[m]?f[m]=u:(f[m].setSequence(f[m].getSequenceAsString()+u.getSequenceAsString()),u.getEnd()>=u.getStart()&&f[m].setEnd(u.getEnd()));j++}g+=x}e=this.contigs[n+1]+this.contigs[n+2];for(m=0;m<this.sequences.length;m++)x=this.sequences[m].getSeq(c).getSubSequence(this.contigs[n+1],e),null==f[m]?f[m]=x:(f[m].setSequence(f[m].getSequenceAsString()+x.getSequenceAsString()),x.getEnd()>=x.getStart()&&f[m].setEnd(x.getEnd()));d.hideColumns(g,g+this.contigs[n+2]-1);g+=this.contigs[n+2]}if(j<a.length)if(x=
+0,null!=a[j]){e=a[j];u=null!=b?b[j]:null;e[0].getLength();for(m=0;m<e.length;m++)null==f[m]?f[m]=e[m]:(f[m].setSequence(f[m].getSequenceAsString()+e[m].getSequenceAsString()),e[m].getEnd()>=e[m].getStart()&&f[m].setEnd(e[m].getEnd()),null!=u&&u.updateSequence(e[m],f[m]))}else if(e<h)for(m=0;m<this.sequences.length;m++)u=this.sequences[m].getSeq(c).getSubSequence(e,h+1),x<u.getLength()&&(x=u.getLength()),null==f[m]?f[m]=u:(f[m].setSequence(f[m].getSequenceAsString()+u.getSequenceAsString()),u.getEnd()>=
+u.getStart()&&f[m].setEnd(u.getEnd()))}return E(-1,[f,d])}if(1!=a.length)throw Error(jalview.util.MessageManager.formatMessage("error.mismatch_between_visible_blocks_to_update_and_number_of_contigs_in_view",E(-1,[Integer.$valueOf(a.length).toString()])));return null!=a[0]?E(-1,[a[0],new jalview.datamodel.ColumnSelection]):this.getAlignmentAndColumnSelection(c)},"~A,~A,~S");d(c$,"getVisibleContigs",function(){if(null!=this.contigs&&0<this.contigs.length){for(var a=0,b=0,c=this.width,f=0;f<this.contigs.length;f+=
+3)0<this.contigs[f+1]-a&&b++,c+=this.contigs[f+2],a=this.contigs[f+1]+this.contigs[f+2];a<c&&b++;for(var d=w(2*b,0),f=a=b=0;f<this.contigs.length;f+=3)0<this.contigs[f+1]-a&&(d[b]=a,d[b+1]=this.contigs[f+1]-1,b+=2),a=this.contigs[f+1]+this.contigs[f+2];a<c&&(d[b]=a,d[b+1]=c);return d}return w(-1,[0,this.width])});d(c$,"getAlignmentOrigin",function(){return this.firstCol});d(c$,"getVisibleContigMapFor",function(a){var b=null,c=this.getVisibleContigs(),f=0,d=0;if(null!=c){for(var b=w(a.length,0),e=
+0;e<c.length;e+=2){for(;f<a.length&&a[f]<c[e];)f++;for(;f<a.length&&a[f]<=c[e+1];)b[d++]=f++}a=w(d,0);System.arraycopy(b,0,a,0,d);b=a}return b},"~A");d(c$,"getEditedSequences",function(a,b){for(var c=this.getSequences(),f=Array(c.length),d=0,e=c.length;d<e;d++)f[d]=c[d].getSeq(a);if(b){c=this.getSequenceStrings(a);for(d=0;d<c.length;d++)f[d].setSequence(c[d]),c[d]=null}return f},"~S,~B");c$.summariseAlignmentView=d(c$,"summariseAlignmentView",function(a,b){b.print("View has "+a.sequences.length+" of which ");
+null==a.selected?b.print("None"):b.print(" "+a.selected.size());b.println(" are selected.");b.print("View is "+a.getWidth()+" columns wide");var c=0,f=a.getContigs();if(null!=f){for(var c=a.width,d=0;d<f.length;d+=3)c+=f[d+2];b.println("with "+c+" visible columns spread over "+F(f.length/3)+" regions.")}else b.println(".");if(null!=a.scGroups){b.println("There are "+a.scGroups.size()+" groups defined on the view.");for(d=0;d<a.scGroups.size();d++){c=a.scGroups.get(d);b.println("Group "+d+": Name = "+
+c.sg.getName()+" Contains "+c.seqs.size()+" Seqs.");b.println("This group runs from "+c.sg.getStartRes()+" to "+c.sg.getEndRes());for(f=0;f<c.seqs.size();f++)c.seqs.elementAt(f).isMemberOf(c)||b.println("** WARNING: sequence "+c.seqs.elementAt(f).toString()+" is not marked as member of group.")}c=a.getVisibleAlignment("-");if(null!=c&&(b.println("Vis. alignment is "+c.getWidth()+" wide and has "+c.getHeight()+" seqs."),null!=c.getGroups()&&0<c.getGroups().size()))for(var d=1,e,c=c.getGroups().iterator();c.hasNext()&&
+((e=c.next())||1);)b.println("Group "+d++ +" begins at column "+e.getStartRes()+" and ends at "+e.getEndRes())}},"jalview.datamodel.AlignmentView,java.io.PrintStream");c$.testSelectionViews=d(c$,"testSelectionViews",function(a,b,c){System.out.println("Testing standard view creation:\n");var f=null;try{System.out.println("View with no hidden columns, no limit to selection, no groups to be collected:"),f=new jalview.datamodel.AlignmentView(a,b,c,!1,!1,!1),jalview.datamodel.AlignmentView.summariseAlignmentView(f,
+System.out)}catch(d){if(y(d,Exception))d.printStackTrace(),System.err.println("Failed to generate alignment with selection but no groups marked.");else throw d;}try{System.out.println("View with no hidden columns, no limit to selection, and all groups to be collected:"),f=new jalview.datamodel.AlignmentView(a,b,c,!1,!1,!0),jalview.datamodel.AlignmentView.summariseAlignmentView(f,System.out)}catch(e){if(y(e,Exception))e.printStackTrace(),System.err.println("Failed to generate alignment with selection marked but no groups marked.");
+else throw e;}try{System.out.println("View with no hidden columns, limited to selection and no groups to be collected:"),f=new jalview.datamodel.AlignmentView(a,b,c,!1,!0,!1),jalview.datamodel.AlignmentView.summariseAlignmentView(f,System.out)}catch(g){if(y(g,Exception))g.printStackTrace(),System.err.println("Failed to generate alignment with selection restricted but no groups marked.");else throw g;}try{System.out.println("View with no hidden columns, limited to selection, and all groups to be collected:"),
+f=new jalview.datamodel.AlignmentView(a,b,c,!1,!0,!0),jalview.datamodel.AlignmentView.summariseAlignmentView(f,System.out)}catch(h){if(y(h,Exception))h.printStackTrace(),System.err.println("Failed to generate alignment with selection restricted and groups marked.");else throw h;}try{System.out.println("View *with* hidden columns, no limit to selection, no groups to be collected:"),f=new jalview.datamodel.AlignmentView(a,b,c,!0,!1,!1),jalview.datamodel.AlignmentView.summariseAlignmentView(f,System.out)}catch(j){if(y(j,
+Exception))j.printStackTrace(),System.err.println("Failed to generate alignment with selection but no groups marked.");else throw j;}try{System.out.println("View *with* hidden columns, no limit to selection, and all groups to be collected:"),f=new jalview.datamodel.AlignmentView(a,b,c,!0,!1,!0),jalview.datamodel.AlignmentView.summariseAlignmentView(f,System.out)}catch(n){if(y(n,Exception))n.printStackTrace(),System.err.println("Failed to generate alignment with selection marked but no groups marked.");
+else throw n;}try{System.out.println("View *with* hidden columns, limited to selection and no groups to be collected:"),f=new jalview.datamodel.AlignmentView(a,b,c,!0,!0,!1),jalview.datamodel.AlignmentView.summariseAlignmentView(f,System.out)}catch(m){if(y(m,Exception))m.printStackTrace(),System.err.println("Failed to generate alignment with selection restricted but no groups marked.");else throw m;}try{System.out.println("View *with* hidden columns, limited to selection, and all groups to be collected:"),
+f=new jalview.datamodel.AlignmentView(a,b,c,!0,!0,!0),jalview.datamodel.AlignmentView.summariseAlignmentView(f,System.out)}catch(u){if(y(u,Exception))u.printStackTrace(),System.err.println("Failed to generate alignment with selection restricted and groups marked.");else throw u;}},"jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");c$.$AlignmentView$ScGroup$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.sg=this.seqs=null;r(this,arguments)},
+jalview.datamodel.AlignmentView,"ScGroup");m(c$,function(){this.seqs=new java.util.Vector});c$=z()}});p("jalview.schemes");q(["jalview.schemes.ResidueColourScheme"],"jalview.schemes.Blosum62ColourScheme",["jalview.schemes.ResidueProperties","jalview.util.Comparison","java.awt.Color"],function(){c$=B(jalview.schemes,"Blosum62ColourScheme",jalview.schemes.ResidueColourScheme);e(c$,"findColourSeq",function(a,b){"a"<=a&&"z">=a&&(a=String.fromCharCode(a.charCodeAt(0)-32));if(null==this.consensus||b>=this.consensus.length||
+null==this.consensus[b]||0!=this.threshold&&!this.aboveThreshold(a,b))return java.awt.Color.white;var c;if(jalview.util.Comparison.isGap(a))return java.awt.Color.white;c=this.consensus[b].get("R");if(-1<c.indexOf(a))c=new java.awt.Color(154,154,255);else{var f=0,d=0,e=c.length;do f+=jalview.schemes.ResidueProperties.getBLOSUM62(c.charAt(d),a);while(++d<e);c=0<f?new java.awt.Color(204,204,255):java.awt.Color.white}this.conservationColouring&&(c=this.applyConservation(c,b));return c},"~S,~N,jalview.datamodel.SequenceI");
+d(c$,"applyTo",function(a,b){return K(this,jalview.schemes.Blosum62ColourScheme,"applyTo",[a,b])},"jalview.datamodel.AnnotatedCollectionI,java.util.Map")});p("jalview.schemes");q(["jalview.schemes.ColourSchemeI"],"jalview.schemes.ResidueColourScheme",["jalview.util.Comparison","$.MessageManager","java.awt.Color","java.lang.Error"],function(){c$=s(function(){this.symbolIndex=null;this.conservationColouring=!1;this.colors=null;this.threshold=0;this.ignoreGaps="G";this.conservation=this.consensus=null;
+this.conservationLength=0;this.inc=30;r(this,arguments)},jalview.schemes,"ResidueColourScheme",null,jalview.schemes.ColourSchemeI);m(c$,function(a,b,c){this.symbolIndex=a;this.colors=b;this.threshold=c},"~A,~A,~N");m(c$,function(a){this.symbolIndex=a},"~A");m(c$,function(){this.symbolIndex=null});e(c$,"findColour",function(a){return null==this.colors?java.awt.Color.white:this.colors[this.symbolIndex[a.charCodeAt(0)]]},"~S");e(c$,"findColourSeq",function(a,b){var c;c=null!=this.colors&&null!=this.symbolIndex&&
+0==this.threshold||this.aboveThreshold(a,b)?this.colors[this.symbolIndex[a.charCodeAt(0)]]:java.awt.Color.white;this.conservationColouring&&(c=this.applyConservation(c,b));return c},"~S,~N,jalview.datamodel.SequenceI");e(c$,"getThreshold",function(){return this.threshold});e(c$,"setThreshold",function(a,b){this.threshold=a;this.ignoreGaps=b?"N":"G"},"~N,~B");d(c$,"aboveThreshold",function(a,b){"a"<=a&&"z">=a&&(a=String.fromCharCode(a.charCodeAt(0)-32));return null==this.consensus||this.consensus.length<
+b||null==this.consensus[b]?!1:-1!=this.consensus[b].get("C").intValue()&&this.consensus[b].contains(String.valueOf(a))&&this.consensus[b].get(this.ignoreGaps).floatValue()>=this.threshold?!0:!1},"~S,~N");e(c$,"conservationApplied",function(){return this.conservationColouring});e(c$,"setConservationApplied",function(a){this.conservationColouring=a},"~B");e(c$,"setConservationInc",function(a){this.inc=a},"~N");e(c$,"getConservationInc",function(){return this.inc});e(c$,"setConsensus",function(a){null!=
+a&&(this.consensus=a)},"~A");e(c$,"setConservation",function(a){if(null==a)this.conservationColouring=!1,this.conservation=null;else{this.conservationColouring=!0;var b,c=a.getConsSequence().getLength();this.conservation=N(c,"\x00");for(b=0;b<c;b++)this.conservation[b]=a.getConsSequence().getCharAt(b);this.conservationLength=this.conservation.length}},"jalview.analysis.Conservation");d(c$,"applyConservation",function(a,b){if(this.conservationLength>b&&"*"!=this.conservation[b]&&"+"!=this.conservation[b])if(jalview.util.Comparison.isGap(this.conservation[b]))a=
+java.awt.Color.white;else{var c=11-(this.conservation[b].charCodeAt(0)-48);if(0==c)return java.awt.Color.white;var f=a.getRed(),d=a.getGreen(),e=a.getBlue(),g,h;g=(255-f)*(c/10);h=(255-d)*(c/10);c=(255-e)*(c/10);f+=this.inc/20*g;d+=this.inc/20*h;e+=this.inc/20*c;a=255<f||255<d||255<e?java.awt.Color.white:new java.awt.Color(f,d,e)}return a},"java.awt.Color,~N");e(c$,"alignmentChanged",function(){},"jalview.datamodel.AnnotatedCollectionI,java.util.Map");e(c$,"applyTo",function(){try{return this.getClass().newInstance()}catch(a){if(y(a,
+Exception))throw Error(jalview.util.MessageManager.formatMessage("error.implementation_error_cannot_duplicate_colour_scheme",E(-1,[this.getClass().getName()])),a);throw a;}},"jalview.datamodel.AnnotatedCollectionI,java.util.Map")});p("jalview.schemes");M(jalview.schemes,"ColourSchemeI");p("jalview.schemes");q(["jalview.schemes.ResidueColourScheme"],"jalview.schemes.PIDColourScheme",["jalview.schemes.ResidueProperties","jalview.util.Comparison","java.awt.Color"],function(){c$=s(function(){this.group=
+this.thresholds=this.pidColours=null;r(this,arguments)},jalview.schemes,"PIDColourScheme",jalview.schemes.ResidueColourScheme);m(c$,function(){t(this,jalview.schemes.PIDColourScheme,[]);this.pidColours=jalview.schemes.ResidueProperties.pidColours;this.thresholds=jalview.schemes.ResidueProperties.pidThresholds});e(c$,"findColourSeq",function(a,b){"a"<=a&&"z">=a&&(a=String.fromCharCode(a.charCodeAt(0)-32));if(null==this.consensus||(b>=this.consensus.length||null==this.consensus[b])||0!=this.threshold&&
+!this.aboveThreshold(a,b))return java.awt.Color.white;var c=java.awt.Color.white,f=0;if(this.consensus.length<=b)return java.awt.Color.white;if(-1!=Integer.parseInt(this.consensus[b].get("C").toString())&&this.consensus[b].contains(String.valueOf(a))&&(f=this.consensus[b].get(this.ignoreGaps).floatValue(),!jalview.util.Comparison.isGap(a)))for(var d=0;d<this.thresholds.length;d++)if(f>this.thresholds[d]){c=this.pidColours[d];break}this.conservationColouring&&(c=this.applyConservation(c,b));return c},
+"~S,~N,jalview.datamodel.SequenceI")});p("jalview.workers");q(["jalview.workers.ConsensusThread"],"jalview.workers.ComplementConsensusThread",["jalview.analysis.AAFrequency"],function(){c$=s(function(){this.mappings=null;r(this,arguments)},jalview.workers,"ComplementConsensusThread",jalview.workers.ConsensusThread);e(c$,"getNewWorker",function(){return new jalview.workers.ComplementConsensusThread(this.alignViewport,this.ap)});e(c$,"getConsensusAnnotation",function(){return this.alignViewport.getComplementConsensusAnnotation()});
+e(c$,"getViewportConsensus",function(){return this.alignViewport.getComplementConsensusHash()});d(c$,"initializeCalc",function(){this.mappings=this.alignment.getCodonFrames();return null!=this.mappings&&!this.mappings.isEmpty()&&K(this,jalview.workers.ComplementConsensusThread,"initializeCalc",[])});e(c$,"computeConsensus",function(){for(var a=0;3>a;a++)try{jalview.analysis.AAFrequency.calculateCdna(this.alignment,this.mappings,this.hconsensus,this.iFirst,this.iLast);break}catch(b){if(!y(b,java.util.ConcurrentModificationException))throw b;
+}});e(c$,"finalizeCalc",function(){this.alignViewport.setComplementConsensusHash(this.hconsensus)});e(c$,"deriveConsensus",function(a,b){jalview.analysis.AAFrequency.completeCdnaConsensus(a,b,this.alignViewport.isShowSequenceLogo(),this.getSequences().length)},"jalview.datamodel.AlignmentAnnotation,~A")});p("jalview.workers");q(["jalview.api.AlignCalcWorkerI","jalview.workers.AlignCalcWorker"],"jalview.workers.ConsensusThread",["jalview.analysis.AAFrequency"],function(){c$=s(function(){this.aseqs=
+this.hconsensus=null;r(this,arguments)},jalview.workers,"ConsensusThread",jalview.workers.AlignCalcWorker,jalview.api.AlignCalcWorkerI);e(c$,"getNewWorker",function(){return new jalview.workers.ConsensusThread(this.alignViewport,this.ap)});e(c$,"run1",function(a){for(;!Thread.interrupted();){if(this.alignViewport.isClosed()){this.abortAndDestroy();break}try{switch(a){case 0:if(this.calcMan.isPending(this))return;this.calcMan.notifyStart(this);if(null==this.getConsensusAnnotation()||this.calcMan.isPending(this)){this.calcMan.workerComplete(this);
+return}a=3;break;case 3:for(;!this.calcMan.notifyWorking(this);){null!=this.ap&&this.ap.paintAlignment(!1);try{if(this.sleepAndReturn(200,a))return}catch(b){if(y(b,InterruptedException)){a=2;break}else throw b;}}if(this.alignViewport.isClosed()){this.abortAndDestroy();a=2;break}this.alignment=this.alignViewport.getAlignment();this.aWidth=-1;if(null==this.alignment||0>(this.aWidth=this.alignment.getWidth()))a=2;this.eraseConsensus(this.aWidth);a=this.initializeCalc()?4:2;break;case 4:this.iFirst=this.iLast;
+this.iLast=Math.min(this.iLast+this.nPer,this.aWidth);if(this.iLast==this.iFirst)a=2;else if(this.computeConsensus(),this.sleepAndReturn(0,a))return;break;case 2:this.finalizeCalc();this.updateAlignment();this.notifyDone();return}}catch(c){if(y(c,OutOfMemoryError)){var f=c;this.calcMan.workerCannotRun(this);this.ap.raiseOOMWarning("calculating consensus",f)}else f=c,System.out.println("Error in ConsensusThread: "+f),f.printStackTrace(),this.calcMan.workerComplete(this)}}},"~N");d(c$,"initializeCalc",
+function(){this.iLast=0;this.hconsensus=Array(this.aWidth);this.aseqs=this.getSequences();return!0});d(c$,"computeConsensus",function(){this.started=System.currentTimeMillis();jalview.analysis.AAFrequency.calculate(this.aseqs,this.iFirst,this.iLast,this.hconsensus,!0);500>System.currentTimeMillis()-this.started&&(this.nPer*=2)});d(c$,"finalizeCalc",function(){this.alignViewport.setSequenceConsensusHash(this.hconsensus)});d(c$,"updateAlignment",function(){this.setColourSchemeConsensus(this.hconsensus);
+this.updateResultAnnotation(!0)});d(c$,"eraseConsensus",function(a){this.getConsensusAnnotation().annotations=Array(a)},"~N");d(c$,"getSequences",function(){return this.alignViewport.getAlignment().getSequencesArray()});d(c$,"setColourSchemeConsensus",function(a){var b=this.alignViewport.getGlobalColourScheme();null!=b&&b.setConsensus(a)},"~A");d(c$,"getConsensusAnnotation",function(){return this.alignViewport.getAlignmentConsensusAnnotation()});e(c$,"updateAnnotation",function(){this.updateResultAnnotation(!1)});
+d(c$,"updateResultAnnotation",function(a){var b=this.getConsensusAnnotation(),c=this.getViewportConsensus();(a||!this.calcMan.isWorking(this)&&null!=b&&null!=c)&&this.deriveConsensus(b,c)},"~B");d(c$,"deriveConsensus",function(a,b){var c=this.getSequences().length;jalview.analysis.AAFrequency.completeConsensus(a,b,0,b.length,this.alignViewport.isIgnoreGapsConsensus(),this.alignViewport.isShowSequenceLogo(),c)},"jalview.datamodel.AlignmentAnnotation,~A");d(c$,"getViewportConsensus",function(){return this.alignViewport.getSequenceConsensusHash()})});
+p("jalview.api");M(jalview.api,"AlignCalcWorkerI",Runnable);p("jalview.workers");q(["jalview.api.AlignCalcWorkerI","swingjs.JSThread"],"jalview.workers.AlignCalcWorker",null,function(){c$=s(function(){this.iLast=this.iFirst=0;this.nPer=2;this.started=0;this.alignment=null;this.aWidth=0;this.ourAnnots=this.ap=this.calcMan=this.alignViewport=null;r(this,arguments)},jalview.workers,"AlignCalcWorker",swingjs.JSThread,jalview.api.AlignCalcWorkerI);m(c$,function(a,b){t(this,jalview.workers.AlignCalcWorker,
+[null,"AlignCalcWorker"]);this.alignViewport=a;this.calcMan=a.getCalcManager();this.ap=b},"jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");d(c$,"abortAndDestroy",function(){null!=this.calcMan&&this.calcMan.workerComplete(this);this.ap=this.calcMan=this.alignViewport=null});e(c$,"involves",function(a){return null!=this.ourAnnots&&this.ourAnnots.contains(a)},"jalview.datamodel.AlignmentAnnotation");e(c$,"removeOurAnnotation",function(){if(null!=this.ourAnnots&&null!=this.alignViewport)for(var a=
+this.alignViewport.getAlignment(),b,c=this.ourAnnots.iterator();c.hasNext()&&((b=c.next())||1);)a.deleteAnnotation(b,!0)});d(c$,"notifyDone",function(){null!=this.ap&&this.ap.paintAlignment(!0);this.calcMan.workerComplete(this)});G(c$,"LOOP_STANDBY",3,"LOOP_CALCULATE",4,"MS_MAX",500)});p("jalview.workers");q(["jalview.api.AlignCalcWorkerI","jalview.workers.AlignCalcWorker"],"jalview.workers.ConservationThread",["jalview.analysis.Conservation","jalview.schemes.ResidueProperties","java.util.ArrayList"],
+function(){c$=s(function(){this.ConsPercGaps=25;this.quality=this.conservation=this.cons=null;r(this,arguments)},jalview.workers,"ConservationThread",jalview.workers.AlignCalcWorker,jalview.api.AlignCalcWorkerI);e(c$,"getNewWorker",function(){return new jalview.workers.ConservationThread(this.alignViewport,this.ap)});m(c$,function(a,b){t(this,jalview.workers.ConservationThread,[a,b]);this.ConsPercGaps=a.getConsPercGaps()},"jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");e(c$,"run1",function(a){for(;!Thread.interrupted();)try{switch(a){case 0:if(this.calcMan.isPending(this))return;
+this.calcMan.notifyStart(this);a=3;break;case 3:for(;!this.calcMan.notifyWorking(this);){null!=this.ap&&this.ap.paintAlignment(!1);try{if(this.sleepAndReturn(200,a))return}catch(b){if(y(b,InterruptedException)){a=2;break}else throw b;}}if(this.alignViewport.isClosed()){this.abortAndDestroy();a=2;break}var c=new java.util.ArrayList;this.alignment=this.alignViewport.getAlignment();this.conservation=this.alignViewport.getAlignmentConservationAnnotation();this.quality=this.alignViewport.getAlignmentQualityAnnot();
+c.add(this.conservation);c.add(this.quality);this.ourAnnots=c;this.ConsPercGaps=this.alignViewport.getConsPercGaps();if(null==this.alignment||0>(this.aWidth=this.alignment.getWidth())){this.calcMan.workerComplete(this);return}a=4;break;case 4:this.iFirst=this.iLast;this.nPer=this.aWidth+1;this.iLast=Math.min(this.iLast+this.nPer,this.aWidth);if(this.iLast==this.iFirst)a=2;else if(this.computeConsensus(),this.sleepAndReturn(0,a))return;break;case 2:this.updateResultAnnotation(!0);this.notifyDone();
+return}}catch(f){if(y(f,OutOfMemoryError)){var d=f;this.calcMan.workerCannotRun(this);this.ap.raiseOOMWarning("calculating conservation",d)}else d=f,System.out.println("Error in ConsensusThread: "+d),d.printStackTrace(),this.calcMan.workerComplete(this)}},"~N");d(c$,"computeConsensus",function(){this.cons=jalview.analysis.Conservation.calculateConservation("All",jalview.schemes.ResidueProperties.propHash,3,this.alignment.getSequences(),0,this.aWidth-1,!1,this.ConsPercGaps,null!=this.quality)});d(c$,
+"updateResultAnnotation",function(a){if(a||!this.calcMan.isWorking(this)&&null!=this.cons&&null!=this.conservation&&null!=this.quality)this.alignViewport.setConservation(this.cons),this.cons.completeAnnotations(this.conservation,this.quality,0,this.aWidth)},"~B");e(c$,"updateAnnotation",function(){this.updateResultAnnotation(!1)})});p("jalview.workers");q(["jalview.api.AlignCalcWorkerI","jalview.workers.AlignCalcWorker"],"jalview.workers.StrucConsensusThread",["jalview.analysis.StructureFrequency"],
+function(){c$=s(function(){this.hStrucConsensus=this.strucConsensus=this.rnaStruc=null;this.nseq=-1;this.arr=this.aa=null;r(this,arguments)},jalview.workers,"StrucConsensusThread",jalview.workers.AlignCalcWorker,jalview.api.AlignCalcWorkerI);e(c$,"getNewWorker",function(){return new jalview.workers.StrucConsensusThread(this.alignViewport,this.ap)});e(c$,"run1",function(a){if(this.alignViewport.isClosed())this.abortAndDestroy();else for(;!Thread.interrupted();)try{switch(a){case 0:if(this.calcMan.isPending(this))return;
+this.calcMan.notifyStart(this);a=3;break;case 3:for(;!this.calcMan.notifyWorking(this);){null!=this.ap&&this.ap.paintAlignment(!1);try{if(this.sleepAndReturn(200,a))return}catch(b){if(y(b,InterruptedException)){a=2;break}else throw b;}}if(this.alignViewport.isClosed()){this.abortAndDestroy();a=2;break}this.alignment=this.alignViewport.getAlignment();this.aWidth=-1;if(null==this.alignment||0>(this.aWidth=this.alignment.getWidth()))a=2;this.strucConsensus=this.alignViewport.getAlignmentStrucConsensusAnnotation();
+this.hStrucConsensus=this.alignViewport.getRnaStructureConsensusHash();this.strucConsensus.annotations=null;this.strucConsensus.annotations=Array(this.aWidth);this.hStrucConsensus=Array(this.aWidth);this.aa=this.alignViewport.getAlignment().getAlignmentAnnotation();for(var c=0;c<this.aa.length;c++)if(null!=this.aa[c].getRNAStruc()&&this.aa[c].isValidStruc()){this.rnaStruc=this.aa[c];break}if(null==this.rnaStruc||!this.rnaStruc.isValidStruc()){this.calcMan.workerComplete(this);return}this.arr=this.alignment.getSequencesArray();
+this.nseq=this.arr.length;a=4;break;case 4:this.iFirst=this.iLast;this.iLast=Math.min(this.iLast+this.nPer,this.aWidth);if(this.iLast==this.iFirst)a=2;else if(jalview.analysis.StructureFrequency.calculate(this.arr,0,this.alignment.getWidth(),this.hStrucConsensus,!0,this.rnaStruc),this.sleepAndReturn(0,a))return;break;case 2:this.alignViewport.setRnaStructureConsensusHash(this.hStrucConsensus);this.updateResultAnnotation(!0);null!=this.alignViewport.getGlobalColourScheme()&&this.alignViewport.getGlobalColourScheme().setConsensus(this.hStrucConsensus);
+this.notifyDone();return}}catch(f){y(f,OutOfMemoryError)?(c=f,this.calcMan.workerCannotRun(this),this.ap.raiseOOMWarning("calculating RNA structure consensus",c)):(c=f,System.out.println("Error in ConsensusThread: "+c),c.printStackTrace(),this.calcMan.workerComplete(this))}},"~N");e(c$,"updateAnnotation",function(){this.updateResultAnnotation(!1)});d(c$,"updateResultAnnotation",function(a){(a||!this.calcMan.isWorking(this)&&null!=this.strucConsensus&&null!=this.hStrucConsensus)&&jalview.analysis.StructureFrequency.completeConsensus(this.strucConsensus,
+this.hStrucConsensus,0,this.hStrucConsensus.length,this.alignViewport.isIgnoreGapsConsensus(),this.alignViewport.isShowSequenceLogo(),this.nseq)},"~B")});p("jalview.analysis");q(null,"jalview.analysis.StructureFrequency","jalview.datamodel.Annotation jalview.util.Format $.QuickSort java.lang.Float java.util.Hashtable JU.AU".split(" "),function(){c$=B(jalview.analysis,"StructureFrequency");c$.findPair=d(c$,"findPair",function(a,b){for(var c=0;c<a.length;c++)if(a[c].getBegin()==b)return a[c].getEnd();
+return-1},"~A,~N");c$.calculate=d(c$,"calculate",function(a,b,c,f,d,e){var g,h=e.getRNAStruc().toCharArray();e=e._rnasecstr;var j,n,m=0,u,p=-1,q,s=a.length,r,t,v=!0;for(u=b;u<c;u++){b=new java.util.Hashtable;g="-";r=w(255,0);t=w(255,255,0);p=-1;j=u<h.length?h[u]:"-";if("."==j||" "==j)j="-";if("("!=j&&"["!=j)"-"==j&&r[45]++;else if(p=jalview.analysis.StructureFrequency.findPair(e,u),-1<p)for(q=0;q<s;q++)if(null==a[q])System.err.println("WARNING: Consensus skipping null sequence - possible race condition.");
+else{j=a[q].getCharAt(u);if("."==j||" "==j)j="-";"-"==j?r[45]++:(n=a[q].getCharAt(p),!0==jalview.analysis.StructureFrequency.checkBpType(j,n)&&(r[40]++,g="(",v=!0),!1==jalview.analysis.StructureFrequency.checkBpType(j,n)&&(v=!1,r[91]++,g="["),t[j.charCodeAt(0)][n.charCodeAt(0)]++)}d&&(b.put("P",E(-1,[r,w(-1,[s,s-r[45]])])),b.put("B",t));!0==v&&(m=r[40]);!1==v&&(m=r[91]);b.put("C",new Integer(m));b.put("R",g);j=100*m/s;b.put("G",new Float(j));null==f[u]&&(f[u]=b);0<p&&(r[41]=r[40],r[93]=r[91],r[40]=
+0,r[91]=0,b=new java.util.Hashtable,!0==v&&(g=")"),!1==v&&(g="]"),d&&(b.put("P",E(-1,[r,w(-1,[s,s-r[45]])])),b.put("B",t)),b.put("C",new Integer(m)),b.put("R",g),j=100*m/s,b.put("G",new Float(j)),f[p]=b)}},"~A,~N,~N,~A,~B,jalview.datamodel.AlignmentAnnotation");c$.checkBpType=d(c$,"checkBpType",function(a,b){"Z"<a&&(a=String.fromCharCode(a.charCodeAt(0)-32));"Z"<b&&(b=String.fromCharCode(b.charCodeAt(0)-32));switch(a){case "A":switch(b){case "T":return!0;case "U":return!0}break;case "C":switch(b){case "G":return!0}break;
+case "T":switch(b){case "A":return!0;case "G":return!0}break;case "G":switch(b){case "C":return!0;case "T":return!0;case "U":return!0}break;case "U":switch(b){case "A":return!0;case "G":return!0}}return!1},"~S,~S");c$.completeConsensus=d(c$,"completeConsensus",function(a,b,c,f,d,e,g){var h,j;if(!(null==a||null==a.annotations||a.annotations.length<f)){j="%3.1f";for(var n=2;100<g;)n++,g/=10;2<n&&(j="%"+(2+n)+"."+n+"f");for(g=new jalview.util.Format(j);c<f;c++){var m;if(c>=b.length||null==(m=b[c]))a.annotations[c]=
+null;else if(j=d?m.get("N"):m.get("G"),null==j)a.annotations[c]=null;else{j=j.floatValue();var n=m.get("R").toString(),u=m.get("R")+" ";1<n.length&&(u="["+n+"] ",n="+");h=m.get("P");var p=m.get("B");if(null!=p&&e){for(var u="",q=JU.AU.newInt2(625),s=Q(625,0),r=0,t=65;90>t;t++)for(var v=65;90>v;v++)q[r]=w(-1,[t,v]),s[r]=p[t][v],r++;jalview.util.QuickSort.sortFloatObject(s,q);p=0;r=h[1][d?1:0];for(t=624;0<t;t--)0<s[t]&&(h=100*s[t]/r,u+=(0==p?"":"; ")+String.fromCharCode(q[t][0])+String.fromCharCode(q[t][1])+
+" "+g.formDouble(h)+"%",p++)}else u+=g.formDouble(j)+"%";a.annotations[c]=new jalview.datamodel.Annotation(n,u," ",j)}}}},"jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~B,~B,~N");c$.extractProfile=d(c$,"extractProfile",function(a,b){var c=w(74,0),f=a.get("P"),d=a.get("B");if(null==f)return null;for(var e=JU.AU.newInt2(625),g=Q(625,0),h=0,j=65;90>j;j++)for(var n=65;90>n;n++)e[h]=w(-1,[j,n]),g[h]=d[j][n],h++;jalview.util.QuickSort.sortFloatObject(g,e);d=0;c[1]=0;h=2;f=f[1][b?1:0];for(j=624;0<j;j--)0<
+g[j]&&(c[h++]=e[j][0],c[h++]=e[j][1],c[h]=I(100*g[j]/f),c[1]+=c[h++],d++);c[0]=d;e=w(c.length+1,0);e[0]=1;System.arraycopy(c,0,e,1,c.length);return e},"java.util.Hashtable,~B");G(c$,"STRUCTURE_PROFILE_LENGTH",74,"MAXCOUNT","C","MAXRESIDUE","R","PID_GAPS","G","PID_NOGAPS","N","PROFILE","P","PAIRPROFILE","B")});p("jalview.schemes");q(null,"jalview.schemes.ColourSchemeProperty","jalview.schemes.Blosum62ColourScheme $.BuriedColourScheme $.ClustalxColourScheme $.HelixColourScheme $.HydrophobicColourScheme $.NucleotideColourScheme $.PIDColourScheme $.PurinePyrimidineColourScheme $.RNAHelicesColour $.StrandColourScheme $.TCoffeeColourScheme $.TaylorColourScheme $.TurnColourScheme $.UserColourScheme $.ZappoColourScheme jalview.util.ColorUtils java.awt.Color".split(" "),
+function(){c$=B(jalview.schemes,"ColourSchemeProperty");c$.getColourIndexFromName=d(c$,"getColourIndexFromName",function(a){var b=-1;a.equalsIgnoreCase("Clustal")?b=2:a.equalsIgnoreCase("Blosum62")?b=3:a.equalsIgnoreCase("% Identity")?b=4:a.equalsIgnoreCase("Zappo")?b=5:a.equalsIgnoreCase("Taylor")?b=6:a.equalsIgnoreCase("Hydrophobic")?b=7:a.equalsIgnoreCase("Helix Propensity")?b=8:a.equalsIgnoreCase("Strand Propensity")?b=9:a.equalsIgnoreCase("Turn Propensity")?b=10:a.equalsIgnoreCase("Buried Index")?
+b=11:a.equalsIgnoreCase("Nucleotide")?b=12:a.equalsIgnoreCase("T-Coffee Scores")?b=15:a.equalsIgnoreCase("User Defined")?b=0:a.equalsIgnoreCase("None")?b=1:a.equalsIgnoreCase("Purine/Pyrimidine")?b=13:a.equalsIgnoreCase("RNA Interaction type")?b=17:a.equalsIgnoreCase("RNA Helices")&&(b=16);return b},"~S");c$.getColourName=d(c$,"getColourName",function(a){var b=1;if(v(a,jalview.schemes.ClustalxColourScheme))b=2;else if(v(a,jalview.schemes.Blosum62ColourScheme))b=3;else if(v(a,jalview.schemes.PIDColourScheme))b=
+4;else if(v(a,jalview.schemes.ZappoColourScheme))b=5;else if(v(a,jalview.schemes.TaylorColourScheme))b=6;else if(v(a,jalview.schemes.HydrophobicColourScheme))b=7;else if(v(a,jalview.schemes.HelixColourScheme))b=8;else if(v(a,jalview.schemes.StrandColourScheme))b=9;else if(v(a,jalview.schemes.TurnColourScheme))b=10;else if(v(a,jalview.schemes.BuriedColourScheme))b=11;else if(v(a,jalview.schemes.NucleotideColourScheme))b=12;else if(v(a,jalview.schemes.PurinePyrimidineColourScheme))b=13;else if(v(a,
+jalview.schemes.TCoffeeColourScheme))b=15;else if(v(a,jalview.schemes.RNAHelicesColour))b=16;else if(v(a,jalview.schemes.UserColourScheme)){if(null!=a.getName()&&0<a.getName().length)return a.getName();b=0}return jalview.schemes.ColourSchemeProperty.getColourName(b)},"jalview.schemes.ColourSchemeI");c$.getColourName=d(c$,"getColourName",function(a){var b=null;switch(a){case 2:b="Clustal";break;case 3:b="Blosum62";break;case 4:b="% Identity";break;case 5:b="Zappo";break;case 6:b="Taylor";break;case 7:b=
+"Hydrophobic";break;case 8:b="Helix Propensity";break;case 9:b="Strand Propensity";break;case 10:b="Turn Propensity";break;case 11:b="Buried Index";break;case 12:b="Nucleotide";break;case 13:b="Purine/Pyrimidine";break;case 15:b="T-Coffee Scores";break;case 17:b="RNA Interaction type";break;case 16:b="RNA Helices";break;case 0:b="User Defined";break;default:b="None"}return b},"~N");c$.getColour=d(c$,"getColour",function(a,b){if(-1==jalview.schemes.ColourSchemeProperty.getColourIndexFromName(b))if(-1==
+b.indexOf("="))try{return new jalview.schemes.UserColourScheme(b)}catch(c){if(!y(c,Exception))throw c;}else try{(new jalview.schemes.UserColourScheme("white")).parseAppletParameter(b)}catch(f){if(!y(f,Exception))throw f;}return jalview.schemes.ColourSchemeProperty.getColour(a,jalview.schemes.ColourSchemeProperty.getColourIndexFromName(b))},"jalview.datamodel.AnnotatedCollectionI,~S");c$.getColour=d(c$,"getColour",function(a,b){var c=null;switch(b){case 2:c=new jalview.schemes.ClustalxColourScheme(a,
+null);break;case 3:c=new jalview.schemes.Blosum62ColourScheme;break;case 4:c=new jalview.schemes.PIDColourScheme;break;case 5:c=new jalview.schemes.ZappoColourScheme;break;case 6:c=new jalview.schemes.TaylorColourScheme;break;case 7:c=new jalview.schemes.HydrophobicColourScheme;break;case 8:c=new jalview.schemes.HelixColourScheme;break;case 9:c=new jalview.schemes.StrandColourScheme;break;case 10:c=new jalview.schemes.TurnColourScheme;break;case 11:c=new jalview.schemes.BuriedColourScheme;break;case 12:c=
+new jalview.schemes.NucleotideColourScheme;break;case 13:c=new jalview.schemes.PurinePyrimidineColourScheme;break;case 15:c=new jalview.schemes.TCoffeeColourScheme(a);break;case 16:c=new jalview.schemes.RNAHelicesColour(a);break;case 0:for(var c=Array(24),f=0;24>f;f++)c[f]=java.awt.Color.white;c=new jalview.schemes.UserColourScheme(c)}return c},"jalview.datamodel.AnnotatedCollectionI,~N");c$.getAWTColorFromName=d(c$,"getAWTColorFromName",function(a){var b=null;a=a.toLowerCase();a.equals("black")?
+b=java.awt.Color.black:a.equals("blue")?b=java.awt.Color.blue:a.equals("cyan")?b=java.awt.Color.cyan:a.equals("darkGray")?b=java.awt.Color.darkGray:a.equals("gray")?b=java.awt.Color.gray:a.equals("green")?b=java.awt.Color.green:a.equals("lightGray")?b=java.awt.Color.lightGray:a.equals("magenta")?b=java.awt.Color.magenta:a.equals("orange")?b=java.awt.Color.orange:a.equals("pink")?b=java.awt.Color.pink:a.equals("red")?b=java.awt.Color.red:a.equals("white")?b=java.awt.Color.white:a.equals("yellow")&&
+(b=java.awt.Color.yellow);return b},"~S");c$.initRnaHelicesShading=d(c$,"initRnaHelicesShading",function(a){var b=0;if(null==jalview.schemes.ColourSchemeProperty.rnaHelices)jalview.schemes.ColourSchemeProperty.rnaHelices=Array(a+1);else if(null!=jalview.schemes.ColourSchemeProperty.rnaHelices&&jalview.schemes.ColourSchemeProperty.rnaHelices.length<=a){var c=Array(a+1);System.arraycopy(jalview.schemes.ColourSchemeProperty.rnaHelices,0,c,0,jalview.schemes.ColourSchemeProperty.rnaHelices.length);b=jalview.schemes.ColourSchemeProperty.rnaHelices.length;
+jalview.schemes.ColourSchemeProperty.rnaHelices=c}else return;for(;b<=a;b++)jalview.schemes.ColourSchemeProperty.rnaHelices[b]=jalview.util.ColorUtils.generateRandomColor(java.awt.Color.white)},"~N");G(c$,"UNDEFINED",-1,"USER_DEFINED",0,"NONE",1,"CLUSTAL",2,"BLOSUM",3,"PID",4,"ZAPPO",5,"TAYLOR",6,"HYDROPHOBIC",7,"HELIX",8,"STRAND",9,"TURN",10,"BURIED",11,"NUCLEOTIDE",12,"PURINEPYRIMIDINE",13,"COVARIATION",14,"TCOFFEE",15,"RNAHELIX",16,"RNAINTERACTION",17,"FIRST_COLOUR",1,"LAST_COLOUR",17,"rnaHelices",
+null)});p("jalview.schemes");q(["jalview.schemes.ScoreColourScheme"],"jalview.schemes.BuriedColourScheme",["jalview.schemes.ResidueProperties","java.awt.Color"],function(){c$=B(jalview.schemes,"BuriedColourScheme",jalview.schemes.ScoreColourScheme);m(c$,function(){t(this,jalview.schemes.BuriedColourScheme,[jalview.schemes.ResidueProperties.aaIndex,jalview.schemes.ResidueProperties.buried,0.05,4.6])});e(c$,"makeColour",function(a){return new java.awt.Color(0,1-a,a)},"~N")});p("jalview.schemes");q(["jalview.schemes.ResidueColourScheme"],
+"jalview.schemes.ScoreColourScheme",["jalview.schemes.ResidueProperties","jalview.util.Comparison","java.awt.Color"],function(){c$=s(function(){this.max=this.min=0;this.scores=null;r(this,arguments)},jalview.schemes,"ScoreColourScheme",jalview.schemes.ResidueColourScheme);m(c$,function(a,b,c,f){t(this,jalview.schemes.ScoreColourScheme,[a]);this.scores=b;this.min=c;this.max=f;var d=b.length;this.colors=Array(b.length);for(a=0;a<d;a++){var e=(b[a]-c)/(f-c);1<e&&(e=1);0>e&&(e=0);this.colors[a]=this.makeColour(e)}},
+"~A,~A,~N,~N");e(c$,"findColourSeq",function(a,b){if(0<this.threshold&&!this.aboveThreshold(a,b)||jalview.util.Comparison.isGap(a))return java.awt.Color.white;var c=this.colors[jalview.schemes.ResidueProperties.aaIndex[a.charCodeAt(0)]];this.conservationColouring&&(c=this.applyConservation(c,b));return c},"~S,~N,jalview.datamodel.SequenceI");d(c$,"makeColour",function(a){return new java.awt.Color(a,0,1-a)},"~N")});p("jalview.schemes");q(["jalview.schemes.ResidueColourScheme","java.util.HashMap"],
+["jalview.schemes.ConsensusColour","$.ClustalxColourScheme"],["jalview.schemes.Consensus","$.ResidueProperties","java.awt.Color"],function(){c$=s(function(){this.residueColour=this.colours=this.cons2=null;this.size=0;this.conses=null;this.includeGaps=!0;r(this,arguments)},jalview.schemes,"ClustalxColourScheme",jalview.schemes.ResidueColourScheme);J(c$,function(){this.conses=Array(32)});m(c$,function(a,b){t(this,jalview.schemes.ClustalxColourScheme,[]);this.alignmentChanged(a,b)},"jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+e(c$,"alignmentChanged",function(a,b){var c=a.getWidth(),f=a.getSequences(b);this.cons2=w(c,24,0);this.includeGaps=this.isIncludeGaps();for(var d=0;24>d;d++)for(var e=0;e<c;e++)this.cons2[e][d]=0;for(var d=0,g,h,j=f.iterator();j.hasNext()&&((h=j.next())||1);){g=h.getSequence();for(var n=g.length-1,e=0;e<=n;e++)c=g.length-1<e?23:jalview.schemes.ResidueProperties.aaIndex[g[e].charCodeAt(0)],this.cons2[e][c]++;d++}this.size=f.size();this.makeColours()},"jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+d(c$,"makeColours",function(){this.conses[0]=new jalview.schemes.Consensus("WLVIMAFCYHP",60);this.conses[1]=new jalview.schemes.Consensus("WLVIMAFCYHP",80);this.conses[2]=new jalview.schemes.Consensus("ED",50);this.conses[3]=new jalview.schemes.Consensus("KR",60);this.conses[4]=new jalview.schemes.Consensus("G",50);this.conses[5]=new jalview.schemes.Consensus("N",50);this.conses[6]=new jalview.schemes.Consensus("QE",50);this.conses[7]=new jalview.schemes.Consensus("P",50);this.conses[8]=new jalview.schemes.Consensus("TS",
+50);this.conses[26]=new jalview.schemes.Consensus("A",85);this.conses[27]=new jalview.schemes.Consensus("C",85);this.conses[10]=new jalview.schemes.Consensus("E",85);this.conses[11]=new jalview.schemes.Consensus("F",85);this.conses[12]=new jalview.schemes.Consensus("G",85);this.conses[13]=new jalview.schemes.Consensus("H",85);this.conses[14]=new jalview.schemes.Consensus("I",85);this.conses[15]=new jalview.schemes.Consensus("L",85);this.conses[16]=new jalview.schemes.Consensus("M",85);this.conses[17]=
+new jalview.schemes.Consensus("N",85);this.conses[18]=new jalview.schemes.Consensus("P",85);this.conses[19]=new jalview.schemes.Consensus("Q",85);this.conses[20]=new jalview.schemes.Consensus("R",85);this.conses[21]=new jalview.schemes.Consensus("S",85);this.conses[22]=new jalview.schemes.Consensus("T",85);this.conses[23]=new jalview.schemes.Consensus("V",85);this.conses[24]=new jalview.schemes.Consensus("W",85);this.conses[25]=new jalview.schemes.Consensus("Y",85);this.conses[28]=new jalview.schemes.Consensus("K",
+85);this.conses[29]=new jalview.schemes.Consensus("D",85);this.conses[30]=new jalview.schemes.Consensus("G",0);this.conses[31]=new jalview.schemes.Consensus("P",0);this.colours=Array(11);var a=Array(1);a[0]=this.conses[30];this.colours[7]=new jalview.schemes.ConsensusColour(jalview.schemes.ClustalxColourScheme.colhash.get(java.awt.Color.ORANGE),a);var b=Array(1);b[0]=this.conses[31];this.colours[8]=new jalview.schemes.ConsensusColour(jalview.schemes.ClustalxColourScheme.colhash.get(java.awt.Color.YELLOW),
+b);Array(1)[0]=this.conses[27];this.colours[9]=new jalview.schemes.ConsensusColour(jalview.schemes.ClustalxColourScheme.colhash.get(java.awt.Color.PINK),a);a=Array(14);a[0]=this.conses[0];a[1]=this.conses[1];a[2]=this.conses[26];a[3]=this.conses[27];a[4]=this.conses[11];a[5]=this.conses[13];a[6]=this.conses[14];a[7]=this.conses[15];a[8]=this.conses[16];a[9]=this.conses[23];a[10]=this.conses[24];a[11]=this.conses[25];a[12]=this.conses[18];a[13]=this.conses[19];this.colours[0]=new jalview.schemes.ConsensusColour(jalview.schemes.ClustalxColourScheme.colhash.get(java.awt.Color.BLUE),
+a);this.colours[10]=new jalview.schemes.ConsensusColour(jalview.schemes.ClustalxColourScheme.colhash.get(java.awt.Color.CYAN),a);a=Array(5);a[0]=this.conses[8];a[1]=this.conses[21];a[2]=this.conses[22];a[3]=this.conses[0];a[4]=this.conses[1];this.colours[1]=new jalview.schemes.ConsensusColour(jalview.schemes.ClustalxColourScheme.colhash.get(java.awt.Color.GREEN),a);a=Array(3);a[0]=this.conses[17];a[1]=this.conses[29];a[2]=this.conses[5];this.colours[2]=new jalview.schemes.ConsensusColour(jalview.schemes.ClustalxColourScheme.colhash.get(java.awt.Color.GREEN),
+a);a=Array(6);a[0]=this.conses[6];a[1]=this.conses[19];a[2]=this.conses[22];a[3]=this.conses[3];a[4]=this.conses[28];a[5]=this.conses[20];this.colours[3]=new jalview.schemes.ConsensusColour(jalview.schemes.ClustalxColourScheme.colhash.get(java.awt.Color.GREEN),a);a=Array(4);a[0]=this.conses[3];a[1]=this.conses[28];a[2]=this.conses[20];a[3]=this.conses[19];this.colours[4]=new jalview.schemes.ConsensusColour(jalview.schemes.ClustalxColourScheme.colhash.get(java.awt.Color.RED),a);a=Array(6);a[0]=this.conses[3];
+a[1]=this.conses[29];a[2]=this.conses[10];a[3]=this.conses[6];a[4]=this.conses[19];a[5]=this.conses[2];this.colours[5]=new jalview.schemes.ConsensusColour(jalview.schemes.ClustalxColourScheme.colhash.get(java.awt.Color.MAGENTA),a);a=Array(5);a[0]=this.conses[3];a[1]=this.conses[29];a[2]=this.conses[10];a[3]=this.conses[17];a[4]=this.conses[2];this.colours[6]=new jalview.schemes.ConsensusColour(jalview.schemes.ClustalxColourScheme.colhash.get(java.awt.Color.MAGENTA),a);this.residueColour=Array(20);
+this.residueColour[0]=this.colours[0];this.residueColour[1]=this.colours[4];this.residueColour[2]=this.colours[2];this.residueColour[3]=this.colours[6];this.residueColour[4]=this.colours[0];this.residueColour[5]=this.colours[3];this.residueColour[6]=this.colours[5];this.residueColour[7]=this.colours[7];this.residueColour[8]=this.colours[10];this.residueColour[9]=this.colours[0];this.residueColour[10]=this.colours[0];this.residueColour[11]=this.colours[4];this.residueColour[12]=this.colours[0];this.residueColour[13]=
+this.colours[0];this.residueColour[14]=this.colours[8];this.residueColour[15]=this.colours[1];this.residueColour[16]=this.colours[1];this.residueColour[17]=this.colours[0];this.residueColour[18]=this.colours[10];this.residueColour[19]=this.colours[0]});e(c$,"findColour",function(){return java.awt.Color.pink},"~S");e(c$,"findColourSeq",function(a,b){var c;if(this.cons2.length<=b||this.includeGaps&&0!=this.threshold&&!this.aboveThreshold(a,b))return java.awt.Color.white;var f=jalview.schemes.ResidueProperties.aaIndex[a.charCodeAt(0)];
+c=java.awt.Color.white;if(19<f)return c;for(var d=0;d<this.residueColour[f].conses.length;d++)this.residueColour[f].conses[d].isConserved(this.cons2,b,this.size,this.includeGaps)&&(c=this.residueColour[f].c);4==f&&this.conses[27].isConserved(this.cons2,b,this.size,this.includeGaps)&&(c=jalview.schemes.ClustalxColourScheme.colhash.get(java.awt.Color.PINK));this.conservationColouring&&(c=this.applyConservation(c,b));return c},"~S,~N,jalview.datamodel.SequenceI");d(c$,"isIncludeGaps",function(){return this.includeGaps});
+d(c$,"setIncludeGaps",function(a){this.includeGaps=a},"~B");e(c$,"applyTo",function(a,b){var c=new jalview.schemes.ClustalxColourScheme(a,b);c.includeGaps=this.includeGaps;return c},"jalview.datamodel.AnnotatedCollectionI,java.util.Map");G(c$,"EIGHTY_FIVE",85,"FIFTY",50,"EIGHTY",80,"SIXTY",60);c$.colhash=c$.prototype.colhash=new java.util.HashMap;jalview.schemes.ClustalxColourScheme.colhash.put(java.awt.Color.RED,new java.awt.Color(0.9,0.2,0.1));jalview.schemes.ClustalxColourScheme.colhash.put(java.awt.Color.BLUE,
+new java.awt.Color(0.5,0.7,0.9));jalview.schemes.ClustalxColourScheme.colhash.put(java.awt.Color.GREEN,new java.awt.Color(0.1,0.8,0.1));jalview.schemes.ClustalxColourScheme.colhash.put(java.awt.Color.ORANGE,new java.awt.Color(0.9,0.6,0.3));jalview.schemes.ClustalxColourScheme.colhash.put(java.awt.Color.CYAN,new java.awt.Color(0.1,0.7,0.7));jalview.schemes.ClustalxColourScheme.colhash.put(java.awt.Color.PINK,new java.awt.Color(0.9,0.5,0.5));jalview.schemes.ClustalxColourScheme.colhash.put(java.awt.Color.MAGENTA,
+new java.awt.Color(0.8,0.3,0.8));jalview.schemes.ClustalxColourScheme.colhash.put(java.awt.Color.YELLOW,new java.awt.Color(0.8,0.8,0));c$=s(function(){this.c=this.conses=null;r(this,arguments)},jalview.schemes,"ConsensusColour");m(c$,function(a,b){this.conses=b;this.c=a},"java.awt.Color,~A")});p("jalview.schemes");q(null,"jalview.schemes.Consensus",["jalview.schemes.ResidueProperties"],function(){c$=s(function(){this.mask=null;this.threshold=0;this.maskstr=null;r(this,arguments)},jalview.schemes,
+"Consensus");m(c$,function(a,b){this.maskstr=a;this.setMask(a);this.threshold=b},"~S,~N");d(c$,"setMask",function(a){this.mask=this.setNums(a)},"~S");d(c$,"isConserved",function(a,b,c){return this.isConserved(a,b,c,!0)},"~A,~N,~N");d(c$,"isConserved",function(a,b,c,f){var d=0;f||(c-=a[b][a[b].length-1]);for(f=0;f<this.mask.length;f++)d+=a[b][this.mask[f]];return d>this.threshold*c/100?!0:!1},"~A,~N,~N,~B");d(c$,"setNums",function(a){for(var b=w(a.length,0),c=0;c<a.length;)b[c]=jalview.schemes.ResidueProperties.aaIndex[a.charCodeAt(c)],
+c++;return b},"~S")});p("jalview.schemes");q(["jalview.schemes.ScoreColourScheme"],"jalview.schemes.HelixColourScheme",["jalview.schemes.ResidueProperties","java.awt.Color"],function(){c$=B(jalview.schemes,"HelixColourScheme",jalview.schemes.ScoreColourScheme);m(c$,function(){t(this,jalview.schemes.HelixColourScheme,[jalview.schemes.ResidueProperties.aaIndex,jalview.schemes.ResidueProperties.helix,0.57,1.51])});e(c$,"makeColour",function(a){return new java.awt.Color(a,1-a,a)},"~N")});p("jalview.schemes");
+q(["jalview.schemes.ScoreColourScheme"],"jalview.schemes.HydrophobicColourScheme",["jalview.schemes.ResidueProperties","java.awt.Color"],function(){c$=B(jalview.schemes,"HydrophobicColourScheme",jalview.schemes.ScoreColourScheme);m(c$,function(){t(this,jalview.schemes.HydrophobicColourScheme,[jalview.schemes.ResidueProperties.aaIndex,jalview.schemes.ResidueProperties.hyd,-3.9,4.5])});e(c$,"makeColour",function(a){return new java.awt.Color(a,0,1-a)},"~N")});p("jalview.schemes");q(["jalview.schemes.ResidueColourScheme"],
+"jalview.schemes.NucleotideColourScheme",["jalview.schemes.ResidueProperties","java.awt.Color"],function(){c$=B(jalview.schemes,"NucleotideColourScheme",jalview.schemes.ResidueColourScheme);m(c$,function(){t(this,jalview.schemes.NucleotideColourScheme,[jalview.schemes.ResidueProperties.nucleotideIndex,jalview.schemes.ResidueProperties.nucleotide,0])});e(c$,"findColour",function(a){return this.colors[jalview.schemes.ResidueProperties.nucleotideIndex[a.charCodeAt(0)]]},"~S");e(c$,"findColourSeq",function(a,
+b){var c;if(0==this.threshold||this.aboveThreshold(a,b))try{c=this.colors[jalview.schemes.ResidueProperties.nucleotideIndex[a.charCodeAt(0)]]}catch(f){if(y(f,Exception))return java.awt.Color.white;throw f;}else return java.awt.Color.white;this.conservationColouring&&(c=this.applyConservation(c,b));return c},"~S,~N,jalview.datamodel.SequenceI")});p("jalview.schemes");q(["jalview.schemes.ResidueColourScheme"],"jalview.schemes.PurinePyrimidineColourScheme",["jalview.schemes.ResidueProperties","java.awt.Color"],
+function(){c$=B(jalview.schemes,"PurinePyrimidineColourScheme",jalview.schemes.ResidueColourScheme);m(c$,function(){t(this,jalview.schemes.PurinePyrimidineColourScheme,[jalview.schemes.ResidueProperties.purinepyrimidineIndex,jalview.schemes.ResidueProperties.purinepyrimidine,0])});d(c$,"findColour",function(a){return this.colors[jalview.schemes.ResidueProperties.purinepyrimidineIndex[a.charCodeAt(0)]]},"~S");d(c$,"findColour",function(a,b){var c;if(0==this.threshold||this.aboveThreshold(a,b))try{c=
+this.colors[jalview.schemes.ResidueProperties.purinepyrimidineIndex[a.charCodeAt(0)]]}catch(f){if(y(f,Exception))return java.awt.Color.white;throw f;}else return java.awt.Color.white;this.conservationColouring&&(c=this.applyConservation(c,b));return c},"~S,~N")});p("jalview.schemes");q(["jalview.schemes.ResidueColourScheme","java.util.Hashtable"],"jalview.schemes.RNAHelicesColour",["jalview.schemes.ResidueProperties","jalview.util.ColorUtils","java.awt.Color"],function(){c$=s(function(){this.positionsToHelix=
+this.helixcolorhash=null;this.numHelix=0;this.annotation=null;this.lastrefresh=-1;r(this,arguments)},jalview.schemes,"RNAHelicesColour",jalview.schemes.ResidueColourScheme);J(c$,function(){this.helixcolorhash=new java.util.Hashtable;this.positionsToHelix=new java.util.Hashtable});m(c$,function(a){t(this,jalview.schemes.RNAHelicesColour,[jalview.schemes.ResidueProperties.nucleotideIndex]);this.annotation=a;this.refresh()},"jalview.datamodel.AlignmentAnnotation");m(c$,function(a){t(this,jalview.schemes.RNAHelicesColour,
+[jalview.schemes.ResidueProperties.nucleotideIndex]);this.alignmentChanged(a,null)},"jalview.datamodel.AnnotatedCollectionI");e(c$,"alignmentChanged",function(a){a=a.getAlignmentAnnotation();for(var b=0;b<a.length;b++)if(null!=a[b].getRNAStruc()){this.annotation=a[b];break}this.refresh()},"jalview.datamodel.AnnotatedCollectionI,java.util.Map");d(c$,"refresh",function(){if(null!=this.annotation&&(null==this.annotation._rnasecstr||this.lastrefresh!=this.annotation._rnasecstr.hashCode())&&this.annotation.isValidStruc()){this.annotation.getRNAStruc();
+this.lastrefresh=this.annotation._rnasecstr.hashCode();this.numHelix=0;this.positionsToHelix=new java.util.Hashtable;for(var a=0;a<this.annotation._rnasecstr.length;a++)this.positionsToHelix.put(new Integer(this.annotation._rnasecstr[a].getBegin()),this.annotation._rnasecstr[a].getFeatureGroup()),this.positionsToHelix.put(new Integer(this.annotation._rnasecstr[a].getEnd()),this.annotation._rnasecstr[a].getFeatureGroup()),Integer.parseInt(this.annotation._rnasecstr[a].getFeatureGroup())>this.numHelix&&
+(this.numHelix=Integer.parseInt(this.annotation._rnasecstr[a].getFeatureGroup()));for(a=0;a<=this.numHelix;a++)this.helixcolorhash.containsKey(Integer.toString(a))||this.helixcolorhash.put(Integer.toString(a),jalview.util.ColorUtils.generateRandomColor(java.awt.Color.white))}});e(c$,"findColour",function(a){return jalview.schemes.ResidueProperties.purinepyrimidine[jalview.schemes.ResidueProperties.purinepyrimidineIndex[a.charCodeAt(0)]]},"~S");e(c$,"findColourSeq",function(a,b){this.refresh();var c=
+java.awt.Color.white,f=null,f=this.positionsToHelix.get(new Integer(b));null!=f&&(c=this.helixcolorhash.get(f));return c},"~S,~N,jalview.datamodel.SequenceI")});p("jalview.util");q(null,"jalview.util.ColorUtils",["java.awt.Color","java.util.Random"],function(){c$=B(jalview.util,"ColorUtils");c$.generateRandomColor=d(c$,"generateRandomColor",function(a){var b=new java.util.Random,c=b.nextInt(256),f=b.nextInt(256),b=b.nextInt(256);null!=a&&(c=F((c+a.getRed())/2),f=F((f+a.getGreen())/2),b=F((b+a.getBlue())/
+2));return new java.awt.Color(c,f,b)},"java.awt.Color");c$.toTkCode=d(c$,"toTkCode",function(a){return"#"+(16>a.getRed()?"0":"")+Integer.toHexString(a.getRed())+(16>a.getGreen()?"0":"")+Integer.toHexString(a.getGreen())+(16>a.getBlue()?"0":"")+Integer.toHexString(a.getBlue())},"java.awt.Color");c$.darkerThan=d(c$,"darkerThan",function(a){return null==a?null:a.darker().darker().darker()},"java.awt.Color");c$.brighterThan=d(c$,"brighterThan",function(a){return null==a?null:a.brighter().brighter().brighter()},
+"java.awt.Color")});p("jalview.schemes");q(["jalview.schemes.ScoreColourScheme"],"jalview.schemes.StrandColourScheme",["jalview.schemes.ResidueProperties","java.awt.Color"],function(){c$=B(jalview.schemes,"StrandColourScheme",jalview.schemes.ScoreColourScheme);m(c$,function(){t(this,jalview.schemes.StrandColourScheme,[jalview.schemes.ResidueProperties.aaIndex,jalview.schemes.ResidueProperties.strand,0.37,1.7])});e(c$,"makeColour",function(a){return new java.awt.Color(a,a,1-a)},"~N")});p("jalview.schemes");
+q(["jalview.schemes.ResidueColourScheme","java.awt.Color"],"jalview.schemes.TCoffeeColourScheme",["jalview.datamodel.AlignmentI","java.util.ArrayList","$.IdentityHashMap"],function(){c$=s(function(){this.seqMap=null;r(this,arguments)},jalview.schemes,"TCoffeeColourScheme",jalview.schemes.ResidueColourScheme);m(c$,function(a){t(this,jalview.schemes.TCoffeeColourScheme,[]);this.alignmentChanged(a,null)},"jalview.datamodel.AnnotatedCollectionI");e(c$,"alignmentChanged",function(a){var b=new java.util.ArrayList;
+this.seqMap=new java.util.IdentityHashMap;var c=0,f;for(a=(v(a,jalview.datamodel.AlignmentI)?a:a.getContext()).findAnnotation("TCoffeeScore").iterator();a.hasNext()&&((f=a.next())||1);)if(null!=f.sequenceRef&&!f.belowAlignment){b.add(f);c<f.annotations.length&&(c=f.annotations.length);for(var d=Array(f.annotations.length),e=0,g,h=0,j=f.annotations;h<j.length&&((g=j[h])||1);h++)d[e++]=null!=g?g.colour:java.awt.Color.white;this.seqMap.put(f.sequenceRef,d)}},"jalview.datamodel.AnnotatedCollectionI,java.util.Map");
+e(c$,"findColourSeq",function(a,b,c){var f;return null==this.seqMap||null==(f=this.seqMap.get(c))||0>b||b>=f.length?java.awt.Color.white:f[b]},"~S,~N,jalview.datamodel.SequenceI");e(c$,"applyTo",function(a){return new jalview.schemes.TCoffeeColourScheme(a)},"jalview.datamodel.AnnotatedCollectionI,java.util.Map");c$.$colors=c$.prototype.$colors=E(-1,[new java.awt.Color(102,102,255),new java.awt.Color(0,255,0),new java.awt.Color(102,255,0),new java.awt.Color(204,255,0),new java.awt.Color(255,255,0),
+new java.awt.Color(255,204,0),new java.awt.Color(255,153,0),new java.awt.Color(255,102,0),new java.awt.Color(255,51,0),new java.awt.Color(255,34,0)])});p("jalview.schemes");q(["jalview.schemes.ResidueColourScheme"],"jalview.schemes.TaylorColourScheme",["jalview.schemes.ResidueProperties"],function(){c$=B(jalview.schemes,"TaylorColourScheme",jalview.schemes.ResidueColourScheme);m(c$,function(){t(this,jalview.schemes.TaylorColourScheme,[jalview.schemes.ResidueProperties.aaIndex,jalview.schemes.ResidueProperties.taylor,
+0])})});p("jalview.schemes");q(["jalview.schemes.ScoreColourScheme"],"jalview.schemes.TurnColourScheme",["jalview.schemes.ResidueProperties","java.awt.Color"],function(){c$=B(jalview.schemes,"TurnColourScheme",jalview.schemes.ScoreColourScheme);m(c$,function(){t(this,jalview.schemes.TurnColourScheme,[jalview.schemes.ResidueProperties.aaIndex,jalview.schemes.ResidueProperties.turn,0.47,1.56])});e(c$,"makeColour",function(a){return new java.awt.Color(a,1-a,1-a)},"~N")});p("jalview.schemes");q(["jalview.schemes.ResidueColourScheme"],
+"jalview.schemes.UserColourScheme",["jalview.schemes.ColourSchemeProperty","$.ResidueProperties","java.awt.Color","java.util.StringTokenizer"],function(){c$=s(function(){this.schemeName=this.lowerCaseColours=null;r(this,arguments)},jalview.schemes,"UserColourScheme",jalview.schemes.ResidueColourScheme);m(c$,function(){t(this,jalview.schemes.UserColourScheme,[jalview.schemes.ResidueProperties.aaIndex])});m(c$,function(a){t(this,jalview.schemes.UserColourScheme,[jalview.schemes.ResidueProperties.aaIndex]);
+this.colors=a},"~A");e(c$,"applyTo",function(){var a=new jalview.schemes.UserColourScheme(this.colors);null!=this.lowerCaseColours&&(a.schemeName=String.instantialize(this.schemeName),a.lowerCaseColours=Array(this.lowerCaseColours.length),System.arraycopy(this.lowerCaseColours,0,a.lowerCaseColours,0,this.lowerCaseColours.length));return a},"jalview.datamodel.AnnotatedCollectionI,java.util.Map");m(c$,function(a){t(this,jalview.schemes.UserColourScheme,[jalview.schemes.ResidueProperties.aaIndex]);var b=
+this.getColourFromString(a);null==b&&(System.out.println("Unknown colour!! "+a),b=this.createColourFromName(a));this.colors=Array(24);for(var c=0;24>c;c++)this.colors[c]=b;this.schemeName=a},"~S");d(c$,"getColours",function(){return this.colors});d(c$,"getLowerCaseColours",function(){return this.lowerCaseColours});d(c$,"setName",function(a){this.schemeName=a},"~S");d(c$,"getName",function(){return this.schemeName});d(c$,"getColourFromString",function(a){a=a.trim();var b=null;try{var c=Integer.parseInt(a,
+16),b=new java.awt.Color(c)}catch(f){if(!y(f,NumberFormatException))throw f;}null==b&&(b=jalview.schemes.ColourSchemeProperty.getAWTColorFromName(a));if(null==b)try{var d=new java.util.StringTokenizer(a,","),e=Integer.parseInt(d.nextToken()),g=Integer.parseInt(d.nextToken()),h=Integer.parseInt(d.nextToken()),b=new java.awt.Color(e,g,h)}catch(j){if(!y(j,Exception))throw j;}return b},"~S");d(c$,"createColourFromName",function(a){var b,c;c=a.length;var f=0,d=F(c/3),e=15*Math.abs(a.hashCode()%10);b=Math.abs(a.substring(f,
+d).hashCode()+e)%210+20;f=d;d+=F(c/3);d>c&&(d=c);c=Math.abs(a.substring(f,d).hashCode()+e)%210+20;a=Math.abs(a.substring(d).hashCode()+e)%210+20;return new java.awt.Color(b,c,a)},"~S");d(c$,"parseAppletParameter",function(a){a=new java.util.StringTokenizer(a,";");var b,c=null,f,d;try{for(;a.hasMoreElements();){c=a.nextToken().trim();d=c.substring(0,c.indexOf("="));f=c.substring(c.indexOf("=")+1);for(b=new java.util.StringTokenizer(d," ,");b.hasMoreTokens();)if(c=b.nextToken(),-1!=jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt(0)]){var e=
+jalview.schemes.ResidueProperties.aaIndex[c.charCodeAt(0)];if(c.equalsIgnoreCase("lowerCase")){null==this.lowerCaseColours&&(this.lowerCaseColours=Array(23));for(var g=0;23>g;g++)null==this.lowerCaseColours[g]&&(this.lowerCaseColours[g]=this.getColourFromString(f))}else c.equals(c.toLowerCase())?(null==this.lowerCaseColours&&(this.lowerCaseColours=Array(23)),this.lowerCaseColours[e]=this.getColourFromString(f)):this.colors[e]=this.getColourFromString(f)}}}catch(h){if(y(h,Exception))System.out.println("Error parsing userDefinedColours:\n"+
+c+"\n"+h);else throw h;}},"~S");e(c$,"findColourSeq",function(a,b){var c;c=jalview.schemes.ResidueProperties.aaIndex[a.charCodeAt(0)];c=0==this.threshold||this.aboveThreshold(a,b)?null!=this.lowerCaseColours&&"a"<=a&&"z">=a?this.lowerCaseColours[c]:this.colors[c]:java.awt.Color.white;this.conservationColouring&&(c=this.applyConservation(c,b));return c},"~S,~N,jalview.datamodel.SequenceI");d(c$,"setLowerCaseColours",function(a){this.lowerCaseColours=a},"~A")});p("jalview.schemes");q(["jalview.schemes.ResidueColourScheme"],
+"jalview.schemes.ZappoColourScheme",["jalview.schemes.ResidueProperties"],function(){c$=B(jalview.schemes,"ZappoColourScheme",jalview.schemes.ResidueColourScheme);m(c$,function(){t(this,jalview.schemes.ZappoColourScheme,[jalview.schemes.ResidueProperties.aaIndex,jalview.schemes.ResidueProperties.zappo,0])})});p("jalview.structure");q(["java.util.ArrayList","$.HashMap","$.LinkedHashSet","$.Vector"],"jalview.structure.StructureSelectionManager","MCview.PDBfile jalview.analysis.AlignSeq jalview.commands.EditCommand $.OrderCommand jalview.datamodel.Mapping $.SearchResults jalview.io.AppletFormatAdapter jalview.structure.AtomSpec $.SecondaryStructureListener $.SequenceListener $.StructureListener $.StructureMapping $.VamsasListener jalview.util.MappingUtils $.MessageManager java.lang.Error $.NullPointerException $.StringBuilder java.util.Arrays $.Collections $.IdentityHashMap".split(" "),
+function(){c$=s(function(){this.mappings=null;this.addTempFacAnnot=this.secStructServices=this.processSecondaryStructure=!1;this.pdbFileNameId=this.pdbIdFileName=this.sel_listeners=this.commandListeners=this.seqMappingRefCounts=this.seqmappings=null;this.relaySeqMappings=!0;this.listeners=null;this.handlingVamsasMo=!1;this.lastmsg=0;this.view_listeners=null;r(this,arguments)},jalview.structure,"StructureSelectionManager");J(c$,function(){this.mappings=new java.util.ArrayList;this.seqmappings=new java.util.LinkedHashSet;
+this.seqMappingRefCounts=new java.util.HashMap;this.commandListeners=new java.util.ArrayList;this.sel_listeners=new java.util.ArrayList;this.pdbIdFileName=new java.util.HashMap;this.pdbFileNameId=new java.util.HashMap;this.listeners=new java.util.Vector;this.view_listeners=new java.util.Vector});d(c$,"isSecStructServices",function(){return this.secStructServices});d(c$,"setSecStructServices",function(a){this.secStructServices=a},"~B");d(c$,"isAddTempFacAnnot",function(){return this.addTempFacAnnot});
+d(c$,"setAddTempFacAnnot",function(a){this.addTempFacAnnot=a},"~B");d(c$,"isProcessSecondaryStructure",function(){return this.processSecondaryStructure});d(c$,"setProcessSecondaryStructure",function(a){this.processSecondaryStructure=a},"~B");d(c$,"reportMapping",function(){if(this.mappings.isEmpty())System.err.println("reportMapping: No PDB/Sequence mappings.");else{System.err.println("reportMapping: There are "+this.mappings.size()+" mappings.");for(var a=0,b,c=this.mappings.iterator();c.hasNext()&&
+((b=c.next())||1);)System.err.println("mapping "+a++ +" : "+b.pdbfile)}});d(c$,"registerPDBFile",function(a,b){this.pdbIdFileName.put(a,b);this.pdbFileNameId.put(b,a)},"~S,~S");d(c$,"findIdForPDBFile",function(a){return this.pdbFileNameId.get(a)},"~S");d(c$,"findFileForPDBId",function(a){return this.pdbIdFileName.get(a)},"~S");d(c$,"isPDBFileRegistered",function(a){return this.pdbFileNameId.containsKey(a)||this.pdbIdFileName.containsKey(a)},"~S");c$.getStructureSelectionManager=d(c$,"getStructureSelectionManager",
+function(a){if(null==a&&null==jalview.structure.StructureSelectionManager.nullProvider){if(null!=jalview.structure.StructureSelectionManager.instances)throw Error(jalview.util.MessageManager.getString("error.implementation_error_structure_selection_manager_null"),new NullPointerException(jalview.util.MessageManager.getString("exception.ssm_context_is_null")));jalview.structure.StructureSelectionManager.nullProvider=new jalview.structure.StructureSelectionManager;return jalview.structure.StructureSelectionManager.nullProvider}null==
+jalview.structure.StructureSelectionManager.instances&&(jalview.structure.StructureSelectionManager.instances=new java.util.IdentityHashMap);var b=jalview.structure.StructureSelectionManager.instances.get(a);null==b&&(b=null!=jalview.structure.StructureSelectionManager.nullProvider?jalview.structure.StructureSelectionManager.nullProvider:new jalview.structure.StructureSelectionManager,jalview.structure.StructureSelectionManager.instances.put(a,b));return b},"jalview.api.StructureSelectionManagerProvider");
+d(c$,"setRelaySeqMappings",function(a){this.relaySeqMappings=a},"~B");d(c$,"isRelaySeqMappingsEnabled",function(){return this.relaySeqMappings});d(c$,"addStructureViewerListener",function(a){this.listeners.contains(a)||this.listeners.addElement(a)},"~O");d(c$,"alreadyMappedToFile",function(a){for(var b,c=this.mappings.iterator();c.hasNext()&&((b=c.next())||1);)if(b.getPdbId().equals(a))return b.pdbfile;return null},"~S");d(c$,"setMapping",function(a,b,c,f){return this.setMapping(!0,a,b,c,f)},"~A,~A,~S,~S");
+d(c$,"setMapping",function(a,b,c,f,d){var e=this.processSecondaryStructure;if(this.isPDBFileRegistered(f))for(var g,h=0;h<b.length&&((g=b[h])||1);h++){for(var j=g;null!=j.getDatasetSequence();)j=j.getDatasetSequence();if(null!=j.getAnnotation())for(var n,m=0,j=j.getAnnotation();m<j.length&&((n=j[m])||1);m++)MCview.PDBfile.isCalcIdForFile(n,this.findIdForPDBFile(f))&&(e=!1)}g=null;try{g=new MCview.PDBfile(this.addTempFacAnnot,e,this.secStructServices,f,d),null!=g.id&&(0<g.id.trim().length&&jalview.io.AppletFormatAdapter.FILE.equals(d))&&
+this.registerPDBFile(g.id.trim(),f)}catch(u){if(y(u,Exception))return u.printStackTrace(),null;throw u;}for(var p,e=0;e<b.length;e++){var q=!0;n=b[e];null!=c&&null!=c[e]?(q=!1,p=c[e]):-1<n.getName().indexOf("|")?(p=n.getName().substring(n.getName().lastIndexOf("|")+1),1<p.length&&(p=0==p.trim().length?" ":"")):p="";for(var s=-10,j=null,m=" ",h=null,r=!0,t,v=g.chains.iterator();v.hasNext()&&((t=v.next())||1);)if(!(0<p.length&&!p.equals(t.id)&&!q)){var z=jalview.analysis.AlignSeq.doGlobalNWAlignment(n,
+t.sequence,t.isNa?"dna":"pep");if(r||z.maxscore>s||z.maxscore==s&&t.id.equals(p))r=!1,h=t,s=z.maxscore,j=z,m=t.id}if(null!=h){p=new StringBuilder(128);p.append(jalview.structure.StructureSelectionManager.NEWLINE).append("PDB Sequence is :").append(jalview.structure.StructureSelectionManager.NEWLINE).append("Sequence = ").append(h.sequence.getSequenceAsString());p.append(jalview.structure.StructureSelectionManager.NEWLINE).append("No of residues = ").append(h.residues.size()).append(jalview.structure.StructureSelectionManager.NEWLINE).append(jalview.structure.StructureSelectionManager.NEWLINE);
+q=(H("jalview.structure.StructureSelectionManager$1")?0:jalview.structure.StructureSelectionManager.$StructureSelectionManager$1$(),C(jalview.structure.StructureSelectionManager$1,this,T("mappingDetails",p),System.out));j.printAlignment(q);p.append(jalview.structure.StructureSelectionManager.NEWLINE).append("PDB start/end ");p.append(String.valueOf(j.seq2start)).append(" ");p.append(String.valueOf(j.seq2end));p.append(jalview.structure.StructureSelectionManager.NEWLINE).append("SEQ start/end ");p.append(String.valueOf(j.seq1start+
+n.getStart()-1)).append(" ");p.append(String.valueOf(j.seq1end+n.getEnd()-1));h.makeExactMapping(j,n);j=j.getMappingFromS1(!1);new jalview.datamodel.Mapping(j.getMap().getInverse());h.transferRESNUMFeatures(n,null);q=w(n.findPosition(n.getLength())+2,2,0);s=-1E4;r=0;do v=h.atoms.elementAt(r),s!=v.resNumber&&-1!=v.alignmentMapping&&(s=v.resNumber,q[v.alignmentMapping+1][0]=v.resNumber,q[v.alignmentMapping+1][1]=v.atomIndex),r++;while(r<h.atoms.size());d.equals(jalview.io.AppletFormatAdapter.PASTE)&&
+(f="INLINE"+g.id);n=new jalview.structure.StructureMapping(n,f,g.id,m,q,p.toString());a&&this.mappings.add(n);h.transferResidueAnnotation(n,j)}}return g},"~B,~A,~A,~S,~S");d(c$,"removeStructureViewerListener",function(a,b){this.listeners.removeElement(a);if(v(a,jalview.structure.SequenceListener))for(var c=0;c<this.listeners.size();c++)v(this.listeners.elementAt(c),jalview.structure.StructureListener)&&this.listeners.elementAt(c).releaseReferences(a);if(null!=b){for(var f=new java.util.ArrayList(java.util.Arrays.asList(b)),
+d,c=0;c<this.listeners.size();c++)if(v(this.listeners.elementAt(c),jalview.structure.StructureListener)){d=this.listeners.elementAt(c);var e,g=0;for(d=d.getPdbFile();g<d.length&&((e=d[g])||1);g++)f.remove(e)}if(0<f.size()){var c=new java.util.ArrayList,h;for(e=this.mappings.iterator();e.hasNext()&&((h=e.next())||1);)f.contains(h.pdbfile)||c.add(h);this.mappings=c}}},"~O,~A");d(c$,"mouseOverStructure",function(a,b,c){a=new jalview.structure.AtomSpec(c,b,a,0);a=java.util.Collections.singletonList(a);
+this.mouseOverStructure(a)},"~N,~S,~S");d(c$,"mouseOverStructure",function(a){if(null!=this.listeners){for(var b=!1,c=0;c<this.listeners.size();c++)v(this.listeners.elementAt(c),jalview.structure.SequenceListener)&&(b=!0);if(b){var b=new jalview.datamodel.SearchResults,f;for(a=a.iterator();a.hasNext()&&((f=a.next())||1);)for(var c=null,d=-1,e,g=this.mappings.iterator();g.hasNext()&&((e=g.next())||1);)if(e.pdbfile.equals(f.getPdbFile())&&e.pdbchain.equals(f.getChain())){var h=e.getSeqPos(f.getPdbResNum());
+if(d!=h&&c!==e.sequence){b.addResult(e.sequence,h,h);for(var d=h,c=e.sequence,j,n=this.seqmappings.iterator();n.hasNext()&&((j=n.next())||1);)j.markMappedRegion(e.sequence,h,b)}}var m;for(f=this.listeners.iterator();f.hasNext()&&((m=f.next())||1);)v(m,jalview.structure.SequenceListener)&&m.highlightSequence(b)}}},"java.util.List");d(c$,"mouseOverSequence",function(a,b,c,f){var d=this.handlingVamsasMo||!this.seqmappings.isEmpty(),e=null;-1==c&&(c=a.findPosition(b));for(var g=0;g<this.listeners.size();g++){var h=
+this.listeners.elementAt(g);h!==f&&(v(h,jalview.structure.StructureListener)?this.highlightStructure(h,a,c):v(h,jalview.structure.SequenceListener)?d&&h.getVamsasSource()!==f&&this.relaySeqMappings&&(null==e&&(e=jalview.util.MappingUtils.buildSearchResults(a,c,this.seqmappings)),this.handlingVamsasMo&&e.addResult(a,c,c),h.highlightSequence(e)):v(h,jalview.structure.VamsasListener)&&!this.handlingVamsasMo?h.mouseOverSequence(a,b,f):v(h,jalview.structure.SecondaryStructureListener)&&h.mouseOverSequence(a,
+b,c))}},"jalview.datamodel.SequenceI,~N,~N,jalview.structure.VamsasSource");d(c$,"highlightStructure",function(a,b,c){if(a.isListeningFor(b)){for(var f,d=new java.util.ArrayList,e,g=this.mappings.iterator();g.hasNext()&&((e=g.next())||1);)if(e.sequence===b||e.sequence===b.getDatasetSequence())f=e.getAtomNum(c),0<f&&d.add(new jalview.structure.AtomSpec(e.pdbfile,e.pdbchain,e.getPDBResNum(c),f));a.highlightAtoms(d)}},"jalview.structure.StructureListener,jalview.datamodel.SequenceI,~N");d(c$,"mouseOverVamsasSequence",
+function(a,b,c){this.handlingVamsasMo=!0;var f=a.hashCode()*(1+b);this.lastmsg!=f&&(this.lastmsg=f,this.mouseOverSequence(a,b,-1,c));this.handlingVamsasMo=!1},"jalview.datamodel.SequenceI,~N,jalview.structure.VamsasSource");d(c$,"colourSequenceFromStructure",function(){return null},"jalview.datamodel.SequenceI,~S");d(c$,"structureSelectionChanged",function(){});d(c$,"sequenceSelectionChanged",function(){});d(c$,"sequenceColoursChanged",function(a){for(var b,c=0;c<this.listeners.size();c++)v(this.listeners.elementAt(c),
+jalview.structure.StructureListener)&&(b=this.listeners.elementAt(c),b.updateColours(a))},"~O");d(c$,"getMapping",function(a){for(var b=new java.util.ArrayList,c,f=this.mappings.iterator();f.hasNext()&&((c=f.next())||1);)c.pdbfile.equals(a)&&b.add(c);return b.toArray(Array(b.size()))},"~S");d(c$,"printMappings",function(a,b){if(null==a||null==b||b.isEmpty())return"";for(var c=new StringBuilder(64),f,d=this.mappings.iterator();d.hasNext()&&((f=d.next())||1);)f.pdbfile.equals(a)&&b.contains(f.sequence)&&
+(c.append(f.mappingDetails),c.append(jalview.structure.StructureSelectionManager.NEWLINE),c.append("====================="),c.append(jalview.structure.StructureSelectionManager.NEWLINE));c.append(jalview.structure.StructureSelectionManager.NEWLINE);return c.toString()},"~S,java.util.List");d(c$,"removeMappings",function(a){if(null!=a){var b;for(a=a.iterator();a.hasNext()&&((b=a.next())||1);)this.removeMapping(b)}},"java.util.Set");d(c$,"removeMapping",function(a){if(null!=a&&this.seqmappings.contains(a)){var b=
+this.seqMappingRefCounts.get(a).intValue();b--;0<b?this.seqMappingRefCounts.put(a,new Integer(b)):(this.seqmappings.remove(a),this.seqMappingRefCounts.remove(a))}},"jalview.datamodel.AlignedCodonFrame");d(c$,"addMappings",function(a){if(null!=a){var b;for(a=a.iterator();a.hasNext()&&((b=a.next())||1);)this.addMapping(b)}},"java.util.Set");d(c$,"addMapping",function(a){null!=a&&(this.seqmappings.contains(a)?this.seqMappingRefCounts.put(a,new Integer(this.seqMappingRefCounts.get(a).intValue()+1)):(this.seqmappings.add(a),
+this.seqMappingRefCounts.put(a,new Integer(1))))},"jalview.datamodel.AlignedCodonFrame");d(c$,"addSelectionListener",function(a){this.sel_listeners.contains(a)||this.sel_listeners.add(a)},"jalview.structure.SelectionListener");d(c$,"removeSelectionListener",function(a){this.sel_listeners.contains(a)&&this.sel_listeners.remove(a)},"jalview.structure.SelectionListener");d(c$,"sendSelection",function(a,b,c){for(var f,d=this.sel_listeners.iterator();d.hasNext()&&((f=d.next())||1);)f!==c&&f.selection(a,
+b,c)},"jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");d(c$,"sendViewPosition",function(a,b,c,f,d){if(null!=this.view_listeners&&0<this.view_listeners.size())for(var e=this.view_listeners.elements();e.hasMoreElements();){var g=e.nextElement();g!==a&&g.viewPosition(b,c,f,d,a)}},"jalview.api.AlignmentViewPanel,~N,~N,~N,~N");c$.release=d(c$,"release",function(a){if(null!=jalview.structure.StructureSelectionManager.instances){var b=jalview.structure.StructureSelectionManager.instances.get(a);
+if(null!=b){jalview.structure.StructureSelectionManager.instances.remove(a);try{b.finalize()}catch(c){}}}},"jalview.api.StructureSelectionManagerProvider");d(c$,"registerPDBEntry",function(a){null!=a.getFile()&&0<a.getFile().trim().length&&this.registerPDBFile(a.getId(),a.getFile())},"jalview.datamodel.PDBEntry");d(c$,"addCommandListener",function(a){this.commandListeners.contains(a)||this.commandListeners.add(a)},"jalview.structure.CommandListener");d(c$,"hasCommandListener",function(a){return this.commandListeners.contains(a)},
+"jalview.structure.CommandListener");d(c$,"removeCommandListener",function(a){return this.commandListeners.remove(a)},"jalview.structure.CommandListener");d(c$,"commandPerformed",function(a,b,c){for(var f,d=this.commandListeners.iterator();d.hasNext()&&((f=d.next())||1);)f.mirrorCommand(a,b,this,c)},"jalview.commands.CommandI,~B,jalview.structure.VamsasSource");d(c$,"mapCommand",function(a,b,c,f){return v(a,jalview.commands.EditCommand)?jalview.util.MappingUtils.mapEditCommand(a,b,c,f,this.seqmappings):
+v(a,jalview.commands.OrderCommand)?jalview.util.MappingUtils.mapOrderCommand(a,b,c,this.seqmappings):null},"jalview.commands.CommandI,~B,jalview.datamodel.AlignmentI,~S");c$.$StructureSelectionManager$1$=function(){A(self.c$);c$=L(jalview.structure,"StructureSelectionManager$1",java.io.PrintStream);d(c$,"print",function(a){this.f$.mappingDetails.append(a)},"~S");d(c$,"println",function(){this.f$.mappingDetails.append(jalview.structure.StructureSelectionManager.NEWLINE)});c$=z()};c$.NEWLINE=c$.prototype.NEWLINE=
+System.lineSeparator();G(c$,"instances",null,"nullProvider",null)});p("MCview");q(["jalview.io.AlignFile"],"MCview.PDBfile","MCview.Atom $.PDBChain jalview.analysis.AlignSeq jalview.datamodel.Alignment $.AlignmentI $.PDBEntry jalview.io.FileParse jalview.util.MessageManager java.awt.Color java.io.IOException java.util.ArrayList $.Hashtable $.Vector".split(" "),function(){c$=s(function(){this.id=this.chains=null;this.visibleChainAnnotation=!1;this.$predictSecondaryStructure=!0;this.externalSecondaryStructure=
+!1;r(this,arguments)},MCview,"PDBfile",jalview.io.AlignFile);m(c$,function(a,b,c){t(this,MCview.PDBfile);this.visibleChainAnnotation=a;this.$predictSecondaryStructure=b;this.externalSecondaryStructure=c},"~B,~B,~B");m(c$,function(a,b,c,f,d){t(this,MCview.PDBfile,[!1,f,d]);this.visibleChainAnnotation=a;this.$predictSecondaryStructure=b;this.externalSecondaryStructure=c;this.doParse()},"~B,~B,~B,~S,~S");m(c$,function(a,b,c,f){t(this,MCview.PDBfile,[!1,f]);this.visibleChainAnnotation=a;this.$predictSecondaryStructure=
+b;this.externalSecondaryStructure=c;this.doParse()},"~B,~B,~B,jalview.io.FileParse");e(c$,"print",function(){return null});e(c$,"parse",function(){this.id=this.safeName(this.getDataName());this.chains=new java.util.Vector;var a=new java.util.ArrayList,b=new java.util.ArrayList,c,f=null,d=!1,e=!1,g="",h=null;try{for(;null!=(f=this.nextLine());)if(0==f.indexOf("HEADER")&&62<f.length){var j;j=67<f.length?f.substring(62,67).trim():f.substring(62).trim();0<j.length&&(this.id=j)}else{f.indexOf("SEQRES");
+0==f.indexOf("MODEL")&&(d=!0);0==f.indexOf("TER")&&(e=!0);if(d&&0==f.indexOf("ENDMDL"))break;if(0==f.indexOf("ATOM")||0==f.indexOf("HETATM")&&!e){e=!1;h=f.substring(12,15).trim();if(!h.equals("CA")&&!h.equals("P"))continue;var n=new MCview.Atom(f);c=this.findChain(n.chain);if(null!=c){if(n.resNumIns.trim().equals(g))continue}else c=new MCview.PDBChain(this.id,n.chain),this.chains.addElement(c);c.atoms.addElement(n);g=n.resNumIns.trim()}this.index++}this.makeResidueList();this.makeCaBondList();null==
+this.id&&(this.id=this.inFile.getName());for(var m,u=this.chains.iterator();u.hasNext()&&((m=u.next())||1);){var p=this.postProcessChain(m);MCview.PDBfile.isRNA(p)?a.add(p):b.add(p)}this.$predictSecondaryStructure&&this.predictSecondaryStructure(a,b)}catch(q){if(y(q,OutOfMemoryError))throw System.out.println("OUT OF MEMORY LOADING PDB FILE"),new java.io.IOException(jalview.util.MessageManager.getString("exception.outofmemory_loading_pdb_file"));if(y(q,NumberFormatException))null!=f&&(System.err.println("Couldn't read number from line:"),
+System.err.println(f));else throw q;}this.markCalcIds()});d(c$,"predictSecondaryStructure",function(a,b){if(this.externalSecondaryStructure&&0<a.size())try{this.processPdbFileWithAnnotate3d(a)}catch(c){if(y(c,Exception))System.err.println("Exceptions when dealing with RNA in pdb file"),c.printStackTrace();else throw c;}if(0<b.size())try{this.processPdbFileWithJmol(b)}catch(f){if(y(f,Exception))System.err.println("Exceptions from Jmol when processing data in pdb file"),f.printStackTrace();else throw f;
+}},"java.util.List,java.util.List");d(c$,"postProcessChain",function(a){var b=a.sequence;b.setName(this.id+"|"+b.getName());var c=new jalview.datamodel.PDBEntry;c.setId(this.id);c.setType(jalview.datamodel.PDBEntry.Type.PDB);c.setProperty(new java.util.Hashtable);null!=a.id&&c.setChainCode(String.valueOf(a.id));null!=this.inFile?c.setFile(this.inFile.getAbsolutePath()):c.setFile(this.getDataName());b.addPDBId(c);a=b.deriveSequence();this.seqs.addElement(a);b=a.getAnnotation();if(null!=b&&this.visibleChainAnnotation)for(c=
+0;c<b.length;c++)b[c].visible=this.visibleChainAnnotation,this.annotations.addElement(b[c]);return a},"MCview.PDBChain");c$.isCalcIdHandled=d(c$,"isCalcIdHandled",function(a){return null!=a&&MCview.PDBfile.CALC_ID_PREFIX.equals(a)},"~S");c$.isCalcIdForFile=d(c$,"isCalcIdForFile",function(a,b){return null!=a.getCalcId()&&MCview.PDBfile.CALC_ID_PREFIX.equals(a.getCalcId())&&b.equals(a.getProperty("PDBID"))},"jalview.datamodel.AlignmentAnnotation,~S");c$.relocateCalcId=d(c$,"relocateCalcId",function(a,
+b){var c=MCview.PDBfile.CALC_ID_PREFIX.length,f=a.indexOf(MCview.PDBfile.CALC_ID_PREFIX,c),c=a.substring(c,f-1);return MCview.PDBfile.CALC_ID_PREFIX+b.get(c)+":"+a.substring(f)},"~S,java.util.Hashtable");d(c$,"markCalcIds",function(){for(var a,b=this.seqs.iterator();b.hasNext()&&((a=b.next())||1);)if(null!=a.getAnnotation())for(var c,f=0,d=a.getAnnotation();f<d.length&&((c=d[f])||1);f++){var e=c.getCalcId();null==e&&(e="");c.setCalcId(MCview.PDBfile.CALC_ID_PREFIX);c.setProperty("PDBID",this.id);
+c.setProperty("oldCalcId",e)}});d(c$,"processPdbFileWithJmol",function(a){try{var b=W._4Name("jalview.ext.jmol.PDBFileWithJmol");if(null!=b){var c=b.getConstructor(E(-1,[jalview.io.FileParse])),f=E(-1,[new jalview.io.FileParse(this.getDataName(),this.type)]),d=c.newInstance(f),e=new jalview.datamodel.Alignment(b.getMethod("getSeqsAsArray",E(-1,[])).invoke(d,[]));b.getMethod("addAnnotations",E(-1,[jalview.datamodel.AlignmentI])).invoke(d,[e]);for(var g,h=e.getSequences().iterator();h.hasNext()&&((g=
+h.next())||1);)null!=g.getDatasetSequence()?g.getDatasetSequence().getPDBId().clear():g.getPDBId().clear();this.replaceAndUpdateChains(a,e,"pep",!1)}}catch(j){if(!y(j,ClassNotFoundException))throw j;}},"java.util.List");d(c$,"replaceAndUpdateChains",function(a,b,c){a=jalview.analysis.AlignSeq.replaceMatchingSeqsWith(this.seqs,this.annotations,a,b,c,!1);var f;for(b=this.chains.iterator();b.hasNext()&&((f=b.next())||1);){c=0;for(var d,e=a.get(0).iterator();e.hasNext()&&((d=e.next())||1);)if(c++,d===
+f.sequence||d.getDatasetSequence()===f.sequence){c=-c;break}0>c&&(c=-c-1,f.shadow=a.get(1).get(c),f.shadowMap=a.get(2).get(c).getMappingFromS1(!1))}},"java.util.List,jalview.datamodel.AlignmentI,~S,~B");d(c$,"processPdbFileWithAnnotate3d",function(a){try{var b=W._4Name("jalview.ws.jws1.Annotate3D");if(null!=b){for(var c=b.getConstructor(E(-1,[])).newInstance(E(-1,[])),f=b.getMethod("getRNAMLFor",E(-1,[jalview.io.FileParse])).invoke(c,E(-1,[new jalview.io.FileParse(this.getDataName(),this.type)])),
+d,e=f.getSequences().iterator();e.hasNext()&&((d=e.next())||1);)null!=d.getDatasetSequence()?null!=d.getDatasetSequence().getPDBId()&&d.getDatasetSequence().getPDBId().clear():null!=d.getPDBId()&&d.getPDBId().clear();this.replaceAndUpdateChains(a,f,"dna",!1)}}catch(g){if(!y(g,ClassNotFoundException))throw g;}},"java.util.List");d(c$,"safeName",function(a){for(var b=0;-1<(b=a.indexOf("/"))&&b<a.length;)a=a.substring(b+1);return a},"~S");d(c$,"makeResidueList",function(){for(var a=0;a<this.chains.size();a++)this.chains.elementAt(a).makeResidueList(this.visibleChainAnnotation)});
+d(c$,"makeCaBondList",function(){for(var a=0;a<this.chains.size();a++)this.chains.elementAt(a).makeCaBondList()});d(c$,"findChain",function(a){for(var b=0;b<this.chains.size();b++)if(this.chains.elementAt(b).id.equals(a))return this.chains.elementAt(b);return null},"~S");d(c$,"setChargeColours",function(){for(var a=0;a<this.chains.size();a++)this.chains.elementAt(a).setChargeColours()});d(c$,"setColours",function(a){for(var b=0;b<this.chains.size();b++)this.chains.elementAt(b).setChainColours(a)},
+"jalview.schemes.ColourSchemeI");d(c$,"setChainColours",function(){for(var a=0;a<this.chains.size();a++)this.chains.elementAt(a).setChainColours(java.awt.Color.getHSBColor(1/a,0.4,1))});c$.isRNA=d(c$,"isRNA",function(a){var b,c=0;for(a=a.getSequence();c<a.length&&((b=a[c])||1);c++)if("A"!=b&&"C"!=b&&"G"!=b&&"U"!=b)return!1;return!0},"jalview.datamodel.SequenceI");G(c$,"CALC_ID_PREFIX","JalviewPDB")});p("jalview.io");q(["jalview.io.FileParse"],"jalview.io.AlignFile","jalview.datamodel.Sequence jalview.util.MessageManager java.io.IOException java.lang.Error java.util.ArrayList $.Hashtable $.Vector".split(" "),
+function(){c$=s(function(){this.maxLength=this.noSeqs=0;this.properties=this.seqGroups=this.annotations=this.seqs=null;this.end=this.start=0;this.jvSuffix=!0;this.parseCalled=!1;this.newickStrings=null;r(this,arguments)},jalview.io,"AlignFile",jalview.io.FileParse);m(c$,function(){t(this,jalview.io.AlignFile,[]);this.initData()});m(c$,function(a,b){this.construct(!0,a,b)},"~S,~S");m(c$,function(a,b,c){t(this,jalview.io.AlignFile,[b,c]);this.initData();a&&this.doParse()},"~B,~S,~S");m(c$,function(a){this.construct(!0,
+a)},"jalview.io.FileParse");m(c$,function(a,b){t(this,jalview.io.AlignFile,[b]);this.initData();a&&this.doParse()},"~B,jalview.io.FileParse");d(c$,"doParse",function(){if(this.parseCalled)throw new java.io.IOException("Implementation error: Parser called twice for same data.\nNeed to call initData() again before parsing can be reattempted.");this.parseCalled=!0;this.parse();for(var a=0,b=this.seqs.size();a<b;a++)this.seqs.get(a).setIndex(a)});d(c$,"getSeqs",function(){return this.seqs});d(c$,"getSeqGroups",
+function(){return this.seqGroups});d(c$,"getSeqsAsArray",function(){for(var a=Array(this.seqs.size()),b=0;b<this.seqs.size();b++)a[b]=this.seqs.elementAt(b);return a});d(c$,"addAnnotations",function(a){this.addProperties(a);for(var b=0;b<this.annotations.size();b++){var c=this.annotations.elementAt(b);c.validateRangeAndDisplay();a.addAnnotation(c)}},"jalview.datamodel.AlignmentI");d(c$,"addSeqGroups",function(a){this.seqGroups=a.getGroups()},"jalview.datamodel.AlignmentI");d(c$,"addProperties",function(a){if(null!=
+this.properties&&0<this.properties.size())for(var b=this.properties.keys(),c=this.properties.elements();b.hasMoreElements();)a.setProperty(b.nextElement(),c.nextElement())},"jalview.datamodel.AlignmentI");d(c$,"setAlignmentProperty",function(a,b){if(null==a)throw Error(jalview.util.MessageManager.getString("error.implementation_error_cannot_have_null_alignment"));null!=b&&(null==this.properties&&(this.properties=new java.util.Hashtable),this.properties.put(a,b))},"~O,~O");d(c$,"getAlignmentProperty",
+function(a){return null!=this.properties&&null!=a?this.properties.get(a):null},"~O");d(c$,"initData",function(){this.seqs=new java.util.Vector;this.annotations=new java.util.Vector;this.seqGroups=new java.util.ArrayList;this.parseCalled=!1});d(c$,"setSeqs",function(a){this.seqs=new java.util.Vector;for(var b=0;b<a.length;b++)this.seqs.addElement(a[b])},"~A");d(c$,"addJVSuffix",function(a){this.jvSuffix=a},"~B");d(c$,"parseId",function(a){var b=null;a=a.trim();var c=a.indexOf(" ");-1<c?(b=new jalview.datamodel.Sequence(a.substring(0,
+c),""),b.setDescription(a.substring(c+1))):b=new jalview.datamodel.Sequence(a,"");return b},"~S");d(c$,"printId",function(a){return a.getDisplayId(this.jvSuffix)},"jalview.datamodel.SequenceI");d(c$,"addNewickTree",function(a,b){null==this.newickStrings&&(this.newickStrings=new java.util.Vector);this.newickStrings.addElement(E(-1,[a,b]))},"~S,~S");d(c$,"getTreeCount",function(){return null==this.newickStrings?0:this.newickStrings.size()});d(c$,"addGroups",function(a){for(var b,c=this.getSeqGroups().iterator();c.hasNext()&&
+((b=c.next())||1);)a.addGroup(b)},"jalview.datamodel.AlignmentI")});p("jalview.io");q(null,"jalview.io.FileParse","jalview.io.AppletFormatAdapter jalview.util.MessageManager java.io.BufferedReader $.IOException $.InputStreamReader $.StringReader java.lang.Error java.net.URL java.util.zip.GZIPInputStream".split(" "),function(){c$=s(function(){this.dataName="unknown source";this.exportSettings=this.viewport=this.inFile=null;this.index=1;this.suffixSeparator="#";this.dataIn=this.type=this.suffix=this.newline=
+null;this.errormessage="UNITIALISED SOURCE";this.error=!0;this.warningMessage=null;this.READAHEAD_LIMIT=2048;r(this,arguments)},jalview.io,"FileParse");J(c$,function(){this.newline=System.getProperty("line.separator")});d(c$,"setNewlineString",function(a){this.newline=a},"~S");d(c$,"getNewlineString",function(){return this.newline});m(c$,function(){});m(c$,function(a){if(null==a)throw Error(jalview.util.MessageManager.getString("error.implementation_error_null_fileparse"));a!==this&&(this.index=++a.index,
+this.inFile=a.inFile,this.suffixSeparator=a.suffixSeparator,this.suffix=a.suffix,this.errormessage=a.errormessage,this.error=!1,this.type=a.type,this.dataIn=a.dataIn,null!=this.dataIn&&this.mark(),this.dataName=a.dataName)},"jalview.io.FileParse");d(c$,"tryAsGzipSource",function(a){a=new java.io.BufferedReader(new java.io.InputStreamReader(new java.util.zip.GZIPInputStream(a)));a.mark(2048);a.read();a.reset();return a},"java.io.InputStream");d(c$,"checkURLSource",function(a){this.errormessage="URL NOT FOUND";
+var b=new java.net.URL(a),c=null;if(a.toLowerCase().endsWith(".gz"))try{var f=b.openStream();this.dataIn=this.tryAsGzipSource(f);this.dataName=a;return!1}catch(d){if(y(d,Exception))c=d;else throw d;}try{this.dataIn=new java.io.BufferedReader(new java.io.InputStreamReader(b.openStream()))}catch(e){if(y(e,java.io.IOException)&&null!=c)throw new java.io.IOException(jalview.util.MessageManager.getString("exception.failed_to_resolve_gzip_stream"),c);throw e;}this.dataName=a;return!1},"~S");d(c$,"extractSuffix",
+function(a){var b=a.lastIndexOf(this.suffixSeparator);return-1<b&&b<a.length-1?(this.suffix=a.substring(b+1),a.substring(0,b)):null},"~S");m(c$,function(a,b){this.type=b;this.error=!1;if(!b.equals(jalview.io.AppletFormatAdapter.FILE))if(b.equals(jalview.io.AppletFormatAdapter.URL))try{try{this.checkURLSource(a),"#"==this.suffixSeparator&&this.extractSuffix(a)}catch(c){if(y(c,java.io.IOException)){var f=this.extractSuffix(a);if(null==f)throw c;try{this.checkURLSource(f)}catch(d){if(y(d,java.io.IOException))throw this.errormessage=
+"BAD URL WITH OR WITHOUT SUFFIX",c;throw d;}}else throw c;}}catch(e){if(y(e,Exception))this.errormessage="CANNOT ACCESS DATA AT URL '"+a+"' ("+e.getMessage()+")",this.error=!0;else throw e;}else if(b.equals(jalview.io.AppletFormatAdapter.PASTE))this.errormessage="PASTE INACCESSIBLE!",this.dataIn=new java.io.BufferedReader(new java.io.StringReader(a)),this.dataName="Paste";else if(b.equals(jalview.io.AppletFormatAdapter.CLASSLOADER)){this.errormessage="RESOURCE CANNOT BE LOCATED";var g=this.getClass().getResourceAsStream("/"+
+a);null==g&&(f=this.extractSuffix(a),null!=f&&(g=this.getClass().getResourceAsStream("/"+f)));null!=g?(this.dataIn=new java.io.BufferedReader(new java.io.InputStreamReader(g)),this.dataName=a):this.error=!0}else this.errormessage="PROBABLE IMPLEMENTATION ERROR : Datasource Type given as '"+(null!=b?b:"null")+"'",this.error=!0;if(null==this.dataIn||this.error)throw new java.io.IOException(jalview.util.MessageManager.formatMessage("exception.failed_to_read_data_from_source",E(-1,[this.errormessage])));
+this.error=!1;this.dataIn.mark(2048)},"~S,~S");d(c$,"mark",function(){if(null!=this.dataIn)this.dataIn.mark(2048);else throw new java.io.IOException(jalview.util.MessageManager.getString("exception.no_init_source_stream"));});d(c$,"nextLine",function(){if(!this.error)return this.dataIn.readLine();throw new java.io.IOException(jalview.util.MessageManager.formatMessage("exception.invalid_source_stream",E(-1,[this.errormessage])));});d(c$,"isExporting",function(){return!this.error&&null==this.dataIn});
+d(c$,"isValid",function(){return!this.error});d(c$,"close",function(){this.errormessage="EXCEPTION ON CLOSE";this.error=!0;this.dataIn.close();this.dataIn=null;this.errormessage="SOURCE IS CLOSED"});d(c$,"reset",function(){if(null!=this.dataIn&&!this.error)this.dataIn.reset();else throw new java.io.IOException(jalview.util.MessageManager.getString("error.implementation_error_reset_called_for_invalid_source"));});d(c$,"hasWarningMessage",function(){return null!=this.warningMessage&&0<this.warningMessage.length});
+d(c$,"getWarningMessage",function(){return this.warningMessage});d(c$,"getInFile",function(){return null!=this.inFile?this.inFile.getAbsolutePath()+" ("+this.index+")":"From Paste + ("+this.index+")"});d(c$,"getDataName",function(){return this.dataName});d(c$,"setDataName",function(a){this.dataName=a},"~S");d(c$,"getReader",function(){return null!=this.dataIn?this.dataIn:null});d(c$,"getViewport",function(){return this.viewport});d(c$,"setViewport",function(a){this.viewport=a},"jalview.api.AlignViewportI");
+d(c$,"getExportSettings",function(){return this.exportSettings});d(c$,"setExportSettings",function(a){this.exportSettings=a},"jalview.api.AlignExportSettingI");d(c$,"configureForView",function(a){null!=a&&this.setViewport(a.getAlignViewport())},"jalview.api.AlignmentViewPanel")});p("jalview.io");q(null,"jalview.io.AppletFormatAdapter","MCview.PDBfile jalview.datamodel.Alignment jalview.io.FileParse $.IdentifyFile jalview.jsdev.GenericFileAdapter jalview.util.MessageManager java.io.IOException java.lang.Exception $.StringBuffer".split(" "),
+function(){c$=s(function(){this.viewpanel=null;this.serviceSecondaryStruct=this.localSecondaryStruct=this.annotFromStructure=!1;this.exportSettings=this.newline=this.inFile=this.alignFile=null;r(this,arguments)},jalview.io,"AppletFormatAdapter");J(c$,function(){this.newline=System.getProperty("line.separator")});m(c$,function(){});m(c$,function(a){this.viewpanel=a},"jalview.api.AlignmentViewPanel");m(c$,function(a,b){this.viewpanel=a;this.exportSettings=b},"jalview.api.AlignmentViewPanel,jalview.api.AlignExportSettingI");
+c$.prettyPrint=d(c$,"prettyPrint",function(a){for(var b=new StringBuffer,c=0,f=a.length-1;c<f;c++)b.append(a[c]),b.append(", ");b.append(" and "+a[a.length-1]+".");return b.toString()},"~A");d(c$,"setNewlineString",function(a){this.newline=a},"~S");d(c$,"getNewlineString",function(){return this.newline});c$.isValidFormat=d(c$,"isValidFormat",function(a){return jalview.io.AppletFormatAdapter.isValidFormat(a,!1)},"~S");c$.isValidFormat=d(c$,"isValidFormat",function(a,b){for(var c,f=0,d=b?jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS:
+jalview.io.AppletFormatAdapter.READABLE_FORMATS;f<d.length&&((c=d[f])||1);f++)if(c.equalsIgnoreCase(a))return!0;return!1},"~S,~B");d(c$,"readFile",function(a,b,c){this.inFile=a;try{return c.equals("FASTA")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("FastaFile",[a,b]):c.equals("MSF")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("MSFfile",[a,b]):c.equals("PileUp")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("PileUpfile",[a,b]):c.equals("CLUSTAL")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("ClustalFile",
+[a,b]):c.equals("BLC")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("BLCFile",[a,b]):c.equals("PIR")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("PIRFile",[a,b]):c.equals("PFAM")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("PfamFile",[a,b]):c.equals("JnetFile")?(this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("JPredFile",[a,b]),this.alignFile.removeNonSequences()):c.equals("PDB")?this.alignFile=new MCview.PDBfile(this.annotFromStructure,this.localSecondaryStruct,
+this.serviceSecondaryStruct,a,b):c.equals("STH")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("StockholmFile",[a,b]):c.equals("SimpleBLAST")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("SimpleBlastFile",[a,b]):c.equals("PHYLIP")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("PhylipFile",[a,b]):c.equals("JSON")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("JSONFile",[a,b]):c.equals("HTML")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("HtmlFile",
+[a,b]):c.equals("RNAML")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("RnamlFile",[a,b]):c.equals("GFF v2 or v3")&&(this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("Gff3File",[a,b])),this.buildAlignmentFrom(this.alignFile)}catch(f){if(y(f,Exception)){f.printStackTrace();System.err.println("Failed to read alignment using the '"+c+"' reader.\n"+f);if(null!=f.getMessage()&&f.getMessage().startsWith(jalview.io.AppletFormatAdapter.INVALID_CHARACTERS))throw new java.io.IOException(f.getMessage());
+if(b.equalsIgnoreCase("Paste"))try{return this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("FastaFile",[">UNKNOWN\n"+a,"Paste"]),this.buildAlignmentFrom(this.alignFile)}catch(d){if(y(d,Exception)){if(d.toString().startsWith(jalview.io.AppletFormatAdapter.INVALID_CHARACTERS))throw new java.io.IOException(f.getMessage());d.printStackTrace()}else throw d;}throw new java.io.IOException(jalview.io.AppletFormatAdapter.SUPPORTED_FORMATS);}throw f;}},"~S,~S,~S");d(c$,"readFromFile",function(a,b){this.inFile=
+a.getInFile();var c=a.type;try{return b.equals("FASTA")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("FastaFile",[a]):b.equals("MSF")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("MSFfile",[a]):b.equals("PileUp")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("PileUpfile",[a]):b.equals("CLUSTAL")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("ClustalFile",[a]):b.equals("BLC")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("BLCFile",[a]):b.equals("PIR")?
+this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("PIRFile",[a]):b.equals("PFAM")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("PfamFile",[a]):b.equals("JnetFile")?(this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("JPredFile",[a]),this.alignFile.removeNonSequences()):b.equals("PDB")?this.alignFile=new MCview.PDBfile(this.annotFromStructure,this.localSecondaryStruct,this.serviceSecondaryStruct,a):b.equals("STH")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("StockholmFile",
+[a]):b.equals("RNAML")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("RnamlFile",[a]):b.equals("SimpleBLAST")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("SimpleBlastFile",[a]):b.equals("PHYLIP")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("PhylipFile",[a]):b.equals("GFF v2 or v3")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("Gff3File",[this.inFile,c]):b.equals("JSON")?this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("JSONFile",[a]):b.equals("HTML")&&
+(this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("HtmlFile",[a])),this.buildAlignmentFrom(this.alignFile)}catch(f){if(y(f,Exception)){f.printStackTrace();System.err.println("Failed to read alignment using the '"+b+"' reader.\n"+f);if(null!=f.getMessage()&&f.getMessage().startsWith(jalview.io.AppletFormatAdapter.INVALID_CHARACTERS))throw new java.io.IOException(f.getMessage());if(c.equalsIgnoreCase("Paste"))try{return this.alignFile=jalview.jsdev.GenericFileAdapter.getFile("FastaFile",[">UNKNOWN\n"+
+this.inFile,"Paste"]),this.buildAlignmentFrom(this.alignFile)}catch(d){if(y(d,Exception)){if(d.toString().startsWith(jalview.io.AppletFormatAdapter.INVALID_CHARACTERS))throw new java.io.IOException(f.getMessage());d.printStackTrace()}else throw d;}throw new java.io.IOException(jalview.io.AppletFormatAdapter.SUPPORTED_FORMATS);}throw f;}},"jalview.io.FileParse,~S");d(c$,"buildAlignmentFrom",function(){var a=new jalview.datamodel.Alignment(this.alignFile.getSeqsAsArray());this.alignFile.addAnnotations(a);
+this.alignFile.addGroups(a);return a},"jalview.io.AlignFile");d(c$,"formatSequences",function(a,b,c,f){var d=c.getAlignViewport().getAlignmentView(f,!1).getVisibleAlignment(c.getAlignViewport().getGapCharacter());f=c.getAlignViewport().getVisibleAlignmentAnnotation(f);if(null!=f){var e;for(f=f.iterator();f.hasNext()&&((e=f.next())||1);)d.addAnnotation(e)}this.viewpanel=c;return this.formatSequences(a,d,b)},"~S,~B,jalview.api.AlignmentViewPanel,~B");d(c$,"formatSequences",function(a,b,c){try{var f=
+null;if(a.equalsIgnoreCase("FASTA"))f=jalview.jsdev.GenericFileAdapter.getFile("FastaFile",[]);else if(a.equalsIgnoreCase("MSF"))f=jalview.jsdev.GenericFileAdapter.getFile("MSFfile",[]);else if(a.equalsIgnoreCase("PileUp"))f=jalview.jsdev.GenericFileAdapter.getFile("PileUpfile",[]);else if(a.equalsIgnoreCase("CLUSTAL"))f=jalview.jsdev.GenericFileAdapter.getFile("ClustalFile",[]);else if(a.equalsIgnoreCase("BLC"))f=jalview.jsdev.GenericFileAdapter.getFile("BLCFile",[]);else if(a.equalsIgnoreCase("PIR"))f=
+jalview.jsdev.GenericFileAdapter.getFile("PIRFile",[]);else if(a.equalsIgnoreCase("PFAM"))f=jalview.jsdev.GenericFileAdapter.getFile("PfamFile",[]);else if(a.equalsIgnoreCase("STH"))f=jalview.jsdev.GenericFileAdapter.getFile("StockholmFile",[b]);else if(a.equalsIgnoreCase("AMSA"))f=jalview.jsdev.GenericFileAdapter.getFile("AMSAFile",[b]);else if(a.equalsIgnoreCase("PHYLIP"))f=jalview.jsdev.GenericFileAdapter.getFile("PhylipFile",[]);else if(a.equalsIgnoreCase("JSON"))f=jalview.jsdev.GenericFileAdapter.getFile("JSONFile",
+[]);else if(a.equalsIgnoreCase("RNAML"))f=jalview.jsdev.GenericFileAdapter.getFile("RnamlFile",[]);else throw new Exception(jalview.util.MessageManager.getString("error.implementation_error_unknown_file_format_string"));f.setNewlineString(this.newline);f.addJVSuffix(c);f.setExportSettings(this.exportSettings);f.configureForView(this.viewpanel);null==this.viewpanel||null==this.viewpanel.getAlignment()||this.viewpanel.getAlignment()!==b?f.setSeqs(b.getSequencesArray()):f.setSeqs(this.viewpanel.getAlignment().getSequencesArray());
+var d=f.print();f.hasWarningMessage()&&System.err.println("Warning raised when writing as "+a+" : "+f.getWarningMessage());return d}catch(e){if(y(e,Exception))System.err.println("Failed to write alignment as a '"+a+"' file\n"),e.printStackTrace();else throw e;}return null},"~S,jalview.datamodel.AlignmentI,~B");c$.checkProtocol=d(c$,"checkProtocol",function(a){var b=jalview.io.AppletFormatAdapter.FILE;a=a.toLowerCase().trim();if(0==a.indexOf("http:")||0==a.indexOf("https:")||0==a.indexOf("file:"))b=
+jalview.io.AppletFormatAdapter.URL;return b},"~S");c$.resolveProtocol=d(c$,"resolveProtocol",function(a,b){return jalview.io.AppletFormatAdapter.resolveProtocol(a,b,!1)},"~S,~S");c$.resolveProtocol=d(c$,"resolveProtocol",function(a,b,c){var f=null;c&&System.out.println("resolving datasource started with:\n>>file\n"+a+">>endfile");try{var f=!1,d=System.getSecurityManager().getClass().getResourceAsStream("/"+a);null!=d&&(f=!0,d.close());c&&System.err.println("Resource '"+a+"' was "+(f?"":"not")+" located by classloader.")}catch(e){if(y(e,
+Exception))System.err.println("Exception checking resources: "+a+" "+e);else throw e;}f=-1<a.indexOf("://")?jalview.io.AppletFormatAdapter.URL:jalview.io.AppletFormatAdapter.FILE;d=null;try{c&&System.out.println("Trying to get contents of resource as "+f+":"),d=new jalview.io.FileParse(a,f),d.isValid()?c&&System.out.println("Successful."):d=null}catch(g){if(y(g,Exception))c&&System.err.println("Exception when accessing content: "+g),d=null;else throw g;}if(null==d){c&&System.out.println("Accessing as paste.");
+f=jalview.io.AppletFormatAdapter.PASTE;d=null;try{d=new jalview.io.FileParse(a,f),d.isValid()||(d=null)}catch(h){if(y(h,Exception))System.err.println("Failed to access content as paste!"),h.printStackTrace(),d=null;else throw h;}}if(null==d)return null;if(null==b||0==b.length)return f;try{var j=(new jalview.io.IdentifyFile).Identify(a,f);if(null==j)return c&&System.out.println("Format not identified. Inaccessible file."),null;c&&System.out.println("Format identified as "+j+"and expected as "+b);if(j.equals(b))return c&&
+System.out.println("Protocol identified as "+f),f;c&&System.out.println("File deemed not accessible via "+f);d.close()}catch(n){if(y(n,Exception))c&&(System.err.println("File deemed not accessible via "+f),n.printStackTrace());else throw n;}return null},"~S,~S,~B");d(c$,"getAlignFile",function(){return this.alignFile});d(c$,"setAlignFile",function(a){this.alignFile=a},"jalview.io.AlignFile");G(c$,"FILE","File","URL","URL","PASTE","Paste","CLASSLOADER","ClassLoader");c$.READABLE_FORMATS=c$.prototype.READABLE_FORMATS=
+E(-1,"BLC;CLUSTAL;FASTA;MSF;PileUp;PIR;PFAM;STH;PDB;JnetFile;RNAML;PHYLIP;JSON;GFF v2 or v3;HTML".split(";"));c$.READABLE_EXTENSIONS=c$.prototype.READABLE_EXTENSIONS=E(-1,"fa, fasta, mfa, fastq;aln;pfam;msf;pir;blc;amsa;sto,stk;xml,rnaml;phy;json;.gff2,gff3;jar,jvp;html".split(";"));c$.READABLE_FNAMES=c$.prototype.READABLE_FNAMES=E(-1,"Fasta;Clustal;PFAM;MSF;PIR;BLC;AMSA;Stockholm;RNAML;PHYLIP;JSON;GFF v2 or v3;Jalview;HTML".split(";"));c$.WRITEABLE_FORMATS=c$.prototype.WRITEABLE_FORMATS=E(-1,"BLC CLUSTAL FASTA MSF PileUp PIR PFAM AMSA STH PHYLIP JSON".split(" "));
+c$.WRITABLE_EXTENSIONS=c$.prototype.WRITABLE_EXTENSIONS=E(-1,"fa, fasta, mfa, fastq;aln;pfam;msf;pir;blc;amsa;sto,stk;phy;json;jvp".split(";"));c$.WRITABLE_FNAMES=c$.prototype.WRITABLE_FNAMES=E(-1,"Fasta Clustal PFAM MSF PIR BLC AMSA STH PHYLIP JSON Jalview".split(" "));G(c$,"INVALID_CHARACTERS","Contains invalid characters");c$.SUPPORTED_FORMATS=c$.prototype.SUPPORTED_FORMATS="Formats currently supported are\n"+jalview.io.AppletFormatAdapter.prettyPrint(jalview.io.AppletFormatAdapter.READABLE_FORMATS)});
+p("jalview.io");q(null,"jalview.io.IdentifyFile",["jalview.io.FileParse"],function(){c$=B(jalview.io,"IdentifyFile");d(c$,"Identify",function(a,b){var c="UNIDENTIFIED FILE PARSING ERROR",f=null;try{if(f=new jalview.io.FileParse(a,b),f.isValid())return this.Identify(f)}catch(d){if(y(d,Exception))System.err.println("Error whilst identifying"),d.printStackTrace(System.err),c=d.getMessage();else throw d;}return null!=f?f.errormessage:c},"~S,~S");d(c$,"Identify",function(a){return this.Identify(a,!0)},
+"jalview.io.FileParse");d(c$,"Identify",function(a,b){var c="PFAM",f,d=0,e=!1,g=!1;try{for(b||a.mark();null!=(f=a.nextLine());){d+=f.trim().length;if(!e)for(var h=0;!g&&h<f.length;h++)var j=f.charAt(h),g=32>j.charCodeAt(0)&&"\t"!=j&&"\n"!=j&&"\r"!=j&&5!=j.charCodeAt(0)&&27!=j.charCodeAt(0);if(g){if(null!=a.inFile){var n=a.inFile.getName();if(-1<n.lastIndexOf(".jar")||-1<n.lastIndexOf(".zip"))c="Jalview"}if(!e&&f.startsWith("PK")){c="Jalview";break}}f=f.toUpperCase();if(f.startsWith("##GFF-VERSION")){c=
+"GFF v2 or v3";break}if(-1<f.indexOf("# STOCKHOLM")){c="STH";break}if(f.matches("<HTML(\"[^\"]*\"|'[^']*'|[^'\">])*>")){c="HTML";break}if(f.matches("<RNAML (\"[^\"]*\"|'[^']*'|[^'\">])*>")){c="RNAML";break}if(-1<f.indexOf('{"')){c="JSON";break}if(!(1>f.length||0==f.indexOf("#"))){if(-1<f.indexOf("PILEUP")){c="PileUp";break}if(0==f.indexOf("//")||-1<f.indexOf("!!")&&f.indexOf("!!")<f.indexOf("_MULTIPLE_ALIGNMENT ")){c="MSF";break}else if(-1<f.indexOf("CLUSTAL")){c="CLUSTAL";break}else if(-1<f.indexOf(">")){e=
+g=!1;if(-1<f.indexOf(">P1;")||-1<f.indexOf(">DL;"))g=!0,c="PIR";f=a.nextLine();if(-1<f.indexOf(">"))c="BLC";else{var m=a.nextLine(),u=a.nextLine(),p;g&&(e=null!=m&&-1<m.indexOf("*")||null!=u&&-1<u.indexOf("*"));if(null!=u&&-1<(p=f.indexOf("*")))c=0==p&&p==u.indexOf("*")?"BLC":"FASTA";else if(c="FASTA",!g)break}if(g){f=null;if(!e){do{try{f=a.nextLine()}catch(q){if(!y(q,java.io.IOException))throw q;}null!=f&&-1<f.indexOf("*")&&(e=!0)}while(null!=f&&!e)}if(e){c="PIR";break}else c="FASTA"}break}else if(0==
+f.indexOf("HEADER")||0==f.indexOf("ATOM")){c="PDB";break}else if(f.matches("\\s*\\d+\\s+\\d+\\s*")){c="PHYLIP";break}else if(!e&&"*"!=f.charAt(0)&&" "!=f.charAt(0)&&f.indexOf(":")<f.indexOf(",")){c="JnetFile";break}}e=!0}b?a.close():a.reset()}catch(s){if(y(s,Exception))return System.err.println("File Identification failed!\n"+s),a.errormessage;throw s;}return 0==d?(System.err.println("File Identification failed! - Empty file was read."),"EMPTY DATA FILE"):c},"jalview.io.FileParse,~B");G(c$,"GFF3File",
+"GFF v2 or v3")});p("jalview.jsdev");q(["jalview.io.AlignFile"],"jalview.jsdev.GenericFileAdapter",["jalview.datamodel.AlignmentI","jalview.io.FileParse","java.io.BufferedReader","$.InputStreamReader","java.net.URL"],function(){c$=B(jalview.jsdev,"GenericFileAdapter",jalview.io.AlignFile);c$.getFile=d(c$,"getFile",function(a,b){var c=null;try{c=W._4Name("jalview.io."+a)}catch(f){if(y(f,ClassNotFoundException))return System.err.println("did not find file jalview.io."+a),null;throw f;}var d,e=null;
+try{switch(b.length){case 0:return c.newInstance();case 1:d=v(b[0],jalview.io.FileParse)?c.getConstructor([jalview.io.FileParse]):c.getConstructor([jalview.datamodel.AlignmentI]);break;case 2:d=c.getConstructor([String,String]);break;default:return null}return d.newInstance(b)}catch(g){if(y(g,InstantiationException))e=g;else if(y(g,IllegalAccessException))e=g;else if(y(g,NoSuchMethodException))e=g;else if(y(g,SecurityException))e=g;else if(y(g,IllegalArgumentException))e=g;else if(y(g,java.lang.reflect.InvocationTargetException))e=
+g;else throw g;}null!=e&&(System.err.println("Error in GenericFileAdapter: "+e),alert(e));return null},"~S,~A");c$.isJS=d(c$,"isJS",function(){return!0});c$.getReader=d(c$,"getReader",function(a,b){if(!b&&!jalview.jsdev.GenericFileAdapter.isJS())return new java.io.BufferedReader(new java.io.FileReader(a));0>a.indexOf("//")&&(a="file://"+a);return new java.io.BufferedReader(new java.io.InputStreamReader((new java.net.URL(a)).openStream()))},"~S,~B");G(c$,"TCOFFEE_SCORE","TCoffeeScore","Phylip_FILE",
+1,"Phylip_FILE_EXT","phy","Phylip_FILE_DESC","PHYLIP","JSON_FILE",2,"JSON_FILE_EXT","json","JSON_FILE_DESC","JSON","Html_FILE",3,"Html_FILE_EXT","html","Html_FILE_DESC","HTML")});p("java.util.zip");q(["java.util.zip.InflaterInputStream","$.CRC32"],"java.util.zip.GZIPInputStream",["java.io.EOFException","$.IOException","java.util.zip.CheckedInputStream","$.Inflater","$.ZipException"],function(){c$=s(function(){this.crc=null;this.$closed=this.eos=!1;this.tmpbuf=null;r(this,arguments)},java.util.zip,
+"GZIPInputStream",java.util.zip.InflaterInputStream);J(c$,function(){this.crc=new java.util.zip.CRC32;this.tmpbuf=S(128,0)});d(c$,"ensureOpen",function(){if(this.$closed)throw new java.io.IOException("Stream closed");});m(c$,function(a,b){t(this,java.util.zip.GZIPInputStream,[a,(new java.util.zip.Inflater).init(0,!0),b]);this.readHeader(a)},"java.io.InputStream,~N");e(c$,"read",function(a,b,c){this.ensureOpen();if(this.eos)return-1;var f=this.readInf(a,b,c);if(-1==f)if(this.readTrailer())this.eos=
+!0;else return this.read(a,b,c);else this.crc.update(a,b,f);return f},"~A,~N,~N");d(c$,"close",function(){this.$closed||(K(this,java.util.zip.GZIPInputStream,"close",[]),this.$closed=this.eos=!0)});d(c$,"readHeader",function(a){a=(new java.util.zip.CheckedInputStream(a)).set(this.crc);this.crc.reset();if(35615!=this.readUShort(a))throw new java.util.zip.ZipException("Not in GZIP format");if(8!=this.readUByte(a))throw new java.util.zip.ZipException("Unsupported compression method");var b=this.readUByte(a);
+this.skipBytes(a,6);var c=10;if(4==(b&4)){var f=this.readUShort(a);this.skipBytes(a,f);c+=f+2}if(8==(b&8)){do c++;while(0!=this.readUByte(a))}if(16==(b&16)){do c++;while(0!=this.readUByte(a))}if(2==(b&2)){b=this.crc.getValue()&65535;if(this.readUShort(a)!=b)throw new java.util.zip.ZipException("Corrupt GZIP header");c+=2}this.crc.reset();return c},"java.io.InputStream");d(c$,"readTrailer",function(){return!0});d(c$,"readUShort",function(a){var b=this.readUByte(a);return this.readUByte(a)<<8|b},"java.io.InputStream");
+d(c$,"readUByte",function(a){a=a.readByteAsInt();if(-1==a)throw new java.io.EOFException;if(-1>a||255<a)throw new java.io.IOException(this.$in.getClass().getName()+".read() returned value out of range -1..255: "+a);return a},"java.io.InputStream");d(c$,"skipBytes",function(a,b){for(;0<b;){var c=a.read(this.tmpbuf,0,b<this.tmpbuf.length?b:this.tmpbuf.length);if(-1==c)throw new java.io.EOFException;b-=c}},"java.io.InputStream,~N");G(c$,"GZIP_MAGIC",35615,"FHCRC",2,"FEXTRA",4,"FNAME",8,"FCOMMENT",16)});
+p("java.util.zip");q(["JU.InflaterInputStream"],"java.util.zip.InflaterInputStream",null,function(){c$=s(function(){this.inf=null;r(this,arguments)},java.util.zip,"InflaterInputStream",JU.InflaterInputStream);m(c$,function(a,b,c){t(this,java.util.zip.InflaterInputStream,[a,b,c,!0]);this.inf=b},"java.io.InputStream,java.util.zip.Inflater,~N")});p("JU");q(["java.io.FilterInputStream"],"JU.InflaterInputStream",["java.io.EOFException","$.IOException","java.lang.IllegalArgumentException","$.IndexOutOfBoundsException",
+"$.NullPointerException"],function(){c$=s(function(){this.buf=this.inflater=null;this.len=0;this.eof=this.closed=!1;this.close_in=!0;this.myinflater=!1;this.b=this.byte1=null;r(this,arguments)},JU,"InflaterInputStream",java.io.FilterInputStream);J(c$,function(){this.byte1=S(1,0);this.b=S(512,0)});m(c$,function(a,b,c,f){t(this,JU.InflaterInputStream,[a]);this.inflater=b;this.buf=S(c,0);this.close_in=f},"java.io.InputStream,JU.Inflater,~N,~B");e(c$,"readByteAsInt",function(){if(this.closed)throw new java.io.IOException("Stream closed");
+return-1==this.read(this.byte1,0,1)?-1:this.byte1[0]&255});e(c$,"read",function(a,b,c){return this.readInf(a,b,c)},"~A,~N,~N");d(c$,"readInf",function(a,b,c){if(this.closed)throw new java.io.IOException("Stream closed");if(null==a)throw new NullPointerException;if(0>b||0>c||c>a.length-b)throw new IndexOutOfBoundsException;if(0==c)return 0;if(this.eof)return-1;var f=0;for(this.inflater.setOutput(a,b,c);!this.eof;){0==this.inflater.avail_in&&this.fill();a=this.inflater.inflate(0);f+=this.inflater.next_out_index-
+b;b=this.inflater.next_out_index;switch(a){case -3:throw new java.io.IOException(this.inflater.msg);case 1:case 2:if(this.eof=!0,2==a)return-1}if(0==this.inflater.avail_out)break}return f},"~A,~N,~N");e(c$,"available",function(){if(this.closed)throw new java.io.IOException("Stream closed");return this.eof?0:1});e(c$,"skip",function(a){if(0>a)throw new IllegalArgumentException("negative skip length");if(this.closed)throw new java.io.IOException("Stream closed");a=Math.min(a,2147483647);for(var b=0;b<
+a;){var c=a-b;c>this.b.length&&(c=this.b.length);c=this.read(this.b,0,c);if(-1==c){this.eof=!0;break}b+=c}return b},"~N");e(c$,"close",function(){this.closed||(this.myinflater&&this.inflater.end(),this.close_in&&this.$in.close(),this.closed=!0)});d(c$,"fill",function(){if(this.closed)throw new java.io.IOException("Stream closed");this.len=this.$in.read(this.buf,0,this.buf.length);if(-1==this.len)if(0==this.inflater.istate.wrap&&!this.inflater.finished())this.buf[0]=0,this.len=1;else{if(-1!=this.inflater.istate.was)throw new java.io.IOException("footer is not found");
+throw new java.io.EOFException("Unexpected end of ZLIB input stream");}this.inflater.setInput(this.buf,0,this.len,!0)});e(c$,"markSupported",function(){return!1});e(c$,"mark",function(){},"~N");e(c$,"reset",function(){throw new java.io.IOException("mark/reset not supported");});d(c$,"getTotalIn",function(){return this.inflater.getTotalIn()});d(c$,"getTotalOut",function(){return this.inflater.getTotalOut()});d(c$,"getAvailIn",function(){if(0>=this.inflater.avail_in)return null;var a=S(this.inflater.avail_in,
+0);System.arraycopy(this.inflater.next_in,this.inflater.next_in_index,a,0,this.inflater.avail_in);return a});d(c$,"readHeader",function(){var a="".getBytes();this.inflater.setInput(a,0,0,!1);this.inflater.setOutput(a,0,0);a=this.inflater.inflate(0);if(this.inflater.istate.inParsingHeader()){var b=S(1,0);do{if(0>=this.$in.read(b,0,1))throw new java.io.IOException("no input");this.inflater.setInput(b,0,b.length,!1);a=this.inflater.inflate(0);if(0!=a)throw new java.io.IOException(this.inflater.msg);
+}while(this.inflater.istate.inParsingHeader())}});d(c$,"getInflater",function(){return this.inflater});G(c$,"DEFAULT_BUFSIZE",512)});p("java.util.zip");q(["JU.CRC32"],"java.util.zip.CRC32",null,function(){c$=B(java.util.zip,"CRC32",JU.CRC32)});p("JU");q(["JU.Checksum"],"JU.CRC32",null,function(){c$=s(function(){this.crc=0;this.b1=null;r(this,arguments)},JU,"CRC32",null,JU.Checksum);J(c$,function(){this.b1=S(1,0)});e(c$,"update",function(a,b,c){for(var f=~this.crc;0<=--c;)f=JU.CRC32.crc_table[(f^a[b++])&
+255]^f>>>8;this.crc=~f},"~A,~N,~N");e(c$,"reset",function(){this.crc=0});e(c$,"resetLong",function(a){this.crc=a&4294967295},"~N");e(c$,"getValue",function(){return this.crc&4294967295});e(c$,"updateByteAsInt",function(a){this.b1[0]=a;this.update(this.b1,0,1)},"~N");G(c$,"crc_table",w(-1,[0,1996959894,-301047508,-1727442502,124634137,1886057615,-379345611,-1637575261,249268274,2044508324,-522852066,-1747789432,162941995,2125561021,-407360249,-1866523247,498536548,1789927666,-205950648,-2067906082,
+450548861,1843258603,-187386543,-2083289657,325883990,1684777152,-43845254,-1973040660,335633487,1661365465,-99664541,-1928851979,997073096,1281953886,-715111964,-1570279054,1006888145,1258607687,-770865667,-1526024853,901097722,1119000684,-608450090,-1396901568,853044451,1172266101,-589951537,-1412350631,651767980,1373503546,-925412992,-1076862698,565507253,1454621731,-809855591,-1195530993,671266974,1594198024,-972236366,-1324619484,795835527,1483230225,-1050600021,-1234817731,1994146192,31158534,
+-1731059524,-271249366,1907459465,112637215,-1614814043,-390540237,2013776290,251722036,-1777751922,-519137256,2137656763,141376813,-1855689577,-429695999,1802195444,476864866,-2056965928,-228458418,1812370925,453092731,-2113342271,-183516073,1706088902,314042704,-1950435094,-54949764,1658658271,366619977,-1932296973,-69972891,1303535960,984961486,-1547960204,-725929758,1256170817,1037604311,-1529756563,-740887301,1131014506,879679996,-1385723834,-631195440,1141124467,855842277,-1442165665,-586318647,
+1342533948,654459306,-1106571248,-921952122,1466479909,544179635,-1184443383,-832445281,1591671054,702138776,-1328506846,-942167884,1504918807,783551873,-1212326853,-1061524307,-306674912,-1698712650,62317068,1957810842,-355121351,-1647151185,81470997,1943803523,-480048366,-1805370492,225274430,2053790376,-468791541,-1828061283,167816743,2097651377,-267414716,-2029476910,503444072,1762050814,-144550051,-2140837941,426522225,1852507879,-19653770,-1982649376,282753626,1742555852,-105259153,-1900089351,
+397917763,1622183637,-690576408,-1580100738,953729732,1340076626,-776247311,-1497606297,1068828381,1219638859,-670225446,-1358292148,906185462,1090812512,-547295293,-1469587627,829329135,1181335161,-882789492,-1134132454,628085408,1382605366,-871598187,-1156888829,570562233,1426400815,-977650754,-1296233688,733239954,1555261956,-1026031705,-1244606671,752459403,1541320221,-1687895376,-328994266,1969922972,40735498,-1677130071,-351390145,1913087877,83908371,-1782625662,-491226604,2075208622,213261112,
+-1831694693,-438977011,2094854071,198958881,-2032938284,-237706686,1759359992,534414190,-2118248755,-155638181,1873836001,414664567,-2012718362,-15766928,1711684554,285281116,-1889165569,-127750551,1634467795,376229701,-1609899400,-686959890,1308918612,956543938,-1486412191,-799009033,1231636301,1047427035,-1362007478,-640263460,1088359270,936918E3,-1447252397,-558129467,1202900863,817233897,-1111625188,-893730166,1404277552,615818150,-1160759803,-841546093,1423857449,601450431,-1285129682,-1000256840,
+1567103746,711928724,-1274298825,-1022587231,1510334235,755167117]))});p("JU");M(JU,"Checksum");p("java.util.zip");q(["java.io.FilterInputStream"],"java.util.zip.CheckedInputStream",null,function(){c$=s(function(){this.cksum=null;r(this,arguments)},java.util.zip,"CheckedInputStream",java.io.FilterInputStream);d(c$,"set",function(a){this.$in=this.$in;this.cksum=a;return this},"JU.Checksum");e(c$,"readByteAsInt",function(){var a=this.$in.readByteAsInt();-1!=a&&this.cksum.updateByteAsInt(a);return a});
+e(c$,"read",function(a,b,c){c=this.$in.read(a,b,c);-1!=c&&this.cksum.update(a,b,c);return c},"~A,~N,~N");e(c$,"skip",function(a){for(var b=S(512,0),c=0;c<a;){var f=a-c,f=this.read(b,0,f<b.length?f:b.length);if(-1==f)break;c+=f}return c},"~N");d(c$,"getChecksum",function(){return this.cksum})});p("java.util.zip");q(["JU.Inflater"],"java.util.zip.Inflater",null,function(){c$=B(java.util.zip,"Inflater",JU.Inflater);d(c$,"initialize",function(a){return this.init(0,a)},"~B")});p("JU");q(["JU.ZStream"],
+"JU.Inflater",["JU.Inflate"],function(){c$=B(JU,"Inflater",JU.ZStream);d(c$,"init",function(a,b){this.setAdler32();0==a&&(a=15);this.istate=new JU.Inflate(this);this.istate.inflateInit(b?-a:a);return this},"~N,~B");e(c$,"inflate",function(a){return null==this.istate?-2:this.istate.inflate(a)},"~N");e(c$,"end",function(){return null==this.istate?-2:this.istate.inflateEnd()});d(c$,"sync",function(){return null==this.istate?-2:this.istate.inflateSync()});d(c$,"syncPoint",function(){return null==this.istate?
+-2:this.istate.inflateSyncPoint()});d(c$,"setDictionary",function(a,b){return null==this.istate?-2:this.istate.inflateSetDictionary(a,b)},"~A,~N");e(c$,"finished",function(){return 12==this.istate.mode});d(c$,"reset",function(){this.avail_in=0;null!=this.istate&&this.istate.reset()});G(c$,"MAX_WBITS",15,"DEF_WBITS",15,"$Z_STREAM_ERROR",-2)});p("JU");q(null,"JU.ZStream",["JU.Adler32"],function(){c$=s(function(){this.next_in=null;this.total_in=this.avail_in=this.next_in_index=0;this.next_out=null;this.total_out=
+this.avail_out=this.next_out_index=0;this.istate=this.dstate=this.msg=null;this.data_type=0;this.checksum=null;r(this,arguments)},JU,"ZStream");d(c$,"setAdler32",function(){this.checksum=new JU.Adler32});d(c$,"inflate",function(a){return null==this.istate?-2:this.istate.inflate(a)},"~N");d(c$,"deflate",function(a){return null==this.dstate?-2:this.dstate.deflate(a)},"~N");d(c$,"flush_pending",function(){var a=this.dstate.pending;a>this.avail_out&&(a=this.avail_out);0!=a&&(System.arraycopy(this.dstate.pending_buf,
+this.dstate.pending_out,this.next_out,this.next_out_index,a),this.next_out_index+=a,this.dstate.pending_out+=a,this.total_out+=a,this.avail_out-=a,this.dstate.pending-=a,0==this.dstate.pending&&(this.dstate.pending_out=0))});d(c$,"read_buf",function(a,b,c){var f=this.avail_in;f>c&&(f=c);if(0==f)return 0;this.avail_in-=f;0!=this.dstate.wrap&&this.checksum.update(this.next_in,this.next_in_index,f);System.arraycopy(this.next_in,this.next_in_index,a,b,f);this.next_in_index+=f;this.total_in+=f;return f},
+"~A,~N,~N");d(c$,"getAdler",function(){return this.checksum.getValue()});d(c$,"free",function(){this.msg=this.next_out=this.next_in=null});d(c$,"setOutput",function(a,b,c){this.next_out=a;this.next_out_index=b;this.avail_out=c},"~A,~N,~N");d(c$,"setInput",function(a,b,c,f){0>=c&&f&&null!=this.next_in||(0<this.avail_in&&f?(f=S(this.avail_in+c,0),System.arraycopy(this.next_in,this.next_in_index,f,0,this.avail_in),System.arraycopy(a,b,f,this.avail_in,c),this.next_in=f,this.next_in_index=0,this.avail_in+=
+c):(this.next_in=a,this.next_in_index=b,this.avail_in=c))},"~A,~N,~N,~B");d(c$,"getAvailIn",function(){return this.avail_in});d(c$,"getTotalOut",function(){return this.total_out});d(c$,"getTotalIn",function(){return this.total_in});c$.getBytes=d(c$,"getBytes",function(a){for(var b=[],c=0;c<a.length;c++){var f=a.charCodeAt(c);127>=f?b.push(f):2047>=f?(b.push(192|f>>6&31),b.push(128|f&63)):65535>=f?(b.push(224|f>>12&15),b.push(128|f>>6&63),b.push(128|f&63)):b.push(63)}return Int32Array!=Array?new Int32Array(b):
+b},"~S");G(c$,"Z_STREAM_ERROR",-2)});p("JU");q(["JU.Checksum"],"JU.Adler32",null,function(){c$=s(function(){this.s1=1;this.s2=0;this.b1=null;r(this,arguments)},JU,"Adler32",null,JU.Checksum);J(c$,function(){this.b1=S(1,0)});e(c$,"resetLong",function(a){this.s1=a&65535;this.s2=a>>16&65535},"~N");e(c$,"reset",function(){this.s1=1;this.s2=0});e(c$,"getValue",function(){return this.s2<<16|this.s1});e(c$,"update",function(a,b,c){if(1==c)this.s1+=a[b++]&255,this.s2+=this.s1;else{for(var f=F(c/5552),d=c%
+5552;0<f--;){var e=5552;for(c-=e;0<e--;)this.s1+=a[b++]&255,this.s2+=this.s1;this.s1%=65521;this.s2%=65521}for(e=d;0<e--;)this.s1+=a[b++]&255,this.s2+=this.s1}this.s1%=65521;this.s2%=65521},"~A,~N,~N");e(c$,"updateByteAsInt",function(a){this.b1[0]=a;this.update(this.b1,0,1)},"~N");G(c$,"BASE",65521,"NMAX",5552)});p("JU");q(["java.lang.Exception"],"JU.Inflate",["JU.Adler32","$.CRC32","$.GZIPHeader","$.InfBlocks","java.io.ByteArrayOutputStream"],function(){c$=s(function(){this.method=this.mode=0;this.was=
+-1;this.wbits=this.wrap=this.marker=this.need=0;this.z=this.blocks=null;this.flags=0;this.need_bytes=-1;this.gheader=this.crcbuf=null;H("JU.Inflate.Return")||JU.Inflate.$Inflate$Return$();this.tmp_string=null;r(this,arguments)},JU,"Inflate");J(c$,function(){this.crcbuf=S(4,0)});d(c$,"reset",function(){this.inflateReset()});d(c$,"inflateReset",function(){if(null==this.z)return-2;this.z.total_in=this.z.total_out=0;this.z.msg=null;this.mode=14;this.need_bytes=-1;this.blocks.reset();return 0});d(c$,"inflateEnd",
+function(){null!=this.blocks&&this.blocks.free();return 0});m(c$,function(a){this.z=a},"JU.ZStream");d(c$,"inflateInit",function(a){this.blocks=this.z.msg=null;this.wrap=0;0>a?a=-a:(this.wrap=(a>>4)+1,48>a&&(a&=15));if(8>a||15<a)return this.inflateEnd(),-2;null!=this.blocks&&this.wbits!=a&&(this.blocks.free(),this.blocks=null);this.wbits=a;this.blocks=new JU.InfBlocks(this.z,1<<a);this.inflateReset();return 0},"~N");d(c$,"inflate",function(a){var b,c;if(null==this.z||null==this.z.next_in)return 4==
+a&&14==this.mode?0:-2;a=4==a?-5:0;for(b=-5;;)switch(this.mode){case 14:if(0==this.wrap){this.mode=7;break}try{b=this.readBytes(2,b,a)}catch(f){if(y(f,JU.Inflate.Return))return f.r;throw f;}if(0!=(this.wrap&2)&&35615==this.need){this.z.checksum=new JU.CRC32;this.checksum(2,this.need);null==this.gheader&&(this.gheader=new JU.GZIPHeader);this.mode=23;break}this.flags=0;this.method=this.need&255;c=this.need>>8&255;if(0==(this.wrap&1)||0!=((this.method<<8)+c)%31){this.mode=13;this.z.msg="incorrect header check";
+break}if(8!=(this.method&15)){this.mode=13;this.z.msg="unknown compression method";break}if((this.method>>4)+8>this.wbits){this.mode=13;this.z.msg="invalid window size";break}this.z.checksum=new JU.Adler32;if(0==(c&32)){this.mode=7;break}this.mode=2;case 2:if(0==this.z.avail_in)return b;b=a;this.z.avail_in--;this.z.total_in++;this.need=(this.z.next_in[this.z.next_in_index++]&255)<<24&4278190080;this.mode=3;case 3:if(0==this.z.avail_in)return b;b=a;this.z.avail_in--;this.z.total_in++;this.need+=(this.z.next_in[this.z.next_in_index++]&
+255)<<16&16711680;this.mode=4;case 4:if(0==this.z.avail_in)return b;b=a;this.z.avail_in--;this.z.total_in++;this.need+=(this.z.next_in[this.z.next_in_index++]&255)<<8&65280;this.mode=5;case 5:if(0==this.z.avail_in)return b;this.z.avail_in--;this.z.total_in++;this.need+=this.z.next_in[this.z.next_in_index++]&255;this.z.checksum.resetLong(this.need);this.mode=6;return 2;case 6:return this.mode=13,this.z.msg="need dictionary",this.marker=0,-2;case 7:b=this.blocks.proc(b);if(-3==b){this.mode=13;this.marker=
+0;break}0==b&&(b=a);if(1!=b)return b;b=a;this.was=this.z.checksum.getValue();this.blocks.reset();if(0==this.wrap){this.mode=12;break}this.mode=8;case 8:if(0==this.z.avail_in)return b;b=a;this.z.avail_in--;this.z.total_in++;this.need=(this.z.next_in[this.z.next_in_index++]&255)<<24&4278190080;this.mode=9;case 9:if(0==this.z.avail_in)return b;b=a;this.z.avail_in--;this.z.total_in++;this.need+=(this.z.next_in[this.z.next_in_index++]&255)<<16&16711680;this.mode=10;case 10:if(0==this.z.avail_in)return b;
+b=a;this.z.avail_in--;this.z.total_in++;this.need+=(this.z.next_in[this.z.next_in_index++]&255)<<8&65280;this.mode=11;case 11:if(0==this.z.avail_in)return b;b=a;this.z.avail_in--;this.z.total_in++;this.need+=this.z.next_in[this.z.next_in_index++]&255;0!=this.flags&&(this.need=((this.need&4278190080)>>24|(this.need&16711680)>>8|(this.need&65280)<<8|(this.need&65535)<<24)&4294967295);this.was!=this.need?this.z.msg="incorrect data check":0!=this.flags&&null!=this.gheader&&(this.gheader.crc=this.need);
+this.mode=15;case 15:if(0!=this.wrap&&0!=this.flags){try{b=this.readBytes(4,b,a)}catch(d){if(y(d,JU.Inflate.Return))return d.r;throw d;}if(null!=this.z.msg&&this.z.msg.equals("incorrect data check")){this.mode=13;this.marker=5;break}if(this.need!=(this.z.total_out&4294967295)){this.z.msg="incorrect length check";this.mode=13;break}this.z.msg=null}else if(null!=this.z.msg&&this.z.msg.equals("incorrect data check")){this.mode=13;this.marker=5;break}this.mode=12;case 12:return 1;case 13:return-3;case 23:try{b=
+this.readBytes(2,b,a)}catch(e){if(y(e,JU.Inflate.Return))return e.r;throw e;}this.flags=this.need&65535;if(8!=(this.flags&255)){this.z.msg="unknown compression method";this.mode=13;break}if(0!=(this.flags&57344)){this.z.msg="unknown header flags set";this.mode=13;break}0!=(this.flags&512)&&this.checksum(2,this.need);this.mode=16;case 16:try{b=this.readBytes(4,b,a)}catch(g){if(y(g,JU.Inflate.Return))return g.r;throw g;}null!=this.gheader&&(this.gheader.time=this.need);0!=(this.flags&512)&&this.checksum(4,
+this.need);this.mode=17;case 17:try{b=this.readBytes(2,b,a)}catch(h){if(y(h,JU.Inflate.Return))return h.r;throw h;}null!=this.gheader&&(this.gheader.xflags=this.need&255,this.gheader.os=this.need>>8&255);0!=(this.flags&512)&&this.checksum(2,this.need);this.mode=18;case 18:if(0!=(this.flags&1024)){try{b=this.readBytes(2,b,a)}catch(j){if(y(j,JU.Inflate.Return))return j.r;throw j;}null!=this.gheader&&(this.gheader.extra=S(this.need&65535,0));0!=(this.flags&512)&&this.checksum(2,this.need)}else null!=
+this.gheader&&(this.gheader.extra=null);this.mode=19;case 19:if(0!=(this.flags&1024))try{if(b=this.readBytes(b,a),null!=this.gheader){var n=this.tmp_string.toByteArray();this.tmp_string=null;if(n.length==this.gheader.extra.length)System.arraycopy(n,0,this.gheader.extra,0,n.length);else{this.z.msg="bad extra field length";this.mode=13;break}}}catch(m){if(y(m,JU.Inflate.Return))return m.r;throw m;}else null!=this.gheader&&(this.gheader.extra=null);this.mode=20;case 20:if(0!=(this.flags&2048))try{b=
+this.readString(b,a),null!=this.gheader&&(this.gheader.name=this.tmp_string.toByteArray()),this.tmp_string=null}catch(u){if(y(u,JU.Inflate.Return))return u.r;throw u;}else null!=this.gheader&&(this.gheader.name=null);this.mode=21;case 21:if(0!=(this.flags&4096))try{b=this.readString(b,a),null!=this.gheader&&(this.gheader.comment=this.tmp_string.toByteArray()),this.tmp_string=null}catch(p){if(y(p,JU.Inflate.Return))return p.r;throw p;}else null!=this.gheader&&(this.gheader.comment=null);this.mode=
+22;case 22:if(0!=(this.flags&512)){try{b=this.readBytes(2,b,a)}catch(q){if(y(q,JU.Inflate.Return))return q.r;throw q;}null!=this.gheader&&(this.gheader.hcrc=this.need&65535);if(this.need!=(this.z.checksum.getValue()&65535)){this.mode=13;this.z.msg="header crc mismatch";this.marker=5;break}}this.z.checksum=new JU.CRC32;this.mode=7;break;default:return-2}},"~N");d(c$,"inflateSetDictionary",function(a,b){if(null==this.z||6!=this.mode&&0!=this.wrap)return-2;var c=0,f=b;if(6==this.mode){var d=this.z.checksum.getValue();
+this.z.checksum.reset();this.z.checksum.update(a,0,b);if(this.z.checksum.getValue()!=d)return-3}this.z.checksum.reset();f>=1<<this.wbits&&(f=(1<<this.wbits)-1,c=b-f);this.blocks.set_dictionary(a,c,f);this.mode=7;return 0},"~A,~N");d(c$,"inflateSync",function(){var a,b,c;if(null==this.z)return-2;13!=this.mode&&(this.mode=13,this.marker=0);if(0==(a=this.z.avail_in))return-5;b=this.z.next_in_index;for(c=this.marker;0!=a&&4>c;)this.z.next_in[b]==JU.Inflate.mark[c]?c++:c=0!=this.z.next_in[b]?0:4-c,b++,
+a--;this.z.total_in+=b-this.z.next_in_index;this.z.next_in_index=b;this.z.avail_in=a;this.marker=c;if(4!=c)return-3;a=this.z.total_in;b=this.z.total_out;this.inflateReset();this.z.total_in=a;this.z.total_out=b;this.mode=7;return 0});d(c$,"inflateSyncPoint",function(){return null==this.z||null==this.blocks?-2:this.blocks.sync_point()});d(c$,"readBytes",function(a,b,c){-1==this.need_bytes&&(this.need_bytes=a,this.need=0);for(;0<this.need_bytes;){if(0==this.z.avail_in)throw C(JU.Inflate.Return,this,
+null,b);b=c;this.z.avail_in--;this.z.total_in++;this.need|=(this.z.next_in[this.z.next_in_index++]&255)<<8*(a-this.need_bytes);this.need_bytes--}2==a?this.need&=65535:4==a&&(this.need&=4294967295);this.need_bytes=-1;return b},"~N,~N,~N");d(c$,"readString",function(a,b){null==this.tmp_string&&(this.tmp_string=new java.io.ByteArrayOutputStream);var c=0;do{if(0==this.z.avail_in)throw C(JU.Inflate.Return,this,null,a);a=b;this.z.avail_in--;this.z.total_in++;c=this.z.next_in[this.z.next_in_index];0!=c&&
+this.tmp_string.write(this.z.next_in,this.z.next_in_index,1);this.z.checksum.update(this.z.next_in,this.z.next_in_index,1);this.z.next_in_index++}while(0!=c);return a},"~N,~N");d(c$,"readBytes",function(a,b){null==this.tmp_string&&(this.tmp_string=new java.io.ByteArrayOutputStream);for(;0<this.need;){if(0==this.z.avail_in)throw C(JU.Inflate.Return,this,null,a);a=b;this.z.avail_in--;this.z.total_in++;this.tmp_string.write(this.z.next_in,this.z.next_in_index,1);this.z.checksum.update(this.z.next_in,
+this.z.next_in_index,1);this.z.next_in_index++;this.need--}return a},"~N,~N");d(c$,"checksum",function(a,b){for(var c=0;c<a;c++)this.crcbuf[c]=b&255,b>>=8;this.z.checksum.update(this.crcbuf,0,a)},"~N,~N");d(c$,"getGZIPHeader",function(){return this.gheader});d(c$,"inParsingHeader",function(){switch(this.mode){case 14:case 2:case 3:case 4:case 5:case 23:case 16:case 17:case 18:case 19:case 20:case 21:case 22:return!0;default:return!1}});c$.$Inflate$Return$=function(){A(self.c$);c$=s(function(){O(this,
+arguments);this.r=0;r(this,arguments)},JU.Inflate,"Return",Exception);m(c$,function(a){t(this,JU.Inflate.Return,[]);this.r=a},"~N");c$=z()};G(c$,"PRESET_DICT",32,"Z_NO_FLUSH",0,"Z_PARTIAL_FLUSH",1,"Z_SYNC_FLUSH",2,"Z_FULL_FLUSH",3,"Z_FINISH",4,"Z_DEFLATED",8,"Z_OK",0,"Z_STREAM_END",1,"Z_NEED_DICT",2,"Z_STREAM_ERROR",-2,"Z_DATA_ERROR",-3,"Z_BUF_ERROR",-5,"DICT4",2,"DICT3",3,"DICT2",4,"DICT1",5,"DICT0",6,"BLOCKS",7,"CHECK4",8,"CHECK3",9,"CHECK2",10,"CHECK1",11,"DONE",12,"BAD",13,"HEAD",14,"LENGTH",
+15,"TIME",16,"OS",17,"EXLEN",18,"EXTRA",19,"NAME",20,"COMMENT",21,"HCRC",22,"FLAGS",23,"mark",S(-1,[0,0,255,255]))});p("JU");q(null,"JU.GZIPHeader",["JU.ZStream","java.lang.IllegalArgumentException","$.InternalError"],function(){c$=s(function(){this.fhcrc=this.text=!1;this.xflags=this.time=0;this.os=255;this.comment=this.name=this.extra=null;this.crc=this.hcrc=0;this.done=!1;this.mtime=0;r(this,arguments)},JU,"GZIPHeader",null,Cloneable);d(c$,"setModifiedTime",function(a){this.mtime=a},"~N");d(c$,
+"getModifiedTime",function(){return this.mtime});d(c$,"setOS",function(a){if(0<=a&&13>=a||255==a)this.os=a;else throw new IllegalArgumentException("os: "+a);},"~N");d(c$,"getOS",function(){return this.os});d(c$,"setName",function(a){this.name=JU.ZStream.getBytes(a)},"~S");d(c$,"getName",function(){if(null==this.name)return"";try{return String.instantialize(this.name,"ISO-8859-1")}catch(a){if(y(a,java.io.UnsupportedEncodingException))throw new InternalError(a.toString());throw a;}});d(c$,"setComment",
+function(a){this.comment=JU.ZStream.getBytes(a)},"~S");d(c$,"getComment",function(){if(null==this.comment)return"";try{return String.instantialize(this.comment,"ISO-8859-1")}catch(a){if(y(a,java.io.UnsupportedEncodingException))throw new InternalError(a.toString());throw a;}});d(c$,"setCRC",function(a){this.crc=a},"~N");d(c$,"getCRC",function(){return this.crc});d(c$,"put",function(a){var b=0;this.text&&(b|=1);this.fhcrc&&(b|=2);null!=this.extra&&(b|=4);null!=this.name&&(b|=8);null!=this.comment&&
+(b|=16);var c=0;1==a.level?c|=4:9==a.level&&(c|=2);a.put_short(35615);a.put_byteB(8);a.put_byteB(b);a.put_byteB(this.mtime);a.put_byteB(this.mtime>>8);a.put_byteB(this.mtime>>16);a.put_byteB(this.mtime>>24);a.put_byteB(c);a.put_byteB(this.os);null!=this.extra&&(a.put_byteB(this.extra.length),a.put_byteB(this.extra.length>>8),a.put_byte(this.extra,0,this.extra.length));null!=this.name&&(a.put_byte(this.name,0,this.name.length),a.put_byteB(0));null!=this.comment&&(a.put_byte(this.comment,0,this.comment.length),
+a.put_byteB(0))},"JU.Deflate");d(c$,"clone",function(){var a=K(this,JU.GZIPHeader,"clone",[]),b;null!=a.extra&&(b=S(a.extra.length,0),System.arraycopy(a.extra,0,b,0,b.length),a.extra=b);null!=a.name&&(b=S(a.name.length,0),System.arraycopy(a.name,0,b,0,b.length),a.name=b);null!=a.comment&&(b=S(a.comment.length,0),System.arraycopy(a.comment,0,b,0,b.length),a.comment=b);return a});G(c$,"OS_MSDOS",0,"OS_AMIGA",1,"OS_VMS",2,"OS_UNIX",3,"OS_ATARI",5,"OS_OS2",6,"OS_MACOS",7,"OS_TOPS20",10,"OS_WIN32",11,
+"OS_VMCMS",4,"OS_ZSYSTEM",8,"OS_CPM",9,"OS_QDOS",12,"OS_RISCOS",13,"OS_UNKNOWN",255)});p("JU");q(["JU.InfTree"],"JU.InfBlocks",["JU.InfCodes"],function(){c$=s(function(){this.index=this.table=this.left=this.mode=0;this.codes=this.tdi=this.tli=this.td=this.tl=this.bd=this.bl=this.tb=this.bb=this.blens=null;this.bitb=this.bitk=this.last=0;this.window=this.hufts=null;this.write=this.read=this.end=0;this.check=!1;this.z=this.inftree=null;r(this,arguments)},JU,"InfBlocks");J(c$,function(){this.bb=w(1,
+0);this.tb=w(1,0);this.bl=w(1,0);this.bd=w(1,0);this.tli=w(1,0);this.tdi=w(1,0);this.inftree=new JU.InfTree});m(c$,function(a,b){this.z=a;this.codes=new JU.InfCodes(this.z,this);this.hufts=w(4320,0);this.window=S(b,0);this.end=b;this.check=0==a.istate.wrap?!1:!0;this.mode=0;this.tl=E(1,null);this.td=E(1,null);this.reset()},"JU.ZStream,~N");d(c$,"reset",function(){6==this.mode&&this.codes.free(this.z);this.read=this.write=this.bitb=this.bitk=this.mode=0;this.check&&this.z.checksum.reset()});d(c$,"proc",
+function(a){var b,c,f,d,e,g,h;d=this.z.next_in_index;e=this.z.avail_in;c=this.bitb;f=this.bitk;g=this.write;for(h=g<this.read?this.read-g-1:this.end-g;;)switch(this.mode){case 0:for(;3>f;){if(0!=e)a=0;else return this.bitb=c,this.bitk=f,this.z.avail_in=e,this.z.total_in+=d-this.z.next_in_index,this.z.next_in_index=d,this.write=g,this.inflate_flush(a);e--;c|=(this.z.next_in[d++]&255)<<f;f+=8}b=c&7;this.last=b&1;switch(b>>>1){case 0:c>>>=3;f-=3;b=f&7;c>>>=b;f-=b;this.mode=1;break;case 1:JU.InfTree.inflate_trees_fixed(this.bl,
+this.bd,this.tl,this.td,this.z);this.codes.init(this.bl[0],this.bd[0],this.tl[0],0,this.td[0],0);c>>>=3;f-=3;this.mode=6;break;case 2:c>>>=3;f-=3;this.mode=3;break;case 3:return c>>>=3,f-=3,this.mode=9,this.z.msg="invalid block type",a=-3,this.bitb=c,this.bitk=f,this.z.avail_in=e,this.z.total_in+=d-this.z.next_in_index,this.z.next_in_index=d,this.write=g,this.inflate_flush(a)}break;case 1:for(;32>f;){if(0!=e)a=0;else return this.bitb=c,this.bitk=f,this.z.avail_in=e,this.z.total_in+=d-this.z.next_in_index,
+this.z.next_in_index=d,this.write=g,this.inflate_flush(a);e--;c|=(this.z.next_in[d++]&255)<<f;f+=8}if((~c>>>16&65535)!=(c&65535))return this.mode=9,this.z.msg="invalid stored block lengths",a=-3,this.bitb=c,this.bitk=f,this.z.avail_in=e,this.z.total_in+=d-this.z.next_in_index,this.z.next_in_index=d,this.write=g,this.inflate_flush(a);this.left=c&65535;c=f=0;this.mode=0!=this.left?2:0!=this.last?7:0;break;case 2:if(0==e||0==h&&(g==this.end&&0!=this.read&&(g=0,h=g<this.read?this.read-g-1:this.end-g),
+0==h&&(this.write=g,a=this.inflate_flush(a),g=this.write,h=g<this.read?this.read-g-1:this.end-g,g==this.end&&0!=this.read&&(g=0,h=g<this.read?this.read-g-1:this.end-g),0==h)))return this.bitb=c,this.bitk=f,this.z.avail_in=e,this.z.total_in+=d-this.z.next_in_index,this.z.next_in_index=d,this.write=g,this.inflate_flush(a);a=0;b=this.left;b>e&&(b=e);b>h&&(b=h);System.arraycopy(this.z.next_in,d,this.window,g,b);d+=b;e-=b;g+=b;h-=b;if(0!=(this.left-=b))break;this.mode=0!=this.last?7:0;break;case 3:for(;14>
+f;){if(0!=e)a=0;else return this.bitb=c,this.bitk=f,this.z.avail_in=e,this.z.total_in+=d-this.z.next_in_index,this.z.next_in_index=d,this.write=g,this.inflate_flush(a);e--;c|=(this.z.next_in[d++]&255)<<f;f+=8}this.table=b=c&16383;if(29<(b&31)||29<(b>>5&31))return this.mode=9,this.z.msg="too many length or distance symbols",a=-3,this.bitb=c,this.bitk=f,this.z.avail_in=e,this.z.total_in+=d-this.z.next_in_index,this.z.next_in_index=d,this.write=g,this.inflate_flush(a);b=258+(b&31)+(b>>5&31);if(null==
+this.blens||this.blens.length<b)this.blens=w(b,0);else for(h=0;h<b;h++)this.blens[h]=0;c>>>=14;f-=14;this.index=0;this.mode=4;case 4:for(;this.index<4+(this.table>>>10);){for(;3>f;){if(0!=e)a=0;else return this.bitb=c,this.bitk=f,this.z.avail_in=e,this.z.total_in+=d-this.z.next_in_index,this.z.next_in_index=d,this.write=g,this.inflate_flush(a);e--;c|=(this.z.next_in[d++]&255)<<f;f+=8}this.blens[JU.InfBlocks.border[this.index++]]=c&7;c>>>=3;f-=3}for(;19>this.index;)this.blens[JU.InfBlocks.border[this.index++]]=
+0;this.bb[0]=7;b=this.inftree.inflate_trees_bits(this.blens,this.bb,this.tb,this.hufts,this.z);if(0!=b)return a=b,-3==a&&(this.blens=null,this.mode=9),this.bitb=c,this.bitk=f,this.z.avail_in=e,this.z.total_in+=d-this.z.next_in_index,this.z.next_in_index=d,this.write=g,this.inflate_flush(a);this.index=0;this.mode=5;case 5:for(;;){b=this.table;if(!(this.index<258+(b&31)+(b>>5&31)))break;var j,n;for(b=this.bb[0];f<b;){if(0!=e)a=0;else return this.bitb=c,this.bitk=f,this.z.avail_in=e,this.z.total_in+=
+d-this.z.next_in_index,this.z.next_in_index=d,this.write=g,this.inflate_flush(a);e--;c|=(this.z.next_in[d++]&255)<<f;f+=8}b=this.hufts[3*(this.tb[0]+(c&JU.InfBlocks.inflate_mask[b]))+1];n=this.hufts[3*(this.tb[0]+(c&JU.InfBlocks.inflate_mask[b]))+2];if(16>n)c>>>=b,f-=b,this.blens[this.index++]=n;else{h=18==n?7:n-14;for(j=18==n?11:3;f<b+h;){if(0!=e)a=0;else return this.bitb=c,this.bitk=f,this.z.avail_in=e,this.z.total_in+=d-this.z.next_in_index,this.z.next_in_index=d,this.write=g,this.inflate_flush(a);
+e--;c|=(this.z.next_in[d++]&255)<<f;f+=8}c>>>=b;f-=b;j+=c&JU.InfBlocks.inflate_mask[h];c>>>=h;f-=h;h=this.index;b=this.table;if(h+j>258+(b&31)+(b>>5&31)||16==n&&1>h)return this.blens=null,this.mode=9,this.z.msg="invalid bit length repeat",a=-3,this.bitb=c,this.bitk=f,this.z.avail_in=e,this.z.total_in+=d-this.z.next_in_index,this.z.next_in_index=d,this.write=g,this.inflate_flush(a);n=16==n?this.blens[h-1]:0;do this.blens[h++]=n;while(0!=--j);this.index=h}}this.tb[0]=-1;this.bl[0]=9;this.bd[0]=6;b=
+this.table;b=this.inftree.inflate_trees_dynamic(257+(b&31),1+(b>>5&31),this.blens,this.bl,this.bd,this.tli,this.tdi,this.hufts,this.z);if(0!=b)return-3==b&&(this.blens=null,this.mode=9),a=b,this.bitb=c,this.bitk=f,this.z.avail_in=e,this.z.total_in+=d-this.z.next_in_index,this.z.next_in_index=d,this.write=g,this.inflate_flush(a);this.codes.init(this.bl[0],this.bd[0],this.hufts,this.tli[0],this.hufts,this.tdi[0]);this.mode=6;case 6:this.bitb=c;this.bitk=f;this.z.avail_in=e;this.z.total_in+=d-this.z.next_in_index;
+this.z.next_in_index=d;this.write=g;if(1!=(a=this.codes.proc(a)))return this.inflate_flush(a);a=0;this.codes.free(this.z);d=this.z.next_in_index;e=this.z.avail_in;c=this.bitb;f=this.bitk;g=this.write;h=g<this.read?this.read-g-1:this.end-g;if(0==this.last){this.mode=0;break}this.mode=7;case 7:this.write=g;a=this.inflate_flush(a);g=this.write;if(this.read!=this.write)return this.bitb=c,this.bitk=f,this.z.avail_in=e,this.z.total_in+=d-this.z.next_in_index,this.z.next_in_index=d,this.write=g,this.inflate_flush(a);
+this.mode=8;case 8:return a=1,this.bitb=c,this.bitk=f,this.z.avail_in=e,this.z.total_in+=d-this.z.next_in_index,this.z.next_in_index=d,this.write=g,this.inflate_flush(a);case 9:return a=-3,this.bitb=c,this.bitk=f,this.z.avail_in=e,this.z.total_in+=d-this.z.next_in_index,this.z.next_in_index=d,this.write=g,this.inflate_flush(a);default:return a=-2,this.bitb=c,this.bitk=f,this.z.avail_in=e,this.z.total_in+=d-this.z.next_in_index,this.z.next_in_index=d,this.write=g,this.inflate_flush(a)}},"~N");d(c$,
+"free",function(){this.reset();this.hufts=this.window=null});d(c$,"set_dictionary",function(a,b,c){System.arraycopy(a,b,this.window,0,c);this.read=this.write=c},"~A,~N,~N");d(c$,"sync_point",function(){return 1==this.mode?1:0});d(c$,"inflate_flush",function(a){var b,c,f;c=this.z.next_out_index;f=this.read;b=(f<=this.write?this.write:this.end)-f;b>this.z.avail_out&&(b=this.z.avail_out);0!=b&&-5==a&&(a=0);this.z.avail_out-=b;this.z.total_out+=b;this.check&&0<b&&this.z.checksum.update(this.window,f,
+b);System.arraycopy(this.window,f,this.z.next_out,c,b);c+=b;f+=b;f==this.end&&(f=0,this.write==this.end&&(this.write=0),b=this.write-f,b>this.z.avail_out&&(b=this.z.avail_out),0!=b&&-5==a&&(a=0),this.z.avail_out-=b,this.z.total_out+=b,this.check&&0<b&&this.z.checksum.update(this.window,f,b),System.arraycopy(this.window,f,this.z.next_out,c,b),c+=b,f+=b);this.z.next_out_index=c;this.read=f;return a},"~N");G(c$,"MANY",1440,"inflate_mask",w(-1,[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,
+65535]),"border",w(-1,[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),"Z_OK",0,"Z_STREAM_END",1,"Z_STREAM_ERROR",-2,"Z_DATA_ERROR",-3,"Z_BUF_ERROR",-5,"TYPE",0,"LENS",1,"STORED",2,"TABLE",3,"BTREE",4,"DTREE",5,"CODES",6,"DRY",7,"DONE",8,"BAD",9)});p("JU");c$=s(function(){this.x=this.u=this.r=this.c=this.v=this.hn=null;r(this,arguments)},JU,"InfTree");d(c$,"huft_build",function(a,b,c,f,d,e,g,h,j,n,m){var u,p,q,s,r,t,v,w,y,z;v=0;q=c;do this.c[a[b+v]]++,v++,q--;while(0!=q);if(this.c[0]==c)return g[0]=
+-1,h[0]=0;t=h[0];for(s=1;15>=s&&0==this.c[s];s++);r=s;t<s&&(t=s);for(q=15;0!=q&&0==this.c[q];q--);p=q;t>q&&(t=q);h[0]=t;for(h=1<<s;s<q;s++,h<<=1)if(0>(h-=this.c[s]))return-3;if(0>(h-=this.c[q]))return-3;this.c[q]+=h;this.x[1]=s=0;v=1;for(w=2;0!=--q;)this.x[w]=s+=this.c[v],w++,v++;v=q=0;do{if(0!=(s=a[b+v]))m[this.x[s]++]=q;v++}while(++q<c);c=this.x[p];v=this.x[0]=q=0;b=-1;y=-t;for(z=w=this.u[0]=0;r<=p;r++)for(a=this.c[r];0!=a--;){for(;r>y+t;){b++;y+=t;z=p-y;z=z>t?t:z;if((u=1<<(s=r-y))>a+1)if(u-=a+
+1,w=r,s<z)for(;++s<z&&!((u<<=1)<=this.c[++w]);)u-=this.c[w];z=1<<s;if(1440<n[0]+z)return-3;this.u[b]=w=n[0];n[0]+=z;0!=b?(this.x[b]=q,this.r[0]=s,this.r[1]=t,s=q>>>y-t,this.r[2]=w-this.u[b-1]-s,System.arraycopy(this.r,0,j,3*(this.u[b-1]+s),3)):g[0]=w}this.r[1]=r-y;v>=c?this.r[0]=192:m[v]<f?(this.r[0]=256>m[v]?0:96,this.r[2]=m[v++]):(this.r[0]=e[m[v]-f]+16+64,this.r[2]=d[m[v++]-f]);u=1<<r-y;for(s=q>>>y;s<z;s+=u)System.arraycopy(this.r,0,j,3*(w+s),3);for(s=1<<r-1;0!=(q&s);s>>>=1)q^=s;q^=s;for(s=(1<<
+y)-1;(q&s)!=this.x[b];)b--,y-=t,s=(1<<y)-1}return 0!=h&&1!=p?-5:0},"~A,~N,~N,~N,~A,~A,~A,~A,~A,~A,~A");d(c$,"inflate_trees_bits",function(a,b,c,f,d){this.initWorkArea(19);this.hn[0]=0;a=this.huft_build(a,0,19,19,null,null,c,b,f,this.hn,this.v);if(-3==a)d.msg="oversubscribed dynamic bit lengths tree";else if(-5==a||0==b[0])d.msg="incomplete dynamic bit lengths tree",a=-3;return a},"~A,~A,~A,~A,JU.ZStream");d(c$,"inflate_trees_dynamic",function(a,b,c,f,d,e,g,h,j){this.initWorkArea(288);this.hn[0]=0;
+e=this.huft_build(c,0,a,257,JU.InfTree.cplens,JU.InfTree.cplext,e,f,h,this.hn,this.v);if(0!=e||0==f[0])return-3==e?j.msg="oversubscribed literal/length tree":-4!=e&&(j.msg="incomplete literal/length tree",e=-3),e;this.initWorkArea(288);e=this.huft_build(c,a,b,0,JU.InfTree.cpdist,JU.InfTree.cpdext,g,d,h,this.hn,this.v);return 0!=e||0==d[0]&&257<a?(-3==e?j.msg="oversubscribed distance tree":-5==e?(j.msg="incomplete distance tree",e=-3):-4!=e&&(j.msg="empty distance tree with lengths",e=-3),e):0},"~N,~N,~A,~A,~A,~A,~A,~A,JU.ZStream");
+c$.inflate_trees_fixed=d(c$,"inflate_trees_fixed",function(a,b,c,f){a[0]=9;b[0]=5;c[0]=JU.InfTree.fixed_tl;f[0]=JU.InfTree.fixed_td;return 0},"~A,~A,~A,~A,JU.ZStream");d(c$,"initWorkArea",function(a){null==this.hn&&(this.hn=w(1,0),this.v=w(a,0),this.c=w(16,0),this.r=w(3,0),this.u=w(15,0),this.x=w(16,0));this.v.length<a&&(this.v=w(a,0));for(var b=0;b<a;b++)this.v[b]=0;for(b=0;16>b;b++)this.c[b]=0;for(b=0;3>b;b++)this.r[b]=0;System.arraycopy(this.c,0,this.u,0,15);System.arraycopy(this.c,0,this.x,0,
+16)},"~N");G(c$,"MANY",1440,"Z_OK",0,"Z_DATA_ERROR",-3,"Z_MEM_ERROR",-4,"Z_BUF_ERROR",-5,"fixed_bl",9,"fixed_bd",5,"fixed_tl",w(-1,[96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,192,80,7,10,0,8,96,0,8,32,0,9,160,0,8,0,0,8,128,0,8,64,0,9,224,80,7,6,0,8,88,0,8,24,0,9,144,83,7,59,0,8,120,0,8,56,0,9,208,81,7,17,0,8,104,0,8,40,0,9,176,0,8,8,0,8,136,0,8,72,0,9,240,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,200,81,7,13,0,8,100,0,8,36,0,9,168,0,8,4,0,8,132,0,8,68,0,9,232,80,7,8,
+0,8,92,0,8,28,0,9,152,84,7,83,0,8,124,0,8,60,0,9,216,82,7,23,0,8,108,0,8,44,0,9,184,0,8,12,0,8,140,0,8,76,0,9,248,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,196,81,7,11,0,8,98,0,8,34,0,9,164,0,8,2,0,8,130,0,8,66,0,9,228,80,7,7,0,8,90,0,8,26,0,9,148,84,7,67,0,8,122,0,8,58,0,9,212,82,7,19,0,8,106,0,8,42,0,9,180,0,8,10,0,8,138,0,8,74,0,9,244,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,204,81,7,15,0,8,102,0,8,38,0,9,172,0,8,6,0,8,134,0,8,70,0,9,236,80,7,9,0,8,94,0,8,30,0,9,156,
+84,7,99,0,8,126,0,8,62,0,9,220,82,7,27,0,8,110,0,8,46,0,9,188,0,8,14,0,8,142,0,8,78,0,9,252,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,194,80,7,10,0,8,97,0,8,33,0,9,162,0,8,1,0,8,129,0,8,65,0,9,226,80,7,6,0,8,89,0,8,25,0,9,146,83,7,59,0,8,121,0,8,57,0,9,210,81,7,17,0,8,105,0,8,41,0,9,178,0,8,9,0,8,137,0,8,73,0,9,242,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,202,81,7,13,0,8,101,0,8,37,0,9,170,0,8,5,0,8,133,0,8,69,0,9,234,80,7,8,0,8,93,0,8,29,0,9,154,84,7,83,0,8,125,0,
+8,61,0,9,218,82,7,23,0,8,109,0,8,45,0,9,186,0,8,13,0,8,141,0,8,77,0,9,250,80,7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,198,81,7,11,0,8,99,0,8,35,0,9,166,0,8,3,0,8,131,0,8,67,0,9,230,80,7,7,0,8,91,0,8,27,0,9,150,84,7,67,0,8,123,0,8,59,0,9,214,82,7,19,0,8,107,0,8,43,0,9,182,0,8,11,0,8,139,0,8,75,0,9,246,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,206,81,7,15,0,8,103,0,8,39,0,9,174,0,8,7,0,8,135,0,8,71,0,9,238,80,7,9,0,8,95,0,8,31,0,9,158,84,7,99,0,8,127,0,8,63,0,9,222,82,7,27,
+0,8,111,0,8,47,0,9,190,0,8,15,0,8,143,0,8,79,0,9,254,96,7,256,0,8,80,0,8,16,84,8,115,82,7,31,0,8,112,0,8,48,0,9,193,80,7,10,0,8,96,0,8,32,0,9,161,0,8,0,0,8,128,0,8,64,0,9,225,80,7,6,0,8,88,0,8,24,0,9,145,83,7,59,0,8,120,0,8,56,0,9,209,81,7,17,0,8,104,0,8,40,0,9,177,0,8,8,0,8,136,0,8,72,0,9,241,80,7,4,0,8,84,0,8,20,85,8,227,83,7,43,0,8,116,0,8,52,0,9,201,81,7,13,0,8,100,0,8,36,0,9,169,0,8,4,0,8,132,0,8,68,0,9,233,80,7,8,0,8,92,0,8,28,0,9,153,84,7,83,0,8,124,0,8,60,0,9,217,82,7,23,0,8,108,0,8,44,0,
+9,185,0,8,12,0,8,140,0,8,76,0,9,249,80,7,3,0,8,82,0,8,18,85,8,163,83,7,35,0,8,114,0,8,50,0,9,197,81,7,11,0,8,98,0,8,34,0,9,165,0,8,2,0,8,130,0,8,66,0,9,229,80,7,7,0,8,90,0,8,26,0,9,149,84,7,67,0,8,122,0,8,58,0,9,213,82,7,19,0,8,106,0,8,42,0,9,181,0,8,10,0,8,138,0,8,74,0,9,245,80,7,5,0,8,86,0,8,22,192,8,0,83,7,51,0,8,118,0,8,54,0,9,205,81,7,15,0,8,102,0,8,38,0,9,173,0,8,6,0,8,134,0,8,70,0,9,237,80,7,9,0,8,94,0,8,30,0,9,157,84,7,99,0,8,126,0,8,62,0,9,221,82,7,27,0,8,110,0,8,46,0,9,189,0,8,14,0,8,142,
+0,8,78,0,9,253,96,7,256,0,8,81,0,8,17,85,8,131,82,7,31,0,8,113,0,8,49,0,9,195,80,7,10,0,8,97,0,8,33,0,9,163,0,8,1,0,8,129,0,8,65,0,9,227,80,7,6,0,8,89,0,8,25,0,9,147,83,7,59,0,8,121,0,8,57,0,9,211,81,7,17,0,8,105,0,8,41,0,9,179,0,8,9,0,8,137,0,8,73,0,9,243,80,7,4,0,8,85,0,8,21,80,8,258,83,7,43,0,8,117,0,8,53,0,9,203,81,7,13,0,8,101,0,8,37,0,9,171,0,8,5,0,8,133,0,8,69,0,9,235,80,7,8,0,8,93,0,8,29,0,9,155,84,7,83,0,8,125,0,8,61,0,9,219,82,7,23,0,8,109,0,8,45,0,9,187,0,8,13,0,8,141,0,8,77,0,9,251,80,
+7,3,0,8,83,0,8,19,85,8,195,83,7,35,0,8,115,0,8,51,0,9,199,81,7,11,0,8,99,0,8,35,0,9,167,0,8,3,0,8,131,0,8,67,0,9,231,80,7,7,0,8,91,0,8,27,0,9,151,84,7,67,0,8,123,0,8,59,0,9,215,82,7,19,0,8,107,0,8,43,0,9,183,0,8,11,0,8,139,0,8,75,0,9,247,80,7,5,0,8,87,0,8,23,192,8,0,83,7,51,0,8,119,0,8,55,0,9,207,81,7,15,0,8,103,0,8,39,0,9,175,0,8,7,0,8,135,0,8,71,0,9,239,80,7,9,0,8,95,0,8,31,0,9,159,84,7,99,0,8,127,0,8,63,0,9,223,82,7,27,0,8,111,0,8,47,0,9,191,0,8,15,0,8,143,0,8,79,0,9,255]),"fixed_td",w(-1,[80,
+5,1,87,5,257,83,5,17,91,5,4097,81,5,5,89,5,1025,85,5,65,93,5,16385,80,5,3,88,5,513,84,5,33,92,5,8193,82,5,9,90,5,2049,86,5,129,192,5,24577,80,5,2,87,5,385,83,5,25,91,5,6145,81,5,7,89,5,1537,85,5,97,93,5,24577,80,5,4,88,5,769,84,5,49,92,5,12289,82,5,13,90,5,3073,86,5,193,192,5,24577]),"cplens",w(-1,[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]),"cplext",w(-1,[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,112,112]),"cpdist",w(-1,[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]),"cpdext",w(-1,[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),"BMAX",15);p("JU");c$=s(function(){this.len=this.mode=0;this.tree=null;this.dbits=this.lbits=this.dist=this.get=this.lit=this.need=this.tree_index=0;this.ltree=null;this.ltree_index=0;this.dtree=null;this.dtree_index=0;this.s=this.z=null;r(this,arguments)},JU,"InfCodes");m(c$,function(a,b){this.z=a;this.s=b},"JU.ZStream,JU.InfBlocks");
+d(c$,"init",function(a,b,c,f,d,e){this.mode=0;this.lbits=a;this.dbits=b;this.ltree=c;this.ltree_index=f;this.dtree=d;this.dtree_index=e;this.tree=null},"~N,~N,~A,~N,~A,~N");d(c$,"proc",function(a){var b,c,f=0,d=0,e=0,g,h,j,e=this.z.next_in_index;g=this.z.avail_in;f=this.s.bitb;d=this.s.bitk;h=this.s.write;for(j=h<this.s.read?this.s.read-h-1:this.s.end-h;;)switch(this.mode){case 0:if(258<=j&&10<=g&&(this.s.bitb=f,this.s.bitk=d,this.z.avail_in=g,this.z.total_in+=e-this.z.next_in_index,this.z.next_in_index=
+e,this.s.write=h,a=this.inflate_fast(this.lbits,this.dbits,this.ltree,this.ltree_index,this.dtree,this.dtree_index,this.s,this.z),e=this.z.next_in_index,g=this.z.avail_in,f=this.s.bitb,d=this.s.bitk,h=this.s.write,j=h<this.s.read?this.s.read-h-1:this.s.end-h,0!=a)){this.mode=1==a?7:9;break}this.need=this.lbits;this.tree=this.ltree;this.tree_index=this.ltree_index;this.mode=1;case 1:for(b=this.need;d<b;){if(0!=g)a=0;else return this.s.bitb=f,this.s.bitk=d,this.z.avail_in=g,this.z.total_in+=e-this.z.next_in_index,
+this.z.next_in_index=e,this.s.write=h,this.s.inflate_flush(a);g--;f|=(this.z.next_in[e++]&255)<<d;d+=8}b=3*(this.tree_index+(f&JU.InfCodes.inflate_mask[b]));f>>>=this.tree[b+1];d-=this.tree[b+1];c=this.tree[b];if(0==c){this.lit=this.tree[b+2];this.mode=6;break}if(0!=(c&16)){this.get=c&15;this.len=this.tree[b+2];this.mode=2;break}if(0==(c&64)){this.need=c;this.tree_index=F(b/3)+this.tree[b+2];break}if(0!=(c&32)){this.mode=7;break}this.mode=9;this.z.msg="invalid literal/length code";a=-3;this.s.bitb=
+f;this.s.bitk=d;this.z.avail_in=g;this.z.total_in+=e-this.z.next_in_index;this.z.next_in_index=e;this.s.write=h;return this.s.inflate_flush(a);case 2:for(b=this.get;d<b;){if(0!=g)a=0;else return this.s.bitb=f,this.s.bitk=d,this.z.avail_in=g,this.z.total_in+=e-this.z.next_in_index,this.z.next_in_index=e,this.s.write=h,this.s.inflate_flush(a);g--;f|=(this.z.next_in[e++]&255)<<d;d+=8}this.len+=f&JU.InfCodes.inflate_mask[b];f>>=b;d-=b;this.need=this.dbits;this.tree=this.dtree;this.tree_index=this.dtree_index;
+this.mode=3;case 3:for(b=this.need;d<b;){if(0!=g)a=0;else return this.s.bitb=f,this.s.bitk=d,this.z.avail_in=g,this.z.total_in+=e-this.z.next_in_index,this.z.next_in_index=e,this.s.write=h,this.s.inflate_flush(a);g--;f|=(this.z.next_in[e++]&255)<<d;d+=8}b=3*(this.tree_index+(f&JU.InfCodes.inflate_mask[b]));f>>=this.tree[b+1];d-=this.tree[b+1];c=this.tree[b];if(0!=(c&16)){this.get=c&15;this.dist=this.tree[b+2];this.mode=4;break}if(0==(c&64)){this.need=c;this.tree_index=F(b/3)+this.tree[b+2];break}this.mode=
+9;this.z.msg="invalid distance code";a=-3;this.s.bitb=f;this.s.bitk=d;this.z.avail_in=g;this.z.total_in+=e-this.z.next_in_index;this.z.next_in_index=e;this.s.write=h;return this.s.inflate_flush(a);case 4:for(b=this.get;d<b;){if(0!=g)a=0;else return this.s.bitb=f,this.s.bitk=d,this.z.avail_in=g,this.z.total_in+=e-this.z.next_in_index,this.z.next_in_index=e,this.s.write=h,this.s.inflate_flush(a);g--;f|=(this.z.next_in[e++]&255)<<d;d+=8}this.dist+=f&JU.InfCodes.inflate_mask[b];f>>=b;d-=b;this.mode=5;
+case 5:for(b=h-this.dist;0>b;)b+=this.s.end;for(;0!=this.len;){if(0==j&&(h==this.s.end&&0!=this.s.read&&(h=0,j=h<this.s.read?this.s.read-h-1:this.s.end-h),0==j&&(this.s.write=h,a=this.s.inflate_flush(a),h=this.s.write,j=h<this.s.read?this.s.read-h-1:this.s.end-h,h==this.s.end&&0!=this.s.read&&(h=0,j=h<this.s.read?this.s.read-h-1:this.s.end-h),0==j)))return this.s.bitb=f,this.s.bitk=d,this.z.avail_in=g,this.z.total_in+=e-this.z.next_in_index,this.z.next_in_index=e,this.s.write=h,this.s.inflate_flush(a);
+this.s.window[h++]=this.s.window[b++];j--;b==this.s.end&&(b=0);this.len--}this.mode=0;break;case 6:if(0==j&&(h==this.s.end&&0!=this.s.read&&(h=0,j=h<this.s.read?this.s.read-h-1:this.s.end-h),0==j&&(this.s.write=h,a=this.s.inflate_flush(a),h=this.s.write,j=h<this.s.read?this.s.read-h-1:this.s.end-h,h==this.s.end&&0!=this.s.read&&(h=0,j=h<this.s.read?this.s.read-h-1:this.s.end-h),0==j)))return this.s.bitb=f,this.s.bitk=d,this.z.avail_in=g,this.z.total_in+=e-this.z.next_in_index,this.z.next_in_index=
+e,this.s.write=h,this.s.inflate_flush(a);a=0;this.s.window[h++]=this.lit;j--;this.mode=0;break;case 7:7<d&&(d-=8,g++,e--);this.s.write=h;a=this.s.inflate_flush(a);h=this.s.write;if(this.s.read!=this.s.write)return this.s.bitb=f,this.s.bitk=d,this.z.avail_in=g,this.z.total_in+=e-this.z.next_in_index,this.z.next_in_index=e,this.s.write=h,this.s.inflate_flush(a);this.mode=8;case 8:return a=1,this.s.bitb=f,this.s.bitk=d,this.z.avail_in=g,this.z.total_in+=e-this.z.next_in_index,this.z.next_in_index=e,
+this.s.write=h,this.s.inflate_flush(a);case 9:return a=-3,this.s.bitb=f,this.s.bitk=d,this.z.avail_in=g,this.z.total_in+=e-this.z.next_in_index,this.z.next_in_index=e,this.s.write=h,this.s.inflate_flush(a);default:return a=-2,this.s.bitb=f,this.s.bitk=d,this.z.avail_in=g,this.z.total_in+=e-this.z.next_in_index,this.z.next_in_index=e,this.s.write=h,this.s.inflate_flush(a)}},"~N");d(c$,"free",function(){},"JU.ZStream");d(c$,"inflate_fast",function(a,b,c,f,d,e,g,h){var j,n,m,u,p,q,s,r,t,v,w,y;q=h.next_in_index;
+s=h.avail_in;u=g.bitb;p=g.bitk;r=g.write;t=r<g.read?g.read-r-1:g.end-r;a=JU.InfCodes.inflate_mask[a];v=JU.InfCodes.inflate_mask[b];do{for(;20>p;)s--,u|=(h.next_in[q++]&255)<<p,p+=8;j=u&a;n=c;m=f;y=3*(m+j);if(0==(b=n[y]))u>>=n[y+1],p-=n[y+1],g.window[r++]=n[y+2],t--;else{do{u>>=n[y+1];p-=n[y+1];if(0!=(b&16)){b&=15;w=n[y+2]+(u&JU.InfCodes.inflate_mask[b]);u>>=b;for(p-=b;15>p;)s--,u|=(h.next_in[q++]&255)<<p,p+=8;j=u&v;n=d;m=e;y=3*(m+j);b=n[y];do if(u>>=n[y+1],p-=n[y+1],0!=(b&16)){for(b&=15;p<b;)s--,
+u|=(h.next_in[q++]&255)<<p,p+=8;j=n[y+2]+(u&JU.InfCodes.inflate_mask[b]);u>>=b;p-=b;t-=w;if(r>=j)j=r-j,0<r-j&&2>r-j?(g.window[r++]=g.window[j++],g.window[r++]=g.window[j++]):(System.arraycopy(g.window,j,g.window,r,2),r+=2,j+=2),w-=2;else{j=r-j;do j+=g.end;while(0>j);b=g.end-j;if(w>b){w-=b;if(0<r-j&&b>r-j){do g.window[r++]=g.window[j++];while(0!=--b)}else System.arraycopy(g.window,j,g.window,r,b),r+=b;j=0}}if(0<r-j&&w>r-j){do g.window[r++]=g.window[j++];while(0!=--w)}else System.arraycopy(g.window,
+j,g.window,r,w),r+=w;break}else if(0==(b&64))j+=n[y+2],j+=u&JU.InfCodes.inflate_mask[b],y=3*(m+j),b=n[y];else return h.msg="invalid distance code",w=h.avail_in-s,w=p>>3<w?p>>3:w,s+=w,q-=w,p-=w<<3,g.bitb=u,g.bitk=p,h.avail_in=s,h.total_in+=q-h.next_in_index,h.next_in_index=q,g.write=r,-3;while(1);break}if(0==(b&64)){if(j+=n[y+2],j+=u&JU.InfCodes.inflate_mask[b],y=3*(m+j),0==(b=n[y])){u>>=n[y+1];p-=n[y+1];g.window[r++]=n[y+2];t--;break}}else{if(0!=(b&32))return w=h.avail_in-s,w=p>>3<w?p>>3:w,s+=w,q-=
+w,p-=w<<3,g.bitb=u,g.bitk=p,h.avail_in=s,h.total_in+=q-h.next_in_index,h.next_in_index=q,g.write=r,1;h.msg="invalid literal/length code";w=h.avail_in-s;w=p>>3<w?p>>3:w;s+=w;q-=w;p-=w<<3;g.bitb=u;g.bitk=p;h.avail_in=s;h.total_in+=q-h.next_in_index;h.next_in_index=q;g.write=r;return-3}}while(1)}}while(258<=t&&10<=s);w=h.avail_in-s;w=p>>3<w?p>>3:w;q-=w;g.bitb=u;g.bitk=p-(w<<3);h.avail_in=s+w;h.total_in+=q-h.next_in_index;h.next_in_index=q;g.write=r;return 0},"~N,~N,~A,~N,~A,~N,JU.InfBlocks,JU.ZStream");
+G(c$,"inflate_mask",w(-1,[0,1,3,7,15,31,63,127,255,511,1023,2047,4095,8191,16383,32767,65535]),"Z_OK",0,"Z_STREAM_END",1,"Z_STREAM_ERROR",-2,"Z_DATA_ERROR",-3,"START",0,"LEN",1,"LENEXT",2,"DIST",3,"DISTEXT",4,"COPY",5,"LIT",6,"WASH",7,"END",8,"BADCODE",9);q(["java.io.OutputStream"],"java.io.ByteArrayOutputStream",["java.lang.IllegalArgumentException","$.IndexOutOfBoundsException","$.OutOfMemoryError"],function(){c$=s(function(){this.buf=null;this.count=0;r(this,arguments)},java.io,"ByteArrayOutputStream",
+java.io.OutputStream);m(c$,function(){this.construct(32)});m(c$,function(a){t(this,java.io.ByteArrayOutputStream,[]);if(0>a)throw new IllegalArgumentException("Negative initial size: "+a);this.buf=S(a,0)},"~N");d(c$,"ensureCapacity",function(a){0<a-this.buf.length&&this.grow(a)},"~N");d(c$,"grow",function(a){var b=this.buf.length<<1;0>b-a&&(b=a);if(0>b){if(0>a)throw new OutOfMemoryError;b=a}this.buf=java.io.ByteArrayOutputStream.arrayCopyByte(this.buf,b)},"~N");c$.arrayCopyByte=d(c$,"arrayCopyByte",
+function(a,b){var c=S(b,0);System.arraycopy(a,0,c,0,a.length<b?a.length:b);return c},"~A,~N");e(c$,"writeByteAsInt",function(a){this.ensureCapacity(this.count+1);this.buf[this.count]=a;this.count+=1},"~N");d(c$,"write",function(a,b,c){if(0>b||b>a.length||0>c||0<b+c-a.length)throw new IndexOutOfBoundsException;this.ensureCapacity(this.count+c);System.arraycopy(a,b,this.buf,this.count,c);this.count+=c},"~A,~N,~N");d(c$,"writeTo",function(a){a.write(this.buf,0,this.count)},"java.io.OutputStream");d(c$,
+"reset",function(){this.count=0});d(c$,"toByteArray",function(){return this.count==this.buf.length?this.buf:java.io.ByteArrayOutputStream.arrayCopyByte(this.buf,this.count)});d(c$,"size",function(){return this.count});e(c$,"toString",function(){return String.instantialize(this.buf,0,this.count)});e(c$,"close",function(){})});q(["java.io.Closeable","$.Flushable"],"java.io.OutputStream",["java.lang.IndexOutOfBoundsException","$.NullPointerException"],function(){c$=B(java.io,"OutputStream",null,[java.io.Closeable,
+java.io.Flushable]);d(c$,"write",function(a,b,c){if(null==a)throw new NullPointerException;if(0>b||b>a.length||0>c||b+c>a.length||0>b+c)throw new IndexOutOfBoundsException;if(0!=c)for(var f=0;f<c;f++)this.writeByteAsInt(a[b+f])},"~A,~N,~N");e(c$,"flush",function(){});e(c$,"close",function(){})});p("java.util.zip");q(["java.io.IOException"],"java.util.zip.ZipException",null,function(){c$=B(java.util.zip,"ZipException",java.io.IOException)});p("MCview");q(["java.awt.Color"],"MCview.Atom",["java.lang.Float"],
+function(){c$=s(function(){this.number=this.z=this.y=this.x=0;this.resName=this.name=null;this.resNumber=0;this.insCode=" ";this.resNumIns=null;this.type=0;this.chain=this.color=null;this.alignmentMapping=-1;this.tfactor=this.occupancy=this.atomIndex=0;this.isSelected=!1;r(this,arguments)},MCview,"Atom");J(c$,function(){this.color=java.awt.Color.lightGray});m(c$,function(a){this.atomIndex=Integer.parseInt(a.substring(6,11).trim());this.name=a.substring(12,15).trim();this.resName=a.substring(17,20);
+this.chain=a.substring(21,22);this.resNumber=Integer.parseInt(a.substring(22,26).trim());this.resNumIns=a.substring(22,27).trim();this.insCode=a.substring(26,27).charAt(0);this.x=(new Float(a.substring(30,38).trim())).floatValue();this.y=(new Float(a.substring(38,46).trim())).floatValue();this.z=(new Float(a.substring(47,55).trim())).floatValue();var b=a.substring(54,60).trim();this.occupancy=0<b.length?(new Float(b)).floatValue():1;b=a.substring(60,66).trim();this.tfactor=0<b.length?(new Float(b)).floatValue():
+1},"~S");m(c$,function(a,b,c){this.x=a;this.y=b;this.z=c},"~N,~N,~N")});p("MCview");q(["java.util.Vector"],"MCview.PDBChain","MCview.Bond $.Residue jalview.datamodel.AlignmentAnnotation $.Annotation $.Sequence $.SequenceFeature jalview.schemes.ResidueProperties java.awt.Color java.lang.StringBuilder".split(" "),function(){c$=s(function(){this.residues=this.atoms=this.bonds=this.id=null;this.offset=0;this.shadow=this.sequence=null;this.isNa=!1;this.isVisible=!0;this.seqend=this.seqstart=this.pdbend=
+this.pdbstart=0;this.pdbid="";this.shadowMap=this.newline=null;r(this,arguments)},MCview,"PDBChain");J(c$,function(){this.bonds=new java.util.Vector;this.atoms=new java.util.Vector;this.residues=new java.util.Vector;this.newline=System.getProperty("line.separator")});m(c$,function(a,b){this.pdbid=a.toLowerCase();this.id=b},"~S,~S");d(c$,"setNewlineString",function(a){this.newline=a},"~S");d(c$,"getNewlineString",function(){return this.newline});d(c$,"print",function(){for(var a=new StringBuilder(256),
+b,c=this.bonds.iterator();c.hasNext()&&((b=c.next())||1);)a.append(b.at1.resName).append(" ").append(b.at1.resNumber).append(" ").append(this.offset).append(this.newline);return a.toString()});d(c$,"makeExactMapping",function(a,b){for(var c=a.getSeq2Start()-2,f=b.getStart()+a.getSeq1Start()-3,d,e=this.atoms.iterator();e.hasNext()&&((d=e.next())||1);)d.alignmentMapping=-1;for(var g=0;g<a.astr1.length;g++)if("-"!=a.astr1.charAt(g)&&f++,"-"!=a.astr2.charAt(g)&&c++,a.astr1.charAt(g)==a.astr2.charAt(g))for(e=
+this.residues.elementAt(c).atoms.iterator();e.hasNext()&&((d=e.next())||1);)d.alignmentMapping=f},"jalview.analysis.AlignSeq,jalview.datamodel.SequenceI");d(c$,"transferRESNUMFeatures",function(a,b){for(var c=a;null!=c&&null!=c.getDatasetSequence();)if(c=c.getDatasetSequence(),c===this.sequence)return null;null==b&&(b="IEA:jalview");for(var f=this.sequence.getSequenceFeatures(),d=0;d<f.length;d++)if(f[d].getFeatureGroup().equals(this.pdbid)){var e=new jalview.datamodel.SequenceFeature(f[d]);e.setBegin(1+
+this.residues.elementAt(e.getBegin()-this.offset).atoms.elementAt(0).alignmentMapping);e.setEnd(1+this.residues.elementAt(e.getEnd()-this.offset).atoms.elementAt(0).alignmentMapping);e.setStatus(b+(null==e.getStatus()||0==e.getStatus().length?"":":"+e.getStatus()));0!=e.begin&&0!=e.end&&c.addSequenceFeature(e)}return f},"jalview.datamodel.SequenceI,~S");d(c$,"makeCaBondList",function(){for(var a=!1,b=0,c=0;c<this.residues.size()-1;c++){var f=this.residues.elementAt(c),d=this.residues.elementAt(c+
+1),e=f.findAtom("CA"),g=d.findAtom("CA"),a=!1;null==e&&null==g&&(a=!0,e=f.findAtom("P"),g=d.findAtom("P"));null!=e&&null!=g?e.chain.equals(g.chain)&&(a&&b++,this.makeBond(e,g)):System.out.println("not found "+c)}0<this.residues.size()&&0.99<F(b/(this.residues.size()-1))&&(this.isNa=!0)});d(c$,"makeBond",function(a,b){this.bonds.addElement(new MCview.Bond(a,b))},"MCview.Atom,MCview.Atom");d(c$,"makeResidueList",function(a){var b=0,c,f=c=!1,d=new StringBuilder(256),e=new java.util.Vector,g=new java.util.Vector,
+h,j=this.atoms.size()-1,n=-1;for(h=0;h<=j;h++){var m=n=this.atoms.elementAt(h).resNumber;0==h&&(this.offset=n);for(c=new java.util.Vector;n==m&&h<this.atoms.size();)c.add(this.atoms.elementAt(h)),h++,h<this.atoms.size()?n=this.atoms.elementAt(h).resNumber:n++;h--;this.residues.addElement(new MCview.Residue(c,n-1,b));m=this.residues.lastElement().atoms.get(0);c=new jalview.datamodel.SequenceFeature("RESNUM",m.resName+":"+m.resNumIns+" "+this.pdbid+this.id,"",this.offset+b,this.offset+b,this.pdbid);
+e.addElement(c);g.addElement(new jalview.datamodel.Annotation(m.tfactor));if(null==(c=jalview.schemes.ResidueProperties.getAA3Hash().get(m.resName))){var u=m.resName.trim();c=2==u.length&&jalview.schemes.ResidueProperties.aaIndex[u.charCodeAt(0)]==jalview.schemes.ResidueProperties.aaIndex[68];m.name.equalsIgnoreCase("CA")||-1==jalview.schemes.ResidueProperties.nucleotideIndex[u.charCodeAt(c?1:0)]?d.append("X"):(f=!0,d.append(u.charAt(c?1:0)))}else f&&System.err.println("Warning: mixed nucleotide and amino acid chain.. its gonna do bad things to you!"),
+d.append(jalview.schemes.ResidueProperties.aa[c.intValue()]);b++}1>this.id.length&&(this.id=" ");this.isNa=f;this.sequence=new jalview.datamodel.Sequence(this.id,d.toString(),this.offset,n-1);h=0;for(j=e.size();h<j;h++)this.sequence.addSequenceFeature(e.elementAt(h)),e.setElementAt(null,h);if(a){a=Array(g.size());h=b=0;for(j=a.length;h<j;h++)a[h]=g.elementAt(h),a[h].value>b&&(b=a[h].value),g.setElementAt(null,h);g=new jalview.datamodel.AlignmentAnnotation("Temperature Factor","Temperature Factor for "+
+this.pdbid+this.id,a,0,b,2);g.setSequenceRef(this.sequence);this.sequence.addAlignmentAnnotation(g)}},"~B");d(c$,"setChargeColours",function(){for(var a,b=this.bonds.iterator();b.hasNext()&&((a=b.next())||1);)null!=a.at1&&null!=a.at2?(a.startCol=MCview.PDBChain.getChargeColour(a.at1.resName),a.endCol=MCview.PDBChain.getChargeColour(a.at2.resName)):(a.startCol=java.awt.Color.gray,a.endCol=java.awt.Color.gray)});c$.getChargeColour=d(c$,"getChargeColour",function(a){var b=java.awt.Color.lightGray;"ASP".equals(a)||
+"GLU".equals(a)?b=java.awt.Color.red:"LYS".equals(a)||"ARG".equals(a)?b=java.awt.Color.blue:"CYS".equals(a)&&(b=java.awt.Color.yellow);return b},"~S");d(c$,"setChainColours",function(a){for(var b,c,f=this.bonds.iterator();f.hasNext()&&((c=f.next())||1);)try{b=jalview.schemes.ResidueProperties.aa3Hash.get(c.at1.resName).intValue(),c.startCol=a.findColour(jalview.schemes.ResidueProperties.aa[b].charAt(0)),b=jalview.schemes.ResidueProperties.aa3Hash.get(c.at2.resName).intValue(),c.endCol=a.findColour(jalview.schemes.ResidueProperties.aa[b].charAt(0))}catch(d){if(y(d,
+Exception))c.startCol=java.awt.Color.gray,c.endCol=java.awt.Color.gray;else throw d;}},"jalview.schemes.ColourSchemeI");d(c$,"setChainColours",function(a){for(var b,c=this.bonds.iterator();c.hasNext()&&((b=c.next())||1);)b.startCol=a,b.endCol=a},"java.awt.Color");d(c$,"transferResidueAnnotation",function(a,b){var c=a.getSequence(),f=c;if(null!=c){for(;null!=f.getDatasetSequence();)f=f.getDatasetSequence();if(null!=this.shadow&&null!=this.shadow.getAnnotation())for(var d,e=0,g=this.shadow.getAnnotation();e<
+g.length&&((d=g[e])||1);e++){var h=c.getAlignmentAnnotations(d.getCalcId(),d.label);if(null==h||0==h.size())d=new jalview.datamodel.AlignmentAnnotation(d),d.liftOver(this.sequence,this.shadowMap),d.liftOver(f,b),f.addAlignmentAnnotation(d)}else if(null!=this.sequence&&null!=this.sequence.getAnnotation()){e=0;for(g=this.sequence.getAnnotation();e<g.length&&((d=g[e])||1);e++)if(h=c.getAlignmentAnnotations(d.getCalcId(),d.label),null==h||0==h.size())d=new jalview.datamodel.AlignmentAnnotation(d),d.liftOver(f,
+b)}}},"jalview.structure.StructureMapping,jalview.datamodel.Mapping");G(c$,"PDBFILEFEATURE","PDBFile","IEASTATUS","IEA:jalview")});p("MCview");q(["java.awt.Color"],"MCview.Bond",null,function(){c$=s(function(){this.at2=this.at1=this.endCol=this.startCol=this.end=this.start=null;r(this,arguments)},MCview,"Bond");J(c$,function(){this.endCol=this.startCol=java.awt.Color.lightGray});m(c$,function(a,b){this.start=Q(-1,[a.x,a.y,a.z]);this.end=Q(-1,[b.x,b.y,b.z]);this.startCol=a.color;this.endCol=b.color;
+this.at1=a;this.at2=b},"MCview.Atom,MCview.Atom");d(c$,"translate",function(a,b,c){this.start[0]+=a;this.end[0]+=a;this.start[1]+=b;this.end[1]+=b;this.start[2]+=c;this.end[2]+=c},"~N,~N,~N")});p("MCview");c$=s(function(){this.atoms=null;this.count=this.number=0;r(this,arguments)},MCview,"Residue");m(c$,function(a,b,c){this.atoms=a;this.number=b;this.count=c},"java.util.Vector,~N,~N");d(c$,"findAtom",function(a){for(var b,c=this.atoms.iterator();c.hasNext()&&((b=c.next())||1);)if(b.name.equals(a))return b;
+return null},"~S");p("jalview.structure");c$=s(function(){this.chain=this.pdbFile=null;this.atomIndex=this.pdbResNum=0;r(this,arguments)},jalview.structure,"AtomSpec");m(c$,function(a,b,c,f){this.pdbFile=a;this.chain=b;this.pdbResNum=c;this.atomIndex=f},"~S,~S,~N,~N");d(c$,"getPdbFile",function(){return this.pdbFile});d(c$,"getChain",function(){return this.chain});d(c$,"getPdbResNum",function(){return this.pdbResNum});d(c$,"getAtomIndex",function(){return this.atomIndex});e(c$,"toString",function(){return"pdbFile: "+
+this.pdbFile+", chain: "+this.chain+", res: "+this.pdbResNum+", atom: "+this.atomIndex});p("jalview.structure");M(jalview.structure,"SecondaryStructureListener");p("jalview.structure");M(jalview.structure,"SequenceListener");p("jalview.structure");M(jalview.structure,"StructureListener");p("jalview.structure");q(null,"jalview.structure.StructureMapping",["jalview.datamodel.AlignmentAnnotation"],function(){c$=s(function(){this.mapping=this.pdbchain=this.pdbid=this.pdbfile=this.sequence=this.mappingDetails=
+null;r(this,arguments)},jalview.structure,"StructureMapping");m(c$,function(a,b,c,f,d,e){this.sequence=a;this.pdbfile=b;this.pdbid=c;this.pdbchain=f;this.mapping=d;this.mappingDetails=e},"jalview.datamodel.SequenceI,~S,~S,~S,~A,~S");d(c$,"getSequence",function(){return this.sequence});d(c$,"getChain",function(){return this.pdbchain});d(c$,"getPdbId",function(){return this.pdbid});d(c$,"getAtomNum",function(a){return this.mapping.length>a?this.mapping[a][1]:0},"~N");d(c$,"getPDBResNum",function(a){return this.mapping.length>
+a?this.mapping[a][0]:0},"~N");d(c$,"getSeqPos",function(a){for(var b=0;b<this.mapping.length;b++)if(this.mapping[b][0]==a)return b;return-1},"~N");d(c$,"transfer",function(a){a=new jalview.datamodel.AlignmentAnnotation(a);for(var b=this.sequence;null!=b.getDatasetSequence();)b=b.getDatasetSequence();a.remap(b,this.mapping,-1,-1,0);b.addAlignmentAnnotation(a);b!==this.sequence&&(a=new jalview.datamodel.AlignmentAnnotation(a),this.sequence.addAlignmentAnnotation(a));return a},"jalview.datamodel.AlignmentAnnotation")});
+p("jalview.structure");M(jalview.structure,"VamsasListener");p("jalview.appletgui");q(["awt2swing.Panel","jalview.api.AlignmentViewPanel","java.awt.event.AdjustmentListener","awt2swing.Scrollbar"],"jalview.appletgui.AlignmentPanel","awt2swing.Frame jalview.analysis.AnnotationSorter jalview.appletgui.AnnotationLabels $.AnnotationPanel $.FeatureRenderer $.IdPanel $.IdwidthAdjuster $.PaintRefresher $.ScalePanel $.SeqPanel jalview.bin.JalviewLite jalview.structure.StructureSelectionManager java.awt.BorderLayout $.Color $.Dimension java.awt.event.ComponentAdapter java.beans.PropertyChangeListener".split(" "),
+function(){c$=s(function(){this.alabels=this.annotationPanel=this.scalePanel=this.alignFrame=this.idwidthAdjuster=this.idPanel=this.seqPanel=this.overviewPanel=this.av=null;this.fastPaint=!0;this.vextent=this.hextent=0;this.apvscroll=this.annotationPanelHolder=this.hscrollFillerPanel=this.annotationSpaceFillerHolder=this.idSpaceFillerPanel1=this.idPanelHolder=this.scalePanelHolder=this.seqPanelHolder=this.hscroll=this.vscroll=this.sequenceHolderPanel=null;this.followingComplementScroll=!1;r(this,
+arguments)},jalview.appletgui,"AlignmentPanel",awt2swing.Panel,[java.awt.event.AdjustmentListener,jalview.api.AlignmentViewPanel]);J(c$,function(){this.sequenceHolderPanel=new awt2swing.Panel;this.vscroll=new awt2swing.Scrollbar;this.hscroll=new awt2swing.Scrollbar;this.seqPanelHolder=new awt2swing.Panel;this.scalePanelHolder=new awt2swing.Panel;this.idPanelHolder=new awt2swing.Panel;this.idSpaceFillerPanel1=new awt2swing.Panel;this.annotationSpaceFillerHolder=new awt2swing.Panel;this.hscrollFillerPanel=
+new awt2swing.Panel;this.annotationPanelHolder=new awt2swing.Panel;this.apvscroll=new awt2swing.Scrollbar});e(c$,"finalize",function(){this.annotationSpaceFillerHolder=this.annotationPanelHolder=this.annotationPanel=this.scalePanelHolder=this.scalePanel=this.sequenceHolderPanel=this.seqPanelHolder=this.seqPanel=this.av=this.alignFrame=null});m(c$,function(a,b){t(this,jalview.appletgui.AlignmentPanel,[]);this.setName("alignmentPanel");try{this.jbInit()}catch(c){if(y(c,Exception))c.printStackTrace();
+else throw c;}this.alignFrame=a;this.av=b;this.seqPanel=new jalview.appletgui.SeqPanel(b,this);this.idPanel=new jalview.appletgui.IdPanel(b,this);this.scalePanel=new jalview.appletgui.ScalePanel(b,this);this.idwidthAdjuster=new jalview.appletgui.IdwidthAdjuster(this);this.annotationPanel=new jalview.appletgui.AnnotationPanel(this);this.annotationPanelHolder.add(this.annotationPanel,"Center");this.sequenceHolderPanel.add(this.annotationPanelHolder,"South");this.alabels=new jalview.appletgui.AnnotationLabels(this);
+this.setAnnotationVisible(b.isShowAnnotation());this.idPanelHolder.add(this.idPanel,"Center");this.idSpaceFillerPanel1.add(this.idwidthAdjuster,"Center");this.annotationSpaceFillerHolder.add(this.alabels,"Center");this.scalePanelHolder.add(this.scalePanel,"Center");this.seqPanelHolder.add(this.seqPanel,"Center");this.fontChanged();this.setScrollValues(0,0);this.apvscroll.addAdjustmentListener(this);this.hscroll.addAdjustmentListener(this);this.vscroll.addAdjustmentListener(this);this.addComponentListener((H("jalview.appletgui.AlignmentPanel$1")?
+0:jalview.appletgui.AlignmentPanel.$AlignmentPanel$1$(),C(jalview.appletgui.AlignmentPanel$1,this,T("av",b))));var f=this.calculateIdWidth();this.idPanel.idCanvas.setSize(f);this.hscrollFillerPanel.setSize(f.width,this.annotationPanel.getSize().height);this.idPanel.idCanvas.setSize(f.width,this.seqPanel.seqCanvas.getSize().height);this.annotationSpaceFillerHolder.setSize(f.width,this.annotationPanel.getSize().height);this.alabels.setSize(f.width,this.annotationPanel.getSize().height);b.addPropertyChangeListener((H("jalview.appletgui.AlignmentPanel$2")?
+0:jalview.appletgui.AlignmentPanel.$AlignmentPanel$2$(),C(jalview.appletgui.AlignmentPanel$2,this,T("ap",this,"av",b))))},"jalview.appletgui.AlignFrame,jalview.appletgui.AlignViewport");e(c$,"getAlignViewport",function(){return this.av});d(c$,"getSequenceRenderer",function(){return this.seqPanel.seqCanvas.sr});e(c$,"getFeatureRenderer",function(){return this.seqPanel.seqCanvas.fr});e(c$,"cloneFeatureRenderer",function(){var a=new jalview.appletgui.FeatureRenderer(this.av);a.transferSettings(this.seqPanel.seqCanvas.fr);
+return a});d(c$,"alignmentChanged",function(){this.av.alignmentChanged(this);null!=this.overviewPanel&&this.overviewPanel.updateOverviewImage();this.alignFrame.updateEditMenuBar();this.repaint()});d(c$,"fontChanged",function(){this.idPanel.idCanvas.image=null;var a=this.getFontMetrics(this.av.getFont());this.scalePanel.setSize(new java.awt.Dimension(10,this.av.getCharHeight()+a.getDescent()));this.idwidthAdjuster.setSize(new java.awt.Dimension(10,this.av.getCharHeight()+a.getDescent()));this.av.updateSequenceIdColours();
+this.annotationPanel.image=null;var a=this.annotationPanel.adjustPanelHeight(!1),b=this.calculateIdWidth();b.setSize(b.width+4,this.seqPanel.seqCanvas.getSize().height);this.alabels.setSize(b.width+4,a);this.idPanel.idCanvas.setSize(b);this.hscrollFillerPanel.setSize(b);this.validateAnnotationDimensions(!1);this.annotationPanel.repaint();this.validate();this.repaint();null!=this.overviewPanel&&this.overviewPanel.updateOverviewImage()});d(c$,"setIdWidth",function(a,b){this.idPanel.idCanvas.setSize(a,
+b);this.idPanelHolder.setSize(a,this.idPanelHolder.getSize().height);this.annotationSpaceFillerHolder.setSize(a,this.annotationSpaceFillerHolder.getSize().height);this.alabels.setSize(a,this.alabels.getSize().height);this.validate()},"~N,~N");d(c$,"calculateIdWidth",function(){null==this.av.nullFrame&&(this.av.nullFrame=new awt2swing.Frame,this.av.nullFrame.addNotify(),this.av.nullFrame.setFont(this.av.font));for(var a=this.av.nullFrame.getGraphics(),b=a.getFontMetrics(this.av.font),c=this.av.getAlignment(),
+f=0,d=0,e;f<c.getHeight()&&null!=c.getSequenceAt(f);)e=c.getSequenceAt(f).getDisplayId(this.av.getShowJVSuffix()),b.stringWidth(e)>d&&(d=b.stringWidth(e)),f++;f=0;if(null!=c.getAlignmentAnnotation())for(b=a.getFontMetrics(this.av.nullFrame.getFont());f<c.getAlignmentAnnotation().length;)a=c.getAlignmentAnnotation()[f].label,b.stringWidth(a)>d&&(d=b.stringWidth(a)),f++;return new java.awt.Dimension(d,this.idPanel.idCanvas.getSize().height)});d(c$,"highlightSearchResults",function(a){this.scrollToPosition(a);
+this.seqPanel.seqCanvas.highlightSearchResults(a)},"jalview.datamodel.SearchResults");d(c$,"scrollToPosition",function(a){return this.scrollToPosition(a,!0)},"jalview.datamodel.SearchResults");d(c$,"scrollToPosition",function(a,b){return this.scrollToPosition(a,b,!1)},"jalview.datamodel.SearchResults,~B");d(c$,"scrollToPosition",function(a,b,c){if(null!=a&&0<a.getSize()){var f=this.av.getAlignment(),d=f.findIndex(a);if(-1==d)return!1;var e=f.getSequenceAt(d),f=a.getResults(e,0,f.getWidth());if(null==
+f)return jalview.bin.JalviewLite.debug&&System.out.println("DEBUG: scroll didn't happen - results not within alignment : "+e.getStart()+","+e.getEnd()),!1;a=f[0];f=f[1];c&&(c=F((this.av.getEndRes()-this.av.getStartRes()+1)/2)-1,a=Math.max(a-c,0),f=Math.min(f+c,e.getEnd()-1));return 0>a||f==e.getEnd()?!1:this.scrollTo(a,f,d,!1,b)}return!0},"jalview.datamodel.SearchResults,~B,~B");d(c$,"scrollTo",function(a,b,c,f,d){var e,g,h,j,n=-1;if(this.av.hasHiddenColumns()){if(n=this.av.getColumnSelection().findColumnPosition(a),
+b=this.av.getColumnSelection().findColumnPosition(b),n==b&&!f&&!this.av.getColumnSelection().isVisible(a))return!1}else n=a;this.av.getWrapAlignment()?this.scrollToWrappedVisible(n):(e=this.av.getStartRes())>=n?this.setScrollValues(n-1,c):(g=this.av.getEndRes())<=b?this.setScrollValues(e+1+b-g,c):(h=this.av.getStartSeq())>c?this.setScrollValues(this.av.getStartRes(),c):(j=this.av.getEndSeq())<=c&&this.setScrollValues(this.av.getStartRes(),h+c-j+1);d&&null!=this.overviewPanel&&this.overviewPanel.setBoxPosition();
+this.paintAlignment(d);return!0},"~N,~N,~N,~B,~B");d(c$,"scrollToWrappedVisible",function(a){var b=this.seqPanel.seqCanvas.getWrappedCanvasWidth(this.seqPanel.seqCanvas.getSize().width);if(a<=this.av.getStartRes()||a>=this.av.getStartRes()+b)this.vscroll.setValue(F(a/b)),this.av.startRes=this.vscroll.getValue()*b},"~N");d(c$,"getOverviewPanel",function(){return this.overviewPanel});d(c$,"setOverviewPanel",function(a){this.overviewPanel=a},"jalview.appletgui.OverviewPanel");d(c$,"setAnnotationVisible",
+function(a){this.av.getWrapAlignment()?(this.annotationSpaceFillerHolder.setVisible(!1),this.annotationPanelHolder.setVisible(!1)):(this.annotationSpaceFillerHolder.setVisible(a),this.annotationPanelHolder.setVisible(a));this.validate();this.repaint()},"~B");e(c$,"adjustAnnotationHeight",function(){0==this.alignFrame.getSize().height&&System.out.println("adjustAnnotationHeight frame size zero NEEDS FIXING");this.fontChanged();this.validateAnnotationDimensions(!0);this.apvscroll.addNotify();this.hscroll.addNotify();
+this.validate();this.paintAlignment(!0)});d(c$,"validateAnnotationDimensions",function(a){var b=this.av.getCharHeight(),c=b*this.av.getAlignment().getHeight(),f=this.av.calcPanelHeight(),d=f,e=this.sequenceHolderPanel.getSize(),g=e.height-this.scalePanelHolder.getHeight();a?f+c>g&&(f=Math.min(f,g-2*b)):f=this.annotationPanelHolder.getSize().height;5>g-f&&(f=g);this.annotationPanel.setSize(new java.awt.Dimension(e.width,f));this.annotationPanelHolder.setSize(new java.awt.Dimension(e.width,f));this.seqPanel.seqCanvas.setSize(e.width,
+this.seqPanel.seqCanvas.getSize().height);a=this.idPanel.getSize();this.alabels.setSize(new java.awt.Dimension(a.width,f));this.annotationSpaceFillerHolder.setSize(new java.awt.Dimension(a.width,f));a=this.apvscroll.getValue();a>d-f&&(a=0);this.apvscroll.setValues(a,f,0,d);this.annotationPanel.setScrollOffset(this.apvscroll.getValue(),!1);this.alabels.setScrollOffset(this.apvscroll.getValue(),!1)},"~B");d(c$,"setWrapAlignment",function(a){this.av.startSeq=0;this.av.startRes=0;this.scalePanelHolder.setVisible(!a);
+this.hscroll.setVisible(!a);this.idwidthAdjuster.setVisible(!a);a?(this.annotationPanelHolder.setVisible(!1),this.annotationSpaceFillerHolder.setVisible(!1)):this.av.isShowAnnotation()&&(this.annotationPanelHolder.setVisible(!0),this.annotationSpaceFillerHolder.setVisible(!0));this.idSpaceFillerPanel1.setVisible(!a);this.fontChanged();this.validate();this.sequenceHolderPanel.validate();this.repaint()},"~B");d(c$,"scrollUp",function(a){if(a){if(1>this.vscroll.getValue())return!1;this.setScrollValues(this.hscroll.getValue(),
+this.vscroll.getValue()-1)}else{if(this.vextent+this.vscroll.getValue()>=this.av.getAlignment().getHeight())return!1;this.setScrollValues(this.hscroll.getValue(),this.vscroll.getValue()+1)}this.repaint();return!0},"~B");d(c$,"scrollRight",function(a){if(a){if(this.hextent+this.hscroll.getValue()>=this.av.getAlignment().getWidth())return!1;this.setScrollValues(this.hscroll.getValue()+1,this.vscroll.getValue())}else{if(1>this.hscroll.getValue())return!1;this.setScrollValues(this.hscroll.getValue()-
+1,this.vscroll.getValue())}this.repaint();return!0},"~B");d(c$,"setScrollValues",function(a,b){var c=this.av.getAlignment().getWidth(),f=this.av.getAlignment().getHeight();this.av.hasHiddenColumns()&&(c=this.av.getColumnSelection().findColumnPosition(c));0>a&&(a=0);this.hextent=F(this.seqPanel.seqCanvas.getSize().width/this.av.getCharWidth());this.vextent=F(this.seqPanel.seqCanvas.getSize().height/this.av.getCharHeight());this.hextent>c&&(this.hextent=c);this.vextent>f&&(this.vextent=f);this.hextent+
+a>c&&(System.err.println("hextent was "+this.hextent+" and x was "+a),a=c-this.hextent);this.vextent+b>f&&(b=f-this.vextent);0>b&&(b=0);0>a&&(System.err.println("x was "+a),a=0);this.av.setStartSeq(b);var d=b+this.vextent;d>this.av.getAlignment().getHeight()&&(d=this.av.getAlignment().getHeight());this.av.setEndSeq(d);this.av.setStartRes(a);this.av.setEndRes(a+F(this.seqPanel.seqCanvas.getSize().width/this.av.getCharWidth())-1);this.hscroll.setValues(a,this.hextent,0,c);this.vscroll.setValues(b,this.vextent,
+0,f);null!=this.overviewPanel&&this.overviewPanel.setBoxPosition();this.sendViewPosition()},"~N,~N");e(c$,"adjustmentValueChanged",function(a){if(null!=this.annotationPanel){var b=this.av.getStartRes(),c=this.av.getStartSeq();if(null==a||a.getSource()===this.apvscroll)this.annotationPanel.setScrollOffset(this.apvscroll.getValue(),!1),this.alabels.setScrollOffset(this.apvscroll.getValue(),!1);if(null==a||a.getSource()===this.hscroll){var f=this.hscroll.getValue();this.av.setStartRes(f);this.av.setEndRes(f+
+F(this.seqPanel.seqCanvas.getSize().width/this.av.getCharWidth())-1)}if(null==a||a.getSource()===this.vscroll)a=this.vscroll.getValue(),this.av.getWrapAlignment()?(a=this.seqPanel.seqCanvas.getWrappedCanvasWidth(this.seqPanel.seqCanvas.getSize().width),this.av.setStartRes(this.vscroll.getValue()*a),this.av.setEndRes((this.vscroll.getValue()+1)*a)):(this.av.setStartSeq(a),this.av.setEndSeq(a+F(this.seqPanel.seqCanvas.getSize().height/this.av.getCharHeight())));null!=this.overviewPanel&&this.overviewPanel.setBoxPosition();
+a=this.av.startRes-b;c=this.av.startSeq-c;this.av.getWrapAlignment()||!this.fastPaint||this.av.MAC?this.repaint():(a>this.av.endRes-this.av.startRes?a=this.av.endRes-this.av.startRes:a<this.av.startRes-this.av.endRes&&(a=this.av.startRes-this.av.endRes),this.idPanel.idCanvas.fastPaint(c),this.seqPanel.seqCanvas.fastPaint(a,c),this.scalePanel.repaint(),this.av.isShowAnnotation()&&this.annotationPanel.fastPaint(this.av.getStartRes()-b));this.sendViewPosition();this.isFollowingComplementScroll()?this.setFollowingComplementScroll(!1):
+(b=this.getComplementPanel(),this.av.scrollComplementaryAlignment(b))}},"java.awt.event.AdjustmentEvent");d(c$,"getComplementPanel",function(){var a=null;if(null!=this.alignFrame){var b=this.alignFrame.getSplitFrame();null!=b&&(b=b.getComplement(this.alignFrame),null!=b&&(a=b.alignPanel))}return a});d(c$,"scrollToCentre",function(a,b){for(var c=a.getResultSequence(0),f=0,d=!1,e,g=this.av.getAlignment().getSequences().iterator();g.hasNext()&&((e=g.next())||1);){if(c===e.getDatasetSequence()){d=!0;
+break}f++}d&&(f=Math.max(0,f-b),a.getResults().get(0).setSequence(this.av.getAlignment().getSequenceAt(f)),this.setFollowingComplementScroll(!0),this.scrollToPosition(a,!0,!0))},"jalview.datamodel.SearchResults,~N");d(c$,"sendViewPosition",function(){jalview.structure.StructureSelectionManager.getStructureSelectionManager(this.av.applet).sendViewPosition(this,this.av.startRes,this.av.endRes,this.av.startSeq,this.av.endSeq)});e(c$,"paintAlignment",function(a){(new jalview.analysis.AnnotationSorter(this.getAlignment(),
+this.av.isShowAutocalculatedAbove())).sort(this.getAlignment().getAlignmentAnnotation(),this.av.getSortAnnotationsBy());this.repaint();a&&(jalview.structure.StructureSelectionManager.getStructureSelectionManager(this.av.applet).sequenceColoursChanged(this),null!=this.overviewPanel&&this.overviewPanel.updateOverviewImage())},"~B");e(c$,"paintComponent",function(){System.out.println("alignframe paintcomp");this.invalidate();var a=this.idPanel.idCanvas.getSize(),b=this.seqPanel.seqCanvas.getSize().height;
+b!=a.height&&this.idPanel.idCanvas.setSize(a.width,b);this.av.getWrapAlignment()?(a=this.av.getAlignment().getWidth(),this.av.hasHiddenColumns()&&(a=this.av.getColumnSelection().findColumnPosition(a)-1),b=this.seqPanel.seqCanvas.getWrappedCanvasWidth(this.seqPanel.seqCanvas.getSize().width),0<b&&(a=F(a/b),this.vscroll.setMaximum(1+a),this.vscroll.setUnitIncrement(1),this.vscroll.setVisibleAmount(1))):this.setScrollValues(this.av.getStartRes(),this.av.getStartSeq())},"java.awt.Graphics");d(c$,"jbInit",
+function(){this.setLayout(new java.awt.BorderLayout);this.sequenceHolderPanel.setLayout(new java.awt.BorderLayout);this.seqPanelHolder.setLayout(new java.awt.BorderLayout);this.scalePanelHolder.setBackground(java.awt.Color.white);this.scalePanelHolder.setLayout(new java.awt.BorderLayout);this.idPanelHolder.setLayout(new java.awt.BorderLayout);this.idSpaceFillerPanel1.setBackground(java.awt.Color.white);this.idSpaceFillerPanel1.setLayout(new java.awt.BorderLayout);this.annotationSpaceFillerHolder.setBackground(java.awt.Color.white);
+this.annotationSpaceFillerHolder.setLayout(new java.awt.BorderLayout);this.hscroll.setOrientation(0);var a=new awt2swing.Panel;a.setLayout(new java.awt.BorderLayout);this.hscrollFillerPanel.setBackground(java.awt.Color.white);this.apvscroll.setOrientation(1);this.apvscroll.setVisible(!0);this.apvscroll.addAdjustmentListener(this);this.annotationPanelHolder.setBackground(java.awt.Color.white);this.annotationPanelHolder.setLayout(new java.awt.BorderLayout);this.annotationPanelHolder.add(this.apvscroll,
+"East");a.setBackground(java.awt.Color.white);this.seqPanelHolder.setBackground(java.awt.Color.white);this.idPanelHolder.setBackground(java.awt.Color.white);this.sequenceHolderPanel.add(this.scalePanelHolder,"North");this.sequenceHolderPanel.add(this.seqPanelHolder,"Center");this.seqPanelHolder.add(this.vscroll,"East");this.add(this.idPanelHolder,"West");this.idPanelHolder.add(this.idSpaceFillerPanel1,"North");this.idPanelHolder.add(this.annotationSpaceFillerHolder,"South");this.add(a,"South");a.add(this.hscroll,
+"Center");a.add(this.hscrollFillerPanel,"West");this.add(this.sequenceHolderPanel,"Center")});d(c$,"updateAnnotation",function(){this.updateAnnotation(!1)});d(c$,"updateAnnotation",function(a){this.updateAnnotation(a,!1)},"~B");d(c$,"updateAnnotation",function(a,b){this.av.updateGroupAnnotationSettings(a,b);this.adjustAnnotationHeight()},"~B,~B");e(c$,"getAlignment",function(){return this.av.getAlignment()});e(c$,"getViewName",function(){return this.getName()});e(c$,"getStructureSelectionManager",
+function(){return jalview.structure.StructureSelectionManager.getStructureSelectionManager(this.av.applet)});e(c$,"raiseOOMWarning",function(a,b){System.err.println("Out of memory whilst '"+a+"'");b.printStackTrace()},"~S,OutOfMemoryError");d(c$,"setFollowingComplementScroll",function(a){this.followingComplementScroll=a},"~B");d(c$,"isFollowingComplementScroll",function(){return this.followingComplementScroll});c$.$AlignmentPanel$1$=function(){A(self.c$);c$=L(jalview.appletgui,"AlignmentPanel$1",
+java.awt.event.ComponentAdapter);e(c$,"componentResized",function(){this.b$["jalview.appletgui.AlignmentPanel"].setScrollValues(this.f$.av.getStartRes(),this.f$.av.getStartSeq());0<this.b$["jalview.appletgui.AlignmentPanel"].getSize().height&&0<this.b$["jalview.appletgui.AlignmentPanel"].annotationPanelHolder.getSize().height&&this.b$["jalview.appletgui.AlignmentPanel"].validateAnnotationDimensions(!1);this.b$["jalview.appletgui.AlignmentPanel"].repaint()},"java.awt.event.ComponentEvent");c$=z()};
+c$.$AlignmentPanel$2$=function(){A(self.c$);c$=L(jalview.appletgui,"AlignmentPanel$2",null,java.beans.PropertyChangeListener);e(c$,"propertyChange",function(a){a.getPropertyName().equals("alignment")&&(jalview.appletgui.PaintRefresher.Refresh(this.f$.ap,this.f$.av.getSequenceSetId(),!0,!0),this.b$["jalview.appletgui.AlignmentPanel"].alignmentChanged())},"java.beans.PropertyChangeEvent");c$=z()}});p("jalview.api");q(["jalview.api.OOMHandlerI"],"jalview.api.AlignmentViewPanel",null,function(){M(jalview.api,
+"AlignmentViewPanel",jalview.api.OOMHandlerI)});p("jalview.api");M(jalview.api,"OOMHandlerI");p("awt2swing");q(["javax.swing.JScrollBar"],"awt2swing.Scrollbar",null,function(){c$=B(awt2swing,"Scrollbar",javax.swing.JScrollBar);d(c$,"addChangeListener",function(a){this.addAdjustmentListener(a)},"javax.swing.event.ChangeListener");d(c$,"removeChangeListener",function(a){this.removeAdjustmentListener(a)},"javax.swing.event.ChangeListener")});p("javax.swing");q(["java.awt.Adjustable","javax.swing.JComponent",
+"javax.swing.event.ChangeListener"],"javax.swing.JScrollBar","java.lang.IllegalArgumentException java.awt.Dimension java.awt.event.AdjustmentEvent $.AdjustmentListener javax.swing.BoundedRangeModel $.DefaultBoundedRangeModel $.UIManager".split(" "),function(){c$=s(function(){this.model=this.fwdAdjustmentEvents=null;this.blockIncrement=this.unitIncrement=this.orientation=0;H("javax.swing.JScrollBar.ModelListener")||javax.swing.JScrollBar.$JScrollBar$ModelListener$();r(this,arguments)},javax.swing,
+"JScrollBar",javax.swing.JComponent,java.awt.Adjustable);J(c$,function(){this.fwdAdjustmentEvents=C(javax.swing.JScrollBar.ModelListener,this,null)});d(c$,"checkOrientation",function(a){switch(a){case 1:case 0:break;default:throw new IllegalArgumentException("orientation must be one of: VERTICAL, HORIZONTAL");}},"~N");m(c$,function(a,b,c,f,d){t(this,javax.swing.JScrollBar,[]);this.checkOrientation(a);this.unitIncrement=1;this.blockIncrement=0==c?1:c;this.orientation=a;this.model=new javax.swing.DefaultBoundedRangeModel(b,
+c,f,d);this.model.addChangeListener(this.fwdAdjustmentEvents);this.setRequestFocusEnabled(!1);this.updateUI()},"~N,~N,~N,~N,~N");m(c$,function(a){this.construct(a,0,10,0,100)},"~N");m(c$,function(){this.construct(1)});e(c$,"getUI",function(){return this.ui});e(c$,"updateUI",function(){this.setUI(javax.swing.UIManager.getUI(this))});e(c$,"getUIClassID",function(){return"ScrollBarUI"});e(c$,"getOrientation",function(){return this.orientation});d(c$,"setOrientation",function(a){this.checkOrientation(a);
+var b=this.orientation;this.orientation=a;this.firePropertyChangeInt("orientation",b,a);a!=b&&this.revalidate()},"~N");d(c$,"getModel",function(){return this.model});d(c$,"setModel",function(a){var b=this.model;null!=this.model&&this.model.removeChangeListener(this.fwdAdjustmentEvents);this.model=a;null!=this.model&&this.model.addChangeListener(this.fwdAdjustmentEvents);this.firePropertyChangeObject("model",b,this.model)},"javax.swing.BoundedRangeModel");d(c$,"getUnitIncrement",function(){return this.unitIncrement},
+"~N");e(c$,"setUnitIncrement",function(a){var b=this.unitIncrement;this.unitIncrement=a;this.firePropertyChangeInt("unitIncrement",b,a)},"~N");d(c$,"getBlockIncrement",function(){return this.blockIncrement},"~N");e(c$,"setBlockIncrement",function(a){var b=this.blockIncrement;this.blockIncrement=a;this.firePropertyChangeInt("blockIncrement",b,a)},"~N");d(c$,"getUnitIncrement",function(){return this.unitIncrement});d(c$,"getBlockIncrement",function(){return this.blockIncrement});e(c$,"getValue",function(){return this.getModel().getValue()});
+e(c$,"setValue",function(a){this.getModel().setValue(a)},"~N");e(c$,"getVisibleAmount",function(){return this.getModel().getExtent()});e(c$,"setVisibleAmount",function(a){this.getModel().setExtent(a)},"~N");e(c$,"getMinimum",function(){return this.getModel().getMinimum()});e(c$,"setMinimum",function(a){this.getModel().setMinimum(a)},"~N");e(c$,"getMaximum",function(){return this.getModel().getMaximum()});e(c$,"setMaximum",function(a){this.getModel().setMaximum(a)},"~N");d(c$,"getValueIsAdjusting",
+function(){return this.getModel().getValueIsAdjusting()});d(c$,"setValueIsAdjusting",function(a){this.getModel().setValueIsAdjusting(a)},"~B");d(c$,"setValues",function(a,b,c,f){var d=this.getModel();d.setRangeProperties(a,b,c,f,d.getValueIsAdjusting())},"~N,~N,~N,~N");e(c$,"addAdjustmentListener",function(a){this.listenerList.add(java.awt.event.AdjustmentListener,a)},"java.awt.event.AdjustmentListener");e(c$,"removeAdjustmentListener",function(a){this.listenerList.remove(java.awt.event.AdjustmentListener,
+a)},"java.awt.event.AdjustmentListener");d(c$,"getAdjustmentListeners",function(){return this.listenerList.getListeners(java.awt.event.AdjustmentListener)});d(c$,"fireAdjustmentValueChanged",function(a,b,c){this.fireAdjustmentValueChanged(a,b,c,this.getValueIsAdjusting())},"~N,~N,~N");d(c$,"fireAdjustmentValueChanged",function(a,b,c,f){for(var d=this.listenerList.getListenerList(),e=null,g=d.length-2;0<=g;g-=2)d[g]===java.awt.event.AdjustmentListener&&(null==e&&(e=new java.awt.event.AdjustmentEvent(this,
+a,b,c,f)),d[g+1].adjustmentValueChanged(e))},"~N,~N,~N,~B");e(c$,"getMinimumSize",function(){var a=this.getPreferredSize();return 1==this.orientation?new java.awt.Dimension(a.width,5):new java.awt.Dimension(5,a.height)});e(c$,"getMaximumSize",function(){var a=this.getPreferredSize();return 1==this.getOrientation()?new java.awt.Dimension(a.width,32767):new java.awt.Dimension(32767,a.height)});d(c$,"setEnabled",function(a){K(this,javax.swing.JScrollBar,"setEnabled",[a]);for(var b=this.getComponents(),
+c=0;c<b.length;c++)b[c].setEnabled(a)},"~B");d(c$,"paramString",function(){var a=0==this.orientation?"HORIZONTAL":"VERTICAL";return K(this,javax.swing.JScrollBar,"paramString",[])+",blockIncrement="+this.blockIncrement+",orientation="+a+",unitIncrement="+this.unitIncrement});c$.$JScrollBar$ModelListener$=function(){A(self.c$);c$=s(function(){O(this,arguments);r(this,arguments)},javax.swing.JScrollBar,"ModelListener",null,javax.swing.event.ChangeListener);e(c$,"stateChanged",function(a){var b=a.getSource();
+v(b,javax.swing.BoundedRangeModel)&&(a=b.getValue(),b=b.getValueIsAdjusting(),this.b$["javax.swing.JScrollBar"].fireAdjustmentValueChanged(601,5,a,b))},"javax.swing.event.ChangeEvent");c$=z()};G(c$,"$uiClassID","ScrollBarUI")});p("java.awt");c$=M(java.awt,"Adjustable");G(c$,"HORIZONTAL",0,"VERTICAL",1,"NO_ORIENTATION",2);p("java.awt.event");q(["java.awt.AWTEvent"],"java.awt.event.AdjustmentEvent",null,function(){c$=s(function(){this.adjustable=null;this.adjustmentType=this.value=0;this.isAdjusting=
+!1;r(this,arguments)},java.awt.event,"AdjustmentEvent",java.awt.AWTEvent);m(c$,function(a,b,c,f){this.construct(a,b,c,f,!1)},"java.awt.Adjustable,~N,~N,~N");m(c$,function(a,b,c,f,d){t(this,java.awt.event.AdjustmentEvent,[a,b]);this.adjustable=a;this.adjustmentType=c;this.value=f;this.isAdjusting=d},"java.awt.Adjustable,~N,~N,~N,~B");d(c$,"getAdjustable",function(){return this.adjustable});d(c$,"getValue",function(){return this.value});d(c$,"getAdjustmentType",function(){return this.adjustmentType});
+d(c$,"getValueIsAdjusting",function(){return this.isAdjusting});e(c$,"paramString",function(){var a;switch(this.id){case 601:a="ADJUSTMENT_VALUE_CHANGED";break;default:a="unknown type"}var b;switch(this.adjustmentType){case 1:b="UNIT_INCREMENT";break;case 2:b="UNIT_DECREMENT";break;case 4:b="BLOCK_INCREMENT";break;case 3:b="BLOCK_DECREMENT";break;case 5:b="TRACK";break;default:b="unknown type"}return a+",adjType="+b+",value="+this.value+",isAdjusting="+this.isAdjusting});G(c$,"ADJUSTMENT_FIRST",601,
+"ADJUSTMENT_LAST",601,"ADJUSTMENT_VALUE_CHANGED",601,"UNIT_INCREMENT",1,"UNIT_DECREMENT",2,"BLOCK_DECREMENT",3,"BLOCK_INCREMENT",4,"TRACK",5)});p("jalview.appletgui");q(["awt2swing.Panel","java.awt.event.ActionListener","$.MouseListener","$.MouseMotionListener"],"jalview.appletgui.AnnotationLabels","awt2swing.Checkbox $.CheckboxMenuItem $.Frame $.MenuItem $.PopupMenu $.Util jalview.analysis.AlignmentUtils jalview.appletgui.AlignFrame $.CutAndPasteTransfer $.EditNameDialog $.PaintRefresher $.Tooltip jalview.bin.JalviewLite jalview.datamodel.AlignmentAnnotation $.SequenceGroup jalview.util.MessageManager $.ParseHtmlBodyAndLinks java.awt.Color $.Dimension $.FlowLayout java.awt.event.ItemListener java.lang.StringBuffer java.util.Arrays $.Collections $.Vector".split(" "),
+function(){c$=s(function(){this.image=null;this.active=!1;this.av=this.ap=null;this.resizing=!1;this.scrollOffset=this.mouseX=this.oldY=0;this.selectedRow=-1;this.tooltip=null;this.resizePanel=this.hasHiddenRows=!1;this.dragEvent=null;this.dragCancelled=!1;r(this,arguments)},jalview.appletgui,"AnnotationLabels",awt2swing.Panel,[java.awt.event.ActionListener,java.awt.event.MouseListener,java.awt.event.MouseMotionListener]);m(c$,function(a){t(this,jalview.appletgui.AnnotationLabels,[]);this.ap=a;this.av=
+a.av;this.setLayout(null);this.addMouseListener(this);this.addMouseMotionListener(this)},"jalview.appletgui.AlignmentPanel");m(c$,function(a){t(this,jalview.appletgui.AnnotationLabels,[]);this.av=a},"jalview.appletgui.AlignViewport");d(c$,"setScrollOffset",function(a,b){this.scrollOffset=a;b&&this.repaint()},"~N,~B");d(c$,"getSelectedRow",function(a){var b=-2,c=this.ap.av.getAlignment().getAlignmentAnnotation();if(null==c)return b;for(var f=0,d=0;d<c.length;d++)if(b=-1,c[d].visible&&(f+=c[d].height,
+a<f)){b=d;break}return b},"~N");e(c$,"actionPerformed",function(a){var b=this.av.getAlignment().getAlignmentAnnotation();if(a.getActionCommand().equals(jalview.appletgui.AnnotationLabels.ADDNEW)){b=new jalview.datamodel.AlignmentAnnotation("",null,Array(this.ap.av.getAlignment().getWidth()));if(!this.editLabelDescription(b))return;this.ap.av.getAlignment().addAnnotation(b);this.ap.av.getAlignment().setAnnotationIndex(b,0)}else if(a.getActionCommand().equals(jalview.appletgui.AnnotationLabels.EDITNAME))this.editLabelDescription(b[this.selectedRow]);
+else if(a.getActionCommand().equals(jalview.appletgui.AnnotationLabels.HIDE))b[this.selectedRow].visible=!1;else if(a.getActionCommand().equals(jalview.appletgui.AnnotationLabels.SHOWALL))for(a=0;a<b.length;a++)b[a].visible=null==b[a].annotations?!1:!0;else if(a.getActionCommand().equals(jalview.appletgui.AnnotationLabels.OUTPUT_TEXT)){a=new jalview.appletgui.CutAndPasteTransfer(!1,this.ap.alignFrame);var c=new awt2swing.Frame;c.add(a);jalview.bin.JalviewLite.addFrame(c,this.ap.alignFrame.getTitle()+
+" - "+b[this.selectedRow].label,500,100);a.setText(b[this.selectedRow].toString())}else a.getActionCommand().equals(jalview.appletgui.AnnotationLabels.COPYCONS_SEQ)&&(b=this.av.getConsensusSeq(),null!=b&&this.copy_annotseqtoclipboard(b));this.refresh()},"java.awt.event.ActionEvent");d(c$,"refresh",function(){this.ap.annotationPanel.adjustPanelHeight();this.setSize(this.getSize().width,this.ap.annotationPanel.getSize().height);this.ap.validate();this.ap.paintAlignment(!0)});d(c$,"editLabelDescription",
+function(a){var b=new awt2swing.Checkbox('Fill Empty Gaps With "'+this.ap.av.getGapCharacter()+'"',a.padGaps),c=new jalview.appletgui.EditNameDialog(a.label,a.description,"      Annotation Label","Annotation Description",this.ap.alignFrame,"Edit Annotation Name / Description",500,180,!1),f=new awt2swing.Panel(new java.awt.FlowLayout);f.add(b);c.add(f);c.pack();c.setVisible(!0);return c.accept?(a.label=c.getName(),a.description=c.getDescription(),a.setPadGaps(b.getState(),this.av.getGapCharacter()),
+this.repaint(),!0):!1},"jalview.datamodel.AlignmentAnnotation");e(c$,"mouseMoved",function(a){this.resizePanel=10>a.getY()&&14>a.getX();a=this.getSelectedRow(a.getY()+this.scrollOffset);-1<a?(a=new jalview.util.ParseHtmlBodyAndLinks(this.av.getAlignment().getAlignmentAnnotation()[a].getDescription(!0),!0,"\n"),null==this.tooltip?this.tooltip=new jalview.appletgui.Tooltip(a.getNonHtmlContent(),this):this.tooltip.setTip(a.getNonHtmlContent())):null!=this.tooltip&&this.tooltip.setTip("")},"java.awt.event.MouseEvent");
+d(c$,"cancelDrag",function(){this.dragEvent=null;this.dragCancelled=!0});e(c$,"mouseDragged",function(a){if(!this.dragCancelled)if(this.dragEvent=a,this.resizePanel){var b=this.ap.annotationPanelHolder.getSize(),c=this.ap.annotationSpaceFillerHolder.getSize(),f=this.ap.seqPanelHolder.getSize();a=a.getY()-this.oldY;a/=this.ap.av.getCharHeight();a*=this.ap.av.getCharHeight();20<b.height-a&&20<f.height+a&&(this.ap.annotationPanel.setSize(b.width,b.height-a),this.setSize(new java.awt.Dimension(c.width,
+b.height-a)),this.ap.annotationSpaceFillerHolder.setSize(new java.awt.Dimension(c.width,b.height-a)),this.ap.annotationPanelHolder.setSize(new java.awt.Dimension(b.width,b.height-a)),this.ap.apvscroll.setValues(this.ap.apvscroll.getValue(),b.height-a,0,this.av.calcPanelHeight()),f.height+=a,this.ap.seqPanelHolder.setPreferredSize(f),this.ap.setScrollValues(this.av.getStartRes(),this.av.getStartSeq()),this.ap.validate(),this.ap.addNotify())}else{if(0<(b=6-a.getY()))this.ap.apvscroll.setValue(this.ap.apvscroll.getValue()-
+b),this.ap.adjustmentValueChanged(null);else if(0<(b=6-this.ap.annotationSpaceFillerHolder.getSize().height+a.getY()))this.ap.apvscroll.setValue(this.ap.apvscroll.getValue()+b),this.ap.adjustmentValueChanged(null);this.repaint()}},"java.awt.event.MouseEvent");e(c$,"mouseClicked",function(){},"java.awt.event.MouseEvent");e(c$,"mouseReleased",function(a){if(!this.resizePanel&&!this.dragCancelled){var b=this.selectedRow;a=this.getSelectedRow(a.getY()+this.scrollOffset);if(-1<b&&b!=a){var c=this.ap.av.getAlignment().getAlignmentAnnotation()[b];
+-1==a&&(a=this.ap.av.getAlignment().getAlignmentAnnotation().length-1);var f=this.ap.av.getAlignment().getAlignmentAnnotation()[a];this.ap.av.getAlignment().getAlignmentAnnotation()[a]=c;this.ap.av.getAlignment().getAlignmentAnnotation()[b]=f}}this.resizePanel=!1;this.dragEvent=null;this.dragCancelled=!1;this.repaint();this.ap.annotationPanel.repaint()},"java.awt.event.MouseEvent");e(c$,"mouseEntered",function(a){10>a.getY()&&14>a.getX()&&(this.resizePanel=!0,this.repaint())},"java.awt.event.MouseEvent");
+e(c$,"mouseExited",function(){this.dragCancelled=!1;null==this.dragEvent?this.resizePanel=!1:this.resizePanel||(this.dragEvent=null);this.repaint()},"java.awt.event.MouseEvent");e(c$,"mousePressed",function(a){this.oldY=a.getY();if(!this.resizePanel){this.dragCancelled=!1;this.selectedRow=this.getSelectedRow(a.getY()+this.scrollOffset);var b=this.ap.av.getAlignment().getAlignmentAnnotation();if(4==(a.getModifiers()&4)){var c=new awt2swing.PopupMenu(jalview.util.MessageManager.getString("label.annotations")),
+f=new awt2swing.MenuItem(jalview.appletgui.AnnotationLabels.ADDNEW);f.addActionListener(this);c.add(f);if(0>this.selectedRow)this.hasHiddenRows&&(f=new awt2swing.MenuItem(jalview.appletgui.AnnotationLabels.SHOWALL),f.addActionListener(this),c.add(f)),this.add(c);else{f=new awt2swing.MenuItem(jalview.appletgui.AnnotationLabels.EDITNAME);f.addActionListener(this);c.add(f);f=new awt2swing.MenuItem(jalview.appletgui.AnnotationLabels.HIDE);f.addActionListener(this);c.add(f);if(this.selectedRow<b.length&&
+null!=b[this.selectedRow].sequenceRef){var f=b[this.selectedRow].label,d=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.hide_all")+" "+f);d.addActionListener((H("jalview.appletgui.AnnotationLabels$1")?0:jalview.appletgui.AnnotationLabels.$AnnotationLabels$1$(),C(jalview.appletgui.AnnotationLabels$1,this,T("label",f))));c.add(d)}this.hasHiddenRows&&(f=new awt2swing.MenuItem(jalview.appletgui.AnnotationLabels.SHOWALL),f.addActionListener(this),c.add(f));this.add(c);f=new awt2swing.MenuItem(jalview.appletgui.AnnotationLabels.OUTPUT_TEXT);
+f.addActionListener(this);c.add(f);this.selectedRow<b.length&&(b[this.selectedRow].autoCalculated&&-1<b[this.selectedRow].label.indexOf("Consensus"))&&(c.addSeparator(),d=new awt2swing.CheckboxMenuItem(jalview.util.MessageManager.getString("label.ignore_gaps_consensus"),null!=b[this.selectedRow].groupRef?b[this.selectedRow].groupRef.getIgnoreGapsConsensus():this.ap.av.isIgnoreGapsConsensus()),f=b[this.selectedRow],d.addItemListener((H("jalview.appletgui.AnnotationLabels$2")?0:jalview.appletgui.AnnotationLabels.$AnnotationLabels$2$(),
+C(jalview.appletgui.AnnotationLabels$2,this,T("aaa",f,"cbmi",d)))),c.add(d),null!=f.groupRef?(d=new awt2swing.CheckboxMenuItem(jalview.util.MessageManager.getString("label.show_group_histogram"),b[this.selectedRow].groupRef.isShowConsensusHistogram()),d.addItemListener((H("jalview.appletgui.AnnotationLabels$3")?0:jalview.appletgui.AnnotationLabels.$AnnotationLabels$3$(),C(jalview.appletgui.AnnotationLabels$3,this,T("aaa",f,"chist",d)))),c.add(d),d=new awt2swing.CheckboxMenuItem(jalview.util.MessageManager.getString("label.show_group_logo"),
+b[this.selectedRow].groupRef.isShowSequenceLogo()),d.addItemListener((H("jalview.appletgui.AnnotationLabels$4")?0:jalview.appletgui.AnnotationLabels.$AnnotationLabels$4$(),C(jalview.appletgui.AnnotationLabels$4,this,T("aaa",f,"cprofl",d)))),c.add(d),b=new awt2swing.CheckboxMenuItem(jalview.util.MessageManager.getString("label.normalise_group_logo"),b[this.selectedRow].groupRef.isNormaliseSequenceLogo()),b.addItemListener((H("jalview.appletgui.AnnotationLabels$5")?0:jalview.appletgui.AnnotationLabels.$AnnotationLabels$5$(),
+C(jalview.appletgui.AnnotationLabels$5,this,T("aaa",f,"cprofn",b))))):(d=new awt2swing.CheckboxMenuItem(jalview.util.MessageManager.getString("label.show_histogram"),this.av.isShowConsensusHistogram()),d.addItemListener((H("jalview.appletgui.AnnotationLabels$6")?0:jalview.appletgui.AnnotationLabels.$AnnotationLabels$6$(),C(jalview.appletgui.AnnotationLabels$6,this,T("chist",d)))),c.add(d),b=new awt2swing.CheckboxMenuItem(jalview.util.MessageManager.getString("label.show_logo"),this.av.isShowSequenceLogo()),
+b.addItemListener((H("jalview.appletgui.AnnotationLabels$7")?0:jalview.appletgui.AnnotationLabels.$AnnotationLabels$7$(),C(jalview.appletgui.AnnotationLabels$7,this,T("cprof",b)))),c.add(b),b=new awt2swing.CheckboxMenuItem(jalview.util.MessageManager.getString("label.normalise_logo"),this.av.isNormaliseSequenceLogo()),b.addItemListener((H("jalview.appletgui.AnnotationLabels$8")?0:jalview.appletgui.AnnotationLabels.$AnnotationLabels$8$(),C(jalview.appletgui.AnnotationLabels$8,this,T("cprofn",b))))),
+c.add(b),f=new awt2swing.MenuItem(jalview.appletgui.AnnotationLabels.COPYCONS_SEQ),f.addActionListener(this),c.add(f))}c.show(this,a.getX(),a.getY())}else-1<this.selectedRow&&this.selectedRow<b.length&&(null!=b[this.selectedRow].groupRef?2<=a.getClickCount()?(this.ap.seqPanel.ap.idPanel.highlightSearchResults(null),this.ap.av.setSelectionGroup(b[this.selectedRow].groupRef),this.ap.av.sendSelection(),this.ap.paintAlignment(!1),jalview.appletgui.PaintRefresher.Refresh(this.ap,this.ap.av.getSequenceSetId())):
+this.ap.seqPanel.ap.idPanel.highlightSearchResults(b[this.selectedRow].groupRef.getSequences(null)):null!=b[this.selectedRow].sequenceRef&&(1==a.getClickCount()?this.ap.seqPanel.ap.idPanel.highlightSearchResults(java.util.Arrays.asList(E(-1,[b[this.selectedRow].sequenceRef]))):2<=a.getClickCount()&&(this.ap.seqPanel.ap.idPanel.highlightSearchResults(null),c=this.ap.av.getSelectionGroup(),null!=c?!a.isControlDown()&&!a.isShiftDown()?(c=new jalview.datamodel.SequenceGroup(c),c.clear(),c.addSequence(b[this.selectedRow].sequenceRef,
+!1)):a.isControlDown()?c.addOrRemove(b[this.selectedRow].sequenceRef,!0):c.addSequence(b[this.selectedRow].sequenceRef,!0):(c=new jalview.datamodel.SequenceGroup,c.setStartRes(0),c.setEndRes(this.ap.av.getAlignment().getWidth()-1),c.addSequence(b[this.selectedRow].sequenceRef,!1)),this.ap.av.setSelectionGroup(c),this.ap.paintAlignment(!1),jalview.appletgui.PaintRefresher.Refresh(this.ap,this.ap.av.getSequenceSetId()),this.ap.av.sendSelection())))}},"java.awt.event.MouseEvent");d(c$,"copy_annotseqtoclipboard",
+function(a){if(!(null==a||1>a.getLength()))if(jalview.appletgui.AlignFrame.copiedSequences=new StringBuffer,jalview.appletgui.AlignFrame.copiedSequences.append(a.getName()+"\t"+a.getStart()+"\t"+a.getEnd()+"\t"+a.getSequenceAsString()+"\n"),this.av.hasHiddenColumns()){jalview.appletgui.AlignFrame.copiedHiddenColumns=new java.util.Vector;var b;for(a=this.av.getColumnSelection().getHiddenColumns().iterator();a.hasNext()&&((b=a.next())||1);)jalview.appletgui.AlignFrame.copiedHiddenColumns.addElement(w(-1,
+[b[0],b[1]]))}},"jalview.datamodel.SequenceI");e(c$,"paintComponent",function(a){if(!this.av.getWrapAlignment()&&this.av.isShowAnnotation()){var b=this.getSize().width,c=this.getSize().height;if(null==this.image||b!=this.image.getWidth(this)||c!=this.image.getHeight(this))this.image=this.createImage(b,this.ap.annotationPanel.getSize().height);this.drawComponent(this.image.getGraphics(),b);a.drawImage(this.image,0,0,this)}},"java.awt.Graphics");d(c$,"drawComponent",function(a,b){a.setFont(this.av.getFont());
+var c=a.getFontMetrics(this.av.getFont());a.setColor(java.awt.Color.white);a.fillRect(0,0,this.getSize().width,this.getSize().height);a.translate(0,-this.scrollOffset);a.setColor(java.awt.Color.black);var f=this.av.getAlignment().getAlignmentAnnotation(),d=0,e=a.getFont().getSize(),g=0,h;if(null!=f){this.hasHiddenRows=!1;for(var j=0;j<f.length;j++)f[j].visible?(g=b-c.stringWidth(f[j].label)-3,d+=f[j].height,h=F(-(f[j].height-e)/2),awt2swing.Util.drawString(a,f[j].label,g,d+h)):this.hasHiddenRows=
+!0}a.translate(0,+this.scrollOffset);this.resizePanel?(a.setColor(java.awt.Color.red),a.setPaintMode(),a.drawLine(2,8,5,2),a.drawLine(5,2,8,8)):!this.dragCancelled&&(null!=this.dragEvent&&null!=f)&&(a.setColor(java.awt.Color.lightGray),awt2swing.Util.drawString(a,f[this.selectedRow].label,this.dragEvent.getX(),this.dragEvent.getY()));if(!this.av.getWrapAlignment()&&(null==f||1>f.length))a.setColor(java.awt.Color.black),awt2swing.Util.drawString(a,jalview.util.MessageManager.getString("label.right_click"),
+2,8),awt2swing.Util.drawString(a,jalview.util.MessageManager.getString("label.to_add_annotation"),2,18)},"java.awt.Graphics,~N");c$.$AnnotationLabels$1$=function(){A(self.c$);c$=L(jalview.appletgui,"AnnotationLabels$1",null,java.awt.event.ActionListener);e(c$,"actionPerformed",function(){jalview.analysis.AlignmentUtils.showOrHideSequenceAnnotations(this.b$["jalview.appletgui.AnnotationLabels"].ap.av.getAlignment(),java.util.Collections.singleton(this.f$.label),null,!1,!1);this.b$["jalview.appletgui.AnnotationLabels"].refresh()},
+"java.awt.event.ActionEvent");c$=z()};c$.$AnnotationLabels$2$=function(){A(self.c$);c$=L(jalview.appletgui,"AnnotationLabels$2",null,java.awt.event.ItemListener);e(c$,"itemStateChanged",function(){null!=this.f$.aaa.groupRef?this.f$.aaa.groupRef.setIgnoreGapsConsensus(this.f$.cbmi.getState()):this.b$["jalview.appletgui.AnnotationLabels"].ap.av.setIgnoreGapsConsensus(this.f$.cbmi.getState(),this.b$["jalview.appletgui.AnnotationLabels"].ap);this.b$["jalview.appletgui.AnnotationLabels"].ap.paintAlignment(!0)},
+"java.awt.event.ItemEvent");c$=z()};c$.$AnnotationLabels$3$=function(){A(self.c$);c$=L(jalview.appletgui,"AnnotationLabels$3",null,java.awt.event.ItemListener);e(c$,"itemStateChanged",function(){this.f$.aaa.groupRef.setShowConsensusHistogram(this.f$.chist.getState());this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint()},"java.awt.event.ItemEvent");c$=z()};c$.$AnnotationLabels$4$=function(){A(self.c$);c$=L(jalview.appletgui,"AnnotationLabels$4",null,java.awt.event.ItemListener);e(c$,"itemStateChanged",
+function(){this.f$.aaa.groupRef.setshowSequenceLogo(this.f$.cprofl.getState());this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint()},"java.awt.event.ItemEvent");c$=z()};c$.$AnnotationLabels$5$=function(){A(self.c$);c$=L(jalview.appletgui,"AnnotationLabels$5",null,java.awt.event.ItemListener);e(c$,"itemStateChanged",function(){this.f$.aaa.groupRef.setshowSequenceLogo(!0);this.f$.aaa.groupRef.setNormaliseSequenceLogo(this.f$.cprofn.getState());this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint()},
+"java.awt.event.ItemEvent");c$=z()};c$.$AnnotationLabels$6$=function(){A(self.c$);c$=L(jalview.appletgui,"AnnotationLabels$6",null,java.awt.event.ItemListener);e(c$,"itemStateChanged",function(){this.b$["jalview.appletgui.AnnotationLabels"].av.setShowConsensusHistogram(this.f$.chist.getState());this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.showConsensusHistogram.setState(this.f$.chist.getState());this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint()},"java.awt.event.ItemEvent");
+c$=z()};c$.$AnnotationLabels$7$=function(){A(self.c$);c$=L(jalview.appletgui,"AnnotationLabels$7",null,java.awt.event.ItemListener);e(c$,"itemStateChanged",function(){this.b$["jalview.appletgui.AnnotationLabels"].av.setShowSequenceLogo(this.f$.cprof.getState());this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.showSequenceLogo.setState(this.f$.cprof.getState());this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint()},"java.awt.event.ItemEvent");c$=z()};c$.$AnnotationLabels$8$=function(){A(self.c$);
+c$=L(jalview.appletgui,"AnnotationLabels$8",null,java.awt.event.ItemListener);e(c$,"itemStateChanged",function(){this.b$["jalview.appletgui.AnnotationLabels"].av.setShowSequenceLogo(!0);this.b$["jalview.appletgui.AnnotationLabels"].ap.alignFrame.normSequenceLogo.setState(this.f$.cprofn.getState());this.b$["jalview.appletgui.AnnotationLabels"].av.setNormaliseSequenceLogo(this.f$.cprofn.getState());this.b$["jalview.appletgui.AnnotationLabels"].ap.repaint()},"java.awt.event.ItemEvent");c$=z()};G(c$,
+"ADDNEW","Add New Row","EDITNAME","Edit Label/Description","HIDE","Hide This Row","SHOWALL","Show All Hidden Rows","OUTPUT_TEXT","Show Values In Textbox","COPYCONS_SEQ","Copy Consensus Sequence")});p("awt2swing");q(["javax.swing.JCheckBox"],"awt2swing.Checkbox",null,function(){c$=B(awt2swing,"Checkbox",javax.swing.JCheckBox);d(c$,"getState",function(){return this.isSelected()});d(c$,"setState",function(a){this.setSelected(a)},"~B")});p("jalview.appletgui");q("awt2swing.Panel java.awt.event.ActionListener $.MouseListener awt2swing.Button $.TextArea java.awt.BorderLayout".split(" "),
+"jalview.appletgui.CutAndPasteTransfer","awt2swing.Frame $.Label jalview.analysis.AlignmentUtils jalview.api.ComplexAlignFile jalview.appletgui.AlignFrame $.AppletJmol $.JVDialog $.SplitFrame jalview.datamodel.PDBEntry jalview.io.AnnotationFile $.AppletFormatAdapter $.IdentifyFile $.NewickFile jalview.jsdev.GenericFileAdapter jalview.schemes.TCoffeeColourScheme jalview.util.MessageManager java.awt.Font".split(" "),function(){c$=s(function(){this.annotationImport=this.treeImport=this.pdbImport=!1;
+this.borderLayout1=this.buttonPanel=this.$cancel=this.addSequences=this.accept=this.textarea=this.source=this.alignFrame=this.seq=null;r(this,arguments)},jalview.appletgui,"CutAndPasteTransfer",awt2swing.Panel,[java.awt.event.ActionListener,java.awt.event.MouseListener]);J(c$,function(){this.textarea=new awt2swing.TextArea;this.accept=new awt2swing.Button("New Window");this.addSequences=new awt2swing.Button("Add to Current Alignment");this.$cancel=new awt2swing.Button("Close");this.buttonPanel=new awt2swing.Panel;
+this.borderLayout1=new java.awt.BorderLayout});m(c$,function(a,b){t(this,jalview.appletgui.CutAndPasteTransfer,[]);try{this.jbInit()}catch(c){if(y(c,Exception))c.printStackTrace();else throw c;}this.alignFrame=b;a||this.buttonPanel.setVisible(!1)},"~B,jalview.appletgui.AlignFrame");d(c$,"getText",function(){return this.textarea.getText()});d(c$,"setText",function(a){this.textarea.setText(a)},"~S");d(c$,"setPDBImport",function(a){this.seq=a;this.accept.setLabel(jalview.util.MessageManager.getString("action.accept"));
+this.addSequences.setVisible(!1);this.pdbImport=!0},"jalview.datamodel.SequenceI");d(c$,"setTreeImport",function(){this.treeImport=!0;this.accept.setLabel(jalview.util.MessageManager.getString("action.accept"));this.addSequences.setVisible(!1)});d(c$,"setAnnotationImport",function(){this.annotationImport=!0;this.accept.setLabel(jalview.util.MessageManager.getString("action.accept"));this.addSequences.setVisible(!1)});e(c$,"actionPerformed",function(a){a.getSource()===this.accept?this.ok(!0):a.getSource()===
+this.addSequences?this.ok(!1):a.getSource()===this.$cancel&&this.cancel()},"java.awt.event.ActionEvent");d(c$,"ok",function(a){var b=this.getText(),c=b.length;this.textarea.append("\n");this.textarea.getText().length==c&&(this.textarea.setText(b.substring(0,b.length-265)+"\n\n#################################################\nWARNING!! THIS IS THE MAXIMUM SIZE OF TEXTAREA!!\n\nCAN'T INPUT FULL ALIGNMENT\n\nYOU MUST DELETE THIS WARNING TO CONTINUE\n\nMAKE SURE LAST SEQUENCE PASTED IS COMPLETE\n#################################################\n"),
+this.textarea.setCaretPosition(b.length));if(this.pdbImport)this.openPdbViewer(b);else if(this.treeImport){if(!this.loadTree())return}else this.annotationImport?this.loadAnnotations():null!=this.alignFrame&&this.loadAlignment(b,a,this.alignFrame.getAlignViewport());v(this.getParent(),awt2swing.Frame);this.getParent().setVisible(!1)},"~B");d(c$,"loadTree",function(){try{var a=new jalview.io.NewickFile(this.textarea.getText(),"Paste");a.parse();if(null!=a.getTree())return this.alignFrame.loadTree(a,
+"Pasted tree file"),!0}catch(b){if(y(b,Exception))this.textarea.setText(jalview.util.MessageManager.formatMessage("label.could_not_parse_newick_file",E(-1,[b.getMessage()])));else throw b;}return!1});d(c$,"loadAlignment",function(a,b){var c=null,f=(new jalview.io.IdentifyFile).Identify(a,jalview.io.AppletFormatAdapter.PASTE),d=new jalview.io.AppletFormatAdapter(this.alignFrame.alignPanel);try{c=d.readFile(a,jalview.io.AppletFormatAdapter.PASTE,f),this.source=d.getAlignFile()}catch(e){if(y(e,java.io.IOException))e.printStackTrace();
+else throw e;}if(null!=c&&(c.setDataset(null),!this.alignFrame.viewport.applet.getDefaultParameter("enableSplitFrame",!1)||!this.openSplitFrame(c,f)))if(b){if(v(this.source,jalview.api.ComplexAlignFile)){var g=this.source.getColumnSelection(),h=this.source.getHiddenSequences(),d=this.source.isShowSeqFeatures(),j=this.source.getColourScheme(),c=new jalview.appletgui.AlignFrame(c,h,g,this.alignFrame.viewport.applet,"Cut & Paste input - "+f,!1);c.getAlignViewport().setShowSequenceFeatures(d);c.changeColour(j)}else c=
+new jalview.appletgui.AlignFrame(c,this.alignFrame.viewport.applet,"Cut & Paste input - "+f,!1);c.setStatus(jalview.util.MessageManager.getString("label.successfully_pasted_annotation_to_alignment"))}else this.alignFrame.addSequences(c.getSequencesArray()),this.alignFrame.setStatus(jalview.util.MessageManager.getString("label.successfully_pasted_alignment_file"))},"~S,~B,jalview.appletgui.AlignViewport");d(c$,"openSplitFrame",function(a,b){var c=this.alignFrame.getAlignViewport().getAlignment();if(c.isNucleotide()==
+a.isNucleotide())return!1;var f=c.isNucleotide()?a:c,c=c.isNucleotide()?c:a;if(!jalview.analysis.AlignmentUtils.mapProteinToCdna(f,c))return!1;f=jalview.util.MessageManager.getString("label.open_split_window");f=new jalview.appletgui.JVDialog(this.getParent(),f,!0,100,400);f.ok.setLabel(jalview.util.MessageManager.getString("action.yes"));f.cancel.setLabel(jalview.util.MessageManager.getString("action.no"));var c=new awt2swing.Panel(new java.awt.BorderLayout),d=jalview.util.MessageManager.getString("label.open_split_window?");
+c.add(new awt2swing.Label(d,0),"Center");f.setMainPanel(c);f.setVisible(!0);f.toFront();if(!f.accept)return!1;var f=this.alignFrame.viewport.applet,d=new jalview.appletgui.AlignFrame(this.alignFrame.viewport.getAlignment(),f,this.alignFrame.getTitle(),!1,!1),e=new jalview.appletgui.AlignFrame(a,this.alignFrame.viewport.applet,"Cut & Paste input - "+b,!1,!1),c=a.isNucleotide()?e:d,d=a.isNucleotide()?d:e;(new jalview.appletgui.SplitFrame(c,d)).addToDisplay(!1,f);return!0},"jalview.datamodel.AlignmentI,~S");
+d(c$,"loadAnnotations",function(){var a=null;try{a=jalview.jsdev.GenericFileAdapter.getFile("TCoffeeScoreFile",[this.textarea.getText(),jalview.io.AppletFormatAdapter.PASTE]),a.isValid()?a.annotateAlignment(this.alignFrame.viewport.getAlignment(),!0)?(this.alignFrame.tcoffeeColour.setEnabled(!0),this.alignFrame.alignPanel.fontChanged(),this.alignFrame.changeColour(new jalview.schemes.TCoffeeColourScheme(this.alignFrame.viewport.getAlignment())),this.alignFrame.setStatus(jalview.util.MessageManager.getString("label.successfully_pasted_tcoffee_scores_to_alignment"))):
+this.alignFrame.setStatus(jalview.util.MessageManager.formatMessage("label.failed_add_tcoffee_scores",E(-1,[null!=a.getWarningMessage()?a.getWarningMessage():""]))):a=null}catch(b){if(y(b,Exception))a=null;else throw b;}null==a&&((new jalview.io.AnnotationFile).annotateAlignmentView(this.alignFrame.viewport,this.textarea.getText(),jalview.io.AppletFormatAdapter.PASTE)?(this.alignFrame.alignPanel.fontChanged(),this.alignFrame.alignPanel.setScrollValues(0,0),this.alignFrame.setStatus(jalview.util.MessageManager.getString("label.successfully_pasted_annotation_to_alignment"))):
+this.alignFrame.parseFeaturesFile(this.textarea.getText(),jalview.io.AppletFormatAdapter.PASTE)||this.alignFrame.setStatus(jalview.util.MessageManager.getString("label.couldnt_parse_pasted_text_as_valid_annotation_feature_GFF_tcoffee_file")))});d(c$,"openPdbViewer",function(a){var b=new jalview.datamodel.PDBEntry;b.setFile(a);new jalview.appletgui.AppletJmol(b,E(-1,[this.seq]),null,this.alignFrame.alignPanel,jalview.io.AppletFormatAdapter.PASTE)},"~S");d(c$,"cancel",function(){this.textarea.setText("");
+v(this.getParent(),awt2swing.Frame);this.getParent().setVisible(!1)});d(c$,"jbInit",function(){this.textarea.setFont(new java.awt.Font("Monospaced",0,10));this.textarea.setText(jalview.util.MessageManager.getString("label.paste_your_alignment_file"));this.textarea.addMouseListener(this);this.setLayout(this.borderLayout1);this.accept.addActionListener(this);this.addSequences.addActionListener(this);this.$cancel.addActionListener(this);this.add(this.buttonPanel,"South");this.buttonPanel.add(this.accept,
+null);this.buttonPanel.add(this.addSequences);this.buttonPanel.add(this.$cancel,null);this.add(this.textarea,"Center")});e(c$,"mousePressed",function(){this.textarea.getText().startsWith(jalview.util.MessageManager.getString("label.paste_your"))&&this.textarea.setText("")},"java.awt.event.MouseEvent");e(c$,"mouseReleased",function(){},"java.awt.event.MouseEvent");e(c$,"mouseClicked",function(){},"java.awt.event.MouseEvent");e(c$,"mouseEntered",function(){},"java.awt.event.MouseEvent");e(c$,"mouseExited",
+function(){},"java.awt.event.MouseEvent")});p("awt2swing");q(["javax.swing.JButton"],"awt2swing.Button",null,function(){c$=B(awt2swing,"Button",javax.swing.JButton)});p("awt2swing");q(["javax.swing.JTextArea"],"awt2swing.TextArea",null,function(){c$=B(awt2swing,"TextArea",javax.swing.JTextArea)});p("javax.swing");q(["javax.swing.text.JTextComponent"],"javax.swing.JTextArea","java.lang.IllegalArgumentException java.awt.Dimension javax.swing.JComponent $.LookAndFeel javax.swing.text.BadLocationException $.JSMinimalAbstractDocument swingjs.JSToolkit".split(" "),
+function(){c$=s(function(){this.rowHeight=this.columnWidth=this.columns=this.rows=0;this.word=this.wrap=!1;r(this,arguments)},javax.swing,"JTextArea",javax.swing.text.JTextComponent);m(c$,function(){this.construct(null,null,0,0)});m(c$,function(a){this.construct(null,a,0,0)},"~S");m(c$,function(a,b){this.construct(null,null,a,b)},"~N,~N");m(c$,function(a,b,c){this.construct(null,a,b,c)},"~S,~N,~N");m(c$,function(a){this.construct(a,null,0,0)},"javax.swing.text.Document");m(c$,function(a,b,c,f){t(this,
+javax.swing.JTextArea);this.rows=c;this.columns=f;null==a&&(a=this.createDefaultModel());this.setDocument(a);null!=b&&(this.setText(b),this.select(0,0));if(0>c)throw new IllegalArgumentException("rows: "+c);if(0>f)throw new IllegalArgumentException("columns: "+f);javax.swing.LookAndFeel.installProperty(this,"focusTraversalKeysForward",javax.swing.JComponent.getManagingFocusForwardTraversalKeys());javax.swing.LookAndFeel.installProperty(this,"focusTraversalKeysBackward",javax.swing.JComponent.getManagingFocusBackwardTraversalKeys())},
+"javax.swing.text.Document,~S,~N,~N");e(c$,"getUIClassID",function(){return"TextAreaUI"});d(c$,"createDefaultModel",function(){return swingjs.JSToolkit.getPlainDocument(this)});d(c$,"setTabSize",function(a){var b=this.getDocument();if(null!=b){var c=this.getTabSize();b.putProperty("tabSize",new Integer(a));this.firePropertyChangeInt("tabSize",c,a)}},"~N");d(c$,"getTabSize",function(){var a=8,b=this.getDocument();null!=b&&(b=b.getProperty("tabSize"),null!=b&&(a=b.intValue()));return a});d(c$,"setLineWrap",
+function(a){var b=this.wrap;this.wrap=a;this.firePropertyChangeBool("lineWrap",b,a)},"~B");d(c$,"getLineWrap",function(){return this.wrap});d(c$,"setWrapStyleWord",function(a){var b=this.word;this.word=a;this.firePropertyChangeBool("wrapStyleWord",b,a)},"~B");d(c$,"getWrapStyleWord",function(){return this.word});d(c$,"getLineOfOffset",function(a){var b=this.getDocument();if(0>a)throw new javax.swing.text.BadLocationException("Can't translate offset to line",-1);if(a>b.getLength())throw new javax.swing.text.BadLocationException("Can't translate offset to line",
+b.getLength()+1);return this.getDocument().getDefaultRootElement().getElementIndex(a)},"~N");d(c$,"getLineCount",function(){return this.getDocument().getDefaultRootElement().getElementCount()});d(c$,"getLineStartOffset",function(a){var b=this.getLineCount();if(0>a)throw new javax.swing.text.BadLocationException("Negative line",-1);if(a>=b)throw new javax.swing.text.BadLocationException("No such line",this.getDocument().getLength()+1);return this.getDocument().getDefaultRootElement().getElement(a).getStartOffset()},
+"~N");d(c$,"getLineEndOffset",function(a){var b=this.getLineCount();if(0>a)throw new javax.swing.text.BadLocationException("Negative line",-1);if(a>=b)throw new javax.swing.text.BadLocationException("No such line",this.getDocument().getLength()+1);var c=this.getDocument().getDefaultRootElement().getElement(a).getEndOffset();return a==b-1?c-1:c},"~N");d(c$,"insert",function(a,b){var c=this.getDocument();if(null!=c)try{c.insertString(b,a,null)}catch(f){if(y(f,javax.swing.text.BadLocationException))throw new IllegalArgumentException(f.getMessage());
+throw f;}},"~S,~N");d(c$,"append",function(a){var b=this.getDocument();if(null!=b)try{b.insertString(b.getLength(),a,null)}catch(c){if(!y(c,javax.swing.text.BadLocationException))throw c;}},"~S");d(c$,"replaceRange",function(a,b,c){if(c<b)throw new IllegalArgumentException("end before start");var f=this.getDocument();if(null!=f)try{v(f,javax.swing.text.JSMinimalAbstractDocument)?f.replace(b,c-b,a,null):(f.remove(b,c-b),f.insertString(b,a,null))}catch(d){if(y(d,javax.swing.text.BadLocationException))throw new IllegalArgumentException(d.getMessage());
+throw d;}},"~S,~N,~N");d(c$,"getRows",function(){return this.rows});d(c$,"setRows",function(a){var b=this.rows;if(0>a)throw new IllegalArgumentException("rows less than zero.");a!=b&&(this.rows=a,this.invalidate())},"~N");d(c$,"getRowHeight",function(){0==this.rowHeight&&(this.rowHeight=this.getFontMetrics(this.getFont()).getHeight());return this.rowHeight});d(c$,"getColumns",function(){return this.columns});d(c$,"setColumns",function(a){var b=this.columns;if(0>a)throw new IllegalArgumentException("columns less than zero.");
+a!=b&&(this.columns=a,this.invalidate())},"~N");d(c$,"getColumnWidth",function(){0==this.columnWidth&&(this.columnWidth=this.getFontMetrics(this.getFont()).charWidth("m"));return this.columnWidth});e(c$,"getPreferredSize",function(){var a=this.getPrefSizeJComp(),a=null==a?new java.awt.Dimension(400,400):a,b=this.getInsets();0!=this.columns&&(a.width=Math.max(a.width,this.columns*this.getColumnWidth()+b.left+b.right));0!=this.rows&&(a.height=Math.max(a.height,this.rows*this.getRowHeight()+b.top+b.bottom));
+return a});d(c$,"setFont",function(a){K(this,javax.swing.JTextArea,"setFont",[a]);this.columnWidth=this.rowHeight=0},"java.awt.Font");d(c$,"paramString",function(){var a=this.wrap?"true":"false",b=this.word?"true":"false";return K(this,javax.swing.JTextArea,"paramString",[])+",colums="+this.columns+",columWidth="+this.columnWidth+",rows="+this.rows+",rowHeight="+this.rowHeight+",word="+b+",wrap="+a});d(c$,"getScrollableTracksViewportWidth",function(){return this.wrap?!0:K(this,javax.swing.JTextArea,
+"getScrollableTracksViewportWidth",[])});d(c$,"getPreferredScrollableViewportSize",function(){var a=K(this,javax.swing.JTextArea,"getPreferredScrollableViewportSize",[]),a=null==a?new java.awt.Dimension(400,400):a,b=this.getInsets();a.width=0==this.columns?a.width:this.columns*this.getColumnWidth()+b.left+b.right;a.height=0==this.rows?a.height:this.rows*this.getRowHeight()+b.top+b.bottom;return a});e(c$,"getScrollableUnitIncrement",function(a,b){switch(b){case 1:return this.getRowHeight();case 0:return this.getColumnWidth();
+default:throw new IllegalArgumentException("Invalid orientation: "+b);}},"java.awt.Rectangle,~N,~N");G(c$,"$uiClassID","TextAreaUI")});p("jalview.api");M(jalview.api,"ComplexAlignFile");p("jalview.appletgui");q(["awt2swing.Panel","java.awt.Dimension","java.util.ArrayList"],"jalview.appletgui.AppletJmol",null,function(){c$=s(function(){this.fileLoadingError=this._aps=this.ap=this.renderPanel=this.history=this.inputLine=this.scriptWindow=null;this.loadedInline=!1;this.jmb=this.fr=null;H("jalview.appletgui.AppletJmol.RenderPanel")||
+jalview.appletgui.AppletJmol.$AppletJmol$RenderPanel$();r(this,arguments)},jalview.appletgui,"AppletJmol");J(c$,function(){this._aps=new java.util.ArrayList});m(c$,function(){},"jalview.datamodel.PDBEntry,~A,~O,jalview.appletgui.AlignmentPanel,~S");d(c$,"setJalviewColourScheme",function(){},"jalview.schemes.UserColourScheme");c$.$AppletJmol$RenderPanel$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.currentSize=null;r(this,arguments)},jalview.appletgui.AppletJmol,"RenderPanel",awt2swing.Panel);
+J(c$,function(){this.currentSize=new java.awt.Dimension});e(c$,"update",function(a){this.paint(a)},"java.awt.Graphics");d(c$,"PaintComponent",function(){this.currentSize=this.getSize()},"java.awt.Graphics");c$=z()}});p("jalview.appletgui");q(["java.awt.Dialog","java.awt.event.ActionListener","awt2swing.Button"],"jalview.appletgui.JVDialog",["awt2swing.Panel","java.awt.FlowLayout"],function(){c$=s(function(){this.cancel=this.ok=this.buttonPanel=this.ap=null;this.accept=!1;this.owner=null;r(this,arguments)},
+jalview.appletgui,"JVDialog",java.awt.Dialog,java.awt.event.ActionListener);J(c$,function(){this.ok=new awt2swing.Button("Accept");this.cancel=new awt2swing.Button("Cancel")});m(c$,function(a,b,c,f,d){t(this,jalview.appletgui.JVDialog,[a,b,c]);this.owner=a;d+=a.getInsets().top+this.getInsets().bottom;this.setBounds(a.getBounds().x+F((a.getSize().width-f)/2),a.getBounds().y+F((a.getSize().height-d)/2),f,d)},"awt2swing.Frame,~S,~B,~N,~N");d(c$,"setMainPanel",function(a){this.add(a,"North");this.buttonPanel=
+new awt2swing.Panel(new java.awt.FlowLayout);this.buttonPanel.add(this.ok);this.buttonPanel.add(this.cancel);this.ok.addActionListener(this);this.cancel.addActionListener(this);this.add(this.buttonPanel,"South");this.pack()},"awt2swing.Panel");e(c$,"actionPerformed",function(a){a.getSource()===this.ok&&(this.accept=!0);this.setVisible(!1)},"java.awt.event.ActionEvent")});p("jalview.appletgui");q(["jalview.appletgui.EmbmenuFrame"],"jalview.appletgui.SplitFrame","awt2swing.Panel jalview.analysis.AlignmentUtils jalview.bin.JalviewLite jalview.structure.StructureSelectionManager java.awt.BorderLayout $.Dimension $.GridLayout".split(" "),
+function(){c$=s(function(){this.outermost=this.bottomFrame=this.topFrame=null;r(this,arguments)},jalview.appletgui,"SplitFrame",jalview.appletgui.EmbmenuFrame);m(c$,function(a,b){t(this,jalview.appletgui.SplitFrame,[]);this.topFrame=a;this.bottomFrame=b;this.init()},"jalview.appletgui.AlignFrame,jalview.appletgui.AlignFrame");d(c$,"init",function(){var a=ia(arguments);if(null!=a)return a.apply(this,arguments);this.constructSplit();var a=this.topFrame.viewport,b=this.bottomFrame.viewport,c=a.getAlignment(),
+f=b.getAlignment(),d=c.isNucleotide()?a:f.isNucleotide()?b:null,f=!c.isNucleotide()?a:!f.isNucleotide()?b:null;if(jalview.analysis.AlignmentUtils.mapProteinToCdna(f.getAlignment(),d.getAlignment())){var e=jalview.structure.StructureSelectionManager.getStructureSelectionManager(a.applet);e.addMappings(f.getAlignment().getCodonFrames());a.setCodingComplement(b);e.addCommandListener(d);e.addCommandListener(f)}f.initComplementConsensus();a=c.isNucleotide()?this.bottomFrame.alignPanel:this.topFrame.alignPanel;
+f.updateConsensus(a);this.adjustLayout()});d(c$,"constructSplit",function(){this.unsetMenuBar();this.outermost=new awt2swing.Panel(new java.awt.GridLayout(2,1));var a=new awt2swing.Panel,b=new awt2swing.Panel;this.outermost.add(a);this.outermost.add(b);this.addAlignFrameComponents(this.topFrame,a);this.addAlignFrameComponents(this.bottomFrame,b)});d(c$,"adjustLayout",function(){var a=this.topFrame.getAlignViewport().getAlignment().isNucleotide()?this.topFrame.viewport:this.bottomFrame.viewport,b=
+a===this.topFrame.viewport?this.bottomFrame.viewport:this.topFrame.viewport,c=this.topFrame.alignPanel.idPanel.idCanvas.getWidth(),f=this.bottomFrame.alignPanel.idPanel.idCanvas.getWidth(),d=Math.max(c,f);c!=d&&(c=this.topFrame.alignPanel.idPanel.idCanvas.getSize(),this.topFrame.alignPanel.idPanel.idCanvas.setSize(new java.awt.Dimension(d,c.height)));f!=d&&(c=this.bottomFrame.alignPanel.idPanel.idCanvas.getSize(),this.bottomFrame.alignPanel.idPanel.idCanvas.setSize(new java.awt.Dimension(d,c.height)));
+null!=b&&null!=a&&(f=b.getViewStyle(),d=f.isScaleProteinAsCdna()?3:1,f.setCharWidth(d*a.getViewStyle().getCharWidth()),b.setViewStyle(f))});d(c$,"addAlignFrameComponents",function(a,b){b.setLayout(new java.awt.BorderLayout);var c=a.makeEmbeddedPopupMenu(a.getJMenuBar(),!0,!1);b.add(c,"North");b.add(a.statusBar,"South");b.add(a.alignPanel,"Center");a.setSplitFrame(this)},"jalview.appletgui.AlignFrame,awt2swing.Panel");d(c$,"addToDisplay",function(a,b){this.createSplitFrameWindow(a,b);this.validate();
+this.topFrame.alignPanel.adjustAnnotationHeight();this.topFrame.alignPanel.paintAlignment(!0);this.bottomFrame.alignPanel.adjustAnnotationHeight();this.bottomFrame.alignPanel.paintAlignment(!0)},"~B,jalview.bin.JalviewLite");d(c$,"createSplitFrameWindow",function(a,b){if(a)b.add(this.outermost),b.validate();else{this.add(this.outermost);var c=Math.max(this.topFrame.frameWidth,this.bottomFrame.frameWidth),f=this.topFrame.frameHeight+this.bottomFrame.frameHeight;jalview.bin.JalviewLite.addFrame(this,
+this.getTitle(),c,f)}},"~B,jalview.bin.JalviewLite");d(c$,"getComplement",function(a){return this.topFrame===a?this.bottomFrame:this.bottomFrame===a?this.topFrame:null},"jalview.appletgui.AlignFrame")});p("java.awt");q(["java.awt.LayoutManager"],"java.awt.GridLayout",["java.lang.IllegalArgumentException","java.awt.Dimension"],function(){c$=s(function(){this.cols=this.rows=this.vgap=this.hgap=0;r(this,arguments)},java.awt,"GridLayout",null,[java.awt.LayoutManager,java.io.Serializable]);m(c$,function(){this.construct(1,
+0,0,0)});m(c$,function(a,b){this.construct(a,b,0,0)},"~N,~N");m(c$,function(a,b,c,f){if(0==a&&0==b)throw new IllegalArgumentException("rows and cols cannot both be zero");this.rows=a;this.cols=b;this.hgap=c;this.vgap=f},"~N,~N,~N,~N");d(c$,"getRows",function(){return this.rows});d(c$,"setRows",function(a){if(0==a&&0==this.cols)throw new IllegalArgumentException("rows and cols cannot both be zero");this.rows=a},"~N");d(c$,"getColumns",function(){return this.cols});d(c$,"setColumns",function(a){if(0==
+a&&0==this.rows)throw new IllegalArgumentException("rows and cols cannot both be zero");this.cols=a},"~N");d(c$,"getHgap",function(){return this.hgap});d(c$,"setHgap",function(a){this.hgap=a},"~N");d(c$,"getVgap",function(){return this.vgap});d(c$,"setVgap",function(a){this.vgap=a},"~N");e(c$,"addLayoutComponent",function(){},"~S,java.awt.Component");e(c$,"removeLayoutComponent",function(){},"java.awt.Component");e(c$,"preferredLayoutSize",function(a){var b=a.getInsets(),c=a.getComponentCount(),f=
+this.rows,d=this.cols;0<f?d=F((c+f-1)/f):f=F((c+d-1)/d);for(var e=0,g=0,h=0;h<c;h++){var j=a.getComponent(h).getPreferredSize();e<j.width&&(e=j.width);g<j.height&&(g=j.height)}return new java.awt.Dimension(b.left+b.right+d*e+(d-1)*this.hgap,b.top+b.bottom+f*g+(f-1)*this.vgap)},"java.awt.Container");e(c$,"minimumLayoutSize",function(a){var b=a.getInsets(),c=a.getComponentCount(),f=this.rows,d=this.cols;0<f?d=F((c+f-1)/f):f=F((c+d-1)/d);for(var e=0,g=0,h=0;h<c;h++){var j=a.getComponent(h).getMinimumSize();
+e<j.width&&(e=j.width);g<j.height&&(g=j.height)}return new java.awt.Dimension(b.left+b.right+d*e+(d-1)*this.hgap,b.top+b.bottom+f*g+(f-1)*this.vgap)},"java.awt.Container");e(c$,"layoutContainer",function(a){var b=a.getInsets(),c=a.getComponentCount(),f=this.rows,d=this.cols,e=a.getComponentOrientation().isLeftToRight();if(0!=c){0<f?d=F((c+f-1)/f):f=F((c+d-1)/d);var g=(d-1)*this.hgap,h=a.width-(b.left+b.right),j=F((h-g)/d),n=F((h-(j*d+g))/2),h=(f-1)*this.vgap,m=a.height-(b.top+b.bottom),g=F((m-h)/
+f),h=F((m-(g*f+h))/2);if(e){e=0;for(n=b.left+n;e<d;e++,n+=j+this.hgap)for(var m=0,u=b.top+h;m<f;m++,u+=g+this.vgap){var p=m*d+e;p<c&&a.getComponent(p).setBounds(n,u,j,g)}}else{e=0;for(n=a.width-b.right-j-n;e<d;e++,n-=j+this.hgap){m=0;for(u=b.top+h;m<f;m++,u+=g+this.vgap)p=m*d+e,p<c&&a.getComponent(p).setBounds(n,u,j,g)}}}},"java.awt.Container");e(c$,"toString",function(){return this.getClass().getName()+"[hgap="+this.hgap+",vgap="+this.vgap+",rows="+this.rows+",cols="+this.cols+"]"})});p("jalview.io");
+q(null,"jalview.io.AnnotationFile","jalview.analysis.Conservation jalview.datamodel.AlignmentAnnotation $.Annotation $.ColumnSelection $.GraphLine $.SequenceGroup jalview.io.AppletFormatAdapter jalview.jsdev.GenericFileAdapter jalview.schemes.ColourSchemeProperty $.ResidueProperties $.UserColourScheme jalview.util.Comparison $.Format java.awt.Color java.io.BufferedReader $.InputStreamReader $.StringReader java.lang.Boolean $.Float $.StringBuffer java.util.ArrayList $.BitSet $.Date $.Hashtable $.StringTokenizer $.Vector".split(" "),
+function(){c$=s(function(){this.text=this.newline=null;H("jalview.io.AnnotationFile.ViewDef")||jalview.io.AnnotationFile.$AnnotationFile$ViewDef$();this.refSeqId=this.refSeq=null;this.nlinesread=0;this.lastread="";r(this,arguments)},jalview.io,"AnnotationFile");J(c$,function(){this.newline=System.getProperty("line.separator")});m(c$,function(){this.init()});d(c$,"setNewlineString",function(a){this.newline=a;this.init()},"~S");d(c$,"getNewlineString",function(){return this.newline});d(c$,"init",function(){this.text=
+new StringBuffer("JALVIEW_ANNOTATION"+this.newline+"# Created: "+new java.util.Date+this.newline+this.newline);this.refSeqId=this.refSeq=null});d(c$,"printAnnotations",function(a,b,c){return this.printAnnotations(a,b,c,null,null,null)},"~A,java.util.List,java.util.Hashtable");d(c$,"printAnnotations",function(a,b,c,f,d,e){null!=e&&(null!=e.viewname&&this.text.append("VIEW_DEF\t"+e.viewname+"\n"),null==b&&(b=e.visibleGroups),null==f&&(f=e.hiddencols));null!=d&&d.hasSeqrep()&&this.text.append("VIEW_SETREF\t"+
+d.getSeqrep().getName()+"\n");if(null!=f&&f.hasHiddenColumns()){this.text.append("VIEW_HIDECOLS\t");var g=!1,h;for(f=f.getHiddenColumns().iterator();f.hasNext()&&((h=f.next())||1);)g?this.text.append(","):g=!0,this.text.append(""+h[0]),this.text.append("-"),this.text.append(""+h[1]);this.text.append("\n")}if(null!=a){var j=!0,n;f=h=null;var m=new StringBuffer,u=new StringBuffer;d=new StringBuffer;var p=new java.util.Hashtable;e=new java.util.Hashtable;for(var q=new java.util.BitSet,s,r=0;r<a.length;r++)if(n=
+a[r],n.visible||n.hasScore()||-1<n.graphGroup&&q.get(n.graphGroup)){s=null;j=!0;this.writeSequence_Ref(h,n.sequenceRef);h=n.sequenceRef;this.writeGroup_Ref(f,n.groupRef);f=n.groupRef;for(var t=n.hasIcons,v=n.hasText,w=n.$hasScore,y=!1,z=0;null!=n.annotations&&z<n.annotations.length&&(!t||!v||!w);z++)null!=n.annotations[z]&&(v=(new Boolean(v|(null!=n.annotations[z].displayCharacter&&0<n.annotations[z].displayCharacter.length&&!n.annotations[z].displayCharacter.equals(" ")))).valueOf(),t=(new Boolean(t|
+(0!=n.annotations[z].secondaryStructure.charCodeAt(0)&&" "!=n.annotations[z].secondaryStructure))).valueOf(),w=(new Boolean(w|!Float.isNaN(n.annotations[z].value))).valueOf(),y=(new Boolean(y|(null!=n.annotations[z].description&&0<n.annotations[z].description.length))).valueOf());0==n.graph?(this.text.append("NO_GRAPH\t"),w=!1):(1==n.graph?(this.text.append("BAR_GRAPH\t"),t=!1):2==n.graph&&(t=!1,this.text.append("LINE_GRAPH\t")),null!=n.getThreshold()&&(u.append("GRAPHLINE\t"),u.append(n.label),u.append("\t"),
+u.append(n.getThreshold().value),u.append("\t"),u.append(n.getThreshold().label),u.append("\t"),u.append(jalview.util.Format.getHexString(n.getThreshold().colour)),u.append(this.newline)),-1<n.graphGroup&&(q.set(n.graphGroup),g=new Integer(n.graphGroup),p.containsKey(g)?p.put(g,p.get(g)+"\t"+n.label):(e.put(g,E(-1,[h,f])),p.put(g,n.label))));this.text.append(n.label+"\t");null!=n.description&&this.text.append(n.description+"\t");for(z=0;null!=n.annotations&&z<n.annotations.length;z++)null!=h&&jalview.util.Comparison.isGap(h.getCharAt(z))||
+(null!=n.annotations[z]&&(g="",t&&(this.text.append(g)," "!=n.annotations[z].secondaryStructure&&this.text.append(n.annotations[z].secondaryStructure),g=","),w&&(Float.isNaN(n.annotations[z].value)?(System.err.println("Skipping NaN - not valid value."),this.text.append(g+0)):this.text.append(g+n.annotations[z].value),g=","),v&&(null!=n.annotations[z].displayCharacter&&0<n.annotations[z].displayCharacter.length&&!n.annotations[z].displayCharacter.equals(" "))&&(this.text.append(g+n.annotations[z].displayCharacter),
+g=","),y&&(null!=n.annotations[z].description&&0<n.annotations[z].description.length&&!n.annotations[z].description.equals(n.annotations[z].displayCharacter))&&(this.text.append(g+n.annotations[z].description),g=","),null!=s&&!s.equals(n.annotations[z].colour)&&(j=!1),s=n.annotations[z].colour,null!=n.annotations[z].colour&&n.annotations[z].colour!==java.awt.Color.black&&this.text.append(g+"["+jalview.util.Format.getHexString(n.annotations[z].colour)+"]")),this.text.append("|"));n.hasScore()&&this.text.append("\t"+
+n.score);this.text.append(this.newline);null!=s&&(s!==java.awt.Color.black&&j)&&(m.append("COLOUR\t"),m.append(n.label),m.append("\t"),m.append(jalview.util.Format.getHexString(s)),m.append(this.newline));if(n.scaleColLabel||n.showAllColLabels||n.centreColLabels)d.append("ROWPROPERTIES\t"),d.append(n.label),d.append("\tscaletofit="),d.append(n.scaleColLabel),d.append("\tshowalllabs="),d.append(n.showAllColLabels),d.append("\tcentrelabs="),d.append(n.centreColLabels),d.append(this.newline);0<u.length()&&
+(this.text.append(u.toString()),u.setLength(0))}this.text.append(this.newline);this.text.append(m.toString());if(0<p.size()){a=h;for(var g=f,A,p=p.entrySet().iterator();p.hasNext()&&((A=p.next())||1);)j=e.get(A.getKey()),this.writeSequence_Ref(h,j[0]),h=j[0],this.writeGroup_Ref(f,j[1]),f=j[1],this.text.append("COMBINE\t"),this.text.append(A.getValue()),this.text.append(this.newline);this.writeSequence_Ref(h,a);this.writeGroup_Ref(f,g)}this.text.append(d.toString())}null!=b&&this.printGroups(b);if(null!=
+c){this.text.append(this.newline);this.text.append(this.newline);this.text.append("ALIGNMENT");for(b=c.keys();b.hasMoreElements();)g=b.nextElement().toString(),this.text.append("\t"),this.text.append(g),this.text.append("="),this.text.append(c.get(g))}return this.text.toString()},"~A,java.util.List,java.util.Hashtable,jalview.datamodel.ColumnSelection,jalview.datamodel.AlignmentI,jalview.io.AnnotationFile.ViewDef");d(c$,"writeGroup_Ref",function(a,b){return null==b?(null!=a&&(this.text.append(this.newline),
+this.text.append("GROUP_REF\t"),this.text.append("ALIGNMENT"),this.text.append(this.newline)),!0):null==a||a!==b?(this.text.append(this.newline),this.text.append("GROUP_REF\t"),this.text.append(b.getName()),this.text.append(this.newline),!0):!1},"jalview.datamodel.SequenceGroup,jalview.datamodel.SequenceGroup");d(c$,"writeSequence_Ref",function(a,b){if(null==b){if(null!=a)return this.text.append(this.newline),this.text.append("SEQUENCE_REF\t"),this.text.append("ALIGNMENT"),this.text.append(this.newline),
+!0}else if(null==a||a!==b)return this.text.append(this.newline),this.text.append("SEQUENCE_REF\t"),this.text.append(b.getName()),this.text.append(this.newline),!0;return!1},"jalview.datamodel.SequenceI,jalview.datamodel.SequenceI");d(c$,"printGroups",function(a){var b=null,c;for(a=a.iterator();a.hasNext()&&((c=a.next())||1);){c.hasSeqrep()?(b=c.getSeqrep(),this.text.append("SEQUENCE_REF\t"),this.text.append(b.getName()),this.text.append(this.newline),this.text.append("SEQUENCE_GROUP\t"),this.text.append(c.getName()),
+this.text.append("\t"),this.text.append(""+b.findPosition(c.getStartRes())),this.text.append("\t"),this.text.append(b.findPosition(c.getEndRes())),this.text.append("\t"),this.text.append("-1\t")):(this.text.append("SEQUENCE_GROUP\t"+c.getName()+"\t"+(c.getStartRes()+1)+"\t"+(c.getEndRes()+1)+"\t-1\t"),b=null);for(var f=0;f<c.getSize();f++)this.text.append(c.getSequenceAt(f).getName()),this.text.append("\t");this.text.append(this.newline);this.text.append("PROPERTIES\t");this.text.append(c.getName());
+this.text.append("\t");null!=c.getDescription()&&(this.text.append("description="),this.text.append(c.getDescription()),this.text.append("\t"));null!=c.cs&&(this.text.append("colour="),this.text.append(jalview.schemes.ColourSchemeProperty.getColourName(c.cs)),this.text.append("\t"),0!=c.cs.getThreshold()&&(this.text.append("pidThreshold="),this.text.append(c.cs.getThreshold())),c.cs.conservationApplied()&&(this.text.append("consThreshold="),this.text.append(c.cs.getConservationInc()),this.text.append("\t")));
+this.text.append("outlineColour=");this.text.append(jalview.util.Format.getHexString(c.getOutlineColour()));this.text.append("\t");this.text.append("displayBoxes=");this.text.append(c.getDisplayBoxes());this.text.append("\t");this.text.append("displayText=");this.text.append(c.getDisplayText());this.text.append("\t");this.text.append("colourText=");this.text.append(c.getColourText());this.text.append("\t");this.text.append("showUnconserved=");this.text.append(c.getShowNonconserved());this.text.append("\t");
+c.textColour!==java.awt.Color.black&&(this.text.append("textCol1="),this.text.append(jalview.util.Format.getHexString(c.textColour)),this.text.append("\t"));c.textColour2!==java.awt.Color.white&&(this.text.append("textCol2="),this.text.append(jalview.util.Format.getHexString(c.textColour2)),this.text.append("\t"));0!=c.thresholdTextColour&&(this.text.append("textColThreshold="),this.text.append(c.thresholdTextColour),this.text.append("\t"));null!=c.idColour&&(this.text.append("idColour="),this.text.append(jalview.util.Format.getHexString(c.idColour)),
+this.text.append("\t"));c.isHidereps()&&this.text.append("hide=true\t");c.isHideCols()&&this.text.append("hidecols=true\t");null!=b&&(this.text.append(this.newline),this.text.append("SEQUENCE_REF"));this.text.append(this.newline);this.text.append(this.newline)}},"java.util.List");d(c$,"annotateAlignmentView",function(a,b,c){var f=a.getColumnSelection();null==f&&(f=new jalview.datamodel.ColumnSelection);(b=this.readAnnotationFile(a.getAlignment(),f,b,c))&&(f.hasSelectedColumns()||f.hasHiddenColumns())&&
+a.setColumnSelection(f);return b},"jalview.api.AlignViewportI,~S,~S");d(c$,"readAnnotationFile",function(a,b,c){return this.readAnnotationFile(a,null,b,c)},"jalview.datamodel.AlignmentI,~S,~S");d(c$,"readAnnotationFile",function(a,b,c,f){var d=null;try{if(f.equals(jalview.io.AppletFormatAdapter.FILE))d=jalview.jsdev.GenericFileAdapter.getReader(c,!1);else if(f.equals(jalview.io.AppletFormatAdapter.URL))d=jalview.jsdev.GenericFileAdapter.getReader(c,!0);else if(f.equals(jalview.io.AppletFormatAdapter.PASTE))d=
+new java.io.BufferedReader(new java.io.StringReader(c));else if(f.equals(jalview.io.AppletFormatAdapter.CLASSLOADER)){var e=this.getClass().getResourceAsStream("/"+c);null!=e&&(d=new java.io.BufferedReader(new java.io.InputStreamReader(e)))}if(null!=d)return this.parseAnnotationFrom(a,b,d)}catch(g){if(y(g,Exception))g.printStackTrace(),System.out.println("Problem reading annotation file: "+g),0<this.nlinesread&&System.out.println("Last read line "+this.nlinesread+": '"+this.lastread+"' (first 80 chars) ...");
+else throw g;}return!1},"jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,~S,~S");d(c$,"parseAnnotationFrom",function(a,b,c){this.nlinesread=0;var f=new java.util.ArrayList,d=new java.util.ArrayList,e=!1,g=null,h=new java.util.Hashtable,j=new java.util.Hashtable,n,m,u,p,q,s,r=1,t=0;if(null!=a.getAlignmentAnnotation()&&(t=a.getAlignmentAnnotation().length,0<t))for(var v=a.getAlignmentAnnotation(),w=0;w<v.length;w++)v[w].autoCalculated&&j.put(this.autoAnnotsKey(v[w],v[w].sequenceRef,null==
+v[w].groupRef?null:v[w].groupRef.getName()),new Integer(1));var v=a.getWidth(),z,A;n=null;for(w=!1;null!=(n=c.readLine());)if(this.nlinesread++,this.lastread=String.instantialize(n),0!=n.indexOf("#")&&-1<n.indexOf("JALVIEW_ANNOTATION")){w=!0;break}if(!w)return c.close(),!1;for(;null!=(n=c.readLine());)if(this.nlinesread++,this.lastread=String.instantialize(n),!(0==n.indexOf("#")||-1<n.indexOf("JALVIEW_ANNOTATION")||0==n.length))if(z=new java.util.StringTokenizer(n,"\t"),p=z.nextToken(),p.equalsIgnoreCase("COLOUR"))this.colourAnnotations(a,
+z.nextToken(),z.nextToken()),e=!0;else if(p.equalsIgnoreCase(jalview.io.AnnotationFile.COMBINE))f.add(E(-1,[z,this.refSeq,g])),e=!0;else if(p.equalsIgnoreCase("ROWPROPERTIES"))this.addRowProperties(a,z),e=!0;else if(p.equalsIgnoreCase(jalview.io.AnnotationFile.GRAPHLINE))d.add(E(-1,[jalview.io.AnnotationFile.GRAPHLINE,z,this.refSeq,g])),e=!0;else if(p.equalsIgnoreCase("SEQUENCE_REF"))if(z.hasMoreTokens()){this.refSeq=a.findName(this.refSeqId=z.nextToken());null==this.refSeq&&(this.refSeqId=null);
+try{r=Integer.parseInt(z.nextToken()),1>r&&(r=1,System.out.println("WARNING: SEQUENCE_REF index must be > 0 in AnnotationFile"))}catch(B){if(y(B,Exception))r=1;else throw B;}}else this.refSeqId=this.refSeq=null;else if(p.equalsIgnoreCase("GROUP_REF"))g=null,z.hasMoreTokens()&&(g=z.nextToken(),1>g.length?g=null:null==h.get(g)&&h.put(g,new java.util.Vector));else if(p.equalsIgnoreCase("SEQUENCE_GROUP"))this.addGroup(a,z),e=!0;else if(p.equalsIgnoreCase("PROPERTIES"))this.addProperties(a,z),e=!0;else if(p.equalsIgnoreCase("BELOW_ALIGNMENT"))this.setBelowAlignment(a,
+z),e=!0;else if(p.equalsIgnoreCase("ALIGNMENT"))this.addAlignmentDetails(a,z),e=!0;else if(p.equalsIgnoreCase("VIEW_SETREF"))null!=this.refSeq&&a.setSeqrep(this.refSeq),e=!0;else if(p.equalsIgnoreCase("VIEW_HIDECOLS"))z.hasMoreTokens()&&(null==b&&(b=new jalview.datamodel.ColumnSelection),this.parseHideCols(b,z.nextToken())),e=!0;else if(p.equalsIgnoreCase("HIDE_INSERTIONS"))e=null==this.refSeq?a.getSeqrep():this.refSeq,null==e&&(e=a.getSequenceAt(0)),null!=e&&(null==b?System.err.println("Cannot process HIDE_INSERTIONS without an alignment view: Ignoring line: "+
+n):b.hideInsertionsFor(e)),e=!0;else{q=jalview.datamodel.AlignmentAnnotation.getGraphValueFromString(p);m=z.nextToken();s=0;A=Array(v);u=null;w=NaN;if(z.hasMoreTokens()){n=z.nextToken();-1==n.indexOf("|")&&(u=n,z.hasMoreTokens()&&(n=z.nextToken()));z.hasMoreTokens()&&(w=Float.$valueOf(z.nextToken()).floatValue());z=new java.util.StringTokenizer(n,"|",!0);n=!0;for(var C=1==z.countTokens();z.hasMoreElements()&&s<v;){p=z.nextToken().trim();if(C)try{w=Float.$valueOf(p).floatValue();break}catch(F){if(!y(F,
+NumberFormatException))throw F;}p.equals("|")?(n&&s++,n=!0):(A[s++]=this.parseAnnotation(p,q),n=!1)}}n=new jalview.datamodel.AlignmentAnnotation(m,u,0==s?null:A,0,0,q);n.score=w;if(!j.containsKey(this.autoAnnotsKey(n,this.refSeq,g))){if(null!=this.refSeq){n.belowAlignment=!1;e=this.refSeq;do w=new jalview.datamodel.AlignmentAnnotation(n),n.createSequenceMapping(e,r,!1),n.adjustForAlignment(),e.addAlignmentAnnotation(n),a.addAnnotation(n),a.setAnnotationIndex(n,a.getAlignmentAnnotation().length-t-
+1),null!=g&&h.get(g).addElement(n),n=w;while(null!=this.refSeqId&&null!=(e=a.findName(e,this.refSeqId,!0)))}else a.addAnnotation(n),a.setAnnotationIndex(n,a.getAlignmentAnnotation().length-t-1),null!=g&&h.get(g).addElement(n);e=!0}}b=new java.util.Hashtable;for(c=h.keys();c.hasMoreElements();){for(var g=c.nextElement(),j=!1,H,r=a.getGroups().iterator();r.hasNext()&&((H=r.next())||1);)if(H.getName().equals(g))if(j)System.err.println("Ignoring 1:many group reference mappings for group name '"+g+"'");
+else if(j=!0,t=h.get(g),b.put(g,H),null!=t&&0<t.size()){v=null;w=0;for(n=t.size();w<n;w++)v=t.elementAt(w),v.groupRef=H}h.get(g).removeAllElements()}for(var G,d=d.iterator();d.hasNext()&&((G=d.next())||1);)G[0]===jalview.io.AnnotationFile.GRAPHLINE&&this.addLine(a,G[1],G[2],null==G[3]?null:b.get(G[3]));G=0;for(var I,f=f.iterator();f.hasNext()&&((I=f.next())||1);)this.combineAnnotations(a,++G,I[0],I[1],null==I[2]?null:b.get(I[2]));return e},"jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,java.io.BufferedReader");
+d(c$,"parseHideCols",function(a,b){for(var c=new java.util.StringTokenizer(b,",");c.hasMoreTokens();){var f=c.nextToken().trim(),d,e=f.indexOf("-");-1==e?(d=e=Integer.parseInt(f),0<=d&&a.hideColumns(d,e)):(d=Integer.parseInt(f.substring(0,e)),e=e<f.length-1?Integer.parseInt(f.substring(e+1)):d,0<d&&e>=d&&a.hideColumns(d,e))}},"jalview.datamodel.ColumnSelection,~S");d(c$,"autoAnnotsKey",function(a,b){return a.graph+"\t"+a.label+"\t"+a.description+"\t"+(null!=b?b.getDisplayId(!0):"")},"jalview.datamodel.AlignmentAnnotation,jalview.datamodel.SequenceI,~S");
+d(c$,"parseAnnotation",function(a,b){var c=0==b,f=null,d=null,e=" ",g=0,h=!1,j=!1,n=null,m=a.indexOf("["),u=a.indexOf("]");-1<m&&-1<u&&(n=(new jalview.schemes.UserColourScheme).getColourFromString(a.substring(m+1,u)),0<m&&","==a.charAt(m-1)&&m--,a=a.substring(0,m)+a.substring(u+1));for(var m=new java.util.StringTokenizer(a,",",!0),p=!1,q=0;m.hasMoreTokens();)if(q++,u=m.nextToken().trim(),u.equals(","))!p&&(h&&!j)&&(j=!0,d=" "),p=!1;else{p=!0;if(h)1==u.length&&(d=u);else try{d=u;g=(new Float(u)).floatValue();
+h=!0;continue}catch(s){if(!y(s,NumberFormatException))throw s;}if(c&&(u.equals("H")||u.equals("E")||u.equals("S")||u.equals(" ")))e=u.charAt(0),d.equals(u.substring(0,1))&&(d="");else if(null==f||h&&2<q)f=u}null!=d&&(null!=f&&1==f.length)&&(1<d.length?(c=d,d=f,f=c):d.equals(f)&&(f=null));f=new jalview.datamodel.Annotation(d,f,e,g);f.colour=n;return f},"~S,~N");d(c$,"colourAnnotations",function(a,b,c){c=new jalview.schemes.UserColourScheme(c);for(var f,d=0;d<a.getAlignmentAnnotation().length;d++)if(a.getAlignmentAnnotation()[d].label.equalsIgnoreCase(b)){f=
+a.getAlignmentAnnotation()[d].annotations;for(var e=0;e<f.length;e++)null!=f[e]&&(f[e].colour=c.findColour("A"))}},"jalview.datamodel.AlignmentI,~S,~S");d(c$,"combineAnnotations",function(a,b,c,f,d){var e=c.nextToken(),g=0;if(null!=a.getAlignmentAnnotation()){for(var h=0;h<a.getAlignmentAnnotation().length;h++){var j=a.getAlignmentAnnotation()[h];j.graphGroup>g&&(g=j.graphGroup+1);if(j.sequenceRef===f&&j.groupRef===d&&j.label.equalsIgnoreCase(e)){-1<j.graphGroup?g=j.graphGroup:(g<=b&&(g=b+1),j.graphGroup=
+g);break}}for(;c.hasMoreTokens();){e=c.nextToken();for(h=0;h<a.getAlignmentAnnotation().length;h++)if(j=a.getAlignmentAnnotation()[h],j.sequenceRef===f&&j.groupRef===d&&j.label.equalsIgnoreCase(e)){j.graphGroup=g;break}}}else System.err.println("Couldn't combine annotations. None are added to alignment yet!")},"jalview.datamodel.AlignmentI,~N,java.util.StringTokenizer,jalview.datamodel.SequenceI,jalview.datamodel.SequenceGroup");d(c$,"addLine",function(a,b,c,f){var d=b.nextToken();a=a.getAlignmentAnnotation();
+var e=(new Float(b.nextToken())).floatValue(),g=b.hasMoreTokens()?b.nextToken():null,h=null;b.hasMoreTokens()&&(h=(new jalview.schemes.UserColourScheme(b.nextToken())).findColour("A"));if(null!=a)for(b=0;b<a.length;b++)a[b].label.equalsIgnoreCase(d)&&((null==c||a[b].sequenceRef===c)&&(null==f||a[b].groupRef===f))&&a[b].setThreshold(new jalview.datamodel.GraphLine(e,g,h))},"jalview.datamodel.AlignmentI,java.util.StringTokenizer,jalview.datamodel.SequenceI,jalview.datamodel.SequenceGroup");d(c$,"addGroup",
+function(a,b){var c=new jalview.datamodel.SequenceGroup;c.setName(b.nextToken());var f="";try{f=b.nextToken(),0<f.length&&!f.startsWith("*")?c.setStartRes(Integer.parseInt(f)-1):c.setStartRes(0),f=b.nextToken(),0<f.length&&!f.startsWith("*")?c.setEndRes(Integer.parseInt(f)-1):c.setEndRes(a.getWidth()-1)}catch(d){if(y(d,Exception))System.err.println("Couldn't parse Group Start or End Field as '*' or a valid column or sequence index: '"+f+"' - assuming alignment width for group."),c.setStartRes(0),
+c.setEndRes(a.getWidth()-1);else throw d;}f=b.nextToken();if(f.equals("-1"))for(;b.hasMoreElements();)c.addSequence(a.findName(b.nextToken()),!1);else for(f=new java.util.StringTokenizer(f,",");f.hasMoreTokens();){var e=f.nextToken();if(e.equals("*"))for(e=0;e<a.getHeight();e++)c.addSequence(a.getSequenceAt(e),!1);else if(0<=e.indexOf("-")){var g=new java.util.StringTokenizer(e,"-"),e=Integer.parseInt(g.nextToken()),g=Integer.parseInt(g.nextToken());if(g>e)for(;e<=g;e++)c.addSequence(a.getSequenceAt(e-
+1),!1)}else c.addSequence(a.getSequenceAt(Integer.parseInt(e)-1),!1)}null!=this.refSeq&&(c.setStartRes(this.refSeq.findIndex(c.getStartRes()+1)-1),c.setEndRes(this.refSeq.findIndex(c.getEndRes()+1)-1),c.setSeqrep(this.refSeq));0<c.getSize()&&a.addGroup(c)},"jalview.datamodel.AlignmentI,java.util.StringTokenizer");d(c$,"addRowProperties",function(a,b){for(var c=b.nextToken(),f,d,e=!1,g=!1,h=!1;b.hasMoreTokens();)if(f=b.nextToken(),d=f.substring(0,f.indexOf("=")),f=f.substring(f.indexOf("=")+1),d.equalsIgnoreCase("scaletofit")&&
+(e=Boolean.$valueOf(f).booleanValue()),d.equalsIgnoreCase("showalllabs")&&(h=Boolean.$valueOf(f).booleanValue()),d.equalsIgnoreCase("centrelabs")&&(g=Boolean.$valueOf(f).booleanValue()),d=a.getAlignmentAnnotation(),null!=d)for(f=0;f<d.length;f++)d[f].label.equalsIgnoreCase(c)&&(d[f].centreColLabels=g,d[f].scaleColLabel=e,d[f].showAllColLabels=h)},"jalview.datamodel.AlignmentI,java.util.StringTokenizer");d(c$,"addProperties",function(a,b){if(null!=a.getGroups()){for(var c=b.nextToken(),f=null,d,e=
+a.getGroups().iterator();e.hasNext()&&((d=e.next())||1)&&!(f=d).getName().equals(c);)f=null;if(null!=f){c=f.cs;for(f.cs=null;b.hasMoreTokens();)e=b.nextToken(),d=e.substring(0,e.indexOf("=")),e=e.substring(e.indexOf("=")+1),d.equalsIgnoreCase("description")?f.setDescription(e):d.equalsIgnoreCase("colour")?f.cs=jalview.schemes.ColourSchemeProperty.getColour(a,e):d.equalsIgnoreCase("pidThreshold")?f.cs.setThreshold(Integer.parseInt(e),!0):d.equalsIgnoreCase("consThreshold")?(f.cs.setConservationInc(Integer.parseInt(e)),
+d=new jalview.analysis.Conservation("Group",jalview.schemes.ResidueProperties.propHash,3,f.getSequences(null),f.getStartRes(),f.getEndRes()+1),d.calculate(),d.verdict(!1,25),f.cs.setConservation(d)):d.equalsIgnoreCase("outlineColour")?f.setOutlineColour((new jalview.schemes.UserColourScheme(e)).findColour("A")):d.equalsIgnoreCase("displayBoxes")?f.setDisplayBoxes(Boolean.$valueOf(e).booleanValue()):d.equalsIgnoreCase("showUnconserved")?f.setShowNonconserved(Boolean.$valueOf(e).booleanValue()):d.equalsIgnoreCase("displayText")?
+f.setDisplayText(Boolean.$valueOf(e).booleanValue()):d.equalsIgnoreCase("colourText")?f.setColourText(Boolean.$valueOf(e).booleanValue()):d.equalsIgnoreCase("textCol1")?f.textColour=(new jalview.schemes.UserColourScheme(e)).findColour("A"):d.equalsIgnoreCase("textCol2")?f.textColour2=(new jalview.schemes.UserColourScheme(e)).findColour("A"):d.equalsIgnoreCase("textColThreshold")?f.thresholdTextColour=Integer.parseInt(e):d.equalsIgnoreCase("idColour")?f.setIdColour((c=new jalview.schemes.UserColourScheme(e)).findColour("A")):
+d.equalsIgnoreCase("hide")?f.setHidereps(!0):d.equalsIgnoreCase("hidecols")&&f.setHideCols(!0),f.recalcConservation();null==f.cs&&(f.cs=c)}}},"jalview.datamodel.AlignmentI,java.util.StringTokenizer");d(c$,"setBelowAlignment",function(a,b){var c,f,d=a.getAlignmentAnnotation();for(null==d&&System.err.print("Warning - no annotation to set below for sequence associated annotation:");b.hasMoreTokens();)if(c=b.nextToken(),null==d)System.err.print(" "+c);else for(var e=0;e<a.getAlignmentAnnotation().length;e++)f=
+a.getAlignmentAnnotation()[e],f.sequenceRef===this.refSeq&&f.label.equals(c)&&(f.belowAlignment=!0);null==d&&System.err.print("\n")},"jalview.datamodel.AlignmentI,java.util.StringTokenizer");d(c$,"addAlignmentDetails",function(a,b){for(var c,f;b.hasMoreTokens();)c=b.nextToken(),f=c.substring(0,c.indexOf("=")),c=c.substring(c.indexOf("=")+1),a.setProperty(f,c)},"jalview.datamodel.AlignmentI,java.util.StringTokenizer");d(c$,"printCSVAnnotations",function(a){for(var b=new StringBuffer,c=0;c<a.length;c++){var f=
+a[c].toString(),d=0;do{var e=f.indexOf("\n",d);b.append(a[c].label);b.append(",");e>d?b.append(f.substring(d,e+1)):(b.append(f.substring(d)),b.append(this.newline));d=e+1}while(0<d)}return b.toString()},"~A");d(c$,"printAnnotationsForView",function(a){return this.printAnnotations(a.isShowAnnotation()?a.getAlignment().getAlignmentAnnotation():null,a.getAlignment().getGroups(),a.getAlignment().getProperties(),a.getColumnSelection(),a.getAlignment(),null)},"jalview.api.AlignViewportI");d(c$,"printAnnotationsForAlignment",
+function(a){return this.printAnnotations(a.getAlignmentAnnotation(),a.getGroups(),a.getProperties(),null,a,null)},"jalview.datamodel.AlignmentI");c$.$AnnotationFile$ViewDef$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.hiddenRepSeqs=this.visibleGroups=this.hiddencols=this.hidseqs=this.viewname=null;r(this,arguments)},jalview.io.AnnotationFile,"ViewDef");m(c$,function(a,b,c,d){this.viewname=a;this.hidseqs=b;this.hiddencols=c;this.hiddenRepSeqs=d},"~S,jalview.datamodel.HiddenSequences,jalview.datamodel.ColumnSelection,java.util.Hashtable");
+c$=z()};G(c$,"GRAPHLINE","GRAPHLINE","COMBINE","COMBINE")});p("jalview.io");q(["jalview.io.FileParse","jalview.jsdev.RegExp"],"jalview.io.NewickFile","jalview.datamodel.SequenceNode jalview.util.MessageManager java.io.BufferedReader $.IOException java.lang.Float $.StringBuffer java.util.StringTokenizer".split(" "),function(){c$=s(function(){this.root=null;this.ReplaceUnderscores=this.RootHasDistance=this.$HasDistances=this.$HasBootstrap=!1;this.printRootInfo=!0;this.NodeSafeName=null;this.QuoteChar=
+"'";r(this,arguments)},jalview.io,"NewickFile",jalview.io.FileParse);J(c$,function(){this.NodeSafeName=E(-1,[jalview.jsdev.RegExp.perlCode("m/[\\[,:'()]/"),jalview.jsdev.RegExp.perlCode("s/'/''/"),jalview.jsdev.RegExp.perlCode("s/\\/w/_/")])});m(c$,function(a){t(this,jalview.io.NewickFile,[a,"Paste"])},"~S");m(c$,function(a){t(this,jalview.io.NewickFile,[]);this.root=a},"jalview.datamodel.SequenceNode");m(c$,function(a,b){t(this,jalview.io.NewickFile,[]);this.$HasBootstrap=b;this.root=a},"jalview.datamodel.SequenceNode,~B");
+m(c$,function(a,b,c){t(this,jalview.io.NewickFile,[]);this.root=a;this.$HasBootstrap=b;this.$HasDistances=c},"jalview.datamodel.SequenceNode,~B,~B");m(c$,function(a,b,c,d){t(this,jalview.io.NewickFile,[]);this.root=a;this.$HasBootstrap=b;this.$HasDistances=c;this.RootHasDistance=d},"jalview.datamodel.SequenceNode,~B,~B,~B");d(c$,"ErrorStringrange",function(a,b,c,d,e){return(null==a?"":a)+b+" at position "+d+" ( "+e.substring(0>d-c?0:d-c,d+c>e.length?e.length:d+c)+" )\n"},"~S,~S,~N,~N,~S");d(c$,"HasBootstrap",
+function(){return this.$HasBootstrap});d(c$,"HasDistances",function(){return this.$HasDistances});d(c$,"HasRootDistance",function(){return this.RootHasDistance});d(c$,"parse",function(){for(var a,b=new StringBuffer;null!=(a=this.nextLine());)b.append(a);a=b.toString();this.root=new jalview.datamodel.SequenceNode;for(var b=null,c=this.root,d=-1,e=0,k=null,g=null,h=null,j=0.001,n=-1,m=!1,u=jalview.jsdev.RegExp.newRegex(["[(\\['),;]"]),p=0,q=e,s=!1;u.searchFrom(a,e)&&null==k;){var r=u.matchedFrom(),
+t;switch(t=a.charAt(r)){case "(":if(m){k=this.ErrorStringrange(k,"Unexpected '('",7,r,a);continue}d++;null==c.right()?(c.setRight(new jalview.datamodel.SequenceNode(null,c,null,0.001,-1,!1)),c=c.right()):(null!=c.left()&&(g=new jalview.datamodel.SequenceNode(null,c,null,0,0,!0),g.SetChildren(c.left(),c.right()),c.setRight(g)),c.setLeft(new jalview.datamodel.SequenceNode(null,c,null,0.001,-1,!1)),c=c.left());null==b&&(b=c);g=null;j=0.001;n=-1;break;case "'":e=jalview.jsdev.RegExp.newRegex(["'([^']|'')+'"]);
+e.searchFrom(a,r)?(p=e.stringMatched().length,g=String.instantialize(e.stringMatched().substring(1,p-1)),g=jalview.jsdev.RegExp.perlCode("s/''/'/").replaceAll(g),p=r+p+1,s=!0):k=this.ErrorStringrange(k,"Unterminated quotes for nodename",7,r,a);break;default:";"==t&&-1!=d&&(k=this.ErrorStringrange(k,"Wayward semicolon (depth="+d+")",7,r,a));if("["==t)if(e=jalview.jsdev.RegExp.newRegex(["]"]),e.searchFrom(a,r)){p=e.matchedFrom()+1;this.warningMessage="Tree file contained comments which may confuse input algorithm.";
+break}else k=this.ErrorStringrange(k,"Unterminated comment",3,r,a);for(e=a.substring(q,r);-1<e.indexOf("]");){t=e.indexOf("[");var v=e.indexOf("]"),h=e.substring(t+1,v),e=e.substring(0,t)+e.substring(v+1)}var v=jalview.jsdev.RegExp.newRegex(["\\b([^' :;\\](),]+)"]),w=jalview.jsdev.RegExp.newRegex(["\\s*([0-9+]+)\\s*:"]);t=jalview.jsdev.RegExp.newRegex([":([-0-9Ee.+]+)"]);if(!s&&v.search(e)&&(0==v.matchedFromI(1)||":"!=e.charAt(v.matchedFromI(1)-1)))null==g?g=this.ReplaceUnderscores?v.stringMatchedI(1).$replace("_",
+" "):v.stringMatchedI(1):k=this.ErrorStringrange(k,"File has broken algorithm - overwritten nodename",10,r,a);if(w.search(e)&&(w.stringMatchedI(1).equals(v.stringMatchedI(1))&&(g=null),null==g||0==g.length||w.matchedFromI(1)>v.matchedFromI(1)+v.stringMatched().length))try{n=(new Integer(w.stringMatchedI(1))).intValue(),this.$HasBootstrap=!0}catch(z){if(y(z,Exception))k=this.ErrorStringrange(k,"Can't parse bootstrap value",4,q+w.matchedFrom(),a);else throw z;}s=!1;if(t.search(e))try{j=(new Float(t.stringMatchedI(1))).floatValue(),
+s=this.$HasDistances=!0}catch(A){if(y(A,Exception))k=this.ErrorStringrange(k,"Can't parse node distance value",7,q+t.matchedFrom(),a);else throw A;}m?(c.setName(g),c.dist=this.$HasDistances?j:0.001,c.setBootstrap(this.$HasBootstrap?n:-1),c===b&&(this.RootHasDistance=s),this.parseNHXNodeProps(c,h)):(g=new jalview.datamodel.SequenceNode(null,c,g,this.$HasDistances?j:0.001,this.$HasBootstrap?n:-1,!1),this.parseNHXNodeProps(c,h),null==c.right()?c.setRight(g):null==c.left()?c.setLeft(g):(h=new jalview.datamodel.SequenceNode(null,
+c,null,this.$HasDistances?0:0.001,0,!0),h.SetChildren(c.left(),g),c.setLeft(h)));m&&(c=c.AscendTree(),-1<d&&null==c&&(k=this.ErrorStringrange(k,"File broke algorithm: Lost place in tree (is there an extra ')' ?)",7,r,a)));")"==a.charAt(r)?(d--,m=!0):","==a.charAt(r)&&(m?m=!1:null!=c.left()&&!c.left().isLeaf()&&(c=c.left()));g=null;j=0.001;n=-1;h=null;s=!1}0==p?q=e=r+1:(e=p,p=0)}if(null!=k)throw new java.io.IOException(jalview.util.MessageManager.formatMessage("exception.newfile",E(-1,[k.toString()])));
+if(null==this.root)throw new java.io.IOException(jalview.util.MessageManager.formatMessage("exception.newfile",E(-1,[jalview.util.MessageManager.getString("label.no_tree_read_in")])));this.root=this.root.right().detach();this.RootHasDistance||(this.root.dist=this.$HasDistances?0:0.001)});d(c$,"parseNHXNodeProps",function(a,b){if(null!=b&&b.startsWith("&&NHX"))for(var c=new java.util.StringTokenizer(b.substring(5),":");c.hasMoreTokens();){var d=c.nextToken(),e=d.indexOf("=");if(-1<e){var k=d.substring(0,
+e),d=d.substring(e+1);try{k.toLowerCase().equals("b")&&(e=-1,e=(new Float(d)).intValue(),a.setBootstrap(e),this.$HasBootstrap=!0)}catch(g){if(y(g,Exception))System.err.println("Couldn't parse code '"+k+"' = '"+d+"'"),g.printStackTrace(System.err);else throw g;}}}},"jalview.datamodel.SequenceNode,~S");d(c$,"getTree",function(){return this.root});d(c$,"print",function(){var a=new StringBuffer;this.print(a,this.root);return a.append(";").toString()});d(c$,"print",function(a){var b=this.$HasBootstrap;
+this.$HasBootstrap=a;a=this.print();this.$HasBootstrap=b;return a},"~B");d(c$,"print",function(a,b){var c=this.$HasDistances;this.$HasDistances=b;var d=this.print(a);this.$HasDistances=c;return d},"~B,~B");d(c$,"print",function(a,b,c){this.printRootInfo=c;a=this.print(a,b);this.printRootInfo=c;return a},"~B,~B,~B");d(c$,"getQuoteChar",function(){return this.QuoteChar});d(c$,"setQuoteChar",function(a){var b=this.QuoteChar;this.QuoteChar=a;return b},"~S");d(c$,"nodeName",function(a){return this.NodeSafeName[0].search(a)?
+this.QuoteChar+this.NodeSafeName[1].replaceAll(a)+this.QuoteChar:this.NodeSafeName[2].replaceAll(a)},"~S");d(c$,"printNodeField",function(a){return(null==a.getName()?"":this.nodeName(a.getName()))+(this.$HasBootstrap?-1<a.getBootstrap()?(null!=a.getName()?" ":"")+a.getBootstrap():"":"")+(this.$HasDistances?":"+a.dist:"")},"jalview.datamodel.SequenceNode");d(c$,"printRootField",function(a){return this.printRootInfo?(null==a.getName()?"":this.nodeName(a.getName()))+(this.$HasBootstrap?-1<a.getBootstrap()?
+(null!=a.getName()?" ":"")+ +a.getBootstrap():"":"")+(this.RootHasDistance?":"+a.dist:""):""},"jalview.datamodel.SequenceNode");d(c$,"print",function(a,b){null!=b&&(b.isLeaf()&&this.printRootInfo?a.append(this.printRootField(b)):b.isDummy()?(this._print(a,b.right()),this._print(a,b.left())):(a.append("("),this._print(a,b.right()),null!=b.left()&&a.append(","),this._print(a,b.left()),a.append(")"+this.printRootField(b))))},"StringBuffer,jalview.datamodel.SequenceNode");d(c$,"_print",function(a,b){null!=
+b&&(b.isLeaf()?a.append(this.printNodeField(b)):b.isDummy()?(this._print(a,b.left()),null!=b.left()&&a.append(","),this._print(a,b.right())):(a.append("("),this._print(a,b.right()),null!=b.left()&&a.append(","),this._print(a,b.left()),a.append(")"+this.printNodeField(b))))},"StringBuffer,jalview.datamodel.SequenceNode");c$.main=d(c$,"main",function(a){try{if(null==a||1!=a.length)System.err.println("Takes one argument - file name of a newick tree file."),System.exit(0);for(var b=new java.io.File(a[0]),
+c=new StringBuffer,d=new java.io.BufferedReader(new java.io.FileReader(b)),e;null!=(e=d.readLine());)c.append(e);d.close();System.out.println("Read file :\n");var k=new jalview.io.NewickFile(a[0],"File");k.parse();System.out.println("Original file :\n");var g=jalview.jsdev.RegExp.newRegex(["\n+",""]);System.out.println(g.replaceAll(c.toString())+"\n");System.out.println("Parsed file.\n");System.out.println("Default output type for original input.\n");System.out.println(k.print());System.out.println("Without bootstraps.\n");
+System.out.println(k.print(!1));System.out.println("Without distances.\n");System.out.println(k.print(!0,!1));System.out.println("Without bootstraps but with distanecs.\n");System.out.println(k.print(!1,!0));System.out.println("Without bootstraps or distanecs.\n");System.out.println(k.print(!1,!1));System.out.println("With bootstraps and with distances.\n");System.out.println(k.print(!0,!0))}catch(h){if(y(h,java.io.IOException))System.err.println("Exception\n"+h),h.printStackTrace();else throw h;
+}},"~A")});p("jalview.datamodel");q(["jalview.datamodel.BinaryNode","java.awt.Color"],"jalview.datamodel.SequenceNode",null,function(){c$=s(function(){this.ycount=this.height=this.count=this.dist=0;this.color=null;this.placeholder=this.dummy=!1;r(this,arguments)},jalview.datamodel,"SequenceNode",jalview.datamodel.BinaryNode);J(c$,function(){this.color=java.awt.Color.black});m(c$,function(a,b,c,d){t(this,jalview.datamodel.SequenceNode,[a,b,d]);this.dist=c},"~O,jalview.datamodel.SequenceNode,~N,~S");
+m(c$,function(a,b,c,d,e,k){t(this,jalview.datamodel.SequenceNode,[a,b,c]);this.dist=d;this.bootstrap=e;this.dummy=k},"~O,jalview.datamodel.SequenceNode,~S,~N,~N,~B");d(c$,"isDummy",function(){return this.dummy});d(c$,"isPlaceholder",function(){return this.placeholder});d(c$,"setDummy",function(a){var b=this.dummy;this.dummy=a;return b},"~B");d(c$,"setPlaceholder",function(a){this.placeholder=a},"~B");d(c$,"AscendTree",function(){var a=this;do a=a.parent();while(null!=a&&a.dummy);return a});d(c$,"isSequenceLabel",
+function(){if(null!=this.name&&0<this.name.length)for(var a=0,b=this.name.length;a<b;a++){var c=this.name.charAt(a);if(!("0"<=c&&"9">=c))return!0}return!1})});p("jalview.datamodel");c$=s(function(){this.$parent=this.$right=this.$left=this.name=this.$element=null;this.bootstrap=0;r(this,arguments)},jalview.datamodel,"BinaryNode");m(c$,function(){this.$left=this.$right=this.$parent=null;this.bootstrap=0});m(c$,function(a,b,c){this.$element=a;this.$parent=b;this.name=c;this.$left=this.$right=null},"~O,jalview.datamodel.BinaryNode,~S");
+d(c$,"element",function(){return this.$element});d(c$,"setElement",function(a){return this.$element=a},"~O");d(c$,"left",function(){return this.$left});d(c$,"setLeft",function(a){return this.$left=a},"jalview.datamodel.BinaryNode");d(c$,"right",function(){return this.$right});d(c$,"setRight",function(a){return this.$right=a},"jalview.datamodel.BinaryNode");d(c$,"parent",function(){return this.$parent});d(c$,"setParent",function(a){return this.$parent=a},"jalview.datamodel.BinaryNode");d(c$,"isLeaf",
+function(){return null==this.$left&&null==this.$right});d(c$,"SetChildren",function(a,b){null!=a&&(this.setLeft(a),a.detach(),a.setParent(this));null!=b&&(this.setRight(b),b.detach(),b.setParent(this))},"jalview.datamodel.BinaryNode,jalview.datamodel.BinaryNode");d(c$,"detach",function(){null!=this.$parent&&(this.$parent.$left===this?this.$parent.$left=null:this.$parent.$right===this&&(this.$parent.$right=null));this.$parent=null;return this});d(c$,"ascendLeft",function(){var a=this;do a=a.parent();
+while(null!=a&&null!=a.left()&&!a.left().isLeaf());return a});d(c$,"ascendRight",function(){var a=this;do a=a.parent();while(null!=a&&null!=a.right()&&!a.right().isLeaf());return a});d(c$,"setName",function(a){this.name=a},"~S");d(c$,"getName",function(){return this.name});d(c$,"setBootstrap",function(a){this.bootstrap=a},"~N");d(c$,"getBootstrap",function(){return this.bootstrap});p("jalview.appletgui");q(["jalview.appletgui.JVDialog"],"jalview.appletgui.EditNameDialog",["awt2swing.Label","$.Panel",
+"$.TextField","java.awt.BorderLayout","$.Font"],function(){c$=s(function(){this.description=this.id=null;r(this,arguments)},jalview.appletgui,"EditNameDialog",jalview.appletgui.JVDialog);e(c$,"getName",function(){return this.id.getText()});d(c$,"getDescription",function(){return 1>this.description.getText().length?null:this.description.getText()});m(c$,function(a,b,c,d,e,k,g,h,j){t(this,jalview.appletgui.EditNameDialog,[e,k,!0,g,h]);e=new java.awt.Font("Monospaced",0,12);k=new awt2swing.Panel(new java.awt.BorderLayout);
+g=new awt2swing.Panel(new java.awt.BorderLayout);this.id=new awt2swing.TextField(a,40);this.id.setFont(e);a=new awt2swing.Label(c);a.setFont(e);g.add(a,"West");g.add(this.id,"Center");k.add(g,"North");null!=d&&(g=new awt2swing.Panel(new java.awt.BorderLayout),this.description=new awt2swing.TextField(b,40),this.description.setFont(e),a=new awt2swing.Label(d),a.setFont(e),g.add(a,"West"),g.add(this.description,"Center"),k.add(g,"Center"));this.setMainPanel(k);this.setVisible(j)},"~S,~S,~S,~S,awt2swing.Frame,~S,~N,~N,~B")});
+p("awt2swing");q(["javax.swing.JTextField"],"awt2swing.TextField",["java.awt.event.TextEvent","javax.swing.event.DocumentListener"],function(){c$=B(awt2swing,"TextField",javax.swing.JTextField);d(c$,"addTextListener",function(a){this.getDocument().addDocumentListener((H("awt2swing.TextField$1")?0:awt2swing.TextField.$TextField$1$(),C(awt2swing.TextField$1,this,T("textListener",a))))},"java.awt.event.TextListener");c$.$TextField$1$=function(){A(self.c$);c$=L(awt2swing,"TextField$1",null,javax.swing.event.DocumentListener);
+e(c$,"insertUpdate",function(){},"javax.swing.event.DocumentEvent");e(c$,"removeUpdate",function(){},"javax.swing.event.DocumentEvent");e(c$,"changedUpdate",function(){this.f$.textListener.textValueChanged(new java.awt.event.TextEvent(this,0))},"javax.swing.event.DocumentEvent");c$=z()}});p("java.awt.event");q(["java.awt.AWTEvent"],"java.awt.event.TextEvent",null,function(){c$=B(java.awt.event,"TextEvent",java.awt.AWTEvent);e(c$,"paramString",function(){var a;switch(this.id){case 900:a="TEXT_VALUE_CHANGED";
+break;default:a="unknown type"}return a});G(c$,"TEXT_FIRST",900,"TEXT_LAST",900,"TEXT_VALUE_CHANGED",900)});p("jalview.appletgui");q(null,"jalview.appletgui.PaintRefresher",["jalview.appletgui.AlignmentPanel","java.util.Hashtable","$.Vector"],function(){c$=B(jalview.appletgui,"PaintRefresher");c$.Register=d(c$,"Register",function(a,b){null==jalview.appletgui.PaintRefresher.components&&(jalview.appletgui.PaintRefresher.components=new java.util.Hashtable);if(jalview.appletgui.PaintRefresher.components.containsKey(b)){var c=
+jalview.appletgui.PaintRefresher.components.get(b);c.contains(a)||c.addElement(a)}else c=new java.util.Vector,c.addElement(a),jalview.appletgui.PaintRefresher.components.put(b,c)},"java.awt.Component,~S");c$.RemoveComponent=d(c$,"RemoveComponent",function(a){if(null!=jalview.appletgui.PaintRefresher.components)for(var b=jalview.appletgui.PaintRefresher.components.keys();b.hasMoreElements();){var c=b.nextElement().toString(),d=jalview.appletgui.PaintRefresher.components.get(c);d.removeElement(a);0==
+d.size()&&jalview.appletgui.PaintRefresher.components.remove(c)}},"java.awt.Component");c$.Refresh=d(c$,"Refresh",function(a,b){jalview.appletgui.PaintRefresher.Refresh(a,b,!1,!1)},"java.awt.Component,~S");c$.Refresh=d(c$,"Refresh",function(a,b,c,d){if(null!=jalview.appletgui.PaintRefresher.components){var e=jalview.appletgui.PaintRefresher.components.get(b);if(null!=e)for(var k=e.elements();k.hasMoreElements();)b=k.nextElement(),b!==a&&(b.isValid()?d&&(v(b,jalview.appletgui.AlignmentPanel)&&v(a,
+jalview.appletgui.AlignmentPanel))&&jalview.appletgui.PaintRefresher.validateSequences(a.av.getAlignment(),b.av.getAlignment()):e.removeElement(b),v(b,jalview.appletgui.AlignmentPanel)&&c&&b.alignmentChanged(),b.repaint())}},"java.awt.Component,~S,~B,~B");c$.validateSequences=d(c$,"validateSequences",function(a,b){var c;c=0<a.getHiddenSequences().getSize()?a.getHiddenSequences().getFullAlignment().getSequencesArray():a.getSequencesArray();var d;d=0<b.getHiddenSequences().getSize()?b.getHiddenSequences().getFullAlignment().getSequencesArray():
+b.getSequencesArray();var e,k=c.length,g,h=d.length;if(k!=h){var j=!1;for(e=0;e<k;e++){j=!1;for(g=0;g<h;g++)if(d[g]===c[e]){j=!0;break}j||(e<b.getHeight()?(void 0).add(e,c[e]):b.addSequence(c[e]),d=0<b.getHiddenSequences().getSize()?b.getHiddenSequences().getFullAlignment().getSequencesArray():b.getSequencesArray(),h=d.length)}k=c.length;h=d.length;for(g=0;g<h;g++){j=!1;for(e=0;e<k;e++)if(d[g]===c[e]){j=!0;break}j||b.deleteSequence(d[g])}}},"jalview.datamodel.AlignmentI,jalview.datamodel.AlignmentI");
+c$.getAssociatedPanels=d(c$,"getAssociatedPanels",function(a){var b=jalview.appletgui.PaintRefresher.components.get(a);a=new java.util.Vector;var c,d=b.size();for(c=0;c<d;c++)v(b.elementAt(c),jalview.appletgui.AlignmentPanel)&&a.addElement(b.elementAt(c));b=Array(a.size());for(c=0;c<b.length;c++)b[c]=a.elementAt(c);return b},"~S");G(c$,"components",null)});p("jalview.appletgui");q(null,"jalview.appletgui.Tooltip",["awt2swing.Frame","java.applet.Applet","java.awt.Toolkit"],function(){c$=s(function(){this.tip=
+null;this.lastTip="";this.setPosition=!1;this.mainLayout=this.mainContainer=this.owner=null;this.shown=!1;this.VERTICAL_OFFSET=20;this.HORIZONTAL_ENLARGE=10;this.fontHeight=0;this.fm=this.linkImage=null;r(this,arguments)},jalview.appletgui,"Tooltip");d(c$,"setVisible",function(){},"~B");m(c$,function(a,b){this.owner=b;this.setTip(a);var c=this.getClass().getResource("/images/link.gif");null!=c&&(this.linkImage=java.awt.Toolkit.getDefaultToolkit().getImage(c))},"~S,java.awt.Component");d(c$,"setTip",
+function(a){System.err.println("Tooltip: "+a)},"~S");d(c$,"setTipLocation",function(){},"java.awt.event.MouseEvent");d(c$,"removeToolTip",function(){});d(c$,"mouseEntered",function(a){this.setTipLocation(a)},"java.awt.event.MouseEvent");d(c$,"mouseExited",function(){this.removeToolTip()},"java.awt.event.MouseEvent");d(c$,"mousePressed",function(){this.removeToolTip()},"java.awt.event.MouseEvent");d(c$,"mouseReleased",function(){},"java.awt.event.MouseEvent");d(c$,"mouseClicked",function(){},"java.awt.event.MouseEvent");
+d(c$,"mouseMoved",function(a){this.shown?this.setPosition&&this.setTipLocation(a):this.setTipLocation(a)},"java.awt.event.MouseEvent");d(c$,"mouseDragged",function(){},"java.awt.event.MouseEvent")});p("jalview.util");q(["java.lang.StringBuffer","java.util.ArrayList","java.util.regex.Pattern"],"jalview.util.ParseHtmlBodyAndLinks",["java.util.StringTokenizer"],function(){c$=s(function(){this.orig=null;this.htmlContent=!0;this.sb=this.links=null;r(this,arguments)},jalview.util,"ParseHtmlBodyAndLinks");
+J(c$,function(){this.links=new java.util.ArrayList;this.sb=new StringBuffer});d(c$,"getOrig",function(){return this.orig});d(c$,"isHtmlContent",function(){return this.htmlContent});d(c$,"getContent",function(){return this.sb.toString()});d(c$,"getLinks",function(){return this.links});m(c$,function(a,b,c){if(null==a||0==a.length)this.htmlContent=!1;else{-1==a.toUpperCase().indexOf("<HTML>")&&(this.htmlContent=!1);this.orig=a;for(var d=new java.util.StringTokenizer(a,"<"),e,k,g=null;d.hasMoreElements();)e=
+d.nextToken("&>"),!e.equalsIgnoreCase("html")&&!e.startsWith("/")&&(g=null,k=e.indexOf("<"),-1<k&&(g=e.substring(k+1),e=e.substring(0,k)),null!=g&&g.toUpperCase().startsWith("A HREF=")?(0<e.length&&this.sb.append(e),e=g.substring(g.indexOf('"')+1,g.length-1),k=d.nextToken("<>"),this.links.add(k+"|"+e),this.sb.append(k+"%LINK%")):null!=g&&g.equalsIgnoreCase("br")?this.sb.append(c):e.startsWith("lt;")?this.sb.append("<"+e.substring(3)):e.startsWith("gt;")?this.sb.append(">"+e.substring(3)):e.startsWith("amp;")?
+this.sb.append("&"+e.substring(4)):this.sb.append(e));b&&!this.htmlContent&&(this.sb=new StringBuffer(jalview.util.ParseHtmlBodyAndLinks.LEFT_ANGLE_BRACKET_PATTERN.matcher(a).replaceAll("&lt;")))}},"~S,~B,~S");d(c$,"getNonHtmlContent",function(){return this.isHtmlContent()?this.sb.toString():this.orig});c$.LEFT_ANGLE_BRACKET_PATTERN=c$.prototype.LEFT_ANGLE_BRACKET_PATTERN=java.util.regex.Pattern.compile("<")});p("jalview.appletgui");q("awt2swing.Panel jalview.renderer.AwtRenderPanelI java.awt.event.ActionListener $.AdjustmentListener $.MouseListener $.MouseMotionListener java.awt.Color".split(" "),
+"jalview.appletgui.AnnotationPanel","awt2swing.MenuItem $.PopupMenu $.Util jalview.appletgui.EditNameDialog $.UserDefinedColours jalview.datamodel.Annotation jalview.renderer.AnnotationRenderer jalview.util.MessageManager $.Platform java.awt.Dimension java.lang.StringBuffer".split(" "),function(){c$=s(function(){this.ap=this.av=null;this.activeRow=-1;this.HELIX="Helix";this.SHEET="Sheet";this.STEM="RNA Helix";this.LABEL="Label";this.REMOVE="Remove Annotation";this.COLOUR="Colour";this.fm=this.gg=
+this.image=this.SHEET_COLOUR=this.HELIX_COLOUR=null;this.imgWidth=0;this.$fastPaint=!1;this.graphStretchY=this.graphStretch=-1;this.MAC=this.mouseDragging=!1;this.renderer=null;this.needValidating=!1;this.scrollOffset=0;this.$bounds=null;r(this,arguments)},jalview.appletgui,"AnnotationPanel",awt2swing.Panel,[jalview.renderer.AwtRenderPanelI,java.awt.event.AdjustmentListener,java.awt.event.ActionListener,java.awt.event.MouseListener,java.awt.event.MouseMotionListener]);J(c$,function(){this.HELIX_COLOUR=
+java.awt.Color.red.darker();this.SHEET_COLOUR=java.awt.Color.green.darker().darker();this.$bounds=w(2,0)});m(c$,function(a){t(this,jalview.appletgui.AnnotationPanel,[]);this.MAC=jalview.util.Platform.isAMac();this.ap=a;this.av=a.av;this.setLayout(null);var b=this.adjustPanelHeight();a.apvscroll.setValues(0,this.getSize().height,0,b);this.addMouseMotionListener(this);this.addMouseListener(this);this.renderer=new jalview.renderer.AnnotationRenderer},"jalview.appletgui.AlignmentPanel");m(c$,function(a){t(this,
+jalview.appletgui.AnnotationPanel,[]);this.av=a;this.renderer=new jalview.renderer.AnnotationRenderer},"jalview.appletgui.AlignViewport");e(c$,"adjustmentValueChanged",function(){},"java.awt.event.AdjustmentEvent");e(c$,"actionPerformed",function(a){var b=this.av.getAlignment().getAlignmentAnnotation();if(null!=b){var c=b[this.activeRow].annotations;if(c.length<this.av.getColumnSelection().getMax()){var d=Array(this.av.getColumnSelection().getMax()+2);System.arraycopy(c,0,d,0,c.length);c=d;b[this.activeRow].annotations=
+c}var e="";null!=this.av.getColumnSelection()&&(0<this.av.getColumnSelection().size()&&null!=c[this.av.getColumnSelection().getMin()])&&(e=c[this.av.getColumnSelection().getMin()].displayCharacter);if(a.getActionCommand().equals("Remove Annotation"))for(a=0;a<this.av.getColumnSelection().size();a++)c[this.av.getColumnSelection().columnAt(a)]=null;else if(a.getActionCommand().equals("Label")){e=this.enterLabel(e,"Enter Label");if(null==e)return;0<e.length&&!b[this.activeRow].hasText&&(b[this.activeRow].hasText=
+!0);for(a=0;a<this.av.getColumnSelection().size();a++){var k=this.av.getColumnSelection().columnAt(a);this.av.getColumnSelection().isVisible(k)&&(null==c[k]&&(c[k]=new jalview.datamodel.Annotation(e,""," ",0)),c[k].displayCharacter=e)}}else if(a.getActionCommand().equals("Colour")){d=(new jalview.appletgui.UserDefinedColours(this,java.awt.Color.black,this.ap.alignFrame)).getColor();for(a=0;a<this.av.getColumnSelection().size();a++)k=this.av.getColumnSelection().columnAt(a),this.av.getColumnSelection().isVisible(k)&&
+(null==c[k]&&(c[k]=new jalview.datamodel.Annotation("",""," ",0)),c[k].colour=d)}else{d=String.fromCharCode(0);e="\u03b1";a.getActionCommand().equals("Helix")?d="H":a.getActionCommand().equals("Sheet")?(d="E",e="\u03b2"):a.getActionCommand().equals("RNA Helix")&&(d="S",e="\u03c3");b[this.activeRow].hasIcons||(b[this.activeRow].hasIcons=!0);e=this.enterLabel(e,"Enter Label");if(null==e)return;0<e.length&&!b[this.activeRow].hasText&&(b[this.activeRow].hasText=!0,a.getActionCommand().equals("RNA Helix")&&
+(b[this.activeRow].showAllColLabels=!0));for(a=0;a<this.av.getColumnSelection().size();a++)k=this.av.getColumnSelection().columnAt(a),this.av.getColumnSelection().isVisible(k)&&(null==c[k]&&(c[k]=new jalview.datamodel.Annotation(e,"",d,0)),c[k].secondaryStructure="S"!=d?d:0==e.length?" ":e.charAt(0),c[k].displayCharacter=e)}this.av.getAlignment().validateAnnotation(b[this.activeRow]);this.ap.alignmentChanged();this.adjustPanelHeight();this.repaint()}},"java.awt.event.ActionEvent");d(c$,"enterLabel",
+function(a,b){var c=new jalview.appletgui.EditNameDialog(a,null,b,null,this.ap.alignFrame,"Enter Label",400,200,!0);return c.accept?c.getName():null},"~S,~S");e(c$,"mousePressed",function(a){var b=this.av.getAlignment().getAlignmentAnnotation();if(null!=b){var c=-this.scrollOffset;this.activeRow=-1;for(var d=0;d<b.length;d++)if(b[d].visible&&(c+=b[d].height),a.getY()<c){b[d].editable?this.activeRow=d:0<b[d].graph&&(this.graphStretch=d,this.graphStretchY=a.getY());break}4==(a.getModifiers()&4)&&-1!=
+this.activeRow?null!=this.av.getColumnSelection()&&(b=new awt2swing.PopupMenu(jalview.util.MessageManager.getString("label.structure_type")),!0==this.av.getAlignment().isNucleotide()?c=new awt2swing.MenuItem("RNA Helix"):(c=new awt2swing.MenuItem("Helix"),c.addActionListener(this),b.add(c),c=new awt2swing.MenuItem("Sheet")),c.addActionListener(this),b.add(c),c=new awt2swing.MenuItem("Label"),c.addActionListener(this),b.add(c),c=new awt2swing.MenuItem("Colour"),c.addActionListener(this),b.add(c),c=
+new awt2swing.MenuItem("Remove Annotation"),c.addActionListener(this),b.add(c),this.ap.alignFrame.add(b),b.show(this,a.getX(),a.getY())):this.ap.scalePanel.mousePressed(a)}},"java.awt.event.MouseEvent");e(c$,"mouseReleased",function(a){this.graphStretchY=this.graphStretch=-1;this.mouseDragging=!1;this.needValidating&&(this.ap.validate(),this.needValidating=!1);this.ap.scalePanel.mouseReleased(a)},"java.awt.event.MouseEvent");e(c$,"mouseClicked",function(){},"java.awt.event.MouseEvent");e(c$,"mouseDragged",
+function(a){-1<this.graphStretch?(this.av.getAlignment().getAlignmentAnnotation()[this.graphStretch].graphHeight+=this.graphStretchY-a.getY(),0>this.av.getAlignment().getAlignmentAnnotation()[this.graphStretch].graphHeight&&(this.av.getAlignment().getAlignmentAnnotation()[this.graphStretch].graphHeight=0),this.graphStretchY=a.getY(),this.av.calcPanelHeight(),this.needValidating=!0,this.ap.paintAlignment(!0)):this.ap.scalePanel.mouseDragged(a)},"java.awt.event.MouseEvent");e(c$,"mouseMoved",function(a){var b=
+this.av.getAlignment().getAlignmentAnnotation();if(null!=b){for(var c=-1,d=-this.scrollOffset,e=0;e<b.length;e++)if(b[e].visible&&(d+=b[e].height),a.getY()<d){c=e;break}a=F(a.getX()/this.av.getCharWidth())+this.av.getStartRes();this.av.hasHiddenColumns()&&(a=this.av.getColumnSelection().adjustForHiddenColumns(a));-1<c&&(a<b[c].annotations.length&&null!=b[c].annotations[a])&&(d=new StringBuffer("Sequence position "+(a+1)),null!=b[c].annotations[a].description&&d.append("  "+b[c].annotations[a].description),
+this.ap.alignFrame.setStatus(d.toString()))}},"java.awt.event.MouseEvent");e(c$,"mouseEntered",function(a){this.ap.scalePanel.mouseEntered(a)},"java.awt.event.MouseEvent");e(c$,"mouseExited",function(a){this.ap.scalePanel.mouseExited(a)},"java.awt.event.MouseEvent");d(c$,"adjustPanelHeight",function(){return this.adjustPanelHeight(!0)});d(c$,"adjustPanelHeight",function(a){var b=this.av.calcPanelHeight();this.setSize(new java.awt.Dimension(this.getSize().width,b));a&&this.repaint();return b},"~B");
+d(c$,"addEditableColumn",function(){if(-1==this.activeRow){var a=this.av.getAlignment().getAlignmentAnnotation();if(null!=a)for(var b=0;b<a.length;b++)if(a[b].editable){this.activeRow=b;break}}},"~N");e(c$,"paintComponent",function(a){if(!this.av.getWrapAlignment()&&this.av.isShowAnnotation()){var b=this.getSize();this.imgWidth=b.width;if(!(1>this.imgWidth||1>b.height)){if(null==this.image||this.imgWidth!=this.image.getWidth(this)||b.height!=this.image.getHeight(this))this.image=this.createImage(this.imgWidth,
+b.height),this.gg=this.image.getGraphics(),this.gg.setFont(this.av.getFont()),this.fm=this.gg.getFontMetrics(),this.$fastPaint=!1;this.$fastPaint?(a.drawImage(this.image,0,0,this),this.$fastPaint=!1):(this.gg.setColor(java.awt.Color.white),this.gg.fillRect(0,0,this.getSize().width,this.getSize().height),this.drawComponent(this.gg,this.av.startRes,this.av.endRes+1),a.drawImage(this.image,0,0,this))}}},"java.awt.Graphics");d(c$,"fastPaint",function(a){if(!(0==a||null==this.av.getAlignment().getAlignmentAnnotation()||
+1>this.av.getAlignment().getAlignmentAnnotation().length)){this.gg.copyArea(0,0,this.imgWidth,this.getSize().height,-a*this.av.getCharWidth(),0);var b=this.av.startRes,c=this.av.endRes+1,d=0;0<a?(d=(c-b-a)*this.av.getCharWidth(),b=c-a):0>a&&(c=b-a);this.gg.translate(d,0);this.drawComponent(this.gg,b,c);this.gg.translate(-d,0);this.$fastPaint=!0}this.repaint()},"~N");d(c$,"drawComponent",function(a,b,c){var d=this.av.getFont();a.setFont(d);a.setColor(java.awt.Color.white);a.fillRect(0,0,(c-b)*this.av.getCharWidth(),
+this.getSize().height);null==this.fm&&(this.fm=a.getFontMetrics());null==this.av.getAlignment().getAlignmentAnnotation()||1>this.av.getAlignment().getAlignmentAnnotation().length?(a.setColor(java.awt.Color.white),a.fillRect(0,0,this.getSize().width,this.getSize().height),a.setColor(java.awt.Color.black),this.av.validCharWidth&&awt2swing.Util.drawString(a,jalview.util.MessageManager.getString("label.alignment_has_no_annotations"),20,15)):(a.translate(0,-this.scrollOffset),this.renderer.drawComponent(this,
+this.av,a,this.activeRow,b,c),a.translate(0,+this.scrollOffset))},"java.awt.Graphics,~N,~N");d(c$,"setScrollOffset",function(a,b){this.scrollOffset=a;b&&this.repaint()},"~N,~B");d(c$,"getFontMetrics",function(){return this.fm});e(c$,"getFadedImage",function(){return this.image});e(c$,"getFadedImageWidth",function(){return this.imgWidth});e(c$,"getVisibleVRange",function(){if(null!=this.ap&&null!=this.ap.alabels){var a=-this.ap.alabels.scrollOffset,b=a+this.ap.annotationPanelHolder.getHeight();this.$bounds[0]=
+a;this.$bounds[1]=b;return this.$bounds}return null});G(c$,"GRAPH_HEIGHT",40)});p("jalview.renderer");q(["java.awt.image.ImageObserver"],"jalview.renderer.AwtRenderPanelI",null,function(){M(jalview.renderer,"AwtRenderPanelI",java.awt.image.ImageObserver)});p("jalview.appletgui");q("awt2swing.Panel java.awt.event.ActionListener $.AdjustmentListener $.FocusListener awt2swing.Button $.Label $.Scrollbar $.TextField java.awt.GridLayout java.util.Vector".split(" "),"jalview.appletgui.UserDefinedColours",
+"awt2swing.Frame jalview.appletgui.AnnotationColourChooser $.FeatureColourChooser $.FeatureRenderer $.FeatureSettings jalview.bin.JalviewLite jalview.schemes.ResidueProperties $.UserColourScheme jalview.util.MessageManager java.awt.Color $.Dialog $.Font $.Rectangle java.awt.event.MouseAdapter java.lang.Error".split(" "),function(){c$=s(function(){this.originalColour=this.originalLabel=this.caller=this.dialog=this.jmol=this.frame=this.oldColourScheme=this.oldColours=this.selectedButton=this.seqGroup=
+this.ap=null;this.B=this.G=this.R=0;this.target=this.bText=this.bScroller=this.label5=this.gText=this.gScroller=this.label4=this.rText=this.label1=this.rScroller=this.cancelButton=this.applyButton=this.okButton=this.okcancelPanel=this.gridLayout=this.buttonPanel=null;r(this,arguments)},jalview.appletgui,"UserDefinedColours",awt2swing.Panel,[java.awt.event.ActionListener,java.awt.event.AdjustmentListener,java.awt.event.FocusListener]);J(c$,function(){this.oldColours=new java.util.Vector;this.buttonPanel=
+new awt2swing.Panel;this.gridLayout=new java.awt.GridLayout;this.okcancelPanel=new awt2swing.Panel;this.okButton=new awt2swing.Button;this.applyButton=new awt2swing.Button;this.cancelButton=new awt2swing.Button;this.rScroller=new awt2swing.Scrollbar;this.label1=new awt2swing.Label;this.rText=new awt2swing.TextField;this.label4=new awt2swing.Label;this.gScroller=new awt2swing.Scrollbar;this.gText=new awt2swing.TextField;this.label5=new awt2swing.Label;this.bScroller=new awt2swing.Scrollbar;this.bText=
+new awt2swing.TextField;this.target=new awt2swing.Panel});d(c$,"loadDefaultColours",function(){return null});m(c$,function(a,b){t(this,jalview.appletgui.UserDefinedColours,[]);this.ap=a;this.seqGroup=b;this.oldColourScheme=null!=this.seqGroup?this.seqGroup.cs:a.av.getGlobalColourScheme();this.init()},"jalview.appletgui.AlignmentPanel,jalview.datamodel.SequenceGroup");m(c$,function(a){t(this,jalview.appletgui.UserDefinedColours,[]);this.jmol=a;this.init()},"jalview.appletgui.AppletJmol");m(c$,function(a,
+b){t(this,jalview.appletgui.UserDefinedColours,[]);this.caller=a;this.originalColour=a.colourPanel.getBackground();this.originalLabel="Feature Colour";this.setForDialog("Select Feature Colour",b);this.setTargetColour(a.colourPanel.getBackground());this.dialog.setVisible(!0)},"jalview.appletgui.FeatureRenderer,awt2swing.Frame");m(c$,function(a,b,c){this.construct(a,b,c,"Select Colour")},"java.awt.Component,java.awt.Color,awt2swing.Frame");m(c$,function(a,b,c,d){t(this,jalview.appletgui.UserDefinedColours,
+[]);this.caller=a;this.originalColour=b;this.originalLabel=d;this.setForDialog(d,c);this.setTargetColour(b);this.dialog.setVisible(!0)},"java.awt.Component,java.awt.Color,awt2swing.Frame,~S");m(c$,function(a,b,c){this.construct(a,b,c,c)},"~O,~S,java.awt.Color");m(c$,function(a,b,c){this.construct(a,b,c,c.getMaxColor())},"jalview.appletgui.FeatureSettings,~S,jalview.schemes.GraduatedColor");m(c$,function(a,b,c,d){t(this,jalview.appletgui.UserDefinedColours,[]);this.caller=a;this.originalColour=c;this.originalLabel=
+b;this.init();this.remove(this.buttonPanel);this.setTargetColour(d);this.okcancelPanel.setBounds(new java.awt.Rectangle(0,113,400,35));this.frame.setTitle(jalview.util.MessageManager.getString("label.user_defined_colours")+" - "+b);this.frame.setSize(420,200)},"~O,~S,~O,java.awt.Color");d(c$,"setForDialog",function(a,b){this.init();this.frame.setVisible(!1);this.remove(this.buttonPanel);if(v(b,awt2swing.Frame))this.dialog=new java.awt.Dialog(b,a,!0);else throw Error(jalview.util.MessageManager.getString("label.error_unsupported_owwner_user_colour_scheme"));
+this.dialog.add(this);this.setSize(400,123);this.okcancelPanel.setBounds(new java.awt.Rectangle(0,123,400,35));var c=160+b.getInsets().top+this.getInsets().bottom;this.dialog.setBounds(b.getBounds().x+F((b.getSize().width-400)/2),b.getBounds().y+F((b.getSize().height-c)/2),400,c)},"~S,java.awt.Container");e(c$,"actionPerformed",function(a){a=a.getSource();a===this.okButton?this.okButton_actionPerformed():a===this.applyButton?this.applyButton_actionPerformed():a===this.cancelButton?this.cancelButton_actionPerformed():
+a===this.rText?this.rText_actionPerformed():a===this.gText?this.gText_actionPerformed():a===this.bText&&this.bText_actionPerformed()},"java.awt.event.ActionEvent");e(c$,"adjustmentValueChanged",function(a){a.getSource()===this.rScroller?this.rScroller_adjustmentValueChanged():a.getSource()===this.gScroller?this.gScroller_adjustmentValueChanged():a.getSource()===this.bScroller&&this.bScroller_adjustmentValueChanged()},"java.awt.event.AdjustmentEvent");d(c$,"init",function(){try{this.jbInit()}catch(a){if(y(a,
+Exception))a.printStackTrace();else throw a;}this.frame=new awt2swing.Frame;this.frame.add(this);jalview.bin.JalviewLite.addFrame(this.frame,jalview.util.MessageManager.getString("label.user_defined_colours"),420,345);null!=this.seqGroup&&this.frame.setTitle(this.frame.getTitle()+" ("+this.seqGroup.getName()+")");for(var b=0;20>b;b++)this.makeButton(jalview.schemes.ResidueProperties.aa2Triplet.get(jalview.schemes.ResidueProperties.aa[b])+"",jalview.schemes.ResidueProperties.aa[b]);this.makeButton("B",
+"B");this.makeButton("Z","Z");this.makeButton("X","X");this.makeButton("Gap","'.','-',' '");this.validate()});d(c$,"rText_actionPerformed",function(){try{var a=Integer.parseInt(this.rText.getText());this.rScroller.setValue(a);this.rScroller_adjustmentValueChanged()}catch(b){if(!y(b,NumberFormatException))throw b;}});d(c$,"gText_actionPerformed",function(){try{var a=Integer.parseInt(this.gText.getText());this.gScroller.setValue(a);this.gScroller_adjustmentValueChanged()}catch(b){if(!y(b,NumberFormatException))throw b;
+}});d(c$,"bText_actionPerformed",function(){try{var a=Integer.parseInt(this.bText.getText());this.bScroller.setValue(a);this.bScroller_adjustmentValueChanged()}catch(b){if(!y(b,NumberFormatException))throw b;}});d(c$,"rScroller_adjustmentValueChanged",function(){this.R=this.rScroller.getValue();this.rText.setText(this.R+"");this.colourChanged()});d(c$,"gScroller_adjustmentValueChanged",function(){this.G=this.gScroller.getValue();this.gText.setText(this.G+"");this.colourChanged()});d(c$,"bScroller_adjustmentValueChanged",
+function(){this.B=this.bScroller.getValue();this.bText.setText(this.B+"");this.colourChanged()});d(c$,"colourChanged",function(){var a=new java.awt.Color(this.R,this.G,this.B);this.target.setBackground(a);this.target.repaint();null!=this.selectedButton&&(this.selectedButton.setBackground(a),this.selectedButton.repaint())});d(c$,"setTargetColour",function(a){this.R=a.getRed();this.G=a.getGreen();this.B=a.getBlue();this.rScroller.setValue(this.R);this.gScroller.setValue(this.G);this.bScroller.setValue(this.B);
+this.rText.setText(this.R+"");this.gText.setText(this.G+"");this.bText.setText(this.B+"");this.colourChanged()},"java.awt.Color");d(c$,"colourButtonPressed",function(a){this.selectedButton=a.getSource();this.setTargetColour(this.selectedButton.getBackground())},"java.awt.event.MouseEvent");d(c$,"makeButton",function(a,b){var c=new awt2swing.Button,d=java.awt.Color.white;if(null!=this.oldColourScheme)try{d=this.oldColourScheme.findColourSeq(b.charAt(0),-1,null)}catch(e){if(!y(e,Exception))throw e;
+}c.setBackground(d);this.oldColours.addElement(d);c.setLabel(a);c.setForeground(d.darker().darker().darker());c.setFont(new java.awt.Font("Verdana",1,10));c.addMouseListener((H("jalview.appletgui.UserDefinedColours$1")?0:jalview.appletgui.UserDefinedColours.$UserDefinedColours$1$(),C(jalview.appletgui.UserDefinedColours$1,this,null)));this.buttonPanel.add(c,null)},"~S,~S");d(c$,"okButton_actionPerformed",function(){this.applyButton_actionPerformed();null!=this.dialog&&this.dialog.setVisible(!1);this.frame.setVisible(!1)});
+d(c$,"getColor",function(){return new java.awt.Color(this.R,this.G,this.B)});d(c$,"applyButton_actionPerformed",function(){if(null!=this.caller)v(this.caller,jalview.appletgui.FeatureSettings)?this.caller.setUserColour(this.originalLabel,this.getColor()):v(this.caller,jalview.appletgui.AnnotationColourChooser)?this.originalLabel.equals("Min Colour")?this.caller.minColour_actionPerformed(this.getColor()):this.caller.maxColour_actionPerformed(this.getColor()):v(this.caller,jalview.appletgui.FeatureRenderer)?
+this.caller.colourPanel.updateColor(this.getColor()):v(this.caller,jalview.appletgui.FeatureColourChooser)&&(-1<this.originalLabel.indexOf("inimum")?this.caller.minColour_actionPerformed(this.getColor()):this.caller.maxColour_actionPerformed(this.getColor()));else{for(var a=Array(24),b=0;24>b;b++){var c=this.buttonPanel.getComponent(b);a[b]=c.getBackground()}a=new jalview.schemes.UserColourScheme(a);null!=this.ap&&a.setThreshold(0,this.ap.av.isIgnoreGapsConsensus());null!=this.ap?(null!=this.seqGroup?
+this.seqGroup.cs=a:this.ap.av.setGlobalColourScheme(a),this.ap.seqPanel.seqCanvas.img=null,this.ap.paintAlignment(!0)):null!=this.jmol&&this.jmol.setJalviewColourScheme(a)}});d(c$,"cancelButton_actionPerformed",function(){if(null!=this.caller)v(this.caller,jalview.appletgui.FeatureSettings)?this.caller.setUserColour(this.originalLabel,this.originalColour):v(this.caller,jalview.appletgui.AnnotationColourChooser)?this.originalLabel.equals("Min Colour")?this.caller.minColour_actionPerformed(this.originalColour):
+this.caller.maxColour_actionPerformed(this.originalColour):v(this.caller,jalview.appletgui.FeatureRenderer)?this.caller.colourPanel.updateColor(this.originalColour):v(this.caller,jalview.appletgui.FeatureColourChooser)&&(-1<this.originalLabel.indexOf("inimum")?this.caller.minColour_actionPerformed(this.originalColour):this.caller.maxColour_actionPerformed(this.originalColour)),null!=this.dialog&&this.dialog.setVisible(!1);else{for(var a=Array(24),b=0;24>b;b++)a[b]=this.oldColours.elementAt(b),this.buttonPanel.getComponent(b).setBackground(a[b]);
+a=new jalview.schemes.UserColourScheme(a);null!=this.ap?(null!=this.seqGroup?this.seqGroup.cs=a:this.ap.av.setGlobalColourScheme(a),this.ap.paintAlignment(!0)):null!=this.jmol&&this.jmol.setJalviewColourScheme(a)}this.frame.setVisible(!1)});d(c$,"jbInit",function(){this.setLayout(null);this.buttonPanel.setLayout(this.gridLayout);this.gridLayout.setColumns(6);this.gridLayout.setRows(4);this.okButton.setFont(new java.awt.Font("Verdana",0,11));this.okButton.setLabel(jalview.util.MessageManager.getString("action.ok"));
+this.okButton.addActionListener(this);this.applyButton.setFont(new java.awt.Font("Verdana",0,11));this.applyButton.setLabel(jalview.util.MessageManager.getString("action.apply"));this.applyButton.addActionListener(this);this.cancelButton.setFont(new java.awt.Font("Verdana",0,11));this.cancelButton.setLabel(jalview.util.MessageManager.getString("action.cancel"));this.cancelButton.addActionListener(this);this.setBackground(new java.awt.Color(212,208,223));this.okcancelPanel.setBounds(new java.awt.Rectangle(0,
+265,400,35));this.buttonPanel.setBounds(new java.awt.Rectangle(0,123,400,142));this.rScroller.setMaximum(256);this.rScroller.setMinimum(0);this.rScroller.setOrientation(0);this.rScroller.setUnitIncrement(1);this.rScroller.setVisibleAmount(1);this.rScroller.setBounds(new java.awt.Rectangle(36,27,119,19));this.rScroller.addAdjustmentListener(this);this.label1.setAlignment(4);this.label1.setText("R");this.label1.setBounds(new java.awt.Rectangle(19,30,16,15));this.rText.setFont(new java.awt.Font("Dialog",
+0,10));this.rText.setText("0        ");this.rText.setBounds(new java.awt.Rectangle(156,27,53,19));this.rText.addActionListener(this);this.rText.addFocusListener(this);this.label4.setAlignment(4);this.label4.setText("G");this.label4.setBounds(new java.awt.Rectangle(15,56,20,15));this.gScroller.setMaximum(256);this.gScroller.setMinimum(0);this.gScroller.setOrientation(0);this.gScroller.setUnitIncrement(1);this.gScroller.setVisibleAmount(1);this.gScroller.setBounds(new java.awt.Rectangle(35,52,120,20));
+this.gScroller.addAdjustmentListener(this);this.gText.setFont(new java.awt.Font("Dialog",0,10));this.gText.setText("0        ");this.gText.setBounds(new java.awt.Rectangle(156,52,53,20));this.gText.addActionListener(this);this.gText.addFocusListener(this);this.label5.setAlignment(4);this.label5.setText("B");this.label5.setBounds(new java.awt.Rectangle(14,82,20,15));this.bScroller.setMaximum(256);this.bScroller.setMinimum(0);this.bScroller.setOrientation(0);this.bScroller.setUnitIncrement(1);this.bScroller.setVisibleAmount(1);
+this.bScroller.setBounds(new java.awt.Rectangle(35,78,120,20));this.bScroller.addAdjustmentListener(this);this.bText.setFont(new java.awt.Font("Dialog",0,10));this.bText.setText("0        ");this.bText.setBounds(new java.awt.Rectangle(157,78,52,20));this.bText.addActionListener(this);this.bText.addFocusListener(this);this.target.setBackground(java.awt.Color.black);this.target.setBounds(new java.awt.Rectangle(229,26,134,79));this.add(this.okcancelPanel,null);this.okcancelPanel.add(this.okButton,null);
+this.okcancelPanel.add(this.applyButton,null);this.okcancelPanel.add(this.cancelButton,null);this.add(this.rText);this.add(this.gText);this.add(this.bText);this.add(this.buttonPanel,null);this.add(this.target,null);this.add(this.gScroller);this.add(this.rScroller);this.add(this.bScroller);this.add(this.label5);this.add(this.label4);this.add(this.label1)});e(c$,"focusGained",function(){},"java.awt.event.FocusEvent");e(c$,"focusLost",function(a){a=a.getComponent();a===this.rText?this.rText_actionPerformed():
+a===this.gText?this.gText_actionPerformed():a===this.bText&&this.bText_actionPerformed()},"java.awt.event.FocusEvent");c$.$UserDefinedColours$1$=function(){A(self.c$);c$=L(jalview.appletgui,"UserDefinedColours$1",java.awt.event.MouseAdapter);e(c$,"mousePressed",function(a){this.b$["jalview.appletgui.UserDefinedColours"].colourButtonPressed(a)},"java.awt.event.MouseEvent");c$=z()}});p("jalview.appletgui");q("awt2swing.Panel java.awt.event.ActionListener $.AdjustmentListener $.ItemListener $.MouseListener awt2swing.Button $.Checkbox $.Choice $.Scrollbar $.TextField java.awt.BorderLayout $.FlowLayout".split(" "),
+"jalview.appletgui.AnnotationColourChooser","awt2swing.Frame jalview.appletgui.UserDefinedColours jalview.bin.JalviewLite jalview.datamodel.GraphLine jalview.schemes.AnnotationColourGradient $.ColourSchemeI jalview.util.MessageManager java.awt.Color $.Dimension $.Font java.lang.Error $.Float java.util.Hashtable $.Vector".split(" "),function(){c$=s(function(){this.currentAnnotation=this.oldgroupColours=this.oldcs=this.ap=this.av=this.frame=null;this.adjusting=!1;this.thresholdIsMin=this.borderLayout1=
+this.currentColours=this.thresholdValue=this.slider=this.jPanel3=this.flowLayout1=this.threshold=this.jPanel2=this.jPanel1=this.defColours=this.cancel=this.ok=this.maxColour=this.minColour=this.annotations=null;r(this,arguments)},jalview.appletgui,"AnnotationColourChooser",awt2swing.Panel,[java.awt.event.ActionListener,java.awt.event.AdjustmentListener,java.awt.event.ItemListener,java.awt.event.MouseListener]);J(c$,function(){this.annotations=new awt2swing.Choice;this.minColour=new awt2swing.Button;
+this.maxColour=new awt2swing.Button;this.ok=new awt2swing.Button;this.cancel=new awt2swing.Button;this.defColours=new awt2swing.Button;this.jPanel1=new awt2swing.Panel;this.jPanel2=new awt2swing.Panel;this.threshold=new awt2swing.Choice;this.flowLayout1=new java.awt.FlowLayout;this.jPanel3=new awt2swing.Panel;this.slider=new awt2swing.Scrollbar(0);this.thresholdValue=new awt2swing.TextField(20);this.currentColours=new awt2swing.Checkbox;this.borderLayout1=new java.awt.BorderLayout;this.thresholdIsMin=
+new awt2swing.Checkbox});m(c$,function(a,b){t(this,jalview.appletgui.AnnotationColourChooser,[]);try{this.jbInit()}catch(c){if(!y(c,Exception))throw c;}this.oldcs=a.getGlobalColourScheme();if(null!=a.getAlignment().getGroups()){this.oldgroupColours=new java.util.Hashtable;for(var d,e=b.av.getAlignment().getGroups().iterator();e.hasNext()&&((d=e.next())||1);)null!=d.cs?this.oldgroupColours.put(d,d.cs):this.oldgroupColours.put(d,"null")}this.av=a;this.ap=b;this.slider.addAdjustmentListener(this);this.slider.addMouseListener(this);
+if(null!=a.getAlignment().getAlignmentAnnotation()){this.setDefaultMinMax();this.adjusting=!0;v(this.oldcs,jalview.schemes.AnnotationColourGradient)&&(d=this.oldcs,this.currentColours.setState(d.isPredefinedColours()||null!=d.getBaseColour()),!d.isPredefinedColours()&&null==d.getBaseColour()&&(this.minColour.setBackground(d.getMinColour()),this.maxColour.setBackground(d.getMaxColour())));d=new java.util.Vector;for(var e=1,k=0;k<a.getAlignment().getAlignmentAnnotation().length;k++){var g=a.getAlignment().getAlignmentAnnotation()[k].label;
+d.contains(g)?d.addElement(g+"_"+e++):d.addElement(g)}for(k=0;k<d.size();k++)this.annotations.addItem(d.elementAt(k).toString());this.threshold.addItem(jalview.util.MessageManager.getString("label.threshold_feature_no_thereshold"));this.threshold.addItem(jalview.util.MessageManager.getString("label.threshold_feature_above_thereshold"));this.threshold.addItem(jalview.util.MessageManager.getString("label.threshold_feature_below_thereshold"));if(v(this.oldcs,jalview.schemes.AnnotationColourGradient)){d=
+this.oldcs;this.annotations.select(d.getAnnotation());switch(d.getAboveThreshold()){case -1:this.threshold.select(new Integer(0));break;case 1:this.threshold.select(new Integer(1));break;case 0:this.threshold.select(new Integer(1));break;default:throw Error(jalview.util.MessageManager.getString("error.implementation_error_dont_know_thereshold_annotationcolourgradient"));}this.thresholdIsMin.setState(d.thresholdIsMinMax);this.thresholdValue.setText(""+d.getAnnotationThreshold())}this.adjusting=!1;
+this.changeColour();this.frame=new awt2swing.Frame;this.frame.add(this);jalview.bin.JalviewLite.addFrame(this.frame,jalview.util.MessageManager.getString("label.colour_by_annotation"),560,175);this.validate()}},"jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");d(c$,"setDefaultMinMax",function(){this.minColour.setBackground(this.av.applet.getDefaultColourParameter("ANNOTATIONCOLOUR_MIN",java.awt.Color.orange));this.maxColour.setBackground(this.av.applet.getDefaultColourParameter("ANNOTATIONCOLOUR_MAX",
+java.awt.Color.red))});m(c$,function(){t(this,jalview.appletgui.AnnotationColourChooser,[]);try{this.jbInit()}catch(a){if(y(a,Exception))a.printStackTrace();else throw a;}});d(c$,"jbInit",function(){this.minColour.setFont(new java.awt.Font("Verdana",0,11));this.minColour.setLabel(jalview.util.MessageManager.getString("label.min_colour"));this.minColour.addActionListener(this);this.maxColour.setFont(new java.awt.Font("Verdana",0,11));this.maxColour.setLabel(jalview.util.MessageManager.getString("label.max_colour"));
+this.maxColour.addActionListener(this);this.thresholdIsMin.addItemListener(this);this.ok.setLabel(jalview.util.MessageManager.getString("action.ok"));this.ok.addActionListener(this);this.cancel.setLabel(jalview.util.MessageManager.getString("action.cancel"));this.cancel.addActionListener(this);this.defColours.setLabel(jalview.util.MessageManager.getString("action.set_defaults"));this.defColours.addActionListener(this);this.annotations.addItemListener(this);this.thresholdValue.addActionListener(this);
+this.slider.setBackground(java.awt.Color.white);this.slider.setPreferredSize(new java.awt.Dimension(193,21));this.slider.setEnabled(!1);this.thresholdValue.setPreferredSize(new java.awt.Dimension(79,22));this.thresholdValue.setEnabled(!1);this.thresholdValue.setColumns(5);this.currentColours.setFont(new java.awt.Font("Verdana",0,11));this.currentColours.setLabel(jalview.util.MessageManager.getString("label.use_original_colours"));this.currentColours.addItemListener(this);this.thresholdIsMin.setBackground(java.awt.Color.white);
+this.thresholdIsMin.setLabel(jalview.util.MessageManager.getString("label.threshold_minmax"));this.setLayout(this.borderLayout1);this.jPanel1.setBackground(java.awt.Color.white);this.jPanel2.setLayout(new java.awt.FlowLayout);this.jPanel2.setBackground(java.awt.Color.white);this.threshold.addItemListener(this);this.jPanel3.setLayout(new java.awt.FlowLayout);this.jPanel3.setBackground(java.awt.Color.white);var a=new awt2swing.Panel;a.setLayout(new java.awt.BorderLayout);a.setBackground(java.awt.Color.white);
+this.jPanel1.add(this.ok);this.jPanel1.add(this.cancel);this.jPanel2.add(this.annotations);this.jPanel2.add(this.currentColours);this.jPanel2.add(this.minColour);this.jPanel2.add(this.maxColour);a.add(this.thresholdIsMin,"West");a.add(this.slider,"Center");a.add(this.thresholdValue,"East");var b=new awt2swing.Panel;b.setLayout(new java.awt.BorderLayout);b.setBackground(java.awt.Color.white);b.add(this.jPanel2,"North");b.add(this.threshold,"West");this.jPanel3.add(this.defColours);b.add(this.jPanel3,
+"East");b.add(a,"South");this.add(b,"Center");this.add(this.jPanel1,"South")});e(c$,"actionPerformed",function(a){if(a.getSource()===this.thresholdValue)try{var b=(new Float(this.thresholdValue.getText())).floatValue();this.slider.setValue(I(1E3*b));this.adjustmentValueChanged(null)}catch(c){if(!y(c,NumberFormatException))throw c;}else a.getSource()===this.minColour?this.minColour_actionPerformed(null):a.getSource()===this.maxColour?this.maxColour_actionPerformed(null):a.getSource()===this.defColours?
+this.defColour_actionPerformed():a.getSource()===this.ok?(this.changeColour(),this.frame.setVisible(!1)):a.getSource()===this.cancel?(this.reset(),this.ap.paintAlignment(!0),this.frame.setVisible(!1)):this.changeColour()},"java.awt.event.ActionEvent");e(c$,"itemStateChanged",function(a){a.getSource()===this.currentColours&&(this.currentColours.getState()&&this.reset(),this.maxColour.setEnabled(!this.currentColours.getState()),this.minColour.setEnabled(!this.currentColours.getState()));this.changeColour()},
+"java.awt.event.ItemEvent");e(c$,"adjustmentValueChanged",function(){this.adjusting||(this.thresholdValue.setText(this.slider.getValue()/1E3+""),this.currentColours.getState()&&!v(this.av.getGlobalColourScheme(),jalview.schemes.AnnotationColourGradient)&&this.changeColour(),this.currentAnnotation.threshold.value=this.slider.getValue()/1E3,this.ap.paintAlignment(!1))},"java.awt.event.AdjustmentEvent");d(c$,"minColour_actionPerformed",function(a){null!=a?(this.minColour.setBackground(a),this.minColour.repaint(),
+this.changeColour()):new jalview.appletgui.UserDefinedColours(this,"Min Colour",this.minColour.getBackground())},"java.awt.Color");d(c$,"maxColour_actionPerformed",function(a){null!=a?(this.maxColour.setBackground(a),this.maxColour.repaint(),this.changeColour()):new jalview.appletgui.UserDefinedColours(this,"Max Colour",this.maxColour.getBackground())},"java.awt.Color");d(c$,"defColour_actionPerformed",function(){this.setDefaultMinMax();this.minColour.repaint();this.maxColour.repaint();this.changeColour()});
+d(c$,"changeColour",function(){if(!this.adjusting){this.currentAnnotation=this.av.getAlignment().getAlignmentAnnotation()[this.annotations.getSelectedIndex()];var a=-1;1==this.threshold.getSelectedIndex()?a=1:2==this.threshold.getSelectedIndex()&&(a=0);this.slider.setEnabled(!0);this.thresholdValue.setEnabled(!0);this.thresholdIsMin.setEnabled(!0);-1==a?(this.slider.setEnabled(!1),this.thresholdValue.setEnabled(!1),this.thresholdIsMin.setEnabled(!1),this.thresholdValue.setText("")):-1!=a&&null==this.currentAnnotation.threshold&&
+this.currentAnnotation.setThreshold(new jalview.datamodel.GraphLine((this.currentAnnotation.graphMax-this.currentAnnotation.graphMin)/2,"Threshold",java.awt.Color.black));-1!=a&&(this.adjusting=!0,this.slider.setMinimum(I(1E3*this.currentAnnotation.graphMin)),this.slider.setMaximum(I(1E3*this.currentAnnotation.graphMax)),this.slider.setValue(I(1E3*this.currentAnnotation.threshold.value)),this.thresholdValue.setText(this.currentAnnotation.threshold.value+""),this.slider.setEnabled(!0),this.thresholdValue.setEnabled(!0),
+this.adjusting=!1);var b=null,b=this.currentColours.getState()?new jalview.schemes.AnnotationColourGradient(this.currentAnnotation,this.av.getGlobalColourScheme(),a):new jalview.schemes.AnnotationColourGradient(this.currentAnnotation,this.minColour.getBackground(),this.maxColour.getBackground(),a);0==this.currentAnnotation.graphMin&&0==this.currentAnnotation.graphMax&&b.setPredefinedColours(!0);b.thresholdIsMinMax=this.thresholdIsMin.getState();this.av.setGlobalColourScheme(b);if(null!=this.av.getAlignment().getGroups())for(var c,
+b=this.ap.av.getAlignment().getGroups().iterator();b.hasNext()&&((c=b.next())||1);)null!=c.cs&&(c.cs=this.currentColours.getState()?new jalview.schemes.AnnotationColourGradient(this.currentAnnotation,c.cs,a):new jalview.schemes.AnnotationColourGradient(this.currentAnnotation,this.minColour.getBackground(),this.maxColour.getBackground(),a));this.ap.alignmentChanged();this.ap.paintAlignment(!0)}});d(c$,"reset",function(){this.av.setGlobalColourScheme(this.oldcs);if(null!=this.av.getAlignment().getGroups())for(var a,
+b=this.ap.av.getAlignment().getGroups().iterator();b.hasNext()&&((a=b.next())||1);){var c=this.oldgroupColours.get(a);a.cs=v(c,jalview.schemes.ColourSchemeI)?c:null}this.ap.paintAlignment(!0)});e(c$,"mouseClicked",function(){},"java.awt.event.MouseEvent");e(c$,"mousePressed",function(){},"java.awt.event.MouseEvent");e(c$,"mouseReleased",function(){this.ap.paintAlignment(!0)},"java.awt.event.MouseEvent");e(c$,"mouseEntered",function(){},"java.awt.event.MouseEvent");e(c$,"mouseExited",function(){},
+"java.awt.event.MouseEvent")});p("awt2swing");q(["javax.swing.JComboBox"],"awt2swing.Choice",null,function(){c$=B(awt2swing,"Choice",javax.swing.JComboBox);d(c$,"select",function(a){this.setSelectedItem(a)},"~O")});p("javax.swing");q("java.awt.ItemSelectable java.awt.event.ActionListener javax.swing.ActionPropertyChangeListener $.JComponent javax.swing.event.ListDataListener javax.swing.JPopupMenu".split(" "),"javax.swing.JComboBox","java.lang.IllegalArgumentException $.RuntimeException java.awt.Component $.EventQueue java.awt.event.ActionEvent $.InputEvent $.ItemEvent $.ItemListener javax.swing.AbstractAction $.DefaultComboBoxModel $.MutableComboBoxModel $.SwingUtilities $.UIManager javax.swing.event.AncestorListener $.PopupMenuEvent $.PopupMenuListener".split(" "),
+function(){c$=s(function(){this.editor=this.renderer=this.dataModel=null;this.maximumRowCount=8;this.$isEditable=!1;this.keySelectionManager=null;this.actionCommand="comboBoxChanged";this.lightWeightPopupEnabled=!1;this.prototypeDisplayValue=this.selectedItemReminder=null;this.selectingItem=this.firingActionEvent=!1;this.actionPropertyChangeListener=this.$action=null;H("javax.swing.JComboBox.DefaultKeySelectionManager")||javax.swing.JComboBox.$JComboBox$DefaultKeySelectionManager$();r(this,arguments)},
+javax.swing,"JComboBox",javax.swing.JComponent,[java.awt.ItemSelectable,javax.swing.event.ListDataListener,java.awt.event.ActionListener]);J(c$,function(){this.lightWeightPopupEnabled=javax.swing.JPopupMenu.getDefaultLightWeightPopupEnabled()});m(c$,function(a){t(this,javax.swing.JComboBox);this.setModel(a);this.init()},"javax.swing.ComboBoxModel");m(c$,function(a){t(this,javax.swing.JComboBox);this.setModel(new javax.swing.DefaultComboBoxModel(a));this.init()},"~A");m(c$,function(a){t(this,javax.swing.JComboBox);
+this.setModel(new javax.swing.DefaultComboBoxModel(a));this.init()},"java.util.Vector");m(c$,function(){t(this,javax.swing.JComboBox);this.setModel(new javax.swing.DefaultComboBoxModel);this.init()});d(c$,"init",function(){this.installAncestorListener();this.setUIProperty("opaque",new Boolean(!0));this.updateUI()});d(c$,"installAncestorListener",function(){this.addAncestorListener((H("javax.swing.JComboBox$1")?0:javax.swing.JComboBox.$JComboBox$1$(),C(javax.swing.JComboBox$1,this,null)))});e(c$,"updateUI",
+function(){this.setUI(javax.swing.UIManager.getUI(this));var a=this.getRenderer();v(a,java.awt.Component)&&javax.swing.SwingUtilities.updateComponentTreeUI(a)});e(c$,"getUIClassID",function(){return"ComboBoxUI"});e(c$,"getUI",function(){return this.ui});d(c$,"setModel",function(a){var b=this.dataModel;null!=b&&b.removeListDataListener(this);this.dataModel=a;this.dataModel.addListDataListener(this);this.selectedItemReminder=this.dataModel.getSelectedItem();this.firePropertyChangeObject("model",b,this.dataModel)},
+"javax.swing.ComboBoxModel");d(c$,"getModel",function(){return this.dataModel});d(c$,"setLightWeightPopupEnabled",function(a){var b=this.lightWeightPopupEnabled;this.lightWeightPopupEnabled=a;this.firePropertyChangeBool("lightWeightPopupEnabled",b,this.lightWeightPopupEnabled)},"~B");d(c$,"isLightWeightPopupEnabled",function(){return this.lightWeightPopupEnabled});d(c$,"setEditable",function(a){var b=this.$isEditable;this.$isEditable=a;this.firePropertyChangeBool("editable",b,this.$isEditable)},"~B");
+d(c$,"isEditable",function(){return this.$isEditable});d(c$,"setMaximumRowCount",function(a){var b=this.maximumRowCount;this.maximumRowCount=a;this.firePropertyChangeInt("maximumRowCount",b,this.maximumRowCount)},"~N");d(c$,"getMaximumRowCount",function(){return this.maximumRowCount});d(c$,"setRenderer",function(a){var b=this.renderer;this.renderer=a;this.firePropertyChangeObject("renderer",b,this.renderer);this.invalidate()},"javax.swing.ListCellRenderer");d(c$,"getRenderer",function(){return this.renderer});
+d(c$,"setEditor",function(a){var b=this.editor;null!=this.editor&&this.editor.removeActionListener(this);this.editor=a;null!=this.editor&&this.editor.addActionListener(this);this.firePropertyChangeObject("editor",b,this.editor)},"javax.swing.ComboBoxEditor");d(c$,"getEditor",function(){return this.editor});d(c$,"setSelectedItem",function(a){var b=this.selectedItemReminder,c=a;if(null==b||!b.equals(a)){if(null!=a&&!this.isEditable()){for(var b=!1,d=0;d<this.dataModel.getSize();d++){var e=this.dataModel.getElementAt(d);
+if(a.equals(e)){b=!0;c=e;break}}if(!b)return}this.selectingItem=!0;this.dataModel.setSelectedItem(c);this.selectingItem=!1;this.selectedItemReminder!==this.dataModel.getSelectedItem()&&this.selectedItemChanged()}this.fireActionEvent()},"~O");d(c$,"getSelectedItem",function(){return this.dataModel.getSelectedItem()});d(c$,"setSelectedIndex",function(a){var b=this.dataModel.getSize();if(-1==a)this.setSelectedItem(null);else{if(-1>a||a>=b)throw new IllegalArgumentException("setSelectedIndex: "+a+" out of bounds");
+this.setSelectedItem(this.dataModel.getElementAt(a))}},"~N");d(c$,"getSelectedIndex",function(){var a=this.dataModel.getSelectedItem(),b,c,d;b=0;for(c=this.dataModel.getSize();b<c;b++)if(d=this.dataModel.getElementAt(b),null!=d&&d.equals(a))return b;return-1});d(c$,"getPrototypeDisplayValue",function(){return this.prototypeDisplayValue});d(c$,"setPrototypeDisplayValue",function(a){var b=this.prototypeDisplayValue;this.prototypeDisplayValue=a;this.firePropertyChangeObject("prototypeDisplayValue",b,
+a)},"~O");d(c$,"addItem",function(a){this.checkMutableComboBoxModel();this.dataModel.addElement(a)},"~O");d(c$,"insertItemAt",function(a,b){this.checkMutableComboBoxModel();this.dataModel.insertElementAt(a,b)},"~O,~N");d(c$,"removeItem",function(a){this.checkMutableComboBoxModel();this.dataModel.removeElement(a)},"~O");d(c$,"removeItemAt",function(a){this.checkMutableComboBoxModel();this.dataModel.removeElementAt(a)},"~N");d(c$,"removeAllItems",function(){this.checkMutableComboBoxModel();var a=this.dataModel,
+b=a.getSize();if(v(a,javax.swing.DefaultComboBoxModel))a.removeAllElements();else for(var c=0;c<b;++c){var d=a.getElementAt(0);a.removeElement(d)}this.selectedItemReminder=null;this.isEditable()&&this.editor.setItem(null)});d(c$,"checkMutableComboBoxModel",function(){if(!v(this.dataModel,javax.swing.MutableComboBoxModel))throw new RuntimeException("Cannot use this method with a non-Mutable data model.");});d(c$,"showPopup",function(){this.setPopupVisible(!0)});d(c$,"hidePopup",function(){this.setPopupVisible(!1)});
+d(c$,"setPopupVisible",function(a){this.getUI().setPopupVisible(this,a)},"~B");d(c$,"isPopupVisible",function(){return this.getUI().isPopupVisible(this)});e(c$,"addItemListener",function(a){this.listenerList.add(java.awt.event.ItemListener,a)},"java.awt.event.ItemListener");e(c$,"removeItemListener",function(a){this.listenerList.remove(java.awt.event.ItemListener,a)},"java.awt.event.ItemListener");d(c$,"getItemListeners",function(){return this.listenerList.getListeners(java.awt.event.ItemListener)});
+d(c$,"addActionListener",function(a){this.listenerList.add(java.awt.event.ActionListener,a)},"java.awt.event.ActionListener");d(c$,"removeActionListener",function(a){null!=a&&this.getAction()===a?this.setAction(null):this.listenerList.remove(java.awt.event.ActionListener,a)},"java.awt.event.ActionListener");d(c$,"getActionListeners",function(){return this.listenerList.getListeners(java.awt.event.ActionListener)});d(c$,"addPopupMenuListener",function(a){this.listenerList.add(javax.swing.event.PopupMenuListener,
+a)},"javax.swing.event.PopupMenuListener");d(c$,"removePopupMenuListener",function(a){this.listenerList.remove(javax.swing.event.PopupMenuListener,a)},"javax.swing.event.PopupMenuListener");d(c$,"getPopupMenuListeners",function(){return this.listenerList.getListeners(javax.swing.event.PopupMenuListener)});d(c$,"firePopupMenuWillBecomeVisible",function(){for(var a=this.listenerList.getListenerList(),b=null,c=a.length-2;0<=c;c-=2)a[c]===javax.swing.event.PopupMenuListener&&(null==b&&(b=new javax.swing.event.PopupMenuEvent(this)),
+a[c+1].popupMenuWillBecomeVisible(b))});d(c$,"firePopupMenuWillBecomeInvisible",function(){for(var a=this.listenerList.getListenerList(),b=null,c=a.length-2;0<=c;c-=2)a[c]===javax.swing.event.PopupMenuListener&&(null==b&&(b=new javax.swing.event.PopupMenuEvent(this)),a[c+1].popupMenuWillBecomeInvisible(b))});d(c$,"firePopupMenuCanceled",function(){for(var a=this.listenerList.getListenerList(),b=null,c=a.length-2;0<=c;c-=2)a[c]===javax.swing.event.PopupMenuListener&&(null==b&&(b=new javax.swing.event.PopupMenuEvent(this)),
+a[c+1].popupMenuCanceled(b))});d(c$,"setActionCommand",function(a){this.actionCommand=a},"~S");d(c$,"getActionCommand",function(){return this.actionCommand});d(c$,"setAction",function(a){var b=this.getAction();if(null==this.$action||!this.$action.equals(a))this.$action=a,null!=b&&(this.removeActionListener(b),b.removePropertyChangeListener(this.actionPropertyChangeListener),this.actionPropertyChangeListener=null),this.configurePropertiesFromAction(this.$action),null!=this.$action&&(this.isListener(java.awt.event.ActionListener,
+this.$action)||this.addActionListener(this.$action),this.actionPropertyChangeListener=this.createActionPropertyChangeListener(this.$action),this.$action.addPropertyChangeListener(this.actionPropertyChangeListener)),this.firePropertyChangeObject("action",b,this.$action)},"javax.swing.Action");d(c$,"isListener",function(a,b){for(var c=!1,d=this.listenerList.getListenerList(),e=d.length-2;0<=e;e-=2)d[e]===a&&d[e+1]===b&&(c=!0);return c},"Class,java.awt.event.ActionListener");d(c$,"getAction",function(){return this.$action});
+d(c$,"configurePropertiesFromAction",function(a){javax.swing.AbstractAction.setEnabledFromAction(this,a);javax.swing.AbstractAction.setToolTipTextFromAction(this,a);this.setActionCommandFromAction(a)},"javax.swing.Action");d(c$,"createActionPropertyChangeListener",function(a){return new javax.swing.JComboBox.ComboBoxActionPropertyChangeListener(this,a)},"javax.swing.Action");d(c$,"actionPropertyChanged",function(a,b){"ActionCommandKey"===b?this.setActionCommandFromAction(a):"enabled"===b?javax.swing.AbstractAction.setEnabledFromAction(this,
+a):"ShortDescription"===b&&javax.swing.AbstractAction.setToolTipTextFromAction(this,a)},"javax.swing.Action,~S");d(c$,"setActionCommandFromAction",function(a){this.setActionCommand(null!=a?a.getValue("ActionCommandKey"):null)},"javax.swing.Action");d(c$,"fireItemStateChanged",function(a){for(var b=this.listenerList.getListenerList(),c=b.length-2;0<=c;c-=2)b[c]===java.awt.event.ItemListener&&b[c+1].itemStateChanged(a)},"java.awt.event.ItemEvent");d(c$,"fireActionEvent",function(){if(!this.firingActionEvent){this.firingActionEvent=
+!0;var a=null,b=this.listenerList.getListenerList(),c=java.awt.EventQueue.getMostRecentEventTime(),d=0,e=java.awt.EventQueue.getCurrentEvent();v(e,java.awt.event.InputEvent)?d=e.getModifiers():v(e,java.awt.event.ActionEvent)&&(d=e.getModifiers());for(e=b.length-2;0<=e;e-=2)b[e]===java.awt.event.ActionListener&&(null==a&&(a=new java.awt.event.ActionEvent(this,1001,this.getActionCommand(),c,d)),b[e+1].actionPerformed(a));this.firingActionEvent=!1}});d(c$,"selectedItemChanged",function(){null!=this.selectedItemReminder&&
+this.fireItemStateChanged(new java.awt.event.ItemEvent(this,701,this.selectedItemReminder,2));this.selectedItemReminder=this.dataModel.getSelectedItem();null!=this.selectedItemReminder&&this.fireItemStateChanged(new java.awt.event.ItemEvent(this,701,this.selectedItemReminder,1))});e(c$,"getSelectedObjects",function(){var a=this.getSelectedItem();if(null==a)return[];var b=Array(1);b[0]=a;return b});d(c$,"actionPerformed",function(){var a=this.getEditor().getItem();this.setPopupVisible(!1);this.getModel().setSelectedItem(a);
+a=this.getActionCommand();this.setActionCommand("comboBoxEdited");this.fireActionEvent();this.setActionCommand(a)},"java.awt.event.ActionEvent");e(c$,"contentsChanged",function(){var a=this.selectedItemReminder,b=this.dataModel.getSelectedItem();if(null==a||!a.equals(b))this.selectedItemChanged(),this.selectingItem||this.fireActionEvent()},"javax.swing.event.ListDataEvent");e(c$,"intervalAdded",function(){this.selectedItemReminder!==this.dataModel.getSelectedItem()&&this.selectedItemChanged()},"javax.swing.event.ListDataEvent");
+e(c$,"intervalRemoved",function(a){this.contentsChanged(a)},"javax.swing.event.ListDataEvent");d(c$,"selectWithKeyChar",function(a){null==this.keySelectionManager&&(this.keySelectionManager=this.createDefaultKeySelectionManager());a=this.keySelectionManager.selectionForKey(a,this.getModel());return-1!=a?(this.setSelectedIndex(a),!0):!1},"~S");d(c$,"setEnabled",function(a){K(this,javax.swing.JComboBox,"setEnabled",[a]);this.firePropertyChangeBool("enabled",!this.isEnabled(),this.isEnabled())},"~B");
+d(c$,"configureEditor",function(a,b){a.setItem(b)},"javax.swing.ComboBoxEditor,~O");d(c$,"processKeyEvent",function(a){9==a.getKeyCode()&&this.hidePopup();K(this,javax.swing.JComboBox,"processKeyEvent",[a])},"java.awt.event.KeyEvent");d(c$,"setKeySelectionManager",function(a){this.keySelectionManager=a},"javax.swing.JComboBox.KeySelectionManager");d(c$,"getKeySelectionManager",function(){return this.keySelectionManager});d(c$,"getItemCount",function(){return this.dataModel.getSize()});d(c$,"getItemAt",
+function(a){return this.dataModel.getElementAt(a)},"~N");d(c$,"createDefaultKeySelectionManager",function(){return C(javax.swing.JComboBox.DefaultKeySelectionManager,this,null)});d(c$,"paramString",function(){var a=null!=this.selectedItemReminder?this.selectedItemReminder.toString():"",b=this.$isEditable?"true":"false",c=this.lightWeightPopupEnabled?"true":"false";return K(this,javax.swing.JComboBox,"paramString",[])+",isEditable="+b+",lightWeightPopupEnabled="+c+",maximumRowCount="+this.maximumRowCount+
+",selectedItemReminder="+a});c$.$JComboBox$DefaultKeySelectionManager$=function(){A(self.c$);c$=s(function(){O(this,arguments);r(this,arguments)},javax.swing.JComboBox,"DefaultKeySelectionManager",null,javax.swing.JComboBox.KeySelectionManager);e(c$,"selectionForKey",function(a,b){var c,d,e=-1,k=b.getSelectedItem();if(null!=k){c=0;for(d=b.getSize();c<d;c++)if(k===b.getElementAt(c)){e=c;break}}a=(""+a).toLowerCase().charAt(0);c=++e;for(d=b.getSize();c<d;c++)if(k=b.getElementAt(c),null!=k&&null!=k.toString()&&
+(k=k.toString().toLowerCase(),0<k.length&&k.charAt(0)==a))return c;for(c=0;c<e;c++)if(k=b.getElementAt(c),null!=k&&null!=k.toString()&&(k=k.toString().toLowerCase(),0<k.length&&k.charAt(0)==a))return c;return-1},"~S,javax.swing.ComboBoxModel");c$=z()};c$.$JComboBox$1$=function(){A(self.c$);c$=L(javax.swing,"JComboBox$1",null,javax.swing.event.AncestorListener);e(c$,"ancestorAdded",function(){this.b$["javax.swing.JComboBox"].hidePopup()},"javax.swing.event.AncestorEvent");e(c$,"ancestorRemoved",function(){this.b$["javax.swing.JComboBox"].hidePopup()},
+"javax.swing.event.AncestorEvent");e(c$,"ancestorMoved",function(a){a.getSource()!==this.b$["javax.swing.JComboBox"]&&this.b$["javax.swing.JComboBox"].hidePopup()},"javax.swing.event.AncestorEvent");c$=z()};A(self.c$);c$=B(javax.swing.JComboBox,"ComboBoxActionPropertyChangeListener",javax.swing.ActionPropertyChangeListener);e(c$,"actionPropertyChanged",function(a,b,c){javax.swing.AbstractAction.shouldReconfigure(c)?a.configurePropertiesFromAction(b):a.actionPropertyChanged(b,c.getPropertyName())},
+"javax.swing.JComboBox,javax.swing.Action,java.beans.PropertyChangeEvent");c$=z();M(javax.swing.JComboBox,"KeySelectionManager");G(c$,"$uiClassID","ComboBoxUI")});p("javax.swing.event");q(["java.util.EventListener"],"javax.swing.event.ListDataListener",null,function(){M(javax.swing.event,"ListDataListener",java.util.EventListener)});p("javax.swing");q(["javax.swing.AbstractListModel","$.MutableComboBoxModel"],"javax.swing.DefaultComboBoxModel",["java.util.Vector"],function(){c$=s(function(){this.selectedObject=
+this.objects=null;r(this,arguments)},javax.swing,"DefaultComboBoxModel",javax.swing.AbstractListModel,javax.swing.MutableComboBoxModel);m(c$,function(){t(this,javax.swing.DefaultComboBoxModel,[]);this.objects=new java.util.Vector});m(c$,function(a){t(this,javax.swing.DefaultComboBoxModel,[]);this.objects=new java.util.Vector;this.objects.ensureCapacity(a.length);var b,c;b=0;for(c=a.length;b<c;b++)this.objects.addElement(a[b]);0<this.getSize()&&(this.selectedObject=this.getElementAt(0))},"~A");m(c$,
+function(a){t(this,javax.swing.DefaultComboBoxModel,[]);this.objects=a;0<this.getSize()&&(this.selectedObject=this.getElementAt(0))},"java.util.Vector");e(c$,"setSelectedItem",function(a){if(null!=this.selectedObject&&!this.selectedObject.equals(a)||null==this.selectedObject&&null!=a)this.selectedObject=a,this.fireContentsChanged(this,-1,-1)},"~O");e(c$,"getSelectedItem",function(){return this.selectedObject});e(c$,"getSize",function(){return this.objects.size()});e(c$,"getElementAt",function(a){return 0<=
+a&&a<this.objects.size()?this.objects.elementAt(a):null},"~N");d(c$,"getIndexOf",function(a){return this.objects.indexOf(a)},"~O");e(c$,"addElement",function(a){this.objects.addElement(a);this.fireIntervalAdded(this,this.objects.size()-1,this.objects.size()-1);1==this.objects.size()&&(null==this.selectedObject&&null!=a)&&this.setSelectedItem(a)},"~O");e(c$,"insertElementAt",function(a,b){this.objects.insertElementAt(a,b);this.fireIntervalAdded(this,b,b)},"~O,~N");e(c$,"removeElementAt",function(a){this.getElementAt(a)===
+this.selectedObject&&(0==a?this.setSelectedItem(1==this.getSize()?null:this.getElementAt(a+1)):this.setSelectedItem(this.getElementAt(a-1)));this.objects.removeElementAt(a);this.fireIntervalRemoved(this,a,a)},"~N");e(c$,"removeElement",function(a){a=this.objects.indexOf(a);-1!=a&&this.removeElementAt(a)},"~O");d(c$,"removeAllElements",function(){if(0<this.objects.size()){var a=this.objects.size()-1;this.objects.removeAllElements();this.selectedObject=null;this.fireIntervalRemoved(this,0,a)}else this.selectedObject=
+null})});p("javax.swing");q(["javax.swing.ListModel","javax.swing.event.EventListenerList"],"javax.swing.AbstractListModel",["javax.swing.event.ListDataEvent","$.ListDataListener"],function(){c$=s(function(){this.listenerList=null;r(this,arguments)},javax.swing,"AbstractListModel",null,javax.swing.ListModel);J(c$,function(){this.listenerList=new javax.swing.event.EventListenerList});e(c$,"addListDataListener",function(a){this.listenerList.add(javax.swing.event.ListDataListener,a)},"javax.swing.event.ListDataListener");
+e(c$,"removeListDataListener",function(a){this.listenerList.remove(javax.swing.event.ListDataListener,a)},"javax.swing.event.ListDataListener");d(c$,"getListDataListeners",function(){return this.listenerList.getListeners(javax.swing.event.ListDataListener)});d(c$,"fireContentsChanged",function(a,b,c){for(var d=this.listenerList.getListenerList(),e=null,k=d.length-2;0<=k;k-=2)d[k]===javax.swing.event.ListDataListener&&(null==e&&(e=new javax.swing.event.ListDataEvent(a,0,b,c)),d[k+1].contentsChanged(e))},
+"~O,~N,~N");d(c$,"fireIntervalAdded",function(a,b,c){for(var d=this.listenerList.getListenerList(),e=null,k=d.length-2;0<=k;k-=2)d[k]===javax.swing.event.ListDataListener&&(null==e&&(e=new javax.swing.event.ListDataEvent(a,1,b,c)),d[k+1].intervalAdded(e))},"~O,~N,~N");d(c$,"fireIntervalRemoved",function(a,b,c){for(var d=this.listenerList.getListenerList(),e=null,k=d.length-2;0<=k;k-=2)d[k]===javax.swing.event.ListDataListener&&(null==e&&(e=new javax.swing.event.ListDataEvent(a,2,b,c)),d[k+1].intervalRemoved(e))},
+"~O,~N,~N");d(c$,"getListeners",function(a){return this.listenerList.getListeners(a)},"Class")});p("javax.swing");M(javax.swing,"ListModel");p("javax.swing.event");q(["java.util.EventObject"],"javax.swing.event.ListDataEvent",null,function(){c$=s(function(){this.index1=this.index0=this.type=0;r(this,arguments)},javax.swing.event,"ListDataEvent",java.util.EventObject);d(c$,"getType",function(){return this.type});d(c$,"getIndex0",function(){return this.index0});d(c$,"getIndex1",function(){return this.index1});
+m(c$,function(a,b,c,d){t(this,javax.swing.event.ListDataEvent,[a]);this.type=b;this.index0=Math.min(c,d);this.index1=Math.max(c,d)},"~O,~N,~N,~N");e(c$,"toString",function(){return this.getClass().getName()+"[type="+this.type+",index0="+this.index0+",index1="+this.index1+"]"});G(c$,"CONTENTS_CHANGED",0,"INTERVAL_ADDED",1,"INTERVAL_REMOVED",2)});p("javax.swing");q(["javax.swing.ComboBoxModel"],"javax.swing.MutableComboBoxModel",null,function(){M(javax.swing,"MutableComboBoxModel",javax.swing.ComboBoxModel)});
+p("javax.swing");q(["javax.swing.ListModel"],"javax.swing.ComboBoxModel",null,function(){M(javax.swing,"ComboBoxModel",javax.swing.ListModel)});p("jalview.schemes");q(["jalview.schemes.FollowerColourScheme"],"jalview.schemes.AnnotationColourGradient","jalview.datamodel.AlignmentI $.GraphLine jalview.renderer.AnnotationRenderer jalview.schemes.ColourSchemeProperty jalview.util.Comparison java.awt.Color java.util.IdentityHashMap".split(" "),function(){c$=s(function(){this.annotation=null;this.aboveAnnotationThreshold=
+-1;this.thresholdIsMinMax=!1;this.annotationThreshold=null;this.bb=this.gg=this.rr=this.b1=this.g1=this.r1=0;this.noGradient=this.seqAssociated=this.predefinedColours=!1;this.seqannot=null;this.aamax=this.aamin=0;r(this,arguments)},jalview.schemes,"AnnotationColourGradient",jalview.schemes.FollowerColourScheme);e(c$,"applyTo",function(){var a=new jalview.schemes.AnnotationColourGradient(this.annotation,this.colourScheme,this.aboveAnnotationThreshold);a.thresholdIsMinMax=this.thresholdIsMinMax;a.annotationThreshold=
+null==this.annotationThreshold?null:new jalview.datamodel.GraphLine(this.annotationThreshold);a.r1=this.r1;a.g1=this.g1;a.b1=this.b1;a.rr=this.rr;a.gg=this.gg;a.bb=this.bb;a.predefinedColours=this.predefinedColours;a.seqAssociated=this.seqAssociated;a.noGradient=this.noGradient;return a},"jalview.datamodel.AnnotatedCollectionI,java.util.Map");m(c$,function(a,b,c){t(this,jalview.schemes.AnnotationColourGradient,[]);this.colourScheme=v(b,jalview.schemes.AnnotationColourGradient)?b.colourScheme:b;this.annotation=
+a;this.aboveAnnotationThreshold=c;-1!=c&&null!=a.threshold&&(this.annotationThreshold=a.threshold);this.b1=this.g1=this.r1=254;this.bb=this.gg=this.rr=0;this.noGradient=!0},"jalview.datamodel.AlignmentAnnotation,jalview.schemes.ColourSchemeI,~N");m(c$,function(a,b,c,d){t(this,jalview.schemes.AnnotationColourGradient,[]);this.annotation=a;this.aboveAnnotationThreshold=d;-1!=d&&null!=a.threshold&&(this.annotationThreshold=a.threshold);this.r1=b.getRed();this.g1=b.getGreen();this.b1=b.getBlue();this.rr=
+c.getRed()-this.r1;this.gg=c.getGreen()-this.g1;this.bb=c.getBlue()-this.b1;this.noGradient=!1;this.aamax=a.graphMax;this.aamin=a.graphMin;a.isRNA()&&jalview.schemes.ColourSchemeProperty.initRnaHelicesShading(1+I(this.aamax))},"jalview.datamodel.AlignmentAnnotation,java.awt.Color,java.awt.Color,~N");d(c$,"alignmentChanged",function(a,b){K(this,jalview.schemes.AnnotationColourGradient,"alignmentChanged",[a,b]);if(this.seqAssociated&&null!=this.annotation.getCalcId()){null!=this.seqannot?this.seqannot.clear():
+this.seqannot=new java.util.IdentityHashMap;for(var c=!0,d=!1,e,k=(v(a,jalview.datamodel.AlignmentI)?a:a.getContext()).findAnnotation(this.annotation.getCalcId()).iterator();k.hasNext()&&((e=k.next())||1);)if(null!=e.sequenceRef&&null!=e.label&&null!=this.annotation&&e.label.equals(this.annotation.label)){!d&&e.isRNA()&&(d=!0);this.seqannot.put(e.sequenceRef,e);if(c||e.graphMax>this.aamax)this.aamax=e.graphMax;if(c||e.graphMin<this.aamin)this.aamin=e.graphMin;c=!1}d&&jalview.schemes.ColourSchemeProperty.initRnaHelicesShading(1+
+I(this.aamax))}},"jalview.datamodel.AnnotatedCollectionI,java.util.Map");d(c$,"getAnnotation",function(){return this.annotation.label});d(c$,"getAboveThreshold",function(){return this.aboveAnnotationThreshold});d(c$,"getAnnotationThreshold",function(){return null==this.annotationThreshold?0:this.annotationThreshold.value});d(c$,"getMinColour",function(){return new java.awt.Color(I(this.r1),I(this.g1),I(this.b1))});d(c$,"getMaxColour",function(){return new java.awt.Color(I(this.r1+this.rr),I(this.g1+
+this.gg),I(this.b1+this.bb))});e(c$,"findColour",function(){return java.awt.Color.red},"~S");e(c$,"findColourSeq",function(a,b,c){var d=java.awt.Color.white,e=this.seqAssociated&&null!=this.seqannot?this.seqannot.get(c):this.annotation;if(null==e)return d;if((0==this.threshold||this.aboveThreshold(a,b))&&null!=e.annotations&&b<e.annotations.length&&null!=e.annotations[b]&&!jalview.util.Comparison.isGap(a)){var k=e.annotations[b];if(-1==this.aboveAnnotationThreshold||null!=this.annotationThreshold&&
+(1==this.aboveAnnotationThreshold?k.value>=this.annotationThreshold.value:k.value<=this.annotationThreshold.value))if(this.predefinedColours&&null!=k.colour&&!k.colour.equals(java.awt.Color.black))d=k.colour;else if(e.hasIcons&&0==e.graph)if(" "<k.secondaryStructure&&"."!=k.secondaryStructure&&"-"!=k.secondaryStructure)d=null!=this.colourScheme?this.colourScheme.findColourSeq(a,b,c):e.isRNA()?jalview.schemes.ColourSchemeProperty.rnaHelices[I(k.value)]:"H"==e.annotations[b].secondaryStructure?jalview.renderer.AnnotationRenderer.HELIX_COLOUR:
+"E"==e.annotations[b].secondaryStructure?jalview.renderer.AnnotationRenderer.SHEET_COLOUR:jalview.renderer.AnnotationRenderer.STEM_COLOUR;else return java.awt.Color.white;else this.noGradient?null!=this.colourScheme?d=this.colourScheme.findColourSeq(a,b,c):null!=k.colour&&(d=k.colour):d=this.shadeCalculation(e,b);this.conservationColouring&&(d=this.applyConservation(d,b))}return d},"~S,~N,jalview.datamodel.SequenceI");d(c$,"shadeCalculation",function(a,b){var c=1,c=this.thresholdIsMinMax&&null!=a.threshold&&
+1==this.aboveAnnotationThreshold&&a.annotations[b].value>=a.threshold.value?(a.annotations[b].value-a.threshold.value)/(a.graphMax-a.threshold.value):this.thresholdIsMinMax&&null!=a.threshold&&0==this.aboveAnnotationThreshold&&a.annotations[b].value>=a.graphMin?(a.annotations[b].value-a.graphMin)/(a.threshold.value-a.graphMin):a.graphMax!=a.graphMin?(a.annotations[b].value-a.graphMin)/(a.graphMax-a.graphMin):0,d=I(this.rr*c+this.r1),e=I(this.gg*c+this.g1),c=I(this.bb*c+this.b1);return new java.awt.Color(d,
+e,c)},"jalview.datamodel.AlignmentAnnotation,~N");d(c$,"isPredefinedColours",function(){return this.predefinedColours});d(c$,"setPredefinedColours",function(a){this.predefinedColours=a},"~B");d(c$,"isSeqAssociated",function(){return this.seqAssociated});d(c$,"setSeqAssociated",function(a){this.seqAssociated=a},"~B");G(c$,"NO_THRESHOLD",-1,"BELOW_THRESHOLD",0,"ABOVE_THRESHOLD",1)});p("jalview.schemes");q(["jalview.schemes.ResidueColourScheme"],"jalview.schemes.FollowerColourScheme",null,function(){c$=
+s(function(){this.colourScheme=null;r(this,arguments)},jalview.schemes,"FollowerColourScheme",jalview.schemes.ResidueColourScheme);d(c$,"getBaseColour",function(){return this.colourScheme});e(c$,"setConsensus",function(a){null!=this.colourScheme&&this.colourScheme.setConsensus(a)},"~A");e(c$,"setConservation",function(a){null!=this.colourScheme&&this.colourScheme.setConservation(a)},"jalview.analysis.Conservation");e(c$,"setConservationInc",function(a){null!=this.colourScheme&&this.colourScheme.setConservationInc(a)},
+"~N")});p("jalview.renderer");q(["jalview.util.Platform","java.awt.Color"],"jalview.renderer.AnnotationRenderer","awt2swing.Util jalview.analysis.AAFrequency $.CodingUtils $.StructureFrequency jalview.jsdev.RegExp jalview.schemes.NucleotideColourScheme $.ResidueProperties $.ZappoColourScheme java.awt.BasicStroke java.awt.geom.AffineTransform java.util.BitSet".split(" "),function(){c$=s(function(){this.debugRedraw=!1;this.charHeight=this.endRes=this.charWidth=0;this.hasHiddenColumns=this.validCharWidth=
+!1;this.fm=null;this.MAC=!1;this.av_renderProfile=this.av_renderHistogram=!0;this.av_normaliseProfile=!1;this.hStrucConsensus=this.complementConsensus=this.hconsensus=this.columnSelection=this.profcolour=null;this.av_ignoreGapsConsensus=!1;this.annotationPanel=this.fadedImage=null;this.visHeight=this.sOffset=this.imgWidth=0;this.useClip=!0;this.rna=this.canClip=!1;this.sdNOTCANONICAL_COLOUR=null;r(this,arguments)},jalview.renderer,"AnnotationRenderer");J(c$,function(){this.MAC=jalview.util.Platform.isAMac()});
+m(c$,function(){this.construct(!1)});m(c$,function(a){this.debugRedraw=a},"~B");d(c$,"drawStemAnnot",function(a,b,c,d,e,k,g,h,j,n){a.setColor(jalview.renderer.AnnotationRenderer.STEM_COLOUR);var m=F(c/this.charWidth)+g;g=c;d*=this.charWidth;jalview.jsdev.RegExp.newRegex(["(\\))"]);var p=0==h||null==b[h-1]?" ":b[h-1].secondaryStructure,m=0==m||null==b[m-1]||p!=b[m-1].secondaryStructure;b=!j||!n||null==b[h]||p!=b[h].secondaryStructure;0<h&&jalview.schemes.ResidueProperties.isCloseParenRNA(p)?(m&&(a.fillPolygon(w(-1,
+[c+5,c+5,c]),w(-1,[e+k,e+14+k,e+8+k]),3),g+=5),b&&(d-=1)):(b&&(a.fillPolygon(w(-1,[d-5,d-5,d]),w(-1,[e+k,e+14+k,e+8+k]),3),d-=5),m&&(g+=1));a.fillRect(g,e+4+k,d-g,7)},"java.awt.Graphics,~A,~N,~N,~N,~N,~N,~N,~B,~B");d(c$,"drawNotCanonicalAnnot",function(a,b,c,d,e,k,g,h,j,n,m){a.setColor(b);var p=F(d/this.charWidth)+h;b=d;e*=this.charWidth;h=jalview.jsdev.RegExp.newRegex(["}|]|<|[a-z]"]);var q=0==j||null==c[j-1]?"":c[j-1].displayCharacter,p=0==p||null==c[p-1]||!q.equals(c[p-1].displayCharacter);c=!n||
+!m||null==c[j]||!q.equals(c[j].displayCharacter);0<j&&h.search(q)?(p&&(a.fillPolygon(w(-1,[d+5,d+5,d]),w(-1,[k+g,k+14+g,k+8+g]),3),b+=5),c&&(e-=1)):(c&&(a.fillPolygon(w(-1,[e-5,e-5,e]),w(-1,[k+g,k+14+g,k+8+g]),3),e-=5),p&&(b+=1));a.fillRect(b,k+4+g,e-b,7)},"java.awt.Graphics,java.awt.Color,~A,~N,~N,~N,~N,~N,~N,~B,~B");d(c$,"updateFromAwtRenderPanel",function(a,b){this.fm=a.getFontMetrics();this.annotationPanel=a;this.fadedImage=a.getFadedImage();this.imgWidth=a.getFadedImageWidth();var c=a.getVisibleVRange();
+null!=c?(this.sOffset=c[0],this.visHeight=c[1],this.useClip=0==this.visHeight?!1:this.canClip):this.useClip=!1;this.updateFromAlignViewport(b)},"jalview.renderer.AwtRenderPanelI,jalview.api.AlignViewportI");d(c$,"updateFromAlignViewport",function(a){this.charWidth=a.getCharWidth();this.endRes=a.getEndRes();this.charHeight=a.getCharHeight();this.hasHiddenColumns=a.hasHiddenColumns();this.validCharWidth=a.isValidCharWidth();this.av_renderHistogram=a.isShowConsensusHistogram();this.av_renderProfile=
+a.isShowSequenceLogo();this.av_normaliseProfile=a.isNormaliseSequenceLogo();this.profcolour=a.getGlobalColourScheme();null==this.profcolour&&(this.profcolour=a.getAlignment().isNucleotide()?new jalview.schemes.NucleotideColourScheme:new jalview.schemes.ZappoColourScheme);this.columnSelection=a.getColumnSelection();this.hconsensus=a.getSequenceConsensusHash();this.complementConsensus=a.getComplementConsensusHash();this.hStrucConsensus=a.getRnaStructureConsensusHash();this.av_ignoreGapsConsensus=a.isIgnoreGapsConsensus()},
+"jalview.api.AlignViewportI");d(c$,"getProfileFor",function(a,b){if(a.autoCalculated&&(a.label.startsWith("Consensus")||a.label.startsWith("cDNA Consensus"))){var c=a.label.startsWith("cDNA Consensus");if(null!=a.groupRef&&null!=a.groupRef.consensusData&&a.groupRef.isShowSequenceLogo())return jalview.analysis.AAFrequency.extractProfile(a.groupRef.consensusData[b],a.groupRef.getIgnoreGapsConsensus());if(null==a.groupRef&&null==a.sequenceRef)return c?jalview.analysis.AAFrequency.extractCdnaProfile(this.complementConsensus[b],
+this.av_ignoreGapsConsensus):jalview.analysis.AAFrequency.extractProfile(this.hconsensus[b],this.av_ignoreGapsConsensus)}else if(a.autoCalculated&&a.label.startsWith("StrucConsensus")&&null==a.groupRef&&null==a.sequenceRef&&null!=this.hStrucConsensus&&this.hStrucConsensus.length>b)return jalview.analysis.StructureFrequency.extractProfile(this.hStrucConsensus[b],this.av_ignoreGapsConsensus);return null},"jalview.datamodel.AlignmentAnnotation,~N");d(c$,"drawComponent",function(a,b,c,d,e,k){var g=System.currentTimeMillis(),
+h=!1;this.updateFromAwtRenderPanel(a,b);this.fm=c.getFontMetrics();a=b.getAlignment().getAlignmentAnnotation();if(null==a)return!1;var j=0,n=0,m=0,p,q,s=0,r=!1,t=!1,v=!1;b.isCentreColumnLabels();for(var w=!1,y=b.getAlignmentConsensusAnnotation(),z=b.getAlignmentStrucConsensusAnnotation(),A=b.getComplementConsensusAnnotation(),B=!0,E=!0,C=!1,F=this.rna,H=new java.util.BitSet,G=0,J=1,K=c.getFont(),L=0,M=0,N=0,O=0,Q=!1,T=!1,S=0;S<a.length;S++){var P=a[S],F=P.isRNA();null!=P.groupRef&&P===P.groupRef.getConsensus()?
+(B=P.groupRef.isShowConsensusHistogram(),E=P.groupRef.isShowSequenceLogo(),C=P.groupRef.isNormaliseSequenceLogo()):P===y||P===z||P===A?(B=this.av_renderHistogram,E=this.av_renderProfile,C=this.av_normaliseProfile):B=!0;var V=P.annotations;if(P.visible){v=P.showAllColLabels;w=P.scaleColLabel;p=" ";q=0;if(!this.useClip||n-this.charHeight<this.visHeight&&n+P.height+2*this.charHeight>=this.sOffset){Q||(Q=!0,L=n,M=S);N=n;O=S;if(0<P.graph){if(-1<P.graphGroup&&H.get(P.graphGroup))continue;n+=P.height;P.hasText&&
+(s=this.charHeight-this.fm.getDescent(),n-=this.charHeight)}else s=P.hasText?this.charHeight-this.fm.getDescent():0;if(P.autoCalculated&&b.isCalculationInProgress(P)){n+=this.charHeight;h=!0;c.drawImage(this.fadedImage,0,n-P.height,this.imgWidth,n,0,n-P.height,this.imgWidth,n,this.annotationPanel);c.setColor(java.awt.Color.black);continue}for(j=0==e?0:-1;j<k-e;){if(this.hasHiddenColumns){if(m=this.columnSelection.adjustForHiddenColumns(e+j),m>V.length-1)break}else m=e+j;var R=(r=null==V||V.length<=
+m||null==V[m]?!1:!0)?V[m].displayCharacter:null;if(-1<j){if(d==S&&(c.setColor(java.awt.Color.red),null!=this.columnSelection))for(G=0;G<this.columnSelection.size();G++)this.columnSelection.columnAt(G)==m&&c.fillRect(j*this.charWidth,n,this.charWidth,this.charHeight);P.getInvalidStrucPos()>j?(c.setColor(java.awt.Color.orange),c.fillRect(j*this.charWidth,n,this.charWidth,this.charHeight)):P.getInvalidStrucPos()==j&&(c.setColor(java.awt.Color.orange.darker()),c.fillRect(j*this.charWidth,n,this.charWidth,
+this.charHeight));this.validCharWidth&&(r&&null!=R&&0<R.length)&&(G=this.fm.charsWidth(R.toCharArray(),0,R.length),w&&G>this.charWidth&&(J=this.charWidth,J/=G,c.setFont(K.deriveFont(java.awt.geom.AffineTransform.getScaleInstance(J,1))),G=this.charWidth),G=I((this.charWidth-G)/2),null==V[m].colour?c.setColor(java.awt.Color.black):c.setColor(V[m].colour),0==m||0<P.graph?awt2swing.Util.drawString(c,R,j*this.charWidth+G,n+s):(null==V[m-1]||v||!R.equals(V[m-1].displayCharacter)||2>R.length&&" "==V[m].secondaryStructure)&&
+awt2swing.Util.drawString(c,R,j*this.charWidth+G,n+s),c.setFont(K))}if(P.hasIcons&&(G=r?V[m].secondaryStructure:"-","("==G&&-1<R.indexOf(")")&&(G=")"),"["==G&&-1<R.indexOf("]")&&(G="]"),"{"==G&&-1<R.indexOf("}")&&(G="}"),"<"==G&&-1<R.indexOf("<")&&(G=">"),65<=G.charCodeAt(0)&&-1<R.indexOf(G.charCodeAt(0)+32)&&(G=String.fromCharCode(G.charCodeAt(0)+32)),!r||G!=p)){if(-1<j)switch(p){case "(":case ")":this.drawStemAnnot(c,V,q,j,n,s,e,m,r,t);break;case "H":if(!F){this.drawHelixAnnot(c,V,q,j,n,s,e,m,r,
+t);break}case "E":if(!F){this.drawSheetAnnot(c,V,q,j,n,s,e,m,r,t);break}case "{":case "}":case "[":case "]":case ">":case "<":case "A":case "a":case "B":case "b":case "C":case "c":case "D":case "d":case "e":case "F":case "f":case "G":case "g":case "h":case "I":case "i":case "J":case "j":case "K":case "k":case "L":case "l":case "M":case "m":case "N":case "n":case "O":case "o":case "P":case "p":case "Q":case "q":case "R":case "r":case "S":case "s":case "T":case "t":case "U":case "u":case "V":case "v":case "W":case "w":case "X":case "x":case "Y":case "y":case "Z":case "z":p=
+this.getNotCanonicalColor(p);this.drawNotCanonicalAnnot(c,p,V,q,j,n,s,e,m,r,t);break;default:c.setColor(java.awt.Color.gray),c.fillRect(q,n+6+s,j*this.charWidth-q,2)}p=r?G:" ";-1<j&&(q=j*this.charWidth)}m++;j++}m>=V.length?(m=V.length-1,t=!1):t=!0;r=null==V||V.length<=m||null==V[m]?!1:!0;if(P.hasIcons)switch(p){case "H":if(!F){this.drawHelixAnnot(c,V,q,j,n,s,e,m,r,t);break}case "E":if(!F){this.drawSheetAnnot(c,V,q,j,n,s,e,m,r,t);break}case "(":case ")":this.drawStemAnnot(c,V,q,j,n,s,e,m,r,t);break;
+case "{":case "}":case "[":case "]":case ">":case "<":case "A":case "a":case "B":case "b":case "C":case "c":case "D":case "d":case "e":case "F":case "f":case "G":case "g":case "h":case "I":case "i":case "J":case "j":case "K":case "k":case "L":case "l":case "M":case "m":case "N":case "n":case "O":case "o":case "P":case "p":case "Q":case "q":case "R":case "r":case "T":case "t":case "U":case "u":case "V":case "v":case "W":case "w":case "X":case "x":case "Y":case "y":case "Z":case "z":p=this.getNotCanonicalColor(p);
+this.drawNotCanonicalAnnot(c,p,V,q,j,n,s,e,m,r,t);break;default:this.drawGlyphLine(c,V,q,j,n,s,e,m,r,t)}if(0<P.graph&&0<P.graphHeight)if(2==P.graph)if(-1<P.graphGroup&&!H.get(P.graphGroup)){j=-999999;q=9999999;for(r=0;r<a.length;r++)a[r].graphGroup==P.graphGroup&&(a[r]!==P&&(a[r].visible=!1),a[r].graphMax>j&&(j=a[r].graphMax),a[r].graphMin<q&&(q=a[r].graphMin));for(r=0;r<a.length;r++)a[r].graphGroup==P.graphGroup&&this.drawLineGraph(c,a[r],a[r].annotations,e,k,n,q,j,P.graphHeight);H.set(P.graphGroup)}else this.drawLineGraph(c,
+P,V,e,k,n,P.graphMin,P.graphMax,P.graphHeight);else 1==P.graph&&this.drawBarGraph(c,P,V,e,k,P.graphMin,P.graphMax,n,B,E,C)}else Q&&!T&&(T=!0);0<P.graph&&P.hasText&&(n+=this.charHeight);0==P.graph&&(n+=a[S].height)}}this.debugRedraw&&(this.canClip&&(Q&&System.err.println("Start clip at : "+L+" (index "+M+")"),T&&System.err.println("End clip at : "+N+" (index "+O+")")),System.err.println("Annotation Rendering time:"+(System.currentTimeMillis()-g)));return!h},"jalview.renderer.AwtRenderPanelI,jalview.api.AlignViewportI,java.awt.Graphics,~N,~N,~N");
+d(c$,"drawGlyphLine",function(a,b,c,d,e,k){a.setColor(jalview.renderer.AnnotationRenderer.GLYPHLINE_COLOR);a.fillRect(c,e+6+k,d*this.charWidth-c,2)},"java.awt.Graphics,~A,~N,~N,~N,~N,~N,~N,~B,~B");d(c$,"drawSheetAnnot",function(a,b,c,d,e,k,g,h,j,n){a.setColor(jalview.renderer.AnnotationRenderer.SHEET_COLOUR);!n||!j||null==b||null==b[h]||"E"!=b[h].secondaryStructure?(a.fillRect(c,e+4+k,d*this.charWidth-c-4,7),a.fillPolygon(w(-1,[d*this.charWidth-4,d*this.charWidth-4,d*this.charWidth]),w(-1,[e+k,e+
+14+k,e+7+k]),3)):a.fillRect(c,e+4+k,(d+1)*this.charWidth-c,7)},"java.awt.Graphics,~A,~N,~N,~N,~N,~N,~N,~B,~B");d(c$,"drawHelixAnnot",function(a,b,c,d,e,k,g,h,j){a.setColor(jalview.renderer.AnnotationRenderer.HELIX_COLOUR);g=F(c/this.charWidth)+g;var n=c,m=d*this.charWidth;if(this.MAC)d=F(this.charWidth/2),a.fillRoundRect(c,e+4+k,m-n,8,8,8),0==g||(null==b[g-1]||"H"!=b[g-1].secondaryStructure)||a.fillRoundRect(c,e+4+k,m-n-d+1,8,0,0),j&&!(null==b[h]||"H"!=b[h].secondaryStructure)&&a.fillRoundRect(c+
+d,e+4+k,m-n-d+1,8,0,0);else{if(0==g||null==b[g-1]||"H"!=b[g-1].secondaryStructure)a.fillArc(c,e+4+k,this.charWidth,8,90,180),n+=F(this.charWidth/2);if(!j||null==b[h]||"H"!=b[h].secondaryStructure)a.fillArc(d*this.charWidth-this.charWidth,e+4+k,this.charWidth,8,270,180),m-=F(this.charWidth/2);a.fillRect(n,e+4+k,m-n,8)}},"java.awt.Graphics,~A,~N,~N,~N,~N,~N,~N,~B,~B");d(c$,"drawLineGraph",function(a,b,c,d,e,k,g,h,j){if(!(d>c.length)){var n=0;e<this.endRes&&e++;e=Math.min(e,c.length);0==d&&n++;var m=
+k,p=k;h-=g;0>g&&(p=k-I((0-g/h)*j));a.setColor(java.awt.Color.gray);a.drawLine(n-this.charWidth,p,(e-d+1)*this.charWidth,p);e=Math.min(e,c.length);for(var q=c.length-1;n<e-d;){p=d+n;this.hasHiddenColumns&&(p=this.columnSelection.adjustForHiddenColumns(p));if(p>q)break;null==c[p]||null==c[p-1]||(null==c[p].colour?a.setColor(java.awt.Color.black):a.setColor(c[p].colour),m=k-I((c[p-1].value-g)/h*j),p=k-I((c[p].value-g)/h*j),a.drawLine(n*this.charWidth-F(this.charWidth/2),m,n*this.charWidth+F(this.charWidth/
+2),p));n++}null!=b.threshold&&(a.setColor(b.threshold.colour),a.setStroke(new java.awt.BasicStroke(1,2,1,3,Q(-1,[5,3]),0)),p=I(k-(b.threshold.value-g)/h*j),a.drawLine(0,p,(e-d)*this.charWidth,p),a.setStroke(new java.awt.BasicStroke))}},"java.awt.Graphics,jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~N,~N,~N,~N");d(c$,"drawBarGraph",function(a,b,c,d,e,k,g,h,j,n,m){if(!(d>c.length)){var p=a.getFont();e=Math.min(e,c.length);var q=0,s=h,r=h;g-=k;0>k&&(r=h-I((0-k/g)*b.graphHeight));a.setColor(java.awt.Color.gray);
+a.drawLine(q,r,(e-d)*this.charWidth,r);for(var t,v=c.length-1;q<e-d;){t=d+q;this.hasHiddenColumns&&(t=this.columnSelection.adjustForHiddenColumns(t));if(t>v)break;if(null!=c[t]&&(null==c[t].colour?a.setColor(java.awt.Color.black):a.setColor(c[t].colour),s=h-I((c[t].value-k)/g*b.graphHeight),j&&(0<s-r?a.fillRect(q*this.charWidth,r,this.charWidth,s-r):a.fillRect(q*this.charWidth,s,this.charWidth,r-s)),n)){var w=this.getProfileFor(b,t);if(null!=w&&0!=w[2]){var y=1==w[0],z=2==w[0],A=m?h-b.graphHeight:
+s,s=m?b.graphHeight:r-s,B,E,C;C=N(y?2:z?3:1,"\x00");B=a.getFontMetrics(p).getLineMetrics("Q",a);var G=1/(m?w[2]:100);B.getAscent();for(var H=0,J=3,K=0;K<w[1];)y?(C[0]=String.fromCharCode(w[J++]),C[1]=String.fromCharCode(w[J++])):z?C=jalview.analysis.CodingUtils.decodeCodon(w[J++]):C[0]=String.fromCharCode(w[J++]),E=this.charWidth,E/=this.fm.charsWidth(C,0,C.length),A+=H,H=s*G*w[J++],B=p.getLineMetrics(C,0,1,a.getFontMetrics().getFontRenderContext()),a.setFont(p.deriveFont(java.awt.geom.AffineTransform.getScaleInstance(E,
+H/B.getAscent()))),B=a.getFontMetrics().getLineMetrics(C,0,1,a),E=null,z?(E=jalview.schemes.ResidueProperties.codonTranslate(String.instantialize(C)),E=this.profcolour.findColourSeq(E.charAt(0),t,null)):E=this.profcolour.findColourSeq(C[0],t,null),a.setColor(E===java.awt.Color.white?java.awt.Color.lightGray:E),B=A+(H-B.getDescent()-B.getBaselineOffsets()[B.getBaselineIndex()]),a.drawChars(C,0,C.length,q*this.charWidth,F(B)),K++;a.setFont(p)}}q++}null!=b.threshold&&(a.setColor(b.threshold.colour),
+a.setStroke(new java.awt.BasicStroke(1,2,1,3,Q(-1,[5,3]),0)),r=I(h-(b.threshold.value-k)/g*b.graphHeight),a.drawLine(0,r,(e-d)*this.charWidth,r),a.setStroke(new java.awt.BasicStroke))}},"java.awt.Graphics,jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~N,~N,~N,~B,~B,~B");d(c$,"drawGraph",function(a,b,c,d,e,k,g){g=Math.min(g,c.length);a.setColor(java.awt.Color.white);a.fillRect(0,0,d,e);a.setColor(new java.awt.Color(0,0,180));d=0;for(var h=k;h<g;h++)null!=c[h]&&(null==c[h].colour?a.setColor(java.awt.Color.black):
+a.setColor(c[h].colour),k=I(c[h].value/b.graphMax*e),k>e&&(k=e),a.fillRect(d,e-k,this.charWidth,k)),d+=this.charWidth},"java.awt.Graphics,jalview.datamodel.AlignmentAnnotation,~A,~N,~N,~N,~N");d(c$,"getNotCanonicalColor",function(a){switch(a){case "{":case "}":return new java.awt.Color(255,125,5);case "[":case "]":return new java.awt.Color(245,115,10);case ">":case "<":return new java.awt.Color(235,135,15);case "A":case "a":return new java.awt.Color(225,105,20);case "B":case "b":return new java.awt.Color(215,
+145,30);case "C":case "c":return new java.awt.Color(205,95,35);case "D":case "d":return new java.awt.Color(195,155,45);case "E":case "e":return new java.awt.Color(185,85,55);case "F":case "f":return new java.awt.Color(175,165,65);case "G":case "g":return new java.awt.Color(170,75,75);case "H":case "h":return new java.awt.Color(160,175,85);case "I":case "i":return new java.awt.Color(150,65,95);case "J":case "j":return new java.awt.Color(140,185,105);case "K":case "k":return new java.awt.Color(130,
+55,110);case "L":case "l":return new java.awt.Color(120,195,120);case "M":case "m":return new java.awt.Color(110,45,130);case "N":case "n":return new java.awt.Color(100,205,140);case "O":case "o":return new java.awt.Color(90,35,150);case "P":case "p":return new java.awt.Color(85,215,160);case "Q":case "q":return new java.awt.Color(75,25,170);case "R":case "r":return new java.awt.Color(65,225,180);case "S":case "s":return new java.awt.Color(55,15,185);case "T":case "t":return new java.awt.Color(45,
+235,195);case "U":case "u":return new java.awt.Color(35,5,205);case "V":case "v":return new java.awt.Color(25,245,215);case "W":case "w":return new java.awt.Color(15,0,225);case "X":case "x":return new java.awt.Color(10,255,235);case "Y":case "y":return new java.awt.Color(5,150,245);case "Z":case "z":return new java.awt.Color(0,80,255);default:return System.out.println("This is not a interaction : "+a),null}},"~S");c$.GLYPHLINE_COLOR=c$.prototype.GLYPHLINE_COLOR=java.awt.Color.gray;c$.SHEET_COLOUR=
+c$.prototype.SHEET_COLOUR=java.awt.Color.green;c$.HELIX_COLOUR=c$.prototype.HELIX_COLOUR=java.awt.Color.red;c$.STEM_COLOUR=c$.prototype.STEM_COLOUR=java.awt.Color.blue});p("jalview.appletgui");q("awt2swing.Panel java.awt.event.ActionListener $.AdjustmentListener $.ItemListener $.MouseListener awt2swing.Checkbox $.Choice $.Scrollbar $.TextField".split(" "),"jalview.appletgui.FeatureColourChooser","awt2swing.Label jalview.appletgui.JVDialog $.PaintRefresher $.UserDefinedColours jalview.datamodel.GraphLine jalview.schemes.GraduatedColor jalview.util.MessageManager java.awt.Color $.Dimension $.FlowLayout $.Font $.GridLayout java.awt.event.ActionEvent java.lang.Float".split(" "),
+function(){c$=s(function(){this.oldgroupColours=this.oldcs=this.cs=this.fs=this.fr=this.owner=this.frame=null;this.adjusting=!1;this.max=this.min=0;this.threshline=this.colourFromLabel=this.thresholdIsMin=this.thresholdValue=this.slider=this.jPanel4=this.jPanel3=this.threshold=this.jPanel2=this.jPanel1=this.maxColour=this.minColour=this.af=this.type=null;r(this,arguments)},jalview.appletgui,"FeatureColourChooser",awt2swing.Panel,[java.awt.event.ActionListener,java.awt.event.AdjustmentListener,java.awt.event.ItemListener,
+java.awt.event.MouseListener]);J(c$,function(){this.minColour=new awt2swing.Panel;this.maxColour=new awt2swing.Panel;this.jPanel1=new awt2swing.Panel;this.jPanel2=new awt2swing.Panel;this.threshold=new awt2swing.Choice;this.jPanel3=new awt2swing.Panel;this.jPanel4=new awt2swing.Panel;this.slider=new awt2swing.Scrollbar(0);this.thresholdValue=new awt2swing.TextField(20);this.thresholdIsMin=new awt2swing.Checkbox;this.colourFromLabel=new awt2swing.Checkbox});m(c$,function(a,b){t(this,jalview.appletgui.FeatureColourChooser,
+[]);this.af=a;this.init(a.getSeqcanvas().getFeatureRenderer(),b)},"jalview.appletgui.AlignFrame,~S");m(c$,function(a,b){t(this,jalview.appletgui.FeatureColourChooser,[]);this.fs=a;this.init(a.fr,b)},"jalview.appletgui.FeatureSettings,~S");d(c$,"init",function(a,b){this.type=b;this.fr=a;var c=this.fr.getMinMax().get(b)[0];this.min=c[0];this.max=c[1];this.oldcs=this.fr.getFeatureColours().get(b);if(v(this.oldcs,jalview.schemes.GraduatedColor))this.cs=new jalview.schemes.GraduatedColor(this.oldcs,this.min,
+this.max);else{var d=java.awt.Color.black;v(this.oldcs,java.awt.Color)&&(d=this.oldcs);this.cs=new jalview.schemes.GraduatedColor(java.awt.Color.white,d,c[0],c[1])}this.minColour.setBackground(this.cs.getMinColor());this.maxColour.setBackground(this.cs.getMaxColor());this.minColour.setForeground(this.cs.getMinColor());this.maxColour.setForeground(this.cs.getMaxColor());this.colourFromLabel.setState(this.cs.isColourByLabel());this.adjusting=!0;try{this.jbInit()}catch(e){if(!y(e,Exception))throw e;
+}this.threshold.select(new Integer(-1==this.cs.getThreshType()?0:1==this.cs.getThreshType()?1:2));this.adjusting=!1;this.changeColour();this.colourFromLabel.addItemListener(this);this.slider.addAdjustmentListener(this);this.slider.addMouseListener(this);this.owner=null!=this.af?this.af:this.fs.frame;this.frame=new jalview.appletgui.JVDialog(this.owner,jalview.util.MessageManager.formatMessage("label.graduated_color_for_params",E(-1,[b])),!0,480,248);this.frame.setMainPanel(this);this.validate();this.frame.setVisible(!0);
+this.frame.accept?this.changeColour():(this.reset(),jalview.appletgui.PaintRefresher.Refresh(this,this.fr.getViewport().getSequenceSetId()),this.frame.setVisible(!1))},"jalview.appletgui.FeatureRenderer,~S");m(c$,function(){t(this,jalview.appletgui.FeatureColourChooser,[]);try{this.jbInit()}catch(a){if(y(a,Exception))a.printStackTrace();else throw a;}});d(c$,"jbInit",function(){var a=new awt2swing.Label(jalview.util.MessageManager.getString("label.min")),b=new awt2swing.Label(jalview.util.MessageManager.getString("label.max"));
+a.setFont(new java.awt.Font("Verdana",0,11));b.setFont(new java.awt.Font("Verdana",0,11));this.minColour.setBounds(0,0,40,27);this.maxColour.setBounds(0,0,40,27);this.minColour.addMouseListener(this);this.maxColour.setFont(new java.awt.Font("Verdana",0,11));this.maxColour.addMouseListener(this);this.thresholdIsMin.addItemListener(this);this.setLayout(new java.awt.GridLayout(4,1));this.jPanel1.setLayout(new java.awt.FlowLayout);this.jPanel2.setLayout(new java.awt.FlowLayout);this.jPanel3.setLayout(new java.awt.GridLayout(1,
+1));this.jPanel4.setLayout(new java.awt.FlowLayout);this.jPanel1.setBackground(java.awt.Color.white);this.jPanel2.setBackground(java.awt.Color.white);this.jPanel4.setBackground(java.awt.Color.white);this.threshold.addItemListener(this);this.threshold.addItem(jalview.util.MessageManager.getString("label.threshold_feature_no_thereshold"));this.threshold.addItem(jalview.util.MessageManager.getString("label.threshold_feature_above_thereshold"));this.threshold.addItem(jalview.util.MessageManager.getString("label.threshold_feature_below_thereshold"));
+this.thresholdValue.addActionListener(this);this.slider.setBackground(java.awt.Color.white);this.slider.setEnabled(!1);this.slider.setSize(new java.awt.Dimension(93,21));this.thresholdValue.setEnabled(!1);this.thresholdValue.setSize(new java.awt.Dimension(79,22));this.thresholdValue.setColumns(5);this.jPanel3.setBackground(java.awt.Color.white);this.colourFromLabel.setFont(new java.awt.Font("Verdana",0,11));this.colourFromLabel.setLabel(jalview.util.MessageManager.getString("label.colour_by_label"));
+this.colourFromLabel.setSize(new java.awt.Dimension(139,22));this.thresholdIsMin.setBackground(java.awt.Color.white);this.thresholdIsMin.setLabel(jalview.util.MessageManager.getString("label.threshold_minmax"));this.thresholdIsMin.setSize(new java.awt.Dimension(135,23));this.jPanel1.add(a);this.jPanel1.add(this.minColour);this.jPanel1.add(b);this.jPanel1.add(this.maxColour);this.jPanel1.add(this.colourFromLabel);this.jPanel2.add(this.threshold);this.jPanel3.add(this.slider);this.jPanel4.add(this.thresholdValue);
+this.jPanel4.add(this.thresholdIsMin);this.add(this.jPanel1);this.add(this.jPanel2);this.add(this.jPanel3);this.add(this.jPanel4)});e(c$,"actionPerformed",function(a){if(a.getSource()===this.thresholdValue)try{var b=(new Float(this.thresholdValue.getText())).floatValue();this.slider.setValue(I(1E3*b));this.adjustmentValueChanged(null)}catch(c){if(!y(c,NumberFormatException))throw c;}else a.getSource()===this.minColour?this.minColour_actionPerformed(null):a.getSource()===this.maxColour?this.maxColour_actionPerformed(null):
+this.changeColour()},"java.awt.event.ActionEvent");e(c$,"itemStateChanged",function(){this.maxColour.setEnabled(!this.colourFromLabel.getState());this.minColour.setEnabled(!this.colourFromLabel.getState());this.changeColour()},"java.awt.event.ItemEvent");e(c$,"adjustmentValueChanged",function(){this.adjusting||(this.thresholdValue.setText(this.slider.getValue()/1E3+""),this.valueChanged())},"java.awt.event.AdjustmentEvent");d(c$,"valueChanged",function(){this.threshline.value=this.slider.getValue()/
+1E3;this.cs.setThresh(this.threshline.value);this.changeColour();jalview.appletgui.PaintRefresher.Refresh(this,this.fr.getViewport().getSequenceSetId())});d(c$,"minColour_actionPerformed",function(a){null==a?new jalview.appletgui.UserDefinedColours(this,this.minColour.getBackground(),this.owner,jalview.util.MessageManager.getString("label.select_colour_minimum_value")):(this.minColour.setBackground(a),this.minColour.setForeground(a),this.minColour.repaint(),this.changeColour())},"java.awt.Color");
+d(c$,"maxColour_actionPerformed",function(a){null==a?new jalview.appletgui.UserDefinedColours(this,this.maxColour.getBackground(),this.owner,jalview.util.MessageManager.getString("label.select_colour_maximum_value")):(this.maxColour.setBackground(a),this.maxColour.setForeground(a),this.maxColour.repaint(),this.changeColour())},"java.awt.Color");d(c$,"changeColour",function(){if(!this.adjusting){var a=-1;1==this.threshold.getSelectedIndex()?a=1:2==this.threshold.getSelectedIndex()&&(a=0);this.slider.setEnabled(!0);
+this.thresholdValue.setEnabled(!0);var b=new jalview.schemes.GraduatedColor(this.minColour.getBackground(),this.maxColour.getBackground(),this.min,this.max);b.setColourByLabel(this.colourFromLabel.getState());this.maxColour.setEnabled(!this.colourFromLabel.getState());this.minColour.setEnabled(!this.colourFromLabel.getState());-1==a?(this.slider.setEnabled(!1),this.thresholdValue.setEnabled(!1),this.thresholdValue.setText("")):-1!=a&&null==this.threshline&&(this.threshline=new jalview.datamodel.GraphLine((this.max-
+this.min)/2,"Threshold",java.awt.Color.black));-1!=a&&(this.adjusting=!0,b.setThresh(this.threshline.value),this.slider.setMinimum(I(1E3*this.min)),this.slider.setMaximum(I(1E3*this.max)),this.slider.setValue(I(1E3*this.threshline.value)),this.thresholdValue.setText(this.threshline.value+""),this.slider.setEnabled(!0),this.thresholdValue.setEnabled(!0),this.adjusting=!1);b.setThreshType(a);this.thresholdIsMin.getState()&&-1!=a&&(b=1==a?new jalview.schemes.GraduatedColor(b,this.threshline.value,this.max):
+new jalview.schemes.GraduatedColor(b,this.min,this.threshline.value));this.fr.setColour(this.type,b);this.cs=b;jalview.appletgui.PaintRefresher.Refresh(this,this.fr.getViewport().getSequenceSetId())}});d(c$,"reset",function(){this.fr.setColour(this.type,this.oldcs);jalview.appletgui.PaintRefresher.Refresh(this,this.fr.getViewport().getSequenceSetId())});e(c$,"mouseClicked",function(){},"java.awt.event.MouseEvent");e(c$,"mousePressed",function(){},"java.awt.event.MouseEvent");e(c$,"mouseReleased",
+function(a){a.getSource()===this.minColour||a.getSource()===this.maxColour?this.actionPerformed(new java.awt.event.ActionEvent(a.getSource(),1,"Clicked")):jalview.appletgui.PaintRefresher.Refresh(this,this.fr.getViewport().getSequenceSetId())},"java.awt.event.MouseEvent");e(c$,"mouseEntered",function(){},"java.awt.event.MouseEvent");e(c$,"mouseExited",function(){},"java.awt.event.MouseEvent")});p("jalview.schemes");q(null,"jalview.schemes.GraduatedColor",["jalview.schemes.UserColourScheme","java.awt.Color",
+"java.lang.Float"],function(){c$=s(function(){this.thresholdState=-1;this.thrsh=this.range=this.base=this.db=this.dg=this.dr=this.lb=this.lg=this.lr=0;this.tolow=!1;this.autoScale=!0;this.ucs=null;this.colourByLabel=!1;r(this,arguments)},jalview.schemes,"GraduatedColor");m(c$,function(a,b,c,d){this.thrsh=NaN;this.tolow=c>=d;this.lr=a.getRed()/255;this.lg=a.getGreen()/255;this.lb=a.getBlue()/255;this.dr=b.getRed()/255-this.lr;this.dg=b.getGreen()/255-this.lg;this.db=b.getBlue()/255-this.lb;this.tolow?
+(this.base=d,this.range=c-d):(this.base=c,this.range=d-c)},"java.awt.Color,java.awt.Color,~N,~N");m(c$,function(a){this.lr=a.lr;this.lg=a.lg;this.lb=a.lb;this.dr=a.dr;this.dg=a.dg;this.db=a.db;this.base=a.base;this.range=a.range;this.tolow=a.tolow;this.thresholdState=a.thresholdState;this.thrsh=a.thrsh;this.autoScale=a.autoScale;this.colourByLabel=a.colourByLabel},"jalview.schemes.GraduatedColor");m(c$,function(a,b,c){this.construct(a);this.updateBounds(b,c)},"jalview.schemes.GraduatedColor,~N,~N");
+d(c$,"getMinColor",function(){return new java.awt.Color(this.lr,this.lg,this.lb)});d(c$,"getMaxColor",function(){return new java.awt.Color(this.lr+this.dr,this.lg+this.dg,this.lb+this.db)});d(c$,"getTolow",function(){return this.tolow});d(c$,"setTolow",function(a){this.tolow=a},"~B");d(c$,"isColored",function(a){a=a.getScore();if(Float.isNaN(a)||-1==this.thresholdState||Float.isNaN(this.thrsh))return!0;var b=1==this.thresholdState;return a<=this.thrsh?!b:b},"jalview.datamodel.SequenceFeature");d(c$,
+"isColourByLabel",function(){return this.colourByLabel});d(c$,"setColourByLabel",function(a){this.colourByLabel=a},"~B");d(c$,"findColor",function(a){if(this.colourByLabel)return null==this.ucs&&(this.ucs=new jalview.schemes.UserColourScheme),this.ucs.createColourFromName(a.getDescription());if(0==this.range)return this.getMaxColor();a=a.getScore();if(Float.isNaN(a))return this.getMinColor();a=(a-this.base)/this.range;this.tolow&&(a=-a);0>a&&(a=0);1<a&&(a=1);return new java.awt.Color(this.lr+a*this.dr,
+this.lg+a*this.dg,this.lb+a*this.db)},"jalview.datamodel.SequenceFeature");d(c$,"setThresh",function(a){this.thrsh=a},"~N");d(c$,"getThresh",function(){return this.thrsh});d(c$,"setThreshType",function(a){this.thresholdState=a},"~N");d(c$,"getThreshType",function(){return this.thresholdState});d(c$,"getMax",function(){return this.tolow?this.base:this.base+this.range});d(c$,"getMin",function(){return this.tolow?this.base+this.range:this.base});d(c$,"isAutoScale",function(){return this.autoScale});
+d(c$,"setAutoScaled",function(a){this.autoScale=a},"~B");d(c$,"updateBounds",function(a,b){b<a?(this.base=b,this.range=a-b,this.tolow=!0):(this.base=a,this.range=b-a,this.tolow=!1)},"~N,~N")});p("jalview.appletgui");q(["awt2swing.Panel","jalview.renderer.seqfeatures.FeatureRenderer"],"jalview.appletgui.FeatureRenderer","awt2swing.Button $.Choice $.Label $.ScrollPane $.TextArea $.TextField $.Util jalview.appletgui.FeatureColourChooser $.JVDialog $.UserDefinedColours jalview.datamodel.SearchResults jalview.io.FeaturesFile jalview.schemes.GraduatedColor $.UserColourScheme jalview.util.MessageManager java.awt.BorderLayout $.Color $.Font $.GridLayout java.awt.event.ActionListener $.ItemListener $.MouseAdapter java.lang.Error".split(" "),
+function(){c$=s(function(){this.featureLinks=null;this.featureIndex=0;this.deleteFeature=!1;this.colourPanel=null;H("jalview.appletgui.FeatureRenderer.FeatureColourPanel")||jalview.appletgui.FeatureRenderer.$FeatureRenderer$FeatureColourPanel$();r(this,arguments)},jalview.appletgui,"FeatureRenderer",jalview.renderer.seqfeatures.FeatureRenderer);m(c$,function(a){t(this,jalview.appletgui.FeatureRenderer);this.av=a;this.setTransparencyAvailable(!System.getProperty("java.version").startsWith("1.1"))},
+"jalview.viewmodel.AlignmentViewport");d(c$,"amendFeatures",function(a,b,c,d){var e=new awt2swing.Panel(new java.awt.BorderLayout),k=new awt2swing.TextField(16),g=new awt2swing.TextField(16),h=new awt2swing.TextArea(3,35),j=new awt2swing.TextField(8),n=new awt2swing.TextField(8),m,p=new awt2swing.Button("Delete");this.deleteFeature=!1;this.colourPanel=C(jalview.appletgui.FeatureRenderer.FeatureColourPanel,this,null);this.colourPanel.setSize(110,15);var q=new awt2swing.Panel(new java.awt.GridLayout(3,
+1));this.featureIndex=0;var s;if(!c&&1<b.length){q=new awt2swing.Panel(new java.awt.GridLayout(4,1));s=new awt2swing.Panel;s.add(new awt2swing.Label("Select Feature: "));m=new awt2swing.Choice;for(var r=0;r<b.length;r++){var t=b[r].getType()+"/"+b[r].getBegin()+"-"+b[r].getEnd();null!=b[r].getFeatureGroup()&&(t+=" ("+b[r].getFeatureGroup()+")");m.addItem(t)}s.add(m);m.addItemListener((H("jalview.appletgui.FeatureRenderer$1")?0:jalview.appletgui.FeatureRenderer.$FeatureRenderer$1$(),C(jalview.appletgui.FeatureRenderer$1,
+this,T("overlaps",m,"name",k,"features",b,"description",h,"source",g,"start",j,"end",n,"sequences",a,"ap",d))));q.add(s)}s=new awt2swing.Panel;q.add(s);s.add(new awt2swing.Label("Name: ",4));s.add(k);s=new awt2swing.Panel;q.add(s);s.add(new awt2swing.Label("Group: ",4));s.add(g);s=new awt2swing.Panel;q.add(s);s.add(new awt2swing.Label("Colour: ",4));s.add(this.colourPanel);e.add(q,"North");q=new awt2swing.Panel;q.add(new awt2swing.Label("Description: ",4));q.add((new awt2swing.ScrollPane).add(h));
+c||(e.add(q,"South"),q=new awt2swing.Panel,q.add(new awt2swing.Label(" Start:",4)),q.add(j),q.add(new awt2swing.Label("  End:",4)),q.add(n));e.add(q,"Center");null==jalview.appletgui.FeatureRenderer.lastFeatureAdded&&(jalview.appletgui.FeatureRenderer.lastFeatureAdded=null!=b[0].type?b[0].type:"feature_1");null==jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded&&(null!=b[0].featureGroup?jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded=b[0].featureGroup:jalview.appletgui.FeatureRenderer.lastFeatureAdded=
+"Jalview");r=c?jalview.util.MessageManager.getString("label.create_new_sequence_features"):jalview.util.MessageManager.formatMessage("label.amend_delete_features",E(-1,[a[0].getName()]));r=new jalview.appletgui.JVDialog(d.alignFrame,r,!0,385,240);r.setMainPanel(e);c?(k.setText(jalview.appletgui.FeatureRenderer.lastFeatureAdded),g.setText(jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded)):(r.ok.setLabel(jalview.util.MessageManager.getString("label.amend")),r.buttonPanel.add(p,1),p.addActionListener((H("jalview.appletgui.FeatureRenderer$2")?
+0:jalview.appletgui.FeatureRenderer.$FeatureRenderer$2$(),C(jalview.appletgui.FeatureRenderer$2,this,T("dialog",r)))),k.setText(b[0].getType()),g.setText(b[0].getFeatureGroup()));j.setText(b[0].getBegin()+"");n.setText(b[0].getEnd()+"");h.setText(b[0].getDescription());null==this.getColour(k.getText())&&(new jalview.schemes.UserColourScheme).createColourFromName(k.getText());e=this.getFeatureStyle(k.getText());this.colourPanel.updateColor(e);r.setResizable(!0);this.colourPanel.addMouseListener((H("jalview.appletgui.FeatureRenderer$3")?
+0:jalview.appletgui.FeatureRenderer.$FeatureRenderer$3$(),C(jalview.appletgui.FeatureRenderer$3,this,T("fr",this,"ap",d,"name",k,"dialog",r))));r.setVisible(!0);e=new jalview.io.FeaturesFile;r.accept&&(this.lastSeq=null,jalview.appletgui.FeatureRenderer.lastFeatureAdded=k.getText().trim(),jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded=g.getText().trim(),jalview.appletgui.FeatureRenderer.lastDescriptionAdded=h.getText().$replace("\n"," "));null!=jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded&&
+1>jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded.length&&(jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded=null);if(c)if(r.accept&&0<k.getText().length){for(r=0;r<a.length;r++)b[r].type=jalview.appletgui.FeatureRenderer.lastFeatureAdded,b[r].featureGroup=jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded,b[r].description=jalview.appletgui.FeatureRenderer.lastDescriptionAdded,a[r].addSequenceFeature(b[r]),e.parseDescriptionHTML(b[r],!1);a=this.colourPanel.getBackground();null!=
+jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded&&this.setGroupVisibility(jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded,!0);this.setColour(jalview.appletgui.FeatureRenderer.lastFeatureAdded,a);this.setVisible(jalview.appletgui.FeatureRenderer.lastFeatureAdded);this.findAllFeatures(!1)}else return!1;else{b=b[this.featureIndex];if(r.accept){b.type=jalview.appletgui.FeatureRenderer.lastFeatureAdded;b.featureGroup=jalview.appletgui.FeatureRenderer.lastFeatureGroupAdded;b.description=
+jalview.appletgui.FeatureRenderer.lastDescriptionAdded;this.colourPanel.isGcol||this.setColour(b.type,this.colourPanel.getBackground());try{b.begin=Integer.parseInt(j.getText()),b.end=Integer.parseInt(n.getText())}catch(v){if(!y(v,NumberFormatException))throw v;}e.parseDescriptionHTML(b,!1);this.setVisible(jalview.appletgui.FeatureRenderer.lastFeatureAdded)}this.deleteFeature&&a[0].deleteFeature(b)}null!=this.av.featureSettings&&this.av.featureSettings.refreshTable();d.paintAlignment(!0);return!0},
+"~A,~A,~B,jalview.appletgui.AlignmentPanel");c$.$FeatureRenderer$FeatureColourPanel$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.label="";this.maxCol=null;this.isGcol=this.isColourByLabel=!1;r(this,arguments)},jalview.appletgui.FeatureRenderer,"FeatureColourPanel",awt2swing.Panel);d(c$,"updateColor",function(a){var b=null,c=null,d="";if(v(a,java.awt.Color))this.isGcol=!1,b=a,c=null;else if(v(a,jalview.schemes.GraduatedColor))this.isGcol=!0,c=a,b=null;else throw Error(jalview.util.MessageManager.getString("error.invalid_colour_for_mycheckbox"));
+null!=b?this.setBackground(a=b):(-1!=c.getThreshType()&&(d+=" "+(1==c.getThreshType()?"(>)":"(<)")),(this.isColourByLabel=c.isColourByLabel())?(this.setBackground(a=java.awt.Color.white),d+=" (by Label)"):(this.setBackground(a=c.getMinColor()),this.maxCol=c.getMaxColor()));this.label=d;this.setBackground(a);this.repaint()},"~O");m(c$,function(){t(this,jalview.appletgui.FeatureRenderer.FeatureColourPanel,[null])});d(c$,"PaintComponent",function(a){var b=this.getSize();this.isGcol&&(this.isColourByLabel?
+(a.setColor(java.awt.Color.white),a.fillRect(F(b.width/2),0,F(b.width/2),b.height),a.setColor(java.awt.Color.black),b=new java.awt.Font("Verdana",0,10),a.setFont(b),awt2swing.Util.drawString(a,jalview.util.MessageManager.getString("label.label"),0,0)):(a.setColor(this.maxCol),a.fillRect(F(b.width/2),0,F(b.width/2),b.height)))},"java.awt.Graphics");c$=z()};c$.$FeatureRenderer$1$=function(){A(self.c$);c$=L(jalview.appletgui,"FeatureRenderer$1",null,java.awt.event.ItemListener);e(c$,"itemStateChanged",
+function(){var a=this.f$.overlaps.getSelectedIndex();if(-1!=a){this.b$["jalview.appletgui.FeatureRenderer"].featureIndex=a;this.f$.name.setText(this.f$.features[a].getType());this.f$.description.setText(this.f$.features[a].getDescription());this.f$.source.setText(this.f$.features[a].getFeatureGroup());this.f$.start.setText(this.f$.features[a].getBegin()+"");this.f$.end.setText(this.f$.features[a].getEnd()+"");var b=new jalview.datamodel.SearchResults;b.addResult(this.f$.sequences[0],this.f$.features[a].getBegin(),
+this.f$.features[a].getEnd());this.f$.ap.seqPanel.seqCanvas.highlightSearchResults(b)}a=this.b$["jalview.appletgui.FeatureRenderer"].getFeatureStyle(this.f$.name.getText());null==a&&(a=(new jalview.schemes.UserColourScheme).createColourFromName(this.f$.name.getText()));this.b$["jalview.appletgui.FeatureRenderer"].colourPanel.updateColor(a)},"java.awt.event.ItemEvent");c$=z()};c$.$FeatureRenderer$2$=function(){A(self.c$);c$=L(jalview.appletgui,"FeatureRenderer$2",null,java.awt.event.ActionListener);
+e(c$,"actionPerformed",function(){this.b$["jalview.appletgui.FeatureRenderer"].deleteFeature=!0;this.f$.dialog.setVisible(!1)},"java.awt.event.ActionEvent");c$=z()};c$.$FeatureRenderer$3$=function(){A(self.c$);c$=L(jalview.appletgui,"FeatureRenderer$3",java.awt.event.MouseAdapter);e(c$,"mousePressed",function(){this.b$["jalview.appletgui.FeatureRenderer"].colourPanel.isGcol?(new jalview.appletgui.FeatureColourChooser(this.f$.ap.alignFrame,this.f$.name.getText()),this.f$.dialog.transferFocus()):new jalview.appletgui.UserDefinedColours(this.f$.fr,
+this.f$.ap.alignFrame)},"java.awt.event.MouseEvent");c$=z()};G(c$,"lastFeatureAdded",null,"lastFeatureGroupAdded",null,"lastDescriptionAdded",null)});p("jalview.renderer.seqfeatures");q(["jalview.viewmodel.seqfeatures.FeatureRendererModel"],"jalview.renderer.seqfeatures.FeatureRenderer","awt2swing.Util jalview.util.Comparison java.awt.AlphaComposite $.Color java.awt.image.BufferedImage java.lang.Float".split(" "),function(){c$=s(function(){this.fm=null;this.charOffset=0;this.offscreenRender=!1;this.lastSeq=
+null;this.s="\x00";this.av_charWidth=this.av_charHeight=this.i=0;this.av_isShowSeqFeatureHeight=this.av_validCharWidth=!1;this.lastSequenceFeatures=this.offscreenImage=null;this.epos=this.spos=this.sfindex=this.sfSize=0;this.transparencyAvailable=!0;r(this,arguments)},jalview.renderer.seqfeatures,"FeatureRenderer",jalview.viewmodel.seqfeatures.FeatureRendererModel);d(c$,"updateAvConfig",function(){this.av_charHeight=this.av.getCharHeight();this.av_charWidth=this.av.getCharWidth();this.av_validCharWidth=
+this.av.isValidCharWidth();this.av_isShowSeqFeatureHeight=this.av.isShowSequenceFeaturesHeight()});d(c$,"renderFeature",function(a,b,c,d,e,k,g,h){this.updateAvConfig();if(c<=g&&d>=k){c<k&&(c=k);d>=g&&(d=g);g=h+this.av_charHeight-F(this.av_charHeight/5);for(this.i=c;this.i<=d;this.i++)this.s=b.getCharAt(this.i),jalview.util.Comparison.isGap(this.s)||(a.setColor(e),a.fillRect((this.i-k)*this.av_charWidth,h,this.av_charWidth,this.av_charHeight),!this.offscreenRender&&this.av_validCharWidth&&(a.setColor(java.awt.Color.white),
+this.charOffset=F((this.av_charWidth-this.fm.charWidth(this.s))/2),awt2swing.Util.drawString(a,String.valueOf(this.s),this.charOffset+this.av_charWidth*(this.i-k),g)))}},"java.awt.Graphics,jalview.datamodel.SequenceI,~N,~N,java.awt.Color,~N,~N,~N");d(c$,"renderScoreFeature",function(a,b,c,d,e,k,g,h,j){this.updateAvConfig();if(c<=g&&d>=k){c<k&&(c=k);d>=g&&(d=g);g=h+this.av_charHeight-F(this.av_charHeight/5);var n=0,m=this.av_charHeight;0!=j[0]?128>j[1]?(m=F(this.av_charHeight*(128-j[1])/512),n=this.av_charHeight-
+F(m/2)):(n=F(this.av_charHeight/2),m=F(this.av_charHeight*(j[1]-128)/512)):(m=F(this.av_charHeight*j[1]/255),n=this.av_charHeight-m);for(this.i=c;this.i<=d;this.i++)this.s=b.getCharAt(this.i),jalview.util.Comparison.isGap(this.s)||(a.setColor(e),c=(this.i-k)*this.av_charWidth,a.drawRect(c,h,this.av_charWidth,this.av_charHeight),a.fillRect(c,h+n,this.av_charWidth,m),!this.offscreenRender&&this.av_validCharWidth&&(a.setColor(java.awt.Color.black),this.charOffset=F((this.av_charWidth-this.fm.charWidth(this.s))/
+2),awt2swing.Util.drawString(a,String.valueOf(this.s),this.charOffset+this.av_charWidth*(this.i-k),g)))}},"java.awt.Graphics,jalview.datamodel.SequenceI,~N,~N,java.awt.Color,~N,~N,~N,~A");d(c$,"findFeatureColour",function(a,b,c){return new java.awt.Color(this.findFeatureColour(a.getRGB(),b,c))},"java.awt.Color,jalview.datamodel.SequenceI,~N");d(c$,"findFeatureColour",function(a,b,c){if(!this.av.isShowSequenceFeatures())return a;var d=b.getSequenceFeatures();b!==this.lastSeq?(this.lastSeq=b,this.lastSequenceFeatures=
+d,null!=this.lastSequenceFeatures&&(this.sfSize=this.lastSequenceFeatures.length)):this.lastSequenceFeatures!==d&&(this.lastSequenceFeatures=d,null!=this.lastSequenceFeatures&&(this.sfSize=this.lastSequenceFeatures.length));if(null==this.lastSequenceFeatures||0==this.sfSize)return a;if(jalview.util.Comparison.isGap(this.lastSeq.getCharAt(c)))return java.awt.Color.white.getRGB();1!=this.transparency&&null==this.offscreenImage&&(this.offscreenImage=new java.awt.image.BufferedImage(1,1,2));this.currentColour=
+null;this.offscreenRender=!0;if(null!=this.offscreenImage)return this.offscreenImage.setRGB(0,0,a),this.drawSequence(this.offscreenImage.getGraphics(),this.lastSeq,c,c,0),this.offscreenImage.getRGB(0,0);this.drawSequence(null,this.lastSeq,this.lastSeq.findPosition(c),-1,-1);return null==this.currentColour?a:this.currentColour.intValue()},"~N,jalview.datamodel.SequenceI,~N");d(c$,"drawSequence",function(a,b,c,d,e){var k=b.getSequenceFeatures();if(!(null==k||0==k.length)){null!=a&&(this.fm=a.getFontMetrics());
+this.updateFeatures();if(null==this.lastSeq||b!==this.lastSeq||k!==this.lastSequenceFeatures)this.lastSeq=b,this.lastSequenceFeatures=k;1!=this.transparency&&null!=a&&a.setComposite(java.awt.AlphaComposite.getInstance(3,this.transparency));this.offscreenRender||(this.spos=this.lastSeq.findPosition(c),this.epos=this.lastSeq.findPosition(d));this.sfSize=this.lastSequenceFeatures.length;for(var g=0;g<this.renderOrder.length;g++)if(k=this.renderOrder[g],null!=k&&this.showFeatureOfType(k))for(this.sfindex=
+0;this.sfindex<this.sfSize;this.sfindex++){var h=this.lastSequenceFeatures[this.sfindex];if(h.type.equals(k)&&!(null!=this.featureGroups&&null!=h.featureGroup&&0!=h.featureGroup.length&&this.featureGroups.containsKey(h.featureGroup)&&!this.featureGroups.get(h.featureGroup).booleanValue())&&(this.offscreenRender||!(h.getBegin()>this.epos||h.getEnd()<this.spos)))this.offscreenRender&&null==this.offscreenImage?h.begin<=c&&h.end>=c&&(this.currentColour=new Integer(this.getColour(h).getRGB())):h.type.equals("disulfide bond")?
+(this.renderFeature(a,b,b.findIndex(h.begin)-1,b.findIndex(h.begin)-1,this.getColour(h),c,d,e),this.renderFeature(a,b,b.findIndex(h.end)-1,b.findIndex(h.end)-1,this.getColour(h),c,d,e)):this.showFeature(h)&&(this.av_isShowSeqFeatureHeight&&!Float.isNaN(h.score)?this.renderScoreFeature(a,b,b.findIndex(h.begin)-1,b.findIndex(h.end)-1,this.getColour(h),c,d,e,this.normaliseScore(h)):this.renderFeature(a,b,b.findIndex(h.begin)-1,b.findIndex(h.end)-1,this.getColour(h),c,d,e))}1!=this.transparency&&(null!=
+a&&this.transparencyAvailable)&&a.setComposite(java.awt.AlphaComposite.getInstance(3,1))}},"java.awt.Graphics,jalview.datamodel.SequenceI,~N,~N,~N");d(c$,"setTransparencyAvailable",function(a){this.transparencyAvailable=a},"~B");e(c$,"isTransparencyAvailable",function(){return this.transparencyAvailable});e(c$,"featuresAdded",function(){this.lastSeq=null;this.findAllFeatures()})});p("jalview.viewmodel.seqfeatures");q(["jalview.api.FeatureRenderer","java.beans.PropertyChangeSupport","java.lang.Boolean",
+"java.util.Hashtable","java.util.concurrent.ConcurrentHashMap"],"jalview.viewmodel.seqfeatures.FeatureRendererModel","jalview.schemes.GraduatedColor $.UserColourScheme jalview.util.QuickSort jalview.viewmodel.seqfeatures.FeatureRendererSettings $.FeaturesDisplayed java.awt.Color java.lang.Error $.Float java.util.ArrayList $.Arrays".split(" "),function(){c$=s(function(){this.transparency=1;this.minmax=this.av=this.changeSupport=this.renderOrder=this.currentColour=this.featureGroups=this.featureColours=
+null;this.findingFeatures=this.newFeatureAdded=!1;this.featureOrder=this.firing=null;r(this,arguments)},jalview.viewmodel.seqfeatures,"FeatureRendererModel",null,jalview.api.FeatureRenderer);J(c$,function(){this.featureColours=new java.util.concurrent.ConcurrentHashMap;this.featureGroups=new java.util.concurrent.ConcurrentHashMap;this.changeSupport=new java.beans.PropertyChangeSupport(this);this.minmax=new java.util.Hashtable;this.firing=Boolean.FALSE});e(c$,"getViewport",function(){return this.av});
+d(c$,"getSettings",function(){return new jalview.viewmodel.seqfeatures.FeatureRendererSettings(this)});d(c$,"transferSettings",function(a){this.renderOrder=a.renderOrder;this.featureGroups=a.featureGroups;this.featureColours=a.featureColours;this.transparency=a.transparency;this.featureOrder=a.featureOrder},"jalview.viewmodel.seqfeatures.FeatureRendererSettings");d(c$,"transferSettings",function(a){var b=new jalview.viewmodel.seqfeatures.FeatureRendererSettings(a);this.renderOrder=b.renderOrder;this.featureGroups=
+b.featureGroups;this.featureColours=b.featureColours;this.transparency=b.transparency;this.featureOrder=b.featureOrder;if(null!=this.av&&this.av!==a.getViewport()&&null!=a.getFeaturesDisplayed())if(b=this.getFeaturesDisplayed(),null==b)this.setFeaturesDisplayedFrom(a.getFeaturesDisplayed());else{b.clear();for(a=a.getFeaturesDisplayed().getVisibleFeatures();a.hasNext();)b.setVisible(a.next())}},"jalview.api.FeatureRenderer");d(c$,"setFeaturesDisplayedFrom",function(a){this.av.setFeaturesDisplayed(new jalview.viewmodel.seqfeatures.FeaturesDisplayed(a))},
+"jalview.api.FeaturesDisplayedI");e(c$,"setVisible",function(a){var b=this.av.getFeaturesDisplayed();null==b&&this.av.setFeaturesDisplayed(b=new jalview.viewmodel.seqfeatures.FeaturesDisplayed);b.isRegistered(a)||this.pushFeatureType(java.util.Arrays.asList(E(-1,[a])));b.setVisible(a)},"~S");e(c$,"setAllVisible",function(a){var b=this.av.getFeaturesDisplayed();null==b&&this.av.setFeaturesDisplayed(b=new jalview.viewmodel.seqfeatures.FeaturesDisplayed);for(var c=new java.util.ArrayList,d,e=a.iterator();e.hasNext()&&
+((d=e.next())||1);)b.isRegistered(d)||c.add(d);0<c.size()&&this.pushFeatureType(c);b.setAllVisible(a)},"java.util.List");d(c$,"pushFeatureType",function(a){var b=a.size(),c=Array((null==this.renderOrder?0:this.renderOrder.length)+b);a.toArray(c);null!=this.renderOrder&&(System.arraycopy(c,0,c,this.renderOrder.length,b),System.arraycopy(this.renderOrder,0,c,0,this.renderOrder.length));this.renderOrder=c},"java.util.List");d(c$,"getMinMax",function(){return this.minmax});d(c$,"normaliseScore",function(a){var b=
+this.minmax.get(a.type)[0],c=S(-1,[0,255]);null!=b&&(0!=c[0]||0>b[0]?(c[0]=1,c[1]=fa(F(128)+127*(a.score/b[1]))):c[1]=Clazz_floatToByte(F(255)*(a.score/b[1])));return c},"jalview.datamodel.SequenceFeature");d(c$,"updateFeatures",function(){if(null==this.av.getFeaturesDisplayed()||null==this.renderOrder||this.newFeatureAdded)if(this.findAllFeatures(),1>this.av.getFeaturesDisplayed().getVisibleFeatureCount())return!1;return!0});d(c$,"findAllFeatures",function(){this.firing.equals(Boolean.FALSE)&&(this.firing=
+Boolean.TRUE,this.findAllFeatures(!0),this.changeSupport.firePropertyChange("changeSupport",null,null),this.firing=Boolean.FALSE)});e(c$,"findFeaturesAtRes",function(a,b){var c=new java.util.ArrayList,d=a.getSequenceFeatures();if(null!=d)for(var e=0;e<d.length;e++)this.av.areFeaturesDisplayed()&&this.av.getFeaturesDisplayed().isVisible(d[e].getType())&&(null!=d[e].featureGroup&&null!=this.featureGroups&&this.featureGroups.containsKey(d[e].featureGroup)&&!this.featureGroups.get(d[e].featureGroup).booleanValue()||
+d[e].getBegin()<=b&&d[e].getEnd()>=b&&c.add(d[e]));return c},"jalview.datamodel.SequenceI,~N");d(c$,"findAllFeatures",function(a){this.newFeatureAdded=!1;if(this.findingFeatures)this.newFeatureAdded=!0;else{this.findingFeatures=!0;null==this.av.getFeaturesDisplayed()&&this.av.setFeaturesDisplayed(new jalview.viewmodel.seqfeatures.FeaturesDisplayed);var b=this.av.getFeaturesDisplayed(),c=new java.util.ArrayList,d=new java.util.ArrayList;if(null!=this.renderOrder)for(var e=0;e<this.renderOrder.length;e++)null!=
+this.renderOrder[e]&&d.add(this.renderOrder[e]);null==this.minmax&&(this.minmax=new java.util.Hashtable);for(var k=this.av.getAlignment(),e=0;e<k.getHeight();e++){var g=k.getSequenceAt(e).getSequenceFeatures();if(null!=g)for(var h=0;h<g.length;){if(!b.isRegistered(g[h].getType())){var j=g[h].getFeatureGroup();if(null!=j){var n=this.featureGroups.get(j);null==n&&(n=Boolean.$valueOf(a),this.featureGroups.put(j,n));if(!n.booleanValue()){h++;continue}}!(0==g[h].begin&&0==g[h].end)&&(a&&!d.contains(g[h].getType()))&&
+(b.setVisible(g[h].getType()),this.setOrder(g[h].getType(),0))}c.contains(g[h].getType())||c.add(g[h].getType());Float.isNaN(g[h].score)||(j=1<=g[h].getBegin()?0:1,n=this.minmax.get(g[h].getType()),null==n&&(n=E(-1,[null,null]),this.minmax.put(g[h].getType(),n)),null==n[j]?n[j]=Q(-1,[g[h].score,g[h].score]):(n[j][0]>g[h].score&&(n[j][0]=g[h].score),n[j][1]<g[h].score&&(n[j][1]=g[h].score)));h++}}this.updateRenderOrder(c);this.findingFeatures=!1}},"~B");d(c$,"updateRenderOrder",function(a){a=new java.util.ArrayList(a);
+var b=this.renderOrder;this.renderOrder=Array(a.size());var c,d=null,e=null==this.featureOrder,k=0;if(null!=b&&0<b.length)for(var g=0;g<b.length;g++)null!=b[g]&&(e&&this.setOrder(b[g],1-(1+g)/b.length),a.contains(b[g])&&(this.renderOrder[k++]=b[g],a.remove(b[g]),null!=this.minmax&&(c=this.minmax.get(b[g]),null!=c&&(d=this.featureColours.get(b[g]),null!=d&&(v(d,jalview.schemes.GraduatedColor)&&d.isAutoScale())&&d.updateBounds(c[0][0],c[0][1])))));if(0!=a.size()){for(var g=b=a.size()-1,h=!1,j=Array(a.size()),
+n=Q(a.size(),0),m,p=a.iterator();p.hasNext()&&((m=p.next())||1);){j[b]=m;null!=this.minmax&&(c=this.minmax.get(j[b]),null!=c&&(d=this.featureColours.get(j[b]),null!=d&&(v(d,jalview.schemes.GraduatedColor)&&d.isAutoScale())&&d.updateBounds(c[0][0],c[0][1])));if(e||!this.featureOrder.containsKey(j[b]))c=e?a.size():this.featureOrder.size(),this.setOrder(j[b],b/c);n[b]=2-this.featureOrder.get(j[b]).floatValue();b<g&&(h=h||n[b]>n[b+1]);b--}1<g&&h&&jalview.util.QuickSort.sortFloatObject(n,j);System.arraycopy(j,
+0,this.renderOrder,k,j.length)}},"java.util.List");e(c$,"getFeatureStyle",function(a){var b=this.featureColours.get(a);null==b&&(b=(new jalview.schemes.UserColourScheme).createColourFromName(a),this.featureColours.put(a,b));return b},"~S");d(c$,"getColour",function(a){var b=this.getFeatureStyle(a);if(v(b,java.awt.Color))return b;if(v(b,jalview.schemes.GraduatedColor))return b.getMaxColor();throw Error("Implementation Error: Unrecognised render object "+b.getClass()+" for features of type "+a);},"~S");
+d(c$,"getColour",function(a){var b=this.getFeatureStyle(a.getType());if(v(b,java.awt.Color))return b;if(v(b,jalview.schemes.GraduatedColor))return b.findColor(a);throw Error("Implementation Error: Unrecognised render object "+b.getClass()+" for features of type "+a.getType());},"jalview.datamodel.SequenceFeature");d(c$,"showFeature",function(a){var b=this.getFeatureStyle(a.type);return v(b,jalview.schemes.GraduatedColor)?b.isColored(a):!0},"jalview.datamodel.SequenceFeature");d(c$,"showFeatureOfType",
+function(a){return this.av.getFeaturesDisplayed().isVisible(a)},"~S");e(c$,"setColour",function(a,b){this.featureColours.put(a,b)},"~S,~O");d(c$,"setTransparency",function(a){this.transparency=a},"~N");d(c$,"getTransparency",function(){return this.transparency});d(c$,"setOrder",function(a,b){null==this.featureOrder&&(this.featureOrder=new java.util.Hashtable);this.featureOrder.put(a,new Float(b));return b},"~S,~N");d(c$,"getOrder",function(a){return null!=this.featureOrder&&this.featureOrder.containsKey(a)?
+this.featureOrder.get(a).floatValue():-1},"~S");e(c$,"getFeatureColours",function(){return new java.util.concurrent.ConcurrentHashMap(this.featureColours)});d(c$,"setFeaturePriority",function(a){this.setFeaturePriority(a,!0)},"~A");d(c$,"setFeaturePriority",function(a,b){var c=null;b?null!=(c=this.av.getFeaturesDisplayed())?this.av.getFeaturesDisplayed().clear():this.av.setFeaturesDisplayed(c=new jalview.viewmodel.seqfeatures.FeaturesDisplayed):c=this.av.getFeaturesDisplayed();if(null!=a&&(this.renderOrder=
+Array(a.length),0<a.length))for(var d=0;d<a.length;d++){var e=a[d][0].toString();this.setColour(e,a[d][1]);a[d][2].booleanValue()&&c.setVisible(e);this.renderOrder[a.length-d-1]=e}},"~A,~B");d(c$,"addPropertyChangeListener",function(a){this.changeSupport.addPropertyChangeListener(a)},"java.beans.PropertyChangeListener");d(c$,"removePropertyChangeListener",function(a){this.changeSupport.removePropertyChangeListener(a)},"java.beans.PropertyChangeListener");d(c$,"getAllFeatureColours",function(){return this.featureColours.keySet()});
+d(c$,"clearRenderOrder",function(){this.renderOrder=null});d(c$,"hasRenderOrder",function(){return null!=this.renderOrder});d(c$,"getRenderOrder",function(){return null==this.renderOrder?java.util.Arrays.asList(E(-1,[])):java.util.Arrays.asList(this.renderOrder)});d(c$,"getFeatureGroupsSize",function(){return null!=this.featureGroups?0:this.featureGroups.size()});e(c$,"getFeatureGroups",function(){return null==this.featureGroups?java.util.Arrays.asList([]):java.util.Arrays.asList(this.featureGroups.keySet().toArray([]))});
+d(c$,"checkGroupVisibility",function(a,b){return this.featureGroups.containsKey(a)?this.featureGroups.get(a).booleanValue():b?(this.featureGroups.put(a,new Boolean(!0)),!0):!1},"~S,~B");e(c$,"getGroups",function(a){if(null!=this.featureGroups){for(var b=new java.util.ArrayList,c,d=this.featureGroups.keySet().iterator();d.hasNext()&&((c=d.next())||1);)this.featureGroups.get(c).booleanValue()==a&&b.add(c);return b}return null},"~B");d(c$,"setGroupVisibility",function(a,b){this.featureGroups.put(a,new Boolean(b))},
+"~S,~B");d(c$,"setGroupVisibility",function(a,b){if(null!=a&&0<a.size()&&null!=this.featureGroups)for(var c=!1,d,e=a.iterator();e.hasNext()&&((d=e.next())||1);){var k=this.featureGroups.get(d);this.featureGroups.put(d,new Boolean(b));null!=k&&(c=c||b!=k.booleanValue())}},"java.util.List,~B");e(c$,"getDisplayedFeatureCols",function(){var a=new java.util.Hashtable;if(null==this.getViewport().getFeaturesDisplayed())return a;for(var b=this.getViewport().getFeaturesDisplayed().getVisibleFeatures();b.hasNext();){var c=
+b.next();a.put(c,this.getColour(c))}return a});d(c$,"getFeaturesDisplayed",function(){return this.av.getFeaturesDisplayed()});e(c$,"getDisplayedFeatureTypes",function(){var a=null,a=this.getRenderOrder().toArray([]),b=this.av.getFeaturesDisplayed();if(null!=b)for(var c=0;c<a.length;c++)b.isVisible(a[c])||(a[c]=null);return a});e(c$,"getDisplayedFeatureGroups",function(){for(var a=null,b=new java.util.ArrayList,c=this.getFeatureGroups().iterator(),d=!1;c.hasNext();)if(a=c.next(),this.checkGroupVisibility(a,
+!1)&&(d=!0,b.add(a)),d)a=Array(b.size()),b.toArray(a);else return null;return a})});p("jalview.api");M(jalview.api,"FeatureRenderer");p("java.util.concurrent");q(["java.util.AbstractMap","$.AbstractSet","$.Iterator","$.Map","$.MapEntry"],"java.util.concurrent.ConcurrentHashMap","java.lang.IllegalArgumentException $.IllegalStateException java.util.AbstractCollection $.Arrays $.ConcurrentModificationException java.util.MapEntry.Type java.util.NoSuchElementException".split(" "),function(){c$=s(function(){this.elementCount=
+0;this.elementData=null;this.modCount=this.threshold=this.loadFactor=0;r(this,arguments)},java.util.concurrent,"ConcurrentHashMap",java.util.AbstractMap,[java.util.Map,Cloneable,java.io.Serializable]);d(c$,"newElementArray",function(a){return Array(a)},"~N");m(c$,function(){this.construct(16)});m(c$,function(a){t(this,java.util.concurrent.ConcurrentHashMap,[]);if(0<=a)this.elementCount=0,this.elementData=this.newElementArray(0==a?1:a),this.loadFactor=0.75,this.computeMaxSize();else throw new IllegalArgumentException;
+},"~N");m(c$,function(a,b){t(this,java.util.concurrent.ConcurrentHashMap,[]);if(0<=a&&0<b)this.elementCount=0,this.elementData=this.newElementArray(0==a?1:a),this.loadFactor=b,this.computeMaxSize();else throw new IllegalArgumentException;},"~N,~N");m(c$,function(a){this.construct(6>a.size()?11:2*a.size());K(this,java.util.concurrent.ConcurrentHashMap,"putAll",[a])},"java.util.Map");e(c$,"clear",function(){0<this.elementCount&&(this.elementCount=0,java.util.Arrays.fill(this.elementData,null),this.modCount++)});
+d(c$,"clone",function(){return this.cloneHM()});d(c$,"cloneHM",function(){try{var a=this.cloneAM();a.elementData=this.newElementArray(this.elementData.length);for(var b,c=0;c<this.elementData.length;c++)if(null!=(b=this.elementData[c]))a.elementData[c]=b.clone();return a}catch(d){if(v(d,CloneNotSupportedException))return null;throw d;}});d(c$,"computeMaxSize",($fz=function(){this.threshold=Math.round(this.elementData.length*this.loadFactor)},$fz.isPrivate=!0,$fz));e(c$,"containsKey",function(a){return null!=
+this.getEntry(a)},"~O");d(c$,"keysEqual",function(a,b){return(null==a?0:a.hashCode())!=b.origKeyHash?!1:null==a&&null==b.key?!0:a.equals(b.key)},"~O,java.util.concurrent.ConcurrentHashMap.Entry");e(c$,"containsValue",function(a){if(null!=a)for(var b=this.elementData.length;0<=--b;)for(var c=this.elementData[b];null!=c;){if(a.equals(c.value))return!0;c=c.next}else for(b=this.elementData.length;0<=--b;)for(c=this.elementData[b];null!=c;){if(null==c.value)return!0;c=c.next}return!1},"~O");e(c$,"entrySet",
+function(){return new java.util.concurrent.ConcurrentHashMap.ConcurrentHashMapEntrySet(this)});e(c$,"get",function(a){a=this.getEntry(a);return null!=a?a.value:null},"~O");d(c$,"getEntry",function(a){var b=this.getModuloHash(a);return this.findEntry(a,b)},"~O");d(c$,"getModuloHash",function(a){return null==a?0:(a.hashCode()&2147483647)%this.elementData.length},"~O");d(c$,"findEntry",function(a,b){var c;c=this.elementData[b];if(null!=a)for(;null!=c&&!this.keysEqual(a,c);)c=c.next;else for(;null!=c&&
+null!=c.key;)c=c.next;return c},"~O,~N");e(c$,"isEmpty",function(){return 0==this.elementCount});e(c$,"keySet",function(){null==this.$keySet&&(this.$keySet=(H("java.util.concurrent.ConcurrentHashMap$1")?0:java.util.concurrent.ConcurrentHashMap.$ConcurrentHashMap$1$(),C(java.util.concurrent.ConcurrentHashMap$1,this,null)));return this.$keySet});e(c$,"put",function(a,b){var c=this.getModuloHash(a),d=this.findEntry(a,c);if(null==d)return this.modCount++,++this.elementCount>this.threshold&&(this.rehash(),
+c=null==a?0:(a.hashCode()&2147483647)%this.elementData.length),this.createEntry(a,c,b),null;c=d.value;d.value=b;return c},"~O,~O");d(c$,"createEntry",function(a,b,c){a=new java.util.concurrent.ConcurrentHashMap.Entry(a,c);a.next=this.elementData[b];return this.elementData[b]=a},"~O,~N,~O");d(c$,"putAll",function(a){if(!a.isEmpty()){var b=this.elementCount+a.size();b>this.threshold&&this.rehash(b);this.putAllHM(a)}},"java.util.Map");d(c$,"rehash",function(a){a=0==a?1:a<<1;for(var b=this.newElementArray(a),
+c=0;c<this.elementData.length;c++)for(var d=this.elementData[c];null!=d;){var e=d.key,e=null==e?0:(e.hashCode()&2147483647)%a,k=d.next;d.next=b[e];b[e]=d;d=k}this.elementData=b;this.computeMaxSize()},"~N");d(c$,"rehash",function(){this.rehash(this.elementData.length)});e(c$,"remove",function(a){a=this.removeEntry(a);return null!=a?a.value:null},"~O");d(c$,"removeEntry",function(a){var b=0,c,d=null;if(null!=a){b=(a.hashCode()&2147483647)%this.elementData.length;for(c=this.elementData[b];null!=c&&!this.keysEqual(a,
+c);)d=c,c=c.next}else for(c=this.elementData[0];null!=c&&null!=c.key;)d=c,c=c.next;if(null==c)return null;null==d?this.elementData[b]=c.next:d.next=c.next;this.modCount++;this.elementCount--;return c},"~O");e(c$,"size",function(){return this.elementCount});e(c$,"values",function(){null==this.valuesCollection&&(this.valuesCollection=(H("java.util.concurrent.ConcurrentHashMap$2")?0:java.util.concurrent.ConcurrentHashMap.$ConcurrentHashMap$2$(),C(java.util.concurrent.ConcurrentHashMap$2,this,null)));
+return this.valuesCollection});c$.$ConcurrentHashMap$1$=function(){A(self.c$);c$=L(java.util.concurrent,"ConcurrentHashMap$1",java.util.AbstractSet);e(c$,"contains",function(a){return this.b$["java.util.concurrent.ConcurrentHashMap"].containsKey(a)},"~O");e(c$,"size",function(){return this.b$["java.util.concurrent.ConcurrentHashMap"].size()});e(c$,"clear",function(){this.b$["java.util.concurrent.ConcurrentHashMap"].clear()});e(c$,"remove",function(a){return this.b$["java.util.concurrent.ConcurrentHashMap"].containsKey(a)?
+(this.b$["java.util.concurrent.ConcurrentHashMap"].remove(a),!0):!1},"~O");e(c$,"iterator",function(){return new java.util.concurrent.ConcurrentHashMap.ConcurrentHashMapIterator((H("java.util.concurrent.ConcurrentHashMap$1$1")?0:java.util.concurrent.ConcurrentHashMap.$ConcurrentHashMap$1$1$(),C(java.util.concurrent.ConcurrentHashMap$1$1,this,null)),this.b$["java.util.concurrent.ConcurrentHashMap"])});c$=z()};c$.$ConcurrentHashMap$1$1$=function(){A(self.c$);c$=L(java.util.concurrent,"ConcurrentHashMap$1$1",
+null,java.util.MapEntry.Type);e(c$,"get",function(a){return a.key},"java.util.MapEntry");c$=z()};c$.$ConcurrentHashMap$2$=function(){A(self.c$);c$=L(java.util.concurrent,"ConcurrentHashMap$2",java.util.AbstractCollection);e(c$,"contains",function(a){return this.b$["java.util.concurrent.ConcurrentHashMap"].containsValue(a)},"~O");e(c$,"size",function(){return this.b$["java.util.concurrent.ConcurrentHashMap"].size()});e(c$,"clear",function(){this.b$["java.util.concurrent.ConcurrentHashMap"].clear()});
+e(c$,"iterator",function(){return new java.util.concurrent.ConcurrentHashMap.ConcurrentHashMapIterator((H("java.util.concurrent.ConcurrentHashMap$2$1")?0:java.util.concurrent.ConcurrentHashMap.$ConcurrentHashMap$2$1$(),C(java.util.concurrent.ConcurrentHashMap$2$1,this,null)),this.b$["java.util.concurrent.ConcurrentHashMap"])});c$=z()};c$.$ConcurrentHashMap$2$1$=function(){A(self.c$);c$=L(java.util.concurrent,"ConcurrentHashMap$2$1",null,java.util.MapEntry.Type);e(c$,"get",function(a){return a.value},
+"java.util.MapEntry");c$=z()};A(self.c$);c$=s(function(){this.origKeyHash=0;this.next=null;r(this,arguments)},java.util.concurrent.ConcurrentHashMap,"Entry",java.util.MapEntry);m(c$,function(a,b){t(this,java.util.concurrent.ConcurrentHashMap.Entry,[a,b]);this.origKeyHash=null==a?0:a.hashCode()},"~O,~O");d(c$,"clone",function(){var a=K(this,java.util.concurrent.ConcurrentHashMap.Entry,"clone",[]);null!=this.next&&(a.next=this.next.clone());return a});c$=z();A(self.c$);c$=s(function(){this.expectedModCount=
+this.position=0;this.type=null;this.canRemove=!1;this.associatedMap=this.lastEntry=this.entry=null;r(this,arguments)},java.util.concurrent.ConcurrentHashMap,"ConcurrentHashMapIterator",null,java.util.Iterator);m(c$,function(a,b){this.associatedMap=b;this.type=a;this.expectedModCount=b.modCount},"java.util.MapEntry.Type,java.util.concurrent.ConcurrentHashMap");e(c$,"hasNext",function(){if(null!=this.entry)return!0;for(;this.position<this.associatedMap.elementData.length;)if(null==this.associatedMap.elementData[this.position])this.position++;
+else return!0;return!1});d(c$,"checkConcurrentMod",function(){if(this.expectedModCount!=this.associatedMap.modCount)throw new java.util.ConcurrentModificationException;});e(c$,"next",function(){this.checkConcurrentMod();if(!this.hasNext())throw new java.util.NoSuchElementException;var a;null==this.entry?(a=this.lastEntry=this.associatedMap.elementData[this.position++],this.entry=this.lastEntry.next):(this.lastEntry.next!==this.entry&&(this.lastEntry=this.lastEntry.next),a=this.entry,this.entry=this.entry.next);
+this.canRemove=!0;return this.type.get(a)});e(c$,"remove",function(){this.checkConcurrentMod();if(!this.canRemove)throw new IllegalStateException;this.canRemove=!1;this.associatedMap.modCount++;if(this.lastEntry.next===this.entry){for(;null==this.associatedMap.elementData[--this.position];);this.associatedMap.elementData[this.position]=this.associatedMap.elementData[this.position].next;this.entry=null}else this.lastEntry.next=this.entry;this.associatedMap.elementCount--;this.expectedModCount++});
+c$=z();A(self.c$);c$=s(function(){this.associatedMap=null;r(this,arguments)},java.util.concurrent.ConcurrentHashMap,"ConcurrentHashMapEntrySet",java.util.AbstractSet);m(c$,function(a){t(this,java.util.concurrent.ConcurrentHashMap.ConcurrentHashMapEntrySet,[]);this.associatedMap=a},"java.util.concurrent.ConcurrentHashMap");d(c$,"hashMap",function(){return this.associatedMap});e(c$,"size",function(){return this.associatedMap.elementCount});e(c$,"clear",function(){this.associatedMap.clear()});e(c$,"remove",
+function(a){return this.contains(a)?(this.associatedMap.remove(a.getKey()),!0):!1},"~O");e(c$,"contains",function(a){if(v(a,java.util.Map.Entry)){var b=this.associatedMap.getEntry(a.getKey());return a.equals(b)}return!1},"~O");e(c$,"iterator",function(){return new java.util.concurrent.ConcurrentHashMap.ConcurrentHashMapIterator((H("java.util.concurrent.ConcurrentHashMap$ConcurrentHashMapEntrySet$1")?0:java.util.concurrent.ConcurrentHashMap.ConcurrentHashMapEntrySet.$ConcurrentHashMap$ConcurrentHashMapEntrySet$1$(),
+C(java.util.concurrent.ConcurrentHashMap$ConcurrentHashMapEntrySet$1,this,null)),this.associatedMap)});c$.$ConcurrentHashMap$ConcurrentHashMapEntrySet$1$=function(){A(self.c$);c$=L(java.util.concurrent,"ConcurrentHashMap$ConcurrentHashMapEntrySet$1",null,java.util.MapEntry.Type);e(c$,"get",function(a){return a},"java.util.MapEntry");c$=z()};c$=z();G(c$,"DEFAULT_SIZE",16)});p("jalview.viewmodel.seqfeatures");q(null,"jalview.viewmodel.seqfeatures.FeatureRendererSettings",["jalview.schemes.GraduatedColor",
+"java.util.Arrays","java.util.concurrent.ConcurrentHashMap"],function(){c$=s(function(){this.featureColours=this.featureGroups=this.renderOrder=null;this.transparency=0;this.featureOrder=null;r(this,arguments)},jalview.viewmodel.seqfeatures,"FeatureRendererSettings",null,Cloneable);m(c$,function(a,b,c,d,e){this.renderOrder=java.util.Arrays.copyOf(a,a.length);this.featureGroups=new java.util.concurrent.ConcurrentHashMap(b);this.featureColours=new java.util.concurrent.ConcurrentHashMap(c);this.transparency=
+d;this.featureOrder=new java.util.concurrent.ConcurrentHashMap(e)},"~A,java.util.Hashtable,java.util.Hashtable,~N,java.util.Hashtable");m(c$,function(a){this.renderOrder=null;this.featureGroups=new java.util.concurrent.ConcurrentHashMap;this.featureColours=new java.util.concurrent.ConcurrentHashMap;this.featureOrder=new java.util.concurrent.ConcurrentHashMap;null!=a.renderOrder&&(this.renderOrder=Array(a.renderOrder.length),System.arraycopy(a.renderOrder,0,this.renderOrder,0,a.renderOrder.length));
+null!=a.featureGroups&&(this.featureGroups=new java.util.concurrent.ConcurrentHashMap(a.featureGroups));null!=a.featureColours&&(this.featureColours=new java.util.concurrent.ConcurrentHashMap(a.featureColours));for(var b=a.featureColours.keySet().iterator();b.hasNext();){var c=b.next(),d=this.featureColours.get(c);v(d,jalview.schemes.GraduatedColor)&&this.featureColours.put(c,new jalview.schemes.GraduatedColor(d))}this.transparency=a.transparency;null!=a.featureOrder&&(this.featureOrder=new java.util.concurrent.ConcurrentHashMap(a.featureOrder))},
+"jalview.viewmodel.seqfeatures.FeatureRendererModel")});p("jalview.viewmodel.seqfeatures");q(["jalview.api.FeaturesDisplayedI","java.util.HashSet"],"jalview.viewmodel.seqfeatures.FeaturesDisplayed",null,function(){c$=s(function(){this.featuresRegistered=this.featuresDisplayed=null;r(this,arguments)},jalview.viewmodel.seqfeatures,"FeaturesDisplayed",null,jalview.api.FeaturesDisplayedI);J(c$,function(){this.featuresDisplayed=new java.util.HashSet;this.featuresRegistered=new java.util.HashSet});m(c$,
+function(a){a=a.getVisibleFeatures();for(var b;a.hasNext();)b=a.next(),this.featuresDisplayed.add(b),this.featuresRegistered.add(b)},"jalview.api.FeaturesDisplayedI");m(c$,function(){});d(c$,"getVisibleFeatures",function(){return this.featuresDisplayed.iterator()});e(c$,"isVisible",function(a){return this.featuresDisplayed.contains(a)},"~S");e(c$,"areVisible",function(a){return this.featuresDisplayed.containsAll(a)},"java.util.Collection");e(c$,"clear",function(){this.featuresDisplayed.clear();this.featuresRegistered.clear()});
+e(c$,"setAllVisible",function(a){this.featuresDisplayed.addAll(a);this.featuresRegistered.addAll(a)},"java.util.Collection");e(c$,"setAllRegisteredVisible",function(){this.featuresDisplayed.addAll(this.featuresRegistered)});e(c$,"setVisible",function(a){this.featuresDisplayed.add(a);this.featuresRegistered.add(a)},"~S");e(c$,"isRegistered",function(a){return this.featuresRegistered.contains(a)},"~S");e(c$,"getVisibleFeatureCount",function(){return this.featuresDisplayed.size()});e(c$,"getRegisterdFeaturesCount",
+function(){return this.featuresRegistered.size()})});p("jalview.api");M(jalview.api,"FeaturesDisplayedI");p("java.awt");q(["java.awt.Composite"],"java.awt.AlphaComposite",["java.lang.Float","$.IllegalArgumentException","jssun.java2d.SunCompositeContext"],function(){c$=s(function(){this.rule=this.extraAlpha=0;r(this,arguments)},java.awt,"AlphaComposite",null,java.awt.Composite);m(c$,function(a){this.construct(a,1)},"~N");m(c$,function(a,b){if(0>b||1<b)throw new IllegalArgumentException("alpha value out of range");
+if(1>a||12<a)throw new IllegalArgumentException("unknown composite rule");this.rule=a;this.extraAlpha=b},"~N,~N");c$.getInstance=d(c$,"getInstance",function(a){switch(a){case 1:return java.awt.AlphaComposite.Clear;case 2:return java.awt.AlphaComposite.Src;case 9:return java.awt.AlphaComposite.Dst;case 3:return java.awt.AlphaComposite.SrcOver;case 4:return java.awt.AlphaComposite.DstOver;case 5:return java.awt.AlphaComposite.SrcIn;case 6:return java.awt.AlphaComposite.DstIn;case 7:return java.awt.AlphaComposite.SrcOut;
+case 8:return java.awt.AlphaComposite.DstOut;case 10:return java.awt.AlphaComposite.SrcAtop;case 11:return java.awt.AlphaComposite.DstAtop;case 12:return java.awt.AlphaComposite.Xor;default:throw new IllegalArgumentException("unknown composite rule");}},"~N");c$.getInstance=d(c$,"getInstance",function(a,b){return 1==b?java.awt.AlphaComposite.getInstance(a):new java.awt.AlphaComposite(a,b)},"~N,~N");e(c$,"createContext",function(a,b){return new jssun.java2d.SunCompositeContext(this,a,b)},"java.awt.image.ColorModel,java.awt.image.ColorModel,java.awt.RenderingHints");
+d(c$,"getAlpha",function(){return this.extraAlpha});d(c$,"getRule",function(){return this.rule});d(c$,"derive",function(a){return this.rule==a?this:java.awt.AlphaComposite.getInstance(a,this.extraAlpha)},"~N");d(c$,"derive",function(a){return this.extraAlpha==a?this:java.awt.AlphaComposite.getInstance(this.rule,a)},"~N");e(c$,"hashCode",function(){return 31*Float.floatToIntBits(this.extraAlpha)+this.rule});e(c$,"equals",function(a){return!v(a,java.awt.AlphaComposite)||this.rule!=a.rule||this.extraAlpha!=
+a.extraAlpha?!1:!0},"~O");G(c$,"CLEAR",1,"SRC",2,"DST",9,"SRC_OVER",3,"DST_OVER",4,"SRC_IN",5,"DST_IN",6,"SRC_OUT",7,"DST_OUT",8,"SRC_ATOP",10,"DST_ATOP",11,"XOR",12);c$.Clear=c$.prototype.Clear=new java.awt.AlphaComposite(1);c$.Src=c$.prototype.Src=new java.awt.AlphaComposite(2);c$.Dst=c$.prototype.Dst=new java.awt.AlphaComposite(9);c$.SrcOver=c$.prototype.SrcOver=new java.awt.AlphaComposite(3);c$.DstOver=c$.prototype.DstOver=new java.awt.AlphaComposite(4);c$.SrcIn=c$.prototype.SrcIn=new java.awt.AlphaComposite(5);
+c$.DstIn=c$.prototype.DstIn=new java.awt.AlphaComposite(6);c$.SrcOut=c$.prototype.SrcOut=new java.awt.AlphaComposite(7);c$.DstOut=c$.prototype.DstOut=new java.awt.AlphaComposite(8);c$.SrcAtop=c$.prototype.SrcAtop=new java.awt.AlphaComposite(10);c$.DstAtop=c$.prototype.DstAtop=new java.awt.AlphaComposite(11);c$.Xor=c$.prototype.Xor=new java.awt.AlphaComposite(12);G(c$,"MIN_RULE",1,"MAX_RULE",12)});p("java.awt");M(java.awt,"Composite");p("jssun.java2d");q(["java.awt.CompositeContext"],"jssun.java2d.SunCompositeContext",
+["java.lang.NullPointerException","java.awt.image.BufferedImage","$.WritableRaster","jssun.java2d.loops.CompositeType"],function(){c$=s(function(){this.comptype=this.composite=this.dstCM=this.srcCM=null;r(this,arguments)},jssun.java2d,"SunCompositeContext",null,java.awt.CompositeContext);m(c$,function(a,b,c){if(null==b)throw new NullPointerException("Source color model cannot be null");if(null==c)throw new NullPointerException("Destination color model cannot be null");this.srcCM=b;this.dstCM=c;this.composite=
+a;this.comptype=jssun.java2d.loops.CompositeType.forAlphaComposite(a)},"java.awt.AlphaComposite,java.awt.image.ColorModel,java.awt.image.ColorModel");e(c$,"dispose",function(){});e(c$,"compose",function(a,b,c){var d;b!==c&&c.setDataElementsRaster(0,0,b);v(a,java.awt.image.WritableRaster)?d=a:(d=a.createCompatibleWritableRaster(),d.setDataElements(0,0,a));Math.min(d.getWidth(),b.getWidth());Math.min(d.getHeight(),b.getHeight());new java.awt.image.BufferedImage(this.srcCM,d,this.srcCM.isAlphaPremultiplied(),
+null);new java.awt.image.BufferedImage(this.dstCM,c,this.dstCM.isAlphaPremultiplied(),null)},"java.awt.image.Raster,java.awt.image.Raster,java.awt.image.WritableRaster")});p("java.awt");M(java.awt,"CompositeContext");p("java.awt.image");q(["java.awt.Image","$.Transparency"],"java.awt.image.BufferedImage","java.awt.Image java.lang.IllegalArgumentException $.NullPointerException java.util.Hashtable java.awt.GraphicsEnvironment $.Point $.Rectangle java.awt.image.ColorModel $.DirectColorModel $.Raster jssun.awt.image.OffScreenImageSource".split(" "),
+function(){c$=s(function(){this.imageType=0;this.properties=this.osis=this.raster=this.colorModel=null;this.$isAlphaPremultiplied=!1;r(this,arguments)},java.awt.image,"BufferedImage",java.awt.Image,java.awt.Transparency);m(c$,function(a,b,c){t(this,java.awt.image.BufferedImage,[]);switch(c){case 1:this.colorModel=new java.awt.image.DirectColorModel(24,16711680,65280,255,0);this.raster=this.colorModel.createCompatibleWritableRaster(a,b);break;case 2:this.colorModel=java.awt.image.ColorModel.getRGBdefault();
+this.raster=this.colorModel.createCompatibleWritableRaster(a,b);break;default:throw new IllegalArgumentException("Unknown image type "+c);}this.imageType=c},"~N,~N,~N");m(c$,function(a,b,c,d){t(this,java.awt.image.BufferedImage,[]);if(0!=b.minX||0!=b.minY)throw new IllegalArgumentException("Raster "+b+" has minX or minY not equal to zero: "+b.minX+" "+b.minY);this.colorModel=a;this.raster=b;this.properties=d;a.getColorSpace()},"java.awt.image.ColorModel,java.awt.image.WritableRaster,~B,java.util.Hashtable");
+d(c$,"getType",function(){return this.imageType});d(c$,"getColorModel",function(){return this.colorModel});d(c$,"getRaster",function(){return this.raster});d(c$,"getRGB",function(){return 0},"~N,~N");d(c$,"getRGB",function(a,b,c,d,e){return e},"~N,~N,~N,~N,~A,~N,~N");d(c$,"setRGB",function(){},"~N,~N,~N");d(c$,"setRGB",function(){},"~N,~N,~N,~N,~A,~N,~N");d(c$,"getWidth",function(){return this.raster.getWidth()});d(c$,"getHeight",function(){return this.raster.getHeight()});d(c$,"getWidth",function(){return this.raster.getWidth()},
+"java.awt.image.ImageObserver");d(c$,"getHeight",function(){return this.raster.getHeight()},"java.awt.image.ImageObserver");e(c$,"getSource",function(){null==this.osis&&(null==this.properties&&(this.properties=new java.util.Hashtable),this.osis=new jssun.awt.image.OffScreenImageSource(this,this.properties));return this.osis});d(c$,"getProperty",function(a){return this.getProperty(a)},"~S,java.awt.image.ImageObserver");d(c$,"getProperty",function(a){if(null==a)throw new NullPointerException("null property name is not allowed");
+if(null==this.properties)return java.awt.Image.UndefinedProperty;a=this.properties.get(a);null==a&&(a=java.awt.Image.UndefinedProperty);return a},"~S");e(c$,"getGraphics",function(){return this.createGraphics()});d(c$,"createGraphics",function(){return java.awt.GraphicsEnvironment.getLocalGraphicsEnvironment().createGraphics(this)});d(c$,"getSubimage",function(a,b,c,d){return new java.awt.image.BufferedImage(this.colorModel,this.raster.createWritableChild(a,b,c,d,0,0,null),this.colorModel.isAlphaPremultiplied(),
+this.properties)},"~N,~N,~N,~N");d(c$,"isAlphaPremultiplied",function(){return!1});e(c$,"toString",function(){return String.instantialize("BufferedImage@"+Integer.toHexString(this.hashCode())+": type = "+this.imageType+" "+this.colorModel+" "+this.raster)});d(c$,"getSources",function(){return null});d(c$,"getPropertyNames",function(){return null});d(c$,"getMinX",function(){return this.raster.getMinX()});d(c$,"getMinY",function(){return this.raster.getMinY()});d(c$,"getSampleModel",function(){return this.raster.getSampleModel()});
+d(c$,"getNumXTiles",function(){return 1});d(c$,"getNumYTiles",function(){return 1});d(c$,"getMinTileX",function(){return 0});d(c$,"getMinTileY",function(){return 0});d(c$,"getTileWidth",function(){return this.raster.getWidth()});d(c$,"getTileHeight",function(){return this.raster.getHeight()});d(c$,"getTileGridXOffset",function(){return 0});d(c$,"getTileGridYOffset",function(){return 0});d(c$,"getTile",function(){return this.raster},"~N,~N");d(c$,"getData",function(){for(var a=this.raster.getWidth(),
+b=this.raster.getHeight(),c=this.raster.getMinX(),d=this.raster.getMinY(),e=java.awt.image.Raster.createWritableRaster(this.raster.getSampleModel(),new java.awt.Point(this.raster.getSampleModelTranslateX(),this.raster.getSampleModelTranslateY())),k=null,g=d;g<d+b;g++)k=this.raster.getDataElements(c,g,a,1,k),e.setDataElements(c,g,a,1,k);return e});d(c$,"getData",function(a){var b=this.raster.getSampleModel().createCompatibleSampleModel(a.width,a.height),b=java.awt.image.Raster.createWritableRaster(b,
+a.getLocation()),c=a.width,d=a.height,e=a.x;a=a.y;for(var k=null,g=a;g<a+d;g++)k=this.raster.getDataElements(e,g,c,1,k),b.setDataElements(e,g,c,1,k);return b},"java.awt.Rectangle");d(c$,"copyData",function(a){if(null==a)return this.getData();for(var b=a.getWidth(),c=a.getHeight(),d=a.getMinX(),e=a.getMinY(),k=null,g=e;g<e+c;g++)k=this.raster.getDataElements(d,g,b,1,k),a.setDataElements(d,g,b,1,k);return a},"java.awt.image.WritableRaster");d(c$,"setData",function(a){var b=a.getWidth(),c=a.getHeight(),
+d=a.getMinX(),e=a.getMinY(),k=null,b=new java.awt.Rectangle(d,e,b,c),c=new java.awt.Rectangle(0,0,this.raster.width,this.raster.height),e=b.intersection(c);if(!e.isEmpty())for(var b=e.width,c=e.height,d=e.x,g=e=e.y;g<e+c;g++)k=a.getPixels(d,g,b,1,k),this.raster.setPixels(d,g,b,1,k)},"java.awt.image.Raster");e(c$,"getTransparency",function(){return this.colorModel.getTransparency()});G(c$,"TYPE_CUSTOM",0,"TYPE_INT_RGB",1,"TYPE_INT_ARGB",2)});p("java.awt");c$=s(function(){this.accelerationPriority=
+0.5;r(this,arguments)},java.awt,"Image");d(c$,"getScaledInstance",function(){return null},"~N,~N,~N");d(c$,"flush",function(){});d(c$,"setAccelerationPriority",function(){},"~N");d(c$,"getAccelerationPriority",function(){return this.accelerationPriority});c$.UndefinedProperty=c$.prototype.UndefinedProperty=new W._O;G(c$,"SCALE_DEFAULT",1,"SCALE_FAST",2,"SCALE_SMOOTH",4,"SCALE_REPLICATE",8,"SCALE_AREA_AVERAGING",16);p("java.awt.image");q(["java.awt.image.PackedColorModel"],"java.awt.image.DirectColorModel",
+"java.lang.ClassCastException $.IllegalArgumentException $.UnsupportedOperationException java.awt.color.ColorSpace java.awt.image.ColorModel $.Raster".split(" "),function(){c$=s(function(){this.alpha_mask=this.blue_mask=this.green_mask=this.red_mask=0;this.is_LinearRGB=!1;this.lRGBprecision=0;this.fromsRGB8LUT16=this.fromsRGB8LUT8=this.tosRGB8LUT=null;r(this,arguments)},java.awt.image,"DirectColorModel",java.awt.image.PackedColorModel);m(c$,function(a,b,c,d){this.construct(a,b,c,d,0)},"~N,~N,~N,~N");
+m(c$,function(a,b,c,d,e){t(this,java.awt.image.DirectColorModel,[java.awt.color.ColorSpace.getInstance(1E3),a,b,c,d,e,!1,0==e?1:3,java.awt.image.ColorModel.getDefaultTransferType(a)])},"~N,~N,~N,~N,~N");m(c$,function(a,b,c,d,e,k,g,h){t(this,java.awt.image.DirectColorModel,[a,b,c,d,e,k,g,0==k?1:3,h])},"java.awt.color.ColorSpace,~N,~N,~N,~N,~N,~B,~N");d(c$,"getRedMask",function(){return this.maskArray[0]});d(c$,"getGreenMask",function(){return this.maskArray[1]});d(c$,"getBlueMask",function(){return this.maskArray[2]});
+d(c$,"getAlphaMask",function(){return this.supportsAlpha?this.maskArray[3]:0});d(c$,"getDefaultRGBComponents",function(a){a=this.getComponents(a,null,0);a=this.getNormalizedComponents(a,0,null,0);return this.colorSpace.toRGB(a)},"~N");d(c$,"getsRGBComponentFromsRGB",function(a,b){var c=(a&this.maskArray[b])>>>this.maskOffsets[b];if(this.$isAlphaPremultiplied)var d=(a&this.maskArray[3])>>>this.maskOffsets[3],c=0==d?0:I(255*c*this.scaleFactors[b]/(d*this.scaleFactors[3])+0.5);else 1!=this.scaleFactors[b]&&
+(c=I(c*this.scaleFactors[b]+0.5));return c},"~N,~N");d(c$,"getsRGBComponentFromLinearRGB",function(a,b){var c=(a&this.maskArray[b])>>>this.maskOffsets[b];if(this.$isAlphaPremultiplied)var d=(1<<this.lRGBprecision)-1,e=(a&this.maskArray[3])>>>this.maskOffsets[3],c=0==e?0:I(c*this.scaleFactors[b]*d/(e*this.scaleFactors[3])+0.5);else this.nBits[b]!=this.lRGBprecision&&(c=16==this.lRGBprecision?I(257*c*this.scaleFactors[b]+0.5):I(c*this.scaleFactors[b]+0.5));return this.tosRGB8LUT[c]&255},"~N,~N");d(c$,
+"getRed",function(a){if(this.is_sRGB)return this.getsRGBComponentFromsRGB(a,0);if(this.is_LinearRGB)return this.getsRGBComponentFromLinearRGB(a,0);a=this.getDefaultRGBComponents(a);return I(255*a[0]+0.5)},"~N");d(c$,"getGreen",function(a){if(this.is_sRGB)return this.getsRGBComponentFromsRGB(a,1);if(this.is_LinearRGB)return this.getsRGBComponentFromLinearRGB(a,1);a=this.getDefaultRGBComponents(a);return I(255*a[1]+0.5)},"~N");d(c$,"getBlue",function(a){if(this.is_sRGB)return this.getsRGBComponentFromsRGB(a,
+2);if(this.is_LinearRGB)return this.getsRGBComponentFromLinearRGB(a,2);a=this.getDefaultRGBComponents(a);return I(255*a[2]+0.5)},"~N");d(c$,"getAlpha",function(a){if(!this.supportsAlpha)return 255;a=(a&this.maskArray[3])>>>this.maskOffsets[3];1!=this.scaleFactors[3]&&(a=I(a*this.scaleFactors[3]+0.5));return a},"~N");d(c$,"getRGB",function(a){if(this.is_sRGB||this.is_LinearRGB)return this.getAlpha(a)<<24|this.getRed(a)<<16|this.getGreen(a)<<8|this.getBlue(a)<<0;var b=this.getDefaultRGBComponents(a);
+return this.getAlpha(a)<<24|I(255*b[0]+0.5)<<16|I(255*b[1]+0.5)<<8|I(255*b[2]+0.5)<<0},"~N");d(c$,"getRed",function(a){var b=0;switch(this.transferType){case 0:b=a[0]&255;break;case 3:b=a[0];break;default:throw new UnsupportedOperationException("This method has not been implemented for transferType "+this.transferType);}return this.getRed(b)},"~O");d(c$,"getGreen",function(a){var b=0;switch(this.transferType){case 0:b=a[0]&255;break;case 3:b=a[0];break;default:throw new UnsupportedOperationException("This method has not been implemented for transferType "+
+this.transferType);}return this.getGreen(b)},"~O");d(c$,"getBlue",function(a){var b=0;switch(this.transferType){case 0:b=a[0]&255;break;case 3:b=a[0];break;default:throw new UnsupportedOperationException("This method has not been implemented for transferType "+this.transferType);}return this.getBlue(b)},"~O");d(c$,"getAlpha",function(a){var b=0;switch(this.transferType){case 0:b=a[0]&255;break;case 3:b=a[0];break;default:throw new UnsupportedOperationException("This method has not been implemented for transferType "+
+this.transferType);}return this.getAlpha(b)},"~O");d(c$,"getRGB",function(a){var b=0;switch(this.transferType){case 0:b=a[0]&255;break;case 3:b=a[0];break;default:throw new UnsupportedOperationException("This method has not been implemented for transferType "+this.transferType);}return this.getRGB(b)},"~O");d(c$,"getDataElements",function(a,b){var c=null;3==this.transferType&&null!=b?(c=b,c[0]=0):c=w(1,0);var d=java.awt.image.ColorModel.getRGBdefault();if(this===d||this.equals(d))return c[0]=a,c;
+var e,k,g;e=a>>16&255;k=a>>8&255;g=a&255;if(this.is_sRGB||this.is_LinearRGB){var h,j;this.is_LinearRGB?8==this.lRGBprecision?(e=this.fromsRGB8LUT8[e]&255,k=this.fromsRGB8LUT8[k]&255,g=this.fromsRGB8LUT8[g]&255,h=8,j=0.003921569):(e=this.fromsRGB8LUT16[e]&65535,k=this.fromsRGB8LUT16[k]&65535,g=this.fromsRGB8LUT16[g]&65535,h=16,j=1.5259022E-5):(h=8,j=0.003921569);this.supportsAlpha&&(d=a>>24&255,this.$isAlphaPremultiplied&&(j*=0.003921569*d,h=-1),8!=this.nBits[3]&&(d=I(0.003921569*d*((1<<this.nBits[3])-
+1)+0.5),d>(1<<this.nBits[3])-1&&(d=(1<<this.nBits[3])-1)),c[0]=d<<this.maskOffsets[3]);this.nBits[0]!=h&&(e=I(e*j*((1<<this.nBits[0])-1)+0.5));this.nBits[1]!=h&&(k=I(k*j*((1<<this.nBits[1])-1)+0.5));this.nBits[2]!=h&&(g=I(g*j*((1<<this.nBits[2])-1)+0.5))}else{h=Q(3,0);j=0.003921569;h[0]=e*j;h[1]=k*j;h[2]=g*j;h=this.colorSpace.fromRGB(h);if(this.supportsAlpha){d=a>>24&255;if(this.$isAlphaPremultiplied){j*=d;for(e=0;3>e;e++)h[e]*=j}8!=this.nBits[3]&&(d=I(0.003921569*d*((1<<this.nBits[3])-1)+0.5),d>
+(1<<this.nBits[3])-1&&(d=(1<<this.nBits[3])-1));c[0]=d<<this.maskOffsets[3]}e=I(h[0]*((1<<this.nBits[0])-1)+0.5);k=I(h[1]*((1<<this.nBits[1])-1)+0.5);g=I(h[2]*((1<<this.nBits[2])-1)+0.5)}23<this.maxBits&&(e>(1<<this.nBits[0])-1&&(e=(1<<this.nBits[0])-1),k>(1<<this.nBits[1])-1&&(k=(1<<this.nBits[1])-1),g>(1<<this.nBits[2])-1&&(g=(1<<this.nBits[2])-1));c[0]|=e<<this.maskOffsets[0]|k<<this.maskOffsets[1]|g<<this.maskOffsets[2];switch(this.transferType){case 0:return d=null==b?S(1,0):b,d[0]=255&c[0],
+d;case 3:return c}throw new UnsupportedOperationException("This method has not been implemented for transferType "+this.transferType);},"~N,~O");d(c$,"getComponents",function(a,b,c){null==b&&(b=w(c+this.numComponents,0));for(var d=0;d<this.numComponents;d++)b[c+d]=(a&this.maskArray[d])>>>this.maskOffsets[d];return b},"~N,~A,~N");d(c$,"getComponents",function(a,b,c){var d=0;switch(this.transferType){case 0:d=a[0]&255;break;case 3:d=a[0];break;default:throw new UnsupportedOperationException("This method has not been implemented for transferType "+
+this.transferType);}return this.getComponents(d,b,c)},"~O,~A,~N");e(c$,"createCompatibleWritableRaster",function(a,b){if(0>=a||0>=b)throw new IllegalArgumentException("Width ("+a+") and height ("+b+") cannot be <= 0");var c;this.supportsAlpha?(c=w(4,0),c[3]=this.alpha_mask):c=w(3,0);c[0]=this.red_mask;c[1]=this.green_mask;c[2]=this.blue_mask;return 8<this.pixel_bits?java.awt.image.Raster.createPackedRaster(3,a,b,c,null):java.awt.image.Raster.createPackedRaster(0,a,b,c,null)},"~N,~N");d(c$,"getDataElement",
+function(a,b){for(var c=0,d=0;d<this.numComponents;d++)c|=a[b+d]<<this.maskOffsets[d]&this.maskArray[d];return c},"~A,~N");d(c$,"getDataElements",function(a,b,c){for(var d=0,e=0;e<this.numComponents;e++)d|=a[b+e]<<this.maskOffsets[e]&this.maskArray[e];switch(this.transferType){case 0:return v(c,Array)?(a=c,a[0]=d&255):a=S(-1,[d&255]),a;case 3:return v(c,Array)?(a=c,a[0]=d):a=w(-1,[d]),a;default:throw new ClassCastException("This method has not been implemented for transferType "+this.transferType);
+}},"~A,~N,~O");e(c$,"toString",function(){return String.instantialize("DirectColorModel: rmask="+Integer.toHexString(this.red_mask)+" gmask="+Integer.toHexString(this.green_mask)+" bmask="+Integer.toHexString(this.blue_mask)+" amask="+Integer.toHexString(this.alpha_mask))})});p("java.awt.image");q(["java.awt.image.ColorModel"],"java.awt.image.PackedColorModel",["java.lang.IllegalArgumentException"],function(){c$=s(function(){this.scaleFactors=this.maskOffsets=this.maskArray=null;r(this,arguments)},
+java.awt.image,"PackedColorModel",java.awt.image.ColorModel);m(c$,function(a,b,c,d,e,k,g){t(this,java.awt.image.PackedColorModel,[b,java.awt.image.PackedColorModel.createBitsArray(c,d),a,0==d?!1:!0,e,k,g]);if(1>b||32<b)throw new IllegalArgumentException("Number of bits must be between 1 and 32.");this.maskArray=w(this.numComponents,0);this.maskOffsets=w(this.numComponents,0);this.scaleFactors=Q(this.numComponents,0);for(b=0;b<this.numColorComponents;b++)this.DecomposeMask(c[b],b,a.getName(b));0!=
+d&&(this.DecomposeMask(d,this.numColorComponents,"alpha"),1==this.nBits[this.numComponents-1]&&(this.transparency=2))},"java.awt.color.ColorSpace,~N,~A,~N,~B,~N,~N");m(c$,function(a,b,c,d,e,k,g,h,j){t(this,java.awt.image.PackedColorModel,[b,java.awt.image.PackedColorModel.createBitsArray(c,d,e,k),a,0==k?!1:!0,g,h,j]);if(5!=a.getType())throw new IllegalArgumentException("ColorSpace must be TYPE_RGB.");this.maskArray=w(this.numComponents,0);this.maskOffsets=w(this.numComponents,0);this.scaleFactors=
+Q(this.numComponents,0);this.DecomposeMask(c,0,"red");this.DecomposeMask(d,1,"green");this.DecomposeMask(e,2,"blue");0!=k&&(this.DecomposeMask(k,3,"alpha"),1==this.nBits[3]&&(this.transparency=2))},"java.awt.color.ColorSpace,~N,~N,~N,~N,~N,~B,~N,~N");d(c$,"getMask",function(a){return this.maskArray[a]},"~N");d(c$,"getMasks",function(){return this.maskArray.clone()});d(c$,"DecomposeMask",function(a,b,c){var d=0,e=this.nBits[b];this.maskArray[b]=a;if(0!=a)for(;0==(a&1);)a>>>=1,d++;if(d+e>this.pixel_bits)throw new IllegalArgumentException(c+
+" mask "+Integer.toHexString(this.maskArray[b])+" overflows pixel (expecting "+this.pixel_bits+" bits");this.maskOffsets[b]=d;this.scaleFactors[b]=0==e?256:255/((1<<e)-1)},"~N,~N,~S");d(c$,"equals",function(a){if(!v(a,java.awt.image.PackedColorModel)||!K(this,java.awt.image.PackedColorModel,"equals",[a]))return!1;var b=a.getNumComponents();if(b!=this.numComponents)return!1;for(var c=0;c<b;c++)if(this.maskArray[c]!=a.getMask(c))return!1;return!0},"~O");c$.createBitsArray=d(c$,"createBitsArray",function(a,
+b){for(var c=a.length,d=w(c+(0==b?0:1),0),e=0;e<c;e++)if(d[e]=java.awt.image.PackedColorModel.countBits(a[e]),0>d[e])throw new IllegalArgumentException("Noncontiguous color mask ("+Integer.toHexString(a[e])+"at index "+e);if(0!=b&&(d[c]=java.awt.image.PackedColorModel.countBits(b),0>d[c]))throw new IllegalArgumentException("Noncontiguous alpha mask ("+Integer.toHexString(b));return d},"~A,~N");c$.createBitsArray=d(c$,"createBitsArray",function(a,b,c,d){var e=w(3+(0==d?0:1),0);e[0]=java.awt.image.PackedColorModel.countBits(a);
+e[1]=java.awt.image.PackedColorModel.countBits(b);e[2]=java.awt.image.PackedColorModel.countBits(c);if(0>e[0])throw new IllegalArgumentException("Noncontiguous red mask ("+Integer.toHexString(a));if(0>e[1])throw new IllegalArgumentException("Noncontiguous green mask ("+Integer.toHexString(b));if(0>e[2])throw new IllegalArgumentException("Noncontiguous blue mask ("+Integer.toHexString(c));if(0!=d&&(e[3]=java.awt.image.PackedColorModel.countBits(d),0>e[3]))throw new IllegalArgumentException("Noncontiguous alpha mask ("+
+Integer.toHexString(d));return e},"~N,~N,~N,~N");c$.countBits=d(c$,"countBits",function(a){var b=0;if(0!=a){for(;0==(a&1);)a>>>=1;for(;1==(a&1);)a>>>=1,b++}return 0!=a?-1:b},"~N")});p("java.awt.image");q(["java.awt.image.MultiPixelPackedSampleModel","$.SinglePixelPackedSampleModel"],"java.awt.image.Raster","java.lang.IllegalArgumentException $.NullPointerException java.awt.Point $.Rectangle java.awt.image.DataBuffer $.DataBufferByte $.DataBufferInt $.RasterFormatException swingjs.api.Interface".split(" "),
+function(){c$=s(function(){this.dataBuffer=this.sampleModel=null;this.numDataElements=this.numBands=this.sampleModelTranslateY=this.sampleModelTranslateX=this.height=this.width=this.minY=this.minX=0;this.parent=null;r(this,arguments)},java.awt.image,"Raster");c$.createPackedRaster=d(c$,"createPackedRaster",function(a,b,c,d,e){switch(a){case 0:a=new java.awt.image.DataBufferByte(b*c);break;case 3:a=new java.awt.image.DataBufferInt(b*c);break;default:throw new IllegalArgumentException("Unsupported data type "+
+a);}return java.awt.image.Raster.createPackedRaster(a,b,c,b,d,e)},"~N,~N,~N,~A,java.awt.Point");c$.createPackedRaster=d(c$,"createPackedRaster",function(a,b,c,d,e,k){if(0>=d)throw new IllegalArgumentException("Number of bands ("+d+") must be greater than 0");if(0>=e)throw new IllegalArgumentException("Bits per band ("+e+") must be greater than 0");if(1!=d){var g=w(d,0),h=(1<<e)-1,j=(d-1)*e;if(j+e>java.awt.image.DataBuffer.getDataTypeSize(a))throw new IllegalArgumentException("bitsPerBand("+e+") * bands is  greater than data type size.");
+switch(a){case 0:case 3:break;default:throw new IllegalArgumentException("Unsupported data type "+a);}for(var n=0;n<d;n++)g[n]=h<<j,j-=e;return java.awt.image.Raster.createPackedRaster(a,b,c,g,k)}switch(a){case 0:a=new java.awt.image.DataBufferByte(F(Math.ceil(b/F(8/e)))*c);break;case 3:a=new java.awt.image.DataBufferInt(F(Math.ceil(b/F(32/e)))*c);break;default:throw new IllegalArgumentException("Unsupported data type "+a);}return java.awt.image.Raster.createPackedRaster(a,b,c,e,k)},"~N,~N,~N,~N,~N,java.awt.Point");
+c$.createPackedRaster=d(c$,"createPackedRaster",function(a,b,c,d,e,k){if(null==a)throw new NullPointerException("DataBuffer cannot be null");null==k&&(k=new java.awt.Point(0,0));var g=a.getDataType();b=new java.awt.image.SinglePixelPackedSampleModel(g,b,c,d,e);switch(g){case 0:case 3:break;default:throw new IllegalArgumentException("Unsupported data type "+g);}g=swingjs.api.Interface.getInstance("jssun.awt.image."+(0==g?"Byte":"Integer")+"InterleavedRaster",!0);g.setParams(b,a,k);return g},"java.awt.image.DataBuffer,~N,~N,~N,~A,java.awt.Point");
+c$.createPackedRaster=d(c$,"createPackedRaster",function(a,b,c,d,e){if(null==a)throw new NullPointerException("DataBuffer cannot be null");null==e&&(e=new java.awt.Point(0,0));var k=a.getDataType();if(0!=k&&3!=k)throw new IllegalArgumentException("Unsupported data type "+k);if(1!=a.getNumBanks())throw new java.awt.image.RasterFormatException("DataBuffer for packed Rasters must only have 1 bank.");b=new java.awt.image.MultiPixelPackedSampleModel(k,b,c,d);return 0==k&&(1==d||2==d||4==d)?new jssun.awt.image.BytePackedRaster(b,
+a,e):new jssun.awt.image.SunWritableRaster(b,a,e)},"java.awt.image.DataBuffer,~N,~N,~N,java.awt.Point");c$.createRaster=d(c$,"createRaster",function(a,b,c){if(null==a||null==b)throw new NullPointerException("SampleModel and DataBuffer cannot be null");null==c&&(c=new java.awt.Point(0,0));var d=a.getDataType();return v(a,java.awt.image.MultiPixelPackedSampleModel)&&0==d&&8>a.getSampleSize(0)?new jssun.awt.image.BytePackedRaster(a,b,c):new java.awt.image.Raster(a,b,c)},"java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");
+c$.createWritableRaster=d(c$,"createWritableRaster",function(a,b){null==b&&(b=new java.awt.Point(0,0));return java.awt.image.Raster.createWritableRaster(a,a.createDataBuffer(),b)},"java.awt.image.SampleModel,java.awt.Point");c$.createWritableRaster=d(c$,"createWritableRaster",function(a,b,c){if(null==a||null==b)throw new NullPointerException("SampleModel and DataBuffer cannot be null");null==c&&(c=new java.awt.Point(0,0));var d=a.getDataType();return v(a,java.awt.image.MultiPixelPackedSampleModel)&&
+0==d&&8>a.getSampleSize(0)?new jssun.awt.image.BytePackedRaster(a,b,c):new jssun.awt.image.SunWritableRaster(a,b,c)},"java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");m(c$,function(a,b){this.setRaster(a,a.createDataBuffer(),new java.awt.Rectangle(b.x,b.y,a.getWidth(),a.getHeight()),b,null)},"java.awt.image.SampleModel,java.awt.Point");m(c$,function(a,b,c){this.setRaster(a,b,new java.awt.Rectangle(c.x,c.y,a.getWidth(),a.getHeight()),c,null)},"java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");
+m(c$,function(){});m(c$,function(a,b,c,d,e){this.setRaster(a,b,c,d,e)},"java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,java.awt.image.Raster");d(c$,"setRaster",function(a,b,c,d,e){if(null==a||null==b||null==c||null==d)throw new NullPointerException("SampleModel, dataBuffer, aRegion and sampleModelTranslate cannot be null");this.sampleModel=a;this.dataBuffer=b;this.minX=c.x;this.minY=c.y;this.width=c.width;this.height=c.height;if(0>=this.width||0>=this.height)throw new java.awt.image.RasterFormatException("negative or zero "+
+(0>=this.width?"width":"height"));if(this.minX+this.width<this.minX)throw new java.awt.image.RasterFormatException("overflow condition for X coordinates of Raster");if(this.minY+this.height<this.minY)throw new java.awt.image.RasterFormatException("overflow condition for Y coordinates of Raster");this.sampleModelTranslateX=d.x;this.sampleModelTranslateY=d.y;this.numBands=a.getNumBands();this.numDataElements=a.getNumDataElements();this.parent=e},"java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,java.awt.image.Raster");
+d(c$,"getParent",function(){return this.parent});d(c$,"getSampleModelTranslateX",function(){return this.sampleModelTranslateX});d(c$,"getSampleModelTranslateY",function(){return this.sampleModelTranslateY});d(c$,"createCompatibleWritableRaster",function(){return new jssun.awt.image.SunWritableRaster(this.sampleModel,new java.awt.Point(0,0))});d(c$,"createCompatibleWritableRaster",function(a,b){if(0>=a||0>=b)throw new java.awt.image.RasterFormatException("negative "+(0>=a?"width":"height"));var c=
+this.sampleModel.createCompatibleSampleModel(a,b);return new jssun.awt.image.SunWritableRaster(c,new java.awt.Point(0,0))},"~N,~N");d(c$,"createCompatibleWritableRaster",function(a){if(null==a)throw new NullPointerException("Rect cannot be null");return this.createCompatibleWritableRaster(a.x,a.y,a.width,a.height)},"java.awt.Rectangle");d(c$,"createCompatibleWritableRaster",function(a,b,c,d){return this.createCompatibleWritableRaster(c,d).createWritableChild(0,0,c,d,a,b,null)},"~N,~N,~N,~N");d(c$,
+"createTranslatedChild",function(a,b){return this.createChild(this.minX,this.minY,this.width,this.height,a,b,null)},"~N,~N");d(c$,"createChild",function(a,b,c,d,e,k,g){if(a<this.minX)throw new java.awt.image.RasterFormatException("parentX lies outside raster");if(b<this.minY)throw new java.awt.image.RasterFormatException("parentY lies outside raster");if(a+c<a||a+c>this.width+this.minX)throw new java.awt.image.RasterFormatException("(parentX + width) is outside raster");if(b+d<b||b+d>this.height+
+this.minY)throw new java.awt.image.RasterFormatException("(parentY + height) is outside raster");g=null==g?this.sampleModel:this.sampleModel.createSubsetSampleModel(g);a=e-a;b=k-b;return new java.awt.image.Raster(g,this.getDataBuffer(),new java.awt.Rectangle(e,k,c,d),new java.awt.Point(this.sampleModelTranslateX+a,this.sampleModelTranslateY+b),this)},"~N,~N,~N,~N,~N,~N,~A");d(c$,"getBounds",function(){return new java.awt.Rectangle(this.minX,this.minY,this.width,this.height)});d(c$,"getMinX",function(){return this.minX});
+d(c$,"getMinY",function(){return this.minY});d(c$,"getWidth",function(){return this.width});d(c$,"getHeight",function(){return this.height});d(c$,"getNumBands",function(){return this.numBands});d(c$,"getNumDataElements",function(){return this.sampleModel.getNumDataElements()});d(c$,"getTransferType",function(){return this.sampleModel.getTransferType()});d(c$,"getDataBuffer",function(){return this.dataBuffer});d(c$,"getSampleModel",function(){return this.sampleModel});d(c$,"getDataElements",function(a,
+b,c){return this.sampleModel.getDataElements(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,this.dataBuffer)},"~N,~N,~O");d(c$,"getDataElements",function(a,b,c,d,e){return this.sampleModel.getDataElements(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,d,e,this.dataBuffer)},"~N,~N,~N,~N,~O");d(c$,"getPixel",function(a,b,c){return this.sampleModel.getPixel(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,this.dataBuffer)},"~N,~N,~A");d(c$,"getPixel",function(a,b,
+c){return this.sampleModel.getPixel(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,this.dataBuffer)},"~N,~N,~A");d(c$,"getPixel",function(a,b,c){return this.sampleModel.getPixel(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,this.dataBuffer)},"~N,~N,~A");d(c$,"getPixels",function(a,b,c,d,e){return this.sampleModel.getPixels(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,d,e,this.dataBuffer)},"~N,~N,~N,~N,~A");d(c$,"getPixels",function(a,b,c,d,e){return this.sampleModel.getPixels(a-
+this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,d,e,this.dataBuffer)},"~N,~N,~N,~N,~A");d(c$,"getPixels",function(a,b,c,d,e){return this.sampleModel.getPixels(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,d,e,this.dataBuffer)},"~N,~N,~N,~N,~A");d(c$,"getSample",function(a,b,c){return this.sampleModel.getSample(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,this.dataBuffer)},"~N,~N,~N");d(c$,"getSampleFloat",function(a,b,c){return this.sampleModel.getSampleFloat(a-
+this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,this.dataBuffer)},"~N,~N,~N");d(c$,"getSampleDouble",function(a,b,c){return this.sampleModel.getSampleDouble(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,this.dataBuffer)},"~N,~N,~N");d(c$,"getSamples",function(a,b,c,d,e,k){return this.sampleModel.getSamples(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,d,e,k,this.dataBuffer)},"~N,~N,~N,~N,~N,~A");d(c$,"getSamples",function(a,b,c,d,e,k){return this.sampleModel.getSamples(a-
+this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,d,e,k,this.dataBuffer)},"~N,~N,~N,~N,~N,~A");d(c$,"getSamples",function(a,b,c,d,e,k){return this.sampleModel.getSamples(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,d,e,k,this.dataBuffer)},"~N,~N,~N,~N,~N,~A")});p("java.awt.image");q(["java.awt.image.SampleModel"],"java.awt.image.MultiPixelPackedSampleModel","java.lang.ArrayIndexOutOfBoundsException $.IllegalArgumentException java.awt.image.DataBuffer $.DataBufferByte $.DataBufferInt $.RasterFormatException".split(" "),
+function(){c$=s(function(){this.scanlineStride=this.dataBitOffset=this.dataElementSize=this.pixelsPerDataElement=this.bitMask=this.pixelBitStride=0;r(this,arguments)},java.awt.image,"MultiPixelPackedSampleModel",java.awt.image.SampleModel);m(c$,function(a,b,c,d){this.construct(a,b,c,d,F((b*d+java.awt.image.DataBuffer.getDataTypeSize(a)-1)/java.awt.image.DataBuffer.getDataTypeSize(a)),0);if(0!=a&&3!=a)throw new IllegalArgumentException("Unsupported data type "+a);},"~N,~N,~N,~N");m(c$,function(a,b,
+c,d,e,k){t(this,java.awt.image.MultiPixelPackedSampleModel,[a,b,c,1]);if(0!=a&&3!=a)throw new IllegalArgumentException("Unsupported data type "+a);this.dataType=a;this.pixelBitStride=d;this.scanlineStride=e;this.dataBitOffset=k;this.dataElementSize=java.awt.image.DataBuffer.getDataTypeSize(a);this.pixelsPerDataElement=F(this.dataElementSize/d);if(this.pixelsPerDataElement*d!=this.dataElementSize)throw new java.awt.image.RasterFormatException("MultiPixelPackedSampleModel does not allow pixels to span data element boundaries");
+this.bitMask=(1<<d)-1},"~N,~N,~N,~N,~N,~N");e(c$,"createCompatibleSampleModel",function(a,b){return new java.awt.image.MultiPixelPackedSampleModel(this.dataType,a,b,this.pixelBitStride)},"~N,~N");e(c$,"createDataBuffer",function(){var a=null,b=this.scanlineStride*this.height;switch(this.dataType){case 0:a=new java.awt.image.DataBufferByte(b+F((this.dataBitOffset+7)/8));break;case 3:a=new java.awt.image.DataBufferInt(b+F((this.dataBitOffset+31)/32))}return a});e(c$,"getNumDataElements",function(){return 1});
+d(c$,"getSampleSize",function(){return w(-1,[this.pixelBitStride])});d(c$,"getSampleSize",function(){return this.pixelBitStride},"~N");d(c$,"getOffset",function(a,b){var c=b*this.scanlineStride;return c+=F((a*this.pixelBitStride+this.dataBitOffset)/this.dataElementSize)},"~N,~N");d(c$,"getBitOffset",function(a){return(a*this.pixelBitStride+this.dataBitOffset)%this.dataElementSize},"~N");d(c$,"getScanlineStride",function(){return this.scanlineStride});d(c$,"getPixelBitStride",function(){return this.pixelBitStride});
+d(c$,"getDataBitOffset",function(){return this.dataBitOffset});e(c$,"getTransferType",function(){return 3});e(c$,"createSubsetSampleModel",function(a){if(null!=a&&1!=a.length)throw new java.awt.image.RasterFormatException("MultiPixelPackedSampleModel has only one band.");return this.createCompatibleSampleModel(this.width,this.height)},"~A");e(c$,"getSample",function(a,b,c,d){if(0>a||0>b||a>=this.width||b>=this.height||0!=c)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");a=this.dataBitOffset+
+a*this.pixelBitStride;return d.getElem(b*this.scanlineStride+F(a/this.dataElementSize))>>this.dataElementSize-(a&this.dataElementSize-1)-this.pixelBitStride&this.bitMask},"~N,~N,~N,java.awt.image.DataBuffer");d(c$,"setSample",function(a,b,c,d,e){if(0>a||0>b||a>=this.width||b>=this.height||0!=c)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");a=this.dataBitOffset+a*this.pixelBitStride;b=b*this.scanlineStride+F(a/this.dataElementSize);a=this.dataElementSize-(a&this.dataElementSize-
+1)-this.pixelBitStride;c=e.getElem(b);c&=~(this.bitMask<<a);c|=(d&this.bitMask)<<a;e.setElem(b,c)},"~N,~N,~N,~N,java.awt.image.DataBuffer");d(c$,"getDataElements",function(a,b,c,d){if(0>a||0>b||a>=this.width||b>=this.height)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");var e=this.getTransferType();a=this.dataBitOffset+a*this.pixelBitStride;var k=this.dataElementSize-(a&this.dataElementSize-1)-this.pixelBitStride,g=0;switch(e){case 0:c=null==c?S(1,0):c;g=d.getElem(b*this.scanlineStride+
+F(a/this.dataElementSize));c[0]=g>>k&this.bitMask;break;case 3:c=null==c?w(1,0):c,g=d.getElem(b*this.scanlineStride+F(a/this.dataElementSize)),c[0]=g>>k&this.bitMask}return c},"~N,~N,~O,java.awt.image.DataBuffer");d(c$,"getPixel",function(a,b,c,d){if(0>a||0>b||a>=this.width||b>=this.height)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");c=null!=c?c:w(this.numBands,0);a=this.dataBitOffset+a*this.pixelBitStride;b=d.getElem(b*this.scanlineStride+F(a/this.dataElementSize));c[0]=
+b>>this.dataElementSize-(a&this.dataElementSize-1)-this.pixelBitStride&this.bitMask;return c},"~N,~N,~A,java.awt.image.DataBuffer");d(c$,"setDataElements",function(a,b,c,d){if(0>a||0>b||a>=this.width||b>=this.height)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");var e=this.getTransferType();a=this.dataBitOffset+a*this.pixelBitStride;b=b*this.scanlineStride+F(a/this.dataElementSize);a=this.dataElementSize-(a&this.dataElementSize-1)-this.pixelBitStride;var k=d.getElem(b),k=k&
+~(this.bitMask<<a);switch(e){case 0:k|=(c[0]&255&this.bitMask)<<a;d.setElem(b,k);break;case 3:k|=(c[0]&this.bitMask)<<a,d.setElem(b,k)}},"~N,~N,~O,java.awt.image.DataBuffer");d(c$,"setPixel",function(a,b,c,d){if(0>a||0>b||a>=this.width||b>=this.height)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");a=this.dataBitOffset+a*this.pixelBitStride;b=b*this.scanlineStride+F(a/this.dataElementSize);a=this.dataElementSize-(a&this.dataElementSize-1)-this.pixelBitStride;var e=d.getElem(b),
+e=e&~(this.bitMask<<a),e=e|(c[0]&this.bitMask)<<a;d.setElem(b,e)},"~N,~N,~A,java.awt.image.DataBuffer");e(c$,"equals",function(a){return null==a||!v(a,java.awt.image.MultiPixelPackedSampleModel)?!1:this.width==a.width&&this.height==a.height&&this.numBands==a.numBands&&this.dataType==a.dataType&&this.pixelBitStride==a.pixelBitStride&&this.bitMask==a.bitMask&&this.pixelsPerDataElement==a.pixelsPerDataElement&&this.dataElementSize==a.dataElementSize&&this.dataBitOffset==a.dataBitOffset&&this.scanlineStride==
+a.scanlineStride},"~O");e(c$,"hashCode",function(){var a=0,a=this.width,a=a<<8^this.height,a=a<<8,a=a^this.numBands,a=a<<8,a=a^this.dataType,a=a<<8,a=a^this.pixelBitStride,a=a<<8,a=a^this.bitMask,a=a<<8,a=a^this.pixelsPerDataElement,a=a<<8,a=a^this.dataElementSize,a=a<<8,a=a^this.dataBitOffset,a=a<<8;return a^=this.scanlineStride})});p("java.awt.image");q(null,"java.awt.image.SampleModel",["java.lang.IllegalArgumentException"],function(){c$=s(function(){this.dataType=this.numBands=this.height=this.width=
+0;r(this,arguments)},java.awt.image,"SampleModel");m(c$,function(a,b,c,d){var e=b*c;if(0>=b||0>=c)throw new IllegalArgumentException("Width ("+b+") and height ("+c+") must be > 0");if(2147483647<=e)throw new IllegalArgumentException("Dimensions (width="+b+" height="+c+") are too large");if(0>a||3<a&&32!=a)throw new IllegalArgumentException("Unsupported dataType: "+a);if(0>=d)throw new IllegalArgumentException("Number of bands must be > 0");this.dataType=a;this.width=b;this.height=c;this.numBands=
+d},"~N,~N,~N,~N");d(c$,"getWidth",function(){return this.width});d(c$,"getHeight",function(){return this.height});d(c$,"getNumBands",function(){return this.numBands});d(c$,"getDataType",function(){return this.dataType});d(c$,"getTransferType",function(){return this.dataType});d(c$,"getPixel",function(a,b,c,d){c=null!=c?c:w(this.numBands,0);for(var e=0;e<this.numBands;e++)c[e]=this.getSample(a,b,e,d);return c},"~N,~N,~A,java.awt.image.DataBuffer");d(c$,"getDataElements",function(a,b,c,d,e,k){var g=
+this.getTransferType(),h=this.getNumDataElements(),j=0,n=null;switch(g){case 0:var m,p;p=null==e?S(h*c*d,0):e;for(e=b;e<b+d;e++)for(g=a;g<a+c;g++){m=n=this.getDataElements(g,e,n,k);for(var q=0;q<h;q++)p[j++]=m[q]}e=p;break;case 2:m=null==e?ga(h*c*d,0):e;for(e=b;e<b+d;e++)for(g=a;g<a+c;g++){p=n=this.getDataElements(g,e,n,k);for(q=0;q<h;q++)m[j++]=p[q]}e=m;break;case 3:m=null==e?w(h*c*d,0):e;for(e=b;e<b+d;e++)for(g=a;g<a+c;g++){p=n=this.getDataElements(g,e,n,k);for(q=0;q<h;q++)m[j++]=p[q]}e=m}return e},
+"~N,~N,~N,~N,~O,java.awt.image.DataBuffer");d(c$,"setDataElements",function(a,b,c,d,e,k){var g=0,h=this.getTransferType(),j=this.getNumDataElements();switch(h){case 0:for(var n=S(j,0),h=b;h<b+d;h++)for(var m=a;m<a+c;m++){for(var p=0;p<j;p++)n[p]=e[g++];this.setDataElements(m,h,n,k)}break;case 3:n=w(j,0);for(h=b;h<b+d;h++)for(m=a;m<a+c;m++){for(p=0;p<j;p++)n[p]=e[g++];this.setDataElements(m,h,n,k)}}},"~N,~N,~N,~N,~O,java.awt.image.DataBuffer");d(c$,"getPixels",function(a,b,c,d,e,k){var g=0;e=null!=
+e?e:w(this.numBands*c*d,0);for(var h=b;h<d+b;h++)for(var j=a;j<c+a;j++)for(var n=0;n<this.numBands;n++)e[g++]=this.getSample(j,h,n,k);return e},"~N,~N,~N,~N,~A,java.awt.image.DataBuffer");d(c$,"getSampleFloat",function(a,b,c,d){return this.getSample(a,b,c,d)},"~N,~N,~N,java.awt.image.DataBuffer");d(c$,"getSampleDouble",function(a,b,c,d){return this.getSample(a,b,c,d)},"~N,~N,~N,java.awt.image.DataBuffer");d(c$,"getSamples",function(a,b,c,d,e,k,g){var h=0;k=null!=k?k:w(c*d,0);for(var j=b;j<d+b;j++)for(var n=
+a;n<c+a;n++)k[h++]=this.getSample(n,j,e,g);return k},"~N,~N,~N,~N,~N,~A,java.awt.image.DataBuffer");d(c$,"setPixel",function(a,b,c,d){for(var e=0;e<this.numBands;e++)this.setSample(a,b,e,c[e],d)},"~N,~N,~A,java.awt.image.DataBuffer");d(c$,"setPixel",function(a,b,c,d){for(var e=0;e<this.numBands;e++)this.setSample(a,b,e,c[e],d)},"~N,~N,~A,java.awt.image.DataBuffer");d(c$,"setPixels",function(a,b,c,d,e,k){for(var g=0,h=b;h<b+d;h++)for(var j=a;j<a+c;j++)for(var n=0;n<this.numBands;n++)this.setSample(j,
+h,n,e[g++],k)},"~N,~N,~N,~N,~A,java.awt.image.DataBuffer");d(c$,"setSamples",function(a,b,c,d,e,k,g){for(var h=0,j=b;j<b+d;j++)for(var n=a;n<a+c;n++)this.setSample(n,j,e,k[h++],g)},"~N,~N,~N,~N,~N,~A,java.awt.image.DataBuffer")});p("java.awt.image");q(null,"java.awt.image.DataBuffer",["java.lang.ArrayIndexOutOfBoundsException","$.IllegalArgumentException","jssun.java2d.StateTrackable","$.StateTrackableDelegate"],function(){c$=s(function(){this.size=this.offset=this.banks=this.dataType=0;this.theTrackable=
+this.offsets=null;r(this,arguments)},java.awt.image,"DataBuffer");c$.getDataTypeSize=d(c$,"getDataTypeSize",function(a){if(0>a||3<a)throw new IllegalArgumentException("Unknown data type "+a);return java.awt.image.DataBuffer.dataTypeSize[a]},"~N");m(c$,function(a,b){this.construct(jssun.java2d.StateTrackable.State.UNTRACKABLE,a,b)},"~N,~N");m(c$,function(a,b,c){this.theTrackable=jssun.java2d.StateTrackableDelegate.createInstance(a);this.dataType=b;this.banks=1;this.size=c;this.offset=0;this.offsets=
+w(1,0)},"jssun.java2d.StateTrackable.State,~N,~N");m(c$,function(a,b,c){this.construct(jssun.java2d.StateTrackable.State.UNTRACKABLE,a,b,c)},"~N,~N,~N");m(c$,function(a,b,c,d){this.theTrackable=jssun.java2d.StateTrackableDelegate.createInstance(a);this.dataType=b;this.banks=d;this.size=c;this.offset=0;this.offsets=w(this.banks,0)},"jssun.java2d.StateTrackable.State,~N,~N,~N");m(c$,function(a,b,c,d){this.construct(jssun.java2d.StateTrackable.State.UNTRACKABLE,a,b,c,d)},"~N,~N,~N,~N");m(c$,function(a,
+b,c,d,e){this.theTrackable=jssun.java2d.StateTrackableDelegate.createInstance(a);this.dataType=b;this.banks=d;this.size=c;this.offset=e;this.offsets=w(d,0);for(a=0;a<d;a++)this.offsets[a]=e},"jssun.java2d.StateTrackable.State,~N,~N,~N,~N");m(c$,function(a,b,c,d){this.construct(jssun.java2d.StateTrackable.State.UNTRACKABLE,a,b,c,d)},"~N,~N,~N,~A");m(c$,function(a,b,c,d,e){if(d!=e.length)throw new ArrayIndexOutOfBoundsException("Number of banks does not match number of bank offsets");this.theTrackable=
+jssun.java2d.StateTrackableDelegate.createInstance(a);this.dataType=b;this.banks=d;this.size=c;this.offset=e[0];this.offsets=e.clone()},"jssun.java2d.StateTrackable.State,~N,~N,~N,~A");d(c$,"getDataType",function(){return this.dataType});d(c$,"getSize",function(){return this.size});d(c$,"getOffset",function(){return this.offset});d(c$,"getOffsets",function(){return this.offsets.clone()});d(c$,"getNumBanks",function(){return this.banks});d(c$,"getElem",function(a){return this.getElem(0,a)},"~N");d(c$,
+"setElem",function(a,b){this.setElem(0,a,b)},"~N,~N");d(c$,"getElemFloat",function(a){return this.getElem(a)},"~N");d(c$,"getElemFloat",function(a,b){return this.getElem(a,b)},"~N,~N");d(c$,"setElemFloat",function(a,b){this.setElem(a,I(b))},"~N,~N");d(c$,"setElemFloat",function(a,b,c){this.setElem(a,b,I(c))},"~N,~N,~N");d(c$,"getElemDouble",function(a){return this.getElem(a)},"~N");d(c$,"getElemDouble",function(a,b){return this.getElem(a,b)},"~N,~N");d(c$,"setElemDouble",function(a,b){this.setElem(a,
+F(b))},"~N,~N");d(c$,"setElemDouble",function(a,b,c){this.setElem(a,b,F(c))},"~N,~N,~N");c$.toIntArray=d(c$,"toIntArray",function(a){if(v(a,Array))return a;if(null!=a){if(v(a,Array)){for(var b=w(a.length,0),c=0;c<a.length;c++)b[c]=a[c]&65535;return b}if(v(a,Array)){b=w(a.length,0);for(c=0;c<a.length;c++)b[c]=255&a[c];return b}}return null},"~O");G(c$,"TYPE_BYTE",0,"TYPE_SHORT",2,"TYPE_INT",3,"TYPE_UNDEFINED",32,"dataTypeSize",w(-1,[8,16,16,32,32,64]))});p("jssun.java2d");q(["java.lang.Enum"],"jssun.java2d.StateTrackable",
+null,function(){M(jssun.java2d,"StateTrackable");A(self.c$);c$=B(jssun.java2d.StateTrackable,"State",Enum);R(c$,"IMMUTABLE",0,[]);R(c$,"STABLE",1,[]);R(c$,"DYNAMIC",2,[]);R(c$,"UNTRACKABLE",3,[]);c$=z()});p("jssun.java2d");q(["jssun.java2d.StateTrackable"],"jssun.java2d.StateTrackableDelegate",["java.lang.IllegalStateException","$.InternalError","jssun.java2d.StateTracker"],function(){c$=s(function(){this.theTracker=this.theState=null;this.numDynamicAgents=0;r(this,arguments)},jssun.java2d,"StateTrackableDelegate",
+null,jssun.java2d.StateTrackable);c$.createInstance=d(c$,"createInstance",function(a){switch(a){case jssun.java2d.StateTrackable.State.UNTRACKABLE:return jssun.java2d.StateTrackableDelegate.UNTRACKABLE_DELEGATE;case jssun.java2d.StateTrackable.State.STABLE:return new jssun.java2d.StateTrackableDelegate(jssun.java2d.StateTrackable.State.STABLE);case jssun.java2d.StateTrackable.State.DYNAMIC:return new jssun.java2d.StateTrackableDelegate(jssun.java2d.StateTrackable.State.DYNAMIC);case jssun.java2d.StateTrackable.State.IMMUTABLE:return jssun.java2d.StateTrackableDelegate.IMMUTABLE_DELEGATE;
+default:throw new InternalError("unknown state");}},"jssun.java2d.StateTrackable.State");m(c$,function(a){this.theState=a},"jssun.java2d.StateTrackable.State");e(c$,"getState",function(){return this.theState});e(c$,"getStateTracker",function(){var a=this.theTracker;if(null==a){switch(this.theState){case jssun.java2d.StateTrackable.State.IMMUTABLE:a=jssun.java2d.StateTracker.ALWAYS_CURRENT;break;case jssun.java2d.StateTrackable.State.STABLE:a=(H("jssun.java2d.StateTrackableDelegate$1")?0:jssun.java2d.StateTrackableDelegate.$StateTrackableDelegate$1$(),
+C(jssun.java2d.StateTrackableDelegate$1,this,null));break;case jssun.java2d.StateTrackable.State.DYNAMIC:case jssun.java2d.StateTrackable.State.UNTRACKABLE:a=jssun.java2d.StateTracker.NEVER_CURRENT}this.theTracker=a}return a});d(c$,"setImmutable",function(){if(this.theState===jssun.java2d.StateTrackable.State.UNTRACKABLE||this.theState===jssun.java2d.StateTrackable.State.DYNAMIC)throw new IllegalStateException("UNTRACKABLE or DYNAMIC objects cannot become IMMUTABLE");this.theState=jssun.java2d.StateTrackable.State.IMMUTABLE;
+this.theTracker=null});d(c$,"setUntrackable",function(){if(this.theState===jssun.java2d.StateTrackable.State.IMMUTABLE)throw new IllegalStateException("IMMUTABLE objects cannot become UNTRACKABLE");this.theState=jssun.java2d.StateTrackable.State.UNTRACKABLE;this.theTracker=null});d(c$,"addDynamicAgent",function(){if(this.theState===jssun.java2d.StateTrackable.State.IMMUTABLE)throw new IllegalStateException("Cannot change state from IMMUTABLE");++this.numDynamicAgents;this.theState===jssun.java2d.StateTrackable.State.STABLE&&
+(this.theState=jssun.java2d.StateTrackable.State.DYNAMIC,this.theTracker=null)});d(c$,"removeDynamicAgent",function(){0==--this.numDynamicAgents&&this.theState===jssun.java2d.StateTrackable.State.DYNAMIC&&(this.theState=jssun.java2d.StateTrackable.State.STABLE,this.theTracker=null)});d(c$,"markDirty",function(){this.theTracker=null});c$.$StateTrackableDelegate$1$=function(){A(self.c$);c$=L(jssun.java2d,"StateTrackableDelegate$1",null,jssun.java2d.StateTracker);e(c$,"isCurrent",function(){return this.b$["jssun.java2d.StateTrackableDelegate"].theTracker===
+this});c$=z()};c$.UNTRACKABLE_DELEGATE=c$.prototype.UNTRACKABLE_DELEGATE=new jssun.java2d.StateTrackableDelegate(jssun.java2d.StateTrackable.State.UNTRACKABLE);c$.IMMUTABLE_DELEGATE=c$.prototype.IMMUTABLE_DELEGATE=new jssun.java2d.StateTrackableDelegate(jssun.java2d.StateTrackable.State.IMMUTABLE)});p("jssun.java2d");c$=M(jssun.java2d,"StateTracker");c$.$StateTracker$1$=function(){A(self.c$);c$=L(jssun.java2d,"StateTracker$1",null,jssun.java2d.StateTracker);e(c$,"isCurrent",function(){return!0});
+c$=z()};c$.$StateTracker$2$=function(){A(self.c$);c$=L(jssun.java2d,"StateTracker$2",null,jssun.java2d.StateTracker);e(c$,"isCurrent",function(){return!1});c$=z()};c$.ALWAYS_CURRENT=c$.prototype.ALWAYS_CURRENT=(H("jssun.java2d.StateTracker$1")?0:jssun.java2d.StateTracker.$StateTracker$1$(),C(jssun.java2d.StateTracker$1,this,null));c$.NEVER_CURRENT=c$.prototype.NEVER_CURRENT=(H("jssun.java2d.StateTracker$2")?0:jssun.java2d.StateTracker.$StateTracker$2$(),C(jssun.java2d.StateTracker$2,this,null));p("java.awt.image");
+q(["java.awt.image.DataBuffer"],"java.awt.image.DataBufferByte",["JU.AU","jssun.java2d.StateTrackable"],function(){c$=s(function(){this.bankdata=this.data=null;r(this,arguments)},java.awt.image,"DataBufferByte",java.awt.image.DataBuffer);m(c$,function(a){t(this,java.awt.image.DataBufferByte,[jssun.java2d.StateTrackable.State.STABLE,0,a]);this.data=S(a,0);this.bankdata=S(1,0);this.bankdata[0]=this.data},"~N");m(c$,function(a,b){t(this,java.awt.image.DataBufferByte,[jssun.java2d.StateTrackable.State.STABLE,
+0,a,b]);this.bankdata=S(b,0);for(var c=0;c<b;c++)this.bankdata[c]=S(a,0);this.data=this.bankdata[0]},"~N,~N");m(c$,function(a,b){t(this,java.awt.image.DataBufferByte,[jssun.java2d.StateTrackable.State.UNTRACKABLE,0,b]);JU.AU.isAI(a)?(this.data=a,this.bankdata=S(1,0),this.bankdata[0]=this.data):(this.banks=a.length,this.bankdata=a.clone(),this.data=this.bankdata[0])},"~A,~N");m(c$,function(a,b,c){t(this,java.awt.image.DataBufferByte,[jssun.java2d.StateTrackable.State.UNTRACKABLE,0,b,1,c]);this.data=
+a;this.bankdata=S(1,0);this.bankdata[0]=this.data},"~A,~N,~N");m(c$,function(a,b,c){t(this,java.awt.image.DataBufferByte,[jssun.java2d.StateTrackable.State.UNTRACKABLE,0,b,a.length,c]);this.bankdata=a.clone();this.data=this.bankdata[0]},"~A,~N,~A");d(c$,"getData",function(){this.theTrackable.setUntrackable();return this.data});d(c$,"getData",function(a){this.theTrackable.setUntrackable();return this.bankdata[a]},"~N");d(c$,"getBankData",function(){this.theTrackable.setUntrackable();return this.bankdata.clone()});
+d(c$,"getElem",function(a){return this.data[a+this.offset]&255},"~N");d(c$,"getElem",function(a,b){return this.bankdata[a][b+this.offsets[a]]&255},"~N,~N");d(c$,"setElem",function(a,b){this.data[a+this.offset]=b;this.theTrackable.markDirty()},"~N,~N");d(c$,"setElem",function(a,b,c){this.bankdata[a][b+this.offsets[a]]=c;this.theTrackable.markDirty()},"~N,~N,~N")});p("java.awt.image");q(["java.awt.image.DataBuffer"],"java.awt.image.DataBufferInt",["JU.AU","jssun.java2d.StateTrackable"],function(){c$=
+s(function(){this.bankdata=this.data=null;r(this,arguments)},java.awt.image,"DataBufferInt",java.awt.image.DataBuffer);m(c$,function(a){t(this,java.awt.image.DataBufferInt,[jssun.java2d.StateTrackable.State.STABLE,3,a]);this.data=w(a,0);this.bankdata=w(1,0);this.bankdata[0]=this.data},"~N");m(c$,function(a,b){t(this,java.awt.image.DataBufferInt,[jssun.java2d.StateTrackable.State.STABLE,3,a,b]);this.bankdata=w(b,0);for(var c=0;c<b;c++)this.bankdata[c]=w(a,0);this.data=this.bankdata[0]},"~N,~N");m(c$,
+function(a,b){t(this,java.awt.image.DataBufferInt,[jssun.java2d.StateTrackable.State.UNTRACKABLE,3,b]);JU.AU.isAI(a)?(this.data=a,this.bankdata=w(1,0),this.bankdata[0]=this.data):(this.banks=a.length,this.bankdata=a.clone(),this.data=this.bankdata[0])},"~A,~N");m(c$,function(a,b,c){t(this,java.awt.image.DataBufferInt,[jssun.java2d.StateTrackable.State.UNTRACKABLE,3,b,1,c]);this.data=a;this.bankdata=w(1,0);this.bankdata[0]=this.data},"~A,~N,~N");m(c$,function(a,b,c){t(this,java.awt.image.DataBufferInt,
+[jssun.java2d.StateTrackable.State.UNTRACKABLE,3,b,a.length,c]);this.bankdata=a.clone();this.data=this.bankdata[0]},"~A,~N,~A");d(c$,"getData",function(){this.theTrackable.setUntrackable();return this.data});d(c$,"getData",function(a){this.theTrackable.setUntrackable();return this.bankdata[a]},"~N");d(c$,"getBankData",function(){this.theTrackable.setUntrackable();return this.bankdata.clone()});d(c$,"getElem",function(a){return this.data[a+this.offset]},"~N");d(c$,"getElem",function(a,b){return this.bankdata[a][b+
+this.offsets[a]]},"~N,~N");d(c$,"setElem",function(a,b){this.data[a+this.offset]=b;this.theTrackable.markDirty()},"~N,~N");d(c$,"setElem",function(a,b,c){this.bankdata[a][b+this.offsets[a]]=c;this.theTrackable.markDirty()},"~N,~N,~N")});p("java.awt.image");q(["java.lang.RuntimeException"],"java.awt.image.RasterFormatException",null,function(){c$=B(java.awt.image,"RasterFormatException",RuntimeException)});p("java.awt.image");q(["java.awt.image.SampleModel"],"java.awt.image.SinglePixelPackedSampleModel",
+"java.lang.ArrayIndexOutOfBoundsException $.IllegalArgumentException java.util.Arrays java.awt.image.DataBufferByte $.DataBufferInt $.RasterFormatException".split(" "),function(){c$=s(function(){this.bitSizes=this.bitOffsets=this.bitMasks=null;this.scanlineStride=this.maxBitSize=0;r(this,arguments)},java.awt.image,"SinglePixelPackedSampleModel",java.awt.image.SampleModel);m(c$,function(a,b,c,d){this.construct(a,b,c,b,d);if(0!=a&&3!=a)throw new IllegalArgumentException("Unsupported data type "+a);
+},"~N,~N,~N,~A");m(c$,function(a,b,c,d,e){t(this,java.awt.image.SinglePixelPackedSampleModel,[a,b,c,e.length]);if(0!=a&&3!=a)throw new IllegalArgumentException("Unsupported data type "+a);this.dataType=a;this.bitMasks=e.clone();this.scanlineStride=d;this.bitOffsets=w(this.numBands,0);this.bitSizes=w(this.numBands,0);for(a=this.maxBitSize=0;a<this.numBands;a++){c=b=0;d=e[a];if(0!=d){for(;0==(d&1);)d>>>=1,b++;for(;1==(d&1);)d>>>=1,c++;if(0!=d)throw new IllegalArgumentException("Mask "+e[a]+" must be contiguous");
+}this.bitOffsets[a]=b;this.bitSizes[a]=c;c>this.maxBitSize&&(this.maxBitSize=c)}},"~N,~N,~N,~N,~A");e(c$,"getNumDataElements",function(){return 1});d(c$,"getBufferSize",function(){return this.scanlineStride*(this.height-1)+this.width});e(c$,"createCompatibleSampleModel",function(a,b){return new java.awt.image.SinglePixelPackedSampleModel(this.dataType,a,b,this.bitMasks)},"~N,~N");e(c$,"createDataBuffer",function(){var a=null,b=this.getBufferSize();switch(this.dataType){case 0:a=new java.awt.image.DataBufferByte(b);
+break;case 3:a=new java.awt.image.DataBufferInt(b)}return a});d(c$,"getSampleSize",function(){for(var a,b=w(this.numBands,0),c=0;c<this.numBands;c++){b[c]=0;for(a=this.bitMasks[c]>>>this.bitOffsets[c];0!=(a&1);)b[c]++,a>>>=1}return b});d(c$,"getSampleSize",function(a){var b=0;for(a=this.bitMasks[a]>>>this.bitOffsets[a];0!=(a&1);)b++,a>>>=1;return b},"~N");d(c$,"getOffset",function(a,b){return b*this.scanlineStride+a},"~N,~N");d(c$,"getBitOffsets",function(){return this.bitOffsets.clone()});d(c$,"getBitMasks",
+function(){return this.bitMasks.clone()});d(c$,"getScanlineStride",function(){return this.scanlineStride});e(c$,"createSubsetSampleModel",function(a){if(a.length>this.numBands)throw new java.awt.image.RasterFormatException("There are only "+this.numBands+" bands");for(var b=w(a.length,0),c=0;c<a.length;c++)b[c]=this.bitMasks[a[c]];return new java.awt.image.SinglePixelPackedSampleModel(this.dataType,this.width,this.height,this.scanlineStride,b)},"~A");d(c$,"getDataElements",function(a,b,c,d){if(0>
+a||0>b||a>=this.width||b>=this.height)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");switch(this.getTransferType()){case 0:c=null==c?S(1,0):c;c[0]=d.getElem(b*this.scanlineStride+a);break;case 3:c=null==c?w(1,0):c,c[0]=d.getElem(b*this.scanlineStride+a)}return c},"~N,~N,~O,java.awt.image.DataBuffer");d(c$,"getPixel",function(a,b,c,d){if(0>a||0>b||a>=this.width||b>=this.height)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");c=null==c?w(this.numBands,0):
+c;a=d.getElem(b*this.scanlineStride+a);for(b=0;b<this.numBands;b++)c[b]=(a&this.bitMasks[b])>>>this.bitOffsets[b];return c},"~N,~N,~A,java.awt.image.DataBuffer");d(c$,"getPixels",function(a,b,c,d,e,k){if(0>a||0>b||a+c>this.width||b+d>this.height)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");e=null!=e?e:w(c*d*this.numBands,0);a=b*this.scanlineStride+a;for(var g=b=0;g<d;g++){for(var h=0;h<c;h++)for(var j=k.getElem(a+h),n=0;n<this.numBands;n++)e[b++]=(j&this.bitMasks[n])>>>this.bitOffsets[n];
+a+=this.scanlineStride}return e},"~N,~N,~N,~N,~A,java.awt.image.DataBuffer");e(c$,"getSample",function(a,b,c,d){if(0>a||0>b||a>=this.width||b>=this.height)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");return(d.getElem(b*this.scanlineStride+a)&this.bitMasks[c])>>>this.bitOffsets[c]},"~N,~N,~N,java.awt.image.DataBuffer");d(c$,"getSamples",function(a,b,c,d,e,k,g){if(0>a||0>b||a+c>this.width||b+d>this.height)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");
+k=null!=k?k:w(c*d,0);a=b*this.scanlineStride+a;for(var h=b=0;h<d;h++){for(var j=0;j<c;j++){var n=g.getElem(a+j);k[b++]=(n&this.bitMasks[e])>>>this.bitOffsets[e]}a+=this.scanlineStride}return k},"~N,~N,~N,~N,~N,~A,java.awt.image.DataBuffer");d(c$,"setDataElements",function(a,b,c,d){if(0>a||0>b||a>=this.width||b>=this.height)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");switch(this.getTransferType()){case 0:d.setElem(b*this.scanlineStride+a,c[0]&255);break;case 3:d.setElem(b*
+this.scanlineStride+a,c[0])}},"~N,~N,~O,java.awt.image.DataBuffer");d(c$,"setPixel",function(a,b,c,d){if(0>a||0>b||a>=this.width||b>=this.height)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");a=b*this.scanlineStride+a;b=d.getElem(a);for(var e=0;e<this.numBands;e++)b&=~this.bitMasks[e],b|=c[e]<<this.bitOffsets[e]&this.bitMasks[e];d.setElem(a,b)},"~N,~N,~A,java.awt.image.DataBuffer");d(c$,"setPixels",function(a,b,c,d,e,k){if(0>a||0>b||a+c>this.width||b+d>this.height)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");
+a=b*this.scanlineStride+a;for(var g=b=0;g<d;g++){for(var h=0;h<c;h++){for(var j=k.getElem(a+h),n=0;n<this.numBands;n++)var j=j&~this.bitMasks[n],m=e[b++],j=j|m<<this.bitOffsets[n]&this.bitMasks[n];k.setElem(a+h,j)}a+=this.scanlineStride}},"~N,~N,~N,~N,~A,java.awt.image.DataBuffer");d(c$,"setSample",function(a,b,c,d,e){if(0>a||0>b||a>=this.width||b>=this.height)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");var k=e.getElem(b*this.scanlineStride+a),k=k&~this.bitMasks[c],k=k|d<<
+this.bitOffsets[c]&this.bitMasks[c];e.setElem(b*this.scanlineStride+a,k)},"~N,~N,~N,~N,java.awt.image.DataBuffer");d(c$,"setSamples",function(a,b,c,d,e,k,g){if(0>a||0>b||a+c>this.width||b+d>this.height)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");a=b*this.scanlineStride+a;for(var h=b=0;h<d;h++){for(var j=0;j<c;j++){var n=g.getElem(a+j),n=n&~this.bitMasks[e],m=k[b++],n=n|m<<this.bitOffsets[e]&this.bitMasks[e];g.setElem(a+j,n)}a+=this.scanlineStride}},"~N,~N,~N,~N,~N,~A,java.awt.image.DataBuffer");
+e(c$,"equals",function(a){return null==a||!v(a,java.awt.image.SinglePixelPackedSampleModel)?!1:this.width==a.width&&this.height==a.height&&this.numBands==a.numBands&&this.dataType==a.dataType&&java.util.Arrays.equals(this.bitMasks,a.bitMasks)&&java.util.Arrays.equals(this.bitOffsets,a.bitOffsets)&&java.util.Arrays.equals(this.bitSizes,a.bitSizes)&&this.maxBitSize==a.maxBitSize&&this.scanlineStride==a.scanlineStride},"~O");e(c$,"hashCode",function(){for(var a=0,a=this.width,a=a<<8^this.height,a=a<<
+8,a=a^this.numBands,a=a<<8,a=a^this.dataType,a=a<<8,b=0;b<this.bitMasks.length;b++)a^=this.bitMasks[b],a<<=8;for(b=0;b<this.bitOffsets.length;b++)a^=this.bitOffsets[b],a<<=8;for(b=0;b<this.bitSizes.length;b++)a^=this.bitSizes[b],a<<=8;a^=this.maxBitSize;a<<=8;return a^=this.scanlineStride})});p("jssun.awt.image");q(["java.awt.image.ImageProducer"],"jssun.awt.image.OffScreenImageSource",["java.util.Hashtable"],function(){c$=s(function(){this.image=null;this.height=this.width=0;this.theConsumer=this.properties=
+null;r(this,arguments)},jssun.awt.image,"OffScreenImageSource",null,java.awt.image.ImageProducer);m(c$,function(a,b){this.image=a;this.properties=null!=b?b:new java.util.Hashtable;this.width=a.getWidth();this.height=a.getHeight()},"java.awt.image.BufferedImage,java.util.Hashtable");m(c$,function(a){this.construct(a,null)},"java.awt.image.BufferedImage");e(c$,"addConsumer",function(a){this.theConsumer=a;this.produce()},"java.awt.image.ImageConsumer");e(c$,"isConsumer",function(a){return a===this.theConsumer},
+"java.awt.image.ImageConsumer");e(c$,"removeConsumer",function(a){this.theConsumer===a&&(this.theConsumer=null)},"java.awt.image.ImageConsumer");e(c$,"startProduction",function(a){this.addConsumer(a)},"java.awt.image.ImageConsumer");e(c$,"requestTopDownLeftRightResend",function(){},"java.awt.image.ImageConsumer");d(c$,"sendPixels",function(){this.image.getColorModel()});d(c$,"produce",function(){try{this.theConsumer.setDimensions(this.image.getWidth(),this.image.getHeight()),this.theConsumer.setProperties(this.properties),
+this.sendPixels(),this.theConsumer.imageComplete(2)}catch(a){if(y(a,NullPointerException))null!=this.theConsumer&&this.theConsumer.imageComplete(1);else throw a;}})});p("java.awt.image");q(["java.awt.image.Raster"],"java.awt.image.WritableRaster",["java.lang.ArrayIndexOutOfBoundsException","java.awt.Point","$.Rectangle","java.awt.image.RasterFormatException"],function(){c$=B(java.awt.image,"WritableRaster",java.awt.image.Raster);d(c$,"setParams",function(){},"java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");
+m(c$,function(){t(this,java.awt.image.WritableRaster,[])});m(c$,function(a,b){t(this,java.awt.image.WritableRaster,[]);this.setRaster(a,a.createDataBuffer(),new java.awt.Rectangle(b.x,b.y,a.getWidth(),a.getHeight()),b,null)},"java.awt.image.SampleModel,java.awt.Point");m(c$,function(a,b,c){t(this,java.awt.image.WritableRaster,[]);this.setRaster(a,b,new java.awt.Rectangle(c.x,c.y,a.getWidth(),a.getHeight()),c,null)},"java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");m(c$,function(a,
+b,c,d,e){t(this,java.awt.image.WritableRaster,[]);this.setRaster(a,b,c,d,e)},"java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,java.awt.image.Raster");d(c$,"getWritableParent",function(){return this.parent});d(c$,"createWritableTranslatedChild",function(a,b){return this.createWritableChild(this.minX,this.minY,this.width,this.height,a,b,null)},"~N,~N");d(c$,"createWritableChild",function(a,b,c,d,e,k,g){if(a<this.minX)throw new java.awt.image.RasterFormatException("parentX lies outside raster");
+if(b<this.minY)throw new java.awt.image.RasterFormatException("parentY lies outside raster");if(a+c<a||a+c>this.width+this.minX)throw new java.awt.image.RasterFormatException("(parentX + width) is outside raster");if(b+d<b||b+d>this.height+this.minY)throw new java.awt.image.RasterFormatException("(parentY + height) is outside raster");g=null!=g?this.sampleModel.createSubsetSampleModel(g):this.sampleModel;a=e-a;b=k-b;return new java.awt.image.WritableRaster(g,this.getDataBuffer(),new java.awt.Rectangle(e,
+k,c,d),new java.awt.Point(this.sampleModelTranslateX+a,this.sampleModelTranslateY+b),this)},"~N,~N,~N,~N,~N,~N,~A");d(c$,"setDataElements",function(a,b,c){v(c,java.awt.image.Raster)?this.setDataElementsRaster(a,b,c):this.sampleModel.setDataElements(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,this.dataBuffer)},"~N,~N,~O");d(c$,"setDataElementsRaster",function(a,b,c){a+=c.getMinX();b+=c.getMinY();var d=c.getWidth(),e=c.getHeight();if(a<this.minX||b<this.minY||a+d>this.minX+this.width||
+b+e>this.minY+this.height)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");for(var k=c.getMinX(),g=c.getMinY(),h=null,j=0;j<e;j++)h=c.getDataElements(k,g+j,d,1,h),this.setDataElements(a,b+j,d,1,h)},"~N,~N,java.awt.image.Raster");d(c$,"setDataElements",function(a,b,c,d,e){this.sampleModel.setDataElements(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,d,e,this.dataBuffer)},"~N,~N,~N,~N,~O");d(c$,"setRect",function(a){this.setRect(0,0,a)},"java.awt.image.Raster");d(c$,
+"setRect",function(a,b,c){var d=c.getWidth(),e=c.getHeight(),k=c.getMinX(),g=c.getMinY();a+=k;b+=g;a<this.minX&&(a=this.minX-a,d-=a,k+=a,a=this.minX);b<this.minY&&(b=this.minY-b,e-=b,g+=b,b=this.minY);a+d>this.minX+this.width&&(d=this.minX+this.width-a);b+e>this.minY+this.height&&(e=this.minY+this.height-b);if(!(0>=d||0>=e))switch(c.getSampleModel().getDataType()){case 0:case 3:for(var h=null,j=0;j<e;j++)h=c.getPixels(k,g+j,d,1,h),this.setPixels(a,b+j,d,1,h)}},"~N,~N,java.awt.image.Raster");d(c$,
+"setPixel",function(a,b,c){this.sampleModel.setPixel(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,this.dataBuffer)},"~N,~N,~A");d(c$,"setPixel",function(a,b,c){this.sampleModel.setPixel(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,this.dataBuffer)},"~N,~N,~A");d(c$,"setPixel",function(a,b,c){this.sampleModel.setPixel(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,this.dataBuffer)},"~N,~N,~A");d(c$,"setPixels",function(a,b,c,d,e){this.sampleModel.setPixels(a-
+this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,d,e,this.dataBuffer)},"~N,~N,~N,~N,~A");d(c$,"setPixels",function(a,b,c,d,e){this.sampleModel.setPixels(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,d,e,this.dataBuffer)},"~N,~N,~N,~N,~A");d(c$,"setPixels",function(a,b,c,d,e){this.sampleModel.setPixels(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,d,e,this.dataBuffer)},"~N,~N,~N,~N,~A");d(c$,"setSample",function(a,b,c,d){this.sampleModel.setSample(a-this.sampleModelTranslateX,
+b-this.sampleModelTranslateY,c,d,this.dataBuffer)},"~N,~N,~N,~N");d(c$,"setSample",function(a,b,c,d){this.sampleModel.setSample(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,d,this.dataBuffer)},"~N,~N,~N,~N");d(c$,"setSample",function(a,b,c,d){this.sampleModel.setSample(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,d,this.dataBuffer)},"~N,~N,~N,~N");d(c$,"setSamples",function(a,b,c,d,e,k){this.sampleModel.setSamples(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,
+c,d,e,k,this.dataBuffer)},"~N,~N,~N,~N,~N,~A");d(c$,"setSamples",function(a,b,c,d,e,k){this.sampleModel.setSamples(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,d,e,k,this.dataBuffer)},"~N,~N,~N,~N,~N,~A");d(c$,"setSamples",function(a,b,c,d,e,k){this.sampleModel.setSamples(a-this.sampleModelTranslateX,b-this.sampleModelTranslateY,c,d,e,k,this.dataBuffer)},"~N,~N,~N,~N,~N,~A")});p("jssun.java2d.loops");q(null,"jssun.java2d.loops.CompositeType",["java.lang.InternalError"],function(){c$=
+s(function(){this.uniqueID=0;this.next=this.desc=null;r(this,arguments)},jssun.java2d.loops,"CompositeType");d(c$,"deriveSubType",function(a){return new jssun.java2d.loops.CompositeType(this,a)},"~S");c$.forAlphaComposite=d(c$,"forAlphaComposite",function(a){switch(a.getRule()){case 1:return jssun.java2d.loops.CompositeType.Clear;case 2:return 1<=a.getAlpha()?jssun.java2d.loops.CompositeType.SrcNoEa:jssun.java2d.loops.CompositeType.Src;case 9:return jssun.java2d.loops.CompositeType.Dst;case 3:return 1<=
+a.getAlpha()?jssun.java2d.loops.CompositeType.SrcOverNoEa:jssun.java2d.loops.CompositeType.SrcOver;case 4:return jssun.java2d.loops.CompositeType.DstOver;case 5:return jssun.java2d.loops.CompositeType.SrcIn;case 6:return jssun.java2d.loops.CompositeType.DstIn;case 7:return jssun.java2d.loops.CompositeType.SrcOut;case 8:return jssun.java2d.loops.CompositeType.DstOut;case 10:return jssun.java2d.loops.CompositeType.SrcAtop;case 11:return jssun.java2d.loops.CompositeType.DstAtop;case 12:return jssun.java2d.loops.CompositeType.AlphaXor;
+default:throw new InternalError("Unrecognized alpha rule");}},"java.awt.AlphaComposite");m(c$,function(a,b){this.next=a;this.desc=b;this.uniqueID=jssun.java2d.loops.CompositeType.makeUniqueID()},"jssun.java2d.loops.CompositeType,~S");c$.makeUniqueID=d(c$,"makeUniqueID",function(){if(255<jssun.java2d.loops.CompositeType.unusedUID)throw new InternalError("composite type id overflow");return jssun.java2d.loops.CompositeType.unusedUID++});d(c$,"getUniqueID",function(){return this.uniqueID});d(c$,"getDescriptor",
+function(){return this.desc});d(c$,"getSuperType",function(){return this.next});e(c$,"hashCode",function(){return this.desc.hashCode()});d(c$,"isDerivedFrom",function(a){var b=this;do{if(b.desc===a.desc)return!0;b=b.next}while(null!=b);return!1},"jssun.java2d.loops.CompositeType");e(c$,"equals",function(a){return v(a,jssun.java2d.loops.CompositeType)?a.uniqueID==this.uniqueID:!1},"~O");e(c$,"toString",function(){return this.desc});G(c$,"DESC_ANY","Any CompositeContext","DESC_XOR","XOR mode","DESC_CLEAR",
+"Porter-Duff Clear","DESC_SRC","Porter-Duff Src","DESC_DST","Porter-Duff Dst","DESC_SRC_OVER","Porter-Duff Src Over Dst","DESC_DST_OVER","Porter-Duff Dst Over Src","DESC_SRC_IN","Porter-Duff Src In Dst","DESC_DST_IN","Porter-Duff Dst In Src","DESC_SRC_OUT","Porter-Duff Src HeldOutBy Dst","DESC_DST_OUT","Porter-Duff Dst HeldOutBy Src","DESC_SRC_ATOP","Porter-Duff Src Atop Dst","DESC_DST_ATOP","Porter-Duff Dst Atop Src","DESC_ALPHA_XOR","Porter-Duff Xor","DESC_SRC_NO_EA","Porter-Duff Src, No Extra Alpha",
+"DESC_SRC_OVER_NO_EA","Porter-Duff SrcOverDst, No Extra Alpha","DESC_ANY_ALPHA","Any AlphaComposite Rule");c$.Any=c$.prototype.Any=new jssun.java2d.loops.CompositeType(null,"Any CompositeContext");c$.General=c$.prototype.General=jssun.java2d.loops.CompositeType.Any;c$.AnyAlpha=c$.prototype.AnyAlpha=jssun.java2d.loops.CompositeType.General.deriveSubType("Any AlphaComposite Rule");c$.Xor=c$.prototype.Xor=jssun.java2d.loops.CompositeType.General.deriveSubType("XOR mode");c$.Clear=c$.prototype.Clear=
+jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType("Porter-Duff Clear");c$.Src=c$.prototype.Src=jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType("Porter-Duff Src");c$.Dst=c$.prototype.Dst=jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType("Porter-Duff Dst");c$.SrcOver=c$.prototype.SrcOver=jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType("Porter-Duff Src Over Dst");c$.DstOver=c$.prototype.DstOver=jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType("Porter-Duff Dst Over Src");
+c$.SrcIn=c$.prototype.SrcIn=jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType("Porter-Duff Src In Dst");c$.DstIn=c$.prototype.DstIn=jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType("Porter-Duff Dst In Src");c$.SrcOut=c$.prototype.SrcOut=jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType("Porter-Duff Src HeldOutBy Dst");c$.DstOut=c$.prototype.DstOut=jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType("Porter-Duff Dst HeldOutBy Src");c$.SrcAtop=c$.prototype.SrcAtop=jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType("Porter-Duff Src Atop Dst");
+c$.DstAtop=c$.prototype.DstAtop=jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType("Porter-Duff Dst Atop Src");c$.AlphaXor=c$.prototype.AlphaXor=jssun.java2d.loops.CompositeType.AnyAlpha.deriveSubType("Porter-Duff Xor");c$.SrcNoEa=c$.prototype.SrcNoEa=jssun.java2d.loops.CompositeType.Src.deriveSubType("Porter-Duff Src, No Extra Alpha");c$.SrcOverNoEa=c$.prototype.SrcOverNoEa=jssun.java2d.loops.CompositeType.SrcOver.deriveSubType("Porter-Duff SrcOverDst, No Extra Alpha");G(c$,"unusedUID",1)});
+p("awt2swing");q(["javax.swing.JScrollPane"],"awt2swing.ScrollPane",null,function(){c$=B(awt2swing,"ScrollPane",javax.swing.JScrollPane)});p("javax.swing");q(["javax.swing.JComponent","$.JScrollBar","$.ScrollPaneConstants","javax.swing.plaf.UIResource"],"javax.swing.JScrollPane","java.lang.Boolean $.ClassCastException $.IllegalArgumentException java.awt.Point $.Rectangle javax.swing.JViewport $.ScrollPaneLayout $.Scrollable $.SwingUtilities $.UIManager".split(" "),function(){c$=s(function(){this.viewportBorder=
+null;this.verticalScrollBarPolicy=20;this.horizontalScrollBarPolicy=30;this.upperRight=this.upperLeft=this.lowerRight=this.lowerLeft=this.columnHeader=this.rowHeader=this.horizontalScrollBar=this.verticalScrollBar=this.viewport=null;this.wheelScrollState=!0;H("javax.swing.JScrollPane.ScrollBar")||javax.swing.JScrollPane.$JScrollPane$ScrollBar$();r(this,arguments)},javax.swing,"JScrollPane",javax.swing.JComponent,javax.swing.ScrollPaneConstants);m(c$,function(a,b,c){t(this,javax.swing.JScrollPane,
+[]);this.setLayout(new javax.swing.ScrollPaneLayout.UIResource);this.setVerticalScrollBarPolicy(b);this.setHorizontalScrollBarPolicy(c);this.setViewport(this.createViewport());this.setVerticalScrollBar(this.createVerticalScrollBar());this.setHorizontalScrollBar(this.createHorizontalScrollBar());null!=a&&this.setViewportView(a);this.setUIProperty("opaque",new Boolean(!0));this.updateUI();this.getComponentOrientation().isLeftToRight()||this.viewport.setViewPosition(new java.awt.Point(2147483647,0))},
+"java.awt.Component,~N,~N");m(c$,function(a){this.construct(a,20,30)},"java.awt.Component");m(c$,function(a,b){this.construct(null,a,b)},"~N,~N");m(c$,function(){this.construct(null,20,30)});e(c$,"getUI",function(){return this.ui});e(c$,"updateUI",function(){this.setUI(javax.swing.UIManager.getUI(this))});e(c$,"getUIClassID",function(){return"ScrollPaneUI"});d(c$,"setLayout",function(a){if(v(a,javax.swing.ScrollPaneLayout))K(this,javax.swing.JScrollPane,"setLayout",[a]),a.syncWithScrollPane(this);
+else if(null==a)K(this,javax.swing.JScrollPane,"setLayout",[a]);else throw new ClassCastException("layout of JScrollPane must be a ScrollPaneLayout");},"java.awt.LayoutManager");e(c$,"isValidateRoot",function(){return!0});d(c$,"getVerticalScrollBarPolicy",function(){return this.verticalScrollBarPolicy});d(c$,"setVerticalScrollBarPolicy",function(a){switch(a){case 20:case 21:case 22:break;default:throw new IllegalArgumentException("invalid verticalScrollBarPolicy");}var b=this.verticalScrollBarPolicy;
+this.verticalScrollBarPolicy=a;this.firePropertyChangeInt("verticalScrollBarPolicy",b,a);this.revalidate();this.repaint()},"~N");d(c$,"getHorizontalScrollBarPolicy",function(){return this.horizontalScrollBarPolicy});d(c$,"setHorizontalScrollBarPolicy",function(a){switch(a){case 30:case 31:case 32:break;default:throw new IllegalArgumentException("invalid horizontalScrollBarPolicy");}var b=this.horizontalScrollBarPolicy;this.horizontalScrollBarPolicy=a;this.firePropertyChangeInt("horizontalScrollBarPolicy",
+b,a);this.revalidate();this.repaint()},"~N");d(c$,"getViewportBorder",function(){return this.viewportBorder});d(c$,"setViewportBorder",function(a){var b=this.viewportBorder;this.viewportBorder=a;this.firePropertyChangeObject("viewportBorder",b,a)},"javax.swing.border.Border");d(c$,"getViewportBorderBounds",function(){var a=new java.awt.Rectangle(this.getSize()),b=this.getInsets();a.x=b.left;a.y=b.top;a.width-=b.left+b.right;a.height-=b.top+b.bottom;var b=javax.swing.SwingUtilities.isLeftToRight(this),
+c=this.getColumnHeader();null!=c&&c.isVisible()&&(c=c.getHeight(),a.y+=c,a.height-=c);c=this.getRowHeader();null!=c&&c.isVisible()&&(c=c.getWidth(),b&&(a.x+=c),a.width-=c);c=this.getVerticalScrollBar();null!=c&&c.isVisible()&&(c=c.getWidth(),b||(a.x+=c),a.width-=c);b=this.getHorizontalScrollBar();null!=b&&b.isVisible()&&(a.height-=b.getHeight());return a});d(c$,"createHorizontalScrollBar",function(){return C(javax.swing.JScrollPane.ScrollBar,this,null,0)});d(c$,"getHorizontalScrollBar",function(){return this.horizontalScrollBar});
+d(c$,"setHorizontalScrollBar",function(a){var b=this.getHorizontalScrollBar();this.horizontalScrollBar=a;null!=a?this.add(a,"HORIZONTAL_SCROLLBAR"):null!=b&&this.remove(b);this.firePropertyChangeObject("horizontalScrollBar",b,a);this.revalidate();this.repaint()},"javax.swing.JScrollBar");d(c$,"createVerticalScrollBar",function(){return C(javax.swing.JScrollPane.ScrollBar,this,null,1)});d(c$,"getVerticalScrollBar",function(){return this.verticalScrollBar});d(c$,"setVerticalScrollBar",function(a){var b=
+this.getVerticalScrollBar();this.verticalScrollBar=a;this.add(a,"VERTICAL_SCROLLBAR");this.firePropertyChangeObject("verticalScrollBar",b,a);this.revalidate();this.repaint()},"javax.swing.JScrollBar");d(c$,"createViewport",function(){return new javax.swing.JViewport});d(c$,"getViewport",function(){return this.viewport});d(c$,"setViewport",function(a){var b=this.getViewport();this.viewport=a;null!=a?this.add(a,"VIEWPORT"):null!=b&&this.remove(b);this.firePropertyChangeObject("viewport",b,a);this.revalidate();
+this.repaint()},"javax.swing.JViewport");d(c$,"setViewportView",function(a){null==this.getViewport()&&this.setViewport(this.createViewport());this.getViewport().setView(a)},"java.awt.Component");d(c$,"getRowHeader",function(){return this.rowHeader});d(c$,"setRowHeader",function(a){var b=this.getRowHeader();this.rowHeader=a;null!=a?this.add(a,"ROW_HEADER"):null!=b&&this.remove(b);this.firePropertyChangeObject("rowHeader",b,a);this.revalidate();this.repaint()},"javax.swing.JViewport");d(c$,"setRowHeaderView",
+function(a){null==this.getRowHeader()&&this.setRowHeader(this.createViewport());this.getRowHeader().setView(a)},"java.awt.Component");d(c$,"getColumnHeader",function(){return this.columnHeader});d(c$,"setColumnHeader",function(a){var b=this.getColumnHeader();this.columnHeader=a;null!=a?this.add(a,"COLUMN_HEADER"):null!=b&&this.remove(b);this.firePropertyChangeObject("columnHeader",b,a);this.revalidate();this.repaint()},"javax.swing.JViewport");d(c$,"setColumnHeaderView",function(a){null==this.getColumnHeader()&&
+this.setColumnHeader(this.createViewport());this.getColumnHeader().setView(a)},"java.awt.Component");d(c$,"getCorner",function(a){var b=this.getComponentOrientation().isLeftToRight();a.equals("LOWER_LEADING_CORNER")?a=b?"LOWER_LEFT_CORNER":"LOWER_RIGHT_CORNER":a.equals("LOWER_TRAILING_CORNER")?a=b?"LOWER_RIGHT_CORNER":"LOWER_LEFT_CORNER":a.equals("UPPER_LEADING_CORNER")?a=b?"UPPER_LEFT_CORNER":"UPPER_RIGHT_CORNER":a.equals("UPPER_TRAILING_CORNER")&&(a=b?"UPPER_RIGHT_CORNER":"UPPER_LEFT_CORNER");return a.equals("LOWER_LEFT_CORNER")?
+this.lowerLeft:a.equals("LOWER_RIGHT_CORNER")?this.lowerRight:a.equals("UPPER_LEFT_CORNER")?this.upperLeft:a.equals("UPPER_RIGHT_CORNER")?this.upperRight:null},"~S");d(c$,"setCorner",function(a,b){var c;c=this.getComponentOrientation().isLeftToRight();a.equals("LOWER_LEADING_CORNER")?a=c?"LOWER_LEFT_CORNER":"LOWER_RIGHT_CORNER":a.equals("LOWER_TRAILING_CORNER")?a=c?"LOWER_RIGHT_CORNER":"LOWER_LEFT_CORNER":a.equals("UPPER_LEADING_CORNER")?a=c?"UPPER_LEFT_CORNER":"UPPER_RIGHT_CORNER":a.equals("UPPER_TRAILING_CORNER")&&
+(a=c?"UPPER_RIGHT_CORNER":"UPPER_LEFT_CORNER");if(a.equals("LOWER_LEFT_CORNER"))c=this.lowerLeft,this.lowerLeft=b;else if(a.equals("LOWER_RIGHT_CORNER"))c=this.lowerRight,this.lowerRight=b;else if(a.equals("UPPER_LEFT_CORNER"))c=this.upperLeft,this.upperLeft=b;else if(a.equals("UPPER_RIGHT_CORNER"))c=this.upperRight,this.upperRight=b;else throw new IllegalArgumentException("invalid corner key");null!=c&&this.remove(c);null!=b&&this.add(b,a);this.firePropertyChangeObject(a,c,b);this.revalidate();this.repaint()},
+"~S,java.awt.Component");d(c$,"setComponentOrientation",function(a){K(this,javax.swing.JScrollPane,"setComponentOrientation",[a]);null!=this.verticalScrollBar&&this.verticalScrollBar.setComponentOrientation(a);null!=this.horizontalScrollBar&&this.horizontalScrollBar.setComponentOrientation(a)},"java.awt.ComponentOrientation");d(c$,"isWheelScrollingEnabled",function(){return this.wheelScrollState});d(c$,"setWheelScrollingEnabled",function(a){var b=this.wheelScrollState;this.wheelScrollState=a;this.firePropertyChangeBool("wheelScrollingEnabled",
+b,a)},"~B");d(c$,"paramString",function(){var a=null!=this.viewportBorder?this.viewportBorder.toString():"",b=null!=this.viewport?this.viewport.toString():"",c;c=20==this.verticalScrollBarPolicy?"VERTICAL_SCROLLBAR_AS_NEEDED":21==this.verticalScrollBarPolicy?"VERTICAL_SCROLLBAR_NEVER":22==this.verticalScrollBarPolicy?"VERTICAL_SCROLLBAR_ALWAYS":"";var d;d=30==this.horizontalScrollBarPolicy?"HORIZONTAL_SCROLLBAR_AS_NEEDED":31==this.horizontalScrollBarPolicy?"HORIZONTAL_SCROLLBAR_NEVER":32==this.horizontalScrollBarPolicy?
+"HORIZONTAL_SCROLLBAR_ALWAYS":"";var e=null!=this.horizontalScrollBar?this.horizontalScrollBar.toString():"",k=null!=this.verticalScrollBar?this.verticalScrollBar.toString():"",g=null!=this.columnHeader?this.columnHeader.toString():"",h=null!=this.rowHeader?this.rowHeader.toString():"",j=null!=this.lowerLeft?this.lowerLeft.toString():"",n=null!=this.lowerRight?this.lowerRight.toString():"",m=null!=this.upperLeft?this.upperLeft.toString():"",p=null!=this.upperRight?this.upperRight.toString():"";return K(this,
+javax.swing.JScrollPane,"paramString",[])+",columnHeader="+g+",horizontalScrollBar="+e+",horizontalScrollBarPolicy="+d+",lowerLeft="+j+",lowerRight="+n+",rowHeader="+h+",upperLeft="+m+",upperRight="+p+",verticalScrollBar="+k+",verticalScrollBarPolicy="+c+",viewport="+b+",viewportBorder="+a});c$.$JScrollPane$ScrollBar$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.blockIncrementSet=this.unitIncrementSet=!1;r(this,arguments)},javax.swing.JScrollPane,"ScrollBar",javax.swing.JScrollBar,
+javax.swing.plaf.UIResource);m(c$,function(a){t(this,javax.swing.JScrollPane.ScrollBar,[a]);this.putClientProperty("JScrollBar.fastWheelScrolling",Boolean.TRUE)},"~N");d(c$,"setUnitIncrement",function(a){this.unitIncrementSet=!0;this.putClientProperty("JScrollBar.fastWheelScrolling",null);K(this,javax.swing.JScrollPane.ScrollBar,"setUnitIncrement",[a])},"~N");d(c$,"getUnitIncrement",function(a){var b=this.b$["javax.swing.JScrollPane"].getViewport();if(!this.unitIncrementSet&&null!=b&&v(b.getView(),
+javax.swing.Scrollable)){var c=b.getView(),b=b.getViewRect();return c.getScrollableUnitIncrement(b,this.getOrientation(),a)}return K(this,javax.swing.JScrollPane.ScrollBar,"getUnitIncrement",[a])},"~N");d(c$,"setBlockIncrement",function(a){this.blockIncrementSet=!0;this.putClientProperty("JScrollBar.fastWheelScrolling",null);K(this,javax.swing.JScrollPane.ScrollBar,"setBlockIncrement",[a])},"~N");d(c$,"getBlockIncrement",function(a){var b=this.b$["javax.swing.JScrollPane"].getViewport();if(this.blockIncrementSet||
+null==b)return K(this,javax.swing.JScrollPane.ScrollBar,"getBlockIncrement",[a]);if(v(b.getView(),javax.swing.Scrollable)){var c=b.getView(),b=b.getViewRect();return c.getScrollableBlockIncrement(b,this.getOrientation(),a)}return 1==this.getOrientation()?b.getExtentSize().height:b.getExtentSize().width},"~N");c$=z()};G(c$,"$uiClassID","ScrollPaneUI")});p("javax.swing");c$=M(javax.swing,"ScrollPaneConstants");G(c$,"VIEWPORT","VIEWPORT","VERTICAL_SCROLLBAR","VERTICAL_SCROLLBAR","HORIZONTAL_SCROLLBAR",
+"HORIZONTAL_SCROLLBAR","ROW_HEADER","ROW_HEADER","COLUMN_HEADER","COLUMN_HEADER","LOWER_LEFT_CORNER","LOWER_LEFT_CORNER","LOWER_RIGHT_CORNER","LOWER_RIGHT_CORNER","UPPER_LEFT_CORNER","UPPER_LEFT_CORNER","UPPER_RIGHT_CORNER","UPPER_RIGHT_CORNER","LOWER_LEADING_CORNER","LOWER_LEADING_CORNER","LOWER_TRAILING_CORNER","LOWER_TRAILING_CORNER","UPPER_LEADING_CORNER","UPPER_LEADING_CORNER","UPPER_TRAILING_CORNER","UPPER_TRAILING_CORNER","VERTICAL_SCROLLBAR_POLICY","VERTICAL_SCROLLBAR_POLICY","HORIZONTAL_SCROLLBAR_POLICY",
+"HORIZONTAL_SCROLLBAR_POLICY","VERTICAL_SCROLLBAR_AS_NEEDED",20,"VERTICAL_SCROLLBAR_NEVER",21,"VERTICAL_SCROLLBAR_ALWAYS",22,"HORIZONTAL_SCROLLBAR_AS_NEEDED",30,"HORIZONTAL_SCROLLBAR_NEVER",31,"HORIZONTAL_SCROLLBAR_ALWAYS",32);p("javax.swing");q(["java.awt.LayoutManager","javax.swing.ScrollPaneConstants","javax.swing.plaf.UIResource"],"javax.swing.ScrollPaneLayout","java.lang.IllegalArgumentException java.awt.Dimension $.Insets $.Rectangle javax.swing.Scrollable $.SwingUtilities $.UIManager".split(" "),
+function(){c$=s(function(){this.upperRight=this.upperLeft=this.lowerRight=this.lowerLeft=this.colHead=this.rowHead=this.hsb=this.vsb=this.viewport=null;this.vsbPolicy=20;this.hsbPolicy=30;r(this,arguments)},javax.swing,"ScrollPaneLayout",null,[java.awt.LayoutManager,javax.swing.ScrollPaneConstants]);d(c$,"syncWithScrollPane",function(a){this.viewport=a.getViewport();this.vsb=a.getVerticalScrollBar();this.hsb=a.getHorizontalScrollBar();this.rowHead=a.getRowHeader();this.colHead=a.getColumnHeader();
+this.lowerLeft=a.getCorner("LOWER_LEFT_CORNER");this.lowerRight=a.getCorner("LOWER_RIGHT_CORNER");this.upperLeft=a.getCorner("UPPER_LEFT_CORNER");this.upperRight=a.getCorner("UPPER_RIGHT_CORNER");this.vsbPolicy=a.getVerticalScrollBarPolicy();this.hsbPolicy=a.getHorizontalScrollBarPolicy()},"javax.swing.JScrollPane");d(c$,"addSingletonComponent",function(a,b){null!=a&&a!==b&&a.getParent().remove(a);return b},"java.awt.Component,java.awt.Component");e(c$,"addLayoutComponent",function(a,b){if(a.equals("VIEWPORT"))this.viewport=
+this.addSingletonComponent(this.viewport,b);else if(a.equals("VERTICAL_SCROLLBAR"))this.vsb=this.addSingletonComponent(this.vsb,b);else if(a.equals("HORIZONTAL_SCROLLBAR"))this.hsb=this.addSingletonComponent(this.hsb,b);else if(a.equals("ROW_HEADER"))this.rowHead=this.addSingletonComponent(this.rowHead,b);else if(a.equals("COLUMN_HEADER"))this.colHead=this.addSingletonComponent(this.colHead,b);else if(a.equals("LOWER_LEFT_CORNER"))this.lowerLeft=this.addSingletonComponent(this.lowerLeft,b);else if(a.equals("LOWER_RIGHT_CORNER"))this.lowerRight=
+this.addSingletonComponent(this.lowerRight,b);else if(a.equals("UPPER_LEFT_CORNER"))this.upperLeft=this.addSingletonComponent(this.upperLeft,b);else if(a.equals("UPPER_RIGHT_CORNER"))this.upperRight=this.addSingletonComponent(this.upperRight,b);else throw new IllegalArgumentException("invalid layout key "+a);},"~S,java.awt.Component");e(c$,"removeLayoutComponent",function(a){a===this.viewport?this.viewport=null:a===this.vsb?this.vsb=null:a===this.hsb?this.hsb=null:a===this.rowHead?this.rowHead=null:
+a===this.colHead?this.colHead=null:a===this.lowerLeft?this.lowerLeft=null:a===this.lowerRight?this.lowerRight=null:a===this.upperLeft?this.upperLeft=null:a===this.upperRight&&(this.upperRight=null)},"java.awt.Component");d(c$,"getVerticalScrollBarPolicy",function(){return this.vsbPolicy});d(c$,"setVerticalScrollBarPolicy",function(a){switch(a){case 20:case 21:case 22:this.vsbPolicy=a;break;default:throw new IllegalArgumentException("invalid verticalScrollBarPolicy");}},"~N");d(c$,"getHorizontalScrollBarPolicy",
+function(){return this.hsbPolicy});d(c$,"setHorizontalScrollBarPolicy",function(a){switch(a){case 30:case 31:case 32:this.hsbPolicy=a;break;default:throw new IllegalArgumentException("invalid horizontalScrollBarPolicy");}},"~N");d(c$,"getViewport",function(){return this.viewport});d(c$,"getHorizontalScrollBar",function(){return this.hsb});d(c$,"getVerticalScrollBar",function(){return this.vsb});d(c$,"getRowHeader",function(){return this.rowHead});d(c$,"getColumnHeader",function(){return this.colHead});
+d(c$,"getCorner",function(a){return a.equals("LOWER_LEFT_CORNER")?this.lowerLeft:a.equals("LOWER_RIGHT_CORNER")?this.lowerRight:a.equals("UPPER_LEFT_CORNER")?this.upperLeft:a.equals("UPPER_RIGHT_CORNER")?this.upperRight:null},"~S");e(c$,"preferredLayoutSize",function(a){this.vsbPolicy=a.getVerticalScrollBarPolicy();this.hsbPolicy=a.getHorizontalScrollBarPolicy();var b=a.getInsets(),c=b.left+b.right,b=b.top+b.bottom,d=null,e=null,k=null;null!=this.viewport&&(d=this.viewport.getPreferredSize(),k=this.viewport.getView(),
+e=null!=k?k.getPreferredSize():new java.awt.Dimension(0,0));null!=d&&(c+=d.width,b+=d.height);var g=a.getViewportBorder();null!=g&&(a=g.getBorderInsets(a),c+=a.left+a.right,b+=a.top+a.bottom);null!=this.rowHead&&this.rowHead.isVisible()&&(c+=this.rowHead.getPreferredSize().width);null!=this.colHead&&this.colHead.isVisible()&&(b+=this.colHead.getPreferredSize().height);null!=this.vsb&&21!=this.vsbPolicy&&(22==this.vsbPolicy?c+=this.vsb.getPreferredSize().width:null!=e&&null!=d&&(a=!0,v(k,javax.swing.Scrollable)&&
+(a=!k.getScrollableTracksViewportHeight()),a&&e.height>d.height&&(c+=this.vsb.getPreferredSize().width)));null!=this.hsb&&31!=this.hsbPolicy&&(32==this.hsbPolicy?b+=this.hsb.getPreferredSize().height:null!=e&&null!=d&&(a=!0,v(k,javax.swing.Scrollable)&&(a=!k.getScrollableTracksViewportWidth()),a&&e.width>d.width&&(b+=this.hsb.getPreferredSize().height)));return new java.awt.Dimension(c,b)},"java.awt.Container");e(c$,"minimumLayoutSize",function(a){this.vsbPolicy=a.getVerticalScrollBarPolicy();this.hsbPolicy=
+a.getHorizontalScrollBarPolicy();var b=a.getInsets(),c=b.left+b.right,b=b.top+b.bottom;if(null!=this.viewport)var d=this.viewport.getMinimumSize(),c=c+d.width,b=b+d.height;d=a.getViewportBorder();null!=d&&(a=d.getBorderInsets(a),c+=a.left+a.right,b+=a.top+a.bottom);null!=this.rowHead&&this.rowHead.isVisible()&&(d=this.rowHead.getMinimumSize(),c+=d.width,b=Math.max(b,d.height));null!=this.colHead&&this.colHead.isVisible()&&(d=this.colHead.getMinimumSize(),c=Math.max(c,d.width),b+=d.height);null!=this.vsb&&
+21!=this.vsbPolicy&&(d=this.vsb.getMinimumSize(),c+=d.width,b=Math.max(b,d.height));null!=this.hsb&&31!=this.hsbPolicy&&(d=this.hsb.getMinimumSize(),c=Math.max(c,d.width),b+=d.height);return new java.awt.Dimension(c,b)},"java.awt.Container");e(c$,"layoutContainer",function(a){this.vsbPolicy=a.getVerticalScrollBarPolicy();this.hsbPolicy=a.getHorizontalScrollBarPolicy();var b=a.getBounds();b.x=b.y=0;var c=a.getInsets();b.x=c.left;b.y=c.top;b.width-=c.left+c.right;b.height-=c.top+c.bottom;var c=javax.swing.SwingUtilities.isLeftToRight(a),
+d=new java.awt.Rectangle(0,b.y,0,0);if(null!=this.colHead&&this.colHead.isVisible()){var e=Math.min(b.height,this.colHead.getPreferredSize().height);d.height=e;b.y+=e;b.height-=e}e=new java.awt.Rectangle(0,0,0,0);if(null!=this.rowHead&&this.rowHead.isVisible()){var k=Math.min(b.width,this.rowHead.getPreferredSize().width);e.width=k;b.width-=k;c?(e.x=b.x,b.x+=k):e.x=b.x+b.width}k=a.getViewportBorder();null!=k?(a=k.getBorderInsets(a),b.x+=a.left,b.y+=a.top,b.width-=a.left+a.right,b.height-=a.top+a.bottom):
+a=new java.awt.Insets(0,0,0,0);var g=null!=this.viewport?this.viewport.getView():null,k=null!=g?g.getPreferredSize():new java.awt.Dimension(0,0),h=null!=this.viewport?this.viewport.toViewCoordinates(b.getSize()):new java.awt.Dimension(0,0),j=!1,n=!1,m=0>b.width||0>b.height,p;!m&&v(g,javax.swing.Scrollable)?(p=g,j=p.getScrollableTracksViewportWidth(),n=p.getScrollableTracksViewportHeight()):p=null;var g=new java.awt.Rectangle(0,b.y-a.top,0,0),q;q=m?!1:22==this.vsbPolicy?!0:21==this.vsbPolicy?!1:!n&&
+k.height>h.height;null!=this.vsb&&q&&(this.adjustForVSB(!0,b,g,a,c),h=this.viewport.toViewCoordinates(b.getSize()));var r=new java.awt.Rectangle(b.x-a.left,0,0,0),m=m?!1:32==this.hsbPolicy?!0:31==this.hsbPolicy?!1:!j&&k.width>h.width;null!=this.hsb&&m&&(this.adjustForHSB(!0,b,r,a),null!=this.vsb&&(!q&&21!=this.vsbPolicy)&&(h=this.viewport.toViewCoordinates(b.getSize()),(q=k.height>h.height)&&this.adjustForVSB(!0,b,g,a,c)));if(null!=this.viewport&&(this.viewport.setBounds(b),null!=p)){var h=this.viewport.toViewCoordinates(b.getSize()),
+s=m,t=q,j=p.getScrollableTracksViewportWidth(),n=p.getScrollableTracksViewportHeight();null!=this.vsb&&20==this.vsbPolicy&&(n=!n&&k.height>h.height,n!=q&&(q=n,this.adjustForVSB(q,b,g,a,c),h=this.viewport.toViewCoordinates(b.getSize())));null!=this.hsb&&30==this.hsbPolicy&&(h=!j&&k.width>h.width,h!=m&&(m=h,this.adjustForHSB(m,b,r,a),null!=this.vsb&&(!q&&21!=this.vsbPolicy)&&(h=this.viewport.toViewCoordinates(b.getSize()),(q=k.height>h.height)&&this.adjustForVSB(!0,b,g,a,c))));(s!=m||t!=q)&&this.viewport.setBounds(b)}g.height=
+b.height+a.top+a.bottom;r.width=b.width+a.left+a.right;e.height=b.height+a.top+a.bottom;e.y=b.y-a.top;d.width=b.width+a.left+a.right;d.x=b.x-a.left;null!=this.rowHead&&this.rowHead.setBounds(e);null!=this.colHead&&this.colHead.setBounds(d);if(null!=this.vsb)if(q){if(null!=this.colHead&&javax.swing.UIManager.getBoolean("ScrollPane.fillUpperCorner")&&(c&&null==this.upperRight||!c&&null==this.upperLeft))g.y=d.y,g.height+=d.height;this.vsb.setVisible(!0);this.vsb.setBounds(g)}else this.vsb.setVisible(!1);
+if(null!=this.hsb)if(m){if(null!=this.rowHead&&javax.swing.UIManager.getBoolean("ScrollPane.fillLowerCorner")&&(c&&null==this.lowerLeft||!c&&null==this.lowerRight))c&&(r.x=e.x),r.width+=e.width;this.hsb.setVisible(!0);this.hsb.setBounds(r)}else this.hsb.setVisible(!1);null!=this.lowerLeft&&this.lowerLeft.setBounds(c?e.x:g.x,r.y,c?e.width:g.width,r.height);null!=this.lowerRight&&this.lowerRight.setBounds(c?g.x:e.x,r.y,c?g.width:e.width,r.height);null!=this.upperLeft&&this.upperLeft.setBounds(c?e.x:
+g.x,d.y,c?e.width:g.width,d.height);null!=this.upperRight&&this.upperRight.setBounds(c?g.x:e.x,d.y,c?g.width:e.width,d.height)},"java.awt.Container");d(c$,"adjustForVSB",function(a,b,c,d,e){var k=c.width;a?(a=Math.max(0,Math.min(this.vsb.getPreferredSize().width,b.width)),b.width-=a,c.width=a,e?c.x=b.x+b.width+d.right:(c.x=b.x-d.left,b.x+=a)):b.width+=k},"~B,java.awt.Rectangle,java.awt.Rectangle,java.awt.Insets,~B");d(c$,"adjustForHSB",function(a,b,c,d){var e=c.height;a?(a=Math.max(0,Math.min(b.height,
+this.hsb.getPreferredSize().height)),b.height-=a,c.y=b.y+b.height+d.bottom,c.height=a):b.height+=e},"~B,java.awt.Rectangle,java.awt.Rectangle,java.awt.Insets");d(c$,"getViewportBorderBounds",function(a){return a.getViewportBorderBounds()},"javax.swing.JScrollPane");A(self.c$);c$=B(javax.swing.ScrollPaneLayout,"UIResource",javax.swing.ScrollPaneLayout,javax.swing.plaf.UIResource);c$=z()});p("jalview.io");q(["jalview.io.AlignFile","java.lang.Enum","$.Exception"],"jalview.io.FeaturesFile","jalview.analysis.SequenceIdMatcher jalview.datamodel.AlignedCodonFrame $.SequenceDummy $.SequenceFeature jalview.jsdev.GenericFileAdapter jalview.schemes.GraduatedColor $.UserColourScheme jalview.util.Format $.MapList $.ParseHtmlBodyAndLinks java.awt.Color java.lang.Float $.StringBuffer java.util.ArrayList $.Arrays $.HashMap $.Hashtable $.StringTokenizer $.Vector".split(" "),
+function(){c$=s(function(){this.doGffSource=!0;this.gffversion=0;H("jalview.io.FeaturesFile.InvalidGFF3FieldException")||jalview.io.FeaturesFile.$FeaturesFile$InvalidGFF3FieldException$();this.matcher=this.lastmatchedAl=null;r(this,arguments)},jalview.io,"FeaturesFile",jalview.io.AlignFile);m(c$,function(){t(this,jalview.io.FeaturesFile,[])});d(c$,"parse",function(a,b,c){return this.parse(a,b,null,c,!1)},"jalview.datamodel.AlignmentI,java.util.Hashtable,~B");d(c$,"parse",function(a,b,c,d){return this.parse(a,
+b,null,c,d)},"jalview.datamodel.AlignmentI,java.util.Map,~B,~B");d(c$,"parse",function(a,b,c,d){return this.parse(a,b,c,d,!1)},"jalview.datamodel.AlignmentI,java.util.Map,java.util.Map,~B");d(c$,"parse",function(a,b,c,d,e){var k=null;try{for(var g=null,h=new java.util.ArrayList,j,n,m=null,p,q,r,s,t,v,w=null,z=null,A=new java.util.Hashtable,B=!0,E=new java.util.HashMap;null!=(k=this.nextLine());)if(k.startsWith("#"))k.startsWith("##")&&(this.processGffPragma(k,E,a,h),k="");else if(t=new java.util.StringTokenizer(k,
+"\t"),1==t.countTokens()&&k.trim().equalsIgnoreCase("GFF"))B=!0;else if(1<t.countTokens()&&4>t.countTokens())if(B=!1,j=t.nextToken(),j.equalsIgnoreCase("startgroup"))w=t.nextToken(),t.hasMoreElements()&&(z=t.nextToken(),c.put(w,z));else if(j.equalsIgnoreCase("endgroup"))t.nextToken(),z=w=null;else{var C=null,F=t.nextToken();if(-1<F.indexOf("|")||F.trim().equalsIgnoreCase("label")){var G=new java.util.StringTokenizer(F,"|",!0),H=1.4E-45,I=3.4028235E38,J=!1,K=G.nextToken();if("|"===K){System.err.println("Expected either 'label' or a colour specification in the line: "+
+k);continue}var L=null;0==K.toLowerCase().indexOf("label")&&(J=!0,K=G.hasMoreTokens()?G.nextToken():null,K=G.hasMoreTokens()?G.nextToken():null);var M=null,N,O;if(null!=K){K.equals("|")?K="":G.nextToken();L=G.nextToken();L.equals("|")?L="":G.nextToken();M=G.nextToken();G.nextToken();0!=M.toLowerCase().indexOf("abso")?(N=M,M=null):(N=G.nextToken(),G.nextToken());O=G.nextToken();G.hasMoreTokens()&&G.nextToken();try{0<N.length&&(H=(new Float(N)).floatValue())}catch(Q){if(y(Q,Exception))System.err.println("Couldn't parse the minimum value for graduated colour for type ("+
+F+") - did you misspell 'auto' for the optional automatic colour switch ?"),Q.printStackTrace();else throw Q;}try{0<O.length&&(I=(new Float(O)).floatValue())}catch(R){if(y(R,Exception))System.err.println("Couldn't parse the maximum value for graduated colour for type ("+F+")"),R.printStackTrace();else throw R;}}else K="FFFFFF",L="000000";try{C=new jalview.schemes.GraduatedColor((new jalview.schemes.UserColourScheme(K)).findColour("A"),(new jalview.schemes.UserColourScheme(L)).findColour("A"),H,I)}catch(S){if(y(S,
+Exception))System.err.println("Couldn't parse the graduated colour scheme ("+F+")"),S.printStackTrace();else throw S;}if(null!=C){C.setColourByLabel(J);C.setAutoScaled(null==M);I=H=null;G.hasMoreTokens()&&(H=G.nextToken(),H.toLowerCase().startsWith("below")?C.setThreshType(0):H.toLowerCase().startsWith("above")?C.setThreshType(1):(C.setThreshType(-1),H.toLowerCase().startsWith("no")||System.err.println("Ignoring unrecognised threshold type : "+H)));if(-1!=C.getThreshType())try{G.nextToken(),I=G.nextToken(),
+C.setThresh((new Float(I)).floatValue())}catch(P){if(y(P,Exception))System.err.println("Couldn't parse threshold value as a float: ("+I+")"),P.printStackTrace();else throw P;}if(G.hasMoreTokens()){for(System.err.println("Ignoring additional tokens in parameters in graduated colour specification\n");G.hasMoreTokens();)System.err.println("|"+G.nextToken());System.err.println("\n")}}}else var T=new jalview.schemes.UserColourScheme(F),C=T.findColour("A");null!=C&&b.put(j,C);if(t.hasMoreElements()){var U=
+t.nextToken();A.put(j,U);null==c&&(c=new java.util.Hashtable);c.put(j,U)}}else for(C="";t.hasMoreElements();){if(B&&(C=m=t.nextToken(),g=this.findName(a,C,e,h),null!=g)){n=t.nextToken();H=null;this.doGffSource&&-1==n.indexOf(" ")&&(H=String.instantialize(n));j=t.nextToken();try{var W=t.nextToken();q=0==W.length||W.equals("-")?0:Integer.parseInt(W)}catch(X){if(y(X,NumberFormatException))q=0;else throw X;}try{W=t.nextToken(),r=0==W.length||W.equals("-")?0:Integer.parseInt(W)}catch(Y){if(y(Y,NumberFormatException))r=
+0;else throw Y;}0==r&&(q=0);try{s=(new Float(t.nextToken())).floatValue()}catch(Z){if(y(Z,NumberFormatException))s=0;else throw Z;}v=new jalview.datamodel.SequenceFeature(j,n,q,r,s,H);try{v.setValue("STRAND",t.nextToken()),v.setValue("FRAME",t.nextToken())}catch($){if(!y($,Exception))throw $;}if(t.hasMoreTokens()){for(var ba=new StringBuffer,H=!1;t.hasMoreTokens();)ba.append((H?"\t":"")+t.nextElement()),H=!0;v.setValue("ATTRIBUTES",ba.toString())}if(this.processOrAddSeqFeature(a,h,g,v,B,e))for(;null!=
+(g=a.findName(g,C,!0));)g.addSequenceFeature(new jalview.datamodel.SequenceFeature(v));break}n=B&&null==g?m:t.nextToken();if(!t.hasMoreTokens())return System.err.println("DEBUG: Run out of tokens when trying to identify the destination for the feature.. giving up."),!1;m=t.nextToken();if(m.equals("ID_NOT_SPECIFIED")){C=null;try{p=Integer.parseInt(t.nextToken()),g=a.getSequenceAt(p)}catch(ca){if(y(ca,NumberFormatException))g=null;else throw ca;}}else g=this.findName(a,C=m,e,null),t.nextToken();if(null==
+g){System.out.println("Sequence not found: "+k);break}q=Integer.parseInt(t.nextToken());r=Integer.parseInt(t.nextToken());j=t.nextToken();b.containsKey(j)||(T=new jalview.schemes.UserColourScheme(j),b.put(j,T.findColour("A")));v=new jalview.datamodel.SequenceFeature(j,n,"",q,r,w);if(t.hasMoreTokens()){try{s=(new Float(t.nextToken())).floatValue()}catch(da){if(y(da,NumberFormatException))s=0;else throw da;}v.setScore(s)}null!=z&&d&&(v.addLink(z),v.description+="%LINK%");A.containsKey(j)&&d&&(v.addLink(A.get(j).toString()),
+v.description+="%LINK%");this.parseDescriptionHTML(v,d);for(g.addSequenceFeature(v);null!=C&&null!=(g=a.findName(g,C,!1));)g.addSequenceFeature(new jalview.datamodel.SequenceFeature(v));B=!1}this.resetMatcher()}catch(aa){if(y(aa,Exception))return this.warningMessage=(null==this.warningMessage?"":this.warningMessage)+"Parsing error at\n"+k,System.out.println("Error parsing feature file: "+aa+"\n"+k),aa.printStackTrace(System.err),this.resetMatcher(),!1;throw aa;}return!0},"jalview.datamodel.AlignmentI,java.util.Map,java.util.Map,~B,~B");
+d(c$,"processGffPragma",function(a,b,c,d){b=a.indexOf(" ");var e=-1==b?a.substring(2).trim():a.substring(2,b),e=jalview.io.FeaturesFile.GFFPRAGMA.get(e.toLowerCase());if(null!=e)switch(e){case jalview.io.FeaturesFile.GffPragmas.gff_version:this.gffversion=Integer.parseInt(a.substring(b+1));break;case jalview.io.FeaturesFile.GffPragmas.feature_ontology:break;case jalview.io.FeaturesFile.GffPragmas.attribute_ontology:break;case jalview.io.FeaturesFile.GffPragmas.source_ontology:break;case jalview.io.FeaturesFile.GffPragmas.species_build:break;
+case jalview.io.FeaturesFile.GffPragmas.hash:break;case jalview.io.FeaturesFile.GffPragmas.fasta:this.process_as_fasta(c,d);break;default:System.err.println("Ignoring unknown pragma:\n"+a)}},"~S,java.util.Map,jalview.datamodel.AlignmentI,java.util.ArrayList");d(c$,"process_as_fasta",function(a,b){try{this.mark()}catch(c){if(!y(c,java.io.IOException))throw c;}for(var d=jalview.jsdev.GenericFileAdapter.getFile("FastaFile",[]).getSeqs(),e=new jalview.analysis.SequenceIdMatcher(b),k=0,g=d.size();k<g;k++){var h=
+e.findIdMatch(d.get(k));if(null!=h){var j=d.get(k);v(h,jalview.datamodel.SequenceDummy)&&(h.become(j),d.set(k,h))}}for(var n,d=d.iterator();d.hasNext()&&((n=d.next())||1);)a.addSequence(n)},"jalview.datamodel.AlignmentI,java.util.List");d(c$,"processOrAddSeqFeature",function(a,b,c,d,e,k){var g=d.getValue("ATTRIBUTES"),h=!0;if(e&&null!=g){e=8;for(var j,n=0,g=g.$plit("\t");n<g.length&&((j=g[n])||1);n++)if(!(null==j||0==j.trim().length)){e++;for(var m=new java.util.HashMap,p,q=0,r=j.trim().$plit(";");q<
+r.length&&((p=r[q])||1);q++)if(p=p.trim(),0!=p.length){var s=p.indexOf("="),t=p.indexOf(" "),v=null,w=null;-1<t&&(-1==s||t<s)?(v=p.substring(0,t),w=p.substring(t+1)):-1<s&&(-1==t||s<t)?(v=p.substring(0,s),w=p.substring(s+1)):v=p;null!=v&&(s=m.get(v),null==s&&(s=new java.util.ArrayList,m.put(v,s)),null!=w&&s.add(w.trim()))}try{h=(new Boolean(h&this.processGffKey(m,e,c,d,a,b,k))).valueOf()}catch(z){if(y(z,jalview.io.FeaturesFile.InvalidGFF3FieldException))System.err.println(z);else throw z;}}}h&&c.addSequenceFeature(d);
+return h},"jalview.datamodel.AlignmentI,java.util.List,jalview.datamodel.SequenceI,jalview.datamodel.SequenceFeature,~B,~B");d(c$,"processGffKey",function(a,b,c,d,e,k,g){if(d.getType().equals("similarity")){b=d.getStrand();k=this.findNames(e,k,g,a.get(d="Query"));if(null==k||1!=k.size())throw C(jalview.io.FeaturesFile.InvalidGFF3FieldException,this,null,d,a,"Expecting exactly one sequence in Query field (got "+a.get(d)+")");if(a.containsKey(d="Align"))return g=new jalview.datamodel.AlignedCodonFrame,
+a=this.constructCodonMappingFromAlign(a,d,b),g.addMap(c,k.get(0),a),e.addCodonFrame(g),!1}return!0},"java.util.Map,~N,jalview.datamodel.SequenceI,jalview.datamodel.SequenceFeature,jalview.datamodel.AlignmentI,java.util.List,~B");d(c$,"constructCodonMappingFromAlign",function(a,b,c){if(0==c)throw C(jalview.io.FeaturesFile.InvalidGFF3FieldException,this,null,b,a,"Invalid strand for a codon mapping (cannot be 0)");for(var d=new java.util.ArrayList,e=new java.util.ArrayList,k=0,g=0,h,j=a.get(b).iterator();j.hasNext()&&
+((h=j.next())||1);){for(var n=new java.util.ArrayList,m=new java.util.StringTokenizer(h," ");m.hasMoreTokens();){var p=m.nextToken();try{n.add(new Integer(p))}catch(q){if(y(q,NumberFormatException))throw C(jalview.io.FeaturesFile.InvalidGFF3FieldException,this,null,b,a,"Invalid number in field "+p);throw q;}}if(3!=n.size())throw C(jalview.io.FeaturesFile.InvalidGFF3FieldException,this,null,b,a,"Invalid number of fields for this attribute ("+n.size()+")");d.add(new Integer(n.get(0).intValue()));d.add(new Integer(n.get(0).intValue()+
+c*n.get(2).intValue()));n.get(1).equals(new Integer(k))&&0<g?(k+=n.get(2).intValue()/3,g=n.get(2).intValue()%3,e.set(e.size()-1,new Integer(k))):(e.add(n.get(1)),k=n.get(1).intValue()+n.get(2).intValue()/3,g=n.get(2).intValue()%3,e.add(new Integer(k)))}if(1==d.size()%2)throw C(jalview.io.FeaturesFile.InvalidGFF3FieldException,this,null,b,a,"Couldn't parse the DNA alignment range correctly");if(1==e.size()%2)throw C(jalview.io.FeaturesFile.InvalidGFF3FieldException,this,null,b,a,"Couldn't parse the protein alignment range correctly");
+a=w(d.size(),0);b=w(e.size(),0);c=0;for(var r,d=d.iterator();d.hasNext()&&((r=d.next())||1);)a[c++]=r.intValue();c=0;for(d=e.iterator();d.hasNext()&&((r=d.next())||1);)b[c++]=r.intValue();return new jalview.util.MapList(a,b,3,1)},"java.util.Map,~S,~N");d(c$,"findNames",function(a,b,c,d){var e=new java.util.ArrayList,k;for(d=d.iterator();d.hasNext()&&((k=d.next())||1);){var g=this.findName(a,k,c,b);null!=g&&e.add(g)}return e},"jalview.datamodel.AlignmentI,java.util.List,~B,java.util.List");d(c$,"resetMatcher",
+function(){this.matcher=this.lastmatchedAl=null});d(c$,"findName",function(a,b,c,d){var e=null;if(c)this.lastmatchedAl!==a&&(this.matcher=new jalview.analysis.SequenceIdMatcher((this.lastmatchedAl=a).getSequencesArray()),null!=d&&this.matcher.addAll(d)),e=this.matcher.findIdMatch(b);else if(e=a.findName(b,!0),null==e&&null!=d){var k;for(a=d.iterator();a.hasNext()&&((k=a.next())||1);)if(b.equals(k.getName()))return k}null==e&&null!=d&&(e=new jalview.datamodel.SequenceDummy(b),c&&this.matcher.addAll(java.util.Arrays.asList(E(-1,
+[e]))),d.add(e));return e},"jalview.datamodel.AlignmentI,~S,~B,java.util.List");d(c$,"parseDescriptionHTML",function(a,b){if(null!=a.getDescription()){var c=new jalview.util.ParseHtmlBodyAndLinks(a.getDescription(),b,this.newline);a.description=b?c.getNonHtmlContent():a.description;for(var d,c=c.getLinks().iterator();c.hasNext()&&((d=c.next())||1);)a.addLink(d)}},"jalview.datamodel.SequenceFeature,~B");d(c$,"printJalviewFormat",function(a,b){return this.printJalviewFormat(a,b,!0,!0)},"~A,java.util.Map");
+d(c$,"printJalviewFormat",function(a,b,c,d){var e=new StringBuffer,k,g=!1;if(c&&!d&&(null==b||1>b.size()))return"No Features Visible";if(null!=b&&c){k=b.keySet().iterator();for(var h,j;k.hasNext();){h=k.next().toString();if(v(b.get(h),jalview.schemes.GraduatedColor)){var n=b.get(h);j=(n.isColourByLabel()?"label|":"")+jalview.util.Format.getHexString(n.getMinColor())+"|"+jalview.util.Format.getHexString(n.getMaxColor())+(n.isAutoScale()?"|":"|abso|")+n.getMin()+"|"+n.getMax()+"|";-1!=n.getThreshType()?
+(0==n.getThreshType()?j+="below":(1!=n.getThreshType()&&System.err.println("WARNING: Unsupported threshold type ("+n.getThreshType()+") : Assuming 'above'"),j+="above"),j+="|"+n.getThresh()):j+="none"}else j=v(b.get(h),java.awt.Color)?jalview.util.Format.getHexString(b.get(h)):jalview.util.Format.getHexString(new java.awt.Color(Integer.parseInt(b.get(h).toString())));e.append(h);e.append("\t");e.append(j);e.append(this.newline)}}h=new java.util.Vector;j=0;for(var m=!1,n=0;n<a.length;n++)if(k=a[n].getSequenceFeatures(),
+null!=k)for(var p=0;p<k.length;p++)m=0==k[p].begin&&0==k[p].end,!d&&m||!m&&c&&!b.containsKey(k[p].type)||null!=k[p].featureGroup&&!h.contains(k[p].featureGroup)&&h.addElement(k[p].featureGroup);var q=null;do{0<h.size()&&j<h.size()?(q=h.elementAt(j).toString(),e.append(this.newline),e.append("STARTGROUP\t"),e.append(q),e.append(this.newline)):q=null;for(n=0;n<a.length;n++)if(k=a[n].getSequenceFeatures(),null!=k)for(p=0;p<k.length;p++)if(m=0==k[p].begin&&0==k[p].end,!(!d&&m||!m&&c&&!b.containsKey(k[p].type)))if(!(null!=
+q&&(null==k[p].featureGroup||!k[p].featureGroup.equals(q)))&&!(null==q&&null!=k[p].featureGroup)){g=!0;if(null==k[p].description||k[p].description.equals(""))e.append(k[p].type+"\t");else{null!=k[p].links&&-1==k[p].getDescription().indexOf("<html>")&&e.append("<html>");e.append(k[p].description+" ");if(null!=k[p].links){for(m=0;m<k[p].links.size();m++){var r=k[p].links.elementAt(m).toString(),s=r.substring(r.indexOf("|")+1),r=r.substring(0,r.indexOf("|"));-1==k[p].description.indexOf(s)&&e.append('<a href="'+
+s+'">'+r+"</a>")}-1==k[p].getDescription().indexOf("</html>")&&e.append("</html>")}e.append("\t")}e.append(a[n].getName());e.append("\t-1\t");e.append(""+k[p].begin);e.append("\t");e.append(""+k[p].end);e.append("\t");e.append(k[p].type);Float.isNaN(k[p].score)||(e.append("\t"),e.append(k[p].score));e.append(this.newline)}if(null!=q)e.append("ENDGROUP\t"),e.append(q),e.append(this.newline),j++;else break}while(j<h.size()+1);return!g?"No Features Visible":e.toString()},"~A,java.util.Map,~B,~B");d(c$,
+"printGFFFormat",function(a,b){return this.printGFFFormat(a,b,!0,!0)},"~A,java.util.Map");d(c$,"printGFFFormat",function(a,b,c,d){for(var e=new StringBuffer,k,g,h=0;h<a.length;h++)if(null!=a[h].getSequenceFeatures()){k=a[h].getSequenceFeatures();for(var j=0;j<k.length;j++)g=0==k[j].begin&&0==k[j].end,!d&&g||!g&&c&&!b.containsKey(k[j].type)||(g=k[j].featureGroup,null==g&&(g=k[j].getDescription()),e.append(a[h].getName()),e.append("\t"),e.append(g),e.append("\t"),e.append(k[j].type),e.append("\t"),
+e.append(""+k[j].begin),e.append("\t"),e.append(""+k[j].end),e.append("\t"),e.append(k[j].score),e.append("\t"),null!=k[j].getValue("STRAND")?(e.append(k[j].getValue("STRAND")),e.append("\t")):e.append(".\t"),null!=k[j].getValue("FRAME")?e.append(k[j].getValue("FRAME")):e.append("."),null!=k[j].getValue("ATTRIBUTES")&&e.append(k[j].getValue("ATTRIBUTES")),e.append(this.newline))}return e.toString()},"~A,java.util.Map,~B,~B");d(c$,"parse",function(){});e(c$,"print",function(){return"USE printGFFFormat() or printJalviewFormat()"});
+c$.$FeaturesFile$InvalidGFF3FieldException$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.value=this.field=null;r(this,arguments)},jalview.io.FeaturesFile,"InvalidGFF3FieldException",Exception);m(c$,function(a,b,c){t(this,jalview.io.FeaturesFile.InvalidGFF3FieldException,[c+" (Field was "+a+" and value was "+b.get(a).toString()]);this.field=a;this.value=b.get(a).toString()},"~S,java.util.Map,~S");c$=z()};A(self.c$);c$=B(jalview.io.FeaturesFile,"GffPragmas",Enum);R(c$,"gff_version",
+0,[]);R(c$,"sequence_region",1,[]);R(c$,"feature_ontology",2,[]);R(c$,"attribute_ontology",3,[]);R(c$,"source_ontology",4,[]);R(c$,"species_build",5,[]);R(c$,"fasta",6,[]);R(c$,"hash",7,[]);c$=z();G(c$,"GFFPRAGMA",null);jalview.io.FeaturesFile.GFFPRAGMA=new java.util.HashMap;jalview.io.FeaturesFile.GFFPRAGMA.put("sequence-region",jalview.io.FeaturesFile.GffPragmas.sequence_region);jalview.io.FeaturesFile.GFFPRAGMA.put("feature-ontology",jalview.io.FeaturesFile.GffPragmas.feature_ontology);jalview.io.FeaturesFile.GFFPRAGMA.put("#",
+jalview.io.FeaturesFile.GffPragmas.hash);jalview.io.FeaturesFile.GFFPRAGMA.put("fasta",jalview.io.FeaturesFile.GffPragmas.fasta);jalview.io.FeaturesFile.GFFPRAGMA.put("species-build",jalview.io.FeaturesFile.GffPragmas.species_build);jalview.io.FeaturesFile.GFFPRAGMA.put("source-ontology",jalview.io.FeaturesFile.GffPragmas.source_ontology);jalview.io.FeaturesFile.GFFPRAGMA.put("attribute-ontology",jalview.io.FeaturesFile.GffPragmas.attribute_ontology)});p("jalview.datamodel");q(["jalview.datamodel.Sequence",
+"$.SequenceI"],"jalview.datamodel.SequenceDummy",null,function(){c$=s(function(){this.dummy=!0;r(this,arguments)},jalview.datamodel,"SequenceDummy",jalview.datamodel.Sequence,jalview.datamodel.SequenceI);m(c$,function(a){t(this,jalview.datamodel.SequenceDummy,[a,"THISAPLACEHOLDER"])},"~S");d(c$,"become",function(a){this.initSeqFrom(a,null);this.dummy=!1},"jalview.datamodel.SequenceI");d(c$,"isDummy",function(){return this.dummy})});p("java.awt.event");q(["java.awt.event.MouseListener","$.MouseMotionListener",
+"$.MouseWheelListener"],"java.awt.event.MouseAdapter",null,function(){c$=B(java.awt.event,"MouseAdapter",null,[java.awt.event.MouseListener,java.awt.event.MouseWheelListener,java.awt.event.MouseMotionListener]);e(c$,"mouseClicked",function(){},"java.awt.event.MouseEvent");e(c$,"mousePressed",function(){},"java.awt.event.MouseEvent");e(c$,"mouseReleased",function(){},"java.awt.event.MouseEvent");e(c$,"mouseEntered",function(){},"java.awt.event.MouseEvent");e(c$,"mouseExited",function(){},"java.awt.event.MouseEvent");
+e(c$,"mouseWheelMoved",function(){},"java.awt.event.MouseWheelEvent");e(c$,"mouseDragged",function(){},"java.awt.event.MouseEvent");e(c$,"mouseMoved",function(){},"java.awt.event.MouseEvent")});p("jalview.appletgui");q("awt2swing.Checkbox $.Panel jalview.api.FeatureSettingsControllerI java.awt.event.ActionListener $.AdjustmentListener $.ItemListener $.MouseListener $.MouseMotionListener".split(" "),"jalview.appletgui.FeatureSettings","awt2swing.Button $.Frame $.Label $.MenuItem $.PopupMenu $.ScrollPane $.Scrollbar $.Util jalview.appletgui.FeatureColourChooser $.UserDefinedColours jalview.bin.JalviewLite jalview.schemes.GraduatedColor jalview.util.MessageManager java.awt.BorderLayout $.Color $.Font $.GridLayout $.Toolkit java.awt.event.WindowAdapter java.lang.Boolean $.Error java.util.Vector".split(" "),
+function(){c$=s(function(){this.selectedCheck=this.groupItemListener=this.transparency=this.linkImage=this.scrollPane=this.featurePanel=this.groupPanel=this.frame=this.av=this.ap=this.fr=null;this.dragging=!1;H("jalview.appletgui.FeatureSettings.MyCheckbox")||jalview.appletgui.FeatureSettings.$FeatureSettings$MyCheckbox$();r(this,arguments)},jalview.appletgui,"FeatureSettings",awt2swing.Panel,[java.awt.event.ItemListener,java.awt.event.MouseListener,java.awt.event.MouseMotionListener,java.awt.event.ActionListener,
+java.awt.event.AdjustmentListener,jalview.api.FeatureSettingsControllerI]);J(c$,function(){this.featurePanel=new awt2swing.Panel;this.groupItemListener=(H("jalview.appletgui.FeatureSettings$1")?0:jalview.appletgui.FeatureSettings.$FeatureSettings$1$(),C(jalview.appletgui.FeatureSettings$1,this,null))});m(c$,function(a){t(this,jalview.appletgui.FeatureSettings,[]);this.ap=a;this.av=a.av;a.av.featureSettings=this;this.fr=a.seqPanel.seqCanvas.getFeatureRenderer();this.transparency=new awt2swing.Scrollbar(0,
+100-I(100*this.fr.getTransparency()),1,1,100);this.fr.isTransparencyAvailable()?this.transparency.addAdjustmentListener(this):this.transparency.setEnabled(!1);a=this.getClass().getResource("/images/link.gif");null!=a&&(this.linkImage=java.awt.Toolkit.getDefaultToolkit().getImage(a));(this.av.isShowSequenceFeatures()||!this.fr.hasRenderOrder())&&this.fr.findAllFeatures(!0);this.discoverAllFeatureData();this.setLayout(new java.awt.BorderLayout);this.scrollPane=new awt2swing.ScrollPane;this.scrollPane.add(this.featurePanel);
+null!=this.fr.getAllFeatureColours()&&0<this.fr.getAllFeatureColours().size()&&this.add(this.scrollPane,"Center");var b=new awt2swing.Button("Invert Selection");b.addActionListener(this);a=new awt2swing.Panel(new java.awt.GridLayout(2,1,5,10));a.add(b);b=new awt2swing.Panel(new java.awt.BorderLayout);this.fr.isTransparencyAvailable()?(b.add(this.transparency,"Center"),b.add(new awt2swing.Label("Transparency"),"East")):b.add(new awt2swing.Label("Transparency not available in this web browser"),"Center");
+a.add(b,"South");this.add(a,"South");null!=this.groupPanel&&(this.groupPanel.setLayout(new java.awt.GridLayout(F(this.fr.getFeatureGroupsSize()/4)+1,4)),this.groupPanel.validate(),this.add(this.groupPanel,"North"));this.frame=new awt2swing.Frame;this.frame.add(this);this.frame.addWindowListener((H("jalview.appletgui.FeatureSettings$2")?0:jalview.appletgui.FeatureSettings.$FeatureSettings$2$(),C(jalview.appletgui.FeatureSettings$2,this,T("me",this))));a=50*this.featurePanel.getComponentCount()+60;
+a=Math.max(200,a);a=Math.min(400,a);jalview.bin.JalviewLite.addFrame(this.frame,jalview.util.MessageManager.getString("label.feature_settings"),300,a)},"jalview.appletgui.AlignmentPanel");d(c$,"PaintComponent",function(a){a.setColor(java.awt.Color.black);awt2swing.Util.drawString(a,jalview.util.MessageManager.getString("label.no_features_added_to_this_alignment"),10,20);awt2swing.Util.drawString(a,jalview.util.MessageManager.getString("label.features_can_be_added_from_searches_1"),10,40);awt2swing.Util.drawString(a,
+jalview.util.MessageManager.getString("label.features_can_be_added_from_searches_2"),10,60)},"java.awt.Graphics");d(c$,"popupSort",function(a,b,c,d){var e=a.type,k=this.fr.getFeatureStyle(e),g=new awt2swing.PopupMenu(jalview.util.MessageManager.formatMessage("label.settings_for_type",E(-1,[e]))),h=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.sort_by_score"));g.add(h);h.addActionListener((H("jalview.appletgui.FeatureSettings$3")?0:jalview.appletgui.FeatureSettings.$FeatureSettings$3$(),
+C(jalview.appletgui.FeatureSettings$3,this,T("me",this,"type",e))));h=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.sort_by_density"));h.addActionListener((H("jalview.appletgui.FeatureSettings$4")?0:jalview.appletgui.FeatureSettings.$FeatureSettings$4$(),C(jalview.appletgui.FeatureSettings$4,this,T("me",this,"type",e))));g.add(h);null!=b&&(b=b.get(e),null!=b&&null!=b[0]&&(b=new awt2swing.MenuItem(v(k,java.awt.Color)?"Graduated Colour":"Single Colour"),g.add(b),b.addActionListener((H("jalview.appletgui.FeatureSettings$5")?
+0:jalview.appletgui.FeatureSettings.$FeatureSettings$5$(),C(jalview.appletgui.FeatureSettings$5,this,T("typeCol",k,"me",this,"type",e,"check",a))))));this.featurePanel.add(g);g.show(this.featurePanel,c,d)},"jalview.appletgui.FeatureSettings.MyCheckbox,java.util.Hashtable,~N,~N");e(c$,"discoverAllFeatureData",function(){null!=this.fr.getAllFeatureColours()&&0<this.fr.getAllFeatureColours().size()&&this.rebuildGroups();this.resetTable(!1)});d(c$,"rebuildGroups",function(){var a=!1;null==this.groupPanel?
+this.groupPanel=new awt2swing.Panel:(a=!0,this.groupPanel.removeAll());for(var b,c=this.fr.getFeatureGroups().iterator();c.hasNext()&&((b=c.next())||1);){var d=this.fr.checkGroupVisibility(b,!1),e=C(jalview.appletgui.FeatureSettings.MyCheckbox,this,null,b,d,null!=this.fr.featureLinks&&this.fr.featureLinks.containsKey(b));e.addMouseListener(this);e.setFont(new java.awt.Font("Serif",1,12));e.addItemListener(this.groupItemListener);e.setVisible(d);this.groupPanel.add(e)}a&&this.groupPanel.validate()});
+d(c$,"resetTable",function(a){for(var b,c=null,d=new java.util.Vector,e=this.av.getAlignment(),k=0;k<e.getHeight();k++)if(null!=e.getSequenceAt(k).getSequenceFeatures()){b=e.getSequenceAt(k).getSequenceFeatures();for(var g=0;g<b.length;){c=b[g].featureGroup;if(null==c||this.fr.checkGroupVisibility(c,!0))c=b[g].getType(),d.contains(c)||d.addElement(c);g++}}b=this.featurePanel.getComponentCount();for(k=0;k<b;k++)e=this.featurePanel.getComponents(),e=e[k],d.contains(e.type)||(this.featurePanel.remove(k),
+b--,k--);if(null!=this.fr.getRenderOrder()){k=this.fr.getRenderOrder();for(b=k.size()-1;-1<b;b--)e=k.get(b),d.contains(e)&&(d.removeElement(e),this.addCheck(!1,e))}for(d=d.elements();d.hasMoreElements();)this.addCheck(a,d.nextElement().toString());this.featurePanel.setLayout(new java.awt.GridLayout(this.featurePanel.getComponentCount(),1,10,5));this.featurePanel.validate();null!=this.scrollPane&&this.scrollPane.validate();this.itemStateChanged(null)},"~B");d(c$,"addCheck",function(a,b){var c,d=this.featurePanel.getComponents(),
+e;c=!0;for(var k=0;k<this.featurePanel.getComponentCount();k++)if(e=d[k],e.type.equals(b)){c=!1;break}if(c){c=!1;if(a||this.av.getFeaturesDisplayed().isVisible(b))c=!0;e=C(jalview.appletgui.FeatureSettings.MyCheckbox,this,null,b,c,null!=this.fr.featureLinks&&this.fr.featureLinks.containsKey(b),this.fr.getFeatureStyle(b));e.addMouseListener(this);e.addMouseMotionListener(this);e.addItemListener(this);a?this.featurePanel.add(e,0):this.featurePanel.add(e)}},"~B,~S");e(c$,"actionPerformed",function(){for(var a=
+0;a<this.featurePanel.getComponentCount();a++){var b=this.featurePanel.getComponent(a);b.setState(!b.getState())}this.selectionChanged()},"java.awt.event.ActionEvent");e(c$,"itemStateChanged",function(){this.selectionChanged()},"java.awt.event.ItemEvent");d(c$,"selectionChanged",function(){for(var a=this.featurePanel.getComponents(),b=a.length,c=E(b,3,null),d=0,e=0;e<b;e++){var k=a[e];c[d][0]=k.type;c[d][1]=this.fr.getFeatureStyle(k.type);c[d][2]=new Boolean(k.getState());d++}a=E(d,3,null);System.arraycopy(c,
+0,a,0,d);this.fr.setFeaturePriority(a);this.ap.paintAlignment(!0)});e(c$,"mousePressed",function(a){this.selectedCheck=a.getSource();null!=this.fr.featureLinks&&this.fr.featureLinks.containsKey(this.selectedCheck.type)&&a.getX()>this.selectedCheck.stringWidth+20&&a.consume()},"java.awt.event.MouseEvent");e(c$,"mouseDragged",function(a){a.getSource().getParent()===this.featurePanel&&(this.dragging=!0)},"java.awt.event.MouseEvent");e(c$,"mouseReleased",function(a){if(a.getSource().getParent()===this.featurePanel){var b=
+null,c=null,b=a.getY()+a.getComponent().getLocation().y,b=b>this.featurePanel.getSize().height?this.featurePanel.getComponent(this.featurePanel.getComponentCount()-1):0>b?this.featurePanel.getComponent(0):this.featurePanel.getComponentAt(a.getX(),a.getY()+a.getComponent().getLocation().y);null!=b&&v(b,awt2swing.Checkbox)&&(c=b);if(null!=this.selectedCheck&&null!=c&&this.selectedCheck!==c){a=-1;for(b=0;b<this.featurePanel.getComponentCount();b++)if(c===this.featurePanel.getComponent(b)){a=b;break}this.featurePanel.remove(this.selectedCheck);
+this.featurePanel.add(this.selectedCheck,a);this.featurePanel.validate();this.itemStateChanged(null)}}},"java.awt.event.MouseEvent");d(c$,"setUserColour",function(a,b){if(v(b,java.awt.Color)||v(b,jalview.schemes.GraduatedColor))this.fr.setColour(a,b);else throw Error(jalview.util.MessageManager.getString("error.implementation_error_unsupported_feature_colour_object"));this.refreshTable()},"~S,~O");d(c$,"refreshTable",function(){this.featurePanel.removeAll();this.resetTable(!1);this.ap.paintAlignment(!0)});
+e(c$,"mouseEntered",function(){},"java.awt.event.MouseEvent");e(c$,"mouseExited",function(){},"java.awt.event.MouseEvent");e(c$,"mouseClicked",function(a){var b=a.getSource();0!=(a.getModifiers()&4)&&this.popupSort(b,this.fr.getMinMax(),a.getX(),a.getY());if(null!=this.fr.featureLinks&&this.fr.featureLinks.containsKey(b.type)&&a.getX()>b.stringWidth+20){a.consume();var c=this.fr.featureLinks.get(b.type).toString();this.ap.alignFrame.showURL(c.substring(c.indexOf("|")+1),c.substring(0,c.indexOf("|")))}b.getParent()===
+this.featurePanel&&1<a.getClickCount()&&(a=this.fr.getFeatureStyle(b.type),v(a,java.awt.Color)?new jalview.appletgui.UserDefinedColours(this,b.type,a):(new jalview.appletgui.FeatureColourChooser(this,b.type),b.updateColor(this.fr.getFeatureStyle(b.type))))},"java.awt.event.MouseEvent");e(c$,"mouseMoved",function(){},"java.awt.event.MouseEvent");e(c$,"adjustmentValueChanged",function(){this.fr.setTransparency((100-this.transparency.getValue())/100);this.ap.seqPanel.seqCanvas.repaint()},"java.awt.event.AdjustmentEvent");
+c$.$FeatureSettings$MyCheckbox$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.type=null;this.stringWidth=0;this.hasLink=!1;this.col=this.gcol=null;r(this,arguments)},jalview.appletgui.FeatureSettings,"MyCheckbox",awt2swing.Checkbox);d(c$,"updateColor",function(a){if(v(a,java.awt.Color))this.col=a,this.gcol=null;else if(v(a,jalview.schemes.GraduatedColor))this.gcol=a,this.col=null;else throw Error(jalview.util.MessageManager.getString("error.invalid_colour_for_mycheckbox"));null!=this.col?
+this.setBackground(this.col):(a=this.type,-1!=this.gcol.getThreshType()&&(a+=" "+(1==this.gcol.getThreshType()?"(>)":"(<)")),this.gcol.isColourByLabel()?(this.setBackground(java.awt.Color.white),a+=" (by Label)"):this.setBackground(this.gcol.getMinColor()),this.setLabel(a));this.repaint()},"~O");m(c$,function(a,b,c){t(this,jalview.appletgui.FeatureSettings.MyCheckbox,[a,b]);this.type=a;this.stringWidth=this.b$["jalview.appletgui.FeatureSettings"].av.nullFrame.getFontMetrics(this.b$["jalview.appletgui.FeatureSettings"].av.nullFrame.getFont()).stringWidth(a);
+this.hasLink=c},"~S,~B,~B");m(c$,function(a,b,c,d){this.construct(a,b,c);this.updateColor(d)},"~S,~B,~B,~O");d(c$,"PaintComponent",function(a){var b=this.getSize();if(null!=this.gcol){if(this.gcol.isColourByLabel())a.setColor(java.awt.Color.white);else{var c=this.gcol.getMaxColor();a.setColor(c)}a.fillRect(F(b.width/2),0,F(b.width/2),b.height)}this.hasLink&&a.drawImage(this.b$["jalview.appletgui.FeatureSettings"].linkImage,this.stringWidth+25,F((this.getSize().height-this.b$["jalview.appletgui.FeatureSettings"].linkImage.getHeight(this))/
+2),this)},"java.awt.Graphics");c$=z()};c$.$FeatureSettings$1$=function(){A(self.c$);c$=L(jalview.appletgui,"FeatureSettings$1",null,java.awt.event.ItemListener);e(c$,"itemStateChanged",function(a){a=a.getSource();this.b$["jalview.appletgui.FeatureSettings"].fr.setGroupVisibility(a.getLabel(),a.getState());this.b$["jalview.appletgui.FeatureSettings"].ap.seqPanel.seqCanvas.repaint();null!=this.b$["jalview.appletgui.FeatureSettings"].ap.overviewPanel&&this.b$["jalview.appletgui.FeatureSettings"].ap.overviewPanel.updateOverviewImage();
+this.b$["jalview.appletgui.FeatureSettings"].resetTable(!0)},"java.awt.event.ItemEvent");c$=z()};c$.$FeatureSettings$2$=function(){A(self.c$);c$=L(jalview.appletgui,"FeatureSettings$2",java.awt.event.WindowAdapter);e(c$,"windowClosing",function(){this.f$.me.av.featureSettings===this.f$.me&&(this.f$.me.av.featureSettings=null,this.f$.me.ap=null,this.f$.me.av=null)},"java.awt.event.WindowEvent");c$=z()};c$.$FeatureSettings$3$=function(){A(self.c$);c$=L(jalview.appletgui,"FeatureSettings$3",null,java.awt.event.ActionListener);
+e(c$,"actionPerformed",function(){this.f$.me.ap.alignFrame.avc.sortAlignmentByFeatureScore(E(-1,[this.f$.type]))},"java.awt.event.ActionEvent");c$=z()};c$.$FeatureSettings$4$=function(){A(self.c$);c$=L(jalview.appletgui,"FeatureSettings$4",null,java.awt.event.ActionListener);e(c$,"actionPerformed",function(){this.f$.me.ap.alignFrame.avc.sortAlignmentByFeatureDensity(E(-1,[this.f$.type]))},"java.awt.event.ActionEvent");c$=z()};c$.$FeatureSettings$5$=function(){A(self.c$);c$=L(jalview.appletgui,"FeatureSettings$5",
+null,java.awt.event.ActionListener);e(c$,"actionPerformed",function(){v(this.f$.typeCol,java.awt.Color)?(new jalview.appletgui.FeatureColourChooser(this.f$.me,this.f$.type),this.f$.check.updateColor(this.b$["jalview.appletgui.FeatureSettings"].fr.getFeatureStyle(this.f$.type))):new jalview.appletgui.UserDefinedColours(this.f$.me,this.f$.check.type,this.f$.typeCol)},"java.awt.event.ActionEvent");c$=z()}});p("jalview.api");M(jalview.api,"FeatureSettingsControllerI");p("jalview.appletgui");q(["awt2swing.Panel",
+"java.awt.event.MouseListener","$.MouseMotionListener","java.lang.Thread","java.util.Vector"],"jalview.appletgui.IdPanel","jalview.appletgui.APopupMenu $.IdCanvas $.PaintRefresher $.Tooltip jalview.datamodel.SequenceGroup jalview.util.UrlLink java.awt.BorderLayout java.lang.Float $.StringBuffer".split(" "),function(){c$=s(function(){this.scrollThread=this.alignPanel=this.av=this.idCanvas=null;this.lastid=-1;this.mouseDragging=!1;this.tooltip=this.links=null;H("jalview.appletgui.IdPanel.ScrollThread")||
+jalview.appletgui.IdPanel.$IdPanel$ScrollThread$();r(this,arguments)},jalview.appletgui,"IdPanel",awt2swing.Panel,[java.awt.event.MouseListener,java.awt.event.MouseMotionListener]);J(c$,function(){this.links=new java.util.Vector});m(c$,function(a,b){t(this,jalview.appletgui.IdPanel,[]);this.setName("idPanel");this.av=a;this.alignPanel=b;this.idCanvas=new jalview.appletgui.IdCanvas(a);this.setLayout(new java.awt.BorderLayout);this.add(this.idCanvas,"Center");this.idCanvas.addMouseListener(this);this.idCanvas.addMouseMotionListener(this);
+null!=a.applet&&a.applet.getLinkParams(this.links);var c=this.links.indexOf("SRS|http://srs.ebi.ac.uk/srsbin/cgi-bin/wgetz?-newId+(([uniprot-all:$SEQUENCE_ID$]))+-view+SwissEntry");-1<c&&this.links.setElementAt("EMBL-EBI Search|http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$",c);1>this.links.size()&&(this.links=new java.util.Vector,this.links.addElement("EMBL-EBI Search|http://www.ebi.ac.uk/ebisearch/search.ebi?db=allebi&query=$SEQUENCE_ID$"))},"jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+e(c$,"mouseMoved",function(a){a=this.alignPanel.seqPanel.findSeq(a);a=this.av.getAlignment().getSequenceAt(a);var b=new StringBuffer;if(null!=a){null!=a.getDescription()&&(b.append(a.getDescription()),b.append("\n"));for(var c=a.getSequenceFeatures(),d=0;null!=c&&d<c.length;d++)if(c[d].begin==c[d].end&&0==c[d].begin){var e=!1;null!=c[d].getFeatureGroup()&&(b.append(c[d].getFeatureGroup()),e=!0);null!=c[d].getType()&&(b.append(" "),b.append(c[d].getType()),e=!0);null!=c[d].getDescription()&&(b.append(" "),
+b.append(c[d].getDescription()),e=!0);!Float.isNaN(c[d].getScore())&&0!=c[d].getScore()&&(b.append(" Score = "),b.append(c[d].getScore()),e=!0);null!=c[d].getStatus()&&0<c[d].getStatus().length&&(b.append(" ("),b.append(c[d].getStatus()),b.append(")"),e=!0);e&&b.append("\n")}}0==b.length()?(null!=this.tooltip&&this.tooltip.setVisible(!1),this.tooltip=null):null==this.tooltip?this.tooltip=new jalview.appletgui.Tooltip(a.getDisplayId(!0)+"\n"+b.toString(),this.idCanvas):this.tooltip.setTip(a.getDisplayId(!0)+
+"\n"+b.toString())},"java.awt.event.MouseEvent");e(c$,"mouseDragged",function(a){this.mouseDragging=!0;a=Math.max(0,this.alignPanel.seqPanel.findSeq(a));a<this.lastid?this.selectSeqs(this.lastid-1,a):a>this.lastid&&this.selectSeqs(this.lastid+1,a);this.lastid=a;this.alignPanel.paintAlignment(!1)},"java.awt.event.MouseEvent");e(c$,"mouseClicked",function(a){if(!(2>a.getClickCount())&&(a=this.alignPanel.seqPanel.findSeq(a),a=this.av.getAlignment().getSequenceAt(a),null!=a)){a=a.getName();for(var b=
+null,c=null,d=0;null==c&&d<this.links.size();){var c=this.links.elementAt(d++).toString(),e=null;try{e=new jalview.util.UrlLink(c),b=e.getTarget()}catch(k){if(y(k,Exception)){System.err.println("Exception for URLLink '"+c+"'");k.printStackTrace();c=null;continue}else throw k;}e.isValid()?(c=e.makeUrls(a,!0),c=null==c||null==c[0]||1>c[0].length?null:c[1]):(System.err.println(e.getInvalidMessage()),c=null)}try{this.alignPanel.alignFrame.showURL(c,b)}catch(g){if(y(g,Exception))g.printStackTrace();else throw g;
+}}},"java.awt.event.MouseEvent");e(c$,"mouseEntered",function(){null!=this.scrollThread&&(this.scrollThread.running=!1)},"java.awt.event.MouseEvent");e(c$,"mouseExited",function(a){this.av.getWrapAlignment()||(this.mouseDragging&&(0>a.getY()&&0<this.av.getStartSeq())&&(this.scrollThread=C(jalview.appletgui.IdPanel.ScrollThread,this,null,!0)),this.mouseDragging&&(a.getY()>=this.getSize().height&&this.av.getAlignment().getHeight()>this.av.getEndSeq())&&(this.scrollThread=C(jalview.appletgui.IdPanel.ScrollThread,
+this,null,!1)))},"java.awt.event.MouseEvent");e(c$,"mousePressed",function(a){if(!(1<a.getClickCount())){a.getY();this.av.getWrapAlignment()&&this.av.getCharHeight();var b=this.alignPanel.seqPanel.findSeq(a);if(4==(a.getModifiers()&4)){for(var b=this.av.getAlignment().getSequenceAt(b),c=new java.util.Vector,d=0,e=this.links.size();d<e;d++)c.addElement(this.links.elementAt(d));for(var k=null==b?null:b.getSequenceFeatures(),g=0;null!=k&&g<k.length;g++)if(k[g].begin==k[g].end&&0==k[g].begin&&null!=k[g].links&&
+0<k[g].links.size()){d=0;for(e=k[g].links.size();d<e;d++)c.addElement(k[g].links.elementAt(d))}b=new jalview.appletgui.APopupMenu(this.alignPanel,b,c);this.add(b);b.show(this,a.getX(),a.getY())}else{if(null==this.av.getSelectionGroup()||!a.isControlDown()&&!a.isShiftDown()&&null!=this.av.getSelectionGroup())this.av.setSelectionGroup(new jalview.datamodel.SequenceGroup),this.av.getSelectionGroup().setStartRes(0),this.av.getSelectionGroup().setEndRes(this.av.getAlignment().getWidth()-1);a.isShiftDown()&&
+-1!=this.lastid?this.selectSeqs(this.lastid,b):this.selectSeq(b);this.alignPanel.paintAlignment(!1)}}},"java.awt.event.MouseEvent");d(c$,"selectSeq",function(a){this.lastid=a;a=this.av.getAlignment().getSequenceAt(a);this.av.getSelectionGroup().addOrRemove(a,!0)},"~N");d(c$,"selectSeqs",function(a,b){this.lastid=a;b>=this.av.getAlignment().getHeight()&&(b=this.av.getAlignment().getHeight()-1);if(b<a){var c=a;a=b;this.lastid=b=c}null==this.av.getSelectionGroup()&&this.av.setSelectionGroup(new jalview.datamodel.SequenceGroup);
+for(c=a;c<=b;c++)this.av.getSelectionGroup().addSequence(this.av.getAlignment().getSequenceAt(c),c==b)},"~N,~N");e(c$,"mouseReleased",function(){null!=this.scrollThread&&(this.scrollThread.running=!1);null!=this.av.getSelectionGroup()&&this.av.getSelectionGroup().recalcConservation();this.mouseDragging=!1;jalview.appletgui.PaintRefresher.Refresh(this,this.av.getSequenceSetId());this.av.sendSelection()},"java.awt.event.MouseEvent");d(c$,"highlightSearchResults",function(a){this.idCanvas.setHighlighted(a);
+null!=a&&(a=this.av.getAlignment().findIndex(a.get(0)),(this.av.getStartSeq()>a||this.av.getEndSeq()<a)&&this.alignPanel.setScrollValues(this.av.getStartRes(),a))},"java.util.List");c$.$IdPanel$ScrollThread$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.running=!1;this.up=!0;r(this,arguments)},jalview.appletgui.IdPanel,"ScrollThread",Thread);m(c$,function(a){t(this,jalview.appletgui.IdPanel.ScrollThread,[]);this.up=a;this.start()},"~B");d(c$,"stopScrolling",function(){this.running=
+!1});e(c$,"run",function(){for(this.running=!0;this.running;){if(this.b$["jalview.appletgui.IdPanel"].alignPanel.scrollUp(this.up)){var a=this.b$["jalview.appletgui.IdPanel"].av.getStartSeq();this.up||(a=this.b$["jalview.appletgui.IdPanel"].av.getEndSeq());a<this.b$["jalview.appletgui.IdPanel"].lastid?this.b$["jalview.appletgui.IdPanel"].selectSeqs(this.b$["jalview.appletgui.IdPanel"].lastid-1,a):a>this.b$["jalview.appletgui.IdPanel"].lastid&&a<this.b$["jalview.appletgui.IdPanel"].av.getAlignment().getHeight()&&
+this.b$["jalview.appletgui.IdPanel"].selectSeqs(this.b$["jalview.appletgui.IdPanel"].lastid+1,a);this.b$["jalview.appletgui.IdPanel"].lastid=a}else this.running=!1;this.b$["jalview.appletgui.IdPanel"].alignPanel.paintAlignment(!0);try{Thread.sleep(100)}catch(b){if(!y(b,Exception))throw b;}}});c$=z()}});p("jalview.appletgui");q("awt2swing.PopupMenu java.awt.event.ActionListener $.ItemListener awt2swing.CheckboxMenuItem $.Menu $.MenuItem jalview.util.MessageManager".split(" "),"jalview.appletgui.APopupMenu",
+"awt2swing.Frame jalview.analysis.AAFrequency $.AlignmentAnnotationUtils $.AlignmentUtils $.Conservation jalview.appletgui.AppletJmol $.CutAndPasteTransfer $.EditNameDialog $.SliderPanel $.UserDefinedColours jalview.bin.JalviewLite jalview.commands.ChangeCaseCommand $.EditCommand jalview.datamodel.SequenceFeature jalview.io.AppletFormatAdapter $.SequenceAnnotationReport jalview.schemes.Blosum62ColourScheme $.BuriedColourScheme $.ClustalxColourScheme $.HelixColourScheme $.HydrophobicColourScheme $.NucleotideColourScheme $.PIDColourScheme $.ResidueProperties $.StrandColourScheme $.TaylorColourScheme $.TurnColourScheme $.ZappoColourScheme jalview.util.DBRefUtils $.UrlLink java.lang.StringBuffer $.StringBuilder java.util.Arrays $.Collections $.LinkedHashMap $.TreeMap".split(" "),
+function(){c$=s(function(){this.revealSeq=this.revealAll=this.seq=this.makeReferenceSeq=this.selSeqDetails=this.sequenceDetails=this.editSequence=this.sequenceFeature=this.sequenceName=this.repGroup=this.hideSeqs=this.pdb=this.seqMenu=this.outputmenu=this.toggleCase=this.toLower=this.toUpper=this.cut=this.copy=this.editMenu=this.groupAddReferenceAnnotations=this.groupHideAnnotationsMenu=this.groupShowAnnotationsMenu=this.seqAddReferenceAnnotations=this.seqHideAnnotationsMenu=this.seqShowAnnotationsMenu=
+this.displayNonconserved=this.showColourText=this.showText=this.showBoxes=this.colourMenu=this.nucleotideMenuItem=this.createGroupMenuItem=this.unGroupMenuItem=this.ap=this.conservationMenuItem=this.noColourmenuItem=this.BLOSUM62Colour=this.PIDColour=this.userDefinedColour=this.abovePIDColour=this.buriedColour=this.turnColour=this.strandColour=this.helixColour=this.hydrophobicityColour=this.taylorColour=this.zappoColour=this.clustalColour=this.editGroupName=this.groupMenu=null;this.revealSeq_index=
+-1;this.menu1=null;r(this,arguments)},jalview.appletgui,"APopupMenu",awt2swing.PopupMenu,[java.awt.event.ActionListener,java.awt.event.ItemListener]);J(c$,function(){this.groupMenu=new awt2swing.Menu;this.editGroupName=new awt2swing.MenuItem;this.clustalColour=new awt2swing.MenuItem;this.zappoColour=new awt2swing.MenuItem;this.taylorColour=new awt2swing.MenuItem;this.hydrophobicityColour=new awt2swing.MenuItem;this.helixColour=new awt2swing.MenuItem;this.strandColour=new awt2swing.MenuItem;this.turnColour=
+new awt2swing.MenuItem;this.buriedColour=new awt2swing.MenuItem;this.abovePIDColour=new awt2swing.CheckboxMenuItem;this.userDefinedColour=new awt2swing.MenuItem;this.PIDColour=new awt2swing.MenuItem;this.BLOSUM62Colour=new awt2swing.MenuItem;this.noColourmenuItem=new awt2swing.MenuItem;this.conservationMenuItem=new awt2swing.CheckboxMenuItem;this.unGroupMenuItem=new awt2swing.MenuItem;this.createGroupMenuItem=new awt2swing.MenuItem;this.nucleotideMenuItem=new awt2swing.MenuItem;this.colourMenu=new awt2swing.Menu;
+this.showBoxes=new awt2swing.CheckboxMenuItem;this.showText=new awt2swing.CheckboxMenuItem;this.showColourText=new awt2swing.CheckboxMenuItem;this.displayNonconserved=new awt2swing.CheckboxMenuItem;this.seqShowAnnotationsMenu=new awt2swing.Menu(jalview.util.MessageManager.getString("label.show_annotations"));this.seqHideAnnotationsMenu=new awt2swing.Menu(jalview.util.MessageManager.getString("label.hide_annotations"));this.seqAddReferenceAnnotations=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.add_reference_annotations"));
+this.groupShowAnnotationsMenu=new awt2swing.Menu(jalview.util.MessageManager.getString("label.show_annotations"));this.groupHideAnnotationsMenu=new awt2swing.Menu(jalview.util.MessageManager.getString("label.hide_annotations"));this.groupAddReferenceAnnotations=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.add_reference_annotations"));this.editMenu=new awt2swing.Menu(jalview.util.MessageManager.getString("action.edit"));this.copy=new awt2swing.MenuItem(jalview.util.MessageManager.getString("action.copy"));
+this.cut=new awt2swing.MenuItem(jalview.util.MessageManager.getString("action.cut"));this.toUpper=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.to_upper_case"));this.toLower=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.to_lower_case"));this.toggleCase=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.toggle_case"));this.outputmenu=new awt2swing.Menu;this.seqMenu=new awt2swing.Menu;this.pdb=new awt2swing.MenuItem;this.hideSeqs=new awt2swing.MenuItem;
+this.repGroup=new awt2swing.MenuItem;this.sequenceName=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.edit_name_description"));this.sequenceFeature=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.create_sequence_feature"));this.editSequence=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.edit_sequence"));this.sequenceDetails=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.sequence_details")+"...");this.selSeqDetails=
+new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.sequence_details")+"...");this.makeReferenceSeq=new awt2swing.MenuItem;this.revealAll=new awt2swing.MenuItem;this.revealSeq=new awt2swing.MenuItem;this.menu1=new awt2swing.Menu});m(c$,function(a,b,c){t(this,jalview.appletgui.APopupMenu,[]);this.ap=a;this.seq=b;try{this.jbInit()}catch(d){if(y(d,Exception))d.printStackTrace();else throw d;}for(a=0;a<jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS.length;a++){var e=new awt2swing.MenuItem(jalview.io.AppletFormatAdapter.WRITEABLE_FORMATS[a]);
+e.addActionListener(this);this.outputmenu.add(e)}this.buildAnnotationSubmenus();a=this.ap.av.getSelectionGroup();null!=a&&0<a.getSize()?(this.editGroupName.setLabel(jalview.util.MessageManager.formatMessage("label.name_param",E(-1,[a.getName()]))),this.showText.setState(a.getDisplayText()),this.showColourText.setState(a.getColourText()),this.showBoxes.setState(a.getDisplayBoxes()),this.displayNonconserved.setState(a.getShowNonconserved()),this.ap.av.getAlignment().getGroups().contains(a)?(this.menu1.setLabel(jalview.util.MessageManager.getString("action.edit_group")),
+this.groupMenu.remove(this.createGroupMenuItem)):(this.menu1.setLabel(jalview.util.MessageManager.getString("action.edit_new_group")),this.groupMenu.remove(this.unGroupMenuItem))):(this.remove(this.hideSeqs),this.remove(this.groupMenu));if(null!=c&&0<c.size()){e=new awt2swing.Menu(jalview.util.MessageManager.getString("action.link"));for(a=0;a<c.size();a++){var k=c.elementAt(a),k=new jalview.util.UrlLink(k);if(k.isValid()){var g=k.getTarget(),h=k.getLabel();if(null!=b&&k.isDynamic()){var g=jalview.util.DBRefUtils.selectRefs(b.getDBRef(),
+E(-1,[g])),j=b.getName(),n=b.getDescription();null!=n&&1>n.length&&(n=null);if(null!=g)for(var m=0;m<g.length;m++){null!=j&&g[m].getAccessionId().equals(j)&&(j=null);var p=k.makeUrls(g[m].getAccessionId(),!0);if(null!=p)for(var q=0;q<p.length;q+=2)this.addshowLink(e,h+"|"+p[q],p[q+1])}if(null!=j&&(p=k.makeUrls(j,!0),null!=p))for(q=0;q<p.length;q+=2)this.addshowLink(e,h,p[q+1]);if(null!=n&&null!=k.getRegexReplace()&&(p=k.makeUrls(n,!0),null!=p))for(q=0;q<p.length;q+=2)this.addshowLink(e,h,p[q+1])}else this.addshowLink(e,
+g,k.getUrl_prefix())}else System.err.println(k.getInvalidMessage())}0<e.getItemCount()&&(null!=b?this.seqMenu.add(e):this.add(e))}null!=b?(this.seqMenu.setLabel(b.getName()),b===this.ap.av.getAlignment().getSeqrep()?this.makeReferenceSeq.setLabel(jalview.util.MessageManager.getString("action.unmark_as_reference")):this.makeReferenceSeq.setLabel(jalview.util.MessageManager.getString("action.set_as_reference")),this.repGroup.setLabel(jalview.util.MessageManager.formatMessage("label.represent_group_with",
+E(-1,[b.getName()])))):this.remove(this.seqMenu);this.ap.av.hasHiddenRows()?(b=this.ap.av.getAlignment().findIndex(b),1<this.ap.av.adjustForHiddenSeqs(b)-this.ap.av.adjustForHiddenSeqs(b-1)?this.revealSeq_index=b:this.remove(this.revealSeq)):(this.remove(this.revealAll),this.remove(this.revealSeq))},"jalview.appletgui.AlignmentPanel,jalview.datamodel.SequenceI,java.util.Vector");d(c$,"buildAnnotationSubmenus",function(){var a=null==this.seq?java.util.Collections.emptyList():java.util.Arrays.asList([this.seq]);
+this.buildAnnotationTypesMenus(this.seqShowAnnotationsMenu,this.seqHideAnnotationsMenu,a);this.configureReferenceAnnotationsMenu(this.seqAddReferenceAnnotations,a);a=null==this.ap.av.getSelectionGroup()?java.util.Collections.emptyList():this.ap.av.getSelectionGroup().getSequences();this.buildAnnotationTypesMenus(this.groupShowAnnotationsMenu,this.groupHideAnnotationsMenu,a);this.configureReferenceAnnotationsMenu(this.groupAddReferenceAnnotations,a)});d(c$,"configureReferenceAnnotationsMenu",function(a,
+b){a.setEnabled(!1);var c=new java.util.TreeMap,d=new java.util.LinkedHashMap,e=this.ap.av.getAlignment();jalview.analysis.AlignmentUtils.findAddableReferenceAnnotations(b,c,d,e);d.isEmpty()||((new StringBuilder(64)).append(jalview.util.MessageManager.getString("label.add_annotations_for")),a.setEnabled(!0),a.addActionListener((H("jalview.appletgui.APopupMenu$1")?0:jalview.appletgui.APopupMenu.$APopupMenu$1$(),C(jalview.appletgui.APopupMenu$1,this,T("candidates",d)))))},"awt2swing.MenuItem,java.util.List");
+d(c$,"addReferenceAnnotations_actionPerformed",function(a){var b=this.ap.av.getSelectionGroup(),c=this.ap.getAlignment();jalview.analysis.AlignmentUtils.addReferenceAnnotations(a,c,b);this.refresh()},"java.util.Map");d(c$,"addshowLink",function(a,b,c){this.addshowLink(a,b,b,c)},"awt2swing.Menu,~S,~S");d(c$,"addshowLink",function(a,b,c,d){c=new awt2swing.MenuItem(c);c.addActionListener((H("jalview.appletgui.APopupMenu$2")?0:jalview.appletgui.APopupMenu.$APopupMenu$2$(),C(jalview.appletgui.APopupMenu$2,
+this,T("url",d,"target",b))));a.add(c)},"awt2swing.Menu,~S,~S,~S");e(c$,"itemStateChanged",function(a){a.getSource()===this.abovePIDColour?this.abovePIDColour_itemStateChanged():a.getSource()===this.showColourText?this.showColourText_itemStateChanged():a.getSource()===this.showText?this.showText_itemStateChanged():a.getSource()===this.showBoxes?this.showBoxes_itemStateChanged():a.getSource()===this.displayNonconserved&&this.showNonconserved_itemStateChanged()},"java.awt.event.ItemEvent");e(c$,"actionPerformed",
+function(a){var b=a.getSource();if(b===this.clustalColour)this.clustalColour_actionPerformed();else if(b===this.zappoColour)this.zappoColour_actionPerformed();else if(b===this.taylorColour)this.taylorColour_actionPerformed();else if(b===this.hydrophobicityColour)this.hydrophobicityColour_actionPerformed();else if(b===this.helixColour)this.helixColour_actionPerformed();else if(b===this.strandColour)this.strandColour_actionPerformed();else if(b===this.turnColour)this.turnColour_actionPerformed();else if(b===
+this.buriedColour)this.buriedColour_actionPerformed();else if(b===this.nucleotideMenuItem)this.nucleotideMenuItem_actionPerformed();else if(b===this.userDefinedColour)this.userDefinedColour_actionPerformed();else if(b===this.PIDColour)this.PIDColour_actionPerformed();else if(b===this.BLOSUM62Colour)this.BLOSUM62Colour_actionPerformed();else if(b===this.noColourmenuItem)this.noColourmenuItem_actionPerformed();else if(b===this.conservationMenuItem)this.conservationMenuItem_itemStateChanged();else if(b===
+this.unGroupMenuItem)this.unGroupMenuItem_actionPerformed();else if(b===this.createGroupMenuItem)this.createGroupMenuItem_actionPerformed();else if(b===this.sequenceName)this.editName();else if(b===this.makeReferenceSeq)this.makeReferenceSeq_actionPerformed();else if(b===this.sequenceDetails)this.showSequenceDetails();else if(b===this.selSeqDetails)this.showSequenceSelectionDetails();else if(b===this.pdb)this.addPDB();else if(b===this.hideSeqs)this.hideSequences(!1);else if(b===this.repGroup)this.hideSequences(!0);
+else if(b===this.revealSeq)this.ap.av.showSequence(this.revealSeq_index);else if(b===this.revealAll)this.ap.av.showAllHiddenSeqs();else if(b===this.editGroupName){var c=new jalview.appletgui.EditNameDialog(this.getGroup().getName(),this.getGroup().getDescription(),"       Group Name","Group Description",this.ap.alignFrame,"Edit Group Name / Description",500,100,!0);c.accept&&(this.getGroup().setName(c.getName().$replace(" ","_")),this.getGroup().setDescription(c.getDescription()))}else if(b===this.copy)this.ap.alignFrame.copy_actionPerformed();
+else if(b===this.cut)this.ap.alignFrame.cut_actionPerformed();else if(b===this.editSequence)a=this.ap.av.getSelectionGroup(),null!=a&&(null==this.seq&&(this.seq=a.getSequenceAt(0)),c=new jalview.appletgui.EditNameDialog(this.seq.getSequenceAsString(a.getStartRes(),a.getEndRes()+1),null,"Edit Sequence ",null,this.ap.alignFrame,"Edit Sequence",500,100,!0),c.accept&&(a=new jalview.commands.EditCommand(jalview.util.MessageManager.getString("label.edit_sequences"),jalview.commands.EditCommand.Action.REPLACE,
+c.getName().$replace(" ",this.ap.av.getGapCharacter()),a.getSequencesAsArray(this.ap.av.getHiddenRepSequences()),a.getStartRes(),a.getEndRes()+1,this.ap.av.getAlignment()),this.ap.alignFrame.addHistoryItem(a),this.ap.av.firePropertyChange("alignment",null,this.ap.av.getAlignment().getSequences())));else if(b===this.toUpper||b===this.toLower||b===this.toggleCase){if(a=this.ap.av.getSelectionGroup(),null!=a){var c=this.ap.av.getVisibleRegionBoundaries(a.getStartRes(),a.getEndRes()+1),d;b===this.toggleCase?
+(b="Toggle Case",d=jalview.commands.ChangeCaseCommand.TOGGLE_CASE):b===this.toUpper?(b="To Upper Case",d=jalview.commands.ChangeCaseCommand.TO_UPPER):(b="To Lower Case",d=jalview.commands.ChangeCaseCommand.TO_LOWER);a=new jalview.commands.ChangeCaseCommand(b,a.getSequencesAsArray(this.ap.av.getHiddenRepSequences()),c,d);this.ap.alignFrame.addHistoryItem(a);this.ap.av.firePropertyChange("alignment",null,this.ap.av.getAlignment().getSequences())}}else if(b===this.sequenceFeature){if(a=this.ap.av.getSelectionGroup(),
+null!=a){var c=0,e=a.getSize(),b=Array(e);d=Array(e);for(var k=0;k<e;k++){var g=a.getSequenceAt(k).findPosition(a.getStartRes()),h=a.findEndRes(a.getSequenceAt(k));g<=h&&(b[c]=a.getSequenceAt(k),d[c]=new jalview.datamodel.SequenceFeature(null,null,null,g,h,"Jalview"),c++)}a=Array(c);e=Array(c);System.arraycopy(b,0,a,0,c);System.arraycopy(d,0,e,0,c);this.ap.seqPanel.seqCanvas.getFeatureRenderer().amendFeatures(a,e,!0,this.ap)&&(this.ap.alignFrame.sequenceFeatures.setState(!0),this.ap.av.setShowSequenceFeatures(!0),
+this.ap.highlightSearchResults(null))}}else this.outputText(a)},"java.awt.event.ActionEvent");d(c$,"outputText",function(a){var b=new jalview.appletgui.CutAndPasteTransfer(!0,this.ap.alignFrame),c=new awt2swing.Frame;c.add(b);jalview.bin.JalviewLite.addFrame(c,jalview.util.MessageManager.formatMessage("label.selection_output_command",E(-1,[a.getActionCommand()])),600,500);b.setText((new jalview.io.AppletFormatAdapter).formatSequences(a.getActionCommand(),this.ap.av.getShowJVSuffix(),this.ap,!0))},
+"java.awt.event.ActionEvent");d(c$,"showSequenceSelectionDetails",function(){this.createSequenceDetailsReport(this.ap.av.getSequenceSelection())});d(c$,"showSequenceDetails",function(){this.createSequenceDetailsReport(E(-1,[this.seq]))});d(c$,"createSequenceDetailsReport",function(a){for(var b=new jalview.appletgui.CutAndPasteTransfer(!1,this.ap.alignFrame),c=new StringBuffer,d,e=0;e<a.length&&((d=a[e])||1);e++)c.append(jalview.util.MessageManager.formatMessage("label.annotation_for_displayid",E(-1,
+[d.getDisplayId(!0)]))),(new jalview.io.SequenceAnnotationReport(null)).createSequenceAnnotationReport(c,d,!0,!0,!1,null!=this.ap.seqPanel.seqCanvas.fr?this.ap.seqPanel.seqCanvas.fr.getMinMax():null),c.append("</p>");d=new awt2swing.Frame;d.add(b);jalview.bin.JalviewLite.addFrame(d,"Sequence Details for "+(1==a.length?a[0].getDisplayId(!0):"Selection"),600,500);b.setText(jalview.util.MessageManager.formatMessage("label.html_content",E(-1,[c.toString()])))},"~A");d(c$,"editName",function(){var a=new jalview.appletgui.EditNameDialog(this.seq.getName(),
+this.seq.getDescription(),"       Sequence Name","Sequence Description",this.ap.alignFrame,"Edit Sequence Name / Description",500,100,!0);a.accept&&(this.seq.setName(a.getName()),this.seq.setDescription(a.getDescription()),this.ap.paintAlignment(!1))});d(c$,"addPDB",function(){if(null!=this.seq.getPDBId()){var a=this.seq.getPDBId().firstElement();this.ap.av.applet.jmolAvailable&&new jalview.appletgui.AppletJmol(a,E(-1,[this.seq]),null,this.ap,jalview.io.AppletFormatAdapter.URL)}else{a=new jalview.appletgui.CutAndPasteTransfer(!0,
+this.ap.alignFrame);a.setText(jalview.util.MessageManager.getString("label.paste_pdb_file"));a.setPDBImport(this.seq);var b=new awt2swing.Frame;b.add(a);jalview.bin.JalviewLite.addFrame(b,jalview.util.MessageManager.formatMessage("label.paste_pdb_file_for_sequence",E(-1,[this.seq.getName()])),400,300)}});d(c$,"jbInit",function(){this.groupMenu.setLabel(jalview.util.MessageManager.getString("label.selection"));this.sequenceFeature.addActionListener(this);this.editGroupName.addActionListener(this);
+this.unGroupMenuItem.setLabel(jalview.util.MessageManager.getString("action.remove_group"));this.unGroupMenuItem.addActionListener(this);this.createGroupMenuItem.setLabel(jalview.util.MessageManager.getString("action.create_group"));this.createGroupMenuItem.addActionListener(this);this.nucleotideMenuItem.setLabel(jalview.util.MessageManager.getString("label.nucleotide"));this.nucleotideMenuItem.addActionListener(this);this.conservationMenuItem.addItemListener(this);this.abovePIDColour.addItemListener(this);
+this.colourMenu.setLabel(jalview.util.MessageManager.getString("label.group_colour"));this.showBoxes.setLabel(jalview.util.MessageManager.getString("action.boxes"));this.showBoxes.setState(!0);this.showBoxes.addItemListener(this);this.sequenceName.addActionListener(this);this.sequenceDetails.addActionListener(this);this.selSeqDetails.addActionListener(this);this.displayNonconserved.setLabel(jalview.util.MessageManager.getString("label.show_non_conversed"));this.displayNonconserved.setState(!1);this.displayNonconserved.addItemListener(this);
+this.showText.setLabel(jalview.util.MessageManager.getString("action.text"));this.showText.addItemListener(this);this.showColourText.setLabel(jalview.util.MessageManager.getString("label.colour_text"));this.showColourText.addItemListener(this);this.outputmenu.setLabel(jalview.util.MessageManager.getString("label.out_to_textbox"));this.seqMenu.setLabel(jalview.util.MessageManager.getString("label.sequence"));this.pdb.setLabel(jalview.util.MessageManager.getString("label.view_pdb_structure"));this.hideSeqs.setLabel(jalview.util.MessageManager.getString("action.hide_sequences"));
+this.repGroup.setLabel(jalview.util.MessageManager.formatMessage("label.represent_group_with",E(-1,[""])));this.revealAll.setLabel(jalview.util.MessageManager.getString("action.reveal_all"));this.revealSeq.setLabel(jalview.util.MessageManager.getString("action.reveal_sequences"));this.menu1.setLabel(jalview.util.MessageManager.getString("label.group")+":");this.add(this.groupMenu);this.add(this.seqMenu);this.add(this.hideSeqs);this.add(this.revealSeq);this.add(this.revealAll);this.groupMenu.add(this.groupShowAnnotationsMenu);
+this.groupMenu.add(this.groupHideAnnotationsMenu);this.groupMenu.add(this.groupAddReferenceAnnotations);this.groupMenu.add(this.editMenu);this.groupMenu.add(this.outputmenu);this.groupMenu.add(this.sequenceFeature);this.groupMenu.add(this.createGroupMenuItem);this.groupMenu.add(this.unGroupMenuItem);this.groupMenu.add(this.menu1);this.colourMenu.add(this.noColourmenuItem);this.colourMenu.add(this.clustalColour);this.colourMenu.add(this.BLOSUM62Colour);this.colourMenu.add(this.PIDColour);this.colourMenu.add(this.zappoColour);
+this.colourMenu.add(this.taylorColour);this.colourMenu.add(this.hydrophobicityColour);this.colourMenu.add(this.helixColour);this.colourMenu.add(this.strandColour);this.colourMenu.add(this.turnColour);this.colourMenu.add(this.buriedColour);this.colourMenu.add(this.nucleotideMenuItem);this.colourMenu.add(this.userDefinedColour);this.colourMenu.addSeparator();this.colourMenu.add(this.abovePIDColour);this.colourMenu.add(this.conservationMenuItem);this.noColourmenuItem.setLabel(jalview.util.MessageManager.getString("label.none"));
+this.noColourmenuItem.addActionListener(this);this.clustalColour.setLabel(jalview.util.MessageManager.getString("label.clustalx_colours"));this.clustalColour.addActionListener(this);this.zappoColour.setLabel(jalview.util.MessageManager.getString("label.zappo"));this.zappoColour.addActionListener(this);this.taylorColour.setLabel(jalview.util.MessageManager.getString("label.taylor"));this.taylorColour.addActionListener(this);this.hydrophobicityColour.setLabel(jalview.util.MessageManager.getString("label.hydrophobicity"));
+this.hydrophobicityColour.addActionListener(this);this.helixColour.setLabel(jalview.util.MessageManager.getString("label.helix_propensity"));this.helixColour.addActionListener(this);this.strandColour.setLabel(jalview.util.MessageManager.getString("label.strand_propensity"));this.strandColour.addActionListener(this);this.turnColour.setLabel(jalview.util.MessageManager.getString("label.turn_propensity"));this.turnColour.addActionListener(this);this.buriedColour.setLabel(jalview.util.MessageManager.getString("label.buried_index"));
+this.buriedColour.addActionListener(this);this.abovePIDColour.setLabel(jalview.util.MessageManager.getString("label.above_identity_percentage"));this.userDefinedColour.setLabel(jalview.util.MessageManager.getString("action.user_defined"));this.userDefinedColour.addActionListener(this);this.PIDColour.setLabel(jalview.util.MessageManager.getString("action.percentage_identity"));this.PIDColour.addActionListener(this);this.BLOSUM62Colour.setLabel("BLOSUM62");this.BLOSUM62Colour.addActionListener(this);
+this.conservationMenuItem.setLabel(jalview.util.MessageManager.getString("label.conservation"));this.editMenu.add(this.copy);this.copy.addActionListener(this);this.editMenu.add(this.cut);this.cut.addActionListener(this);this.editMenu.add(this.editSequence);this.editSequence.addActionListener(this);this.editMenu.add(this.toUpper);this.toUpper.addActionListener(this);this.editMenu.add(this.toLower);this.toLower.addActionListener(this);this.editMenu.add(this.toggleCase);this.seqMenu.add(this.seqShowAnnotationsMenu);
+this.seqMenu.add(this.seqHideAnnotationsMenu);this.seqMenu.add(this.seqAddReferenceAnnotations);this.seqMenu.add(this.sequenceName);this.seqMenu.add(this.makeReferenceSeq);this.ap.av.applet.useXtrnalSviewer||this.seqMenu.add(this.pdb);this.seqMenu.add(this.repGroup);this.menu1.add(this.editGroupName);this.menu1.add(this.colourMenu);this.menu1.add(this.showBoxes);this.menu1.add(this.showText);this.menu1.add(this.showColourText);this.menu1.add(this.displayNonconserved);this.toggleCase.addActionListener(this);
+this.pdb.addActionListener(this);this.hideSeqs.addActionListener(this);this.repGroup.addActionListener(this);this.revealAll.addActionListener(this);this.revealSeq.addActionListener(this);this.makeReferenceSeq.addActionListener(this)});d(c$,"refresh",function(){this.ap.paintAlignment(!0)});d(c$,"clustalColour_actionPerformed",function(){var a=this.getGroup();a.cs=new jalview.schemes.ClustalxColourScheme(a,this.ap.av.getHiddenRepSequences());this.refresh()});d(c$,"zappoColour_actionPerformed",function(){this.getGroup().cs=
+new jalview.schemes.ZappoColourScheme;this.refresh()});d(c$,"taylorColour_actionPerformed",function(){this.getGroup().cs=new jalview.schemes.TaylorColourScheme;this.refresh()});d(c$,"hydrophobicityColour_actionPerformed",function(){this.getGroup().cs=new jalview.schemes.HydrophobicColourScheme;this.refresh()});d(c$,"helixColour_actionPerformed",function(){this.getGroup().cs=new jalview.schemes.HelixColourScheme;this.refresh()});d(c$,"strandColour_actionPerformed",function(){this.getGroup().cs=new jalview.schemes.StrandColourScheme;
+this.refresh()});d(c$,"turnColour_actionPerformed",function(){this.getGroup().cs=new jalview.schemes.TurnColourScheme;this.refresh()});d(c$,"buriedColour_actionPerformed",function(){this.getGroup().cs=new jalview.schemes.BuriedColourScheme;this.refresh()});d(c$,"nucleotideMenuItem_actionPerformed",function(){this.getGroup().cs=new jalview.schemes.NucleotideColourScheme;this.refresh()});d(c$,"abovePIDColour_itemStateChanged",function(){var a=this.getGroup();if(null!=a.cs){if(this.abovePIDColour.getState()){a.cs.setConsensus(jalview.analysis.AAFrequency.calculate(a.getSequences(this.ap.av.getHiddenRepSequences()),
+0,this.ap.av.getAlignment().getWidth()));var b=jalview.appletgui.SliderPanel.setPIDSliderSource(this.ap,a.cs,this.getGroup().getName());a.cs.setThreshold(b,this.ap.av.isIgnoreGapsConsensus());jalview.appletgui.SliderPanel.showPIDSlider()}else a.cs.setThreshold(0,this.ap.av.isIgnoreGapsConsensus());this.refresh()}});d(c$,"userDefinedColour_actionPerformed",function(){new jalview.appletgui.UserDefinedColours(this.ap,this.getGroup())});d(c$,"PIDColour_actionPerformed",function(){var a=this.getGroup();
+a.cs=new jalview.schemes.PIDColourScheme;a.cs.setConsensus(jalview.analysis.AAFrequency.calculate(a.getSequences(this.ap.av.getHiddenRepSequences()),0,this.ap.av.getAlignment().getWidth()));this.refresh()});d(c$,"BLOSUM62Colour_actionPerformed",function(){var a=this.getGroup();a.cs=new jalview.schemes.Blosum62ColourScheme;a.cs.setConsensus(jalview.analysis.AAFrequency.calculate(a.getSequences(this.ap.av.getHiddenRepSequences()),0,this.ap.av.getAlignment().getWidth()));this.refresh()});d(c$,"noColourmenuItem_actionPerformed",
+function(){this.getGroup().cs=null;this.refresh()});d(c$,"conservationMenuItem_itemStateChanged",function(){var a=this.getGroup();null!=a.cs&&(this.conservationMenuItem.getState()?(a.cs.setConservation(jalview.analysis.Conservation.calculateConservation("Group",jalview.schemes.ResidueProperties.propHash,3,a.getSequences(this.ap.av.getHiddenRepSequences()),0,this.ap.av.getAlignment().getWidth(),!1,this.ap.av.getConsPercGaps(),!1)),jalview.appletgui.SliderPanel.setConservationSlider(this.ap,a.cs,a.getName()),
+jalview.appletgui.SliderPanel.showConservationSlider()):a.cs.setConservation(null),this.refresh())});d(c$,"getGroup",function(){var a=this.ap.av.getSelectionGroup();null!=a&&this.ap.av.getAlignment().addGroup(a);return a});d(c$,"unGroupMenuItem_actionPerformed",function(){var a=this.ap.av.getSelectionGroup();this.ap.av.getAlignment().deleteGroup(a);this.ap.av.setSelectionGroup(null);this.ap.paintAlignment(!0)});d(c$,"createGroupMenuItem_actionPerformed",function(){this.getGroup();this.refresh()});
+d(c$,"showColourText_itemStateChanged",function(){this.getGroup().setColourText(this.showColourText.getState());this.refresh()});d(c$,"showText_itemStateChanged",function(){this.getGroup().setDisplayText(this.showText.getState());this.refresh()});d(c$,"makeReferenceSeq_actionPerformed",function(){this.ap.av.getAlignment().hasSeqrep()?this.ap.av.getAlignment().getSeqrep()===this.seq?this.ap.av.getAlignment().setSeqrep(null):this.ap.av.getAlignment().setSeqrep(this.seq):(this.ap.av.setDisplayReferenceSeq(!0),
+this.ap.av.setColourByReferenceSeq(!0),this.ap.av.getAlignment().setSeqrep(this.seq));this.refresh()});d(c$,"showNonconserved_itemStateChanged",function(){this.getGroup().setShowNonconserved(this.displayNonconserved.getState());this.refresh()});d(c$,"showBoxes_itemStateChanged",function(){this.getGroup().setDisplayBoxes(this.showBoxes.getState());this.refresh()});d(c$,"hideSequences",function(a){var b=this.ap.av.getSelectionGroup();if(null==b||1>b.getSize())this.ap.av.hideSequence(E(-1,[this.seq]));
+else if(this.ap.av.setSelectionGroup(null),a)this.ap.av.hideRepSequences(this.seq,b);else{a=b.getSize();var c;c=Array(a);for(var d=0,e=0;e<a;e++)c[d++]=b.getSequenceAt(e);this.ap.av.hideSequence(c);this.ap.av.sendSelection()}},"~B");d(c$,"buildAnnotationTypesMenus",function(a,b,c){a.removeAll();b.removeAll();var d=java.util.Arrays.asList(["All"]);this.addAnnotationTypeToShowHide(a,c,"",d,!0,!0);this.addAnnotationTypeToShowHide(b,c,"",d,!0,!1);a.addSeparator();b.addSeparator();var e=this.ap.getAlignment().getAlignmentAnnotation(),
+d=new java.util.LinkedHashMap,k=new java.util.LinkedHashMap;jalview.analysis.AlignmentAnnotationUtils.getShownHiddenTypes(d,k,jalview.analysis.AlignmentAnnotationUtils.asList(e),c);for(var g,e=k.keySet().iterator();e.hasNext()&&((g=e.next())||1);)for(var h,j=k.get(g).iterator();j.hasNext()&&((h=j.next())||1);)this.addAnnotationTypeToShowHide(a,c,g,h,!1,!0);a.setEnabled(!k.isEmpty());for(e=d.keySet().iterator();e.hasNext()&&((g=e.next())||1);)for(j=d.get(g).iterator();j.hasNext()&&((h=j.next())||1);)this.addAnnotationTypeToShowHide(b,
+c,g,h,!1,!1);b.setEnabled(!d.isEmpty())},"awt2swing.Menu,awt2swing.Menu,java.util.List");d(c$,"addAnnotationTypeToShowHide",function(a,b,c,d,e,k){c=d.toString();c=c.substring(1,c.length-1);c=new awt2swing.MenuItem(c);c.addActionListener((H("jalview.appletgui.APopupMenu$3")?0:jalview.appletgui.APopupMenu.$APopupMenu$3$(),C(jalview.appletgui.APopupMenu$3,this,T("types",d,"forSequences",b,"allTypes",e,"actionIsShow",k))));a.add(c)},"awt2swing.Menu,java.util.List,~S,java.util.List,~B,~B");c$.$APopupMenu$1$=
+function(){A(self.c$);c$=L(jalview.appletgui,"APopupMenu$1",null,java.awt.event.ActionListener);e(c$,"actionPerformed",function(){this.b$["jalview.appletgui.APopupMenu"].addReferenceAnnotations_actionPerformed(this.f$.candidates)},"java.awt.event.ActionEvent");c$=z()};c$.$APopupMenu$2$=function(){A(self.c$);c$=L(jalview.appletgui,"APopupMenu$2",null,java.awt.event.ActionListener);e(c$,"actionPerformed",function(){this.b$["jalview.appletgui.APopupMenu"].ap.alignFrame.showURL(this.f$.url,this.f$.target)},
+"java.awt.event.ActionEvent");c$=z()};c$.$APopupMenu$3$=function(){A(self.c$);c$=L(jalview.appletgui,"APopupMenu$3",null,java.awt.event.ActionListener);e(c$,"actionPerformed",function(){jalview.analysis.AlignmentUtils.showOrHideSequenceAnnotations(this.b$["jalview.appletgui.APopupMenu"].ap.getAlignment(),this.f$.types,this.f$.forSequences,this.f$.allTypes,this.f$.actionIsShow);this.b$["jalview.appletgui.APopupMenu"].refresh()},"java.awt.event.ActionEvent");c$=z()};G(c$,"ALL_ANNOTATIONS","All")});
+p("jalview.analysis");q(null,"jalview.analysis.AlignmentAnnotationUtils",["java.util.ArrayList","$.Arrays","$.BitSet","$.Collections","$.HashMap"],function(){c$=B(jalview.analysis,"AlignmentAnnotationUtils");c$.getShownHiddenTypes=d(c$,"getShownHiddenTypes",function(a,b,c,d){var e=jalview.analysis.AlignmentAnnotationUtils.getVisibleLineGraphGroups(c),k=new java.util.HashMap,g=new java.util.ArrayList,h=new java.util.ArrayList,j;for(c=c.iterator();c.hasNext()&&((j=c.next())||1);)if(null!=j.annotations&&
+null!=d&&null!=j.sequenceRef&&d.contains(j.sequenceRef)){var n=j.getCalcId(),m=new java.util.ArrayList,p=j.label;m.add(p);if(2==j.graph&&-1<j.graphGroup){k.containsKey(n)||k.put(n,new java.util.HashMap);var q=k.get(n);q.containsKey(new Integer(j.graphGroup))?q.get(new Integer(j.graphGroup)).contains(p)||q.get(new Integer(j.graphGroup)).add(p):q.put(new Integer(j.graphGroup),m)}else p=n+"!"+p,j.visible&&!g.contains(p)?(a.containsKey(n)||a.put(n,new java.util.ArrayList),a.get(n).add(m),g.add(p)):!j.visible&&
+!h.contains(p)&&(b.containsKey(n)||b.put(n,new java.util.ArrayList),b.get(n).add(m),h.add(p))}for(d=k.keySet().iterator();d.hasNext()&&((n=d.next())||1);)for(var r,g=k.get(n).keySet().iterator();g.hasNext()&&((r=g.next())||1);)h=k.get(n).get(new Integer(r)),java.util.Collections.sort(h),e.get(r)?(a.containsKey(n)||a.put(n,new java.util.ArrayList),a.get(n).contains(h)||a.get(n).add(h)):(b.containsKey(n)||b.put(n,new java.util.ArrayList),b.get(n).contains(h)||b.get(n).add(h))},"java.util.Map,java.util.Map,java.util.List,java.util.List");
+c$.getVisibleLineGraphGroups=d(c$,"getVisibleLineGraphGroups",function(a){var b=new java.util.BitSet,c;for(a=a.iterator();a.hasNext()&&((c=a.next())||1);)if(2==c.graph&&c.visible){var d=c.graphGroup;-1<d&&b.set(d)}return b},"java.util.List");c$.asList=d(c$,"asList",function(a){return null==a?java.util.Collections.emptyList():java.util.Arrays.asList(a)},"~A")});p("jalview.appletgui");q("awt2swing.Panel java.awt.event.ActionListener $.AdjustmentListener $.MouseListener awt2swing.Button $.Checkbox $.Label $.Scrollbar $.TextField java.awt.BorderLayout $.FlowLayout".split(" "),
+"jalview.appletgui.SliderPanel","awt2swing.Frame jalview.bin.JalviewLite jalview.util.MessageManager java.awt.Color $.Font java.awt.event.WindowAdapter".split(" "),function(){c$=s(function(){this.ap=null;this.forConservation=!0;this.flowLayout2=this.borderLayout2=this.borderLayout1=this.allGroupsCheck=this.flowLayout1=this.undoButton=this.applyButton=this.jPanel2=this.jPanel1=this.label=this.valueField=this.slider=this.cs=null;r(this,arguments)},jalview.appletgui,"SliderPanel",awt2swing.Panel,[java.awt.event.ActionListener,
+java.awt.event.AdjustmentListener,java.awt.event.MouseListener]);J(c$,function(){this.slider=new awt2swing.Scrollbar;this.valueField=new awt2swing.TextField;this.label=new awt2swing.Label;this.jPanel1=new awt2swing.Panel;this.jPanel2=new awt2swing.Panel;this.applyButton=new awt2swing.Button;this.undoButton=new awt2swing.Button;this.flowLayout1=new java.awt.FlowLayout;this.allGroupsCheck=new awt2swing.Checkbox;this.borderLayout1=new java.awt.BorderLayout;this.borderLayout2=new java.awt.BorderLayout;
+this.flowLayout2=new java.awt.FlowLayout});c$.setConservationSlider=d(c$,"setConservationSlider",function(a,b,c){var d=null;null==jalview.appletgui.SliderPanel.conservationSlider?(d=new jalview.appletgui.SliderPanel(a,b.getConservationInc(),!0,b),jalview.appletgui.SliderPanel.conservationSlider=new awt2swing.Frame,jalview.appletgui.SliderPanel.conservationSlider.add(d)):(d=jalview.appletgui.SliderPanel.conservationSlider.getComponent(0),d.cs=b);jalview.appletgui.SliderPanel.conservationSlider.setTitle(jalview.util.MessageManager.formatMessage("label.conservation_colour_increment",
+E(-1,[c])));null!=a.av.getAlignment().getGroups()?d.setAllGroupsCheckEnabled(!0):d.setAllGroupsCheckEnabled(!1);return d.getValue()},"jalview.appletgui.AlignmentPanel,jalview.schemes.ColourSchemeI,~S");c$.showConservationSlider=d(c$,"showConservationSlider",function(){try{jalview.appletgui.SliderPanel.PIDSlider.setVisible(!1),jalview.appletgui.SliderPanel.PIDSlider=null}catch(a){if(!y(a,Exception))throw a;}jalview.appletgui.SliderPanel.conservationSlider.isVisible()||(jalview.bin.JalviewLite.addFrame(jalview.appletgui.SliderPanel.conservationSlider,
+jalview.appletgui.SliderPanel.conservationSlider.getTitle(),420,100),jalview.appletgui.SliderPanel.conservationSlider.addWindowListener((H("jalview.appletgui.SliderPanel$1")?0:jalview.appletgui.SliderPanel.$SliderPanel$1$(),C(jalview.appletgui.SliderPanel$1,this,null))))});c$.setPIDSliderSource=d(c$,"setPIDSliderSource",function(a,b,c){var d=null;null==jalview.appletgui.SliderPanel.PIDSlider?(d=new jalview.appletgui.SliderPanel(a,50,!1,b),jalview.appletgui.SliderPanel.PIDSlider=new awt2swing.Frame,
+jalview.appletgui.SliderPanel.PIDSlider.add(d)):(d=jalview.appletgui.SliderPanel.PIDSlider.getComponent(0),d.cs=b);jalview.appletgui.SliderPanel.PIDSlider.setTitle(jalview.util.MessageManager.formatMessage("label.percentage_identity_thereshold",E(-1,[c])));null!=a.av.getAlignment().getGroups()?d.setAllGroupsCheckEnabled(!0):d.setAllGroupsCheckEnabled(!1);return d.getValue()},"jalview.appletgui.AlignmentPanel,jalview.schemes.ColourSchemeI,~S");c$.showPIDSlider=d(c$,"showPIDSlider",function(){try{jalview.appletgui.SliderPanel.conservationSlider.setVisible(!1),
+jalview.appletgui.SliderPanel.conservationSlider=null}catch(a){if(!y(a,Exception))throw a;}jalview.appletgui.SliderPanel.PIDSlider.isVisible()||(jalview.bin.JalviewLite.addFrame(jalview.appletgui.SliderPanel.PIDSlider,jalview.appletgui.SliderPanel.PIDSlider.getTitle(),420,100),jalview.appletgui.SliderPanel.PIDSlider.addWindowListener((H("jalview.appletgui.SliderPanel$2")?0:jalview.appletgui.SliderPanel.$SliderPanel$2$(),C(jalview.appletgui.SliderPanel$2,this,null))))});m(c$,function(a,b,c,d){t(this,
+jalview.appletgui.SliderPanel,[]);try{this.jbInit()}catch(e){if(y(e,Exception))e.printStackTrace();else throw e;}this.ap=a;this.cs=d;this.forConservation=c;this.undoButton.setVisible(!1);this.applyButton.setVisible(!1);this.forConservation?(this.label.setText(jalview.util.MessageManager.getString("label.modify_conservation_visibility")),this.slider.setMinimum(0),this.slider.setMaximum(50+this.slider.getVisibleAmount()),this.slider.setUnitIncrement(1)):(this.label.setText(jalview.util.MessageManager.getString("label.colour_residues_above_occurence")),
+this.slider.setMinimum(0),this.slider.setMaximum(100+this.slider.getVisibleAmount()),this.slider.setBlockIncrement(1));this.slider.addAdjustmentListener(this);this.slider.addMouseListener(this);this.slider.setValue(b);this.valueField.setText(b+"")},"jalview.appletgui.AlignmentPanel,~N,~B,jalview.schemes.ColourSchemeI");d(c$,"valueChanged",function(a){if(null!=this.cs){var b=this.cs,c=null;for(this.allGroupsCheck.getState()&&(c=this.ap.av.getAlignment().getGroups().listIterator());null!=b;)if(this.forConservation?
+b.setConservationInc(a):b.setThreshold(a,this.ap.av.isIgnoreGapsConsensus()),null!=c&&c.hasNext())for(;null==(b=c.next().cs)&&c.hasNext(););else b=null;this.ap.seqPanel.seqCanvas.repaint()}},"~N");d(c$,"setAllGroupsCheckEnabled",function(a){this.allGroupsCheck.setEnabled(a)},"~B");e(c$,"actionPerformed",function(a){a.getSource()===this.applyButton?this.applyButton_actionPerformed():a.getSource()===this.undoButton?this.undoButton_actionPerformed():a.getSource()===this.valueField&&this.valueField_actionPerformed()},
+"java.awt.event.ActionEvent");e(c$,"adjustmentValueChanged",function(){this.valueField.setText(this.slider.getValue()+"");this.valueChanged(this.slider.getValue())},"java.awt.event.AdjustmentEvent");d(c$,"valueField_actionPerformed",function(){try{var a=Integer.parseInt(this.valueField.getText());this.slider.setValue(a)}catch(b){if(y(b,Exception))this.valueField.setText(this.slider.getValue()+"");else throw b;}});d(c$,"setValue",function(a){this.slider.setValue(a)},"~N");d(c$,"getValue",function(){return Integer.parseInt(this.valueField.getText())});
+d(c$,"jbInit",function(){this.setLayout(this.borderLayout2);this.slider.setBackground(java.awt.Color.white);this.slider.setFont(new java.awt.Font("Verdana",0,11));this.slider.setOrientation(0);this.valueField.setFont(new java.awt.Font("Verdana",0,11));this.valueField.setText("   ");this.valueField.addActionListener(this);this.valueField.setColumns(3);this.label.setFont(new java.awt.Font("Verdana",0,11));this.label.setText(jalview.util.MessageManager.getString("label.set_this_label_text"));this.jPanel1.setLayout(this.borderLayout1);
+this.jPanel2.setLayout(this.flowLayout1);this.applyButton.setFont(new java.awt.Font("Verdana",0,11));this.applyButton.setLabel(jalview.util.MessageManager.getString("action.apply"));this.applyButton.addActionListener(this);this.undoButton.setEnabled(!1);this.undoButton.setFont(new java.awt.Font("Verdana",0,11));this.undoButton.setLabel(jalview.util.MessageManager.getString("action.undo"));this.undoButton.addActionListener(this);this.allGroupsCheck.setEnabled(!1);this.allGroupsCheck.setFont(new java.awt.Font("Verdana",
+0,11));this.allGroupsCheck.setLabel(jalview.util.MessageManager.getString("action.apply_threshold_all_groups"));this.allGroupsCheck.setName(jalview.util.MessageManager.getString("action.apply_all_groups"));this.setBackground(java.awt.Color.white);this.setForeground(java.awt.Color.black);this.jPanel2.add(this.label,null);this.jPanel2.add(this.applyButton,null);this.jPanel2.add(this.undoButton,null);this.jPanel2.add(this.allGroupsCheck);this.jPanel1.add(this.valueField,"East");this.jPanel1.add(this.slider,
+"Center");this.add(this.jPanel1,"South");this.add(this.jPanel2,"Center")});d(c$,"applyButton_actionPerformed",function(){});d(c$,"undoButton_actionPerformed",function(){});e(c$,"mousePressed",function(){},"java.awt.event.MouseEvent");e(c$,"mouseReleased",function(){this.ap.paintAlignment(!0)},"java.awt.event.MouseEvent");e(c$,"mouseClicked",function(){},"java.awt.event.MouseEvent");e(c$,"mouseEntered",function(){},"java.awt.event.MouseEvent");e(c$,"mouseExited",function(){},"java.awt.event.MouseEvent");
+c$.$SliderPanel$1$=function(){A(self.c$);c$=L(jalview.appletgui,"SliderPanel$1",java.awt.event.WindowAdapter);e(c$,"windowClosing",function(){jalview.appletgui.SliderPanel.conservationSlider=null},"java.awt.event.WindowEvent");c$=z()};c$.$SliderPanel$2$=function(){A(self.c$);c$=L(jalview.appletgui,"SliderPanel$2",java.awt.event.WindowAdapter);e(c$,"windowClosing",function(){jalview.appletgui.SliderPanel.PIDSlider=null},"java.awt.event.WindowEvent");c$=z()};G(c$,"conservationSlider",null,"PIDSlider",
+null)});p("jalview.commands");q(["jalview.commands.CommandI"],"jalview.commands.ChangeCaseCommand",["java.lang.StringBuffer"],function(){c$=s(function(){this.description=null;this.caseChange=-1;this.regions=this.seqs=null;r(this,arguments)},jalview.commands,"ChangeCaseCommand",null,jalview.commands.CommandI);m(c$,function(a,b,c,d){this.description=a;this.seqs=b;this.regions=c;this.caseChange=d;this.doCommand(null)},"~S,~A,java.util.List,~N");e(c$,"getDescription",function(){return this.description});
+e(c$,"getSize",function(){return 1});e(c$,"doCommand",function(){this.changeCase(!0)},"~A");e(c$,"undoCommand",function(){this.changeCase(!1)},"~A");d(c$,"changeCase",function(a){for(var b,c,d,e,k,g=this.regions.iterator();g.hasNext()&&((k=g.next())||1);){c=k[0];for(var h=0;h<this.seqs.length;h++){b=this.seqs[h].getSequenceAsString();var j=new StringBuffer;d=k[1]>b.length?b.length:k[1];0<c&&j.append(b.substring(0,c));if(this.caseChange==jalview.commands.ChangeCaseCommand.TO_UPPER&&a||this.caseChange==
+jalview.commands.ChangeCaseCommand.TO_LOWER&&!a)j.append(b.substring(c,d).toUpperCase());else if(this.caseChange==jalview.commands.ChangeCaseCommand.TO_LOWER&&a||this.caseChange==jalview.commands.ChangeCaseCommand.TO_UPPER&&!a)j.append(b.substring(c,d).toLowerCase());else for(var n=c;n<d;n++)e=b.charAt(n),"a"<=e&&"z">=e?e=String.fromCharCode(e.charCodeAt(0)-32):"A"<=e&&"Z">=e&&(e=String.fromCharCode(e.charCodeAt(0)+32)),j.append(e);d<b.length&&j.append(b.substring(d));this.seqs[h].setSequence(j.toString())}}},
+"~B");G(c$,"TO_LOWER",0,"TO_UPPER",1,"TOGGLE_CASE",2)});p("jalview.io");q(null,"jalview.io.SequenceAnnotationReport",["jalview.util.DBRefUtils","$.UrlLink","java.lang.Float","java.util.ArrayList"],function(){c$=s(function(){this.linkImageURL=null;r(this,arguments)},jalview.io,"SequenceAnnotationReport");m(c$,function(a){this.linkImageURL=a},"~S");d(c$,"appendFeatures",function(a,b,c){this.appendFeatures(a,b,c,null)},"StringBuffer,~N,java.util.List");d(c$,"appendFeatures",function(a,b,c,d){var e;if(null!=
+c){var k;for(c=c.iterator();c.hasNext()&&((k=c.next())||1);){if(k.getType().equals("disulfide bond")){if(k.getBegin()==b||k.getEnd()==b)6<a.length()&&a.append("<br>"),a.append("disulfide bond "+k.getBegin()+":"+k.getEnd())}else if(6<a.length()&&a.append("<br>"),null==k.getValue("linkonly")){a.append(k.getType()+" ");0!=b&&a.append(""+k.begin);k.begin!=k.end&&a.append(" "+k.end);if(null!=k.getDescription()&&!k.description.equals(k.getType())){e=k.getDescription();var g=e.toUpperCase(),h=g.indexOf("<HTML>");
+-1<h&&(e=e.substring(h+6),g=g.substring(h+6));var j=g.indexOf("</BODY>");-1<j&&(e=e.substring(0,j),g=g.substring(0,j));j=g.indexOf("</HTML>");-1<j&&(e=e.substring(0,j));-1<h?a.append("; "+e):-1<e.indexOf("<")||-1<e.indexOf(">")?(e=e.replaceAll("<","&lt;"),e=e.replaceAll(">","&gt;"),a.append("; "),a.append(e)):a.append("; "+e)}Float.isNaN(k.getScore())||(e=null==d?null:d.get(k.getType()),null!=e&&(null!=e[0]&&e[0][0]!=e[0][1])&&a.append(" Score="+k.getScore()));null!=k.getValue("status")&&0<k.getValue("status").toString().length&&
+a.append("; ("+k.getValue("status")+")")}if(null!=k.links)if(null!=this.linkImageURL)a.append(' <img src="'+this.linkImageURL+'">');else{var n;for(e=k.links.iterator();e.hasNext()&&((n=e.next())||1);)try{for(var m,g=0,p=this.createLinksFrom(null,n);g<p.length&&((m=p[g])||1);g++)a.append('<br/> <a href="'+m[3]+'" target="'+m[0]+'">'+(m[0].toLowerCase().equals(m[1].toLowerCase())?m[0]:m[0]+":"+m[1])+"</a></br>")}catch(q){if(y(q,Exception))System.err.println("problem when creating links from "+n),q.printStackTrace();
+else throw q;}}}}},"StringBuffer,~N,java.util.List,java.util.Hashtable");d(c$,"createLinksFrom",function(a,b){var c=new java.util.ArrayList,d=new java.util.ArrayList,e=new jalview.util.UrlLink(b);if(!e.isValid())return System.err.println(e.getInvalidMessage()),null;var k=e.getTarget(),g=e.getLabel();if(null!=a&&e.isDynamic()){var h=jalview.util.DBRefUtils.selectRefs(a.getDBRef(),E(-1,[k])),j=a.getName(),n=a.getDescription();null!=n&&1>n.length&&(n=null);if(null!=h)for(var m=0;m<h.length;m++){null!=
+j&&h[m].getAccessionId().equals(j)&&(j=null);var p=e.makeUrls(h[m].getAccessionId(),!0);if(null!=p)for(var q=0;q<p.length;q+=2){var r=p[q]+"|"+p[q+1];d.contains(r)||(c.add(E(-1,[k,g,p[q],p[q+1]])),d.add(r))}}if(null!=j&&(p=e.makeUrls(j,!0),null!=p))for(q=0;q<p.length;q+=2)r=p[q]+"|"+p[q+1],d.contains(r)||(c.add(E(-1,[k,g,p[q],p[q+1]])),d.add(r));if(null!=n&&null!=e.getRegexReplace()&&(p=e.makeUrls(n,!0),null!=p))for(q=0;q<p.length;q+=2)r=p[q]+"|"+p[q+1],d.contains(r)||(c.add(E(-1,[k,g,p[q],p[q+1]])),
+d.add(r))}else r=g+"|"+e.getUrl_prefix(),d.contains(r)||(d.add(r),c.add(E(-1,[k,g,null,e.getUrl_prefix()])));return c.toArray(E(-1,[]))},"jalview.datamodel.SequenceI,~S");d(c$,"createSequenceAnnotationReport",function(a,b,c,d,e){this.createSequenceAnnotationReport(a,b,c,d,!0,e)},"StringBuffer,jalview.datamodel.SequenceI,~B,~B,java.util.Hashtable");d(c$,"createSequenceAnnotationReport",function(a,b,c,d,e,k){var g;a.append("<i>");var h=0;null!=b.getDescription()&&(g=b.getDescription(),a.append("<br>"+
+g),h=Math.max(h,g.length));for(g=b;null!=g.getDatasetSequence();)g=g.getDatasetSequence();var j=g.getDBRef();if(c&&null!=j)for(c=0;c<j.length;c++)a.append("<br>"),g=j[c].getSource()+" "+j[c].getAccessionId(),a.append(g),h=Math.max(h,g.length);b=b.getSequenceFeatures();if(d&&null!=b)for(c=0;c<b.length;c++)0==b[c].begin&&0==b[c].end&&(d=-a.length(),g=new java.util.ArrayList,g.add(b[c]),this.appendFeatures(a,0,g,k),d+=a.length(),h=Math.max(h,d));e&&60<h&&(a.insert(0,"<table width=350 border=0><tr><td><i>"),
+a.append("</i></td></tr></table>"))},"StringBuffer,jalview.datamodel.SequenceI,~B,~B,~B,java.util.Hashtable")});p("jalview.util");q(null,"jalview.util.UrlLink",["jalview.jsdev.RegExp","java.util.Vector"],function(){c$=s(function(){this.regexReplace=this.label=this.target=this.url_prefix=this.url_suffix=null;this.dynamic=!1;this.invalidMessage=null;r(this,arguments)},jalview.util,"UrlLink");m(c$,function(a){var b=a.indexOf("|"),c=a.indexOf("$SEQUENCE_ID");if(-1<c){this.dynamic=!0;var d=b;do b=d,d=
+a.indexOf("|",b+1);while(d>b&&d<c);this.label=a.substring(0,b);this.target=-1<this.label.indexOf("|")?this.label.substring(0,this.label.indexOf("|")):2<this.label.indexOf(" ")?this.label.substring(0,this.label.indexOf(" ")):this.label;this.url_prefix=a.substring(b+1,c);if(a.indexOf("$SEQUENCE_ID=/")==c&&(d=a.indexOf("/=$",c+14))>c+14){this.url_suffix=a.substring(d+3);this.regexReplace=a.substring(c+14,d);try{null==jalview.jsdev.RegExp.perlCode("/"+this.regexReplace+"/")&&(this.invalidMessage="Invalid Regular Expression : '"+
+this.regexReplace+"'\n")}catch(e){if(y(e,Exception))this.invalidMessage="Invalid Regular Expression : '"+this.regexReplace+"'\n";else throw e;}}else this.regexReplace=null,a.indexOf("$SEQUENCE_ID$")==c?(this.url_suffix=a.substring(c+13),this.regexReplace=null):this.invalidMessage="Warning: invalid regex structure for URL link : "+a}else this.target=a.substring(0,b),this.label=a.substring(0,b=a.lastIndexOf("|")),this.url_prefix=a.substring(b+1),this.url_suffix=this.regexReplace=null},"~S");d(c$,"getUrl_suffix",
+function(){return this.url_suffix});d(c$,"getUrl_prefix",function(){return this.url_prefix});d(c$,"getTarget",function(){return this.target});d(c$,"getLabel",function(){return this.label});d(c$,"getRegexReplace",function(){return this.regexReplace});d(c$,"getInvalidMessage",function(){return this.invalidMessage});d(c$,"isValid",function(){return null==this.invalidMessage});d(c$,"makeUrls",function(a,b){if(this.dynamic){if(null!=this.regexReplace){var c=jalview.jsdev.RegExp.perlCode("/"+this.regexReplace+
+"/");if(c.search(a)){var d=c.numSubs();if(0==d)return E(-1,[c.stringMatchedI(d),this.url_prefix+c.stringMatched()+this.url_suffix]);for(var e=0;e<=c.numSubs();e++)System.err.println("Sub "+e+" : "+c.matchedFromI(e)+" : "+c.matchedToI(e)+" : '"+c.stringMatchedI(e)+"'");for(var k=new java.util.Vector,e=0;e<=d;)if(e+1<=d&&-1<c.matchedToI(e)&&-1<c.matchedToI(e+1)&&c.matchedToI(e+1)<c.matchedToI(e)){for(var g=e+1,h="";g<=d&&c.matchedToI(g)<=c.matchedToI(e);)-1<c.matchedFromI(g)&&(h+=c.stringMatchedI(g)),
+g++;0<h.length&&(k.addElement(h),k.addElement(this.url_prefix+h+this.url_suffix));e=g}else-1<c.matchedFromI(e)&&(k.addElement(c.stringMatchedI(e)),k.addElement(this.url_prefix+c.stringMatchedI(e)+this.url_suffix)),e++;c=Array(k.size());g=0;for(d=k.size();g<d;g++)c[g]=k.elementAt(g);k.removeAllElements();return c}if(b)return null}-1<a.indexOf("|")&&(a=a.substring(a.lastIndexOf("|")+1));return E(-1,[a,this.url_prefix+a+this.url_suffix])}return E(-1,["",this.url_prefix])},"~S,~B");e(c$,"toString",function(){return this.label+
+"|"+this.url_prefix+(this.dynamic?"$SEQUENCE_ID"+(null!=this.regexReplace?"="+this.regexReplace+"=$":"$"):"")+(null==this.url_suffix?"":this.url_suffix)});d(c$,"isDynamic",function(){return this.dynamic});d(c$,"setLabel",function(a){this.label=a},"~S")});p("jalview.appletgui");q(["awt2swing.Panel"],"jalview.appletgui.IdCanvas","awt2swing.Util jalview.appletgui.AnnotationLabels $.AnnotationPanel $.PaintRefresher java.awt.Color $.Font".split(" "),function(){c$=s(function(){this.av=null;this.showScores=
+!0;this.maxIdLength=-1;this.gg=this.image=this.maxIdStr=null;this.imgHeight=0;this.$fastPaint=!1;this.searchResults=null;this.avcharHeight=0;r(this,arguments)},jalview.appletgui,"IdCanvas",awt2swing.Panel);m(c$,function(a){t(this,jalview.appletgui.IdCanvas,[]);this.setLayout(null);this.av=a;jalview.appletgui.PaintRefresher.Register(this,a.getSequenceSetId())},"jalview.appletgui.AlignViewport");d(c$,"drawIdString",function(a,b,c,d,e,k){var g=this.av.getCharHeight();null!=this.searchResults&&this.searchResults.contains(c)?
+(a.setColor(java.awt.Color.black),a.fillRect(0,(d-e)*g+k,this.getSize().width,g),a.setColor(java.awt.Color.white)):null!=this.av.getSelectionGroup()&&this.av.getSelectionGroup().getSequences(null).contains(c)?(a.setColor(java.awt.Color.lightGray),a.fillRect(0,(d-e)*g+k,this.getSize().width,g),a.setColor(java.awt.Color.white)):(a.setColor(this.av.getSequenceColour(c)),a.fillRect(0,(d-e)*g+k,this.getSize().width,g),a.setColor(java.awt.Color.black));awt2swing.Util.drawString(a,c.getDisplayId(this.av.getShowJVSuffix()),
+0,(d-e)*g+k+g-F(g/5));b&&this.drawMarker(d,e,k)},"java.awt.Graphics,~B,jalview.datamodel.SequenceI,~N,~N,~N");d(c$,"fastPaint",function(a){if(null!=this.gg){this.gg.copyArea(0,0,this.getSize().width,this.imgHeight,0,-a*this.av.getCharHeight());var b=this.av.startSeq,c=this.av.endSeq,d=0;0<a?(b=c-a,b<this.av.startSeq?b=this.av.startSeq:d=this.imgHeight-a*this.av.getCharHeight()):0>a&&(c=b-a,c>this.av.endSeq&&(c=this.av.endSeq));this.gg.translate(0,d);this.drawIds(b,c);this.gg.translate(0,-d);this.$fastPaint=
+!0}this.repaint()},"~N");e(c$,"paintComponent",function(a){if(!(0>this.getSize().height||0>this.getSize().width))if(this.$fastPaint)this.$fastPaint=!1,a.drawImage(this.image,0,0,this);else if(this.imgHeight=this.getSize().height,this.imgHeight-=this.imgHeight%this.av.getCharHeight(),!(1>this.imgHeight)){if(null==this.image||this.imgHeight!=this.image.getHeight(this))this.image=this.createImage(this.getSize().width,this.imgHeight),this.gg=this.image.getGraphics(),this.gg.setFont(this.av.getFont());
+this.gg.setColor(java.awt.Color.white);var b=new java.awt.Font(this.av.getFont().getName(),2,this.av.getFont().getSize());this.gg.setFont(b);this.gg.fillRect(0,0,this.getSize().width,this.getSize().height);this.drawIds(this.av.startSeq,this.av.endSeq);a.drawImage(this.image,0,0,this)}},"java.awt.Graphics");d(c$,"drawIds",function(a,b){var c=new java.awt.Font(this.av.getFont().getName(),2,this.av.getFont().getSize());this.avcharHeight=this.av.getCharHeight();this.gg.setFont(c);var d=java.awt.Color.white,
+e=java.awt.Color.black,k=this.av.isDisplayReferenceSeq()||this.av.hasHiddenRows(),g=this.av.hasHiddenRows()&&this.av.getShowHiddenMarkers();if(this.av.getWrapAlignment()){d=this.av.getAlignment().getWidth();e=this.av.getAlignment().getHeight();this.av.hasHiddenColumns()&&(d=this.av.getColumnSelection().findColumnPosition(d)-1);var h=0,j=null;this.av.isShowAnnotation()&&(h=(new jalview.appletgui.AnnotationPanel(this.av)).adjustPanelHeight(),j=new jalview.appletgui.AnnotationLabels(this.av));var n=
+this.avcharHeight;this.av.getScaleAboveWrapped()&&(n+=this.avcharHeight);for(var h=e*this.avcharHeight+n+h,m=this.av.getEndRes()-this.av.getStartRes(),p=n,q=this.av.startRes;p<=this.getSize().height&&q<d;p+=h,q+=m){for(n=a;n<e;n++){var r=this.av.getAlignment().getSequenceAt(n);this.gg.setFont(c);k&&this.setHiddenFont(r);this.drawIdString(this.gg,g,r,n,0,p)}null!=j&&(this.gg.translate(0,p+e*this.avcharHeight),j.drawComponent(this.gg,this.getSize().width),this.gg.translate(0,-p-e*this.avcharHeight))}}else for(n=
+a;n<b;n++)j=this.av.getAlignment().getSequenceAt(n),null!=j&&(this.gg.setFont(c),k&&this.setHiddenFont(j),null!=this.searchResults&&this.searchResults.contains(j)?(d=java.awt.Color.black,e=java.awt.Color.white):(d=null!=this.av.getSelectionGroup()&&this.av.getSelectionGroup().getSequences(null).contains(j)?java.awt.Color.lightGray:this.av.getSequenceColour(j),e=java.awt.Color.black),this.gg.setColor(d),this.gg.fillRect(0,(n-a)*this.avcharHeight,this.getSize().width,this.avcharHeight),this.gg.setColor(e),
+awt2swing.Util.drawString(this.gg,j.getDisplayId(this.av.getShowJVSuffix()),0,(n-a)*this.avcharHeight+this.avcharHeight-F(this.avcharHeight/5)),g&&this.drawMarker(n,a,0))},"~N,~N");d(c$,"setHighlighted",function(a){this.searchResults=a;this.repaint()},"java.util.List");d(c$,"drawMarker",function(a,b,c){for(var d=this.av.getAlignment().getHiddenSequences().hiddenSequences,e=d.length,k=a,g=a-1,h=a+1,j=0;j<e;j++)null!=d[j]&&(j-1<k&&k++,j-1<g&&g++,j-1<h&&h++);d=k>g+1;k=h>k+1;this.gg.setColor(java.awt.Color.blue);
+d&&this.gg.fillPolygon(w(-1,[this.getSize().width-this.avcharHeight,this.getSize().width-this.avcharHeight,this.getSize().width]),w(-1,[(a-b)*this.avcharHeight+c,(a-b)*this.avcharHeight+c+F(this.avcharHeight/4),(a-b)*this.avcharHeight+c]),3);k&&this.gg.fillPolygon(w(-1,[this.getSize().width-this.avcharHeight,this.getSize().width-this.avcharHeight,this.getSize().width]),w(-1,[(a-b+1)*this.avcharHeight+c,(a-b+1)*this.avcharHeight+c-F(this.avcharHeight/4),(a-b+1)*this.avcharHeight+c]),3)},"~N,~N,~N");
+d(c$,"setHiddenFont",function(a){var b=new java.awt.Font(this.av.getFont().getName(),1,this.av.getFont().getSize());return this.av.isHiddenRepSequence(a)?(this.gg.setFont(b),!0):!1},"jalview.datamodel.SequenceI")});p("jalview.appletgui");q(["awt2swing.Panel","java.awt.event.MouseListener","$.MouseMotionListener"],"jalview.appletgui.IdwidthAdjuster",["java.awt.Color","$.Toolkit"],function(){c$=s(function(){this.active=!1;this.oldX=0;this.ap=this.image=null;r(this,arguments)},jalview.appletgui,"IdwidthAdjuster",
+awt2swing.Panel,[java.awt.event.MouseListener,java.awt.event.MouseMotionListener]);m(c$,function(a){t(this,jalview.appletgui.IdwidthAdjuster,[]);this.setName("IdwidthAdjuster");this.setLayout(null);this.ap=a;a=this.getClass().getResource("/images/idwidth.gif");null!=a&&(this.image=java.awt.Toolkit.getDefaultToolkit().getImage(a));this.addMouseListener(this);this.addMouseMotionListener(this)},"jalview.appletgui.AlignmentPanel");e(c$,"mousePressed",function(a){this.oldX=a.getX()},"java.awt.event.MouseEvent");
+e(c$,"mouseReleased",function(){this.active=!1;this.repaint()},"java.awt.event.MouseEvent");e(c$,"mouseEntered",function(){this.active=!0;this.repaint()},"java.awt.event.MouseEvent");e(c$,"mouseExited",function(){this.active=!1;this.repaint()},"java.awt.event.MouseEvent");e(c$,"mouseDragged",function(a){this.active=!0;var b=this.ap.idPanel.idCanvas.getSize(),c=a.getX()-this.oldX,d=b.width+c;if(20<d||0<c)this.ap.setIdWidth(d,b.height),this.setSize(d,this.getSize().height),this.oldX=a.getX()},"java.awt.event.MouseEvent");
+e(c$,"mouseMoved",function(){},"java.awt.event.MouseEvent");e(c$,"mouseClicked",function(){},"java.awt.event.MouseEvent");d(c$,"PaintComponent",function(a){a.setColor(java.awt.Color.white);a.fillRect(0,0,this.getSize().width,this.getSize().height);this.active&&null!=this.image&&a.drawImage(this.image,this.getSize().width-20,2,this)},"java.awt.Graphics")});p("jalview.appletgui");q(["awt2swing.Panel","java.awt.event.MouseListener","$.MouseMotionListener"],"jalview.appletgui.ScalePanel","awt2swing.MenuItem $.PopupMenu $.Util jalview.datamodel.SequenceGroup jalview.util.MessageManager java.awt.Color java.awt.event.ActionListener".split(" "),
+function(){c$=s(function(){this.offy=4;this.$width=0;this.ap=this.av=null;this.stretchingGroup=!1;this.max=this.min=0;this.mouseDragging=!1;this.reveal=null;r(this,arguments)},jalview.appletgui,"ScalePanel",awt2swing.Panel,[java.awt.event.MouseMotionListener,java.awt.event.MouseListener]);m(c$,function(a,b){t(this,jalview.appletgui.ScalePanel,[]);this.setName("scalePanel");this.setLayout(null);this.av=a;this.ap=b;this.addMouseListener(this);this.addMouseMotionListener(this)},"jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");
+e(c$,"mousePressed",function(a){var b=F(a.getX()/this.av.getCharWidth())+this.av.getStartRes();this.max=this.min=b=this.av.hasHiddenColumns()?this.av.getColumnSelection().adjustForHiddenColumns(b):b;if(4==(a.getModifiers()&4)){var c=new awt2swing.PopupMenu;if(null!=this.reveal){var d=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.reveal"));d.addActionListener((H("jalview.appletgui.ScalePanel$1")?0:jalview.appletgui.ScalePanel.$ScalePanel$1$(),C(jalview.appletgui.ScalePanel$1,
+this,null)));c.add(d);this.av.getColumnSelection().hasManyHiddenColumns()&&(d=new awt2swing.MenuItem(jalview.util.MessageManager.getString("action.reveal_all")),d.addActionListener((H("jalview.appletgui.ScalePanel$2")?0:jalview.appletgui.ScalePanel.$ScalePanel$2$(),C(jalview.appletgui.ScalePanel$2,this,null))),c.add(d));this.add(c);c.show(this,a.getX(),a.getY())}else this.av.getColumnSelection().contains(b)&&(d=new awt2swing.MenuItem(jalview.util.MessageManager.getString("label.hide_columns")),d.addActionListener((H("jalview.appletgui.ScalePanel$3")?
+0:jalview.appletgui.ScalePanel.$ScalePanel$3$(),C(jalview.appletgui.ScalePanel$3,this,T("res",b)))),c.add(d),this.add(c),c.show(this,a.getX(),a.getY()))}else{!a.isControlDown()&&!a.isShiftDown()&&this.av.getColumnSelection().clear();this.av.getColumnSelection().addElement(b);c=new jalview.datamodel.SequenceGroup;for(d=0;d<this.av.getAlignment().getSequences().size();d++)c.addSequence(this.av.getAlignment().getSequenceAt(d),!1);c.setStartRes(b);c.setEndRes(b);this.av.setSelectionGroup(c);if(a.isShiftDown()){a=
+Math.min(this.av.getColumnSelection().getMin(),b);b=Math.max(this.av.getColumnSelection().getMax(),b);for(d=a;d<b;d++)this.av.getColumnSelection().addElement(d);c.setStartRes(a);c.setEndRes(b)}}this.ap.paintAlignment(!0);this.av.sendSelection()},"java.awt.event.MouseEvent");e(c$,"mouseReleased",function(a){this.mouseDragging=!1;a=F(a.getX()/this.av.getCharWidth())+this.av.getStartRes();a>this.av.getAlignment().getWidth()&&(a=this.av.getAlignment().getWidth()-1);this.av.hasHiddenColumns()&&(a=this.av.getColumnSelection().adjustForHiddenColumns(a));
+if(this.stretchingGroup){var b=this.av.getSelectionGroup();a>b.getStartRes()?b.setEndRes(a):a<b.getStartRes()&&b.setStartRes(a);this.stretchingGroup=!1;this.ap.paintAlignment(!1);this.av.sendSelection()}else this.ap.paintAlignment(!1)},"java.awt.event.MouseEvent");e(c$,"mouseDragged",function(a){this.mouseDragging=!0;var b=F(a.getX()/this.av.getCharWidth())+this.av.getStartRes();0>b&&(b=0);this.av.hasHiddenColumns()&&(b=this.av.getColumnSelection().adjustForHiddenColumns(b));b>this.av.getAlignment().getWidth()&&
+(b=this.av.getAlignment().getWidth()-1);b<this.min&&(this.min=b);b>this.max&&(this.max=b);a=this.av.getSelectionGroup();if(null!=a){this.stretchingGroup=!0;this.av.getColumnSelection().contains(b)||this.av.getColumnSelection().addElement(b);b>a.getStartRes()&&a.setEndRes(b);b<a.getStartRes()&&a.setStartRes(b);for(var c=this.min;c<=this.max;c++)b=this.av.getColumnSelection().adjustForHiddenColumns(c),b<a.getStartRes()||b>a.getEndRes()?this.av.getColumnSelection().removeElement(b):this.av.getColumnSelection().addElement(b);
+this.ap.paintAlignment(!1)}},"java.awt.event.MouseEvent");e(c$,"mouseEntered",function(){this.mouseDragging&&this.ap.seqPanel.scrollCanvas(null)},"java.awt.event.MouseEvent");e(c$,"mouseExited",function(a){this.mouseDragging&&this.ap.seqPanel.scrollCanvas(a)},"java.awt.event.MouseEvent");e(c$,"mouseClicked",function(){},"java.awt.event.MouseEvent");e(c$,"mouseMoved",function(a){if(this.av.hasHiddenColumns()){a=F(a.getX()/this.av.getCharWidth())+this.av.getStartRes();a=this.av.getColumnSelection().adjustForHiddenColumns(a);
+this.reveal=null;for(var b,c=this.av.getColumnSelection().getHiddenColumns().iterator();c.hasNext()&&((b=c.next())||1);)if(a+1==b[0]||a-1==b[1]){this.reveal=b;break}this.repaint()}},"java.awt.event.MouseEvent");e(c$,"paintComponent",function(a){this.av.getWrapAlignment()||this.drawScale(a,this.av.getStartRes(),this.av.getEndRes(),this.getSize().width,this.getSize().height)},"java.awt.Graphics");d(c$,"drawScale",function(a,b,c,d,e){a.setFont(this.av.getFont());a.setColor(java.awt.Color.white);a.fillRect(0,
+0,d,e);a.setColor(java.awt.Color.black);var k=this.av.getColumnSelection();a.setColor(new java.awt.Color(220,0,0));d=this.av.getCharWidth();e=this.av.getCharHeight();for(var g=0;g<k.size();g++){var h=k.columnAt(g);this.av.hasHiddenColumns()&&(h=this.av.getColumnSelection().findColumnPosition(h));h>=b&&h<=c&&a.fillRect((h-b)*d,0,d,this.getSize().height)}a.setColor(java.awt.Color.black);var k=10*F(b/10),j=a.getFontMetrics(this.av.getFont()),h=e-j.getDescent();0==k%10&&(k+=5);for(var n,m=0,g=k;g<c;g+=
+5)0==g%10?(n=String.valueOf(this.av.getColumnSelection().adjustForHiddenColumns(g)),(g-b-1)*d>m&&(awt2swing.Util.drawString(a,n,(g-b-1)*d,h),m=(g-b+1)*d+j.stringWidth(n)),a.drawLine((g-b-1)*d+F(d/2),h+2,(g-b-1)*d+F(d/2),h+2*j.getDescent())):a.drawLine((g-b-1)*d+F(d/2),h+j.getDescent(),(g-b-1)*d+F(d/2),h+2*j.getDescent());if(this.av.hasHiddenColumns()){a.setColor(java.awt.Color.blue);if(this.av.getShowHiddenMarkers())for(g=0;g<this.av.getColumnSelection().getHiddenColumns().size();g++)j=this.av.getColumnSelection().findHiddenRegionPosition(g)-
+b,0>j||j>c-k||a.fillPolygon(w(-1,[j*d-F(e/4),j*d+F(e/4),j*d]),w(-1,[h-F(e/2),h-F(e/2),h+8]),3);null!=this.reveal&&(this.reveal[0]>b&&this.reveal[0]<c)&&awt2swing.Util.drawString(a,jalview.util.MessageManager.getString("label.reveal_columns"),this.reveal[0]*d,0)}},"java.awt.Graphics,~N,~N,~N,~N");c$.$ScalePanel$1$=function(){A(self.c$);c$=L(jalview.appletgui,"ScalePanel$1",null,java.awt.event.ActionListener);e(c$,"actionPerformed",function(){this.b$["jalview.appletgui.ScalePanel"].av.showColumn(this.b$["jalview.appletgui.ScalePanel"].reveal[0]);
+this.b$["jalview.appletgui.ScalePanel"].reveal=null;this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment(!0);null!=this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel&&this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage()},"java.awt.event.ActionEvent");c$=z()};c$.$ScalePanel$2$=function(){A(self.c$);c$=L(jalview.appletgui,"ScalePanel$2",null,java.awt.event.ActionListener);e(c$,"actionPerformed",function(){this.b$["jalview.appletgui.ScalePanel"].av.showAllHiddenColumns();
+this.b$["jalview.appletgui.ScalePanel"].reveal=null;this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment(!0);null!=this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel&&this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage()},"java.awt.event.ActionEvent");c$=z()};c$.$ScalePanel$3$=function(){A(self.c$);c$=L(jalview.appletgui,"ScalePanel$3",null,java.awt.event.ActionListener);e(c$,"actionPerformed",function(){this.b$["jalview.appletgui.ScalePanel"].av.hideColumns(this.f$.res,
+this.f$.res);null!=this.b$["jalview.appletgui.ScalePanel"].av.getSelectionGroup()&&this.b$["jalview.appletgui.ScalePanel"].av.getSelectionGroup().getSize()==this.b$["jalview.appletgui.ScalePanel"].av.getAlignment().getHeight()&&this.b$["jalview.appletgui.ScalePanel"].av.setSelectionGroup(null);this.b$["jalview.appletgui.ScalePanel"].ap.paintAlignment(!0);null!=this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel&&this.b$["jalview.appletgui.ScalePanel"].ap.overviewPanel.updateOverviewImage()},
+"java.awt.event.ActionEvent");c$=z()}});p("jalview.appletgui");q("awt2swing.Panel jalview.structure.SelectionListener $.SequenceListener java.awt.event.MouseListener $.MouseMotionListener java.lang.Thread".split(" "),"jalview.appletgui.SeqPanel","jalview.api.AlignViewportI jalview.appletgui.APopupMenu $.AlignViewport $.PaintRefresher $.SeqCanvas $.SliderPanel $.Tooltip jalview.commands.EditCommand jalview.datamodel.ColumnSelection $.SearchResults $.SequenceGroup jalview.schemes.ResidueProperties jalview.structure.StructureSelectionManager jalview.util.Comparison $.MappingUtils $.MessageManager java.awt.BorderLayout $.Font java.lang.StringBuffer $.StringBuilder java.util.Vector".split(" "),
+function(){c$=s(function(){this.ap=this.seqCanvas=null;this.startseq=this.lastres=0;this.av=null;this.seqEditOccurred=!1;this.scrollThread=null;this.groupEditing=this.editingSeqs=this.mouseDragging=!1;this.oldSeq=-1;this.changeStartRes=this.changeEndRes=this.changeStartSeq=this.changeEndSeq=!1;this.keyboardNo2=this.keyboardNo1=this.stretchGroup=null;this.mouseWheelPressed=!1;this.ssm=this.editCommand=this.lastMousePress=null;this.wrappedBlock=this.startWrapBlock=-1;this.tooltip=this.lastMessage=null;
+H("jalview.appletgui.SeqPanel.ScrollThread")||jalview.appletgui.SeqPanel.$SeqPanel$ScrollThread$();r(this,arguments)},jalview.appletgui,"SeqPanel",awt2swing.Panel,[java.awt.event.MouseMotionListener,java.awt.event.MouseListener,jalview.structure.SequenceListener,jalview.structure.SelectionListener]);m(c$,function(a,b){t(this,jalview.appletgui.SeqPanel,[]);this.av=a;this.setName("seqPanel");this.seqCanvas=new jalview.appletgui.SeqCanvas(a);this.setLayout(new java.awt.BorderLayout);this.add(this.seqCanvas);
+this.ap=b;this.seqCanvas.addMouseMotionListener(this);this.seqCanvas.addMouseListener(this);this.ssm=jalview.structure.StructureSelectionManager.getStructureSelectionManager(this.av.applet);this.ssm.addStructureViewerListener(this);this.ssm.addSelectionListener(this);this.seqCanvas.repaint()},"jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");d(c$,"endEditing",function(){null!=this.editCommand&&0<this.editCommand.getSize()&&(this.ap.alignFrame.addHistoryItem(this.editCommand),this.av.firePropertyChange("alignment",
+null,this.av.getAlignment().getSequences()));this.lastres=this.startseq=-1;this.groupEditing=this.editingSeqs=!1;this.editCommand=this.keyboardNo2=this.keyboardNo1=null});d(c$,"setCursorRow",function(){this.seqCanvas.cursorY=this.getKeyboardNo1()-1;this.scrollToVisible()});d(c$,"setCursorColumn",function(){this.seqCanvas.cursorX=this.getKeyboardNo1()-1;this.scrollToVisible()});d(c$,"setCursorRowAndColumn",function(){null==this.keyboardNo2?this.keyboardNo2=new StringBuffer:(this.seqCanvas.cursorX=
+this.getKeyboardNo1()-1,this.seqCanvas.cursorY=this.getKeyboardNo2()-1,this.scrollToVisible())});d(c$,"setCursorPosition",function(){var a=this.av.getAlignment().getSequenceAt(this.seqCanvas.cursorY);this.seqCanvas.cursorX=a.findIndex(this.getKeyboardNo1())-1;this.scrollToVisible()});d(c$,"moveCursor",function(a,b){this.seqCanvas.cursorX+=a;this.seqCanvas.cursorY+=b;if(this.av.hasHiddenColumns()&&!this.av.getColumnSelection().isVisible(this.seqCanvas.cursorX)){for(var c=this.seqCanvas.cursorX-a,d=
+this.av.getAlignment().getWidth();!this.av.getColumnSelection().isVisible(this.seqCanvas.cursorX)&&this.seqCanvas.cursorX<d&&0<this.seqCanvas.cursorX;)this.seqCanvas.cursorX+=a;if(this.seqCanvas.cursorX>=d||!this.av.getColumnSelection().isVisible(this.seqCanvas.cursorX))this.seqCanvas.cursorX=c}this.scrollToVisible()},"~N,~N");d(c$,"scrollToVisible",function(){0>this.seqCanvas.cursorX?this.seqCanvas.cursorX=0:this.seqCanvas.cursorX>this.av.getAlignment().getWidth()-1&&(this.seqCanvas.cursorX=this.av.getAlignment().getWidth()-
+1);0>this.seqCanvas.cursorY?this.seqCanvas.cursorY=0:this.seqCanvas.cursorY>this.av.getAlignment().getHeight()-1&&(this.seqCanvas.cursorY=this.av.getAlignment().getHeight()-1);this.endEditing();if(this.av.getWrapAlignment())this.ap.scrollToWrappedVisible(this.seqCanvas.cursorX);else{for(;this.seqCanvas.cursorY<this.av.startSeq;)this.ap.scrollUp(!0);for(;this.seqCanvas.cursorY+1>this.av.endSeq;)this.ap.scrollUp(!1);for(;this.seqCanvas.cursorX<this.av.getColumnSelection().adjustForHiddenColumns(this.av.startRes)&&
+this.ap.scrollRight(!1););for(;this.seqCanvas.cursorX>this.av.getColumnSelection().adjustForHiddenColumns(this.av.endRes)&&this.ap.scrollRight(!0););}this.setStatusMessage(this.av.getAlignment().getSequenceAt(this.seqCanvas.cursorY),this.seqCanvas.cursorX,this.seqCanvas.cursorY);this.seqCanvas.repaint()});d(c$,"setSelectionAreaAtCursor",function(a){var b=this.av.getAlignment().getSequenceAt(this.seqCanvas.cursorY);if(null!=this.av.getSelectionGroup()){for(var c=this.av.getSelectionGroup(),d=this.av.getAlignment().getHeight(),
+e=0,k=0;k<c.getSize();k++){var g=this.av.getAlignment().findIndex(c.getSequenceAt(k));g>e&&(e=g);g<d&&(d=g)}e++;a?(c.setStartRes(this.seqCanvas.cursorX),c.getEndRes()<this.seqCanvas.cursorX&&c.setEndRes(this.seqCanvas.cursorX),d=this.seqCanvas.cursorY):(c.setEndRes(this.seqCanvas.cursorX),c.getStartRes()>this.seqCanvas.cursorX&&c.setStartRes(this.seqCanvas.cursorX),e=this.seqCanvas.cursorY+1);if(d>e)this.av.setSelectionGroup(null);else{c.clear();for(k=d;k<e;k++)c.addSequence(this.av.getAlignment().getSequenceAt(k),
+!1)}}null==this.av.getSelectionGroup()&&(c=new jalview.datamodel.SequenceGroup,c.setStartRes(this.seqCanvas.cursorX),c.setEndRes(this.seqCanvas.cursorX),c.addSequence(b,!1),this.av.setSelectionGroup(c));this.ap.paintAlignment(!1);this.av.sendSelection()},"~B");d(c$,"insertGapAtCursor",function(a){this.groupEditing=a;this.startseq=this.seqCanvas.cursorY;this.lastres=this.seqCanvas.cursorX;this.editSequence(!0,this.seqCanvas.cursorX+this.getKeyboardNo1());this.endEditing()},"~B");d(c$,"deleteGapAtCursor",
+function(a){this.groupEditing=a;this.startseq=this.seqCanvas.cursorY;this.lastres=this.seqCanvas.cursorX+this.getKeyboardNo1();this.editSequence(!1,this.seqCanvas.cursorX);this.endEditing()},"~B");d(c$,"numberPressed",function(a){null==this.keyboardNo1&&(this.keyboardNo1=new StringBuffer);null!=this.keyboardNo2?this.keyboardNo2.append(a):this.keyboardNo1.append(a)},"~S");d(c$,"getKeyboardNo1",function(){try{if(null!=this.keyboardNo1){var a=Integer.parseInt(this.keyboardNo1.toString());this.keyboardNo1=
+null;return a}}catch(b){if(!y(b,Exception))throw b;}this.keyboardNo1=null;return 1});d(c$,"getKeyboardNo2",function(){try{if(null!=this.keyboardNo2){var a=Integer.parseInt(this.keyboardNo2.toString());this.keyboardNo2=null;return a}}catch(b){if(!y(b,Exception))throw b;}this.keyboardNo2=null;return 1});d(c$,"setStatusMessage",function(a,b,c){var d=new StringBuilder(32);d.append("Sequence"+(-1==c?"":" "+(c+1))+" ID: "+a.getName());c=null;c=String.valueOf(a.getCharAt(b));this.av.getAlignment().isNucleotide()?
+(c=jalview.schemes.ResidueProperties.nucleotideName.get(c),null!=c&&d.append(" Nucleotide: ").append(c)):(c="X".equalsIgnoreCase(c)?"X":jalview.schemes.ResidueProperties.aa2Triplet.get(c),null!=c&&d.append(" Residue: ").append(c));var e=-1;null!=c&&(e=a.findPosition(b),d.append(" (").append(Integer.toString(e)).append(")"));this.ap.alignFrame.setStatus(d.toString())},"jalview.datamodel.SequenceI,~N,~N");d(c$,"setStatusMessage",function(a){a=a.getResults();if(!a.isEmpty()){var b=a.get(0);a=b.getSequence();
+var c=this.av.getAlignment().findIndex(a),b=b.getStart()-1;this.setStatusMessage(a,b,c)}},"jalview.datamodel.SearchResults");e(c$,"mousePressed",function(a){this.lastMousePress=a.getPoint();if(8==(a.getModifiers()&8)&&!this.av.MAC)this.mouseWheelPressed=!0;else if(a.isShiftDown()||a.isControlDown()||a.isAltDown()){if(a.isControlDown()||a.isAltDown())this.groupEditing=!0;this.editingSeqs=!0;var b=this.findSeq(a);a=this.findRes(a);0>b||0>a||(b<this.av.getAlignment().getHeight()&&a<this.av.getAlignment().getSequenceAt(b).getLength()?
+(this.startseq=b,this.lastres=a):this.lastres=this.startseq=-1)}else this.doMousePressedDefineMode(a)},"java.awt.event.MouseEvent");e(c$,"mouseClicked",function(a){var b=this.av.getAlignment().getSequenceAt(this.findSeq(a));if(1<a.getClickCount()){null!=this.av.getSelectionGroup()&&(1==this.av.getSelectionGroup().getSize()&&2>this.av.getSelectionGroup().getEndRes()-this.av.getSelectionGroup().getStartRes())&&this.av.setSelectionGroup(null);a=this.findFeaturesAtRes(b,b.findPosition(this.findRes(a)));
+if(null!=a&&0<a.length){var c=new jalview.datamodel.SearchResults;c.addResult(b,a[0].getBegin(),a[0].getEnd());this.seqCanvas.highlightSearchResults(c)}null!=a&&0<a.length&&(this.seqCanvas.getFeatureRenderer().amendFeatures(E(-1,[b]),a,!1,this.ap),this.seqCanvas.highlightSearchResults(null))}},"java.awt.event.MouseEvent");e(c$,"mouseReleased",function(a){this.mouseWheelPressed=this.mouseDragging=!1;this.ap.paintAlignment(!0);this.editingSeqs?this.endEditing():this.doMouseReleasedDefineMode(a)},"java.awt.event.MouseEvent");
+d(c$,"findRes",function(a){var b=0,b=a.getX();if(this.av.getWrapAlignment()){var c=this.av.getCharHeight();this.av.getScaleAboveWrapped()&&(c+=this.av.getCharHeight());var d=this.av.getAlignment().getHeight()*this.av.getCharHeight()+c+this.seqCanvas.getAnnotationHeight();a=a.getY();a-=c;b-=this.seqCanvas.LABEL_WEST;c=this.seqCanvas.getWrappedCanvasWidth(this.getSize().width);if(1>c)return 0;this.wrappedBlock=F(a/d);this.wrappedBlock+=F(this.av.getStartRes()/c);b=this.wrappedBlock*c+F(b/this.av.getCharWidth())}else b=
+F(b/this.av.getCharWidth())+this.av.getStartRes();this.av.hasHiddenColumns()&&(b=this.av.getColumnSelection().adjustForHiddenColumns(b));return b},"java.awt.event.MouseEvent");d(c$,"findSeq",function(a){a=this.findAlRow(a);return 0>a?0:a},"java.awt.event.MouseEvent");d(c$,"findAlRow",function(a){var b=0;a=a.getY();if(this.av.getWrapAlignment()){b=this.av.getCharHeight();this.av.getScaleAboveWrapped()&&(b+=this.av.getCharHeight());var c=this.av.getAlignment().getHeight()*this.av.getCharHeight()+b+
+this.seqCanvas.getAnnotationHeight(),b=Math.min(F((a-b)%c/this.av.getCharHeight()),this.av.getAlignment().getHeight()-1)}else b=Math.min(F(a/this.av.getCharHeight())+this.av.getStartSeq(),this.av.getAlignment().getHeight()-1);0>b&&(b=-1);return b},"java.awt.event.MouseEvent");d(c$,"doMousePressed",function(a){var b=this.findSeq(a);a=this.findRes(a);b<this.av.getAlignment().getHeight()&&a<this.av.getAlignment().getSequenceAt(b).getLength()?(this.startseq=b,this.lastres=a):this.lastres=this.startseq=
+-1},"java.awt.event.MouseEvent");e(c$,"mouseOverSequence",function(a,b,c){var d=a.hashCode()+b+"";(null==this.lastMessage||!this.lastMessage.equals(d))&&this.ssm.mouseOverSequence(a,b,c,this.av);this.lastMessage=d},"jalview.datamodel.SequenceI,~N,~N");e(c$,"highlightSequence",function(a){this.av.isFollowHighlight()&&this.ap.scrollToPosition(a,!0)&&this.ap.alignFrame.repaint();this.setStatusMessage(a);this.seqCanvas.highlightSearchResults(a)},"jalview.datamodel.SearchResults");e(c$,"getVamsasSource",
+function(){return null==this.ap?null:this.ap.av});e(c$,"updateColours",function(){System.out.println("update the seqPanel colours")},"jalview.datamodel.SequenceI,~N");e(c$,"mouseMoved",function(a){var b=this.findRes(a),c=this.findSeq(a);if(c>=this.av.getAlignment().getHeight()||0>c||0>b)null!=this.tooltip&&this.tooltip.setTip("");else if(a=this.av.getAlignment().getSequenceAt(c),b>a.getLength())null!=this.tooltip&&this.tooltip.setTip("");else{var d=a.findPosition(b);null!=this.ssm&&this.mouseOverSequence(a,
+b,d);var e=new StringBuilder;e.append("Sequence ").append(Integer.toString(c+1)).append(" ID: ").append(a.getName());c=null;c=String.valueOf(a.getCharAt(b));this.av.getAlignment().isNucleotide()?(c=jalview.schemes.ResidueProperties.nucleotideName.get(c),null!=c&&e.append(" Nucleotide: ").append(c)):(c="X".equalsIgnoreCase(c)?"X":jalview.schemes.ResidueProperties.aa2Triplet.get(c),null!=c&&e.append(" Residue: ").append(c));null!=c&&e.append(" (").append(Integer.toString(d)).append(")");this.ap.alignFrame.setStatus(e.toString());
+d=new StringBuilder;e=this.av.getAlignment().findAllGroups(a);if(null!=e)for(c=0;c<e.length;c++)e[c].getStartRes()<=b&&e[c].getEndRes()>=b&&(!e[c].getName().startsWith("JTreeGroup")&&!e[c].getName().startsWith("JGroup")&&d.append(e[c].getName()).append(" "),null!=e[c].getDescription()&&d.append(e[c].getDescription()),d.append("\n"));b=this.findFeaturesAtRes(a,a.findPosition(b));for(a=0;a<b.length;)e=b[a],d.append(e.getType()+" "+e.begin+":"+e.end),null!=e.getDescription()&&d.append(" "+e.getDescription()),
+null!=e.getValue("status")&&0<e.getValue("status").toString().length&&d.append(" ("+e.getValue("status")+")"),d.append("\n"),a++;null==this.tooltip?this.tooltip=new jalview.appletgui.Tooltip(d.toString(),this.seqCanvas):this.tooltip.setTip(d.toString())}},"java.awt.event.MouseEvent");d(c$,"findFeaturesAtRes",function(a,b){var c=new java.util.Vector,d=a.getSequenceFeatures();if(null!=d)for(var e=0;e<d.length;e++)null!=this.av.getFeaturesDisplayed()&&this.av.getFeaturesDisplayed().isVisible(d[e].getType())&&
+(null==d[e].featureGroup||this.seqCanvas.fr.checkGroupVisibility(d[e].featureGroup,!1))&&d[e].getBegin()<=b&&d[e].getEnd()>=b&&c.addElement(d[e]);d=Array(c.size());c.copyInto(d);return d},"jalview.datamodel.SequenceI,~N");e(c$,"mouseDragged",function(a){if(this.mouseWheelPressed){var b=this.av.getCharWidth();if(Math.abs(a.getY()-this.lastMousePress.y)>Math.abs(a.getX()-this.lastMousePress.x)){var c=this.av.font.getSize();a.getY()<this.lastMousePress.y&&1<this.av.getCharHeight()?c--:a.getY()>this.lastMousePress.y&&
+c++;1>c&&(c=1);this.av.setFont(new java.awt.Font(this.av.font.getName(),this.av.font.getStyle(),c));this.av.setCharWidth(b)}else a.getX()<this.lastMousePress.x&&1<this.av.getCharWidth()?this.av.setCharWidth(this.av.getCharWidth()-1):a.getX()>this.lastMousePress.x&&this.av.setCharWidth(this.av.getCharWidth()+1),1>this.av.getCharWidth()&&this.av.setCharWidth(1);this.ap.fontChanged();b=this.getFontMetrics(this.av.getFont());this.av.validCharWidth=b.charWidth("M")<=this.av.getCharWidth();this.lastMousePress=
+a.getPoint();this.ap.paintAlignment(!1);this.ap.annotationPanel.image=null}else this.editingSeqs?(b=this.findRes(a),0>b&&(b=0),-1==this.lastres||this.lastres==b||(b<this.av.getAlignment().getWidth()&&b<this.lastres?this.editSequence(!1,b):this.editSequence(!0,b),this.mouseDragging=!0,null!=this.scrollThread&&this.scrollThread.setEvent(a))):this.doMouseDraggedDefineMode(a)},"java.awt.event.MouseEvent");d(c$,"editSequence",function(a,b){var c=-1,d=-1,e=!1,k=this.av.getSelectionGroup(),g=this.av.getAlignment().getSequenceAt(this.startseq);
+!this.groupEditing&&this.av.hasHiddenRows()&&this.av.isHiddenRepSequence(g)&&(k=this.av.getRepresentedSequences(g),this.groupEditing=!0);var h=new StringBuffer;if(this.groupEditing)h.append(jalview.util.MessageManager.getString("action.edit_group")).append(":"),null==this.editCommand&&(this.editCommand=new jalview.commands.EditCommand(jalview.util.MessageManager.getString("action.edit_group")));else{h.append(jalview.util.MessageManager.getString("label.edit_sequence")).append(" "+g.getName());var j=
+g.getName();10<j.length&&(j=j.substring(0,10));null==this.editCommand&&(this.editCommand=new jalview.commands.EditCommand(jalview.util.MessageManager.formatMessage("label.edit_params",E(-1,[j]))))}a?h.append(" insert "):h.append(" delete ");h.append(Math.abs(b-this.lastres)+" gaps.");this.ap.alignFrame.setStatus(h.toString());if(this.groupEditing||null!=k&&k.getSequences(this.av.getHiddenRepSequences()).contains(g)){e=!0;if(null==k){if(!this.av.isHiddenRepSequence(g)){this.endEditing();return}k=this.av.getRepresentedSequences(g)}c=
+k.getStartRes();d=k.getEndRes();if(b<c&&this.lastres>=c||b>=c&&this.lastres<c||b>d&&this.lastres<=d||b<=d&&this.lastres>d){this.endEditing();return}c>b?(d=c-1,c=0):d<b&&(c=d,d=-1)}if(this.av.hasHiddenColumns()){e=!0;h=this.av.getColumnSelection().getHiddenBoundaryLeft(b);j=this.av.getColumnSelection().getHiddenBoundaryRight(b);if(a&&b>h&&this.lastres<h||!a&&b<j&&this.lastres>j){this.endEditing();return}if(c<h&&(d>j||-1==d)&&!(b>=j))d=j-1}if(this.groupEditing){g=k.getSequences(this.av.getHiddenRepSequences()).toArray([]);
+if(a){0==k.getStartRes()&&(k.getEndRes()==d&&k.getEndRes()==this.av.getAlignment().getWidth()-1)&&(k.setEndRes(this.av.getAlignment().getWidth()+b-this.lastres),d=k.getEndRes());for(h=!1;d>this.lastres;d--){for(var h=!0,n,j=0,m=g;j<m.length&&((n=m[j])||1);j++)for(c=0;c<b-this.lastres;c++)if(!jalview.util.Comparison.isGap(n.getCharAt(d-c))){h=!1;break}if(h)break}if(!h)if(k.getSize()==this.av.getAlignment().getHeight()){if(this.av.hasHiddenColumns()&&b<this.av.getColumnSelection().getHiddenBoundaryRight(b)){this.endEditing();
+return}d=this.av.getAlignment().getWidth();this.av.hasHiddenRows()&&(n=this.av.getAlignment().getHiddenSequences().getWidth(),n>d&&(d=n));k.setEndRes(k.getEndRes()+b-this.lastres);d=d+b-this.lastres}else{this.endEditing();return}}else if(!a){j=0;for(m=g;j<m.length&&((n=m[j])||1);j++)for(c=b;c<this.lastres;c++)if(!(n.getLength()<=c)&&!jalview.util.Comparison.isGap(n.getCharAt(c))){this.endEditing();return}}if(a)if(e&&-1!=d)for(c=this.lastres;c<b;c++)this.insertChar(c,g,d);else this.editCommand.appendEdit(jalview.commands.EditCommand.Action.INSERT_GAP,
+g,b,b-this.lastres,this.av.getAlignment(),!0);else if(e&&-1!=d)for(c=this.lastres;c>b;c--)this.deleteChar(b,g,d);else this.editCommand.appendEdit(jalview.commands.EditCommand.Action.DELETE_GAP,g,b,this.lastres-b,this.av.getAlignment(),!0)}else if(a)if(e&&-1!=d)for(c=this.lastres;c<b;c++)this.insertChar(c,E(-1,[g]),d);else this.editCommand.appendEdit(jalview.commands.EditCommand.Action.INSERT_GAP,E(-1,[g]),this.lastres,b-this.lastres,this.av.getAlignment(),!0);else if(e&&-1!=d)for(c=this.lastres;c>
+b;c--){if(!jalview.util.Comparison.isGap(g.getCharAt(b))){this.endEditing();break}this.deleteChar(b,E(-1,[g]),d)}else{e=0;for(k=b;k<this.lastres&&jalview.util.Comparison.isGap(g.getCharAt(k));k++)e++;0<e&&this.editCommand.appendEdit(jalview.commands.EditCommand.Action.DELETE_GAP,E(-1,[g]),b,e,this.av.getAlignment(),!0)}this.lastres=b;this.seqCanvas.repaint()},"~B,~N");d(c$,"insertChar",function(a,b,c){for(var d=c,e=0;e<b.length;e++){for(d=c;d>a&&!jalview.util.Comparison.isGap(b[e].getCharAt(d));d--);
+if(d<=a){this.endEditing();return}}this.editCommand.appendEdit(jalview.commands.EditCommand.Action.DELETE_GAP,b,d,1,this.av.getAlignment(),!0);this.editCommand.appendEdit(jalview.commands.EditCommand.Action.INSERT_GAP,b,a,1,this.av.getAlignment(),!0)},"~N,~A,~N");d(c$,"deleteChar",function(a,b,c){this.editCommand.appendEdit(jalview.commands.EditCommand.Action.DELETE_GAP,b,a,1,this.av.getAlignment(),!0);this.editCommand.appendEdit(jalview.commands.EditCommand.Action.INSERT_GAP,b,c,1,this.av.getAlignment(),
+!0)},"~N,~A,~N");d(c$,"doMousePressedDefineMode",function(a){null!=this.scrollThread&&(this.scrollThread.running=!1,this.scrollThread=null);var b=this.findRes(a),c=this.findSeq(a);this.oldSeq=c;this.startWrapBlock=this.wrappedBlock;if(-1!=c){var d=this.av.getAlignment().getSequenceAt(c);if(!(null==d||b>d.getLength())){this.stretchGroup=this.av.getSelectionGroup();if(null==this.stretchGroup)this.stretchGroup=this.av.getAlignment().findGroup(d),null!=this.stretchGroup&&b>this.stretchGroup.getStartRes()&&
+b<this.stretchGroup.getEndRes()?this.av.setSelectionGroup(this.stretchGroup):this.stretchGroup=null;else if(!this.stretchGroup.getSequences(null).contains(d)||this.stretchGroup.getStartRes()>b||this.stretchGroup.getEndRes()<b){this.stretchGroup=null;var e=this.av.getAlignment().findAllGroups(d);if(null!=e)for(c=0;c<e.length;c++)if(e[c].getStartRes()<=b&&e[c].getEndRes()>=b){this.stretchGroup=e[c];break}this.av.setSelectionGroup(this.stretchGroup)}if(4==(a.getModifiers()&4)){b=this.findFeaturesAtRes(d,
+d.findPosition(b));d=null;if(null!=b)for(c=0;c<b.length;c++)if(null!=b[c].links){null==d&&(d=new java.util.Vector);for(e=0;e<b[c].links.size();e++)d.addElement(b[c].links.elementAt(e))}c=new jalview.appletgui.APopupMenu(this.ap,null,d);this.add(c);c.show(this,a.getX(),a.getY())}else this.av.cursorMode?(this.seqCanvas.cursorX=this.findRes(a),this.seqCanvas.cursorY=this.findSeq(a),this.seqCanvas.repaint()):null==this.stretchGroup&&(a=new jalview.datamodel.SequenceGroup,a.setStartRes(b),a.setEndRes(b),
+a.addSequence(d,!1),this.av.setSelectionGroup(a),this.stretchGroup=a,this.av.getConservationSelected()&&jalview.appletgui.SliderPanel.setConservationSlider(this.ap,this.av.getGlobalColourScheme(),"Background"),this.av.getAbovePIDThreshold()&&jalview.appletgui.SliderPanel.setPIDSliderSource(this.ap,this.av.getGlobalColourScheme(),"Background"))}}},"java.awt.event.MouseEvent");d(c$,"doMouseReleasedDefineMode",function(){null!=this.stretchGroup&&(this.stretchGroup.recalcConservation(),null!=this.stretchGroup.cs&&
+(this.stretchGroup.cs.alignmentChanged(this.stretchGroup,this.av.getHiddenRepSequences()),this.stretchGroup.cs.conservationApplied()?jalview.appletgui.SliderPanel.setConservationSlider(this.ap,this.stretchGroup.cs,this.stretchGroup.getName()):jalview.appletgui.SliderPanel.setPIDSliderSource(this.ap,this.stretchGroup.cs,this.stretchGroup.getName())),this.changeStartRes=this.changeEndRes=!1,this.stretchGroup=null,jalview.appletgui.PaintRefresher.Refresh(this.ap,this.av.getSequenceSetId()),this.ap.paintAlignment(!0),
+this.av.sendSelection())},"java.awt.event.MouseEvent");d(c$,"doMouseDraggedDefineMode",function(a){var b=this.findRes(a),c=this.findSeq(a);if(this.wrappedBlock==this.startWrapBlock&&null!=this.stretchGroup){this.mouseDragging=!0;c>this.av.getAlignment().getHeight()&&(c=this.av.getAlignment().getHeight()-1);b>=this.av.getAlignment().getWidth()&&(b=this.av.getAlignment().getWidth()-1);this.stretchGroup.getEndRes()==b?this.changeEndRes=!0:this.stretchGroup.getStartRes()==b&&(this.changeStartRes=!0);
+0>b&&(b=0);this.changeEndRes?b>this.stretchGroup.getStartRes()-1&&this.stretchGroup.setEndRes(b):this.changeStartRes&&b<this.stretchGroup.getEndRes()+1&&this.stretchGroup.setStartRes(b);var d=0;for(c>this.oldSeq?d=1:c<this.oldSeq&&(d=-1);c!=this.oldSeq&&-1<this.oldSeq&&c<this.av.getAlignment().getHeight();){var e=this.av.getAlignment().getSequenceAt(this.oldSeq);this.oldSeq+=d;if(0>this.oldSeq)break;var k=this.av.getAlignment().getSequenceAt(this.oldSeq);this.stretchGroup.getSequences(null).contains(k)?
+this.stretchGroup.deleteSequence(e,!1):(null!=e&&this.stretchGroup.addSequence(e,!1),this.stretchGroup.addSequence(k,!1))}0>this.oldSeq&&(this.oldSeq=-1);(b>this.av.endRes||b<this.av.startRes||c<this.av.startSeq||c>this.av.endSeq)&&this.mouseExited(a);null!=this.scrollThread&&this.scrollThread.setEvent(a);this.seqCanvas.repaint()}},"java.awt.event.MouseEvent");e(c$,"mouseEntered",function(){0>this.oldSeq&&(this.oldSeq=0);null!=this.scrollThread&&(this.scrollThread.running=!1,this.scrollThread=null)},
+"java.awt.event.MouseEvent");e(c$,"mouseExited",function(){!this.av.getWrapAlignment()&&(this.mouseDragging&&null==this.scrollThread)&&(this.scrollThread=C(jalview.appletgui.SeqPanel.ScrollThread,this,null))},"java.awt.event.MouseEvent");d(c$,"scrollCanvas",function(a){null==a?(null!=this.scrollThread&&(this.scrollThread.running=!1,this.scrollThread=null),this.mouseDragging=!1):(null==this.scrollThread&&(this.scrollThread=C(jalview.appletgui.SeqPanel.ScrollThread,this,null)),this.mouseDragging=!0,
+this.scrollThread.setEvent(a))},"java.awt.event.MouseEvent");e(c$,"selection",function(a,b,c){if(!(null!=this.av&&(this.av===c||!this.av.followSelection||v(c,jalview.appletgui.AlignViewport)&&c.getSequenceSetId().equals(this.av.getSequenceSetId())))&&!this.selectionFromTranslation(a,b,c)){var d=!1;c=!0;if(null==this.av.getSelectionGroup()||!this.av.isSelectionGroupChanged(!0)){d=null;if(null!=a&&0<a.getSize()){if(null==this.av.getAlignment()){System.out.println("Selection message: alignviewport av SeqSetId="+
+this.av.getSequenceSetId()+" ViewId="+this.av.getViewId()+" 's alignment is NULL! returning immediatly.");return}d=a.intersect(this.av.getAlignment(),this.av.hasHiddenRows()?this.av.getHiddenRepSequences():null);if((null==d||0==d.getSize())&&(null==b||0==b.size()))c=!1}null!=d&&0<d.getSize()?this.av.setSelectionGroup(d):this.av.setSelectionGroup(null);d=this.av.isSelectionGroupChanged(!0)}if(c&&(null==this.av.getColumnSelection()||!this.av.isColSelChanged(!0)))null==b||0==b.size()?null!=this.av.getColumnSelection()&&
+this.av.getColumnSelection().clear():null==this.av.getColumnSelection()?this.av.setColumnSelection(new jalview.datamodel.ColumnSelection(b)):this.av.getColumnSelection().setElementsFrom(b),d=(new Boolean(d|this.av.isColSelChanged(!0))).valueOf();c&&(this.av.hasHiddenColumns()&&(null==this.av.getColumnSelection()||null==this.av.getColumnSelection().getHiddenColumns()))&&System.err.println("Bad things");d&&(this.ap.scalePanelHolder.repaint(),this.ap.repaint())}},"jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");
+d(c$,"scrollTo",function(a,b){a=0>a?this.ap.av.startSeq:a;b=0>b?this.ap.av.startRes:b;this.ap.scrollTo(b,b,a,!0,!0)},"~N,~N");d(c$,"scrollToRow",function(a){a=0>a?this.ap.av.startSeq:a;this.ap.scrollTo(this.ap.av.startRes,this.ap.av.startRes,a,!0,!0)},"~N");d(c$,"scrollToColumn",function(a){a=0>a?this.ap.av.startRes:a;this.ap.scrollTo(a,a,this.ap.av.startSeq,!0,!0)},"~N");d(c$,"selectionFromTranslation",function(a,b,c){if(!v(c,jalview.api.AlignViewportI)||c.getCodingComplement()!==this.av&&this.av.getCodingComplement()!==
+c)return!1;a=jalview.util.MappingUtils.mapSequenceGroup(a,c,this.av);this.av.setSelectionGroup(a);this.av.isSelectionGroupChanged(!0);b=jalview.util.MappingUtils.mapColumnSelection(b,c,this.av);this.av.setColumnSelection(b);this.av.isColSelChanged(!0);this.ap.scalePanelHolder.repaint();this.ap.repaint();return!0},"jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");c$.$SeqPanel$ScrollThread$=function(){A(self.c$);c$=s(function(){O(this,arguments);
+this.evt=null;this.running=!1;r(this,arguments)},jalview.appletgui.SeqPanel,"ScrollThread",Thread);m(c$,function(){t(this,jalview.appletgui.SeqPanel.ScrollThread,[]);this.start()});d(c$,"setEvent",function(a){this.evt=a},"java.awt.event.MouseEvent");d(c$,"stopScrolling",function(){this.running=!1});e(c$,"run",function(){for(this.running=!0;this.running;){null!=this.evt&&(this.b$["jalview.appletgui.SeqPanel"].mouseDragging&&(0>this.evt.getY()&&0<this.b$["jalview.appletgui.SeqPanel"].av.getStartSeq())&&
+(this.running=this.b$["jalview.appletgui.SeqPanel"].ap.scrollUp(!0)),this.b$["jalview.appletgui.SeqPanel"].mouseDragging&&(this.evt.getY()>=this.b$["jalview.appletgui.SeqPanel"].getSize().height&&this.b$["jalview.appletgui.SeqPanel"].av.getAlignment().getHeight()>this.b$["jalview.appletgui.SeqPanel"].av.getEndSeq())&&(this.running=this.b$["jalview.appletgui.SeqPanel"].ap.scrollUp(!1)),this.b$["jalview.appletgui.SeqPanel"].mouseDragging&&0>this.evt.getX()?this.running=this.b$["jalview.appletgui.SeqPanel"].ap.scrollRight(!1):
+this.b$["jalview.appletgui.SeqPanel"].mouseDragging&&this.evt.getX()>=this.b$["jalview.appletgui.SeqPanel"].getSize().width&&(this.running=this.b$["jalview.appletgui.SeqPanel"].ap.scrollRight(!0)));try{Thread.sleep(75)}catch(a){if(!y(a,Exception))throw a;}}});c$=z()}});p("jalview.structure");M(jalview.structure,"SelectionListener");p("jalview.appletgui");q(["awt2swing.Panel"],"jalview.appletgui.SeqCanvas","awt2swing.Util jalview.appletgui.AnnotationPanel $.FeatureRenderer $.PaintRefresher $.SequenceRenderer jalview.util.Comparison java.awt.Color".split(" "),
+function(){c$=s(function(){this.gg=this.img=this.sr=this.fr=null;this.imgHeight=this.imgWidth=0;this.searchResults=this.av=null;this.$fastPaint=!1;this.LABEL_EAST=this.LABEL_WEST=this.lastsr=this.avcharWidth=this.avcharHeight=this.cursorY=this.cursorX=0;this.annotations=null;r(this,arguments)},jalview.appletgui,"SeqCanvas",awt2swing.Panel);m(c$,function(a){t(this,jalview.appletgui.SeqCanvas,[]);this.av=a;this.fr=new jalview.appletgui.FeatureRenderer(a);this.sr=new jalview.appletgui.SequenceRenderer(a);
+jalview.appletgui.PaintRefresher.Register(this,a.getSequenceSetId());this.updateViewport()},"jalview.appletgui.AlignViewport");d(c$,"updateViewport",function(){this.avcharHeight=this.av.getCharHeight();this.avcharWidth=this.av.getCharWidth()});d(c$,"getViewport",function(){return this.av});d(c$,"getFeatureRenderer",function(){return this.fr});d(c$,"getSequenceRenderer",function(){return this.sr});d(c$,"drawNorthScale",function(a,b,c,d){var e=b-b%10+10;for(a.setColor(java.awt.Color.black);e<c;e+=10){var k=
+e;this.av.hasHiddenColumns()&&(k=this.av.getColumnSelection().adjustForHiddenColumns(k));awt2swing.Util.drawString(a,String.valueOf(k),(e-b-1)*this.avcharWidth,d-F(this.avcharHeight/2));a.drawLine((e-b-1)*this.avcharWidth+F(this.avcharWidth/2),d+2-F(this.avcharHeight/2),(e-b-1)*this.avcharWidth+F(this.avcharWidth/2),d-2)}},"java.awt.Graphics,~N,~N,~N");d(c$,"drawWestScale",function(a,b,c,d){var e=this.getFontMetrics(this.av.getFont());d+=this.avcharHeight;this.av.hasHiddenColumns()&&(b=this.av.getColumnSelection().adjustForHiddenColumns(b),
+c=this.av.getColumnSelection().adjustForHiddenColumns(c));var k=this.av.getAlignment().getWidth();this.av.hasHiddenColumns()&&this.av.getColumnSelection().findColumnPosition(k);for(k=0;k<this.av.getAlignment().getHeight();k++){for(var g=this.av.getAlignment().getSequenceAt(k),h=b,j=-1;h<c;)if(jalview.util.Comparison.isGap(g.getCharAt(h)))h++;else{j=this.av.getAlignment().getSequenceAt(k).findPosition(h);break}-1!=j&&(g=this.LABEL_WEST-e.stringWidth(String.valueOf(j))-F(this.avcharWidth/2),awt2swing.Util.drawString(a,
+j+"",g,d+k*this.avcharHeight-F(this.avcharHeight/5)))}},"java.awt.Graphics,~N,~N,~N");d(c$,"drawEastScale",function(a,b,c,d){d+=this.avcharHeight;this.av.hasHiddenColumns()&&(c=this.av.getColumnSelection().adjustForHiddenColumns(c));for(var e,k=0;k<this.av.getAlignment().getHeight();k++){e=this.av.getAlignment().getSequenceAt(k);for(var g=c,h=-1;g>b;)if(jalview.util.Comparison.isGap(e.getCharAt(g)))g--;else{h=e.findPosition(g);break}-1!=h&&awt2swing.Util.drawString(a,String.valueOf(h),0,d+k*this.avcharHeight-
+F(this.avcharHeight/5))}},"java.awt.Graphics,~N,~N,~N");d(c$,"fastPaint",function(a,b){if(!(this.$fastPaint||null==this.gg)){this.updateViewport();this.lastsr+a!=this.av.startRes&&(a=this.av.startRes-this.lastsr);this.lastsr=this.av.startRes;this.$fastPaint=!0;this.gg.copyArea(a*this.avcharWidth,b*this.avcharHeight,this.imgWidth-a*this.avcharWidth,this.imgHeight-b*this.avcharHeight,-a*this.avcharWidth,-b*this.avcharHeight);var c=this.av.startRes,d=this.av.endRes,e=this.av.startSeq,k=this.av.endSeq,
+g=0,h=0;0<a?(g=(d-c-a)*this.avcharWidth,c=d-a):0>a?d=c-a:0<b?(e=k-b,e<this.av.startSeq?e=this.av.startSeq:h=this.imgHeight-b*this.avcharHeight):0>b&&(k=e-b,k>this.av.endSeq&&(k=this.av.endSeq));this.gg.translate(g,h);this.drawPanel(this.gg,c,d,e,k,0);this.gg.translate(-g,-h);this.repaint()}},"~N,~N");e(c$,"paintComponent",function(a){if(null!=this.img&&(this.$fastPaint||this.getSize().width!=a.getClipBounds().width||this.getSize().height!=a.getClipBounds().height))a.drawImage(this.img,0,0,this),this.$fastPaint=
+!1;else if(this.$fastPaint)a.drawImage(this.img,0,0,this),this.$fastPaint=!1;else if(this.updateViewport(),this.imgWidth=this.getSize().width,this.imgHeight=this.getSize().height,this.imgWidth-=this.imgWidth%this.avcharWidth,this.imgHeight-=this.imgHeight%this.avcharHeight,!(1>this.imgWidth||1>this.imgHeight)){if(null==this.img||this.imgWidth!=this.img.getWidth(this)||this.imgHeight!=this.img.getHeight(this))this.img=this.createImage(this.imgWidth,this.imgHeight),this.gg=this.img.getGraphics(),this.gg.setFont(this.av.getFont());
+this.gg.setColor(java.awt.Color.white);this.gg.fillRect(0,0,this.imgWidth,this.imgHeight);this.av.getWrapAlignment()?this.drawWrappedPanel(this.gg,this.imgWidth,this.imgHeight,this.av.startRes):this.drawPanel(this.gg,this.av.startRes,this.av.endRes,this.av.startSeq,this.av.endSeq,0);a.drawImage(this.img,0,0,this)}},"java.awt.Graphics");d(c$,"getWrappedCanvasWidth",function(a){a-=a%this.av.getCharWidth();var b=this.getFontMetrics(this.av.getFont());this.LABEL_WEST=this.LABEL_EAST=0;this.av.getScaleRightWrapped()&&
+(this.LABEL_EAST=b.stringWidth(this.getMask()));this.av.getScaleLeftWrapped()&&(this.LABEL_WEST=b.stringWidth(this.getMask()));return F((a-this.LABEL_EAST-this.LABEL_WEST)/this.av.getCharWidth())},"~N");d(c$,"getMask",function(){for(var a="0",b=0,c,d=this.av.getAlignment(),e=0;e<d.getHeight();e++)c=d.getSequenceAt(e).getEnd(),c>b&&(b=c);for(e=b;0<e;e/=10)a+="0";return a});d(c$,"drawWrappedPanel",function(a,b,c,d){var e=this.av.getAlignment(),k=this.getFontMetrics(this.av.getFont());this.av.getScaleRightWrapped()&&
+(this.LABEL_EAST=k.stringWidth(this.getMask()));this.av.getScaleLeftWrapped()&&(this.LABEL_WEST=k.stringWidth(this.getMask()));k=this.avcharHeight;this.av.getScaleAboveWrapped()&&(k+=this.avcharHeight);var g=F((b-this.LABEL_EAST-this.LABEL_WEST)/this.avcharWidth),h=this.av.getAlignment().getHeight()*this.avcharHeight;this.av.setWrappedWidth(g);this.av.endRes=this.av.startRes+g;var j,n=k,m=this.av.getAlignment().getWidth()-1;for(this.av.hasHiddenColumns()&&(m=this.av.getColumnSelection().findColumnPosition(m)-
+1);n<=c&&d<m;){j=d+g-1;j>m&&(j=m);a.setColor(java.awt.Color.black);this.av.getScaleLeftWrapped()&&this.drawWestScale(a,d,j,n);this.av.getScaleRightWrapped()&&(a.translate(b-this.LABEL_EAST,0),this.drawEastScale(a,d,j,n),a.translate(-(b-this.LABEL_EAST),0));a.translate(this.LABEL_WEST,0);this.av.getScaleAboveWrapped()&&this.drawNorthScale(a,d,j,n);if(this.av.hasHiddenColumns()&&this.av.getShowHiddenMarkers()){a.setColor(java.awt.Color.blue);for(var p,q=0;q<this.av.getColumnSelection().getHiddenColumns().size();q++)p=
+this.av.getColumnSelection().findHiddenRegionPosition(q)-d,0>p||p>j-d||this.gg.fillPolygon(w(-1,[p*this.avcharWidth-F(this.avcharHeight/4),p*this.avcharWidth+F(this.avcharHeight/4),p*this.avcharWidth]),w(-1,[n-F(this.avcharHeight/2),n-F(this.avcharHeight/2),n-F(this.avcharHeight/2)+8]),3)}null==a.getClip()&&a.setClip(0,0,g*this.avcharWidth,c);this.drawPanel(a,d,j,0,e.getHeight(),n);a.setClip(null);this.av.isShowAnnotation()&&(a.translate(0,h+n+4),null==this.annotations&&(this.annotations=new jalview.appletgui.AnnotationPanel(this.av)),
+this.annotations.drawComponent(a,d,j+1),a.translate(0,-h-n-4));a.translate(-this.LABEL_WEST,0);n+=h+this.getAnnotationHeight()+k;d+=g}},"java.awt.Graphics,~N,~N,~N");d(c$,"getAnnotationHeight",function(){if(!this.av.isShowAnnotation())return 0;null==this.annotations&&(this.annotations=new jalview.appletgui.AnnotationPanel(this.av));return this.annotations.adjustPanelHeight()});d(c$,"drawPanel",function(a,b,c,d,e,k){if(this.av.hasHiddenColumns()){var g=0,h=b,j=c;if(this.av.hasHiddenColumns())for(var n,
+m=this.av.getColumnSelection().getHiddenColumns().iterator();m.hasNext()&&((n=m.next())||1);){var j=n[0],p=n[1];j<=h?h+=p-j+1:(j-=1,a.translate(g*this.avcharWidth,0),this.draw(a,h,j,d,e,k),this.av.getShowHiddenMarkers()&&(a.setColor(java.awt.Color.blue),a.drawLine((j-h+1)*this.avcharWidth-1,0+k,(j-h+1)*this.avcharWidth-1,(e-d)*this.avcharHeight+k)),a.translate(-g*this.avcharWidth,0),g+=j-h+1,h=p+1)}g<=c-b&&(j=h+(c-b)-g,a.translate(g*this.avcharWidth,0),this.draw(a,h,j,d,e,k),a.translate(-g*this.avcharWidth,
+0))}else this.draw(a,b,c,d,e,k)},"java.awt.Graphics,~N,~N,~N,~N,~N");d(c$,"draw",function(a,b,c,d,e,k){a.setFont(this.av.getFont());this.sr.prepare(a,this.av.isRenderGaps());this.updateViewport();for(var g,h=d;h<e;h++)if(g=this.av.getAlignment().getSequenceAt(h),null!=g){this.sr.drawSequence(g,this.av.getAlignment().findAllGroups(g),b,c,k+(h-d)*this.avcharHeight);this.av.isShowSequenceFeatures()&&this.fr.drawSequence(a,g,b,c,k+(h-d)*this.avcharHeight);if(null!=this.searchResults){var j=this.searchResults.getResults(g,
+b,c);if(null!=j)for(var n=0;n<j.length;n+=2)this.sr.drawHighlightedText(g,j[n],j[n+1],(j[n]-b)*this.avcharWidth,k+(h-d)*this.avcharHeight)}this.av.cursorMode&&(this.cursorY==h&&this.cursorX>=b&&this.cursorX<=c)&&this.sr.drawCursor(g,this.cursorX,(this.cursorX-b)*this.avcharWidth,k+(h-d)*this.avcharHeight)}(null!=this.av.getSelectionGroup()||0<this.av.getAlignment().getGroups().size())&&this.drawGroupsBoundaries(a,b,c,d,e,k)},"java.awt.Graphics,~N,~N,~N,~N,~N");d(c$,"drawGroupsBoundaries",function(a,
+b,c,d,e,k){var g=this.av.getSelectionGroup(),h=-1,j=-1,n=-1,m=-1;null==g&&0<this.av.getAlignment().getGroups().size()&&(g=this.av.getAlignment().getGroups().get(0),m=0);if(null!=g){do{for(var p=-1,q=0,r=!1,s=-1,t=-1,v=this.av.getAlignment().getHeight()-1,q=d;q<e;q++)if(h=(g.getStartRes()-b)*this.avcharWidth,j=k+(q-d)*this.avcharHeight,n=(g.getEndRes()+1-g.getStartRes())*this.avcharWidth-1,!(0>h+n||h>this.imgWidth))if(h<=(c-b)*this.avcharWidth&&g.getSequences(null).contains(this.av.getAlignment().getSequenceAt(q))){if(-1==
+t&&(q>=v||!g.getSequences(null).contains(this.av.getAlignment().getSequenceAt(q+1))))t=j+this.avcharHeight;if(!r){if(-1==s&&0==q||!g.getSequences(null).contains(this.av.getAlignment().getSequenceAt(q-1)))s=j;p=j;r=!0;g===this.av.getSelectionGroup()?a.setColor(java.awt.Color.red):a.setColor(g.getOutlineColour())}}else r&&(0<=h&&h<this.imgWidth&&a.drawLine(h,p,h,j),h+n<this.imgWidth&&a.drawLine(h+n,p,h+n,j),0>h&&(n+=h,h=0),h+n>this.imgWidth?n=this.imgWidth:h+n>=(c-b+1)*this.avcharWidth&&(n=(c-b+1)*
+this.avcharWidth),-1!=s&&(a.drawLine(h,s,h+n,s),s=-1),-1!=t&&(a.drawLine(h,t,h+n,t),t=-1),r=!1);r&&(j=k+(q-d)*this.avcharHeight,0<=h&&h<this.imgWidth&&a.drawLine(h,p,h,j),h+n<this.imgWidth&&a.drawLine(h+n,p,h+n,j),0>h&&(n+=h,h=0),h+n>this.imgWidth?n=this.imgWidth:h+n>=(c-b+1)*this.avcharWidth&&(n=(c-b+1)*this.avcharWidth),-1!=s&&a.drawLine(h,s,h+n,s),-1!=t&&a.drawLine(h,t-1,h+n,t-1));m++;if(m>=this.av.getAlignment().getGroups().size())break;g=this.av.getAlignment().getGroups().get(m)}while(m<this.av.getAlignment().getGroups().size())
+}},"java.awt.Graphics,~N,~N,~N,~N,~N");d(c$,"highlightSearchResults",function(a){this.searchResults=a;this.repaint()},"jalview.datamodel.SearchResults")});p("jalview.appletgui");q(["jalview.api.SequenceRenderer"],"jalview.appletgui.SequenceRenderer",["awt2swing.Util","jalview.util.Comparison","java.awt.Color","$.Font"],function(){c$=s(function(){this.fm=this.av=null;this.renderGaps=!0;this.graphics=this.resBoxColour=this.allGroups=this.currentSequenceGroup=null;this.forOverview=!1;r(this,arguments)},
+jalview.appletgui,"SequenceRenderer",null,jalview.api.SequenceRenderer);m(c$,function(a){this.av=a},"jalview.appletgui.AlignViewport");d(c$,"prepare",function(a,b){this.graphics=a;this.fm=a.getFontMetrics();this.renderGaps=b},"java.awt.Graphics,~B");e(c$,"getResidueBoxColour",function(a,b){this.allGroups=this.av.getAlignment().findAllGroups(a);this.inCurrentSequenceGroup(b)?this.currentSequenceGroup.getDisplayBoxes()&&this.getBoxColour(this.currentSequenceGroup.cs,a,b):this.av.getShowBoxes()&&this.getBoxColour(this.av.getGlobalColourScheme(),
+a,b);return this.resBoxColour},"jalview.datamodel.SequenceI,~N");e(c$,"getResidueColour",function(a,b,c){var d=this.getResidueBoxColour(a,b);null!=c&&(d=c.findFeatureColour(d,a,b));return d},"jalview.datamodel.SequenceI,~N,jalview.api.FeatureRenderer");d(c$,"getBoxColour",function(a,b,c){this.resBoxColour=null!=a?a.findColourSeq(b.getCharAt(c),c,b):this.forOverview&&!jalview.util.Comparison.isGap(b.getCharAt(c))?java.awt.Color.lightGray:java.awt.Color.white},"jalview.schemes.ColourSchemeI,jalview.datamodel.SequenceI,~N");
+d(c$,"findSequenceColour",function(a,b){this.allGroups=this.av.getAlignment().findAllGroups(a);this.drawBoxes(a,b,b,0);return this.resBoxColour},"jalview.datamodel.SequenceI,~N");d(c$,"drawSequence",function(a,b,c,d,e){null!=a&&(this.allGroups=b,this.drawBoxes(a,c,d,e),this.av.validCharWidth&&this.drawText(a,c,d,e))},"jalview.datamodel.SequenceI,~A,~N,~N,~N");d(c$,"drawBoxes",function(a,b,c,d){for(var e=b,k=a.getLength(),g=-1,h=this.av.getCharWidth(),j=this.av.getCharWidth(),n=this.av.getCharHeight(),
+m=null;e<=c;)this.resBoxColour=java.awt.Color.white,e<k&&(this.inCurrentSequenceGroup(e)?this.currentSequenceGroup.getDisplayBoxes()&&this.getBoxColour(this.currentSequenceGroup.cs,a,e):this.av.getShowBoxes()&&this.getBoxColour(this.av.getGlobalColourScheme(),a,e)),this.resBoxColour!==m?(null!=m&&this.graphics.fillRect(j*(g-b),d,h,n),this.graphics.setColor(this.resBoxColour),g=e,h=j,m=this.resBoxColour):h+=j,e++;this.graphics.fillRect(j*(g-b),d,h,n)},"jalview.datamodel.SequenceI,~N,~N,~N");d(c$,"drawText",
+function(a,b,c,d){var e=this.av.getCharWidth(),k=this.av.getCharHeight(),g=null,h=!1;this.av.isUpperCasebold()&&(g=new java.awt.Font(this.av.getFont().getName(),1,k),this.graphics.setFont(this.av.getFont()));d+=k-F(k/5);k=0;c+1>=a.getLength()&&(c=a.getLength()-1);for(var j=" ",n=this.av.isDisplayReferenceSeq(),m=b;m<=c;m++)if(this.graphics.setColor(java.awt.Color.black),j=a.getCharAt(m),this.renderGaps||!jalview.util.Comparison.isGap(j)){if(this.inCurrentSequenceGroup(m)){if(!this.currentSequenceGroup.getDisplayText())continue;
+this.currentSequenceGroup.getColourText()&&(this.getBoxColour(this.currentSequenceGroup.cs,a,m),this.graphics.setColor(this.resBoxColour.darker()));this.currentSequenceGroup.getShowNonconserved()&&(j=this.getDisplayChar(n,m,j,"."))}else{if(!this.av.getShowText())continue;this.av.getColourText()&&(this.getBoxColour(this.av.getGlobalColourScheme(),a,m),this.av.getShowBoxes()?this.graphics.setColor(this.resBoxColour.darker()):this.graphics.setColor(this.resBoxColour));this.av.getShowUnconserved()&&(j=
+this.getDisplayChar(n,m,j,"."))}this.av.isUpperCasebold()&&(this.fm=this.graphics.getFontMetrics(),"A"<=j&&"Z">=j?(h||this.graphics.setFont(g),h=!0):h&&(this.graphics.setFont(this.av.font),h=!1));k=F((e-this.fm.charWidth(j))/2);awt2swing.Util.drawString(this.graphics,String.valueOf(j),k+e*(m-b),d)}},"jalview.datamodel.SequenceI,~N,~N,~N");d(c$,"getDisplayChar",function(a,b,c,d){a=a?this.av.getAlignment().getSeqrep().getCharAt(b):this.av.getAlignmentConsensusAnnotation().annotations[b].displayCharacter.charAt(0);
+"-"!=a&&c==a&&(c=d);return c},"~B,~N,~S,~S");d(c$,"inCurrentSequenceGroup",function(a){if(null==this.allGroups)return!1;for(var b=0;b<this.allGroups.length;b++)if(this.allGroups[b].getStartRes()<=a&&this.allGroups[b].getEndRes()>=a)return this.currentSequenceGroup=this.allGroups[b],!0;return!1},"~N");d(c$,"drawHighlightedText",function(a,b,c,d,e){var k=this.av.getCharWidth(),g=this.av.getCharHeight(),h=F(g/5),j=0;this.graphics.setColor(java.awt.Color.black);this.graphics.fillRect(d,e,k*(c-b+1),g);
+this.graphics.setColor(java.awt.Color.white);var n="~";if(this.av.validCharWidth)for(var m=b;m<=c;m++)m<a.getLength()&&(n=a.getCharAt(m)),j=F((k-this.fm.charWidth(n))/2),awt2swing.Util.drawString(this.graphics,String.valueOf(n),j+d+k*(m-b),e+g-h)},"jalview.datamodel.SequenceI,~N,~N,~N,~N");d(c$,"drawCursor",function(a,b,c,d){var e=F(this.av.getCharHeight()/5),k=0;this.graphics.setColor(java.awt.Color.black);this.graphics.fillRect(c,d,this.av.getCharWidth(),this.av.getCharHeight());this.graphics.setColor(java.awt.Color.white);
+this.graphics.setColor(java.awt.Color.white);a=a.getCharAt(b);this.av.validCharWidth&&(k=F((this.av.getCharWidth()-this.fm.charWidth(a))/2),awt2swing.Util.drawString(this.graphics,String.valueOf(a),k+c,d+this.av.getCharHeight()-e))},"jalview.datamodel.SequenceI,~N,~N,~N")});p("jalview.api");M(jalview.api,"SequenceRenderer");p("jalview.appletgui");q("awt2swing.Panel jalview.appletgui.AnnotationRowFilter $.TitledPanel java.awt.event.ActionListener $.AdjustmentListener $.ItemListener $.MouseListener awt2swing.Checkbox $.Choice $.TextField java.awt.BorderLayout $.CardLayout".split(" "),
+"jalview.appletgui.AnnotationColumnChooser","awt2swing.Frame jalview.bin.JalviewLite jalview.datamodel.ColumnSelection $.GraphLine jalview.util.MessageManager jalview.viewmodel.annotationfilter.AnnotationFilterParameter java.awt.Color $.Dimension java.awt.event.MouseAdapter $.TextListener java.lang.Float java.util.Vector javax.swing.JPanel".split(" "),function(){c$=s(function(){this.ngFurtherActionPanel=this.gFurtherActionPanel=this.currentFurtherActionPanel=this.ngSearchPanel=this.gSearchPanel=this.currentSearchPanel=
+this.currentStructureFilterPanel=this.ngStructureFilterPanel=this.gStructureFilterPanel=this.threshold=this.ngBorderLayout=this.gBorderLayout=this.borderLayout1=this.annotationComboBoxPanel=this.graphFilterView=this.noGraphFilterView=this.switchableViewsLayout=this.switchableViewsPanel=this.thresholdPanel=this.actionPanel=this.annotations=null;this.actionOption=1;this.oldColumnSelection=null;H("jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel")||jalview.appletgui.AnnotationColumnChooser.$AnnotationColumnChooser$FurtherActionPanel$();
+H("jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel")||jalview.appletgui.AnnotationColumnChooser.$AnnotationColumnChooser$StructureFilterPanel$();H("jalview.appletgui.AnnotationColumnChooser.SearchPanel")||jalview.appletgui.AnnotationColumnChooser.$AnnotationColumnChooser$SearchPanel$();r(this,arguments)},jalview.appletgui,"AnnotationColumnChooser",jalview.appletgui.AnnotationRowFilter,[java.awt.event.ActionListener,java.awt.event.AdjustmentListener,java.awt.event.ItemListener,java.awt.event.MouseListener]);
+J(c$,function(){this.annotations=new awt2swing.Choice;this.actionPanel=new awt2swing.Panel;this.thresholdPanel=new jalview.appletgui.TitledPanel;this.switchableViewsPanel=new awt2swing.Panel(new java.awt.CardLayout);this.switchableViewsLayout=this.switchableViewsPanel.getLayout();this.noGraphFilterView=new awt2swing.Panel;this.graphFilterView=new awt2swing.Panel;this.annotationComboBoxPanel=new awt2swing.Panel;this.borderLayout1=new java.awt.BorderLayout;this.gBorderLayout=new java.awt.BorderLayout;
+this.ngBorderLayout=new java.awt.BorderLayout;this.threshold=new awt2swing.Choice});m(c$,function(){t(this,jalview.appletgui.AnnotationColumnChooser,[]);try{this.jbInit()}catch(a){if(y(a,Exception))a.printStackTrace();else throw a;}});m(c$,function(a,b){t(this,jalview.appletgui.AnnotationColumnChooser,[a,b]);this.frame=new awt2swing.Frame;this.frame.add(this);jalview.bin.JalviewLite.addFrame(this.frame,jalview.util.MessageManager.getString("label.select_by_annotation"),520,215);this.slider.addAdjustmentListener(this);
+this.slider.addMouseListener(this);if(null!=a.getAlignment().getAlignmentAnnotation()){this.setOldColumnSelection(a.getColumnSelection());this.adjusting=!0;for(var c=new java.util.Vector,d=1,e=0;e<a.getAlignment().getAlignmentAnnotation().length;e++){var k=a.getAlignment().getAlignmentAnnotation()[e].label;c.contains(k)?c.addElement(k+"_"+d++):c.addElement(k)}for(e=0;e<c.size();e++)this.annotations.addItem(c.elementAt(e).toString());this.populateThresholdComboBox(this.threshold);null!=a.getAnnotationColumnSelectionState()&&
+(this.currentSearchPanel=a.getAnnotationColumnSelectionState().getCurrentSearchPanel(),this.currentStructureFilterPanel=a.getAnnotationColumnSelectionState().getCurrentStructureFilterPanel(),this.annotations.select(new Integer(a.getAnnotationColumnSelectionState().getAnnotations().getSelectedIndex())),this.threshold.select(new Integer(a.getAnnotationColumnSelectionState().getThreshold().getSelectedIndex())),this.actionOption=a.getAnnotationColumnSelectionState().getActionOption());try{this.jbInit()}catch(g){if(!y(g,
+Exception))throw g;}this.adjusting=!1;this.updateView();this.frame.invalidate();this.frame.pack()}},"jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");d(c$,"jbInit",function(){this.ok.setLabel(jalview.util.MessageManager.getString("action.ok"));this.cancel.setLabel(jalview.util.MessageManager.getString("action.cancel"));this.thresholdValue.setEnabled(!1);this.thresholdValue.setColumns(7);this.ok.addActionListener(this);this.cancel.addActionListener(this);this.annotations.addItemListener(this);
+this.thresholdValue.addActionListener(this);this.threshold.addItemListener(this);this.slider.setBackground(java.awt.Color.white);this.slider.setEnabled(!1);this.slider.setPreferredSize(new java.awt.Dimension(100,32));this.thresholdPanel.setBackground(java.awt.Color.white);this.actionPanel.setBackground(java.awt.Color.white);this.graphFilterView.setLayout(this.gBorderLayout);this.graphFilterView.setBackground(java.awt.Color.white);this.noGraphFilterView.setLayout(this.ngBorderLayout);this.noGraphFilterView.setBackground(java.awt.Color.white);
+this.annotationComboBoxPanel.setBackground(java.awt.Color.white);this.gSearchPanel=C(jalview.appletgui.AnnotationColumnChooser.SearchPanel,this,null,this);this.ngSearchPanel=C(jalview.appletgui.AnnotationColumnChooser.SearchPanel,this,null,this);this.gFurtherActionPanel=C(jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel,this,null,this);this.ngFurtherActionPanel=C(jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel,this,null,this);this.gStructureFilterPanel=C(jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel,
+this,null,this);this.ngStructureFilterPanel=C(jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel,this,null,this);this.thresholdPanel.setTitle("Threshold Filter");this.thresholdPanel.add(this.getThreshold());this.thresholdPanel.add(this.slider);this.thresholdPanel.add(this.thresholdValue);this.actionPanel.add(this.ok);this.actionPanel.add(this.cancel);var a=new javax.swing.JPanel;a.setLayout(new java.awt.BorderLayout);a.setBackground(java.awt.Color.white);a.add(this.gSearchPanel,"North");
+a.add(this.gStructureFilterPanel,"South");this.graphFilterView.add(a,"North");this.graphFilterView.add(this.thresholdPanel,"Center");this.graphFilterView.add(this.gFurtherActionPanel,"South");this.noGraphFilterView.add(this.ngSearchPanel,"First");this.noGraphFilterView.add(this.ngStructureFilterPanel,"Center");this.noGraphFilterView.add(this.ngFurtherActionPanel,"Center");this.annotationComboBoxPanel.add(this.getAnnotations());this.switchableViewsPanel.add(this.noGraphFilterView,jalview.appletgui.AnnotationColumnChooser.NO_GRAPH_VIEW);
+this.switchableViewsPanel.add(this.graphFilterView,jalview.appletgui.AnnotationColumnChooser.GRAPH_VIEW);this.setLayout(this.borderLayout1);this.add(this.annotationComboBoxPanel,"First");this.add(this.switchableViewsPanel,"Center");this.add(this.actionPanel,"South");this.selectedAnnotationChanged();this.validate()});e(c$,"reset",function(){if(null!=this.getOldColumnSelection()){this.av.getColumnSelection().clear();if(null!=this.av.getAnnotationColumnSelectionState()){var a=this.av.getAnnotationColumnSelectionState().getOldColumnSelection();
+if(null!=a&&null!=a.getHiddenColumns()&&!a.getHiddenColumns().isEmpty())for(var b=a.getHiddenColumns().iterator();b.hasNext();){var c=b.next();this.av.hideColumns(c[0],c[1])}this.av.setColumnSelection(a)}this.ap.paintAlignment(!0)}});e(c$,"adjustmentValueChanged",function(){this.adjusting||(this.thresholdValue.setText(this.slider.getValue()/1E3+""),this.valueChanged(!this.sliderDragging))},"java.awt.event.AdjustmentEvent");d(c$,"addSliderMouseListeners",function(){this.slider.addMouseListener((H("jalview.appletgui.AnnotationColumnChooser$1")?
+0:jalview.appletgui.AnnotationColumnChooser.$AnnotationColumnChooser$1$(),C(jalview.appletgui.AnnotationColumnChooser$1,this,null)))});e(c$,"valueChanged",function(){this.slider.isEnabled()&&(this.getCurrentAnnotation().threshold.value=this.slider.getValue()/1E3,this.updateView(),this.ap.paintAlignment(!1))},"~B");d(c$,"getThreshold",function(){return this.threshold});d(c$,"setThreshold",function(a){this.threshold=a},"awt2swing.Choice");d(c$,"getAnnotations",function(){return this.annotations});d(c$,
+"setAnnotations",function(a){this.annotations=a},"awt2swing.Choice");e(c$,"updateView",function(){if(!this.adjusting){var a=new jalview.viewmodel.annotationfilter.AnnotationFilterParameter;this.setCurrentAnnotation(this.av.getAlignment().getAlignmentAnnotation()[this.getAnnotations().getSelectedIndex()]);var b=this.getSelectedThresholdItem(this.getThreshold().getSelectedIndex());this.slider.setEnabled(!0);this.thresholdValue.setEnabled(!0);-1==b?(this.slider.setEnabled(!1),this.thresholdValue.setEnabled(!1),
+this.thresholdValue.setText("")):-1!=b&&(null==this.getCurrentAnnotation().threshold&&this.getCurrentAnnotation().setThreshold(new jalview.datamodel.GraphLine((this.getCurrentAnnotation().graphMax-this.getCurrentAnnotation().graphMin)/2,"Threshold",java.awt.Color.black)),this.adjusting=!0,this.getCurrentAnnotation(),this.getCurrentAnnotation(),this.slider.setMinimum(I(1E3*this.getCurrentAnnotation().graphMin)),this.slider.setMaximum(I(1E3*this.getCurrentAnnotation().graphMax)),this.slider.setValue(I(1E3*
+this.getCurrentAnnotation().threshold.value)),this.thresholdValue.setText(this.getCurrentAnnotation().threshold.value+""),this.slider.setEnabled(!0),this.thresholdValue.setEnabled(!0),this.adjusting=!1,a.setThresholdType(jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.NO_THRESHOLD),0!=this.getCurrentAnnotation().graph&&(a.setThresholdValue(this.getCurrentAnnotation().threshold.value),1==b?a.setThresholdType(jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.ABOVE_THRESHOLD):
+0==b&&a.setThresholdType(jalview.viewmodel.annotationfilter.AnnotationFilterParameter.ThresholdType.BELOW_THRESHOLD)));null!=this.currentStructureFilterPanel&&(this.currentStructureFilterPanel.alphaHelix.getState()&&a.setFilterAlphaHelix(!0),this.currentStructureFilterPanel.betaStrand.getState()&&a.setFilterBetaSheet(!0),this.currentStructureFilterPanel.turn.getState()&&a.setFilterTurn(!0));null!=this.currentSearchPanel&&(this.currentSearchPanel.searchBox.getText().isEmpty()?(this.currentSearchPanel.description.setEnabled(!1),
+this.currentSearchPanel.displayName.setEnabled(!1)):(this.currentSearchPanel.description.setEnabled(!0),this.currentSearchPanel.displayName.setEnabled(!0),a.setRegexString(this.currentSearchPanel.searchBox.getText()),this.currentSearchPanel.displayName.getState()&&a.addRegexSearchField(jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DISPLAY_STRING),this.currentSearchPanel.description.getState()&&a.addRegexSearchField(jalview.viewmodel.annotationfilter.AnnotationFilterParameter.SearchableAnnotationField.DESCRIPTION)));
+this.av.getColumnSelection().filterAnnotations(this.getCurrentAnnotation().annotations,a);this.av.showAllHiddenColumns();this.getActionOption()==jalview.appletgui.AnnotationColumnChooser.ACTION_OPTION_HIDE&&this.av.hideSelectedColumns();this.av.setAnnotationColumnSelectionState(this);this.ap.paintAlignment(!0)}});d(c$,"getOldColumnSelection",function(){return this.oldColumnSelection});d(c$,"setOldColumnSelection",function(a){null!=a&&(this.oldColumnSelection=new jalview.datamodel.ColumnSelection(a))},
+"jalview.datamodel.ColumnSelection");d(c$,"getCurrentFutherActionPanel",function(){return this.currentFurtherActionPanel});d(c$,"setCurrentFutherActionPanel",function(a){this.currentFurtherActionPanel=a},"jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel");d(c$,"getCurrentSearchPanel",function(){return this.currentSearchPanel});d(c$,"setCurrentSearchPanel",function(a){this.currentSearchPanel=a},"jalview.appletgui.AnnotationColumnChooser.SearchPanel");d(c$,"getActionOption",function(){return this.actionOption});
+d(c$,"setActionOption",function(a){this.actionOption=a},"~N");d(c$,"getCurrentStructureFilterPanel",function(){return this.currentStructureFilterPanel});d(c$,"setCurrentStructureFilterPanel",function(a){this.currentStructureFilterPanel=a},"jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel");e(c$,"itemStateChanged",function(a){a.getSource()===this.annotations?this.selectedAnnotationChanged():a.getSource()===this.threshold&&this.threshold_actionPerformed(null)},"java.awt.event.ItemEvent");
+d(c$,"selectedAnnotationChanged",function(){var a=jalview.appletgui.AnnotationColumnChooser.NO_GRAPH_VIEW;0!=this.av.getAlignment().getAlignmentAnnotation()[this.getAnnotations().getSelectedIndex()].graph&&(a=jalview.appletgui.AnnotationColumnChooser.GRAPH_VIEW);this.gSearchPanel.syncState();this.gFurtherActionPanel.syncState();this.gStructureFilterPanel.syncState();this.ngSearchPanel.syncState();this.ngFurtherActionPanel.syncState();this.ngStructureFilterPanel.syncState();this.switchableViewsLayout.show(this.switchableViewsPanel,
+a);this.updateView()});e(c$,"actionPerformed",function(a){if(a.getSource()===this.thresholdValue)try{var b=(new Float(this.thresholdValue.getText())).floatValue();this.slider.setValue(I(1E3*b));this.adjustmentValueChanged(null)}catch(c){if(!y(c,NumberFormatException))throw c;}else a.getSource()===this.ok?this.ok_actionPerformed(null):a.getSource()===this.cancel?this.cancel_actionPerformed(null):a.getSource()===this.thresholdValue?this.thresholdValue_actionPerformed(null):this.updateView()},"java.awt.event.ActionEvent");
+e(c$,"mouseClicked",function(){},"java.awt.event.MouseEvent");e(c$,"mousePressed",function(a){a.getSource()===this.slider&&this.updateView()},"java.awt.event.MouseEvent");e(c$,"mouseReleased",function(a){a.getSource()===this.slider&&this.updateView()},"java.awt.event.MouseEvent");e(c$,"mouseEntered",function(a){a.getSource()===this.slider&&this.updateView()},"java.awt.event.MouseEvent");e(c$,"mouseExited",function(a){a.getSource()===this.slider&&this.updateView()},"java.awt.event.MouseEvent");c$.$AnnotationColumnChooser$FurtherActionPanel$=
+function(){A(self.c$);c$=s(function(){O(this,arguments);this.furtherAction=this.aColChooser=null;r(this,arguments)},jalview.appletgui.AnnotationColumnChooser,"FurtherActionPanel",awt2swing.Panel,java.awt.event.ItemListener);J(c$,function(){this.furtherAction=new awt2swing.Choice});m(c$,function(a){t(this,jalview.appletgui.AnnotationColumnChooser.FurtherActionPanel,[]);this.aColChooser=a;this.furtherAction.addItem("Select");this.furtherAction.addItem("Hide");this.furtherAction.addItemListener(this);
+this.syncState();this.add(this.furtherAction)},"jalview.appletgui.AnnotationColumnChooser");d(c$,"syncState",function(){this.aColChooser.getActionOption()==jalview.appletgui.AnnotationColumnChooser.ACTION_OPTION_HIDE?this.furtherAction.select("Hide"):this.furtherAction.select("Select")});e(c$,"itemStateChanged",function(){this.aColChooser.setCurrentFutherActionPanel(this);this.furtherAction.getSelectedItem().toString().equalsIgnoreCase("Select")?this.b$["jalview.appletgui.AnnotationColumnChooser"].setActionOption(1):
+this.b$["jalview.appletgui.AnnotationColumnChooser"].setActionOption(jalview.appletgui.AnnotationColumnChooser.ACTION_OPTION_HIDE);this.b$["jalview.appletgui.AnnotationColumnChooser"].updateView()},"java.awt.event.ItemEvent");c$=z()};c$.$AnnotationColumnChooser$StructureFilterPanel$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.all=this.turn=this.betaStrand=this.alphaHelix=this.aColChooser=null;r(this,arguments)},jalview.appletgui.AnnotationColumnChooser,"StructureFilterPanel",jalview.appletgui.TitledPanel,
+java.awt.event.ItemListener);J(c$,function(){this.alphaHelix=new awt2swing.Checkbox;this.betaStrand=new awt2swing.Checkbox;this.turn=new awt2swing.Checkbox;this.all=new awt2swing.Checkbox});m(c$,function(a){t(this,jalview.appletgui.AnnotationColumnChooser.StructureFilterPanel,[]);this.aColChooser=a;this.alphaHelix.setLabel(jalview.util.MessageManager.getString("label.alpha_helix"));this.alphaHelix.setBackground(java.awt.Color.white);this.alphaHelix.addItemListener(this);this.betaStrand.setLabel(jalview.util.MessageManager.getString("label.beta_strand"));
+this.betaStrand.setBackground(java.awt.Color.white);this.betaStrand.addItemListener(this);this.turn.setLabel(jalview.util.MessageManager.getString("label.turn"));this.turn.setBackground(java.awt.Color.white);this.turn.addItemListener(this);this.all.setLabel(jalview.util.MessageManager.getString("label.select_all"));this.all.setBackground(java.awt.Color.white);this.all.addItemListener(this);this.setBackground(java.awt.Color.white);this.setTitle("Structure Filter");this.add(this.all);this.add(this.alphaHelix);
+this.add(this.betaStrand);this.add(this.turn)},"jalview.appletgui.AnnotationColumnChooser");d(c$,"alphaHelix_actionPerformed",function(){this.updateSelectAllState();this.aColChooser.setCurrentStructureFilterPanel(this);this.aColChooser.updateView()});d(c$,"betaStrand_actionPerformed",function(){this.updateSelectAllState();this.aColChooser.setCurrentStructureFilterPanel(this);this.aColChooser.updateView()});d(c$,"turn_actionPerformed",function(){this.updateSelectAllState();this.aColChooser.setCurrentStructureFilterPanel(this);
+this.aColChooser.updateView()});d(c$,"all_actionPerformed",function(){this.all.getState()?(this.alphaHelix.setState(!0),this.betaStrand.setState(!0),this.turn.setState(!0)):(this.alphaHelix.setState(!1),this.betaStrand.setState(!1),this.turn.setState(!1));this.aColChooser.setCurrentStructureFilterPanel(this);this.aColChooser.updateView()});d(c$,"updateSelectAllState",function(){this.alphaHelix.getState()&&this.betaStrand.getState()&&this.turn.getState()?this.all.setState(!0):this.all.setState(!1)});
+d(c$,"syncState",function(){var a=this.aColChooser.getCurrentStructureFilterPanel();null!=a&&(this.alphaHelix.setState(a.alphaHelix.getState()),this.betaStrand.setState(a.betaStrand.getState()),this.turn.setState(a.turn.getState()),a.all.getState()&&(this.all.setState(!0),this.alphaHelix.setState(!0),this.betaStrand.setState(!0),this.turn.setState(!0)))});e(c$,"itemStateChanged",function(a){a.getSource()===this.alphaHelix?this.alphaHelix_actionPerformed():a.getSource()===this.betaStrand?this.betaStrand_actionPerformed():
+a.getSource()===this.turn?this.turn_actionPerformed():a.getSource()===this.all&&this.all_actionPerformed()},"java.awt.event.ItemEvent");c$=z()};c$.$AnnotationColumnChooser$SearchPanel$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.searchBox=this.description=this.displayName=this.aColChooser=null;r(this,arguments)},jalview.appletgui.AnnotationColumnChooser,"SearchPanel",jalview.appletgui.TitledPanel,java.awt.event.ItemListener);J(c$,function(){this.displayName=new awt2swing.Checkbox;
+this.description=new awt2swing.Checkbox;this.searchBox=new awt2swing.TextField(10)});m(c$,function(a){t(this,jalview.appletgui.AnnotationColumnChooser.SearchPanel,[]);this.aColChooser=a;this.searchBox.addTextListener((H("jalview.appletgui.AnnotationColumnChooser$SearchPanel$1")?0:jalview.appletgui.AnnotationColumnChooser.SearchPanel.$AnnotationColumnChooser$SearchPanel$1$(),C(jalview.appletgui.AnnotationColumnChooser$SearchPanel$1,this,null)));this.displayName.setLabel(jalview.util.MessageManager.getString("label.display_name"));
+this.displayName.setEnabled(!1);this.displayName.addItemListener(this);this.description.setLabel(jalview.util.MessageManager.getString("label.description"));this.description.setEnabled(!1);this.description.addItemListener(this);this.setTitle("Search Filter");this.syncState();this.add(this.searchBox);this.add(this.displayName);this.add(this.description)},"jalview.appletgui.AnnotationColumnChooser");d(c$,"displayNameCheckboxAction",function(){this.aColChooser.setCurrentSearchPanel(this);this.aColChooser.updateView()});
+d(c$,"discriptionCheckboxAction",function(){this.aColChooser.setCurrentSearchPanel(this);this.aColChooser.updateView()});d(c$,"searchStringAction",function(){this.aColChooser.setCurrentSearchPanel(this);this.aColChooser.updateView()});d(c$,"syncState",function(){var a=this.aColChooser.getCurrentSearchPanel();null!=a&&(this.description.setEnabled(a.description.isEnabled()),this.description.setState(a.description.getState()),this.displayName.setEnabled(a.displayName.isEnabled()),this.displayName.setState(a.displayName.getState()),
+this.searchBox.setText(a.searchBox.getText()))});e(c$,"itemStateChanged",function(a){a.getSource()===this.displayName?this.displayNameCheckboxAction():a.getSource()===this.description&&this.discriptionCheckboxAction()},"java.awt.event.ItemEvent");c$.$AnnotationColumnChooser$SearchPanel$1$=function(){A(self.c$);c$=L(jalview.appletgui,"AnnotationColumnChooser$SearchPanel$1",null,java.awt.event.TextListener);e(c$,"textValueChanged",function(){this.b$["jalview.appletgui.AnnotationColumnChooser.SearchPanel"].searchStringAction()},
+"java.awt.event.TextEvent");c$=z()};c$=z()};c$.$AnnotationColumnChooser$1$=function(){A(self.c$);c$=L(jalview.appletgui,"AnnotationColumnChooser$1",java.awt.event.MouseAdapter);d(c$,"mousePressed",function(a){this.b$["jalview.appletgui.AnnotationColumnChooser"].sliderDragging=!0;K(this,jalview.appletgui.AnnotationColumnChooser$1,"mousePressed",[a])},"java.awt.event.MouseEvent");d(c$,"mouseDragged",function(a){this.b$["jalview.appletgui.AnnotationColumnChooser"].sliderDragging=!0;K(this,jalview.appletgui.AnnotationColumnChooser$1,
+"mouseDragged",[a])},"java.awt.event.MouseEvent");e(c$,"mouseReleased",function(){this.b$["jalview.appletgui.AnnotationColumnChooser"].sliderDragging&&(this.b$["jalview.appletgui.AnnotationColumnChooser"].sliderDragging=!1,this.b$["jalview.appletgui.AnnotationColumnChooser"].valueChanged(!0));this.b$["jalview.appletgui.AnnotationColumnChooser"].ap.paintAlignment(!0)},"java.awt.event.MouseEvent");c$=z()};G(c$,"ACTION_OPTION_SELECT",1,"ACTION_OPTION_HIDE",2,"NO_GRAPH_VIEW","0","GRAPH_VIEW","1")});p("jalview.appletgui");
+q(["awt2swing.Panel","$.Button","$.Checkbox","$.Scrollbar","$.TextField"],"jalview.appletgui.AnnotationRowFilter",["jalview.util.MessageManager","java.lang.Float","java.util.Vector"],function(){c$=s(function(){this.annmap=this.ap=this.av=null;this.enableSeqAss=!1;this.currentAnnotation=null;this.adjusting=!1;this.cancel=this.ok=this.frame=this.thresholdValue=this.slider=this.thresholdIsMin=this.seqAssociated=this.maxColour=this.minColour=this.currentColours=null;this.sliderDragging=!1;r(this,arguments)},
+jalview.appletgui,"AnnotationRowFilter",awt2swing.Panel);J(c$,function(){this.currentColours=new awt2swing.Checkbox;this.minColour=new awt2swing.Panel;this.maxColour=new awt2swing.Panel;this.seqAssociated=new awt2swing.Checkbox;this.thresholdIsMin=new awt2swing.Checkbox;this.slider=new awt2swing.Scrollbar(0);this.thresholdValue=new awt2swing.TextField(20);this.ok=new awt2swing.Button;this.cancel=new awt2swing.Button});m(c$,function(a,b){t(this,jalview.appletgui.AnnotationRowFilter,[]);this.av=a;this.ap=
+b},"jalview.appletgui.AlignViewport,jalview.appletgui.AlignmentPanel");m(c$,function(){t(this,jalview.appletgui.AnnotationRowFilter,[])});d(c$,"getAnnotationItems",function(a){for(var b=new java.util.Vector,c=1,d=w(this.av.getAlignment().getAlignmentAnnotation().length,0),e=0;e<this.av.getAlignment().getAlignmentAnnotation().length;e++){if(null==this.av.getAlignment().getAlignmentAnnotation()[e].sequenceRef){if(a)continue}else this.enableSeqAss=!0;var k=this.av.getAlignment().getAlignmentAnnotation()[e].label;
+b.contains(k)?a||(d[b.size()]=e,b.add(k+"_"+c++)):(d[b.size()]=e,b.add(k))}this.annmap=w(b.size(),0);System.arraycopy(d,0,this.annmap,0,this.annmap.length);return b},"~B");d(c$,"getSelectedThresholdItem",function(a){var b=-1;1==a?b=1:2==a&&(b=0);return b},"~N");d(c$,"modelChanged",function(){this.seqAssociated.setEnabled(this.enableSeqAss)});d(c$,"ok_actionPerformed",function(){this.updateView();this.frame.setVisible(!1)},"java.awt.event.ActionEvent");d(c$,"cancel_actionPerformed",function(){this.reset();
+this.ap.paintAlignment(!0);this.frame.setVisible(!1)},"java.awt.event.ActionEvent");d(c$,"thresholdCheck_actionPerformed",function(){this.updateView()},"java.awt.event.ActionEvent");d(c$,"annotations_actionPerformed",function(){this.updateView()},"java.awt.event.ActionEvent");d(c$,"threshold_actionPerformed",function(){this.updateView()},"java.awt.event.ActionEvent");d(c$,"thresholdValue_actionPerformed",function(){try{var a=Float.parseFloat(this.thresholdValue.getText());this.slider.setValue(I(1E3*
+a));this.updateView()}catch(b){if(!y(b,NumberFormatException))throw b;}},"java.awt.event.ActionEvent");d(c$,"populateThresholdComboBox",function(a){a.addItem(jalview.util.MessageManager.getString("label.threshold_feature_no_thereshold"));a.addItem(jalview.util.MessageManager.getString("label.threshold_feature_above_thereshold"));a.addItem(jalview.util.MessageManager.getString("label.threshold_feature_below_thereshold"))},"awt2swing.Choice");d(c$,"getCurrentAnnotation",function(){return this.currentAnnotation});
+d(c$,"setCurrentAnnotation",function(a){this.currentAnnotation=a},"jalview.datamodel.AlignmentAnnotation")});p("jalview.appletgui");q(["awt2swing.Panel","java.awt.Insets"],"jalview.appletgui.TitledPanel",["awt2swing.Util"],function(){c$=s(function(){this.$insets=this.title=null;r(this,arguments)},jalview.appletgui,"TitledPanel",awt2swing.Panel);J(c$,function(){this.$insets=new java.awt.Insets(10,10,10,10)});m(c$,function(){this.construct("")});m(c$,function(a){t(this,jalview.appletgui.TitledPanel,
+[]);this.setTitle(a)},"~S");d(c$,"getInsets",function(){return this.$insets});d(c$,"paintComponent",function(a){K(this,jalview.appletgui.TitledPanel,"paintComponent",[a]);a.setColor(this.getForeground());a.drawRect(5,5,this.getWidth()-10,this.getHeight()-10);var b=a.getFontMetrics().stringWidth(this.getTitle());a.setColor(this.getBackground());a.fillRect(10,0,b,10);a.setColor(this.getForeground());awt2swing.Util.drawString(a,this.getTitle(),10,10)},"java.awt.Graphics");d(c$,"getTitle",function(){return this.title});
+d(c$,"setTitle",function(a){this.title=a},"~S")});p("java.awt");q(["java.awt.LayoutManager2","java.io.ObjectStreamField","java.util.Hashtable","$.Vector"],"java.awt.CardLayout",["java.lang.IllegalArgumentException","java.awt.Dimension"],function(){c$=s(function(){this.vector=null;H("java.awt.CardLayout.Card")||java.awt.CardLayout.$CardLayout$Card$();this.vgap=this.hgap=this.currentCard=0;r(this,arguments)},java.awt,"CardLayout",null,[java.awt.LayoutManager2,java.io.Serializable]);J(c$,function(){this.vector=
+new java.util.Vector});m(c$,function(){this.construct(0,0)});m(c$,function(a,b){this.hgap=a;this.vgap=b},"~N,~N");d(c$,"getHgap",function(){return this.hgap});d(c$,"setHgap",function(a){this.hgap=a},"~N");d(c$,"getVgap",function(){return this.vgap});d(c$,"setVgap",function(a){this.vgap=a},"~N");d(c$,"addLayoutComponent",function(a,b){null==b&&(b="");if(v(b,String))this.addLayoutComponent(b,a);else throw new IllegalArgumentException("cannot add to layout: constraint must be a string");},"java.awt.Component,~O");
+d(c$,"addLayoutComponent",function(a,b){this.vector.isEmpty()||b.setVisible(!1);for(var c=0;c<this.vector.size();c++)if(this.vector.get(c).name.equals(a)){this.vector.get(c).comp=b;return}this.vector.add(C(java.awt.CardLayout.Card,this,null,a,b))},"~S,java.awt.Component");e(c$,"removeLayoutComponent",function(a){for(var b=0;b<this.vector.size();b++)if(this.vector.get(b).comp===a){a.isVisible()&&null!=a.getParent()&&this.next(a.getParent());this.vector.remove(b);this.currentCard>b&&this.currentCard--;
+break}},"java.awt.Component");e(c$,"preferredLayoutSize",function(a){for(var b=a.getInsets(),c=a.getComponentCount(),d=0,e=0,k=0;k<c;k++){var g=a.getComponent(k).getPreferredSize();g.width>d&&(d=g.width);g.height>e&&(e=g.height)}return new java.awt.Dimension(b.left+b.right+d+2*this.hgap,b.top+b.bottom+e+2*this.vgap)},"java.awt.Container");e(c$,"minimumLayoutSize",function(a){for(var b=a.getInsets(),c=a.getComponentCount(),d=0,e=0,k=0;k<c;k++){var g=a.getComponent(k).getMinimumSize();g.width>d&&(d=
+g.width);g.height>e&&(e=g.height)}return new java.awt.Dimension(b.left+b.right+d+2*this.hgap,b.top+b.bottom+e+2*this.vgap)},"java.awt.Container");e(c$,"maximumLayoutSize",function(){return new java.awt.Dimension(2147483647,2147483647)},"java.awt.Container");e(c$,"getLayoutAlignmentX",function(){return 0.5},"java.awt.Container");e(c$,"getLayoutAlignmentY",function(){return 0.5},"java.awt.Container");e(c$,"invalidateLayout",function(){},"java.awt.Container");e(c$,"layoutContainer",function(a){for(var b=
+a.getInsets(),c=a.getComponentCount(),d=null,e=!1,k=0;k<c;k++)d=a.getComponent(k),d.setBounds(this.hgap+b.left,this.vgap+b.top,a.width-(2*this.hgap+b.left+b.right),a.height-(2*this.vgap+b.top+b.bottom)),d.isVisible()&&(e=!0);!e&&0<c&&a.getComponent(0).setVisible(!0)},"java.awt.Container");d(c$,"checkLayout",function(a){if(a.getLayout()!==this)throw new IllegalArgumentException("wrong parent for CardLayout");},"java.awt.Container");d(c$,"first",function(a){this.checkLayout(a);for(var b=a.getComponentCount(),
+c=0;c<b;c++){var d=a.getComponent(c);if(d.isVisible()){d.setVisible(!1);break}}0<b&&(this.currentCard=0,a.getComponent(0).setVisible(!0),a.validate())},"java.awt.Container");d(c$,"next",function(a){this.checkLayout(a);for(var b=a.getComponentCount(),c=0;c<b;c++){var d=a.getComponent(c);if(d.isVisible()){d.setVisible(!1);this.currentCard=(c+1)%b;d=a.getComponent(this.currentCard);d.setVisible(!0);a.validate();return}}this.showDefaultComponent(a)},"java.awt.Container");d(c$,"previous",function(a){this.checkLayout(a);
+for(var b=a.getComponentCount(),c=0;c<b;c++){var d=a.getComponent(c);if(d.isVisible()){d.setVisible(!1);this.currentCard=0<c?c-1:b-1;d=a.getComponent(this.currentCard);d.setVisible(!0);a.validate();return}}this.showDefaultComponent(a)},"java.awt.Container");d(c$,"showDefaultComponent",function(a){0<a.getComponentCount()&&(this.currentCard=0,a.getComponent(0).setVisible(!0),a.validate())},"java.awt.Container");d(c$,"last",function(a){this.checkLayout(a);for(var b=a.getComponentCount(),c=0;c<b;c++){var d=
+a.getComponent(c);if(d.isVisible()){d.setVisible(!1);break}}0<b&&(this.currentCard=b-1,a.getComponent(this.currentCard).setVisible(!0),a.validate())},"java.awt.Container");d(c$,"show",function(a,b){this.checkLayout(a);for(var c=null,d=this.vector.size(),e=0;e<d;e++){var k=this.vector.get(e);if(k.name.equals(b)){c=k.comp;this.currentCard=e;break}}if(null!=c&&!c.isVisible()){d=a.getComponentCount();for(e=0;e<d;e++)if(k=a.getComponent(e),k.isVisible()){k.setVisible(!1);break}c.setVisible(!0);a.validate()}},
+"java.awt.Container,~S");e(c$,"toString",function(){return this.getClass().getName()+"[hgap="+this.hgap+",vgap="+this.vgap+"]"});c$.$CardLayout$Card$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.comp=this.name=null;r(this,arguments)},java.awt.CardLayout,"Card",null,java.io.Serializable);m(c$,function(a,b){this.name=a;this.comp=b},"~S,java.awt.Component");c$=z()};c$.serialPersistentFields=c$.prototype.serialPersistentFields=E(-1,[new java.io.ObjectStreamField("tab",java.util.Hashtable),
+new java.io.ObjectStreamField("hgap",Integer.TYPE),new java.io.ObjectStreamField("vgap",Integer.TYPE),new java.io.ObjectStreamField("vector",java.util.Vector),new java.io.ObjectStreamField("currentCard",Integer.TYPE)])});q(null,"java.io.ObjectStreamField","java.lang.Boolean $.Byte $.Character $.Double $.Float $.Long $.NullPointerException $.Short java.util.Arrays".split(" "),function(){c$=s(function(){this.type=this.name=null;this.offset=0;this.typeString=null;this.isDeserialized=this.unshared=!1;
+r(this,arguments)},java.io,"ObjectStreamField",null,Comparable);m(c$,function(a,b){if(null==a||null==b)throw new NullPointerException;this.name=a;this.type=b},"~S,Class");m(c$,function(a,b,c){if(null==a||null==b)throw new NullPointerException;this.name=a;this.type=b;this.unshared=c},"~S,Class,~B");m(c$,function(a,b){if(null==b)throw new NullPointerException;this.name=b;this.typeString=a.$replace(".","/");this.isDeserialized=!0},"~S,~S");e(c$,"compareTo",function(a){var b=this.isPrimitive(),c=a.isPrimitive();
+return b!=c?b?-1:1:this.getName().compareTo(a.getName())},"~O");e(c$,"equals",function(a){return 0==this.compareTo(a)},"~O");e(c$,"hashCode",function(){return this.getName().hashCode()});d(c$,"getName",function(){return this.name});d(c$,"getOffset",function(){return this.offset});d(c$,"getTypeInternal",($fz=function(){return this.type},$fz.isPrivate=!0,$fz));d(c$,"getType",function(){var a=this.getTypeInternal();return this.isDeserialized&&!a.isPrimitive()?W._O:a});d(c$,"getTypeCode",function(){var a=
+this.getTypeInternal();return a===Integer.TYPE?"I":a===Byte.TYPE?"B":a===Character.TYPE?"C":a===Short.TYPE?"S":a===Boolean.TYPE?"Z":a===Long.TYPE?"J":a===Float.TYPE?"F":a===Double.TYPE?"D":a.isArray()?"[":"L"});d(c$,"getTypeString",function(){if(this.isPrimitive())return null;if(null==this.typeString){var a=this.getTypeInternal(),b=a.getName().$replace(".","/");this.typeString=(a.isArray()?b:"L"+b+";").intern()}return this.typeString});d(c$,"isPrimitive",function(){var a=this.getTypeInternal();return null!=
+a&&a.isPrimitive()});d(c$,"setOffset",function(a){this.offset=a},"~N");e(c$,"toString",function(){return this.getClass().getName()+"("+this.getName()+":"+this.getTypeInternal()+")"});c$.sortFields=d(c$,"sortFields",function(a){if(1<a.length){var b=(H("java.io.ObjectStreamField$1")?0:java.io.ObjectStreamField.$ObjectStreamField$1$(),C(java.io.ObjectStreamField$1,this,null));java.util.Arrays.sort(a,b)}},"~A");d(c$,"resolve",function(a){if(1==this.typeString.length)switch(this.typeString.charAt(0)){case "I":this.type=
+Integer.TYPE;return;case "B":this.type=Byte.TYPE;return;case "C":this.type=Character.TYPE;return;case "S":this.type=Short.TYPE;return;case "Z":this.type=Boolean.TYPE;return;case "J":this.type=Long.TYPE;return;case "F":this.type=Float.TYPE;return;case "D":this.type=Double.TYPE;return}var b=this.typeString.$replace("/",".");76==b.charAt(0).charCodeAt(0)&&(b=b.substring(1,b.length-1));try{this.type=W._4Name(b,!1,a)}catch(c){if(!v(c,ClassNotFoundException))throw c;}},"ClassLoader");d(c$,"isUnshared",
+function(){return this.unshared});c$.$ObjectStreamField$1$=function(){A(self.c$);c$=L(java.io,"ObjectStreamField$1",null,java.util.Comparator);e(c$,"compare",function(a,b){return a.compareTo(b)},"java.io.ObjectStreamField,java.io.ObjectStreamField");c$=z()}});p("jalview.appletgui");q("awt2swing.Panel java.awt.event.ActionListener awt2swing.Button $.Checkbox $.Label $.TextField java.awt.GridLayout".split(" "),"jalview.appletgui.Finder","awt2swing.Frame jalview.analysis.Finder jalview.bin.JalviewLite jalview.datamodel.SequenceFeature jalview.util.MessageManager java.awt.Font $.Rectangle java.awt.event.KeyAdapter $.WindowAdapter".split(" "),
+function(){c$=s(function(){this.searchResults=this.frame=this.ap=this.av=null;this.seqIndex=0;this.resIndex=-1;this.searchDescription=this.caseSensitive=this.createNewGroup=this.gridLayout1=this.actionsPanel=this.findNext=this.findAll=this.textfield=this.jLabel1=null;r(this,arguments)},jalview.appletgui,"Finder",awt2swing.Panel,java.awt.event.ActionListener);J(c$,function(){this.jLabel1=new awt2swing.Label;this.textfield=new awt2swing.TextField;this.findAll=new awt2swing.Button;this.findNext=new awt2swing.Button;
+this.actionsPanel=new awt2swing.Panel;this.gridLayout1=new java.awt.GridLayout;this.createNewGroup=new awt2swing.Button;this.caseSensitive=new awt2swing.Checkbox;this.searchDescription=new awt2swing.Checkbox});m(c$,function(a){t(this,jalview.appletgui.Finder,[]);try{this.jbInit()}catch(b){if(y(b,Exception))b.printStackTrace();else throw b;}this.av=a.av;this.ap=a;this.frame=new awt2swing.Frame;this.frame.add(this);jalview.bin.JalviewLite.addFrame(this.frame,jalview.util.MessageManager.getString("action.find"),
+340,120);this.frame.repaint();this.frame.addWindowListener((H("jalview.appletgui.Finder$1")?0:jalview.appletgui.Finder.$Finder$1$(),C(jalview.appletgui.Finder$1,this,T("ap",a))));this.textfield.requestFocus()},"jalview.appletgui.AlignmentPanel");e(c$,"actionPerformed",function(a){a.getSource()===this.textfield?this.doSearch(!1):a.getSource()===this.findNext?this.doSearch(!1):a.getSource()===this.findAll?(this.resIndex=-1,this.seqIndex=0,this.doSearch(!0)):a.getSource()===this.createNewGroup&&this.createNewGroup_actionPerformed()},
+"java.awt.event.ActionEvent");d(c$,"createNewGroup_actionPerformed",function(){for(var a=Array(this.searchResults.getSize()),b=Array(this.searchResults.getSize()),c=0;c<this.searchResults.getSize();c++)a[c]=this.searchResults.getResultSequence(c),b[c]=new jalview.datamodel.SequenceFeature(this.textfield.getText().trim(),"Search Results",null,this.searchResults.getResultStart(c),this.searchResults.getResultEnd(c),"Search Results");this.ap.seqPanel.seqCanvas.getFeatureRenderer().amendFeatures(a,b,!0,
+this.ap)&&(this.ap.alignFrame.sequenceFeatures.setState(!0),this.av.setShowSequenceFeatures(!0),this.ap.highlightSearchResults(null))});d(c$,"doSearch",function(a){null!=this.ap.av.applet.currentAlignFrame&&(this.ap=this.ap.av.applet.currentAlignFrame.alignPanel,this.av=this.ap.av);this.createNewGroup.setEnabled(!1);var b=new jalview.analysis.Finder(this.av.getAlignment(),this.av.getSelectionGroup(),this.seqIndex,this.resIndex);b.setCaseSensitive(this.caseSensitive.getState());b.setIncludeDescription(this.searchDescription.getState());
+b.setFindAll(a);var c=this.textfield.getText();b.find(c);this.seqIndex=b.getSeqIndex();this.resIndex=b.getResIndex();this.searchResults=b.getSearchResults();var b=b.getIdMatch(),d=!1;0<b.size()?(d=!0,this.ap.idPanel.highlightSearchResults(b)):this.ap.idPanel.highlightSearchResults(null);0<this.searchResults.getSize()?(d=!0,this.createNewGroup.setEnabled(!0)):this.searchResults=null;this.ap.highlightSearchResults(this.searchResults);d?a?(a=0<b.size()?""+b.size()+" IDs":"",0<b.size()&&(null!=this.searchResults&&
+0<this.searchResults.getSize())&&(a+=" and "),null!=this.searchResults&&(a+=this.searchResults.getSize()+" subsequence matches."),this.ap.alignFrame.setStatus(jalview.util.MessageManager.formatMessage("label.search_results",E(-1,[c,a])))):this.ap.alignFrame.setStatus(jalview.util.MessageManager.formatMessage("label.found_match_for",E(-1,[c]))):(this.ap.alignFrame.setStatus(jalview.util.MessageManager.getString("label.finished_searching")),this.resIndex=-1,this.seqIndex=0)},"~B");d(c$,"jbInit",function(){this.jLabel1.setFont(new java.awt.Font("Verdana",
+0,12));this.jLabel1.setText(jalview.util.MessageManager.getString("action.find"));this.jLabel1.setBounds(new java.awt.Rectangle(3,30,34,15));this.setLayout(null);this.textfield.setFont(new java.awt.Font("Verdana",0,10));this.textfield.setText("");this.textfield.setBounds(new java.awt.Rectangle(40,17,133,21));this.textfield.addKeyListener((H("jalview.appletgui.Finder$2")?0:jalview.appletgui.Finder.$Finder$2$(),C(jalview.appletgui.Finder$2,this,null)));this.textfield.addActionListener(this);this.findAll.setFont(new java.awt.Font("Verdana",
+0,10));this.findAll.setLabel(jalview.util.MessageManager.getString("action.find_all"));this.findAll.addActionListener(this);this.findNext.setEnabled(!1);this.findNext.setFont(new java.awt.Font("Verdana",0,10));this.findNext.setLabel(jalview.util.MessageManager.getString("action.find_next"));this.findNext.addActionListener(this);this.actionsPanel.setBounds(new java.awt.Rectangle(195,5,141,64));this.actionsPanel.setLayout(this.gridLayout1);this.gridLayout1.setHgap(0);this.gridLayout1.setRows(3);this.gridLayout1.setVgap(2);
+this.createNewGroup.setEnabled(!1);this.createNewGroup.setFont(new java.awt.Font("Verdana",0,10));this.createNewGroup.setLabel(jalview.util.MessageManager.getString("label.new_feature"));this.createNewGroup.addActionListener(this);this.caseSensitive.setLabel(jalview.util.MessageManager.getString("label.match_case"));this.caseSensitive.setBounds(new java.awt.Rectangle(30,39,126,23));this.searchDescription.setLabel(jalview.util.MessageManager.getString("label.include_description"));this.searchDescription.setBounds(new java.awt.Rectangle(30,
+59,170,23));this.actionsPanel.add(this.findNext,null);this.actionsPanel.add(this.findAll,null);this.actionsPanel.add(this.createNewGroup,null);this.add(this.caseSensitive);this.add(this.textfield,null);this.add(this.jLabel1,null);this.add(this.actionsPanel,null);this.add(this.searchDescription)});d(c$,"textfield_keyTyped",function(){this.findNext.setEnabled(!0)},"java.awt.event.KeyEvent");c$.$Finder$1$=function(){A(self.c$);c$=L(jalview.appletgui,"Finder$1",java.awt.event.WindowAdapter);e(c$,"windowClosing",
+function(){this.f$.ap.highlightSearchResults(null)},"java.awt.event.WindowEvent");c$=z()};c$.$Finder$2$=function(){A(self.c$);c$=L(jalview.appletgui,"Finder$2",java.awt.event.KeyAdapter);e(c$,"keyTyped",function(a){this.b$["jalview.appletgui.Finder"].textfield_keyTyped(a)},"java.awt.event.KeyEvent");c$=z()}});p("jalview.analysis");q(null,"jalview.analysis.Finder",["jalview.datamodel.SearchResults","jalview.jsdev.RegExp","jalview.util.Comparison","java.lang.StringBuffer","java.util.Vector"],function(){c$=
+s(function(){this.idMatch=this.selection=this.alignment=this.searchResults=null;this.findAll=this.includeDescription=this.caseSensitive=!1;this.regex=null;this.seqIndex=0;this.resIndex=-1;r(this,arguments)},jalview.analysis,"Finder");m(c$,function(a,b){this.alignment=a;this.selection=b},"jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup");m(c$,function(a,b,c,d){this.construct(a,b);this.seqIndex=c;this.resIndex=d},"jalview.datamodel.AlignmentI,jalview.datamodel.SequenceGroup,~N,~N");d(c$,
+"find",function(a){var b=!1;this.caseSensitive||(a=a.toUpperCase());this.regex=jalview.jsdev.RegExp.newRegex([a]);this.regex.setIgnoreCase(!this.caseSensitive);this.searchResults=new jalview.datamodel.SearchResults;this.idMatch=new java.util.Vector;var c,d=null,e=!1,k=this.alignment.getHeight();if(null!=this.selection&&(1>this.selection.getSize()||2>this.selection.getEndRes()-this.selection.getStartRes()))this.selection=null;for(;!e&&this.seqIndex<k;)if(c=this.alignment.getSequenceAt(this.seqIndex),
+null!=this.selection&&0<this.selection.getSize()&&!this.selection.getSequences(null).contains(c))this.seqIndex++,this.resIndex=-1;else{if(0>this.resIndex){this.resIndex=0;try{var g=Integer.parseInt(a);if(c.getEnd()>=g&&(this.searchResults.addResult(c,g,g),b=!0,!this.findAll)){e=!0;break}}catch(h){if(!y(h,NumberFormatException))throw h;}if(this.regex.search(c.getName())&&(this.idMatch.addElement(c),b=!0,!this.findAll))break;if(this.isIncludeDescription()&&(null!=c.getDescription()&&this.regex.search(c.getDescription()))&&
+(this.idMatch.addElement(c),b=!0,!this.findAll))break}d=c.getSequenceAsString();null!=this.selection&&this.selection.getEndRes()<this.alignment.getWidth()-1&&(d=d.substring(0,this.selection.getEndRes()+1));for(var j=new StringBuffer,n=0,m=new java.util.Vector,p=0;p<d.length;p++)jalview.util.Comparison.isGap(d.charAt(p))?n++:(j.append(d.charAt(p)),m.addElement(new Integer(n)));d=j.toString();for(j=this.resIndex;j<d.length;j++)if(this.regex.searchFrom(d,j)){if(this.resIndex=this.regex.matchedFrom(),
+!(null!=this.selection&&0<this.selection.getSize()&&this.resIndex+Integer.parseInt(m.elementAt(this.resIndex).toString())<this.selection.getStartRes())){b=c.findPosition(this.resIndex+Integer.parseInt(m.elementAt(this.resIndex).toString()));j=c.findPosition(this.regex.matchedTo()-1+Integer.parseInt(m.elementAt(this.regex.matchedTo()-1).toString()));this.searchResults.addResult(c,b,j);b=!0;if(!this.findAll){e=!0;this.resIndex++;break}j=this.resIndex}}else break;e||(this.seqIndex++,this.resIndex=-1)}return b},
+"~S");d(c$,"getAlignment",function(){return this.alignment});d(c$,"setAlignment",function(a){this.alignment=a},"jalview.datamodel.AlignmentI");d(c$,"isCaseSensitive",function(){return this.caseSensitive});d(c$,"setCaseSensitive",function(a){this.caseSensitive=a},"~B");d(c$,"isFindAll",function(){return this.findAll});d(c$,"setFindAll",function(a){this.findAll=a},"~B");d(c$,"getSelection",function(){return this.selection});d(c$,"setSelection",function(a){this.selection=a},"jalview.datamodel.SequenceGroup");
+d(c$,"getIdMatch",function(){return this.idMatch});d(c$,"getRegex",function(){return this.regex});d(c$,"getSearchResults",function(){return this.searchResults});d(c$,"getResIndex",function(){return this.resIndex});d(c$,"setResIndex",function(a){this.resIndex=a},"~N");d(c$,"getSeqIndex",function(){return this.seqIndex});d(c$,"setSeqIndex",function(a){this.seqIndex=a},"~N");d(c$,"isIncludeDescription",function(){return this.includeDescription});d(c$,"setIncludeDescription",function(a){this.includeDescription=
+a},"~B")});p("java.awt.event");q(["java.awt.event.KeyListener"],"java.awt.event.KeyAdapter",null,function(){c$=B(java.awt.event,"KeyAdapter",null,java.awt.event.KeyListener);e(c$,"keyTyped",function(){},"java.awt.event.KeyEvent");e(c$,"keyPressed",function(){},"java.awt.event.KeyEvent");e(c$,"keyReleased",function(){},"java.awt.event.KeyEvent")});p("jalview.appletgui");q("awt2swing.Panel java.awt.event.ItemListener awt2swing.Button $.Checkbox $.Choice java.awt.Font".split(" "),"jalview.appletgui.FontChooser",
+"awt2swing.Frame $.Label jalview.appletgui.JVDialog jalview.bin.JalviewLite jalview.util.MessageManager java.awt.BorderLayout $.Color $.FlowLayout $.Toolkit java.awt.event.ActionListener".split(" "),function(){c$=s(function(){this.oldFont=this.tp=this.ap=this.cancel=this.ok=this.scaleAsCdna=this.fontName=this.fontStyle=this.fontSize=null;this.oldCharWidth=0;this.oldScaleProtein=!1;this.lastSelected=null;this.lastSelSize=this.lastSelStyle=0;this.$init=!0;this.frame=null;r(this,arguments)},jalview.appletgui,
+"FontChooser",awt2swing.Panel,java.awt.event.ItemListener);J(c$,function(){this.fontSize=new awt2swing.Choice;this.fontStyle=new awt2swing.Choice;this.fontName=new awt2swing.Choice;this.scaleAsCdna=new awt2swing.Checkbox;this.ok=new awt2swing.Button;this.cancel=new awt2swing.Button});m(c$,function(a){t(this,jalview.appletgui.FontChooser,[]);try{this.jbInit()}catch(b){if(y(b,Exception))b.printStackTrace();else throw b;}this.tp=a;this.oldFont=a.getTreeFont();this.init()},"jalview.appletgui.TreePanel");
+m(c$,function(a){t(this,jalview.appletgui.FontChooser,[]);this.ap=a;this.oldFont=a.av.getFont();this.oldCharWidth=a.av.getViewStyle().getCharWidth();this.oldScaleProtein=a.av.getViewStyle().isScaleProteinAsCdna();try{this.jbInit()}catch(b){if(y(b,Exception))b.printStackTrace();else throw b;}this.init()},"jalview.appletgui.AlignmentPanel");d(c$,"init",function(){for(var a=java.awt.Toolkit.getDefaultToolkit().getFontList(),b=0;b<a.length;b++)this.fontName.addItem(a[b]);for(b=1;31>b;b++)this.fontSize.addItem(b+
+"");this.fontStyle.addItem("plain");this.fontStyle.addItem("bold");this.fontStyle.addItem("italic");this.fontName.select(this.oldFont.getName());this.fontSize.select(this.oldFont.getSize()+"");this.fontStyle.select(new Integer(this.oldFont.getStyle()));this.frame=new awt2swing.Frame;this.frame.add(this);jalview.bin.JalviewLite.addFrame(this.frame,jalview.util.MessageManager.getString("action.change_font"),440,115);this.$init=!1});e(c$,"itemStateChanged",function(a){a=a.getSource();a===this.fontName?
+this.fontName_actionPerformed():a===this.fontSize?this.fontSize_actionPerformed():a===this.fontStyle?this.fontStyle_actionPerformed():a===this.scaleAsCdna&&this.scaleAsCdna_actionPerformed()},"java.awt.event.ItemEvent");d(c$,"ok_actionPerformed",function(){this.frame.setVisible(!1);null!=this.ap&&null!=this.ap.getOverviewPanel()&&this.ap.getOverviewPanel().updateOverviewImage()});d(c$,"cancel_actionPerformed",function(){if(null!=this.ap){this.ap.av.setScaleProteinAsCdna(this.oldScaleProtein);null!=
+this.ap.av.getCodingComplement()&&(this.ap.av.getCodingComplement().setScaleProteinAsCdna(this.oldScaleProtein),this.ap.alignFrame.getSplitFrame().repaint());this.ap.av.setFont(this.oldFont);var a=this.ap.av.getViewStyle();a.getCharWidth()!=this.oldCharWidth&&(a.setCharWidth(this.oldCharWidth),this.ap.av.setViewStyle(a));this.ap.paintAlignment(!0)}else null!=this.tp&&(this.tp.setTreeFont(this.oldFont),this.tp.treeCanvas.repaint());this.fontName.select(this.oldFont.getName());this.fontSize.select(this.oldFont.getSize()+
+"");this.fontStyle.select(new Integer(this.oldFont.getStyle()));this.frame.setVisible(!1)});d(c$,"changeFont",function(){null==this.lastSelected&&(this.lastSelected=this.oldFont,this.lastSelSize=this.oldFont.getSize(),this.lastSelStyle=this.oldFont.getStyle());var a=new java.awt.Font(this.fontName.getSelectedItem().toString(),this.fontStyle.getSelectedIndex(),Integer.parseInt(this.fontSize.getSelectedItem().toString())),b=this.getGraphics().getFontMetrics(a),c=b.getStringBounds("M",this.getGraphics()).getWidth(),
+b=b.getStringBounds("I",this.getGraphics()).getWidth();1>c||1>b?(this.fontName.select(this.lastSelected.getName()),this.fontStyle.select(new Integer(this.lastSelStyle)),this.fontSize.select(""+this.lastSelSize),a=new jalview.appletgui.JVDialog(this.frame,jalview.util.MessageManager.getString("label.invalid_font"),!0,350,200),c=new awt2swing.Panel,a.cancel.setVisible(!1),c.setLayout(new java.awt.FlowLayout),c.add(new awt2swing.Label("Font doesn't have letters defined\nso cannot be used\nwith alignment data.")),
+a.setMainPanel(c),a.setVisible(!0)):(null!=this.tp?this.tp.setTreeFont(a):null!=this.ap&&(this.ap.av.setFont(a),this.ap.fontChanged()),this.lastSelected=a)});d(c$,"fontName_actionPerformed",function(){this.$init||this.changeFont()});d(c$,"fontSize_actionPerformed",function(){this.$init||this.changeFont()});d(c$,"fontStyle_actionPerformed",function(){this.$init||this.changeFont()});d(c$,"jbInit",function(){this.setLayout(new java.awt.BorderLayout);this.setBackground(java.awt.Color.white);var a=new awt2swing.Label(jalview.util.MessageManager.getString("label.font"));
+a.setFont(jalview.appletgui.FontChooser.VERDANA_11PT);a.setAlignment(4);this.fontSize.setFont(jalview.appletgui.FontChooser.VERDANA_11PT);this.fontSize.addItemListener(this);this.fontStyle.setFont(jalview.appletgui.FontChooser.VERDANA_11PT);this.fontStyle.addItemListener(this);var b=new awt2swing.Label(jalview.util.MessageManager.getString("label.size"));b.setAlignment(4);b.setFont(jalview.appletgui.FontChooser.VERDANA_11PT);var c=new awt2swing.Label(jalview.util.MessageManager.getString("label.style"));
+c.setAlignment(4);c.setFont(jalview.appletgui.FontChooser.VERDANA_11PT);this.fontName.setFont(jalview.appletgui.FontChooser.VERDANA_11PT);this.fontName.addItemListener(this);this.scaleAsCdna.setLabel(jalview.util.MessageManager.getString("label.scale_as_cdna"));this.scaleAsCdna.setFont(jalview.appletgui.FontChooser.VERDANA_11PT);this.scaleAsCdna.addItemListener(this);this.scaleAsCdna.setState(this.ap.av.isScaleProteinAsCdna());this.ok.setFont(jalview.appletgui.FontChooser.VERDANA_11PT);this.ok.setLabel(jalview.util.MessageManager.getString("action.ok"));
+this.ok.addActionListener((H("jalview.appletgui.FontChooser$1")?0:jalview.appletgui.FontChooser.$FontChooser$1$(),C(jalview.appletgui.FontChooser$1,this,null)));this.cancel.setFont(jalview.appletgui.FontChooser.VERDANA_11PT);this.cancel.setLabel(jalview.util.MessageManager.getString("action.cancel"));this.cancel.addActionListener((H("jalview.appletgui.FontChooser$2")?0:jalview.appletgui.FontChooser.$FontChooser$2$(),C(jalview.appletgui.FontChooser$2,this,null)));var d=new awt2swing.Panel;d.setLayout(new java.awt.BorderLayout);
+var e=new awt2swing.Panel;e.setLayout(new java.awt.BorderLayout);var k=new awt2swing.Panel;k.setLayout(new java.awt.BorderLayout);var g=new awt2swing.Panel;g.setLayout(new java.awt.BorderLayout);var h=new awt2swing.Panel,j=new awt2swing.Panel;d.setBackground(java.awt.Color.white);e.setBackground(java.awt.Color.white);k.setBackground(java.awt.Color.white);h.setBackground(java.awt.Color.white);j.setBackground(java.awt.Color.white);d.add(a,"West");d.add(this.fontName,"Center");e.add(c,"West");e.add(this.fontStyle,
+"Center");k.add(b,"West");k.add(this.fontSize,"Center");g.add(this.scaleAsCdna,"Center");h.add(this.ok,null);h.add(this.cancel,null);j.add(d,null);j.add(k,null);j.add(e,null);this.add(j,"North");null!=this.ap.alignFrame.getSplitFrame()&&this.add(g,"Center");this.add(h,"South")});d(c$,"scaleAsCdna_actionPerformed",function(){this.ap.av.setScaleProteinAsCdna(this.scaleAsCdna.getState());this.ap.av.getCodingComplement().setScaleProteinAsCdna(this.scaleAsCdna.getState());this.ap.alignFrame.getSplitFrame().adjustLayout();
+this.ap.paintAlignment(!0);this.ap.alignFrame.getSplitFrame().repaint()});c$.$FontChooser$1$=function(){A(self.c$);c$=L(jalview.appletgui,"FontChooser$1",null,java.awt.event.ActionListener);e(c$,"actionPerformed",function(){this.b$["jalview.appletgui.FontChooser"].ok_actionPerformed()},"java.awt.event.ActionEvent");c$=z()};c$.$FontChooser$2$=function(){A(self.c$);c$=L(jalview.appletgui,"FontChooser$2",null,java.awt.event.ActionListener);e(c$,"actionPerformed",function(){this.b$["jalview.appletgui.FontChooser"].cancel_actionPerformed()},
+"java.awt.event.ActionEvent");c$=z()};c$.VERDANA_11PT=c$.prototype.VERDANA_11PT=new java.awt.Font("Verdana",0,11)});p("jalview.appletgui");q(["awt2swing.Panel","java.awt.event.MouseListener","$.MouseMotionListener"],"jalview.appletgui.OverviewPanel","awt2swing.Frame jalview.appletgui.FeatureRenderer $.SequenceRenderer java.awt.Color $.Dimension java.awt.event.ComponentAdapter java.lang.Thread".split(" "),function(){c$=s(function(){this.ap=this.av=this.offscreen=this.miniMe=null;this.scaleh=this.scalew=
+1;this.sequencesHeight=this.$width=0;this.graphHeight=20;this.boxHeight=this.boxWidth=this.boxY=this.boxX=-1;this.resizing=!1;this.nullFrame=this.fr=this.sr=null;this.resizeAgain=!1;r(this,arguments)},jalview.appletgui,"OverviewPanel",awt2swing.Panel,[Runnable,java.awt.event.MouseMotionListener,java.awt.event.MouseListener]);m(c$,function(a){t(this,jalview.appletgui.OverviewPanel,[]);this.av=a.av;this.ap=a;this.setLayout(null);this.nullFrame=new awt2swing.Frame;this.nullFrame.addNotify();this.sr=
+new jalview.appletgui.SequenceRenderer(this.av);this.sr.graphics=this.nullFrame.getGraphics();this.sr.renderGaps=!1;this.sr.forOverview=!0;this.fr=new jalview.appletgui.FeatureRenderer(this.av);a=this.av.getAlignment().getWidth()/this.av.getAlignment().getHeight();null==this.av.getSequenceConsensusHash()&&(this.graphHeight=0);this.av.getAlignment().getWidth()>this.av.getAlignment().getHeight()?(this.$width=400,this.sequencesHeight=I(400/a),40>this.sequencesHeight&&(this.sequencesHeight=40)):(this.$width=
+I(400*a),this.sequencesHeight=300,120>this.$width&&(this.$width=120));this.setSize(new java.awt.Dimension(this.$width,this.sequencesHeight+this.graphHeight));this.addComponentListener((H("jalview.appletgui.OverviewPanel$1")?0:jalview.appletgui.OverviewPanel.$OverviewPanel$1$(),C(jalview.appletgui.OverviewPanel$1,this,null)));this.addMouseMotionListener(this);this.addMouseListener(this);this.updateOverviewImage()},"jalview.appletgui.AlignmentPanel");e(c$,"mouseEntered",function(){},"java.awt.event.MouseEvent");
+e(c$,"mouseExited",function(){},"java.awt.event.MouseEvent");e(c$,"mouseClicked",function(){},"java.awt.event.MouseEvent");e(c$,"mouseMoved",function(){},"java.awt.event.MouseEvent");e(c$,"mousePressed",function(a){this.boxX=a.getX();this.boxY=a.getY();this.checkValid()},"java.awt.event.MouseEvent");e(c$,"mouseReleased",function(a){this.boxX=a.getX();this.boxY=a.getY();this.checkValid()},"java.awt.event.MouseEvent");e(c$,"mouseDragged",function(a){this.boxX=a.getX();this.boxY=a.getY();this.checkValid()},
+"java.awt.event.MouseEvent");d(c$,"checkValid",function(){0>this.boxY&&(this.boxY=0);this.boxY>this.sequencesHeight-this.boxHeight&&(this.boxY=this.sequencesHeight-this.boxHeight+1);0>this.boxX&&(this.boxX=0);this.boxX>this.$width-this.boxWidth&&(this.av.hasHiddenColumns()&&(this.boxWidth=I((this.av.endRes-this.av.startRes+1)*this.av.getCharWidth()*this.scalew)),this.boxX=this.$width-this.boxWidth);var a=I(this.boxX/this.scalew/this.av.getCharWidth()),b=I(this.boxY/this.scaleh/this.av.getCharHeight());
+if(this.av.hasHiddenColumns()){if(!this.av.getColumnSelection().isVisible(a))return;a=this.av.getColumnSelection().findColumnPosition(a)}this.av.hasHiddenRows()&&(b=this.av.getAlignment().getHiddenSequences().findIndexWithoutHiddenSeqs(b));this.ap.setScrollValues(a,b);this.ap.paintAlignment(!1)});d(c$,"updateOverviewImage",function(){this.resizing?this.resizeAgain=!0:(this.av.isShowSequenceFeatures()&&this.fr.transferSettings(this.ap.seqPanel.seqCanvas.fr),this.resizing=!0,0<this.getSize().width&&
+0<this.getSize().height&&(this.$width=this.getSize().width,this.sequencesHeight=this.getSize().height-this.graphHeight),this.setSize(new java.awt.Dimension(this.$width,this.sequencesHeight+this.graphHeight)),(new Thread(this)).start(),this.repaint())});e(c$,"run",function(){this.miniMe=null;var a=this.av.getAlignment().getWidth(),b=this.av.getAlignment().getHeight();this.av.isShowSequenceFeatures()&&this.fr.transferSettings(this.ap.seqPanel.seqCanvas.getFeatureRenderer());0<this.getSize().width&&
+0<this.getSize().height&&(this.$width=this.getSize().width,this.sequencesHeight=this.getSize().height-this.graphHeight);this.setSize(new java.awt.Dimension(this.$width,this.sequencesHeight+this.graphHeight));var c=a*this.av.getCharWidth(),d=b*this.av.getCharHeight();this.scalew=this.$width/c;this.scaleh=this.sequencesHeight/d;this.miniMe=this.nullFrame.createImage(this.$width,this.sequencesHeight+this.graphHeight);this.offscreen=this.nullFrame.createImage(this.$width,this.sequencesHeight+this.graphHeight);
+var c=this.miniMe.getGraphics(),a=a/this.$width,b=b/this.sequencesHeight,e=d=0,k=0,g=0,h=java.awt.Color.yellow,j,n,m=0,p=0,q,r=this.av.hasHiddenRows(),s=this.av.hasHiddenColumns(),t=!1,v=this.av.getAlignment();for(j=0;j<=this.sequencesHeight;j++)if(I(j*b)==e)m++;else{t=!1;r?(q=v.getHiddenSequences().getHiddenSequence(e),null==q?(h=v.getHiddenSequences().findIndexWithoutHiddenSeqs(e),q=v.getSequenceAt(h)):t=!0):q=v.getSequenceAt(e);for(n=0;n<this.$width;n++)if(I(n*a)==d&&I(j*b)==e)p++;else{d=I(n*a);
+q.getLength()>d?(h=this.sr.getResidueBoxColour(q,d),this.av.isShowSequenceFeatures()&&(h=this.fr.findFeatureColour(h,q,d))):h=java.awt.Color.white;if(t||s&&!this.av.getColumnSelection().isVisible(d))h=h.darker().darker();c.setColor(h);1==p&&1==m?c.drawLine(k,g,k,g):c.fillRect(k,g,p,m);k=n;p=1}e=I(j*b);g=j;m=1}if(null!=this.av.getAlignmentConservationAnnotation())for(n=0;n<this.$width;n++)I(n*a),c.translate(n,this.sequencesHeight),this.ap.annotationPanel.renderer.drawGraph(c,this.av.getAlignmentConservationAnnotation(),
+this.av.getAlignmentConservationAnnotation().annotations,I(a)+1,this.graphHeight,I(n*a),I(n*a)+1),c.translate(-n,-this.sequencesHeight);System.gc();this.resizing=!1;this.setBoxPosition();this.resizeAgain&&(this.resizeAgain=!1,this.updateOverviewImage())});d(c$,"setBoxPosition",function(){var a=this.av.getAlignment().getWidth()*this.av.getCharWidth(),b=(this.av.getAlignment().getHeight()+this.av.getAlignment().getHiddenSequences().getSize())*this.av.getCharHeight(),c=this.av.getStartRes(),d=this.av.getEndRes();
+this.av.hasHiddenColumns()&&(c=this.av.getColumnSelection().adjustForHiddenColumns(c),d=this.av.getColumnSelection().adjustForHiddenColumns(d));var e=this.av.startSeq,k=this.av.endSeq;this.av.hasHiddenRows()&&(e=this.av.getAlignment().getHiddenSequences().adjustForHiddenSeqs(e),k=this.av.getAlignment().getHiddenSequences().adjustForHiddenSeqs(k));this.scalew=this.$width/a;this.scaleh=this.sequencesHeight/b;this.boxX=I(c*this.av.getCharWidth()*this.scalew);this.boxY=I(e*this.av.getCharHeight()*this.scaleh);
+this.av.hasHiddenColumns();this.boxWidth=I((d-c+1)*this.av.getCharWidth()*this.scalew);this.boxHeight=I((k-e)*this.av.getCharHeight()*this.scaleh);this.repaint()});e(c$,"update",function(a){this.paint(a)},"java.awt.Graphics");e(c$,"paintComponent",function(a){var b=this.offscreen.getGraphics();null!=this.miniMe&&(b.drawImage(this.miniMe,0,0,this),b.setColor(java.awt.Color.red),b.drawRect(this.boxX,this.boxY,this.boxWidth,this.boxHeight),b.drawRect(this.boxX+1,this.boxY+1,this.boxWidth-2,this.boxHeight-
+2),a.drawImage(this.offscreen,0,0,this))},"java.awt.Graphics");c$.$OverviewPanel$1$=function(){A(self.c$);c$=L(jalview.appletgui,"OverviewPanel$1",java.awt.event.ComponentAdapter);e(c$,"componentResized",function(){(this.b$["jalview.appletgui.OverviewPanel"].getSize().width!=this.b$["jalview.appletgui.OverviewPanel"].$width||this.b$["jalview.appletgui.OverviewPanel"].getSize().height!=this.b$["jalview.appletgui.OverviewPanel"].sequencesHeight+this.b$["jalview.appletgui.OverviewPanel"].graphHeight)&&
+this.b$["jalview.appletgui.OverviewPanel"].updateOverviewImage()},"java.awt.event.ComponentEvent");c$=z()}});p("jalview.appletgui");q("jalview.appletgui.EmbmenuFrame java.awt.event.ActionListener $.ItemListener awt2swing.Button $.CheckboxMenuItem $.Choice $.Label $.Menu $.MenuBar $.MenuItem $.Panel java.awt.BorderLayout $.FlowLayout".split(" "),"jalview.appletgui.PCAPanel","awt2swing.Frame jalview.appletgui.AlignFrame $.CutAndPasteTransfer $.RotatableCanvas jalview.bin.JalviewLite jalview.datamodel.Alignment jalview.util.MessageManager jalview.viewmodel.PCAModel java.awt.Color $.Font java.lang.Thread".split(" "),
+function(){c$=s(function(){this.pcaModel=this.av=this.rc=null;this.top=0;this.inputData=this.values=this.nuclSetting=this.protSetting=this.labels=this.calcSettings=this.menu2=this.menu1=this.menuBar1=this.borderLayout1=this.flowLayout1=this.resetButton=this.zCombobox=this.yCombobox=this.xCombobox=this.jLabel3=this.jLabel2=this.jLabel1=this.jPanel2=null;r(this,arguments)},jalview.appletgui,"PCAPanel",jalview.appletgui.EmbmenuFrame,[Runnable,java.awt.event.ActionListener,java.awt.event.ItemListener]);
+J(c$,function(){this.jPanel2=new awt2swing.Panel;this.jLabel1=new awt2swing.Label;this.jLabel2=new awt2swing.Label;this.jLabel3=new awt2swing.Label;this.xCombobox=new awt2swing.Choice;this.yCombobox=new awt2swing.Choice;this.zCombobox=new awt2swing.Choice;this.resetButton=new awt2swing.Button;this.flowLayout1=new java.awt.FlowLayout;this.borderLayout1=new java.awt.BorderLayout;this.menuBar1=new awt2swing.MenuBar;this.menu1=new awt2swing.Menu;this.menu2=new awt2swing.Menu;this.calcSettings=new awt2swing.Menu;
+this.labels=new awt2swing.CheckboxMenuItem;this.protSetting=new awt2swing.CheckboxMenuItem;this.nuclSetting=new awt2swing.CheckboxMenuItem;this.values=new awt2swing.MenuItem;this.inputData=new awt2swing.MenuItem});m(c$,function(a){t(this,jalview.appletgui.PCAPanel,[]);try{this.jbInit()}catch(b){if(y(b,Exception))b.printStackTrace();else throw b;}for(var c=1;8>c;c++)this.xCombobox.addItem("dim "+c),this.yCombobox.addItem("dim "+c),this.zCombobox.addItem("dim "+c);this.av=a;var c=null!=a.getSelectionGroup()&&
+0<a.getSelectionGroup().getSize(),d=a.getAlignmentView(c),e=a.getAlignment().isNucleotide(),k;k=c?a.getSelectionGroup().getSequencesInOrder(a.getAlignment()):a.getAlignment().getSequencesArray();for(var g=d.getSequences(),h=g[0].getWidth(),c=0;c<k.length;c++)if(g[c].getWidth()!=h){System.out.println("Sequences must be equal length for PCA analysis");return}this.pcaModel=new jalview.viewmodel.PCAModel(d,k,e);this.rc=new jalview.appletgui.RotatableCanvas(a);this.embedMenuIfNeeded(this.rc);this.add(this.rc,
+"Center");jalview.bin.JalviewLite.addFrame(this,jalview.util.MessageManager.getString("label.principal_component_analysis"),475,400);(new Thread(this)).start()},"jalview.appletgui.AlignViewport");e(c$,"run",function(){this.calcSettings.setEnabled(!1);this.rc.setEnabled(!1);try{this.nuclSetting.setState(this.pcaModel.isNucleotide()),this.protSetting.setState(!this.pcaModel.isNucleotide()),this.pcaModel.run(),this.xCombobox.select(new Integer(0)),this.yCombobox.select(new Integer(1)),this.zCombobox.select(new Integer(2)),
+this.pcaModel.updateRc(this.rc),this.top=this.pcaModel.getTop()}catch(a){if(y(a,OutOfMemoryError)){System.err.println("Out of memory when calculating PCA.");return}throw a;}this.calcSettings.setEnabled(!0);this.rc.setEnabled(!0);this.rc.repaint();this.repaint()});d(c$,"doDimensionChange",function(){if(0!=this.top){var a=this.top-this.xCombobox.getSelectedIndex(),b=this.top-this.yCombobox.getSelectedIndex(),c=this.top-this.zCombobox.getSelectedIndex();this.pcaModel.updateRcView(a,b,c);this.rc.img=
+null;this.rc.rotmat.setIdentity();this.rc.initAxes();this.rc.paint(this.rc.getGraphics())}});e(c$,"actionPerformed",function(a){a.getSource()===this.inputData&&this.showOriginalData();a.getSource()===this.resetButton&&(this.xCombobox.select(new Integer(0)),this.yCombobox.select(new Integer(1)),this.zCombobox.select(new Integer(2)),this.doDimensionChange());a.getSource()===this.values&&this.values_actionPerformed()},"java.awt.event.ActionEvent");e(c$,"itemStateChanged",function(a){a.getSource()===
+this.xCombobox?this.xCombobox_actionPerformed():a.getSource()===this.yCombobox?this.yCombobox_actionPerformed():a.getSource()===this.zCombobox?this.zCombobox_actionPerformed():a.getSource()===this.labels?this.labels_itemStateChanged(a):a.getSource()===this.nuclSetting?this.pcaModel.isNucleotide()||(this.pcaModel.setNucleotide(!0),(new Thread(this)).start()):a.getSource()===this.protSetting&&this.pcaModel.isNucleotide()&&(this.pcaModel.setNucleotide(!1),(new Thread(this)).start())},"java.awt.event.ItemEvent");
+d(c$,"xCombobox_actionPerformed",function(){this.doDimensionChange()});d(c$,"yCombobox_actionPerformed",function(){this.doDimensionChange()});d(c$,"zCombobox_actionPerformed",function(){this.doDimensionChange()});d(c$,"values_actionPerformed",function(){var a=new jalview.appletgui.CutAndPasteTransfer(!1,null),b=new awt2swing.Frame;b.add(a);jalview.bin.JalviewLite.addFrame(b,jalview.util.MessageManager.getString("label.pca_details"),500,500);a.setText(this.pcaModel.getDetails())});d(c$,"showOriginalData",
+function(){var a="-";try{a=this.av.getGapCharacter()}catch(b){if(!y(b,Exception))throw b;}a=this.pcaModel.getSeqtrings().getAlignmentAndColumnSelection(a);if(null!=a&&null!=a[0]){var c=new jalview.datamodel.Alignment(a[0]);(new jalview.appletgui.AlignFrame(c,this.av.applet,"Original Data for PCA",!1)).viewport.setHiddenColumns(a[1])}});d(c$,"labels_itemStateChanged",function(){this.rc.showLabels(this.labels.getState())},"java.awt.event.ItemEvent");d(c$,"jbInit",function(){this.setLayout(this.borderLayout1);
+this.jPanel2.setLayout(this.flowLayout1);this.jLabel1.setFont(new java.awt.Font("Verdana",0,12));this.jLabel1.setText("x=");this.jLabel2.setFont(new java.awt.Font("Verdana",0,12));this.jLabel2.setText("y=");this.jLabel3.setFont(new java.awt.Font("Verdana",0,12));this.jLabel3.setText("z=");this.jPanel2.setBackground(java.awt.Color.white);this.zCombobox.setFont(new java.awt.Font("Verdana",0,12));this.zCombobox.addItemListener(this);this.yCombobox.setFont(new java.awt.Font("Verdana",0,12));this.yCombobox.addItemListener(this);
+this.xCombobox.setFont(new java.awt.Font("Verdana",0,12));this.xCombobox.addItemListener(this);this.resetButton.setFont(new java.awt.Font("Verdana",0,12));this.resetButton.setLabel(jalview.util.MessageManager.getString("action.reset"));this.resetButton.addActionListener(this);this.setMenuBar(this.menuBar1);this.menu1.setLabel(jalview.util.MessageManager.getString("action.file"));this.menu2.setLabel(jalview.util.MessageManager.getString("action.view"));this.calcSettings.setLabel(jalview.util.MessageManager.getString("action.change_params"));
+this.labels.setLabel(jalview.util.MessageManager.getString("label.labels"));this.labels.addItemListener(this);this.values.setLabel(jalview.util.MessageManager.getString("label.output_values"));this.values.addActionListener(this);this.inputData.setLabel(jalview.util.MessageManager.getString("label.input_data"));this.nuclSetting.setLabel(jalview.util.MessageManager.getString("label.nucleotide_matrix"));this.nuclSetting.addItemListener(this);this.protSetting.setLabel(jalview.util.MessageManager.getString("label.protein_matrix"));
+this.protSetting.addItemListener(this);this.add(this.jPanel2,"South");this.jPanel2.add(this.jLabel1,null);this.jPanel2.add(this.xCombobox,null);this.jPanel2.add(this.jLabel2,null);this.jPanel2.add(this.yCombobox,null);this.jPanel2.add(this.jLabel3,null);this.jPanel2.add(this.zCombobox,null);this.jPanel2.add(this.resetButton,null);this.menuBar1.add(this.menu1);this.menuBar1.add(this.menu2);this.menuBar1.add(this.calcSettings);this.menu2.add(this.labels);this.menu1.add(this.values);this.menu1.add(this.inputData);
+this.calcSettings.add(this.nuclSetting);this.calcSettings.add(this.protSetting);this.inputData.addActionListener(this)})});p("jalview.appletgui");q("awt2swing.Panel jalview.api.RotatableCanvasI java.awt.event.KeyListener $.MouseListener $.MouseMotionListener jalview.math.RotatableMatrix".split(" "),"jalview.appletgui.RotatableCanvas","awt2swing.Util jalview.appletgui.PaintRefresher jalview.datamodel.SequenceGroup jalview.util.Format $.MessageManager java.awt.Color $.Dimension $.Font".split(" "),function(){c$=
+s(function(){this.tooltip=this.rotmat=this.objmat=this.idmat=null;this.tooly=this.toolx=0;this.$drawAxes=!0;this.my=this.omy=this.mx=this.omx=0;this.min=this.max=this.$width=this.centre=this.prefsize=this.ig=this.img=null;this.npoint=this.scale=this.maxwidth=0;this.axes=this.orig=this.points=null;this.recty2=this.rectx2=this.recty1=this.rectx1=this.lasty=this.lastx=this.starty=this.startx=0;this.scalefactor=1;this.av=null;this.$showLabels=!1;r(this,arguments)},jalview.appletgui,"RotatableCanvas",
+awt2swing.Panel,[java.awt.event.MouseListener,java.awt.event.MouseMotionListener,java.awt.event.KeyListener,jalview.api.RotatableCanvasI]);J(c$,function(){this.idmat=new jalview.math.RotatableMatrix(3,3);this.objmat=new jalview.math.RotatableMatrix(3,3);this.rotmat=new jalview.math.RotatableMatrix(3,3);this.centre=Q(3,0);this.$width=Q(3,0);this.max=Q(3,0);this.min=Q(3,0)});m(c$,function(a){t(this,jalview.appletgui.RotatableCanvas,[]);this.av=a},"jalview.viewmodel.AlignmentViewport");d(c$,"showLabels",
+function(a){this.$showLabels=a;this.repaint()},"~B");e(c$,"setPoints",function(a,b){this.points=a;this.npoint=b;jalview.appletgui.PaintRefresher.Register(this,this.av.getSequenceSetId());this.prefsize=this.getPreferredSize();this.orig=Q(b,3,0);for(var c=0;c<b;c++)for(var d=a.elementAt(c),e=0;3>e;e++)this.orig[c][e]=d.coord[e];for(c=0;3>c;c++)for(e=0;3>e;e++)this.idmat.addElement(c,e,0),this.objmat.addElement(c,e,0),this.rotmat.addElement(c,e,0);this.axes=Q(3,3,0);this.initAxes();this.findCentre();
+this.findWidth();this.scale=this.findScale();this.addMouseListener(this);this.addKeyListener(this);this.addMouseMotionListener(this)},"java.util.Vector,~N");d(c$,"initAxes",function(){for(var a=0;3>a;a++)for(var b=0;3>b;b++)this.axes[a][b]=a!=b?0:1});d(c$,"findWidth",function(){this.max=Q(3,0);this.min=Q(3,0);this.max[0]=-1E30;this.max[1]=-1E30;this.max[2]=-1E30;this.min[0]=1E30;this.min[1]=1E30;this.min[2]=1E30;for(var a=0;3>a;a++)for(var b=0;b<this.npoint;b++){var c=this.points.elementAt(b);c.coord[a]>=
+this.max[a]&&(this.max[a]=c.coord[a]);c.coord[a]<=this.min[a]&&(this.min[a]=c.coord[a])}this.$width[0]=Math.abs(this.max[0]-this.min[0]);this.$width[1]=Math.abs(this.max[1]-this.min[1]);this.$width[2]=Math.abs(this.max[2]-this.min[2]);this.maxwidth=this.$width[0];this.$width[1]>this.$width[0]&&(this.maxwidth=this.$width[1]);this.$width[2]>this.$width[1]&&(this.maxwidth=this.$width[2])});d(c$,"findScale",function(){var a,b;0!=this.getSize().width?(a=this.getSize().width,b=this.getSize().height):(a=
+this.prefsize.width,b=this.prefsize.height);return(a<b?a:b)*this.scalefactor/(2*this.maxwidth)});d(c$,"findCentre",function(){this.findWidth();this.centre[0]=(this.max[0]+this.min[0])/2;this.centre[1]=(this.max[1]+this.min[1])/2;this.centre[2]=(this.max[2]+this.min[2])/2});e(c$,"getPreferredSize",function(){return null!=this.prefsize?this.prefsize:new java.awt.Dimension(400,400)});e(c$,"getMinimumSize",function(){return this.getPreferredSize()});e(c$,"update",function(a){this.paint(a)},"java.awt.Graphics");
+d(c$,"PaintComponent",function(a){if(null==this.points)a.setFont(new java.awt.Font("Verdana",0,18)),awt2swing.Util.drawString(a,jalview.util.MessageManager.getString("label.calculating_pca")+"....",20,F(this.getSize().height/2));else{if(null==this.img||this.prefsize.width!=this.getSize().width||this.prefsize.height!=this.getSize().height)this.prefsize.width=this.getSize().width,this.prefsize.height=this.getSize().height,this.scale=this.findScale(),this.img=this.createImage(this.getSize().width,this.getSize().height),
+this.ig=this.img.getGraphics();this.drawBackground(this.ig,java.awt.Color.black);this.drawScene(this.ig);!0==this.$drawAxes&&this.drawAxes(this.ig);null!=this.tooltip&&(this.ig.setColor(java.awt.Color.red),awt2swing.Util.drawString(this.ig,this.tooltip,this.toolx,this.tooly));a.drawImage(this.img,0,0,this)}},"java.awt.Graphics");d(c$,"drawAxes",function(a){a.setColor(java.awt.Color.yellow);for(var b=0;3>b;b++)a.drawLine(F(this.getSize().width/2),F(this.getSize().height/2),I(this.axes[b][0]*this.scale*
+this.max[0]+F(this.getSize().width/2)),I(this.axes[b][1]*this.scale*this.max[1]+F(this.getSize().height/2)))},"java.awt.Graphics");d(c$,"drawBackground",function(a,b){a.setColor(b);a.fillRect(0,0,this.prefsize.width,this.prefsize.height)},"java.awt.Graphics,java.awt.Color");d(c$,"drawScene",function(a){for(var b=F(this.getSize().width/2),c=F(this.getSize().height/2),d=0;d<this.npoint;d++){var e=this.points.elementAt(d),k=I((e.coord[0]-this.centre[0])*this.scale)+b,g=I((e.coord[1]-this.centre[1])*
+this.scale)+c,h=e.coord[1]-this.centre[2];this.av.getSequenceColour(e.sequence)===java.awt.Color.black?a.setColor(java.awt.Color.white):a.setColor(this.av.getSequenceColour(e.sequence));null!=this.av.getSelectionGroup()&&this.av.getSelectionGroup().getSequences(null).contains(this.points.elementAt(d).sequence)&&a.setColor(java.awt.Color.gray);0>h&&a.setColor(a.getColor().darker());a.fillRect(k-3,g-3,6,6);this.$showLabels&&(a.setColor(java.awt.Color.red),awt2swing.Util.drawString(a,this.points.elementAt(d).sequence.getName(),
+k-3,g-4))}},"java.awt.Graphics");d(c$,"minimumsize",function(){return this.prefsize});d(c$,"preferredsize",function(){return this.prefsize});e(c$,"keyTyped",function(){},"java.awt.event.KeyEvent");e(c$,"keyReleased",function(){},"java.awt.event.KeyEvent");e(c$,"keyPressed",function(a){38==a.getKeyCode()?(this.scalefactor*=1.1,this.scale=this.findScale()):40==a.getKeyCode()?(this.scalefactor*=0.9,this.scale=this.findScale()):"s"==a.getKeyChar()&&(System.err.println("DEBUG: Rectangle selection"),-1!=
+this.rectx2&&-1!=this.recty2&&this.rectSelect(this.rectx1,this.recty1,this.rectx2,this.recty2));this.repaint()},"java.awt.event.KeyEvent");d(c$,"printPoints",function(){for(var a=0;a<this.npoint;a++){var b=this.points.elementAt(a);jalview.util.Format.printLong(System.out,"%5d ",a);for(var c=0;3>c;c++)jalview.util.Format.printDouble(System.out,"%13.3f  ",b.coord[c]);System.out.println()}});e(c$,"mouseClicked",function(){},"java.awt.event.MouseEvent");e(c$,"mouseEntered",function(){},"java.awt.event.MouseEvent");
+e(c$,"mouseExited",function(){},"java.awt.event.MouseEvent");e(c$,"mouseReleased",function(){},"java.awt.event.MouseEvent");e(c$,"mousePressed",function(a){var b=a.getX();a=a.getY();this.mx=b;this.my=a;this.omx=this.mx;this.omy=this.my;this.startx=b;this.starty=a;this.rectx1=b;this.recty1=a;this.recty2=this.rectx2=-1;b=this.findPoint(b,a);null!=b&&(null==this.av.getSelectionGroup()&&this.av.setSelectionGroup(new jalview.datamodel.SequenceGroup),this.av.getSelectionGroup().addOrRemove(b,!0),this.av.getSelectionGroup().setEndRes(this.av.getAlignment().getWidth()-
+1),jalview.appletgui.PaintRefresher.Refresh(this,this.av.getSequenceSetId()),this.av.sendSelection());this.repaint()},"java.awt.event.MouseEvent");e(c$,"mouseMoved",function(a){var b=this.findPoint(a.getX(),a.getY());null==b?this.tooltip=null:(this.tooltip=b.getName(),this.toolx=a.getX(),this.tooly=a.getY());this.repaint()},"java.awt.event.MouseEvent");e(c$,"mouseDragged",function(a){this.mx=a.getX();this.my=a.getY();this.rotmat.setIdentity();this.rotmat.rotate(this.my-this.omy,"x");this.rotmat.rotate(this.mx-
+this.omx,"y");for(a=0;a<this.npoint;a++){var b=this.points.elementAt(a);b.coord[0]-=this.centre[0];b.coord[1]-=this.centre[1];b.coord[2]-=this.centre[2];b.coord=this.rotmat.vectorMultiply(b.coord);b.coord[0]+=this.centre[0];b.coord[1]+=this.centre[1];b.coord[2]+=this.centre[2]}for(a=0;3>a;a++)this.axes[a]=this.rotmat.vectorMultiply(this.axes[a]);this.omx=this.mx;this.omy=this.my;this.paint(this.getGraphics())},"java.awt.event.MouseEvent");d(c$,"rectSelect",function(a,b,c,d){for(var e=0;e<this.npoint;e++){var k=
+this.points.elementAt(e),g=F((k.coord[0]-this.centre[0])*this.scale+this.getSize().width/2),h=F((k.coord[1]-this.centre[1])*this.scale+this.getSize().height/2);g>a&&g<c&&h>b&&h<d&&null!=this.av&&(this.av.getSelectionGroup().getSequences(null).contains(k.sequence)||this.av.getSelectionGroup().addSequence(k.sequence,!0))}},"~N,~N,~N,~N");d(c$,"findPoint",function(a,b){for(var c=F(this.getSize().width/2),d=F(this.getSize().height/2),e=-1,k=0;k<this.npoint;k++){var g=this.points.elementAt(k),h=I((g.coord[0]-
+this.centre[0])*this.scale)+c,g=I((g.coord[1]-this.centre[1])*this.scale)+d;3>Math.abs(h-a)&&3>Math.abs(g-b)&&(e=k)}return-1!=e?this.points.elementAt(e).sequence:null},"~N,~N")});p("jalview.api");M(jalview.api,"RotatableCanvasI");p("jalview.math");c$=s(function(){this.rot=this.temp=this.matrix=null;r(this,arguments)},jalview.math,"RotatableMatrix");m(c$,function(a,b){this.matrix=Q(a,b,0);this.temp=Q(3,0);this.rot=Q(3,3,0)},"~N,~N");d(c$,"addElement",function(a,b,c){this.matrix[a][b]=c},"~N,~N,~N");
+d(c$,"print",function(){System.out.println(this.matrix[0][0]+" "+this.matrix[0][1]+" "+this.matrix[0][2]);System.out.println(this.matrix[1][0]+" "+this.matrix[1][1]+" "+this.matrix[1][2]);System.out.println(this.matrix[2][0]+" "+this.matrix[2][1]+" "+this.matrix[2][2])});d(c$,"rotate",function(a,b){var c=Math.cos(3.141592653589793*a/180),d=Math.sin(3.141592653589793*a/180);"z"==b&&(this.rot[0][0]=c,this.rot[0][1]=-d,this.rot[0][2]=0,this.rot[1][0]=d,this.rot[1][1]=c,this.rot[1][2]=0,this.rot[2][0]=
+0,this.rot[2][1]=0,this.rot[2][2]=1,this.preMultiply(this.rot));"x"==b&&(this.rot[0][0]=1,this.rot[0][1]=0,this.rot[0][2]=0,this.rot[1][0]=0,this.rot[1][1]=c,this.rot[1][2]=d,this.rot[2][0]=0,this.rot[2][1]=-d,this.rot[2][2]=c,this.preMultiply(this.rot));"y"==b&&(this.rot[0][0]=c,this.rot[0][1]=0,this.rot[0][2]=-d,this.rot[1][0]=0,this.rot[1][1]=1,this.rot[1][2]=0,this.rot[2][0]=d,this.rot[2][1]=0,this.rot[2][2]=c,this.preMultiply(this.rot))},"~N,~S");d(c$,"vectorMultiply",function(a){this.temp[0]=
+a[0];this.temp[1]=a[1];this.temp[2]=a[2];for(var b=0;3>b;b++)this.temp[b]=this.matrix[b][0]*a[0]+this.matrix[b][1]*a[1]+this.matrix[b][2]*a[2];a[0]=this.temp[0];a[1]=this.temp[1];a[2]=this.temp[2];return a},"~A");d(c$,"preMultiply",function(a){for(var b=Q(3,3,0),c=0;3>c;c++)for(var d=0;3>d;d++)b[c][d]=a[c][0]*this.matrix[0][d]+a[c][1]*this.matrix[1][d]+a[c][2]*this.matrix[2][d];for(c=0;3>c;c++)for(d=0;3>d;d++)this.matrix[c][d]=b[c][d]},"~A");d(c$,"postMultiply",function(a){for(var b=Q(3,3,0),c=0;3>
+c;c++)for(var d=0;3>d;d++)b[c][d]=this.matrix[c][0]*a[0][d]+this.matrix[c][1]*a[1][d]+this.matrix[c][2]*a[2][d];for(c=0;3>c;c++)for(d=0;3>d;d++)this.matrix[c][d]=b[c][d]},"~A");d(c$,"setIdentity",function(){this.matrix[0][0]=1;this.matrix[1][1]=1;this.matrix[2][2]=1;this.matrix[0][1]=0;this.matrix[0][2]=0;this.matrix[1][0]=0;this.matrix[1][2]=0;this.matrix[2][0]=0;this.matrix[2][1]=0});p("jalview.viewmodel");q(null,"jalview.viewmodel.PCAModel",["jalview.analysis.PCA","jalview.datamodel.SequencePoint",
+"java.lang.StringBuffer","java.util.Vector"],function(){c$=s(function(){this.pca=null;this.top=0;this.score_matrix=this.seqs=this.seqstrings=null;this.nucleotide=!1;this.points=null;this.jvCalcMode=!0;r(this,arguments)},jalview.viewmodel,"PCAModel");m(c$,function(a,b,c){this.seqstrings=a;this.seqs=b;this.score_matrix=(this.nucleotide=c)?"PID":"BLOSUM62"},"jalview.datamodel.AlignmentView,~A,~B");d(c$,"isJvCalcMode",function(){return this.jvCalcMode});d(c$,"run",function(){this.pca=new jalview.analysis.PCA(this.seqstrings.getSequenceStrings(" "),
+this.nucleotide,this.score_matrix);this.pca.setJvCalcMode(this.jvCalcMode);this.pca.run();for(var a=0;a<this.seqs.length&&null!=this.seqs[a];)a++;for(var b=U(a,a,0),c=0;c<a;c++)1E-4<this.pca.getEigenvalue(c)&&(b[c]=this.pca.component(c));this.top=this.pca.getM().rows-1;this.points=new java.util.Vector;a=this.pca.getComponents(this.top-1,this.top-2,this.top-3,100);for(c=0;c<this.pca.getM().rows;c++)b=new jalview.datamodel.SequencePoint(this.seqs[c],a[c]),this.points.addElement(b)});d(c$,"updateRc",
+function(a){a.setPoints(this.points,this.pca.getM().rows)},"jalview.api.RotatableCanvasI");d(c$,"isNucleotide",function(){return this.nucleotide});d(c$,"setNucleotide",function(a){this.nucleotide=a},"~B");d(c$,"getTop",function(){return this.top});d(c$,"updateRcView",function(a,b,c){a=this.pca.getComponents(a-1,b-1,c-1,100);for(b=0;b<this.pca.getM().rows;b++)this.points.elementAt(b).coord=a[b]},"~N,~N,~N");d(c$,"getDetails",function(){return this.pca.getDetails()});d(c$,"getSeqtrings",function(){return this.seqstrings});
+d(c$,"getPointsasCsv",function(a,b,c,d){var e=new StringBuffer;e.append('"Sequence"');if(a)e.append(","),e.append(""+b),e.append(","),e.append(""+c),e.append(","),e.append(""+d);else{b=1;for(c=this.pca.component(1).length;b<=c;b++)e.append(","+b)}e.append("\n");for(c=0;c<this.seqs.length;c++){e.append('"'+this.seqs[c].getName()+'"');if(a){d=this.getPointPosition(c);for(b=0;b<d.length;b++)e.append(","),e.append(d[b])}else{d=this.pca.component(c);for(b=d.length-1;0<=b;b--)e.append(","),e.append(d[b])}e.append("\n")}return e.toString()},
+"~B,~N,~N,~N");d(c$,"getPointPosition",function(a){var b=U(3,0);a=this.points.elementAt(a).coord;b[0]=a[0];b[1]=a[1];b[2]=a[2];return b},"~N");d(c$,"setJvCalcMode",function(a){this.jvCalcMode=a},"~B");d(c$,"getScore_matrix",function(){return this.score_matrix});d(c$,"setScore_matrix",function(a){this.score_matrix=a},"~S")});p("jalview.analysis");q(["java.lang.StringBuffer"],"jalview.analysis.PCA",["jalview.datamodel.BinarySequence","jalview.math.Matrix","jalview.schemes.ResidueProperties"],function(){c$=
+s(function(){this.details=this.eigenvector=this.eigenvalue=this.m2=this.symm=this.m=null;this.jvCalcMode=!0;r(this,arguments)},jalview.analysis,"PCA",null,Runnable);J(c$,function(){this.details=new StringBuffer});m(c$,function(a){this.construct(a,!1)},"~A");m(c$,function(a,b){this.construct(a,b,null)},"~A,~B");m(c$,function(a,b,c){for(var d=Array(a.length),e=0;e<a.length&&null!=a[e];)d[e]=new jalview.datamodel.BinarySequence(a[e],b),d[e].encode(),e++;var k=Array(a.length),e=0,g=null;null!=c&&(g=jalview.schemes.ResidueProperties.getScoreMatrix(c));
+null==g&&(g=jalview.schemes.ResidueProperties.getScoreMatrix(c=b?"DNA":"BLOSUM62"));for(this.details.append("PCA calculation using "+c+" sequence similarity matrix\n========\n\n");e<a.length&&null!=a[e];){k[e]=new jalview.datamodel.BinarySequence(a[e],b);if(null!=g)try{k[e].matrixEncode(g)}catch(h){if(y(h,jalview.datamodel.BinarySequence.InvalidSequenceTypeException))this.details.append("Unexpected mismatch of sequence type and score matrix. Calculation will not be valid!\n\n");else throw h;}e++}for(a=
+0;a<d.length&&null!=d[a];)a++;b=U(a,d[0].getDBinary().length,0);e=U(a,k[0].getDBinary().length,0);for(g=0;g<a;)b[g]=d[g].getDBinary(),e[g]=k[g].getDBinary(),g++;this.m=new jalview.math.Matrix(b,a,d[0].getDBinary().length);this.m2=new jalview.math.Matrix(e,a,k[0].getDBinary().length)},"~A,~B,~S");d(c$,"getM",function(){return this.m});d(c$,"getEigenvalue",function(a){return this.eigenvector.d[a]},"~N");d(c$,"getComponents",function(a,b,c,d){for(var e=Q(this.m.rows,3,0),k=0;k<this.m.rows;k++)e[k][0]=
+this.component(k,a)*d,e[k][1]=this.component(k,b)*d,e[k][2]=this.component(k,c)*d;return e},"~N,~N,~N,~N");d(c$,"component",function(a){for(var b=U(this.m.rows,0),c=0;c<this.m.rows;c++)b[c]=this.component(c,a);return b},"~N");d(c$,"component",function(a,b){for(var c=0,d=0;d<this.symm.cols;d++)c+=this.symm.value[a][d]*this.eigenvector.value[d][b];return c/this.eigenvector.d[b]},"~N,~N");d(c$,"getDetails",function(){return this.details.toString()});e(c$,"run",function(){var a=(H("jalview.analysis.PCA$1")?
+0:jalview.analysis.PCA.$PCA$1$(),C(jalview.analysis.PCA$1,this,null,System.out));try{this.details.append("PCA Calculation Mode is "+(this.jvCalcMode?"Jalview variant":"Original SeqSpace")+"\n");var b=this.m.transpose();this.details.append(" --- OrigT * Orig ---- \n");this.eigenvector=this.jvCalcMode?b.preMultiply(this.m2):b.preMultiply(this.m);this.eigenvector.print(a);this.symm=this.eigenvector.copy();this.eigenvector.tred();this.details.append(" ---Tridiag transform matrix ---\n");this.details.append(" --- D vector ---\n");
+this.eigenvector.printD(a);a.println();this.details.append("--- E vector ---\n");this.eigenvector.printE(a);a.println();this.eigenvector.tqli()}catch(c){if(y(c,Exception))c.printStackTrace(),this.details.append("\n*** Unexpected exception when performing PCA ***\n"+c.getLocalizedMessage()),this.details.append("*** Matrices below may not be fully diagonalised. ***\n");else throw c;}this.details.append(" --- New diagonalization matrix ---\n");this.eigenvector.print(a);this.details.append(" --- Eigenvalues ---\n");
+this.eigenvector.printD(a);a.println()});d(c$,"setJvCalcMode",function(a){this.jvCalcMode=a},"~B");c$.$PCA$1$=function(){A(self.c$);c$=L(jalview.analysis,"PCA$1",java.io.PrintStream);d(c$,"print",function(a){this.b$["jalview.analysis.PCA"].details.append(a)},"~S");d(c$,"println",function(){this.b$["jalview.analysis.PCA"].details.append("\n")});c$=z()}});p("jalview.datamodel");q(["jalview.datamodel.Sequence","java.lang.Exception"],"jalview.datamodel.BinarySequence",["jalview.schemes.ResidueProperties"],
+function(){c$=s(function(){H("jalview.datamodel.BinarySequence.InvalidSequenceTypeException")||jalview.datamodel.BinarySequence.$BinarySequence$InvalidSequenceTypeException$();this.dbinary=this.binary=null;this.isNa=!1;r(this,arguments)},jalview.datamodel,"BinarySequence",jalview.datamodel.Sequence);m(c$,function(a,b){t(this,jalview.datamodel.BinarySequence,["",a,0,a.length]);this.isNa=b},"~S,~B");d(c$,"initMatrixGetNoRes",function(){var a=this.isNa?10:23;this.dbinary=U(this.getSequence().length*
+a,0);for(var b=0;b<this.dbinary.length;b++)this.dbinary[b]=0;return a});d(c$,"getSymbolmatrix",function(){return this.isNa?jalview.schemes.ResidueProperties.nucleotideIndex:jalview.schemes.ResidueProperties.aaIndex});d(c$,"encode",function(){for(var a=this.initMatrixGetNoRes(),b=this.getSymbolmatrix(),c=0;c<this.getSequence().length;c++){var d=a-1;try{d=b[this.getCharAt(c).charCodeAt(0)]}catch(e){if(y(e,NullPointerException))d=a-1;else throw e;}d>=a&&(d=a-1);this.dbinary[c*a+d]=1}});d(c$,"matrixEncode",
+function(a){if(this.isNa!=a.isDNA())throw C(jalview.datamodel.BinarySequence.InvalidSequenceTypeException,this,null,"matrix "+a.getClass().getCanonicalName()+" is not a valid matrix for "+(this.isNa?"nucleotide":"protein")+"sequences");this.matrixEncode(a.isDNA()?jalview.schemes.ResidueProperties.nucleotideIndex:jalview.schemes.ResidueProperties.aaIndex,a.getMatrix())},"jalview.schemes.ScoreMatrix");d(c$,"matrixEncode",function(a,b){for(var c=this.initMatrixGetNoRes(),d=0,e=this.getSequence().length;d<
+e;d++){var k=c-1;try{k=a[this.getCharAt(d).charCodeAt(0)]}catch(g){if(y(g,NullPointerException))k=c-1;else throw g;}k>=c&&(k=c-1);for(var h=0;h<c;h++)this.dbinary[d*c+h]=b[k][h]}},"~A,~A");d(c$,"toBinaryString",function(){for(var a="",b=0;b<this.binary.length;b++)a+=(new Integer(this.binary[b])).toString(),b<this.binary.length-1&&(a+=" ");return a});d(c$,"getDBinary",function(){return this.dbinary});c$.$BinarySequence$InvalidSequenceTypeException$=function(){A(self.c$);c$=s(function(){O(this,arguments);
+r(this,arguments)},jalview.datamodel.BinarySequence,"InvalidSequenceTypeException",Exception);c$=z()}});p("jalview.math");q(null,"jalview.math.Matrix",["jalview.util.Format","$.MessageManager","java.lang.Exception"],function(){c$=s(function(){this.value=null;this.cols=this.rows=0;this.e=this.d=null;this.maxIter=45;r(this,arguments)},jalview.math,"Matrix");m(c$,function(a,b,c){this.rows=b;this.cols=c;this.value=a},"~A,~N,~N");d(c$,"transpose",function(){for(var a=U(this.cols,this.rows,0),b=0;b<this.cols;b++)for(var c=
+0;c<this.rows;c++)a[b][c]=this.value[c][b];return new jalview.math.Matrix(a,this.cols,this.rows)});d(c$,"print",function(a){for(var b=0;b<this.rows;b++){for(var c=0;c<this.cols;c++)jalview.util.Format.printDouble(a,"%8.2f",this.value[b][c]);a.println()}},"java.io.PrintStream");d(c$,"preMultiply",function(a){for(var b=U(a.rows,this.cols,0),c=0;c<a.rows;c++)for(var d=0;d<this.cols;d++)for(var e=b[c][d]=0;e<a.cols;e++)b[c][d]+=a.value[c][e]*this.value[e][d];return new jalview.math.Matrix(b,a.rows,this.cols)},
+"jalview.math.Matrix");d(c$,"vectorPostMultiply",function(a){for(var b=U(a.length,0),c=0;c<a.length;c++)for(var d=b[c]=0;d<a.length;d++)b[c]+=this.value[c][d]*a[d];return b},"~A");d(c$,"postMultiply",function(a){for(var b=U(this.rows,a.cols,0),c=0;c<this.rows;c++)for(var d=0;d<a.cols;d++)for(var e=b[c][d]=0;e<this.rows;e++)b[c][d]+=this.value[c][e]*a.value[e][d];return new jalview.math.Matrix(b,this.cols,a.rows)},"jalview.math.Matrix");d(c$,"copy",function(){for(var a=U(this.rows,this.cols,0),b=0;b<
+this.rows;b++)for(var c=0;c<this.cols;c++)a[b][c]=this.value[b][c];return new jalview.math.Matrix(a,this.rows,this.cols)});d(c$,"tred",function(){var a=this.rows,b,c,d,e,k,g,h,j;this.d=U(this.rows,0);this.e=U(this.rows,0);for(e=a;2<=e;e--){b=e-1;d=g=0;if(1<b){for(c=1;c<=b;c++)d+=Math.abs(this.value[e-1][c-1]);if(0==d)this.e[e-1]=this.value[e-1][b-1];else{for(c=1;c<=b;c++)this.value[e-1][c-1]/=d,g+=this.value[e-1][c-1]*this.value[e-1][c-1];j=this.value[e-1][b-1];h=0<j?-1*Math.sqrt(g):Math.sqrt(g);
+this.e[e-1]=d*h;g-=j*h;this.value[e-1][b-1]=j-h;j=0;for(d=1;d<=b;d++){this.value[d-1][e-1]=this.value[e-1][d-1]/g;h=0;for(c=1;c<=d;c++)h+=this.value[d-1][c-1]*this.value[e-1][c-1];for(c=d+1;c<=b;c++)h+=this.value[c-1][d-1]*this.value[e-1][c-1];this.e[d-1]=h/g;j+=this.e[d-1]*this.value[e-1][d-1]}k=j/(g+g);for(d=1;d<=b;d++){j=this.value[e-1][d-1];h=this.e[d-1]-k*j;this.e[d-1]=h;for(c=1;c<=d;c++)this.value[d-1][c-1]-=j*this.e[c-1]+h*this.value[e-1][c-1]}}}else this.e[e-1]=this.value[e-1][b-1];this.d[e-
+1]=g}this.d[0]=0;this.e[0]=0;for(e=1;e<=a;e++){b=e-1;if(0!=this.d[e-1])for(d=1;d<=b;d++){h=0;for(c=1;c<=b;c++)h+=this.value[e-1][c-1]*this.value[c-1][d-1];for(c=1;c<=b;c++)this.value[c-1][d-1]-=h*this.value[c-1][e-1]}this.d[e-1]=this.value[e-1][e-1];for(d=this.value[e-1][e-1]=1;d<=b;d++)this.value[d-1][e-1]=0,this.value[e-1][d-1]=0}});d(c$,"tqli",function(){var a=this.rows,b,c,d,e,k,g,h,j,n,m,p;for(e=2;e<=a;e++)this.e[e-2]=this.e[e-1];this.e[a-1]=0;for(c=1;c<=a;c++){d=0;do{for(b=c;b<=a-1&&!(e=Math.abs(this.d[b-
+1])+Math.abs(this.d[b]),Math.abs(this.e[b-1])+e==e);b++);if(b!=c){d++;if(d==this.maxIter)throw new Exception(jalview.util.MessageManager.formatMessage("exception.matrix_too_many_iteration",E(-1,["tqli",Integer.$valueOf(this.maxIter).toString()])));j=(this.d[c]-this.d[c-1])/(2*this.e[c-1]);k=Math.sqrt(j*j+1);j=this.d[b-1]-this.d[c-1]+this.e[c-1]/(j+this.sign(k,j));g=m=1;h=0;for(e=b-1;e>=c;e--){n=g*this.e[e-1];p=m*this.e[e-1];Math.abs(n)>=Math.abs(j)?(m=j/n,k=Math.sqrt(m*m+1),this.e[e]=n*k,g=1/k,m*=
+g):(g=n/j,k=Math.sqrt(g*g+1),this.e[e]=j*k,m=1/k,g*=m);j=this.d[e]-h;k=(this.d[e-1]-j)*g+2*m*p;h=g*k;this.d[e]=j+h;j=m*k-p;for(k=1;k<=a;k++)n=this.value[k-1][e],this.value[k-1][e]=g*this.value[k-1][e-1]+m*n,this.value[k-1][e-1]=m*this.value[k-1][e-1]-g*n}this.d[c-1]-=h;this.e[c-1]=j;this.e[b-1]=0}}while(b!=c)}});d(c$,"tred2",function(){var a=this.rows,b,c,d,e,k,g,h,j;this.d=U(this.rows,0);this.e=U(this.rows,0);for(e=a-1;1<=e;e--){b=e-1;d=g=0;if(0<b){for(c=0;c<b;c++)d+=Math.abs(this.value[e][c]);if(0==
+d)this.e[e]=this.value[e][b];else{for(c=0;c<b;c++)this.value[e][c]/=d,g+=this.value[e][c]*this.value[e][c];j=this.value[e][b];h=0<j?-1*Math.sqrt(g):Math.sqrt(g);this.e[e]=d*h;g-=j*h;this.value[e][b]=j-h;for(d=j=0;d<b;d++){this.value[d][e]=this.value[e][d]/g;for(c=h=0;c<d;c++)h+=this.value[d][c]*this.value[e][c];for(c=d;c<b;c++)h+=this.value[c][d]*this.value[e][c];this.e[d]=h/g;j+=this.e[d]*this.value[e][d]}k=j/(g+g);for(d=0;d<b;d++){j=this.value[e][d];h=this.e[d]-k*j;this.e[d]=h;for(c=0;c<d;c++)this.value[d][c]-=
+j*this.e[c]+h*this.value[e][c]}}}else this.e[e]=this.value[e][b];this.d[e]=g}this.d[0]=0;for(e=this.e[0]=0;e<a;e++){b=e-1;if(0!=this.d[e])for(d=0;d<b;d++){for(c=h=0;c<b;c++)h+=this.value[e][c]*this.value[c][d];for(c=0;c<b;c++)this.value[c][d]-=h*this.value[c][e]}this.d[e]=this.value[e][e];this.value[e][e]=1;for(d=0;d<b;d++)this.value[d][e]=0,this.value[e][d]=0}});d(c$,"tqli2",function(){var a=this.rows,b,c,d,e,k,g,h,j,n,m,p;for(e=2;e<=a;e++)this.e[e-2]=this.e[e-1];this.e[a-1]=0;for(c=1;c<=a;c++){d=
+0;do{for(b=c;b<=a-1&&!(e=Math.abs(this.d[b-1])+Math.abs(this.d[b]),Math.abs(this.e[b-1])+e==e);b++);if(b!=c){d++;if(d==this.maxIter)throw new Exception(jalview.util.MessageManager.formatMessage("exception.matrix_too_many_iteration",E(-1,["tqli2",Integer.$valueOf(this.maxIter).toString()])));j=(this.d[c]-this.d[c-1])/(2*this.e[c-1]);k=Math.sqrt(j*j+1);j=this.d[b-1]-this.d[c-1]+this.e[c-1]/(j+this.sign(k,j));g=m=1;h=0;for(e=b-1;e>=c;e--){n=g*this.e[e-1];p=m*this.e[e-1];Math.abs(n)>=Math.abs(j)?(m=j/
+n,k=Math.sqrt(m*m+1),this.e[e]=n*k,g=1/k,m*=g):(g=n/j,k=Math.sqrt(g*g+1),this.e[e]=j*k,m=1/k,g*=m);j=this.d[e]-h;k=(this.d[e-1]-j)*g+2*m*p;h=g*k;this.d[e]=j+h;j=m*k-p;for(k=1;k<=a;k++)n=this.value[k-1][e],this.value[k-1][e]=g*this.value[k-1][e-1]+m*n,this.value[k-1][e-1]=m*this.value[k-1][e-1]-g*n}this.d[c-1]-=h;this.e[c-1]=j;this.e[b-1]=0}}while(b!=c)}});d(c$,"sign",function(a,b){return 0>b?-Math.abs(a):Math.abs(a)},"~N,~N");d(c$,"getColumn",function(a){for(var b=U(this.rows,0),c=0;c<this.rows;c++)b[c]=
+this.value[c][a];return b},"~N");d(c$,"printD",function(a){for(var b=0;b<this.rows;b++)jalview.util.Format.printDouble(a,"%15.4e",this.d[b])},"java.io.PrintStream");d(c$,"printE",function(a){for(var b=0;b<this.rows;b++)jalview.util.Format.printDouble(a,"%15.4e",this.e[b])},"java.io.PrintStream")});p("jalview.datamodel");c$=s(function(){this.isPlaceholder=!1;this.coord=this.sequence=null;r(this,arguments)},jalview.datamodel,"SequencePoint");m(c$,function(a,b){this.sequence=a;this.coord=b},"jalview.datamodel.SequenceI,~A");
+p("jalview.appletgui");q("awt2swing.Panel java.awt.event.ActionListener awt2swing.Button $.ScrollPane $.TextArea java.awt.BorderLayout java.util.Vector".split(" "),"jalview.appletgui.PairwiseAlignPanel","jalview.analysis.AlignSeq jalview.appletgui.AlignFrame jalview.datamodel.Alignment jalview.util.Format $.MessageManager java.awt.Font".split(" "),function(){c$=s(function(){this.borderLayout1=this.jPanel1=this.viewInEditorButton=this.textarea=this.scrollPane=this.ap=this.sequences=null;r(this,arguments)},
+jalview.appletgui,"PairwiseAlignPanel",awt2swing.Panel,java.awt.event.ActionListener);J(c$,function(){this.sequences=new java.util.Vector;this.scrollPane=new awt2swing.ScrollPane;this.textarea=new awt2swing.TextArea;this.viewInEditorButton=new awt2swing.Button;this.jPanel1=new awt2swing.Panel;this.borderLayout1=new java.awt.BorderLayout});m(c$,function(a){t(this,jalview.appletgui.PairwiseAlignPanel,[]);try{this.jbInit()}catch(b){if(y(b,Exception))b.printStackTrace();else throw b;}this.ap=a;this.sequences=
+new java.util.Vector;var c,d=a.av.getViewAsString(!0);c=null==a.av.getSelectionGroup()?a.av.getAlignment().getSequencesArray():a.av.getSelectionGroup().getSequencesInOrder(a.av.getAlignment());var e=Q(c.length,c.length,0),k=0,g=a.av.getSelectionGroup().getSize();a=a.av.getAlignment().isNucleotide()?"dna":"pep";for(var h=1;h<g;h++)for(var j=0;j<h;j++){var n=new jalview.analysis.AlignSeq(c[h],d[h],c[j],d[j],a);0==n.s1str.length||0==n.s2str.length||(n.calcScoreMatrix(),n.traceAlignment(),n.printAlignment(System.out),
+e[h][j]=n.getMaxScore()/n.getASeq1().length,k+=e[h][j],this.textarea.append(n.getOutput()),this.sequences.add(n.getAlignedSeq1()),this.sequences.add(n.getAlignedSeq1()))}if(2<g){System.out.println("Pairwise alignment scaled similarity score matrix\n");for(h=0;h<g;h++)jalview.util.Format.print(System.out,"%s \n",""+h+" "+c[h].getName());System.out.println("\n");for(h=0;h<g;h++)for(j=0;j<h;j++)jalview.util.Format.printDouble(System.out,"%7.3f",e[h][j]/k);System.out.println("\n")}},"jalview.appletgui.AlignmentPanel");
+e(c$,"actionPerformed",function(a){a.getSource()===this.viewInEditorButton&&this.viewInEditorButton_actionPerformed()},"java.awt.event.ActionEvent");d(c$,"viewInEditorButton_actionPerformed",function(){for(var a=Array(this.sequences.size()),b=0;b<this.sequences.size();b++)a[b]=this.sequences.elementAt(b);new jalview.appletgui.AlignFrame(new jalview.datamodel.Alignment(a),this.ap.av.applet,"Pairwise Aligned Sequences",!1)});d(c$,"jbInit",function(){this.setLayout(this.borderLayout1);this.textarea.setFont(new java.awt.Font("Monospaced",
+0,12));this.textarea.setText("");this.viewInEditorButton.setFont(new java.awt.Font("Verdana",0,12));this.viewInEditorButton.setLabel(jalview.util.MessageManager.getString("label.view_alignment_editor"));this.viewInEditorButton.addActionListener(this);this.add(this.scrollPane,"Center");this.scrollPane.add(this.textarea);this.add(this.jPanel1,"South");this.jPanel1.add(this.viewInEditorButton,null)})});p("jalview.appletgui");q(["jalview.appletgui.SliderPanel","java.awt.event.WindowListener","java.util.Stack"],
+"jalview.appletgui.RedundancyPanel","awt2swing.Frame jalview.analysis.AlignSeq jalview.appletgui.PaintRefresher jalview.bin.JalviewLite jalview.commands.EditCommand jalview.util.MessageManager java.awt.event.AdjustmentListener java.lang.Thread java.util.ArrayList $.Vector".split(" "),function(){c$=s(function(){this.redundantSeqs=this.frame=this.originalSequences=this.redundancy=this.historyList=null;r(this,arguments)},jalview.appletgui,"RedundancyPanel",jalview.appletgui.SliderPanel,[Runnable,java.awt.event.WindowListener]);
+J(c$,function(){this.historyList=new java.util.Stack});m(c$,function(a){t(this,jalview.appletgui.RedundancyPanel,[a,0,!1,null]);this.redundantSeqs=new java.util.Vector;this.ap=a;this.undoButton.setVisible(!0);this.applyButton.setVisible(!0);this.allGroupsCheck.setVisible(!1);this.label.setText(jalview.util.MessageManager.getString("label.enter_redundancy_threshold"));this.valueField.setText("100");this.slider.setVisibleAmount(1);this.slider.setMinimum(0);this.slider.setMaximum(100+this.slider.getVisibleAmount());
+this.slider.setValue(100);this.slider.addAdjustmentListener((H("jalview.appletgui.RedundancyPanel$1")?0:jalview.appletgui.RedundancyPanel.$RedundancyPanel$1$(),C(jalview.appletgui.RedundancyPanel$1,this,null)));this.frame=new awt2swing.Frame;this.frame.add(this);jalview.bin.JalviewLite.addFrame(this.frame,jalview.util.MessageManager.getString("label.redundancy_threshold_selection"),400,100);this.frame.addWindowListener(this);(new Thread(this)).start()},"jalview.appletgui.AlignmentPanel");e(c$,"run",
+function(){this.label.setText(jalview.util.MessageManager.getString("label.calculating"));this.slider.setVisible(!1);this.applyButton.setEnabled(!1);this.valueField.setVisible(!1);this.validate();var a=this.ap.av.getSelectionGroup(),b;null!=a&&1<=a.getSize()?(this.originalSequences=a.getSequencesInOrder(this.ap.av.getAlignment()),b=a.getStartRes(),a=a.getEndRes()):(this.originalSequences=this.ap.av.getAlignment().getSequencesArray(),b=0,a=this.ap.av.getAlignment().getWidth());this.redundancy=jalview.analysis.AlignSeq.computeRedundancyMatrix(this.originalSequences,
+null,b,a,!1);this.label.setText(jalview.util.MessageManager.getString("label.enter_redundancy_threshold"));this.slider.setVisible(!0);this.applyButton.setEnabled(!0);this.valueField.setVisible(!0);this.validate();this.sliderValueChanged()});d(c$,"sliderValueChanged",function(){if(null!=this.redundancy){for(var a=this.slider.getValue(),b=new java.util.ArrayList,c=0;c<this.redundancy.length;c++)a<=this.redundancy[c]&&b.add(this.originalSequences[c]);this.ap.idPanel.idCanvas.setHighlighted(b);jalview.appletgui.PaintRefresher.Refresh(this,
+this.ap.av.getSequenceSetId(),!0,!0)}});e(c$,"applyButton_actionPerformed",function(){var a=new java.util.Vector;this.undoButton.setEnabled(!0);for(var b=this.slider.getValue(),c=this.ap.av.getSelectionGroup(),d=0;d<this.redundancy.length;d++)b<=this.redundancy[d]&&a.addElement(this.originalSequences[d]);if(0<a.size()){for(var b=Array(a.size()),e=0,d=0;d<a.size();d++)b[d]=a.elementAt(d),b[d].getLength()>e&&(e=b[d].getLength());for(var e=new jalview.commands.EditCommand(jalview.util.MessageManager.getString("action.remove_redundancy"),
+jalview.commands.EditCommand.Action.CUT,b,0,e,this.ap.av.getAlignment()),k=this.ap.av.getAlignment(),d=0;d<a.size();d++)k.deleteSequence(b[d]),null!=c&&c.deleteSequence(b[d],!1);this.historyList.push(e);this.ap.alignFrame.addHistoryItem(e);jalview.appletgui.PaintRefresher.Refresh(this,this.ap.av.getSequenceSetId(),!0,!0);this.ap.av.firePropertyChange("alignment",null,this.ap.av.getAlignment().getSequences())}});e(c$,"undoButton_actionPerformed",function(){var a=this.historyList.pop();a.undoCommand(null);
+this.ap.av.getHistoryList().contains(a)&&(this.ap.av.getHistoryList().remove(a),this.ap.alignFrame.updateEditMenuBar(),this.ap.av.firePropertyChange("alignment",null,this.ap.av.getAlignment().getSequences()));this.ap.paintAlignment(!0);0==this.historyList.size()&&this.undoButton.setEnabled(!1)});d(c$,"valueField_actionPerformed",function(){try{var a=Integer.parseInt(this.valueField.getText());this.slider.setValue(a)}catch(b){if(y(b,Exception))this.valueField.setText(this.slider.getValue()+"");else throw b;
+}},"java.awt.event.ActionEvent");e(c$,"windowOpened",function(){},"java.awt.event.WindowEvent");e(c$,"windowClosing",function(){this.ap.idPanel.idCanvas.setHighlighted(null)},"java.awt.event.WindowEvent");e(c$,"windowClosed",function(){},"java.awt.event.WindowEvent");e(c$,"windowActivated",function(){},"java.awt.event.WindowEvent");e(c$,"windowDeactivated",function(){},"java.awt.event.WindowEvent");e(c$,"windowIconified",function(){},"java.awt.event.WindowEvent");e(c$,"windowDeiconified",function(){},
+"java.awt.event.WindowEvent");c$.$RedundancyPanel$1$=function(){A(self.c$);c$=L(jalview.appletgui,"RedundancyPanel$1",null,java.awt.event.AdjustmentListener);e(c$,"adjustmentValueChanged",function(){this.b$["jalview.appletgui.RedundancyPanel"].valueField.setText(this.b$["jalview.appletgui.RedundancyPanel"].slider.getValue()+"");this.b$["jalview.appletgui.RedundancyPanel"].sliderValueChanged()},"java.awt.event.AdjustmentEvent");c$=z()}});p("jalview.appletgui");q("jalview.appletgui.EmbmenuFrame java.awt.event.ActionListener $.ItemListener java.lang.Thread awt2swing.CheckboxMenuItem $.Menu $.MenuBar $.MenuItem $.ScrollPane java.awt.BorderLayout".split(" "),
+"jalview.appletgui.TreePanel","awt2swing.Frame jalview.analysis.NJTree jalview.api.analysis.ViewBasedAnalysisI jalview.appletgui.AlignFrame $.CutAndPasteTransfer $.FontChooser $.TreeCanvas jalview.bin.JalviewLite jalview.datamodel.Alignment jalview.io.NewickFile jalview.schemes.ResidueProperties jalview.util.MessageManager java.awt.Color $.Font".split(" "),function(){c$=s(function(){this.pwtype=this.$type=this.seq=null;this.end=this.start=0;this.av=this.ap=this.tree=this.treeCanvas=null;H("jalview.appletgui.TreePanel.TreeLoader")||
+jalview.appletgui.TreePanel.$TreePanel$TreeLoader$();this.inputData=this.newickOutput=this.fileMenu=this.fitToWindow=this.placeholdersMenu=this.distanceMenu=this.bootstrapMenu=this.fontSize=this.jMenu2=this.jMenuBar1=this.scrollPane=this.borderLayout1=null;r(this,arguments)},jalview.appletgui,"TreePanel",jalview.appletgui.EmbmenuFrame,[java.awt.event.ActionListener,java.awt.event.ItemListener]);J(c$,function(){this.borderLayout1=new java.awt.BorderLayout;this.scrollPane=new awt2swing.ScrollPane;this.jMenuBar1=
+new awt2swing.MenuBar;this.jMenu2=new awt2swing.Menu;this.fontSize=new awt2swing.MenuItem;this.bootstrapMenu=new awt2swing.CheckboxMenuItem;this.distanceMenu=new awt2swing.CheckboxMenuItem;this.placeholdersMenu=new awt2swing.CheckboxMenuItem;this.fitToWindow=new awt2swing.CheckboxMenuItem;this.fileMenu=new awt2swing.Menu;this.newickOutput=new awt2swing.MenuItem;this.inputData=new awt2swing.MenuItem});d(c$,"getTree",function(){return this.tree});d(c$,"finalize",function(){this.av=this.ap=null;K(this,
+jalview.appletgui.TreePanel,"finalize",[])});m(c$,function(a,b,c){t(this,jalview.appletgui.TreePanel,[]);try{this.jbInit(),this.setMenuBar(this.jMenuBar1)}catch(d){if(y(d,Exception))d.printStackTrace();else throw d;}this.initTreePanel(a,b,c,null)},"jalview.appletgui.AlignmentPanel,~S,~S");m(c$,function(a,b,c,d){t(this,jalview.appletgui.TreePanel,[]);try{this.jbInit(),this.setMenuBar(this.jMenuBar1)}catch(e){if(y(e,Exception))e.printStackTrace();else throw e;}this.initTreePanel(a,b,c,d)},"jalview.appletgui.AlignmentPanel,~S,~S,jalview.io.NewickFile");
+d(c$,"initTreePanel",function(a,b,c,d){this.ap=a;this.av=a.av;this.$type=b;this.pwtype=c;this.treeCanvas=new jalview.appletgui.TreeCanvas(a,this.scrollPane);C(jalview.appletgui.TreePanel.TreeLoader,this,null,d).start();this.embedMenuIfNeeded(this.treeCanvas);this.scrollPane.add(this.treeCanvas,"Center")},"jalview.appletgui.AlignmentPanel,~S,~S,jalview.io.NewickFile");d(c$,"showOriginalData",function(){if(null!=this.tree.seqData){var a="-";try{a=this.av.getGapCharacter()}catch(b){if(!y(b,Exception))throw b;
+}a=this.tree.seqData.getAlignmentAndColumnSelection(a);if(null!=a&&null!=a[0]){var c=new jalview.datamodel.Alignment(a[0]);(new jalview.appletgui.AlignFrame(c,this.av.applet,"Original Data for Tree",!1)).viewport.setHiddenColumns(a[1])}}else System.out.println("Original Tree Data not available")});e(c$,"actionPerformed",function(a){a.getSource()===this.newickOutput?this.newickOutput_actionPerformed():a.getSource()===this.fontSize?this.fontSize_actionPerformed():a.getSource()===this.inputData&&this.showOriginalData()},
+"java.awt.event.ActionEvent");e(c$,"itemStateChanged",function(a){a.getSource()===this.fitToWindow?this.treeCanvas.fitToWindow=this.fitToWindow.getState():a.getSource()===this.distanceMenu?this.treeCanvas.setShowDistances(this.distanceMenu.getState()):a.getSource()===this.bootstrapMenu?this.treeCanvas.setShowBootstrap(this.bootstrapMenu.getState()):a.getSource()===this.placeholdersMenu&&this.treeCanvas.setMarkPlaceholders(this.placeholdersMenu.getState());this.treeCanvas.repaint()},"java.awt.event.ItemEvent");
+d(c$,"newickOutput_actionPerformed",function(){var a=(new jalview.io.NewickFile(this.tree.getTopNode())).print(!1,!0),b=new jalview.appletgui.CutAndPasteTransfer(!1,null);b.setText(a);a=new awt2swing.Frame;a.add(b);jalview.bin.JalviewLite.addFrame(a,this.$type+" "+this.pwtype,500,100)});d(c$,"getTreeFont",function(){return this.treeCanvas.$font});d(c$,"setTreeFont",function(a){this.treeCanvas.$font=a;this.treeCanvas.repaint()},"java.awt.Font");d(c$,"fontSize_actionPerformed",function(){null!=this.treeCanvas&&
+new jalview.appletgui.FontChooser(this)});d(c$,"jbInit",function(){this.setLayout(this.borderLayout1);this.setBackground(java.awt.Color.white);this.setFont(new java.awt.Font("Verdana",0,12));this.jMenu2.setLabel(jalview.util.MessageManager.getString("action.view"));this.fontSize.setLabel(jalview.util.MessageManager.getString("action.font"));this.fontSize.addActionListener(this);this.bootstrapMenu.setLabel(jalview.util.MessageManager.getString("label.show_bootstrap_values"));this.bootstrapMenu.addItemListener(this);
+this.distanceMenu.setLabel(jalview.util.MessageManager.getString("label.show_distances"));this.distanceMenu.addItemListener(this);this.placeholdersMenu.setLabel(jalview.util.MessageManager.getString("label.mark_unassociated_leaves"));this.placeholdersMenu.addItemListener(this);this.fitToWindow.setState(!0);this.fitToWindow.setLabel(jalview.util.MessageManager.getString("label.fit_to_window"));this.fitToWindow.addItemListener(this);this.fileMenu.setLabel(jalview.util.MessageManager.getString("action.file"));
+this.newickOutput.setLabel(jalview.util.MessageManager.getString("label.newick_format"));this.newickOutput.addActionListener(this);this.inputData.setLabel(jalview.util.MessageManager.getString("label.input_data"));this.add(this.scrollPane,"Center");this.jMenuBar1.add(this.fileMenu);this.jMenuBar1.add(this.jMenu2);this.jMenu2.add(this.fitToWindow);this.jMenu2.add(this.fontSize);this.jMenu2.add(this.distanceMenu);this.jMenu2.add(this.bootstrapMenu);this.jMenu2.add(this.placeholdersMenu);this.fileMenu.add(this.newickOutput);
+this.fileMenu.add(this.inputData);this.inputData.addActionListener(this)});c$.$TreePanel$TreeLoader$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.odata=this.newtree=null;r(this,arguments)},jalview.appletgui.TreePanel,"TreeLoader",Thread);m(c$,function(a){t(this,jalview.appletgui.TreePanel.TreeLoader,[]);this.newtree=a},"jalview.io.NewickFile");e(c$,"run",function(){if(null!=this.newtree)this.b$["jalview.appletgui.TreePanel"].tree=null==this.odata?new jalview.analysis.NJTree(this.b$["jalview.appletgui.TreePanel"].av.getAlignment().getSequencesArray(),
+this.newtree):new jalview.analysis.NJTree(this.b$["jalview.appletgui.TreePanel"].av.getAlignment().getSequencesArray(),this.odata,this.newtree);else{var a,b,c;a=null!=this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup()&&1<this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup().getSize();var d=this.b$["jalview.appletgui.TreePanel"].av.getAlignmentView(a);a?(a=this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup().getStartRes(),b=this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup().getEndRes()+
+1,c=this.b$["jalview.appletgui.TreePanel"].av.getSelectionGroup().getSequencesInOrder(this.b$["jalview.appletgui.TreePanel"].av.getAlignment())):(a=0,b=this.b$["jalview.appletgui.TreePanel"].av.getAlignment().getWidth(),c=this.b$["jalview.appletgui.TreePanel"].av.getAlignment().getSequencesArray());var e=jalview.schemes.ResidueProperties.getScoreModel(this.b$["jalview.appletgui.TreePanel"].pwtype);if(v(e,jalview.api.analysis.ViewBasedAnalysisI)){try{e=e.getClass().newInstance(),e.configureFromAlignmentView(this.b$["jalview.appletgui.TreePanel"].treeCanvas.ap)}catch(k){if(y(k,
+Exception))System.err.println("Couldn't create a scoremodel instance for "+e.getName()),k.printStackTrace();else throw k;}this.b$["jalview.appletgui.TreePanel"].tree=new jalview.analysis.NJTree(c,d,this.b$["jalview.appletgui.TreePanel"].$type,this.b$["jalview.appletgui.TreePanel"].pwtype,e,a,b)}else this.b$["jalview.appletgui.TreePanel"].tree=new jalview.analysis.NJTree(c,d,this.b$["jalview.appletgui.TreePanel"].$type,this.b$["jalview.appletgui.TreePanel"].pwtype,null,a,b)}this.b$["jalview.appletgui.TreePanel"].tree.reCount(this.b$["jalview.appletgui.TreePanel"].tree.getTopNode());
+this.b$["jalview.appletgui.TreePanel"].tree.findHeight(this.b$["jalview.appletgui.TreePanel"].tree.getTopNode());this.b$["jalview.appletgui.TreePanel"].treeCanvas.setTree(this.b$["jalview.appletgui.TreePanel"].tree);null!=this.newtree&&(a=this.newtree.HasDistances()&&this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter("showTreeDistances",this.newtree.HasDistances()),b=this.newtree.HasBootstrap()&&this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter("showTreeBootstraps",
+this.newtree.HasBootstrap()),this.b$["jalview.appletgui.TreePanel"].distanceMenu.setState(a),this.b$["jalview.appletgui.TreePanel"].bootstrapMenu.setState(b),this.b$["jalview.appletgui.TreePanel"].treeCanvas.setShowBootstrap(b),this.b$["jalview.appletgui.TreePanel"].treeCanvas.setShowDistances(a),this.b$["jalview.appletgui.TreePanel"].treeCanvas.setMarkPlaceholders(this.b$["jalview.appletgui.TreePanel"].av.applet.getDefaultParameter("showUnlinkedTreeNodes",!1)));this.b$["jalview.appletgui.TreePanel"].treeCanvas.repaint();
+this.b$["jalview.appletgui.TreePanel"].av.setCurrentTree(this.b$["jalview.appletgui.TreePanel"].tree)});c$=z()}});p("jalview.analysis");q(["java.util.Vector"],["jalview.analysis.Cluster","$.NJTree"],"jalview.analysis.SequenceIdMatcher jalview.datamodel.AlignmentView $.CigarArray $.NodeTransformI $.SeqCigar $.Sequence $.SequenceI $.SequenceNode jalview.io.NewickFile jalview.schemes.ResidueProperties jalview.util.Format java.lang.StringBuffer".split(" "),function(){c$=s(function(){this.done=this.seqData=
+this.sequence=this.$cluster=null;this.noClus=this.noseqs=0;this.distance=null;this.rj=this.ri=this.minj=this.mini=0;this.top=this.maxdist=this.groups=null;this.ycount=this.maxheight=this.maxDistValue=0;this.leaves=this.found=this.pwtype=this.type=this.node=null;this.hasDistances=!0;this.hasBootstrap=!1;this.hasRootDistance=!0;this._lylimit=this._lycount=0;r(this,arguments)},jalview.analysis,"NJTree");J(c$,function(){this.groups=new java.util.Vector});m(c$,function(a,b,c){this.construct(a,c);null!=
+b&&(this.seqData=b)},"~A,jalview.datamodel.AlignmentView,jalview.io.NewickFile");m(c$,function(a,b){this.sequence=a;this.top=b.getTree();this.hasDistances=b.HasDistances();this.hasBootstrap=b.HasBootstrap();this.hasRootDistance=b.HasRootDistance();this.maxheight=this.findHeight(this.top);var c=new jalview.analysis.SequenceIdMatcher(a),d=new java.util.Vector;this.findLeaves(this.top,d);for(var e=0,k=a.length,g,h,j,n=new java.util.Vector,m=0;e<d.size();)g=d.elementAt(e++),j=g.getName(),h=null,-1<k&&
+(h=c.findIdMatch(j)),null!=h?(g.setElement(h),n.contains(h)?m++:(n.addElement(h),k--)):(g.setElement(new jalview.datamodel.Sequence(j,"THISISAPLACEHLDER")),g.setPlaceholder(!0))},"~A,jalview.io.NewickFile");m(c$,function(a,b,c,d,e,k,g){this.sequence=a;this.node=new java.util.Vector;this.type=c;this.pwtype=d;if(null!=b)this.seqData=b;else{b=Array(a.length);for(var h=0;h<a.length;h++)b[h]=new jalview.datamodel.SeqCigar(a[h],k,g);b=new jalview.datamodel.CigarArray(b);b.addOperation("M",g-k+1);this.seqData=
+new jalview.datamodel.AlignmentView(b,k)}c.equals("NJ");null==e&&!d.equals("PID")&&jalview.schemes.ResidueProperties.getScoreMatrix(d);h=0;for(this.done=w(a.length,0);h<a.length&&null!=a[h];)this.done[h]=0,h++;this.noseqs=h++;this.distance=this.findDistances(e);this.makeLeaves();this.noClus=this.$cluster.size();this.cluster()},"~A,jalview.datamodel.AlignmentView,~S,~S,jalview.api.analysis.ScoreModelI,~N,~N");e(c$,"toString",function(){return(new jalview.io.NewickFile(this.getTopNode())).print(this.isHasBootstrap(),
+this.isHasDistances(),this.isHasRootDistance())});d(c$,"UpdatePlaceHolders",function(a){var b=new java.util.Vector;this.findLeaves(this.top,b);for(var c=b.size(),d=null,e=0;e<c;){var k=b.elementAt(e++);if(a.contains(k.element()))k.setPlaceholder(!1);else{if(null==d){for(var d=Array(a.size()),g=0;g<d.length;g++)d[g]=a.get(g);d=new jalview.analysis.SequenceIdMatcher(d)}g=d.findIdMatch(k.getName());null!=g?(k.isPlaceholder(),k.setPlaceholder(!1),k.setElement(g)):(k.isPlaceholder()||k.setElement(new jalview.datamodel.Sequence(k.getName(),
+"THISISAPLACEHLDER")),k.setPlaceholder(!0))}}},"java.util.List");d(c$,"renameAssociatedNodes",function(){this.applyToNodes((H("jalview.analysis.NJTree$1")?0:jalview.analysis.NJTree.$NJTree$1$(),C(jalview.analysis.NJTree$1,this,null)))});d(c$,"cluster",function(){for(;2<this.noClus;){this.type.equals("NJ")?this.findMinNJDistance():this.findMinDistance();var a=this.joinClusters(this.mini,this.minj);this.done[this.minj]=1;this.$cluster.setElementAt(null,this.minj);this.$cluster.setElementAt(a,this.mini);
+this.noClus--}for(var a=!1,b=-1,c=-1,d=0;d<this.noseqs;d++)1!=this.done[d]&&(!1==a?(c=d,a=!0):b=d);this.joinClusters(b,c);this.top=this.node.elementAt(b);this.reCount(this.top);this.findHeight(this.top);this.findMaxDist(this.top)});d(c$,"joinClusters",function(a,b){for(var c=this.distance[a][b],d=this.$cluster.elementAt(a).value.length,e=this.$cluster.elementAt(b).value.length,k=w(d+e,0),g=0;g<d;g++)k[g]=this.$cluster.elementAt(a).value[g];for(g=d;g<d+e;g++)k[g]=this.$cluster.elementAt(b).value[g-
+d];d=new jalview.analysis.Cluster(k);this.ri=this.findr(a,b);this.rj=this.findr(b,a);this.type.equals("NJ")?this.findClusterNJDistance(a,b):this.findClusterDistance(a,b);e=new jalview.datamodel.SequenceNode;e.setLeft(this.node.elementAt(a));e.setRight(this.node.elementAt(b));k=this.node.elementAt(a);g=this.node.elementAt(b);this.type.equals("NJ")?this.findNewNJDistances(k,g,c):this.findNewDistances(k,g,c);k.setParent(e);g.setParent(e);this.node.setElementAt(e,a);return d},"~N,~N");d(c$,"findNewNJDistances",
+function(a,b,c){a.dist=(c+this.ri-this.rj)/2;b.dist=c-a.dist;0>a.dist&&(a.dist=0);0>b.dist&&(b.dist=0)},"jalview.datamodel.SequenceNode,jalview.datamodel.SequenceNode,~N");d(c$,"findNewDistances",function(a,b,c){for(var d=0,e=0,k=a,g=b;null!=k;)d+=k.dist,k=k.left();for(;null!=g;)e+=g.dist,g=g.left();a.dist=c/2-d;b.dist=c/2-e},"jalview.datamodel.SequenceNode,jalview.datamodel.SequenceNode,~N");d(c$,"findClusterDistance",function(a,b){for(var c=this.$cluster.elementAt(a).value.length,d=this.$cluster.elementAt(b).value.length,
+e=Q(this.noseqs,0),k=0;k<this.noseqs;k++)e[k]=k!=a&&k!=b?(this.distance[a][k]*c+this.distance[b][k]*d)/(c+d):0;for(c=0;c<this.noseqs;c++)this.distance[a][c]=e[c],this.distance[c][a]=e[c]},"~N,~N");d(c$,"findClusterNJDistance",function(a,b){for(var c=Q(this.noseqs,0),d=0;d<this.noseqs;d++)c[d]=d!=a&&d!=b?(this.distance[a][d]+this.distance[b][d]-this.distance[a][b])/2:0;for(d=0;d<this.noseqs;d++)this.distance[a][d]=c[d],this.distance[d][a]=c[d]},"~N,~N");d(c$,"findr",function(a,b){for(var c=1,d=0;d<
+this.noseqs;d++)d!=a&&(d!=b&&1!=this.done[d])&&(c+=this.distance[a][d]);2<this.noClus&&(c/=this.noClus-2);return c},"~N,~N");d(c$,"findMinNJDistance",function(){for(var a=1E5,b=0;b<this.noseqs-1;b++)for(var c=b+1;c<this.noseqs;c++)if(1!=this.done[b]&&1!=this.done[c]){var d=this.distance[b][c]-(this.findr(b,c)+this.findr(c,b));d<a&&(this.mini=b,this.minj=c,a=d)}return a});d(c$,"findMinDistance",function(){for(var a=1E5,b=0;b<this.noseqs-1;b++)for(var c=b+1;c<this.noseqs;c++)1!=this.done[b]&&1!=this.done[c]&&
+this.distance[b][c]<a&&(this.mini=b,this.minj=c,a=this.distance[b][c]);return a});d(c$,"findDistances",function(a){var b=Q(this.noseqs,this.noseqs,0);null==a&&(a=jalview.schemes.ResidueProperties.getScoreModel(this.pwtype),null==a&&(a=jalview.schemes.ResidueProperties.getScoreMatrix("BLOSUM62")));return b=a.findDistances(this.seqData)},"jalview.api.analysis.ScoreModelI");d(c$,"makeLeaves",function(){this.$cluster=new java.util.Vector;for(var a=0;a<this.noseqs;a++){var b=new jalview.datamodel.SequenceNode;
+b.setElement(this.sequence[a]);b.setName(this.sequence[a].getName());this.node.addElement(b);b=w(1,0);b[0]=a;b=new jalview.analysis.Cluster(b);this.$cluster.addElement(b)}});d(c$,"findLeaves",function(a,b){if(null==a)return b;null==a.left()&&null==a.right()?b.addElement(a):(this.findLeaves(a.left(),b),this.findLeaves(a.right(),b));return b},"jalview.datamodel.SequenceNode,java.util.Vector");d(c$,"findLeaf",function(a,b){return this.found=this._findLeaf(a,b)},"jalview.datamodel.SequenceNode,~N");d(c$,
+"_findLeaf",function(a,b){if(null==a)return null;a.ycount==b?this.found=a.element():(this._findLeaf(a.left(),b),this._findLeaf(a.right(),b));return this.found},"jalview.datamodel.SequenceNode,~N");d(c$,"printNode",function(a){null!=a&&(null==a.left()&&null==a.right()?(System.out.println("Leaf = "+a.element().getName()),System.out.println("Dist "+a.dist),System.out.println("Boot "+a.getBootstrap())):(System.out.println("Dist "+a.dist),this.printNode(a.left()),this.printNode(a.right())))},"jalview.datamodel.SequenceNode");
+d(c$,"findMaxDist",function(a){if(null!=a)if(null==a.left()&&null==a.right()){var b=a.dist;b>this.maxDistValue&&(this.maxdist=a,this.maxDistValue=b)}else this.findMaxDist(a.left()),this.findMaxDist(a.right())},"jalview.datamodel.SequenceNode");d(c$,"getGroups",function(){return this.groups});d(c$,"getMaxHeight",function(){return this.maxheight});d(c$,"groupNodes",function(a,b){null!=a&&(a.height/this.maxheight>b?this.groups.addElement(a):(this.groupNodes(a.left(),b),this.groupNodes(a.right(),b)))},
+"jalview.datamodel.SequenceNode,~N");d(c$,"findHeight",function(a){if(null==a)return this.maxheight;if(null==a.left()&&null==a.right()){if(a.height=a.parent().height+a.dist,a.height>this.maxheight)return a.height}else null!=a.parent()?a.height=a.parent().height+a.dist:(this.maxheight=0,a.height=0),this.maxheight=this.findHeight(a.left()),this.maxheight=this.findHeight(a.right());return this.maxheight},"jalview.datamodel.SequenceNode");d(c$,"reRoot",function(){if(null!=this.maxdist){this.ycount=0;
+var a=this.maxdist.dist,b=new jalview.datamodel.SequenceNode;b.setParent(null);var c=this.maxdist.parent();this.changeDirection(c,this.maxdist);System.out.println("Printing reversed tree");this.printN(c);c.dist=a/2;this.maxdist.dist=a/2;c.setParent(b);this.maxdist.setParent(b);b.setRight(c);b.setLeft(this.maxdist);this.top=b;this.ycount=0;this.reCount(this.top);this.findHeight(this.top)}return this.top});d(c$,"hasOriginalSequenceData",function(){return null!=this.seqData});d(c$,"printOriginalSequenceData",
+function(a){if(null==this.seqData)return null;var b=new StringBuffer;a=this.seqData.getSequenceStrings(a);for(var c=0;c<a.length;c++)b.append((new jalview.util.Format("%-15s")).form(this.sequence[c].getName())),b.append(" "+a[c]+"\n");return b.toString()},"~S");d(c$,"printN",function(a){null!=a&&(null!=a.left()&&null!=a.right()?(this.printN(a.left()),this.printN(a.right())):System.out.println(" name = "+a.element().getName()),System.out.println(" dist = "+a.dist+" "+a.count+" "+a.height))},"jalview.datamodel.SequenceNode");
+d(c$,"reCount",function(a){this._lycount=this.ycount=0;this._reCount(a)},"jalview.datamodel.SequenceNode");d(c$,"_reCount",function(a){if(null!=a){this._lycount++;if(null!=a.left()&&null!=a.right()){this._reCount(a.left());this._reCount(a.right());var b=a.left(),c=a.right();a.count=b.count+c.count;a.ycount=(b.ycount+c.ycount)/2}else a.count=1,a.ycount=this.ycount++;this._lycount--}},"jalview.datamodel.SequenceNode");d(c$,"swapNodes",function(a){if(null!=a){var b=a.left();a.setLeft(a.right());a.setRight(b)}},
+"jalview.datamodel.SequenceNode");d(c$,"changeDirection",function(a,b){if(null!=a)if(a.parent()!==this.top){this.changeDirection(a.parent(),a);var c=a.parent();b===a.left()?(a.setParent(b),a.setLeft(c)):b===a.right()&&(a.setParent(b),a.setRight(c))}else b===a.left()?(a.setParent(a.left()),this.top.left()===a?a.setRight(this.top.right()):a.setRight(this.top.left())):(a.setParent(a.right()),this.top.left()===a?a.setLeft(this.top.right()):a.setLeft(this.top.left()))},"jalview.datamodel.SequenceNode,jalview.datamodel.SequenceNode");
+d(c$,"getMaxDist",function(){return this.maxdist});d(c$,"getTopNode",function(){return this.top});d(c$,"isHasDistances",function(){return this.hasDistances});d(c$,"isHasBootstrap",function(){return this.hasBootstrap});d(c$,"isHasRootDistance",function(){return this.hasRootDistance});d(c$,"applyToNodes",function(a){for(var b=this.node.elements();b.hasMoreElements();a.transform(b.nextElement()));},"jalview.datamodel.NodeTransformI");c$.$NJTree$1$=function(){A(self.c$);c$=L(jalview.analysis,"NJTree$1",
+null,jalview.datamodel.NodeTransformI);d(c$,"transform",function(a){var b=a.element();null!=b&&v(b,jalview.datamodel.SequenceI)&&a.setName(b.getName())},"jalview.datamodel.BinaryNode");c$=z()};c$=s(function(){this.value=null;r(this,arguments)},jalview.analysis,"Cluster");m(c$,function(a){this.value=a},"~A")});p("jalview.datamodel");M(jalview.datamodel,"NodeTransformI");p("jalview.appletgui");q(["awt2swing.Panel","java.awt.event.MouseListener","$.MouseMotionListener","java.util.Hashtable"],"jalview.appletgui.TreeCanvas",
+"awt2swing.Util jalview.analysis.Conservation jalview.appletgui.PaintRefresher jalview.datamodel.SequenceGroup $.SequenceI $.SequenceNode jalview.schemes.ColourSchemeProperty $.ResidueProperties $.UserColourScheme jalview.util.Format $.MappingUtils java.awt.Color $.Dimension $.Point $.Rectangle java.util.Vector".split(" "),function(){c$=s(function(){this.$font=this.av=this.scrollPane=this.tree=null;this.fitToWindow=!0;this.markPlaceholders=this.showBootstrap=this.showDistances=!1;this.offx=20;this.threshold=
+this.offy=0;this.longestName=null;this.labelLength=-1;this.ap=this.highlightNode=this.nodeHash=this.nameHash=null;r(this,arguments)},jalview.appletgui,"TreeCanvas",awt2swing.Panel,[java.awt.event.MouseListener,java.awt.event.MouseMotionListener]);J(c$,function(){this.nameHash=new java.util.Hashtable;this.nodeHash=new java.util.Hashtable});m(c$,function(a,b){t(this,jalview.appletgui.TreeCanvas,[]);this.ap=a;this.av=a.av;this.$font=this.av.getFont();this.scrollPane=b;this.addMouseListener(this);this.addMouseMotionListener(this);
+this.setLayout(null);jalview.appletgui.PaintRefresher.Register(this,this.av.getSequenceSetId())},"jalview.appletgui.AlignmentPanel,awt2swing.ScrollPane");d(c$,"treeSelectionChanged",function(a){var b=this.av.getSelectionGroup();null==b&&(b=new jalview.datamodel.SequenceGroup,this.av.setSelectionGroup(b));b.setEndRes(this.av.getAlignment().getWidth()-1);b.addOrRemove(a,!0)},"jalview.datamodel.SequenceI");d(c$,"setTree",function(a){this.tree=a;a.findHeight(a.getTopNode());a=a.findLeaves(a.getTopNode(),
+new java.util.Vector);var b=!1;this.longestName="";for(var c=0;c<a.size();c++){var d=a.elementAt(c);d.isPlaceholder()&&(b=!0);this.longestName.length<d.element().getName().length&&(this.longestName=" * "+d.element().getName())}this.setMarkPlaceholders(b)},"jalview.analysis.NJTree");d(c$,"drawNode",function(a,b,c,d,e,k,g){if(null!=b)if(null==b.left()&&null==b.right()){var h=b.height;e=b.dist;var j=I((h-e)*d)+k,n=I(h*d)+k;e=I(b.ycount*c)+g;v(b.element(),jalview.datamodel.SequenceI)?(d=b.element(),this.av.getSequenceColour(d)===
+java.awt.Color.white?a.setColor(java.awt.Color.black):a.setColor(this.av.getSequenceColour(d).darker())):a.setColor(java.awt.Color.black);a.drawLine(j,e,n,e);d="";this.showDistances&&0<b.dist&&(d=(new jalview.util.Format("%-.2f")).formDouble(b.dist));this.showBootstrap&&(k=b.getBootstrap(),-1<k&&(this.showDistances&&(d+=" : "),d+=String.valueOf(b.getBootstrap())));d.equals("")||awt2swing.Util.drawString(a,d,j+2,e-2);j=this.markPlaceholders&&b.isPlaceholder()?" * "+b.getName():b.getName();k=a.getFontMetrics(this.$font);
+d=k.stringWidth(j)+3;k=k.getHeight();h=new java.awt.Rectangle(n+10,e-k,d,k);this.nameHash.put(b.element(),h);h=this.av.getSelectionGroup();null!=h&&h.getSequences(null).contains(b.element())&&(a.setColor(java.awt.Color.gray),a.fillRect(n+10,e-k+3,d,k),a.setColor(java.awt.Color.white));awt2swing.Util.drawString(a,j,n+10,e);a.setColor(java.awt.Color.black)}else{this.drawNode(a,b.left(),c,d,e,k,g);this.drawNode(a,b.right(),c,d,e,k,g);h=b.height;e=b.dist;j=I((h-e)*d)+k;n=I(h*d)+k;e=I(b.ycount*c)+g;a.setColor(b.color.darker());
+a.drawLine(j,e,n,e);b===this.highlightNode?a.fillRect(n-3,e-3,6,6):a.fillRect(n-2,e-2,4,4);var m=I(b.left().ycount*c)+g;c=I(b.right().ycount*c)+g;n=new java.awt.Rectangle(n-2,e-2,5,5);this.nodeHash.put(b,n);a.drawLine(I(h*d)+k,m,I(h*d)+k,c);d="";this.showDistances&&0<b.dist&&(d=(new jalview.util.Format("%-.2f")).formDouble(b.dist));this.showBootstrap&&(k=b.getBootstrap(),-1<k&&(this.showDistances&&(d+=" : "),d+=String.valueOf(b.getBootstrap())));d.equals("")||awt2swing.Util.drawString(a,d,j+2,e-2)}},
+"java.awt.Graphics,jalview.datamodel.SequenceNode,~N,~N,~N,~N,~N");d(c$,"findElement",function(a,b){for(var c=this.nameHash.keys();c.hasMoreElements();){var d=c.nextElement(),e=this.nameHash.get(d);if(a>=e.x&&a<=e.x+e.width&&b>=e.y&&b<=e.y+e.height)return d}for(c=this.nodeHash.keys();c.hasMoreElements();)if(d=c.nextElement(),e=this.nodeHash.get(d),a>=e.x&&a<=e.x+e.width&&b>=e.y&&b<=e.y+e.height)return d;return null},"~N,~N");d(c$,"pickNodes",function(a){var b=this.getSize().width,c=this.getSize().height,
+d=this.tree.getTopNode(),e=(0.8*b-2*this.offx)/this.tree.getMaxHeight();0==d.count&&(d.count=d.left().count+d.right().count);this.pickNode(a,d,(c-this.offy)/d.count,e,b,this.offx,this.offy)},"java.awt.Rectangle");d(c$,"pickNode",function(a,b,c,d,e,k,g){null!=b&&(null==b.left()&&null==b.right()?(d=I(b.height*d)+k,c=I(b.ycount*c)+g,a.contains(new java.awt.Point(d,c))&&v(b.element(),jalview.datamodel.SequenceI)&&(a=b.element(),b=this.av.getSelectionGroup(),null!=b&&b.addOrRemove(a,!0))):(this.pickNode(a,
+b.left(),c,d,e,k,g),this.pickNode(a,b.right(),c,d,e,k,g)))},"java.awt.Rectangle,jalview.datamodel.SequenceNode,~N,~N,~N,~N,~N");d(c$,"setColor",function(a,b){null!=a&&(null==a.left()&&null==a.right()?(a.color=b,v(a.element(),jalview.datamodel.SequenceI)&&this.av.setSequenceColour(a.element(),b)):(a.color=b,this.setColor(a.left(),b),this.setColor(a.right(),b)))},"jalview.datamodel.SequenceNode,java.awt.Color");e(c$,"update",function(a){this.paint(a)},"java.awt.Graphics");e(c$,"paintComponent",function(a){if(null!=
+this.tree){0==this.nameHash.size()&&this.repaint();var b=this.scrollPane.getSize().width,c=this.scrollPane.getSize().height;this.fitToWindow||(c=a.getFontMetrics(this.$font).getHeight()*this.nameHash.size());this.getSize().width>b?(this.setSize(new java.awt.Dimension(b,c)),this.scrollPane.validate()):(this.setSize(new java.awt.Dimension(b,c)),a.setFont(this.$font),this.draw(a,b,c),this.validate())}},"java.awt.Graphics");d(c$,"draw",function(a,b,c){this.offy=this.$font.getSize()+10;a.setColor(java.awt.Color.white);
+a.fillRect(0,0,b,c);this.labelLength=a.getFontMetrics(this.$font).stringWidth(this.longestName)+20;var d=(b-this.labelLength-2*this.offx)/this.tree.getMaxHeight(),e=this.tree.getTopNode();0==e.count&&(e.count=e.left().count+e.right().count);c=(c-this.offy)/e.count;this.drawNode(a,this.tree.getTopNode(),c,d,b,this.offx,this.offy);0!=this.threshold&&(this.av.getCurrentTree()===this.tree?a.setColor(java.awt.Color.red):a.setColor(java.awt.Color.gray),b=I(this.threshold*(this.getSize().width-this.labelLength-
+2*this.offx)+this.offx),a.drawLine(b,0,b,this.getSize().height))},"java.awt.Graphics,~N,~N");e(c$,"mouseReleased",function(){},"java.awt.event.MouseEvent");e(c$,"mouseEntered",function(){},"java.awt.event.MouseEvent");e(c$,"mouseExited",function(){},"java.awt.event.MouseEvent");e(c$,"mouseClicked",function(a){if(null!=this.highlightNode){if(1<a.getClickCount())this.tree.swapNodes(this.highlightNode),this.tree.reCount(this.tree.getTopNode()),this.tree.findHeight(this.tree.getTopNode());else{a=new java.util.Vector;
+this.tree.findLeaves(this.highlightNode,a);for(var b=0;b<a.size();b++){var c=a.elementAt(b).element();this.treeSelectionChanged(c)}}jalview.appletgui.PaintRefresher.Refresh(this,this.av.getSequenceSetId());this.repaint();this.av.sendSelection()}},"java.awt.event.MouseEvent");e(c$,"mouseDragged",function(){},"java.awt.event.MouseEvent");e(c$,"mouseMoved",function(a){this.av.setCurrentTree(this.tree);a=this.findElement(a.getX(),a.getY());v(a,jalview.datamodel.SequenceNode)?(this.highlightNode=a,this.repaint()):
+null!=this.highlightNode&&(this.highlightNode=null,this.repaint())},"java.awt.event.MouseEvent");e(c$,"mousePressed",function(a){this.av.setCurrentTree(this.tree);var b=a.getX();a=a.getY();a=this.findElement(b,a);v(a,jalview.datamodel.SequenceI)?(this.treeSelectionChanged(a),jalview.appletgui.PaintRefresher.Refresh(this,this.av.getSequenceSetId()),this.repaint(),this.av.sendSelection()):(!v(a,jalview.datamodel.SequenceNode)&&0!=this.tree.getMaxHeight()&&(this.threshold=(b-this.offx)/(this.getSize().width-
+this.labelLength-2*this.offx),this.tree.getGroups().removeAllElements(),this.tree.groupNodes(this.tree.getTopNode(),this.threshold),this.setColor(this.tree.getTopNode(),java.awt.Color.black),this.av.setSelectionGroup(null),this.av.getAlignment().deleteAllGroups(),this.av.clearSequenceColours(),b=this.av.getCodingComplement(),null!=b&&(b.setSelectionGroup(null),b.getAlignment().deleteAllGroups(),b.clearSequenceColours()),this.colourGroups()),jalview.appletgui.PaintRefresher.Refresh(this,this.av.getSequenceSetId()),
+this.repaint())},"java.awt.event.MouseEvent");d(c$,"colourGroups",function(){for(var a=0;a<this.tree.getGroups().size();a++){var b=new java.awt.Color(F(255*Math.random()),F(255*Math.random()),F(255*Math.random()));this.setColor(this.tree.getGroups().elementAt(a),b.brighter());for(var c=this.tree.findLeaves(this.tree.getGroups().elementAt(a),new java.util.Vector),d=new java.util.Vector,e=0;e<c.size();e++){var k=c.elementAt(e).element();d.contains(k)||d.addElement(k)}c=null;d=new jalview.datamodel.SequenceGroup(d,
+"",c,!0,!0,!1,0,this.av.getAlignment().getWidth()-1);null!=this.av.getGlobalColourScheme()&&(c=v(this.av.getGlobalColourScheme(),jalview.schemes.UserColourScheme)?new jalview.schemes.UserColourScheme(this.av.getGlobalColourScheme().getColours()):jalview.schemes.ColourSchemeProperty.getColour(d,jalview.schemes.ColourSchemeProperty.getColourName(this.av.getGlobalColourScheme())),null!=c&&c.setThreshold(this.av.getGlobalColourScheme().getThreshold(),this.av.isIgnoreGapsConsensus()));d.cs=c;d.setName("JTreeGroup:"+
+d.hashCode());d.setIdColour(b);null!=this.av.getGlobalColourScheme()&&this.av.getGlobalColourScheme().conservationApplied()&&(e=new jalview.analysis.Conservation("Group",jalview.schemes.ResidueProperties.propHash,3,d.getSequences(null),d.getStartRes(),d.getEndRes()),e.calculate(),e.verdict(!1,this.av.getConsPercGaps()),c.setConservation(e),d.cs=c);this.av.getAlignment().addGroup(d);this.av.getAlignment().addGroup(d);c=this.av.getCodingComplement();if(null!=c&&(d=jalview.util.MappingUtils.mapSequenceGroup(d,
+this.av,c),0<d.getSequences().size())){c.getAlignment().addGroup(d);for(var g,d=d.getSequences().iterator();d.hasNext()&&((g=d.next())||1);)c.setSequenceColour(g,b)}}this.ap.updateAnnotation();null!=this.av.getCodingComplement()&&this.av.getCodingComplement().firePropertyChange("alignment",null,this.ap.av.getAlignment().getSequences())});d(c$,"setShowDistances",function(a){this.showDistances=a;this.repaint()},"~B");d(c$,"setShowBootstrap",function(a){this.showBootstrap=a;this.repaint()},"~B");d(c$,
+"setMarkPlaceholders",function(a){this.markPlaceholders=a;this.repaint()},"~B");G(c$,"PLACEHOLDER"," * ")});p("jalview.commands");q(["jalview.commands.EditCommand"],"jalview.commands.RemoveGapColCommand",["jalview.util.Comparison"],function(){c$=s(function(){this.columnsDeleted=0;r(this,arguments)},jalview.commands,"RemoveGapColCommand",jalview.commands.EditCommand);m(c$,function(a,b,c,d,e){t(this,jalview.commands.RemoveGapColCommand,[]);this.description=a;a=b.length;var k=-1,g=-1;this.columnsDeleted=
+0;this.clearEdits();for(var h=!0,j=c;j<=d;j++){h=!0;for(c=0;c<a;c++)if(b[c].getLength()>j&&!jalview.util.Comparison.isGap(b[c].getCharAt(j))){h&&(g=j);h=!1;break}h&&-1==k&&(k=j);!h&&-1<k&&(this.appendEdit(jalview.commands.EditCommand.Action.DELETE_GAP,b,k-this.columnsDeleted,g-k,e,!1,null),this.columnsDeleted+=g-k,g=k=-1)}h&&-1<k&&(this.appendEdit(jalview.commands.EditCommand.Action.DELETE_GAP,b,k-this.columnsDeleted,d-k+1,e,!1,null),this.columnsDeleted+=d-k+1);this.performEdit(0,null)},"~S,~A,~N,~N,jalview.datamodel.AlignmentI");
+e(c$,"getSize",function(){return this.columnsDeleted})});p("jalview.commands");q(["jalview.commands.EditCommand"],"jalview.commands.RemoveGapsCommand",["jalview.util.Comparison"],function(){c$=B(jalview.commands,"RemoveGapsCommand",jalview.commands.EditCommand);m(c$,function(a,b,c){t(this,jalview.commands.RemoveGapsCommand,[]);this.description=a;for(var d=a=0;d<b.length;d++)b[d].getLength()>a&&(a=b[d].getLength());this.findGaps(b,0,a,c)},"~S,~A,jalview.datamodel.AlignmentI");m(c$,function(a,b,c,d,
+e){t(this,jalview.commands.RemoveGapsCommand,[]);this.description=a;this.findGaps(b,c,d,e)},"~S,~A,~N,~N,jalview.datamodel.AlignmentI");d(c$,"findGaps",function(a,b,c,d){var e=-1,k=-1,g=0,h,j;this.clearEdits();for(var n=!0,m,p=0;p<a.length;p++){g=0;k=e=-1;m=a[p].getSequence(b,c+1);j=m.length;for(h=0;h<j;h++)n=!0,jalview.util.Comparison.isGap(m[h])||(n&&(k=h),n=!1),n&&-1==e&&(e=h),!n&&-1<e&&(this.appendEdit(jalview.commands.EditCommand.Action.DELETE_GAP,E(-1,[a[p]]),b+e-g,k-e,d,!1,null),g+=k-e,k=e=
+-1);n&&-1<e&&this.appendEdit(jalview.commands.EditCommand.Action.DELETE_GAP,E(-1,[a[p]]),b+e-g,j-e,d,!1,null)}this.performEdit(0,null)},"~A,~N,~N,jalview.datamodel.AlignmentI")});p("jalview.commands");q(["jalview.commands.EditCommand"],"jalview.commands.SlideSequencesCommand",["jalview.util.Comparison"],function(){c$=s(function(){this.gapsInsertedBegin=!1;r(this,arguments)},jalview.commands,"SlideSequencesCommand",jalview.commands.EditCommand);m(c$,function(a,b,c,d,e){t(this,jalview.commands.SlideSequencesCommand,
+[]);this.description=a;a=b.length;this.gapsInsertedBegin=!1;var k,g;for(k=0;k<a;k++)for(g=0;g<d;g++)if(!jalview.util.Comparison.isGap(b[k].getCharAt(g))){this.gapsInsertedBegin=!0;break}a=null;a=this.gapsInsertedBegin?C(jalview.commands.EditCommand.Edit,this,null,jalview.commands.EditCommand.Action.INSERT_GAP,c,0,d,e):C(jalview.commands.EditCommand.Edit,this,null,jalview.commands.EditCommand.Action.DELETE_GAP,b,0,d,e);this.setEdit(a);jalview.commands.EditCommand.performEdit(a,null)},"~S,~A,~A,~N,~S");
+d(c$,"getGapsInsertedBegin",function(){return this.gapsInsertedBegin});d(c$,"appendSlideCommand",function(a){var b=!1;if(a.getEdit(0).seqs.length==this.getEdit(0).seqs.length)for(var b=!0,c=0;c<a.getEdit(0).seqs.length;c++)this.getEdit(0).seqs[c]!==a.getEdit(0).seqs[c]&&(b=!1);b&&a.addEdit(this.getEdit(0));return b},"jalview.commands.SlideSequencesCommand")});p("jalview.commands");q(["jalview.commands.EditCommand"],"jalview.commands.TrimRegionCommand",null,function(){c$=s(function(){this.deletedHiddenColumns=
+this.selectionGroup=this.shiftList=this.start=this.colSel=null;this.columnsDeleted=0;r(this,arguments)},jalview.commands,"TrimRegionCommand",jalview.commands.EditCommand);m(c$,function(a,b,c,d,e,k,g){t(this,jalview.commands.TrimRegionCommand,[]);this.description=a;this.selectionGroup=g;this.colSel=k;if(b.equalsIgnoreCase(jalview.commands.TrimRegionCommand.TRIM_LEFT)){if(0==d)return;this.columnsDeleted=d;this.setEdit(C(jalview.commands.EditCommand.Edit,this,null,jalview.commands.EditCommand.Action.CUT,
+c,0,d,e))}else if(b.equalsIgnoreCase(jalview.commands.TrimRegionCommand.TRIM_RIGHT)){a=e.getWidth()-d-1;if(2>a)return;this.columnsDeleted=a-1;this.setEdit(C(jalview.commands.EditCommand.Edit,this,null,jalview.commands.EditCommand.Action.CUT,c,d+1,a,e))}d=this.getEdit(0).seqs.length;this.start=w(d,0);for(c=0;c<d;c++)this.start[c]=this.getEdit(0).seqs[c].getStart();this.performEdit(0,null)},"~S,~S,~A,~N,jalview.datamodel.AlignmentI,jalview.datamodel.ColumnSelection,jalview.datamodel.SequenceGroup");
+d(c$,"cut",function(a){var b,c,d=a.seqs.length;for(c=0;c<d;c++)0==a.position?(b=a.seqs[c].findPosition(a.number),a.seqs[c].setStart(b)):(b=a.seqs[c].findPosition(a.position)-1,a.seqs[c].setEnd(b));K(this,jalview.commands.TrimRegionCommand,"cut",[a,null]);0==a.position?(this.deletedHiddenColumns=this.colSel.compensateForEdit(0,a.number),null!=this.selectionGroup&&this.selectionGroup.adjustForRemoveLeft(a.number)):(this.deletedHiddenColumns=this.colSel.compensateForEdit(a.position,a.number),null!=this.selectionGroup&&
+this.selectionGroup.adjustForRemoveRight(a.position))},"jalview.commands.EditCommand.Edit");d(c$,"paste",function(a){K(this,jalview.commands.TrimRegionCommand,"paste",[a,null]);var b,c,d=a.seqs.length;for(c=0;c<d;c++)0==a.position?a.seqs[c].setStart(this.start[c]):(b=a.seqs[c].findPosition(a.number+a.position)-1,a.seqs[c].setEnd(b));0==a.position&&(this.colSel.compensateForEdit(0,-a.number),null!=this.selectionGroup&&this.selectionGroup.adjustForRemoveLeft(-a.number));if(null!=this.deletedHiddenColumns)for(b=
+0;b<this.deletedHiddenColumns.size();b++)a=this.deletedHiddenColumns.get(b),this.colSel.hideColumns(a[0],a[1])},"jalview.commands.EditCommand.Edit");e(c$,"getSize",function(){return this.columnsDeleted});G(c$,"TRIM_LEFT","TrimLeft","TRIM_RIGHT","TrimRight")});p("jalview.controller");q(["jalview.api.AlignViewControllerI"],"jalview.controller.AlignViewController","jalview.analysis.AlignmentSorter $.Grouping jalview.commands.OrderCommand jalview.datamodel.ColumnSelection jalview.io.FeaturesFile jalview.util.MessageManager java.awt.Color java.util.ArrayList $.BitSet".split(" "),
+function(){c$=s(function(){this.avcg=this.alignPanel=this.viewport=null;r(this,arguments)},jalview.controller,"AlignViewController",null,jalview.api.AlignViewControllerI);e(c$,"finalize",function(){this.avcg=this.alignPanel=this.viewport=null});m(c$,function(a,b,c){this.avcg=a;this.viewport=b;this.alignPanel=c},"jalview.api.AlignViewControllerGuiI,jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");e(c$,"setViewportAndAlignmentPanel",function(a,b){this.alignPanel=b;this.viewport=a},"jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");
+e(c$,"makeGroupsFromSelection",function(){var a=this.viewport.getSelectionGroup(),b=this.viewport.getColumnSelection(),c=null;null!=a&&(null==b||null==b.getSelected()||0==b.size())?c=jalview.analysis.Grouping.makeGroupsFrom(this.viewport.getSequenceSelection(),this.viewport.getAlignmentView(!0).getSequenceStrings(this.viewport.getGapCharacter()),this.viewport.getAlignment().getGroups()):null!=b&&(c=jalview.analysis.Grouping.makeGroupsFromCols(null==a?this.viewport.getAlignment().getSequencesArray():
+a.getSequences().toArray([]),b,this.viewport.getAlignment().getGroups()));if(null!=c){this.viewport.getAlignment().deleteAllGroups();this.viewport.clearSequenceColours();this.viewport.setSelectionGroup(null);for(a=0;a<c.length;a++){c[a].setshowSequenceLogo(this.viewport.isShowSequenceLogo());this.viewport.getAlignment().addGroup(c[a]);for(var b=new java.awt.Color(F(255*Math.random()),F(255*Math.random()),F(255*Math.random())),b=b.brighter(),d,e=c[a].getSequences(null).iterator();e.hasNext()&&((d=
+e.next())||1);)this.viewport.setSequenceColour(d,b)}return!0}return!1});e(c$,"createGroup",function(){var a=this.viewport.getSelectionGroup();return null!=a?(this.viewport.getAlignment().addGroup(a),!0):!1});e(c$,"unGroup",function(){var a=this.viewport.getSelectionGroup();return null!=a?(this.viewport.getAlignment().deleteGroup(a),!0):!1});e(c$,"deleteGroups",function(){return null!=this.viewport.getAlignment().getGroups()&&0<this.viewport.getAlignment().getGroups().size()?(this.viewport.getAlignment().deleteAllGroups(),
+this.viewport.clearSequenceColours(),this.viewport.setSelectionGroup(null),!0):!1});e(c$,"markColumnsContainingFeatures",function(a,b,c,d){var e=new java.util.BitSet,k,g,h=null==this.viewport.getSelectionGroup()?this.viewport.getAlignment():this.viewport.getSelectionGroup();g=h.getStartRes();k=h.getEndRes()+1;for(var j=0,n,m=h.getSequences().iterator();m.hasNext()&&((n=m.next())||1);){var p=0;if(null!=n){h=n.getSequenceFeatures();if(null!=h){var q=n.findIndex(n.getStart());if(n.findIndex(n.getEnd())<
+g||q>k)continue;for(var r,s=0,t=h;s<t.length&&((r=t[s])||1);s++)if(null!=r&&d.equals(r.getType())){p++;var h=n.findIndex(r.getBegin()),v=n.findIndex(r.getEnd());if(!(v<g||h>k)){h<g&&(h=g);h<q&&(h=q);for(v>k&&(v=k);h<=v;h++)e.set(h-1)}}}0<p&&j++}}n=this.viewport.getColumnSelection();if(0<e.cardinality()||a){null==n?n=new jalview.datamodel.ColumnSelection:b||n.clear();if(a){h=e.nextClearBit(g);for(b=e.nextSetBit(g);h>=g&&h<k;)0>b||h<b?c&&n.contains(h)?n.removeElement(h++):n.addElement(h++):(h=e.nextClearBit(b),
+b=e.nextSetBit(h))}else for(h=e.nextSetBit(g);h>=g;h=e.nextSetBit(h+1))c&&n.contains(h)?n.removeElement(h):n.addElement(h);this.viewport.setColumnSelection(n);this.alignPanel.paintAlignment(!0);this.avcg.setStatus(jalview.util.MessageManager.formatMessage("label.view_controller_toggled_marked",E(-1,[c?jalview.util.MessageManager.getString("label.toggled"):jalview.util.MessageManager.getString("label.marked"),a?Integer.$valueOf(k-g-e.cardinality()).toString():Integer.$valueOf(e.cardinality()).toString(),
+d,Integer.$valueOf(j).toString()])));return!0}this.avcg.setStatus(jalview.util.MessageManager.formatMessage("label.no_feature_of_type_found",E(-1,[d])));!b&&null!=n&&(n.clear(),this.alignPanel.paintAlignment(!0));return!1},"~B,~B,~B,~S");e(c$,"sortAlignmentByFeatureDensity",function(a){this.sortBy(a,"Sort by Density",jalview.analysis.AlignmentSorter.FEATURE_DENSITY)},"~A");d(c$,"sortBy",function(a,b,c){var d=this.alignPanel.getFeatureRenderer();null==a&&(a=null==d?null:d.getDisplayedFeatureTypes());
+var e=null,e=null==d?null:d.getDisplayedFeatureGroups();if(null!=a)for(var k=new java.util.ArrayList,d=0;d<a.length;d++)null!=a[d]&&k.add(a[d]),a=Array(k.size()),k.toArray(a);if(null!=e){k=new java.util.ArrayList;for(d=0;d<e.length;d++)null!=e[d]&&k.add(e[d]);e=Array(k.size());k.toArray(e)}var d=this.viewport.getAlignment(),g;g=this.viewport.getSelectionGroup();null!=g?(k=g.getStartRes(),g=g.getEndRes()):(k=0,g=d.getWidth());var h=d.getSequencesArray();jalview.analysis.AlignmentSorter.sortByFeature(a,
+e,k,g,d,c);this.avcg.addHistoryItem(new jalview.commands.OrderCommand(b,h,this.viewport.getAlignment()));this.alignPanel.paintAlignment(!0)},"~A,~S,~S");e(c$,"sortAlignmentByFeatureScore",function(a){this.sortBy(a,"Sort by Feature Score",jalview.analysis.AlignmentSorter.FEATURE_SCORE)},"~A");e(c$,"parseFeaturesFile",function(a,b,c){var d=!1;try{d=(new jalview.io.FeaturesFile(a,b)).parse(this.viewport.getAlignment().getDataset(),this.alignPanel.getFeatureRenderer().getFeatureColours(),!1,c)}catch(e){if(y(e,
+Exception))e.printStackTrace();else throw e;}d&&(this.avcg.refreshFeatureUI(!0),null!=this.alignPanel.getFeatureRenderer()&&this.alignPanel.getFeatureRenderer().findAllFeatures(!0),null!=this.avcg.getFeatureSettingsUI()&&this.avcg.getFeatureSettingsUI().discoverAllFeatureData(),this.alignPanel.paintAlignment(!0));return d},"~S,~S,~B")});p("jalview.api");M(jalview.api,"AlignViewControllerI");p("jalview.analysis");q(null,"jalview.analysis.Grouping",["jalview.datamodel.SequenceGroup","java.lang.StringBuilder",
+"java.util.ArrayList","$.HashMap"],function(){c$=B(jalview.analysis,"Grouping");c$.makeGroupsFrom=d(c$,"makeGroupsFrom",function(a,b,c){var d=new java.util.HashMap,e=0,k,g=new java.util.HashMap;if(null!=c)for(c=c.iterator();c.hasNext()&&((k=c.next())||1);)for(var h,j=k.getSequences(null).iterator();j.hasNext()&&((h=j.next())||1);)g.put(h.toString(),k);for(k=0;k<a.length;k++)h=b[k],c=g.get(a[k].toString()),null!=c&&(h=c.getName()+":"+h),c=d.get(h),null==c&&(c=new java.util.ArrayList,d.put(h,c)),e<
+a[k].getLength()&&(e=a[k].getLength()),c.add(a[k]);a=Array(d.size());k=0;var n;for(b=d.keySet().iterator();b.hasNext()&&((n=b.next())||1);)h=new jalview.datamodel.SequenceGroup(d.get(n),"Subseq: "+n,null,!0,!0,!1,0,e-1),a[k++]=h;d.clear();g.clear();return a},"~A,~A,java.util.List");c$.makeGroupsFromCols=d(c$,"makeGroupsFromCols",function(a,b,c){var d=new java.util.HashMap,e=new java.util.HashMap;if(null!=c){var k;for(c=c.iterator();c.hasNext()&&((k=c.next())||1);)for(var g,h=k.getSequences(null).iterator();h.hasNext()&&
+((g=h.next())||1);)e.put(g.toString(),k)}c=w(b.getSelected().size(),0);k=-1;g=0;var j;for(b=b.getSelected().iterator();b.hasNext()&&((j=b.next())||1);)c[g++]=j.intValue();for(g=0;g<a.length;g++){b=a[g].getLength();k<b&&(k=b);h=e.get(a[g].toString());j=new StringBuilder;null!=h&&j.append(h.getName()+":");for(var n,h=0,m=c;h<m.length&&((n=m[h])||1);h++)n>=b?j.append("~"):j.append(a[g].getCharAt(n));b=d.get(j.toString());null==b&&(b=new java.util.ArrayList,d.put(j.toString(),b));b.add(a[g])}a=Array(d.size());
+g=0;var p;for(n=d.keySet().iterator();n.hasNext()&&((p=n.next())||1);)c=new jalview.datamodel.SequenceGroup(d.get(p),"Subseq: "+p,null,!0,!0,!1,0,k-1),a[g++]=c;d.clear();e.clear();return a},"~A,jalview.datamodel.ColumnSelection,java.util.List");c$.divideByFeature=d(c$,"divideByFeature",function(){},"~A,~A,~N,~N,~A,java.util.Vector,~S")});p("jalview.io");q(null,"jalview.io.AlignmentProperties",["java.lang.StringBuffer"],function(){c$=s(function(){this.alignment=null;r(this,arguments)},jalview.io,"AlignmentProperties");
+m(c$,function(a){this.alignment=a},"jalview.datamodel.AlignmentI");d(c$,"writeProperties",function(a,b){for(var c=b?"<br>":System.getProperty("line.separator"),d=0,e=2147483647,k=0,g=0;g<this.alignment.getHeight();g++){var h=1+this.alignment.getSequenceAt(g).getEnd()-this.alignment.getSequenceAt(g).getStart(),d=d+h;h>k&&(k=h);h<e&&(e=h)}d/=this.alignment.getHeight();a.append(c);a.append("Sequences: "+this.alignment.getHeight());a.append(c);a.append("Minimum Sequence Length: "+e);a.append(c);a.append("Maximum Sequence Length: "+
+k);a.append(c);a.append("Average Length: "+I(d));if(null!=this.alignment.alignmentProperties){a.append(c);a.append(c);b&&a.append('<table border="1">');d=this.alignment.alignmentProperties;for(e=d.keys();e.hasMoreElements();)if(k=e.nextElement().toString(),g=d.get(k).toString(),b){var h=new StringBuffer,j=0,n;do n=g.indexOf("\n",j),-1==n?h.append(g.substring(j)):(h.append(g.substring(j,n)),h.append("<br>")),j=n+1;while(-1!=n);a.append("<tr><td>"+k+"</td><td>"+h+"</td></tr>")}else a.append(c+k+"\t"+
+g);b&&a.append("</table>")}},"StringBuffer,~B");d(c$,"formatAsString",function(){return this.formatReport(!1)});d(c$,"formatReport",function(a){var b=new StringBuffer;this.writeProperties(b,a);return b},"~B");d(c$,"formatAsHtml",function(){return this.formatReport(!0)})});p("jalview.schemes");q(null,"jalview.schemes.RNAHelicesColourChooser",["jalview.schemes.RNAHelicesColour","java.util.Hashtable","$.Vector"],function(){c$=s(function(){this.currentAnnotation=this.oldgroupColours=this.oldcs=this.ap=
+this.av=null;this.adjusting=!1;r(this,arguments)},jalview.schemes,"RNAHelicesColourChooser");m(c$,function(a,b){this.oldcs=a.getGlobalColourScheme();if(null!=a.getAlignment().getGroups()){this.oldgroupColours=new java.util.Hashtable;for(var c,d=b.getAlignment().getGroups().iterator();d.hasNext()&&((c=d.next())||1);)null!=c.cs&&this.oldgroupColours.put(c,c.cs)}this.av=a;this.ap=b;v(this.oldcs,jalview.schemes.RNAHelicesColour);this.adjusting=!0;c=new java.util.Vector;for(var d=1,e=0;e<a.getAlignment().getAlignmentAnnotation().length;e++){var k=
+a.getAlignment().getAlignmentAnnotation()[e].label;c.contains(k)?c.addElement(k+"_"+d++):c.addElement(k)}this.adjusting=!1;this.changeColour()},"jalview.api.AlignViewportI,jalview.api.AlignmentViewPanel");d(c$,"changeColour",function(){if(!this.adjusting){var a=null,a=new jalview.schemes.RNAHelicesColour(this.av.getAlignment());this.av.setGlobalColourScheme(a);if(null!=this.av.getAlignment().getGroups())for(var b,a=this.ap.getAlignment().getGroups().iterator();a.hasNext()&&((b=a.next())||1);)null!=
+b.cs&&(b.cs=new jalview.schemes.RNAHelicesColour(b));this.ap.paintAlignment(!1)}});d(c$,"reset",function(){this.av.setGlobalColourScheme(this.oldcs);if(null!=this.av.getAlignment().getGroups())for(var a,b=this.ap.getAlignment().getGroups().iterator();b.hasNext()&&((a=b.next())||1);)a.cs=this.oldgroupColours.get(a)});d(c$,"annotations_actionPerformed",function(){this.changeColour()},"java.awt.event.ActionEvent")});p("jalview.schemes");q(["jalview.schemes.ResidueColourScheme"],"jalview.schemes.RNAInteractionColourScheme",
+["jalview.schemes.ResidueProperties","java.awt.Color"],function(){c$=B(jalview.schemes,"RNAInteractionColourScheme",jalview.schemes.ResidueColourScheme);e(c$,"findColour",function(a){return this.colors[jalview.schemes.ResidueProperties.nucleotideIndex[a.charCodeAt(0)]]},"~S");e(c$,"findColourSeq",function(a,b){var c;if(0==this.threshold||this.aboveThreshold(a,b))try{c=this.colors[jalview.schemes.ResidueProperties.nucleotideIndex[a.charCodeAt(0)]]}catch(d){if(y(d,Exception))return java.awt.Color.white;
+throw d;}else return java.awt.Color.white;this.conservationColouring&&(c=this.applyConservation(c,b));return c},"~S,~N,jalview.datamodel.SequenceI")});p("java.net");c$=B(java.net,"URLEncoder");c$.encode=d(c$,"encode",function(a){return encodeURIComponent(a)},"~S");c$.encode=d(c$,"encode",function(a){return encodeURIComponent(a)},"~S,~S");G(c$,"digits","0123456789ABCDEF");p("jalview.io");q(null,"jalview.io.JnetAnnotationMaker",["jalview.datamodel.AlignmentAnnotation","$.Annotation","jalview.util.MessageManager",
+"java.lang.Exception","$.Float"],function(){c$=B(jalview.io,"JnetAnnotationMaker");c$.add_annotation=d(c$,"add_annotation",function(a,b,c,d){jalview.io.JnetAnnotationMaker.add_annotation(a,b,c,d,ha("Array"))},"jalview.io.AlignFile,jalview.datamodel.AlignmentI,~N,~B");c$.add_annotation=d(c$,"add_annotation",function(a,b,c,d,e){var k=0;a=a.getSeqsAsArray();var g=b.getSequenceAt(c),h=a[0].getSequence().length,j=b.getSequenceAt(c).gapMap();if(null!=e&&e.length>h||null==e&&j.length!=h)throw new Exception(jalview.util.MessageManager.formatMessage("exception.number_of_residues_in_query_sequence_differ_from_prediction",
+E(-1,[null==e?"":jalview.util.MessageManager.getString("label.mapped"),b.getSequenceAt(c).getName(),b.getSequenceAt(c).getSequenceAsString(),Integer.$valueOf(h).toString()])));var n;n=null;c=0;null!=b.getAlignmentAnnotation()&&(c=b.getAlignmentAnnotation().length);for(var m=Array(b.getWidth()),p=!0;k<a.length;){var q=a[k].getName().toUpperCase();if(q.startsWith("LUPAS")||q.startsWith("JNET")||q.startsWith("JPRED")){if(q.startsWith("JNETSOL")){n=q.endsWith("25")?3:q.endsWith("5")?6:9;for(q=0;q<h;q++){var r=
+null==e?j[q]:j[e[q]];p&&(m[r]=new jalview.datamodel.Annotation(0));if("B"==a[k].getCharAt(q)&&(0==m[r].value||m[r].value<n))m[r].value=n}p=!1}else{n=Array(b.getWidth());if(q.equals("JNETPRED")||q.equals("JNETPSSM")||q.equals("JNETFREQ")||q.equals("JNETHMM")||q.equals("JNETALIGN")||q.equals("JPRED"))if(null==e)for(r=0;r<h;r++)n[j[r]]=new jalview.datamodel.Annotation("","",a[k].getCharAt(r),0);else for(r=0;r<h;r++)n[j[e[r]]]=new jalview.datamodel.Annotation("","",a[k].getCharAt(r),0);else if(q.equals("JNETCONF"))if(null==
+e)for(r=0;r<h;r++){var s=(new Float(a[k].getCharAt(r)+"")).floatValue();n[j[r]]=new jalview.datamodel.Annotation(a[k].getCharAt(r)+"","",a[k].getCharAt(r),s)}else for(r=0;r<h;r++)s=(new Float(a[k].getCharAt(r)+"")).floatValue(),n[j[e[r]]]=new jalview.datamodel.Annotation(a[k].getCharAt(r)+"","",a[k].getCharAt(r),s);else if(null==e)for(r=0;r<h;r++)n[j[r]]=new jalview.datamodel.Annotation(a[k].getCharAt(r)+"",""," ",0);else for(r=0;r<h;r++)n[j[e[r]]]=new jalview.datamodel.Annotation(a[k].getCharAt(r)+
+"",""," ",0);n=q.equals("JNETCONF")?new jalview.datamodel.AlignmentAnnotation(a[k].getName(),"JNet Output",n,0,10,1):new jalview.datamodel.AlignmentAnnotation(a[k].getName(),"JNet Output",n);null!=g&&(n.createSequenceMapping(g,1,!0),g.addAlignmentAnnotation(n));b.addAnnotation(n);b.setAnnotationIndex(n,b.getAlignmentAnnotation().length-c-1)}d&&b.deleteSequence(a[k])}k++}p||(n=new jalview.datamodel.AlignmentAnnotation("Jnet Burial","<html>Prediction of Solvent Accessibility<br/>levels are<ul><li>0 - Exposed</li><li>3 - 25% or more S.A. accessible</li><li>6 - 5% or more S.A. accessible</li><li>9 - Buried (<5% exposed)</li></ul>",
+m,0,9,1),n.validateRangeAndDisplay(),null!=g&&(n.createSequenceMapping(g,1,!0),g.addAlignmentAnnotation(n)),b.addAnnotation(n),b.setAnnotationIndex(n,b.getAlignmentAnnotation().length-c-1))},"jalview.io.AlignFile,jalview.datamodel.AlignmentI,~N,~B,~A")});p("jalview.javascript");q(null,"jalview.javascript.JSFunctionExec","jalview.bin.JalviewLite java.lang.StringBuffer $.Thread java.net.MalformedURLException $.URL netscape.javascript.JSException $.JSObject".split(" "),function(){c$=s(function(){this.executor=
+this.jsExecQueue=this.jvlite=null;r(this,arguments)},jalview.javascript,"JSFunctionExec",null,Runnable);m(c$,function(a){this.jvlite=a;this.jsExecQueue=this.jvlite.getJsExecQueue();this.jvlite.setExecutor(this)},"jalview.bin.JalviewLite");e(c$,"finalize",function(){this.executor=this.jvlite=null;null!=this.jsExecQueue&&this.jsExecQueue.clear();this.jsExecQueue=null});d(c$,"stopQueue",function(){if(null!=this.jsExecQueue){var a=null,a=this.jsExecQueue;this.jsExecQueue=null;if(null!=a){for(var b,c=
+a.iterator();c.hasNext()&&((b=c.next())||1);)b.jvlite=null;a.removeAllElements();a.notifyAll()}}this.executor=this.jvlite=null});d(c$,"run",function(){for(;null!=this.jsExecQueue;)if(0<this.jsExecQueue.size()){var a=this.jsExecQueue.elementAt(0);this.jsExecQueue.removeElementAt(0);try{a.run()}catch(b){if(y(b,Exception))a=b,a.printStackTrace();else if(y(b,Error))a=b,a.printStackTrace();else throw b;}}else try{this.jsExecQueue.wait(1E3)}catch(c){if(!y(c,Exception))throw c;}});d(c$,"executeJavascriptFunction",
+function(a,b){this.executeJavascriptFunction(!1,a,b)},"~S,~A");d(c$,"executeJavascriptFunction",function(a,b,c){this.executeJavascriptFunction(a,b,c,null)},"~B,~S,~A");d(c$,"executeJavascriptFunction",function(a,b,c,d){var e=Array(null!=c?c.length:0);null!=c&&System.arraycopy(c,0,e,0,c.length);c=Array(1);b=(H("jalview.javascript.JSFunctionExec$1")?0:jalview.javascript.JSFunctionExec.$JSFunctionExec$1$(),C(jalview.javascript.JSFunctionExec$1,this,T("dbgMsg",d,"_listener",b,"objects",e,"jsex",c,"async",
+a)));if(a)null==this.executor&&(this.executor=new Thread(new jalview.javascript.JSFunctionExec(this.jvlite)),this.executor.start()),this.jsExecQueue.addElement(b),this.jsExecQueue.notify();else if(b.run(),null!=c[0])throw c[0];},"~B,~S,~A,~S");c$.$JSFunctionExec$1$=function(){A(self.c$);c$=L(jalview.javascript,"JSFunctionExec$1",null,Runnable);d(c$,"run",function(){try{var a=null;try{a=netscape.javascript.JSObject.getWindow(this.b$["jalview.javascript.JSFunctionExec"].jvlite)}catch(b){if(!y(b,Exception))throw b;
+}null!=a&&(jalview.bin.JalviewLite.debug&&null!=this.f$.dbgMsg&&System.err.println(this.f$.dbgMsg),a.call(this.f$._listener,this.f$.objects))}catch(c){if(y(c,Exception)){if(!v(c,java.net.MalformedURLException)){jalview.bin.JalviewLite.debug&&System.err.println(c);if(v(c,netscape.javascript.JSException)&&this.b$["jalview.javascript.JSFunctionExec"].jvlite.jsfallbackEnabled){this.f$.jsex[0]=c;jalview.bin.JalviewLite.debug&&System.err.println("Falling back to javascript: url call");for(var a=new StringBuffer("javascript:"+
+this.f$._listener+"("),d=0;null!=this.f$.objects&&d<this.f$.objects.length;d++)0<d&&a.append(","),a.append('"'),null!=this.f$.objects[d]&&0!=this.f$.objects[d].getClass().getName().indexOf("jalview")&&a.append(this.f$.objects[d].toString()),a.append('"');a.append(")");jalview.bin.JalviewLite.debug&&System.err.println(a.toString());d=null;try{d=new java.net.URL(a.toString()),this.b$["jalview.javascript.JSFunctionExec"].jvlite.getAppletContext().showDocument(d),c=null}catch(e){if(y(e,Exception))c=e;
+else throw e;}}null!=c&&(this.f$.async?c.printStackTrace():this.f$.jsex[0]=c)}}else throw c;}});c$=z()}});p("netscape.javascript");q(["java.lang.Exception"],"netscape.javascript.JSException",null,function(){c$=B(netscape.javascript,"JSException",Exception)});p("netscape.javascript");c$=B(netscape.javascript,"JSObject");c$.getWindow=d(c$,"getWindow",function(){return window},"jalview.bin.JalviewLite");d(c$,"call",function(a,b){alert("call "+a);a.apply(null,b)},"~S,~A");d(c$,"eval",function(a){alert("evval "+
+a);return this.eval(a)},"~S");p("jalview.javascript");q(["jalview.javascript.JSFunctionExec","$.JsCallBack","jalview.structure.SelectionListener"],"jalview.javascript.JsSelectionSender",["jalview.appletgui.AlignViewport","netscape.javascript.JSException"],function(){c$=s(function(){this._listener=this._af=null;r(this,arguments)},jalview.javascript,"JsSelectionSender",jalview.javascript.JSFunctionExec,[jalview.structure.SelectionListener,jalview.javascript.JsCallBack]);m(c$,function(a,b,c){t(this,
+jalview.javascript.JsSelectionSender,[a]);this._af=b;this._listener=c},"jalview.bin.JalviewLite,jalview.appletgui.AlignFrame,~S");e(c$,"selection",function(a,b,c){try{var d=this._af;null!=c&&(v(c,jalview.appletgui.AlignViewport)&&c.applet.currentAlignFrame.viewport===c)&&(d=c.applet.currentAlignFrame);var e=E(-1,[]),k=E(-1,[]);c=0;var g=null==d?-1:d.alignPanel.av.getAlignment().getWidth();if(null!=a&&0<a.getSize()){for(var e=Array(a.getSize()),h=0;h<e.length;h++)e[h]=a.getSequenceAt(h).getName();
+c<a.getStartRes()&&(c=a.getStartRes());if(-1==g||g>a.getEndRes())g=a.getEndRes()}if(null!=b&&0<b.size()){-1==g&&b.getMax();k=Array(b.getSelected().size());for(h=0;h<k.length;h++)k[h]=""+(1+b.getSelected().elementAt(h).intValue())}else null!=a&&0<a.getSize()&&(k=Array(2),k[0]=""+(1+c)+"-"+(1+g));System.err.println("Relaying selection to jsfunction:"+this._listener);this.executeJavascriptFunction(this._listener,E(-1,[d,"",this.jvlite.arrayToSeparatorList(e),this.jvlite.arrayToSeparatorList(k)]))}catch(j){if(y(j,
+Exception))System.err.println("Jalview Javascript exec error: Couldn't send selection message using function '"+this._listener+"'"),j.printStackTrace(),v(j,netscape.javascript.JSException)&&System.err.println("Javascript Exception: "+j.getCause().toString());else throw j;}},"jalview.datamodel.SequenceGroup,jalview.datamodel.ColumnSelection,jalview.structure.SelectionSource");e(c$,"getAlignFrame",function(){return this._af});e(c$,"getListenerFunction",function(){return this._listener})});p("jalview.javascript");
+M(jalview.javascript,"JsCallBack");p("jalview.javascript");q(["jalview.javascript.JSFunctionExec","$.JsCallBack","jalview.structure.VamsasListener"],"jalview.javascript.MouseOverListener",["jalview.appletgui.AlignViewport","netscape.javascript.JSException"],function(){c$=s(function(){this.last=this._listener=this._af=null;this.i=-1;r(this,arguments)},jalview.javascript,"MouseOverListener",jalview.javascript.JSFunctionExec,[jalview.structure.VamsasListener,jalview.javascript.JsCallBack]);e(c$,"mouseOverSequence",
+function(a,b,c){if(a!==this.last||this.i!=b){this.last=a;this.i=b;b=null;try{null!=c&&(v(c,jalview.appletgui.AlignViewport)&&c.applet.currentAlignFrame.viewport===c)&&(b=c.applet.currentAlignFrame),this.executeJavascriptFunction(this._listener,E(-1,[b,a.getDisplayId(!1),""+(1+this.i),""+a.findPosition(this.i)]))}catch(d){if(y(d,Exception))System.err.println("JalviewLite javascript error: Couldn't send mouseOver with handler '"+this._listener+"'"),v(d,netscape.javascript.JSException)&&System.err.println("Javascript Exception: "+
+d.getMessage()),d.printStackTrace();else throw d;}}},"jalview.datamodel.SequenceI,~N,jalview.structure.VamsasSource");m(c$,function(a,b,c){t(this,jalview.javascript.MouseOverListener,[a]);this._af=b;this._listener=c},"jalview.bin.JalviewLite,jalview.appletgui.AlignFrame,~S");e(c$,"getAlignFrame",function(){return this._af});e(c$,"getListenerFunction",function(){return this._listener})});p("jalview.javascript");q(["jalview.javascript.JSFunctionExec","$.JsCallBack","jalview.structure.StructureListener"],
+"jalview.javascript.MouseOverStructureListener","jalview.api.AlignmentViewPanel jalview.appletgui.FeatureRenderer jalview.ext.jmol.JmolCommands jalview.structure.StructureSelectionManager java.net.URL java.util.ArrayList".split(" "),function(){c$=s(function(){this.modelSet=this._listenerfn=null;r(this,arguments)},jalview.javascript,"MouseOverStructureListener",jalview.javascript.JSFunctionExec,[jalview.javascript.JsCallBack,jalview.structure.StructureListener]);m(c$,function(a,b,c){t(this,jalview.javascript.MouseOverStructureListener,
+[a]);this._listenerfn=b;this.modelSet=c;if(null!=this.modelSet)for(a=0;a<this.modelSet.length;a++){try{if(null!=(new java.net.URL(this.modelSet[a])).openConnection())continue}catch(d){if(!y(d,Exception))throw d;}try{var e=this.jvlite.getDocumentBase().toString(),e=e.substring(0,e.lastIndexOf("/"));if(null!=(new java.net.URL(e+"/"+this.modelSet[a])).openConnection()){this.modelSet[a]=e+"/"+this.modelSet[a];continue}}catch(k){if(!y(k,Exception))throw k;}try{null!=(new java.net.URL(this.jvlite.getCodeBase()+
+this.modelSet[a])).openConnection()&&(this.modelSet[a]=this.jvlite.getCodeBase()+this.modelSet[a])}catch(g){if(!y(g,Exception))throw g;}}},"jalview.bin.JalviewLite,~S,~A");e(c$,"getPdbFile",function(){return this.modelSet});d(c$,"mouseOverStructure",function(){},"~N,~S");e(c$,"highlightAtoms",function(a){var b;for(a=a.iterator();a.hasNext()&&((b=a.next())||1);)try{this.executeJavascriptFunction(this._listenerfn,E(-1,["mouseover",""+b.getPdbFile(),""+b.getChain(),""+b.getPdbResNum(),""+b.getAtomIndex()]))}catch(c){if(y(c,
+Exception))System.err.println("Couldn't execute callback with "+this._listenerfn+" for atomSpec: "+b),c.printStackTrace();else throw c;}},"java.util.List");e(c$,"updateColours",function(a){var b=jalview.structure.StructureSelectionManager.getStructureSelectionManager(this.jvlite);if(v(a,jalview.api.AlignmentViewPanel)){for(var c=Array(this.modelSet.length),d=0;d<this.modelSet.length;d++){var e=b.getMapping(this.modelSet[d]);if(null!=e&&0<e.length){c[d]=Array(e.length);for(var k=0;k<e.length;k++)c[d][k]=
+e[k].getSequence()}else c[d]=[]}var k=a.getSequenceRenderer(),g=a.av.isShowSequenceFeatures()?new jalview.appletgui.FeatureRenderer(a.av):null;null!=g&&g.transferSettings(a.getFeatureRenderer());e=new java.util.ArrayList;d=new java.util.ArrayList;k=jalview.ext.jmol.JmolCommands.getColourBySequenceCommand(b,this.modelSet,c,k,g,a.getAlignment());if(null!=k){for(var b=0,h,c=0;c<k.length&&((h=k[c])||1);c++)b+=h.commands.length,e.add(h.commands),d.add(h.mapping);k=Array(b);b=0;for(c=e.iterator();c.hasNext()&&
+((h=c.next())||1);)System.arraycopy(h,0,k,b,h.length),b+=h.length;if(this.jvlite.isJsMessageSetChanged("colourstruct",h=a.av.getViewId(),k)){this.jvlite.setJsMessageSet("colourstruct",h,k);a=E(-1,["colourstruct",""+a.av.getViewId(),""+k.length,this.jvlite.arrayToSeparatorList(d.toArray(Array(d.size())))]);try{this.executeJavascriptFunction(!0,this._listenerfn,a)}catch(j){if(y(j,Exception))System.err.println("Couldn't execute callback with "+this._listenerfn+" using args { "+a[0]+", "+a[1]+", "+a[2]+
+","+a[3]+"}"),j.printStackTrace();else throw j;}}}}},"~O");e(c$,"getAlignFrame",function(){return null});e(c$,"getListenerFunction",function(){return this._listenerfn});d(c$,"finalise",function(){this.jvlite=null;K(this,jalview.javascript.MouseOverStructureListener,"finalize",[])});e(c$,"releaseReferences",function(){},"~O");e(c$,"isListeningFor",function(){return!0},"jalview.datamodel.SequenceI")});p("jalview.ext.jmol");q(null,"jalview.ext.jmol.JmolCommands",["jalview.structure.StructureMappingcommandSet",
+"jalview.util.Comparison","java.lang.StringBuffer","java.util.ArrayList"],function(){c$=B(jalview.ext.jmol,"JmolCommands");c$.getColourBySequenceCommand=d(c$,"getColourBySequenceCommand",function(a,b,c,d,e,k){for(var g=new java.util.ArrayList,h=0;h<b.length;h++){var j=a.getMapping(b[h]),n=new StringBuffer,m=new java.util.ArrayList;if(!(null==j||1>j.length)){for(var p=-1,q=0;q<c[h].length;q++)for(var r,s=0;s<j.length;s++)if(j[s].getSequence()===c[h][q]&&-1<(r=k.findIndex(c[h][q]))){for(var t=k.getSequenceAt(r),
+v=0;v<t.getLength();v++)if(!jalview.util.Comparison.isGap(t.getCharAt(v))){var w=j[s].getPDBResNum(t.findPosition(v));if(!(1>w||w==p)){var p=w,y=d.getResidueBoxColour(c[h][q],v);null!=e&&(y=e.findFeatureColour(y,c[h][q],v));y=(" "!==j[s].getChain()?":"+j[s].getChain():"")+"/"+(h+1)+".1;color["+y.getRed()+","+y.getGreen()+","+y.getBlue()+"]";n.length()>y.length&&n.substring(n.length()-y.length).equals(y)?n=jalview.ext.jmol.JmolCommands.condenseCommand(n,w):(n.append(";"),51200<n.length()&&(m.add(n.toString()),
+n.setLength(0)),n.append("select "+w),n.append(y))}}break}m.add(n.toString());n.setLength(0);g.add(new jalview.structure.StructureMappingcommandSet(jalview.ext.jmol.JmolCommands,b[h],m.toArray(Array(m.size()))))}}return g.toArray(Array(g.size()))},"jalview.structure.StructureSelectionManager,~A,~A,jalview.api.SequenceRenderer,jalview.api.FeatureRenderer,jalview.datamodel.AlignmentI");c$.condenseCommand=d(c$,"condenseCommand",function(a,b){var c=a.length(),d=c;do c-=6,1>c&&(c=0);while(-1==(d=a.indexOf("select",
+c))&&0<c);c=new StringBuffer(a.substring(0,d+7));a=a.$delete(0,d+7);d=-1<a.indexOf("-")?a.substring(0,a.indexOf("-")):a.substring(0,a.indexOf(":"));c.append(d+"-"+b+a.substring(a.indexOf(":")));return c},"StringBuffer,~N")});p("jalview.structure");c$=s(function(){this.handledBy=this.commands=this.mapping=null;r(this,arguments)},jalview.structure,"StructureMappingcommandSet");m(c$,function(a,b,c){this.mapping=b;this.handledBy=a;this.commands=c},"~O,~S,~A");p("java.util");q(["java.util.Hashtable"],
+"java.util.Properties",["java.lang.IllegalArgumentException"],function(){c$=s(function(){this.defaults=null;H("java.util.Properties.LineReader")||java.util.Properties.$Properties$LineReader$();r(this,arguments)},java.util,"Properties",java.util.Hashtable);m(c$,function(){this.construct(null)});m(c$,function(a){t(this,java.util.Properties,[]);this.defaults=a},"java.util.Properties");d(c$,"setProperty",function(a,b){return this.put(a,b)},"~S,~S");d(c$,"load",function(a){this.load0(C(java.util.Properties.LineReader,
+this,null,a))},"java.io.Reader");d(c$,"load",function(a){this.load0(C(java.util.Properties.LineReader,this,null,a))},"java.io.InputStream");d(c$,"load0",function(a){for(var b=N(1024,"\x00"),c,d,e,k,g,h;0<=(c=a.readLine());){String.fromCharCode(0);d=0;e=c;for(h=g=!1;d<c;){k=a.lineBuf[d];if(("="==k||":"==k)&&!h){e=d+1;g=!0;break}else if((" "==k||"\t"==k||"\f"==k)&&!h){e=d+1;break}h="\\"==k?!h:!1;d++}for(;e<c;){k=a.lineBuf[e];if(" "!=k&&"\t"!=k&&"\f"!=k)if(!g&&("="==k||":"==k))g=!0;else break;e++}d=
+this.loadConvert(a.lineBuf,0,d,b);c=this.loadConvert(a.lineBuf,e,c-e,b);this.put(d,c)}},"java.util.Properties.LineReader");d(c$,"loadConvert",function(a,b,c,d){d.length<c&&(d=2*c,0>d&&(d=2147483647),d=N(d,"\x00"));for(var e=0,k=b+c;b<k;)if(c=a[b++],"\\"==c)if(c=a[b++],"u"==c){for(var g=0,h=0;4>h;h++)switch(c=a[b++],c){case "0":case "1":case "2":case "3":case "4":case "5":case "6":case "7":case "8":case "9":g=(g<<4)+c.charCodeAt(0)-48;break;case "a":case "b":case "c":case "d":case "e":case "f":g=(g<<
+4)+10+c.charCodeAt(0)-97;break;case "A":case "B":case "C":case "D":case "E":case "F":g=(g<<4)+10+c.charCodeAt(0)-65;break;default:throw new IllegalArgumentException("Malformed \\uxxxx encoding.");}d[e++]=String.fromCharCode(g)}else"t"==c?c="\t":"r"==c?c="\r":"n"==c?c="\n":"f"==c&&(c="\f"),d[e++]=c;else d[e++]=c;return String.instantialize(d,0,e)},"~A,~N,~N,~A");d(c$,"getProperty",function(a){var b=K(this,java.util.Properties,"get",[a]),b=v(b,String)?b:null;return null==b&&null!=this.defaults?this.defaults.getProperty(a):
+b},"~S");d(c$,"getProperty",function(a,b){var c=this.getProperty(a);return null==c?b:c},"~S,~S");d(c$,"propertyNames",function(){var a=new java.util.Hashtable;this.enumerate(a);return a.keys()});d(c$,"stringPropertyNames",function(){var a=new java.util.Hashtable;this.enumerateStringProperties(a);return a.keySet()});d(c$,"enumerate",function(a){null!=this.defaults&&this.defaults.enumerate(a);for(var b=this.keys();b.hasMoreElements();){var c=b.nextElement();a.put(c,this.get(c))}},"java.util.Hashtable");
+d(c$,"enumerateStringProperties",function(a){null!=this.defaults&&this.defaults.enumerateStringProperties(a);for(var b=this.keys();b.hasMoreElements();){var c=b.nextElement(),d=this.get(c);v(c,String)&&v(d,String)&&a.put(c,d)}},"java.util.Hashtable");c$.$Properties$LineReader$=function(){A(self.c$);c$=s(function(){O(this,arguments);this.lineBuf=this.inCharBuf=this.inByteBuf=null;this.inOff=this.inLimit=0;this.reader=this.inStream=null;r(this,arguments)},java.util.Properties,"LineReader");J(c$,function(){this.lineBuf=
+N(1024,"\x00")});m(c$,function(a){this.inStream=a;this.inByteBuf=S(8192,0)},"java.io.InputStream");m(c$,function(a){this.reader=a;this.inCharBuf=N(8192,"\x00")},"java.io.Reader");d(c$,"readLine",function(){for(var a=0,b=String.fromCharCode(0),c=!0,d=!1,e=!0,k=!1,g=!1,h=!1;;){if(this.inOff>=this.inLimit&&(this.inLimit=null==this.inStream?this.reader.read(this.inCharBuf):this.inStream.read(this.inByteBuf),this.inOff=0,0>=this.inLimit))return 0==a||d?-1:a;b=null!=this.inStream?String.fromCharCode(255&
+this.inByteBuf[this.inOff++]):this.inCharBuf[this.inOff++];if(h&&(h=!1,"\n"==b))continue;if(c){if(" "==b||"\t"==b||"\f"==b)continue;if(!k&&("\r"==b||"\n"==b))continue;k=c=!1}if(e&&(e=!1,"#"==b||"!"==b)){d=!0;continue}if("\n"!=b&&"\r"!=b){this.lineBuf[a++]=b;if(a==this.lineBuf.length){var j=N(2*this.lineBuf.length,"\x00");System.arraycopy(this.lineBuf,0,j,0,this.lineBuf.length);this.lineBuf=j}g="\\"==b?!g:!1}else if(d||0==a)d=!1,c=e=!0,a=0;else if(!(this.inOff>=this.inLimit&&(this.inLimit=null==this.inStream?
+this.reader.read(this.inCharBuf):this.inStream.read(this.inByteBuf),this.inOff=0,0>=this.inLimit))&&g)a-=1,k=c=!0,g=!1,"\r"==b&&(h=!0);else return a}});c$=z()}});p("jssun.util");q(["java.util.Enumeration"],"jssun.util.ResourceBundleEnumeration",["java.util.NoSuchElementException"],function(){c$=s(function(){this.next=this.enumeration=this.iterator=this.set=null;r(this,arguments)},jssun.util,"ResourceBundleEnumeration",null,java.util.Enumeration);m(c$,function(a,b){this.set=a;this.iterator=a.iterator();
+this.enumeration=b},"java.util.Set,java.util.Enumeration");d(c$,"hasMoreElements",function(){if(null==this.next)if(this.iterator.hasNext())this.next=this.iterator.next();else if(null!=this.enumeration)for(;null==this.next&&this.enumeration.hasMoreElements();)this.next=this.enumeration.nextElement(),this.set.contains(this.next)&&(this.next=null);return null!=this.next});d(c$,"nextElement",function(){if(this.hasMoreElements()){var a=this.next;this.next=null;return a}throw new java.util.NoSuchElementException;
+})});p("jalview.io");q(["jalview.io.AlignFile"],"jalview.io.FastaFile",["jalview.datamodel.AlignmentAnnotation","$.Annotation","java.lang.StringBuffer"],function(){c$=s(function(){this.len=72;this.out=null;r(this,arguments)},jalview.io,"FastaFile",jalview.io.AlignFile);m(c$,function(){t(this,jalview.io.FastaFile,[])});e(c$,"parse",function(){for(var a=new StringBuffer,b=!0,c,d,e=null,k=!1;null!=(d=this.nextLine());)c=d.trim(),0<c.length&&(">"==c.charAt(0)?(c.startsWith(">#_")?k&&this.annotations.addElement(this.makeAnnotation(e,
+a)):k=!1,b||(e.setSequence(a.toString()),k||this.seqs.addElement(e)),e=this.parseId(c.substring(1)),b=!1,a=new StringBuffer,c.startsWith(">#_")&&(k=!0)):a.append(k?d:c));k?this.annotations.addElement(this.makeAnnotation(e,a)):b||(e.setSequence(a.toString()),this.seqs.addElement(e))});d(c$,"makeAnnotation",function(a,b){for(var c=Array(b.length()),d=0;d<c.length;d++){var e=b.charAt(d);" "!=e&&(c[d]=new jalview.datamodel.Annotation(""+e,null," ",NaN))}return new jalview.datamodel.AlignmentAnnotation(a.getName().substring(2),
+a.getDescription(),c)},"jalview.datamodel.SequenceI,StringBuffer");d(c$,"addAnnotations",function(a){this.addProperties(a);for(var b=0;b<this.annotations.size();b++){var c=this.annotations.elementAt(b);c.setPadGaps(!0,a.getGapCharacter());a.addAnnotation(c)}},"jalview.datamodel.Alignment");d(c$,"print",function(a){this.out=new StringBuffer;for(var b=0;b<a.length&&null!=a[b];){this.out.append(">"+this.printId(a[b]));null!=a[b].getDescription()&&this.out.append(" "+a[b].getDescription());this.out.append(this.newline);
+for(var c=F(a[b].getLength()/this.len)+1,d=0;d<c;d++){var e=d*this.len,k=e+this.len;k<a[b].getLength()?this.out.append(a[b].getSequenceAsString(e,k)+this.newline):e<a[b].getLength()&&this.out.append(a[b].getSequenceAsString(e,a[b].getLength())+this.newline)}b++}return this.out.toString()},"~A");d(c$,"print",function(){return this.print(this.getSeqsAsArray())})});p("swingjs.plaf");q(["swingjs.plaf.JSPanelUI"],"swingjs.plaf.JSMenuBarUI",["java.awt.Dimension","javax.swing.LookAndFeel"],function(){c$=
+B(swingjs.plaf,"JSMenuBarUI",swingjs.plaf.JSPanelUI);m(c$,function(){t(this,swingjs.plaf.JSMenuBarUI,[]);this.isContainer=!0;this.setDoc()});e(c$,"getDOMObject",function(){null==this.domNode&&(this.domNode=this.createDOMObject("div",this.id,[]));return this.domNode});e(c$,"setHTMLSize",function(){return new java.awt.Dimension(this.c.getWidth(),this.c.getHeight())},"swingjs.api.DOMNode,~B");d(c$,"getPreferredSize",function(){return null},"javax.swing.JComponent");e(c$,"installJSUI",function(){javax.swing.LookAndFeel.installColorsAndFont(this.c,
+"MenuBar.background","MenuBar.foreground","MenuBar.font")});e(c$,"uninstallJSUI",function(){})});p("swingjs.plaf");q(["swingjs.plaf.JSComponentUI"],"swingjs.plaf.JSMenuUI",["java.awt.Dimension","javax.swing.LookAndFeel"],function(){c$=B(swingjs.plaf,"JSMenuUI",swingjs.plaf.JSComponentUI);m(c$,function(){t(this,swingjs.plaf.JSMenuUI,[]);this.isContainer=!0;this.setDoc()});e(c$,"getDOMObject",function(){null==this.domNode&&(this.domNode=this.createDOMObject("select",this.id,[]));return this.domNode});
+e(c$,"setHTMLSize",function(){return new java.awt.Dimension(this.c.getWidth(),this.c.getHeight())},"swingjs.api.DOMNode,~B");d(c$,"getPreferredSize",function(){return null},"javax.swing.JComponent");e(c$,"installJSUI",function(){javax.swing.LookAndFeel.installColorsAndFont(this.c,"Menu.background","Menu.foreground","Menu.font")});e(c$,"uninstallJSUI",function(){})});p("swingjs.plaf");q(["swingjs.plaf.JSButtonUI"],"swingjs.plaf.JSMenuItemUI",["javax.swing.LookAndFeel","$.UIManager","javax.swing.plaf.UIResource",
+"swingjs.api.DOMNode","swingjs.plaf.JSButtonListener"],function(){c$=s(function(){this.$domBtn=null;this.$defaultTextShiftOffset=this.$shiftOffset=0;r(this,arguments)},swingjs.plaf,"JSMenuItemUI",swingjs.plaf.JSButtonUI);e(c$,"getDOMObject",function(){null==this.domNode&&(this.$domBtn=this.enableNode=this.valueNode=this.domNode=this.createDOMObject("input",this.id,["type","button"]));this.setCssFont(swingjs.api.DOMNode.setAttr(this.domNode,"value",this.c.getText()),this.c.getFont());return this.domNode});
+e(c$,"verifyButtonClick",function(){return!0},"~B");e(c$,"installJSUI",function(){this.installDefaults(this.c);this.installListeners(this.c);this.installKeyboardActions(this.c)});e(c$,"uninstallJSUI",function(){this.uninstallKeyboardActions(this.c);this.uninstallListeners(this.c)});e(c$,"installListeners",function(a){var b=new swingjs.plaf.JSButtonListener(a);null!=b&&(a.addMouseListener(b),a.addMouseMotionListener(b),a.addFocusListener(b),a.addPropertyChangeListener(b),a.addChangeListener(b))},"javax.swing.AbstractButton");
+e(c$,"uninstallListeners",function(a){var b=this.getButtonListener(a);null!=b&&(a.removeMouseListener(b),a.removeMouseMotionListener(b),a.removeFocusListener(b),a.removeChangeListener(b),a.removePropertyChangeListener(b))},"javax.swing.AbstractButton");e(c$,"installKeyboardActions",function(a){var b=this.getButtonListener(a);null!=b&&b.installKeyboardActions(a)},"javax.swing.AbstractButton");e(c$,"uninstallKeyboardActions",function(a){var b=this.getButtonListener(a);null!=b&&b.uninstallKeyboardActions(a)},
+"javax.swing.AbstractButton");e(c$,"getPropertyPrefix",function(){return"Button."});e(c$,"installDefaults",function(a){var b=this.getPropertyPrefix();this.$defaultTextShiftOffset=javax.swing.UIManager.getInt(b+"textShiftOffset");(null==a.getMargin()||v(a.getMargin(),javax.swing.plaf.UIResource))&&a.setMargin(javax.swing.UIManager.getInsets(b+"margin"));javax.swing.LookAndFeel.installColorsAndFont(a,b+"background",b+"foreground",b+"font");javax.swing.LookAndFeel.installProperty(a,"iconTextGap",new Integer(4))},
+"javax.swing.AbstractButton")});p("swingjs.plaf");q(["swingjs.plaf.JSCheckBoxUI"],"swingjs.plaf.JSCheckBoxMenuItemUI",null,function(){c$=B(swingjs.plaf,"JSCheckBoxMenuItemUI",swingjs.plaf.JSCheckBoxUI);e(c$,"getDOMObject",function(){return this.getButtonObject("checkBox")});e(c$,"getPropertyPrefix",function(){return"CheckBoxMenuItem."})});p("swingjs.plaf");q(["swingjs.plaf.JSRadioButtonUI"],"swingjs.plaf.JSCheckBoxUI",null,function(){c$=B(swingjs.plaf,"JSCheckBoxUI",swingjs.plaf.JSRadioButtonUI);
+e(c$,"getDOMObject",function(){return this.getButtonObject("checkBox")});e(c$,"getPropertyPrefix",function(){return"CheckBox."})});p("swingjs.plaf");q(["swingjs.plaf.JSComponentUI"],"swingjs.plaf.JSLabelUI",["swingjs.api.DOMNode"],function(){c$=B(swingjs.plaf,"JSLabelUI",swingjs.plaf.JSComponentUI);e(c$,"getDOMObject",function(){null==this.domNode&&(this.textNode=this.domNode=this.createDOMObject("label",this.id,[]));swingjs.plaf.JSComponentUI.vCenter(this.domNode,10);return this.setCssFont(swingjs.api.DOMNode.setAttr(this.domNode,
+"innerHTML",this.c.getText()),this.c.getFont())});e(c$,"installJSUI",function(){});e(c$,"uninstallJSUI",function(){})});p("swingjs.plaf");q(["swingjs.plaf.JSMenuUI"],"swingjs.plaf.JSPopupMenuUI",["java.awt.Dimension","javax.swing.LookAndFeel"],function(){c$=B(swingjs.plaf,"JSPopupMenuUI",swingjs.plaf.JSMenuUI);m(c$,function(){t(this,swingjs.plaf.JSPopupMenuUI,[]);this.isContainer=!0;this.setDoc()});e(c$,"getDOMObject",function(){null==this.domNode&&(this.domNode=this.createDOMObject("select",this.id,
+[]));return this.domNode});e(c$,"setHTMLSize",function(){return new java.awt.Dimension(this.c.getWidth(),this.c.getHeight())},"swingjs.api.DOMNode,~B");d(c$,"getPreferredSize",function(){return null},"javax.swing.JComponent");e(c$,"installJSUI",function(){javax.swing.LookAndFeel.installColorsAndFont(this.c,"PopupMenu.background","PopupMenu.foreground","PopupMenu.font")});e(c$,"uninstallJSUI",function(){})});p("swingjs.plaf");q(["swingjs.plaf.JSSeparatorUI"],"swingjs.plaf.JSPopupMenuSeparatorUI",["swingjs.api.DOMNode"],
+function(){c$=B(swingjs.plaf,"JSPopupMenuSeparatorUI",swingjs.plaf.JSSeparatorUI);e(c$,"getDOMObject",function(){null==this.domNode&&(this.textNode=this.domNode=this.createDOMObject("label",this.id,[]));swingjs.plaf.JSComponentUI.vCenter(this.domNode,10);return this.setCssFont(swingjs.api.DOMNode.setAttr(this.domNode,"innerHTML",this.c.getText()),this.c.getFont())});e(c$,"installJSUI",function(){});e(c$,"uninstallJSUI",function(){})});p("swingjs.plaf");q(["swingjs.plaf.JSComponentUI"],"swingjs.plaf.JSScrollBarUI",
+null,function(){c$=B(swingjs.plaf,"JSScrollBarUI",swingjs.plaf.JSComponentUI);e(c$,"getDOMObject",function(){null==this.domNode&&(this.domNode=this.createDOMObject("div",this.id,[]));return this.domNode});e(c$,"installJSUI",function(){});e(c$,"uninstallJSUI",function(){})});p("swingjs");q(null,"swingjs.JSImagekit",["java.util.Arrays","swingjs.JSImage","swingjs.api.Interface"],function(){c$=B(swingjs,"JSImagekit");m(c$,function(){});d(c$,"createImageFromBytes",function(a,b,c){var d=0,e=0,k=null,g=
+null,h=null;if(null==a)d=b,e=c;else{0>c&&(c=a.length);g=java.util.Arrays.copyOfRange(a,b,c);if(54>g.length)return null;switch(this.getSourceType(g)){case 3:k=swingjs.api.Interface.getInstance("javajs.img.BMPDecoder",!0).decodeWindowsBMP(g);if(null==k||null==k[0])return null;d=k[1].intValue();e=k[2].intValue();k=k[0];break;case 1:for(h=2;;){switch(this.getInt(g,h)){case 49407:case 49919:e=this.getIntRev(g,h+5),d=this.getIntRev(g,h+7),h=0}if(0==h)break;h+=2+this.getIntRev(g,h+2)}h="jpeg";break;case 0:d=
+this.getLong(g,16);e=this.getLong(g,20);h="png";break;case 2:d=this.getInt(g,6);e=this.getInt(g,8);h="gif";break;case -1:System.out.println("JSImagekit: Unknown image type: "+g[0]+" "+g[1]+" "+g[2]+" "+g[3]),a=null}}if(0==d||0==e)return null;d=new swingjs.JSImage(k,d,e);null!=a&&null==k&&d.getDOMImage(g,h);return d},"~A,~N,~N");d(c$,"getLong",function(a,b){return((a[b]&255)<<24)+((a[b+1]&255)<<16)+((a[b+2]&255)<<8)+(a[b+3]&255)},"~A,~N");d(c$,"getInt",function(a,b){return(a[b]&255)+((a[b+1]&255)<<
+8)},"~A,~N");d(c$,"getIntRev",function(a,b){return((a[b]&255)<<8)+(a[b+1]&255)},"~A,~N");d(c$,"getSourceType",function(a){return 137==(a[0]&255)&&80==a[1]&&78==a[2]&&71==a[3]?0:255==(a[0]&255)&&216==(a[1]&255)?1:71==a[0]&&73==a[1]&&70==a[2]?2:66==a[0]&&77==a[1]?3:-1},"~A");G(c$,"UNK",-1,"PNG",0,"JPG",1,"GIF",2,"BMP",3,"JPG_SOF0",49407,"JPG_SOF2",49919)});p("swingjs");q(["java.awt.image.BufferedImage"],"swingjs.JSImage",["JU.Base64","swingjs.api.DOMNode"],function(){c$=s(function(){this.typeRequested=
+0;this._imgNode=this.pix=null;this.height=this.width=0;r(this,arguments)},swingjs,"JSImage",java.awt.image.BufferedImage);m(c$,function(a,b,c){t(this,swingjs.JSImage,[b,c,2]);this.width=b;this.height=c;this.pix=a},"~A,~N,~N");d(c$,"toIntARGB",function(a){for(var b=F(a.length/4),c=w(b,0),d=0,e=0;d<b;e++)c[d++]=a[e++]<<16|a[e++]<<8|a[e++]|4278190080;return c},"~A");d(c$,"getDOMImage",function(a,b){var c="data:image/"+b+";base64,"+JU.Base64.getBase64(a).toString(),d=null,d=new Image(this.width,this.height);
+d.src=c;this.setDOMImage(d)},"~A,~S");d(c$,"setDOMImage",function(a){var b=swingjs.api.DOMNode.createElement("canvas","JSImage"),c=this.width,d=this.height;this._imgNode=a;b.width=c;b.height=d;b=b.getContext("2d");b.drawImage(a,0,0,c,d);c=b.getImageData(0,0,c,d).data;a._pbuf32=this.toIntARGB(c)},"swingjs.api.DOMNode");d(c$,"getHeight",function(){return this.height},"java.awt.image.ImageObserver");d(c$,"getWidth",function(){return this.width},"java.awt.image.ImageObserver")});p("jssun.awt.image");
+q(["jssun.awt.image.IntegerComponentRaster"],"jssun.awt.image.IntegerInterleavedRaster","java.lang.ArrayIndexOutOfBoundsException java.awt.Point $.Rectangle java.awt.image.DataBufferInt $.RasterFormatException $.SinglePixelPackedSampleModel".split(" "),function(){c$=s(function(){this.$maxY=this.$maxX=0;r(this,arguments)},jssun.awt.image,"IntegerInterleavedRaster",jssun.awt.image.IntegerComponentRaster);m(c$,function(a,b){t(this,jssun.awt.image.IntegerInterleavedRaster,[]);this.setIntInterRaster(a,
+a.createDataBuffer(),new java.awt.Rectangle(b.x,b.y,a.getWidth(),a.getHeight()),b,null)},"java.awt.image.SampleModel,java.awt.Point");m(c$,function(a,b,c){t(this,jssun.awt.image.IntegerInterleavedRaster,[]);this.setParams(a,b,c)},"java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");m(c$,function(){t(this,jssun.awt.image.IntegerInterleavedRaster,[])});e(c$,"setParams",function(a,b,c){this.setIntInterRaster(a,b,new java.awt.Rectangle(c.x,c.y,a.getWidth(),a.getHeight()),c,null)},"java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");
+m(c$,function(a,b,c,d,e){t(this,jssun.awt.image.IntegerInterleavedRaster,[]);this.setIntInterRaster(a,b,c,d,e)},"java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,jssun.awt.image.IntegerInterleavedRaster");d(c$,"setIntInterRaster",function(a,b,c,d,e){this.setIntCompRaster(a,b,c,d,e);this.$maxX=this.minX+this.width;this.$maxY=this.minY+this.height;if(!v(b,java.awt.image.DataBufferInt))throw new java.awt.image.RasterFormatException("IntegerInterleavedRasters must haveinteger DataBuffers");
+this.data=jssun.awt.image.SunWritableRaster.stealData(b,0);if(v(a,java.awt.image.SinglePixelPackedSampleModel))this.scanlineStride=a.getScanlineStride(),this.pixelStride=1,this.dataOffsets=w(1,0),this.dataOffsets[0]=b.getOffset(),this.bandOffset=this.dataOffsets[0],this.dataOffsets[0]+=c.x-d.x+(c.y-d.y)*this.scanlineStride,this.numDataElems=a.getNumDataElements();else throw new java.awt.image.RasterFormatException("IntegerInterleavedRasters must have SinglePixelPackedSampleModel");this.verify()},
+"java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,jssun.awt.image.IntegerInterleavedRaster");e(c$,"getDataOffsets",function(){return this.dataOffsets.clone()});e(c$,"getDataOffset",function(a){return this.dataOffsets[a]},"~N");e(c$,"getScanlineStride",function(){return this.scanlineStride});e(c$,"getPixelStride",function(){return this.pixelStride});e(c$,"getDataStorage",function(){return this.data});d(c$,"getDataElements",function(a,b,c){if(a<this.minX||b<this.minY||
+a>=this.$maxX||b>=this.$maxY)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");c=null==c?w(1,0):c;c[0]=this.data[(b-this.minY)*this.scanlineStride+(a-this.minX)+this.dataOffsets[0]];return c},"~N,~N,~O");d(c$,"getDataElements",function(a,b,c,d,e){if(a<this.minX||b<this.minY||a+c>this.$maxX||b+d>this.$maxY)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");e=v(e,Array)?e:w(c*d,0);a=(b-this.minY)*this.scanlineStride+(a-this.minX)+this.dataOffsets[0];for(var k=
+b=0;k<d;k++)System.arraycopy(this.data,a,e,b,c),b+=c,a+=this.scanlineStride;return e},"~N,~N,~N,~N,~O");d(c$,"setDataElements",function(a,b,c){if(a<this.minX||b<this.minY||a>=this.$maxX||b>=this.$maxY)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");this.data[(b-this.minY)*this.scanlineStride+(a-this.minX)+this.dataOffsets[0]]=c[0];this.markDirty()},"~N,~N,~O");d(c$,"setDataElements",function(a,b,c){a+=c.getMinX();b+=c.getMinY();var d=c.getWidth(),e=c.getHeight();if(a<this.minX||
+b<this.minY||a+d>this.$maxX||b+e>this.$maxY)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");this.setDataElements(a,b,d,e,c)},"~N,~N,java.awt.image.Raster");d(c$,"setDataElements",function(a,b,c,d,e){if(!(0>=c||0>=d)){var k=e.getMinX(),g=e.getMinY(),h=null;if(v(e,jssun.awt.image.IntegerInterleavedRaster)){h=e.getDataStorage();k=e.getScanlineStride();e=e.getDataOffset(0);a=this.dataOffsets[0]+(b-this.minY)*this.scanlineStride+(a-this.minX);for(var j=0;j<d;j++)System.arraycopy(h,
+e,this.data,a,c),e+=k,a+=this.scanlineStride;this.markDirty()}else{h=null;for(j=0;j<d;j++)h=e.getDataElements(k,g+j,c,1,h),this.setDataElements(a,b+j,c,1,h)}}},"~N,~N,~N,~N,java.awt.image.Raster");d(c$,"setDataElements",function(a,b,c,d,e){if(a<this.minX||b<this.minY||a+c>this.$maxX||b+d>this.$maxY)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");a=(b-this.minY)*this.scanlineStride+(a-this.minX)+this.dataOffsets[0];for(var k=b=0;k<d;k++)System.arraycopy(e,b,this.data,a,c),b+=
+c,a+=this.scanlineStride;this.markDirty()},"~N,~N,~N,~N,~O");e(c$,"createWritableChild",function(a,b,c,d,e,k,g){if(a<this.minX)throw new java.awt.image.RasterFormatException("x lies outside raster");if(b<this.minY)throw new java.awt.image.RasterFormatException("y lies outside raster");if(a+c<a||a+c>this.minX+this.width)throw new java.awt.image.RasterFormatException("(x + width) is outside raster");if(b+d<b||b+d>this.minY+this.height)throw new java.awt.image.RasterFormatException("(y + height) is outside raster");
+g=null!=g?this.sampleModel.createSubsetSampleModel(g):this.sampleModel;a=e-a;b=k-b;return new jssun.awt.image.IntegerInterleavedRaster(g,this.dataBuffer,new java.awt.Rectangle(e,k,c,d),new java.awt.Point(this.sampleModelTranslateX+a,this.sampleModelTranslateY+b),this)},"~N,~N,~N,~N,~N,~N,~A");e(c$,"createChild",function(a,b,c,d,e,k,g){return this.createWritableChild(a,b,c,d,e,k,g)},"~N,~N,~N,~N,~N,~N,~A");d(c$,"createCompatibleWritableRaster",function(a,b){if(0>=a||0>=b)throw new java.awt.image.RasterFormatException("negative "+
+(0>=a?"width":"height"));var c=this.sampleModel.createCompatibleSampleModel(a,b);return new jssun.awt.image.IntegerInterleavedRaster(c,new java.awt.Point(0,0))},"~N,~N");d(c$,"createCompatibleWritableRaster",function(){return this.createCompatibleWritableRaster(this.width,this.height)});e(c$,"toString",function(){return String.instantialize("IntegerInterleavedRaster: width = "+this.width+" height = "+this.height+" #Bands = "+this.numBands+" xOff = "+this.sampleModelTranslateX+" yOff = "+this.sampleModelTranslateY+
+" dataOffset[0] "+this.dataOffsets[0])})});p("jssun.awt.image");q(["jssun.awt.image.SunWritableRaster"],"jssun.awt.image.IntegerComponentRaster","java.lang.ArrayIndexOutOfBoundsException java.awt.Point $.Rectangle java.awt.image.DataBufferInt $.RasterFormatException $.SinglePixelPackedSampleModel".split(" "),function(){c$=s(function(){this.bandOffset=0;this.dataOffsets=null;this.pixelStride=this.scanlineStride=0;this.data=null;this.maxY=this.maxX=this.type=this.numDataElems=0;r(this,arguments)},jssun.awt.image,
+"IntegerComponentRaster",jssun.awt.image.SunWritableRaster);m(c$,function(a,b){t(this,jssun.awt.image.IntegerComponentRaster,[]);this.setIntCompRaster(a,a.createDataBuffer(),new java.awt.Rectangle(b.x,b.y,a.getWidth(),a.getHeight()),b,null)},"java.awt.image.SampleModel,java.awt.Point");m(c$,function(a,b,c){t(this,jssun.awt.image.IntegerComponentRaster,[]);this.setIntCompRaster(a,b,new java.awt.Rectangle(c.x,c.y,a.getWidth(),a.getHeight()),c,null)},"java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");
+m(c$,function(){t(this,jssun.awt.image.IntegerComponentRaster,[])});m(c$,function(a,b,c,d,e){t(this,jssun.awt.image.IntegerComponentRaster,[]);this.setIntCompRaster(a,b,c,d,e)},"java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,java.awt.image.Raster");d(c$,"setIntCompRaster",function(a,b,c,d,e){this.setSunRaster(a,b,c,d,e);this.maxX=this.minX+this.width;this.maxY=this.minY+this.height;if(!v(b,java.awt.image.DataBufferInt))throw new java.awt.image.RasterFormatException("IntegerComponentRasters must haveinteger DataBuffers");
+if(1!=b.getNumBanks())throw new java.awt.image.RasterFormatException("DataBuffer for IntegerComponentRasters must only have 1 bank.");this.data=jssun.awt.image.SunWritableRaster.stealData(b,0);if(v(a,java.awt.image.SinglePixelPackedSampleModel)){e=a.getBitOffsets();for(var k=!1,g=1;g<e.length;g++)0!=e[g]%8&&(k=!0);this.type=k?9:10;this.scanlineStride=a.getScanlineStride();this.pixelStride=1;this.dataOffsets=w(1,0);this.dataOffsets[0]=b.getOffset();this.bandOffset=this.dataOffsets[0];this.dataOffsets[0]+=
+c.x-d.x+(c.y-d.y)*this.scanlineStride;this.numDataElems=a.getNumDataElements()}else throw new java.awt.image.RasterFormatException("IntegerComponentRasters must have SinglePixelPackedSampleModel");this.verify()},"java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,java.awt.image.Raster");d(c$,"getDataOffsets",function(){return this.dataOffsets.clone()});d(c$,"getDataOffset",function(a){return this.dataOffsets[a]},"~N");d(c$,"getScanlineStride",function(){return this.scanlineStride});
+d(c$,"getPixelStride",function(){return this.pixelStride});d(c$,"getDataStorage",function(){return this.data});d(c$,"getDataElements",function(a,b,c){if(a<this.minX||b<this.minY||a>=this.maxX||b>=this.maxY)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");c=null==c?w(this.numDataElements,0):c;a=(b-this.minY)*this.scanlineStride+(a-this.minX)*this.pixelStride;for(b=0;b<this.numDataElements;b++)c[b]=this.data[this.dataOffsets[b]+a];return c},"~N,~N,~O");d(c$,"getDataElements",function(a,
+b,c,d,e){if(a<this.minX||b<this.minY||a+c>this.maxX||b+d>this.maxY)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");e=v(e,Array)?e:w(this.numDataElements*c*d,0);a=(b-this.minY)*this.scanlineStride+(a-this.minX)*this.pixelStride;var k=0,g,h;for(h=0;h<d;h++,a+=this.scanlineStride){b=a;for(g=0;g<c;g++,b+=this.pixelStride)for(var j=0;j<this.numDataElements;j++)e[k++]=this.data[this.dataOffsets[j]+b]}return e},"~N,~N,~N,~N,~O");d(c$,"setDataElements",function(a,b,c){if(a<this.minX||
+b<this.minY||a>=this.maxX||b>=this.maxY)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");a=(b-this.minY)*this.scanlineStride+(a-this.minX)*this.pixelStride;for(b=0;b<this.numDataElements;b++)this.data[this.dataOffsets[b]+a]=c[b];this.markDirty()},"~N,~N,~O");e(c$,"setDataElementsRaster",function(a,b,c){a+=c.getMinX();b+=c.getMinY();var d=c.getWidth(),e=c.getHeight();if(a<this.minX||b<this.minY||a+d>this.maxX||b+e>this.maxY)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");
+this.setDataElementsRaster4(a,b,d,e,c)},"~N,~N,java.awt.image.Raster");d(c$,"setDataElementsRaster4",function(a,b,c,d,e){if(!(0>=c||0>=d)){var k=e.getMinX(),g=e.getMinY(),h=null;if(v(e,jssun.awt.image.IntegerComponentRaster)&&1==this.pixelStride&&1==this.numDataElements){if(1!=e.getNumDataElements())throw new ArrayIndexOutOfBoundsException("Number of bands does not match");var h=e.getDataStorage(),j=e.getScanlineStride(),m=e.getDataOffset(0),p=this.dataOffsets[0]+(b-this.minY)*this.scanlineStride+
+(a-this.minX);if(e.getPixelStride()==this.pixelStride){c*=this.pixelStride;for(var q=0;q<d;q++)System.arraycopy(h,m,this.data,p,c),m+=j,p+=this.scanlineStride;this.markDirty();return}}h=null;for(q=0;q<d;q++)h=e.getDataElements(k,g+q,c,1,h),this.setDataElements(a,b+q,c,1,h)}},"~N,~N,~N,~N,java.awt.image.Raster");d(c$,"setDataElements",function(a,b,c,d,e){if(a<this.minX||b<this.minY||a+c>this.maxX||b+d>this.maxY)throw new ArrayIndexOutOfBoundsException("Coordinate out of bounds!");a=(b-this.minY)*this.scanlineStride+
+(a-this.minX)*this.pixelStride;var k=0,g,h;for(h=0;h<d;h++,a+=this.scanlineStride){b=a;for(g=0;g<c;g++,b+=this.pixelStride)for(var j=0;j<this.numDataElements;j++)this.data[this.dataOffsets[j]+b]=e[k++]}this.markDirty()},"~N,~N,~N,~N,~O");e(c$,"createWritableChild",function(a,b,c,d,e,k,g){if(a<this.minX)throw new java.awt.image.RasterFormatException("x lies outside raster");if(b<this.minY)throw new java.awt.image.RasterFormatException("y lies outside raster");if(a+c<a||a+c>this.minX+this.width)throw new java.awt.image.RasterFormatException("(x + width) is outside raster");
+if(b+d<b||b+d>this.minY+this.height)throw new java.awt.image.RasterFormatException("(y + height) is outside raster");g=null!=g?this.sampleModel.createSubsetSampleModel(g):this.sampleModel;a=e-a;b=k-b;return new jssun.awt.image.IntegerComponentRaster(g,this.dataBuffer,new java.awt.Rectangle(e,k,c,d),new java.awt.Point(this.sampleModelTranslateX+a,this.sampleModelTranslateY+b),this)},"~N,~N,~N,~N,~N,~N,~A");e(c$,"createChild",function(a,b,c,d,e,k,g){return this.createWritableChild(a,b,c,d,e,k,g)},"~N,~N,~N,~N,~N,~N,~A");
+d(c$,"createCompatibleWritableRaster",function(a,b){if(0>=a||0>=b)throw new java.awt.image.RasterFormatException("negative "+(0>=a?"width":"height"));var c=this.sampleModel.createCompatibleSampleModel(a,b);return new jssun.awt.image.IntegerComponentRaster(c,new java.awt.Point(0,0))},"~N,~N");d(c$,"createCompatibleWritableRaster",function(){return this.createCompatibleWritableRaster(this.width,this.height)});d(c$,"verify",function(){if(0>=this.width||0>=this.height||this.height>F(2147483647/this.width))throw new java.awt.image.RasterFormatException("Invalid raster dimension");
+if(0>this.dataOffsets[0])throw new java.awt.image.RasterFormatException("Data offset ("+this.dataOffsets[0]+") must be >= 0");if(0>this.minX-this.sampleModelTranslateX||0>this.minY-this.sampleModelTranslateY)throw new java.awt.image.RasterFormatException("Incorrect origin/translate: ("+this.minX+", "+this.minY+") / ("+this.sampleModelTranslateX+", "+this.sampleModelTranslateY+")");if(0>this.scanlineStride||this.scanlineStride>F(2147483647/this.height))throw new java.awt.image.RasterFormatException("Incorrect scanline stride: "+
+this.scanlineStride);if((1<this.height||0<this.minY-this.sampleModelTranslateY)&&this.scanlineStride>this.data.length)throw new java.awt.image.RasterFormatException("Incorrect scanline stride: "+this.scanlineStride);var a=(this.height-1)*this.scanlineStride;if(0>this.pixelStride||this.pixelStride>F(2147483647/this.width)||this.pixelStride>this.data.length)throw new java.awt.image.RasterFormatException("Incorrect pixel stride: "+this.pixelStride);var b=(this.width-1)*this.pixelStride;if(b>2147483647-
+a)throw new java.awt.image.RasterFormatException("Incorrect raster attributes");for(var b=b+a,c=0,d=0;d<this.numDataElements;d++){if(this.dataOffsets[d]>2147483647-b)throw new java.awt.image.RasterFormatException("Incorrect band offset: "+this.dataOffsets[d]);a=b+this.dataOffsets[d];a>c&&(c=a)}if(this.data.length<=c)throw new java.awt.image.RasterFormatException("Data array too small (should be > "+c+" )");});e(c$,"toString",function(){return String.instantialize("IntegerComponentRaster: width = "+
+this.width+" height = "+this.height+" #Bands = "+this.numBands+" #DataElements "+this.numDataElements+" xOff = "+this.sampleModelTranslateX+" yOff = "+this.sampleModelTranslateY+" dataOffset[0] "+this.dataOffsets[0])});G(c$,"TYPE_CUSTOM",0,"TYPE_BYTE_SAMPLES",1,"TYPE_USHORT_SAMPLES",2,"TYPE_INT_SAMPLES",3,"TYPE_BYTE_BANDED_SAMPLES",4,"TYPE_USHORT_BANDED_SAMPLES",5,"TYPE_INT_BANDED_SAMPLES",6,"TYPE_BYTE_PACKED_SAMPLES",7,"TYPE_USHORT_PACKED_SAMPLES",8,"TYPE_INT_PACKED_SAMPLES",9,"TYPE_INT_8BIT_SAMPLES",
+10,"TYPE_BYTE_BINARY_SAMPLES",11)});p("jssun.awt.image");q(["java.awt.image.WritableRaster","jssun.awt.image.DataStealer"],"jssun.awt.image.SunWritableRaster",["jssun.java2d.StateTrackable","$.StateTrackableDelegate"],function(){c$=s(function(){this.theTrackable=null;r(this,arguments)},jssun.awt.image,"SunWritableRaster",java.awt.image.WritableRaster);c$.getStealer=d(c$,"getStealer",function(){return null==jssun.awt.image.SunWritableRaster.stealer?jssun.awt.image.SunWritableRaster.stealer=(H("jssun.awt.image.SunWritableRaster$1")?
+0:jssun.awt.image.SunWritableRaster.$SunWritableRaster$1$(),C(jssun.awt.image.SunWritableRaster$1,this,null)):jssun.awt.image.SunWritableRaster.stealer});c$.stealData=d(c$,"stealData",function(a,b){return jssun.awt.image.SunWritableRaster.getStealer().getData(a,b)},"java.awt.image.DataBufferByte,~N");c$.stealData=d(c$,"stealData",function(a,b){return jssun.awt.image.SunWritableRaster.getStealer().getData(a,b)},"java.awt.image.DataBufferInt,~N");c$.stealTrackable=d(c$,"stealTrackable",function(a){return jssun.awt.image.SunWritableRaster.getStealer().getTrackable(a)},
+"java.awt.image.DataBuffer");c$.setTrackable=d(c$,"setTrackable",function(a,b){jssun.awt.image.SunWritableRaster.getStealer().setTrackable(a,b)},"java.awt.image.DataBuffer,jssun.java2d.StateTrackableDelegate");c$.makeTrackable=d(c$,"makeTrackable",function(a){jssun.awt.image.SunWritableRaster.getStealer().setTrackable(a,jssun.java2d.StateTrackableDelegate.createInstance(jssun.java2d.StateTrackable.State.STABLE))},"java.awt.image.DataBuffer");c$.markDirty=d(c$,"markDirty",function(a){jssun.awt.image.SunWritableRaster.getStealer().getTrackable(a).markDirty()},
+"java.awt.image.DataBuffer");c$.markDirty=d(c$,"markDirty",function(a){v(a,jssun.awt.image.SunWritableRaster)?a.markDirty():jssun.awt.image.SunWritableRaster.markDirty(a.getDataBuffer())},"java.awt.image.WritableRaster");m(c$,function(a,b){t(this,jssun.awt.image.SunWritableRaster,[a,b]);this.theTrackable=jssun.awt.image.SunWritableRaster.stealTrackable(this.dataBuffer)},"java.awt.image.SampleModel,java.awt.Point");m(c$,function(a,b,c){t(this,jssun.awt.image.SunWritableRaster,[a,b,c]);this.theTrackable=
+jssun.awt.image.SunWritableRaster.stealTrackable(b)},"java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Point");m(c$,function(){t(this,jssun.awt.image.SunWritableRaster,[])});m(c$,function(a,b,c,d,e){t(this,jssun.awt.image.SunWritableRaster,[]);this.setSunRaster(a,b,c,d,e)},"java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,java.awt.image.Raster");d(c$,"setSunRaster",function(a,b,c,d,e){this.setRaster(a,b,c,d,e);this.theTrackable=jssun.awt.image.SunWritableRaster.stealTrackable(b)},
+"java.awt.image.SampleModel,java.awt.image.DataBuffer,java.awt.Rectangle,java.awt.Point,java.awt.image.Raster");d(c$,"markDirty",function(){this.theTrackable.markDirty()});c$.$SunWritableRaster$1$=function(){A(self.c$);c$=L(jssun.awt.image,"SunWritableRaster$1",null,jssun.awt.image.DataStealer);d(c$,"getData",function(a,b){return a.bankdata[b]},"java.awt.image.DataBufferByte,~N");d(c$,"getData",function(a,b){return a.bankdata[b]},"java.awt.image.DataBufferInt,~N");d(c$,"getTrackable",function(a){return a.theTrackable},
+"java.awt.image.DataBuffer");d(c$,"setTrackable",function(a,b){a.theTrackable=b},"java.awt.image.DataBuffer,jssun.java2d.StateTrackableDelegate");c$=z()};G(c$,"stealer",null)});p("jssun.awt.image");M(jssun.awt.image,"DataStealer")})(Clazz,Clazz.getClassName,Clazz.newLongArray,Clazz.doubleToByte,Clazz.doubleToInt,Clazz.doubleToLong,Clazz.declarePackage,Clazz.instanceOf,Clazz.load,Clazz.instantialize,Clazz.decorateAsClass,Clazz.floatToInt,Clazz.floatToLong,Clazz.makeConstructor,Clazz.defineEnumConstant,
+Clazz.exceptionOf,Clazz.newIntArray,Clazz.defineStatics,Clazz.newFloatArray,Clazz.declareType,Clazz.prepareFields,Clazz.superConstructor,Clazz.newByteArray,Clazz.declareInterface,Clazz.p0p,Clazz.pu$h,Clazz.newShortArray,Clazz.innerTypeInstance,Clazz.isClassDefined,Clazz.prepareCallback,Clazz.newArray,Clazz.castNullAs,Clazz.floatToShort,Clazz.superCall,Clazz.decorateAsType,Clazz.newBooleanArray,Clazz.newCharArray,Clazz.implementOf,Clazz.newDoubleArray,Clazz.overrideConstructor,Clazz.clone,Clazz.doubleToShort,
+Clazz.getInheritedLevel,Clazz.getParamsType,Clazz.isAF,Clazz.isAI,Clazz.isAS,Clazz.isASS,Clazz.isAP,Clazz.isAFloat,Clazz.isAII,Clazz.isAFF,Clazz.isAFFF,Clazz.tryToSearchAndExecute,Clazz.getStackTrace,Clazz.inheritArgs,Clazz.alert,Clazz.defineMethod,Clazz.overrideMethod,Clazz.declareAnonymous,Clazz.checkPrivateMethod,Clazz.cloneFinals);
diff --git a/site/j2s/java/awt/peer/rep5459595286819881521.tmp b/site/j2s/java/awt/peer/rep5459595286819881521.tmp
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/site/j2s/swingjs/plaf/JSPopupMenuSeparatorUI.js b/site/j2s/swingjs/plaf/JSPopupMenuSeparatorUI.js
new file mode 100644 (file)
index 0000000..0c63e7c
--- /dev/null
@@ -0,0 +1,16 @@
+Clazz.declarePackage ("swingjs.plaf");
+Clazz.load (["swingjs.plaf.JSSeparatorUI"], "swingjs.plaf.JSPopupMenuSeparatorUI", ["swingjs.api.DOMNode"], function () {
+c$ = Clazz.declareType (swingjs.plaf, "JSPopupMenuSeparatorUI", swingjs.plaf.JSSeparatorUI);
+Clazz.overrideMethod (c$, "getDOMObject", 
+function () {
+if (this.domNode == null) this.textNode = this.domNode = this.createDOMObject ("label", this.id, []);
+swingjs.plaf.JSComponentUI.vCenter (this.domNode, 10);
+return this.setCssFont (swingjs.api.DOMNode.setAttr (this.domNode, "innerHTML", (this.c).getText ()), this.c.getFont ());
+});
+Clazz.overrideMethod (c$, "installJSUI", 
+function () {
+});
+Clazz.overrideMethod (c$, "uninstallJSUI", 
+function () {
+});
+});
diff --git a/site/js/t b/site/js/t
new file mode 100644 (file)
index 0000000..1be59b3
--- /dev/null
+++ b/site/js/t
@@ -0,0 +1,20 @@
+
+---------- J2SSWINGJS.JS
+
+---------- JSMOL.JS
+                               if (!Jmol._debugCode || !Jmol.haveCore) {
+                       if (Jmol._debugAlert && !Jmol._document)
+
+---------- JSMOLCORE.JS
+
+---------- SWINGJS.JS
+               Jmol._debugAlert = Info.debug;
+               if (Jmol._debugAlert)
+               if (Jmol._debugCode) {
+                       if(Jmol._debugAlert)
+
+---------- SWINGJSJAVAEXT.JS
+
+---------- SWINGJSJQUERYEXT.JS
+
+---------- T
diff --git a/src/awt2swing/Util.java b/src/awt2swing/Util.java
new file mode 100644 (file)
index 0000000..6733dae
--- /dev/null
@@ -0,0 +1,20 @@
+package awt2swing;
+
+import java.awt.Graphics;
+
+
+public class Util {
+
+       public static void drawString(Graphics g, String text, int x, int y) {
+               /**
+                * @j2sNative
+                * 
+                * g.drawStringUnique(text, x, y);
+                * 
+                */
+               {
+               g.drawString(text,  x,  y);
+               return;
+               }
+       }
+}
diff --git a/swingjs.zip b/swingjs.zip
new file mode 100644 (file)
index 0000000..9493424
Binary files /dev/null and b/swingjs.zip differ