commit 47eb9d880f09c776bab92528a48139484379c2b5 Author: Vichingo455 Date: Wed Sep 24 12:40:09 2025 +0200 first commit diff --git a/about.html b/about.html new file mode 100644 index 0000000..d79966b --- /dev/null +++ b/about.html @@ -0,0 +1,63 @@ + + +
+

Circuit Simulator version .

+

Original by Paul Falstad.
http://www.falstad.com/

+

JavaScript conversion by Iain Sharp.
http://lushprojects.com/

+

GitHub link to report issues and view source code: https://github.com/pfalstad/circuitjs1

+

Thanks to: Edward Calver for 15 new components and other improvements; +Rodrigo Hausen for file import/export and many other UI improvements; +J. Mike Rollins for the Zener diode code; +Julius Schmidt for the spark gap code and some examples; +Dustin Soodak for help with the user interface improvements; +Jacob Calvert for the T Flip Flop; Ben Hayden for scope spectrum; +Francisco Campos for the DC Motor; +Bill Collis for the thermistor and LDR; +Mark McGarry for AVR8js support; Uri Shaked for AVR8js; +Johannes Bauer for WebSocket support; +Thomas Reitinger, Krystian Sławiński, Usevalad Khatkevich, Lucio Sciamanna, Mauro Hemerly Gazzani, J. Miguel Silva, Kristian Keilen, Linhart Jiří, Karel Kupa, Franck Viard, David Chen, Taisuke Fukuno, 肖国栋 (Gordon Shaw), 王逸伦, Pablo Sanz Martin for translations; +Andre Adrian for improved emitter coupled oscillator; Felthry for many examples; Colin Howell for code improvements. LZString (c) 2013 pieroxy.

+

This program uses free icons. For more information, please read the list of authors and licenses of these icons and webfonts.

+

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 2 of the License, or (at your option) any later version.

+

This program is distributed in the hope that it will be useful,but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

+

For details of licensing see http://www.gnu.org/licenses/.

+

Source code (Paul):https://github.com/pfalstad/circuitjs1

+

Source code (Iain):https://github.com/sharpie7/circuitjs1

+

+Copyright (c) 1985-1991 The Regents of the University of California. +All rights reserved.

+

IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY PARTY FOR +DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT +OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE UNIVERSITY OF +CALIFORNIA HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

+

THE UNIVERSITY OF CALIFORNIA SPECIFICALLY DISCLAIMS ANY WARRANTIES, +INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS FOR A PARTICULAR PURPOSE. THE SOFTWARE PROVIDED HEREUNDER IS ON AN +"AS IS" BASIS, AND THE UNIVERSITY OF CALIFORNIA HAS NO OBLIGATION TO PROVIDE +MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS. +

canvas2svg: Copyright (c) 2014 Gliffy Inc.

+ +

+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

+ +
+ diff --git a/avr8js/analog.html b/avr8js/analog.html new file mode 100644 index 0000000..6aa5a09 --- /dev/null +++ b/avr8js/analog.html @@ -0,0 +1,33 @@ +AVR8js CircuitJS1 Demo

AVR8js CircuitJS1 Demo

+ + +

LED strobe, Logic, Analog Read

+ +
+

Click Run below to start the simulation.

+
 
 
+ diff --git a/avr8js/index.html b/avr8js/index.html new file mode 100644 index 0000000..6158dd7 --- /dev/null +++ b/avr8js/index.html @@ -0,0 +1,38 @@ +AVR8js CircuitJS1 Demo

AVR8js CircuitJS1 Demo

+ + +

LED strobe, Logic, Analog Read

+ +
+

Click Run below to start the simulation.

+
 
 
diff --git a/avr8js/logic.html b/avr8js/logic.html new file mode 100644 index 0000000..a790939 --- /dev/null +++ b/avr8js/logic.html @@ -0,0 +1,33 @@ +AVR8js CircuitJS1 Demo

AVR8js CircuitJS1 Demo

+ + +

LED strobe, Logic, Analog Read

+ +
+

Click Run below to start the simulation.

+
 
 
diff --git a/avr8js/src.avr8js.css b/avr8js/src.avr8js.css new file mode 100644 index 0000000..b11a1be --- /dev/null +++ b/avr8js/src.avr8js.css @@ -0,0 +1,55 @@ +body { + padding: 0 16px; + font-family: 'Roboto', sans-serif; + width: 100%; + box-sizing: border-box; +} + +.app-container { + width: 700px; + max-width: 100%; +} + +.toolbar { + padding: 4px; + display: flex; + background-color: #ddd; + box-sizing: border-box; + width: 100%; +} + +.toolbar > button { + margin-right: 4px; +} + +.spacer { + flex: 1; +} + +.code-editor { + width: 100%; + max-width: 100%; + height: 300px; + box-sizing: border-box; + border: 1px solid grey; +} + +.compiler-output { + width: 100%; + box-sizing: border-box; + padding: 8px 12px; + max-height: 160px; + overflow: auto; +} + +.compiler-output pre { + margin: 0; + white-space: pre-line; +} + +#serial-output-text { + color: blue; +} + + +/*# sourceMappingURL=/src.77de5100.css.map */ \ No newline at end of file diff --git a/avr8js/src.avr8js.css.map b/avr8js/src.avr8js.css.map new file mode 100644 index 0000000..9a7b7d4 --- /dev/null +++ b/avr8js/src.avr8js.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["index.css"],"names":[],"mappings":"AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"src.77de5100.css","sourceRoot":"../src","sourcesContent":["body {\n padding: 0 16px;\n font-family: 'Roboto', sans-serif;\n width: 100%;\n box-sizing: border-box;\n}\n\n.app-container {\n width: 700px;\n max-width: 100%;\n}\n\n.toolbar {\n padding: 4px;\n display: flex;\n background-color: #ddd;\n box-sizing: border-box;\n width: 100%;\n}\n\n.toolbar > button {\n margin-right: 4px;\n}\n\n.spacer {\n flex: 1;\n}\n\n.code-editor {\n width: 100%;\n max-width: 100%;\n height: 300px;\n box-sizing: border-box;\n border: 1px solid grey;\n}\n\n.compiler-output {\n width: 100%;\n box-sizing: border-box;\n padding: 8px 12px;\n max-height: 160px;\n overflow: auto;\n}\n\n.compiler-output pre {\n margin: 0;\n white-space: pre-line;\n}\n\n#serial-output-text {\n color: blue;\n}\n"]} \ No newline at end of file diff --git a/avr8js/src.avr8js.js b/avr8js/src.avr8js.js new file mode 100644 index 0000000..815ce11 --- /dev/null +++ b/avr8js/src.avr8js.js @@ -0,0 +1,11640 @@ +// modules are defined as an array +// [ module function, map of requires ] +// +// map of requires is short require name -> numeric require +// +// anything defined in a previous bundle is accessed via the +// orig method which is the require for previous bundles +parcelRequire = (function (modules, cache, entry, globalName) { + // Save the require from previous bundle to this closure if any + var previousRequire = typeof parcelRequire === 'function' && parcelRequire; + var nodeRequire = typeof require === 'function' && require; + + function newRequire(name, jumped) { + if (!cache[name]) { + if (!modules[name]) { + // if we cannot find the module within our internal map or + // cache jump to the current global require ie. the last bundle + // that was added to the page. + var currentRequire = typeof parcelRequire === 'function' && parcelRequire; + if (!jumped && currentRequire) { + return currentRequire(name, true); + } + + // If there are other bundles on this page the require from the + // previous one is saved to 'previousRequire'. Repeat this as + // many times as there are bundles until the module is found or + // we exhaust the require chain. + if (previousRequire) { + return previousRequire(name, true); + } + + // Try the node require function if it exists. + if (nodeRequire && typeof name === 'string') { + return nodeRequire(name); + } + + var err = new Error('Cannot find module \'' + name + '\''); + err.code = 'MODULE_NOT_FOUND'; + throw err; + } + + localRequire.resolve = resolve; + localRequire.cache = {}; + + var module = cache[name] = new newRequire.Module(name); + + modules[name][0].call(module.exports, localRequire, module, module.exports, this); + } + + return cache[name].exports; + + function localRequire(x){ + return newRequire(localRequire.resolve(x)); + } + + function resolve(x){ + return modules[name][1][x] || x; + } + } + + function Module(moduleName) { + this.id = moduleName; + this.bundle = newRequire; + this.exports = {}; + } + + newRequire.isParcelRequire = true; + newRequire.Module = Module; + newRequire.modules = modules; + newRequire.cache = cache; + newRequire.parent = previousRequire; + newRequire.register = function (id, exports) { + modules[id] = [function (require, module) { + module.exports = exports; + }, {}]; + }; + + var error; + for (var i = 0; i < entry.length; i++) { + try { + newRequire(entry[i]); + } catch (e) { + // Save first error but execute all entries + if (!error) { + error = e; + } + } + } + + if (entry.length) { + // Expose entry point to Node, AMD or browser globals + // Based on https://github.com/ForbesLindesay/umd/blob/master/template.js + var mainExports = newRequire(entry[entry.length - 1]); + + // CommonJS + if (typeof exports === "object" && typeof module !== "undefined") { + module.exports = mainExports; + + // RequireJS + } else if (typeof define === "function" && define.amd) { + define(function () { + return mainExports; + }); + + // + + + \ No newline at end of file diff --git a/canvas2svg.js b/canvas2svg.js new file mode 100644 index 0000000..c70fa06 --- /dev/null +++ b/canvas2svg.js @@ -0,0 +1,1254 @@ +/*!! + * Canvas 2 Svg v1.0.19 + * A low level canvas to SVG converter. Uses a mock canvas context to build an SVG document. + * + * Licensed under the MIT license: + * http://www.opensource.org/licenses/mit-license.php + * + * Author: + * Kerry Liu + * + * Copyright (c) 2014 Gliffy Inc. + */ + +;(function () { + "use strict"; + + var STYLES, ctx, CanvasGradient, CanvasPattern, namedEntities; + + //helper function to format a string + function format(str, args) { + var keys = Object.keys(args), i; + for (i=0; i 1) { + options = defaultOptions; + options.width = arguments[0]; + options.height = arguments[1]; + } else if ( !o ) { + options = defaultOptions; + } else { + options = o; + } + + if (!(this instanceof ctx)) { + //did someone call this without new? + return new ctx(options); + } + + //setup options + this.width = options.width || defaultOptions.width; + this.height = options.height || defaultOptions.height; + this.enableMirroring = options.enableMirroring !== undefined ? options.enableMirroring : defaultOptions.enableMirroring; + + this.canvas = this; ///point back to this instance! + this.__document = options.document || document; + + // allow passing in an existing context to wrap around + // if a context is passed in, we know a canvas already exist + if (options.ctx) { + this.__ctx = options.ctx; + } else { + this.__canvas = this.__document.createElement("canvas"); + this.__ctx = this.__canvas.getContext("2d"); + } + + this.__setDefaultStyles(); + this.__stack = [this.__getStyleState()]; + this.__groupStack = []; + + //the root svg element + this.__root = this.__document.createElementNS("http://www.w3.org/2000/svg", "svg"); + this.__root.setAttribute("version", 1.1); + this.__root.setAttribute("xmlns", "http://www.w3.org/2000/svg"); + this.__root.setAttributeNS("http://www.w3.org/2000/xmlns/", "xmlns:xlink", "http://www.w3.org/1999/xlink"); + this.__root.setAttribute("width", this.width); + this.__root.setAttribute("height", this.height); + + //make sure we don't generate the same ids in defs + this.__ids = {}; + + //defs tag + this.__defs = this.__document.createElementNS("http://www.w3.org/2000/svg", "defs"); + this.__root.appendChild(this.__defs); + + //also add a group child. the svg element can't use the transform attribute + this.__currentElement = this.__document.createElementNS("http://www.w3.org/2000/svg", "g"); + this.__root.appendChild(this.__currentElement); + }; + + + /** + * Creates the specified svg element + * @private + */ + ctx.prototype.__createElement = function (elementName, properties, resetFill) { + if (typeof properties === "undefined") { + properties = {}; + } + + var element = this.__document.createElementNS("http://www.w3.org/2000/svg", elementName), + keys = Object.keys(properties), i, key; + if (resetFill) { + //if fill or stroke is not specified, the svg element should not display. By default SVG's fill is black. + element.setAttribute("fill", "none"); + element.setAttribute("stroke", "none"); + } + for (i=0; i 0) { + if (this.__currentElement.nodeName === "path") { + if (!this.__currentElementsToStyle) this.__currentElementsToStyle = {element: parent, children: []}; + this.__currentElementsToStyle.children.push(this.__currentElement) + this.__applyCurrentDefaultPath(); + } + + var group = this.__createElement("g"); + parent.appendChild(group); + this.__currentElement = group; + } + + var transform = this.__currentElement.getAttribute("transform"); + if (transform) { + transform += " "; + } else { + transform = ""; + } + transform += t; + this.__currentElement.setAttribute("transform", transform); + }; + + /** + * scales the current element + */ + ctx.prototype.scale = function (x, y) { + if (y === undefined) { + y = x; + } + this.__addTransform(format("scale({x},{y})", {x:x, y:y})); + }; + + /** + * rotates the current element + */ + ctx.prototype.rotate = function (angle) { + var degrees = (angle * 180 / Math.PI); + this.__addTransform(format("rotate({angle},{cx},{cy})", {angle:degrees, cx:0, cy:0})); + }; + + /** + * translates the current element + */ + ctx.prototype.translate = function (x, y) { + this.__addTransform(format("translate({x},{y})", {x:x,y:y})); + }; + + /** + * applies a transform to the current element + */ + ctx.prototype.transform = function (a, b, c, d, e, f) { + this.__addTransform(format("matrix({a},{b},{c},{d},{e},{f})", {a:a, b:b, c:c, d:d, e:e, f:f})); + }; + + /** + * Create a new Path Element + */ + ctx.prototype.beginPath = function () { + var path, parent; + + // Note that there is only one current default path, it is not part of the drawing state. + // See also: https://html.spec.whatwg.org/multipage/scripting.html#current-default-path + this.__currentDefaultPath = ""; + this.__currentPosition = {}; + + path = this.__createElement("path", {}, true); + parent = this.__closestGroupOrSvg(); + parent.appendChild(path); + this.__currentElement = path; + }; + + /** + * Helper function to apply currentDefaultPath to current path element + * @private + */ + ctx.prototype.__applyCurrentDefaultPath = function () { + var currentElement = this.__currentElement; + if (currentElement.nodeName === "path") { + currentElement.setAttribute("d", this.__currentDefaultPath); + } else { + console.error("Attempted to apply path command to node", currentElement.nodeName); + } + }; + + /** + * Helper function to add path command + * @private + */ + ctx.prototype.__addPathCommand = function (command) { + this.__currentDefaultPath += " "; + this.__currentDefaultPath += command; + }; + + /** + * Adds the move command to the current path element, + * if the currentPathElement is not empty create a new path element + */ + ctx.prototype.moveTo = function (x,y) { + if (this.__currentElement.nodeName !== "path") { + this.beginPath(); + } + + // creates a new subpath with the given point + this.__currentPosition = {x: x, y: y}; + this.__addPathCommand(format("M {x} {y}", {x:x, y:y})); + }; + + /** + * Closes the current path + */ + ctx.prototype.closePath = function () { + if (this.__currentDefaultPath) { + this.__addPathCommand("Z"); + } + }; + + /** + * Adds a line to command + */ + ctx.prototype.lineTo = function (x, y) { + this.__currentPosition = {x: x, y: y}; + if (this.__currentDefaultPath.indexOf('M') > -1) { + this.__addPathCommand(format("L {x} {y}", {x:x, y:y})); + } else { + this.__addPathCommand(format("M {x} {y}", {x:x, y:y})); + } + }; + + /** + * Add a bezier command + */ + ctx.prototype.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) { + this.__currentPosition = {x: x, y: y}; + this.__addPathCommand(format("C {cp1x} {cp1y} {cp2x} {cp2y} {x} {y}", + {cp1x:cp1x, cp1y:cp1y, cp2x:cp2x, cp2y:cp2y, x:x, y:y})); + }; + + /** + * Adds a quadratic curve to command + */ + ctx.prototype.quadraticCurveTo = function (cpx, cpy, x, y) { + this.__currentPosition = {x: x, y: y}; + this.__addPathCommand(format("Q {cpx} {cpy} {x} {y}", {cpx:cpx, cpy:cpy, x:x, y:y})); + }; + + + /** + * Return a new normalized vector of given vector + */ + var normalize = function (vector) { + var len = Math.sqrt(vector[0] * vector[0] + vector[1] * vector[1]); + return [vector[0] / len, vector[1] / len]; + }; + + /** + * Adds the arcTo to the current path + * + * @see http://www.w3.org/TR/2015/WD-2dcontext-20150514/#dom-context-2d-arcto + */ + ctx.prototype.arcTo = function (x1, y1, x2, y2, radius) { + // Let the point (x0, y0) be the last point in the subpath. + var x0 = this.__currentPosition && this.__currentPosition.x; + var y0 = this.__currentPosition && this.__currentPosition.y; + + // First ensure there is a subpath for (x1, y1). + if (typeof x0 == "undefined" || typeof y0 == "undefined") { + return; + } + + // Negative values for radius must cause the implementation to throw an IndexSizeError exception. + if (radius < 0) { + throw new Error("IndexSizeError: The radius provided (" + radius + ") is negative."); + } + + // If the point (x0, y0) is equal to the point (x1, y1), + // or if the point (x1, y1) is equal to the point (x2, y2), + // or if the radius radius is zero, + // then the method must add the point (x1, y1) to the subpath, + // and connect that point to the previous point (x0, y0) by a straight line. + if (((x0 === x1) && (y0 === y1)) + || ((x1 === x2) && (y1 === y2)) + || (radius === 0)) { + this.lineTo(x1, y1); + return; + } + + // Otherwise, if the points (x0, y0), (x1, y1), and (x2, y2) all lie on a single straight line, + // then the method must add the point (x1, y1) to the subpath, + // and connect that point to the previous point (x0, y0) by a straight line. + var unit_vec_p1_p0 = normalize([x0 - x1, y0 - y1]); + var unit_vec_p1_p2 = normalize([x2 - x1, y2 - y1]); + if (unit_vec_p1_p0[0] * unit_vec_p1_p2[1] === unit_vec_p1_p0[1] * unit_vec_p1_p2[0]) { + this.lineTo(x1, y1); + return; + } + + // Otherwise, let The Arc be the shortest arc given by circumference of the circle that has radius radius, + // and that has one point tangent to the half-infinite line that crosses the point (x0, y0) and ends at the point (x1, y1), + // and that has a different point tangent to the half-infinite line that ends at the point (x1, y1), and crosses the point (x2, y2). + // The points at which this circle touches these two lines are called the start and end tangent points respectively. + + // note that both vectors are unit vectors, so the length is 1 + var cos = (unit_vec_p1_p0[0] * unit_vec_p1_p2[0] + unit_vec_p1_p0[1] * unit_vec_p1_p2[1]); + var theta = Math.acos(Math.abs(cos)); + + // Calculate origin + var unit_vec_p1_origin = normalize([ + unit_vec_p1_p0[0] + unit_vec_p1_p2[0], + unit_vec_p1_p0[1] + unit_vec_p1_p2[1] + ]); + var len_p1_origin = radius / Math.sin(theta / 2); + var x = x1 + len_p1_origin * unit_vec_p1_origin[0]; + var y = y1 + len_p1_origin * unit_vec_p1_origin[1]; + + // Calculate start angle and end angle + // rotate 90deg clockwise (note that y axis points to its down) + var unit_vec_origin_start_tangent = [ + -unit_vec_p1_p0[1], + unit_vec_p1_p0[0] + ]; + // rotate 90deg counter clockwise (note that y axis points to its down) + var unit_vec_origin_end_tangent = [ + unit_vec_p1_p2[1], + -unit_vec_p1_p2[0] + ]; + var getAngle = function (vector) { + // get angle (clockwise) between vector and (1, 0) + var x = vector[0]; + var y = vector[1]; + if (y >= 0) { // note that y axis points to its down + return Math.acos(x); + } else { + return -Math.acos(x); + } + }; + var startAngle = getAngle(unit_vec_origin_start_tangent); + var endAngle = getAngle(unit_vec_origin_end_tangent); + + // Connect the point (x0, y0) to the start tangent point by a straight line + this.lineTo(x + unit_vec_origin_start_tangent[0] * radius, + y + unit_vec_origin_start_tangent[1] * radius); + + // Connect the start tangent point to the end tangent point by arc + // and adding the end tangent point to the subpath. + this.arc(x, y, radius, startAngle, endAngle); + }; + + /** + * Sets the stroke property on the current element + */ + ctx.prototype.stroke = function () { + if (this.__currentElement.nodeName === "path") { + this.__currentElement.setAttribute("paint-order", "fill stroke markers"); + } + this.__applyCurrentDefaultPath(); + this.__applyStyleToCurrentElement("stroke"); + }; + + /** + * Sets fill properties on the current element + */ + ctx.prototype.fill = function () { + if (this.__currentElement.nodeName === "path") { + this.__currentElement.setAttribute("paint-order", "stroke fill markers"); + } + this.__applyCurrentDefaultPath(); + this.__applyStyleToCurrentElement("fill"); + }; + + /** + * Adds a rectangle to the path. + */ + ctx.prototype.rect = function (x, y, width, height) { + if (this.__currentElement.nodeName !== "path") { + this.beginPath(); + } + this.moveTo(x, y); + this.lineTo(x+width, y); + this.lineTo(x+width, y+height); + this.lineTo(x, y+height); + this.lineTo(x, y); + this.closePath(); + }; + + + /** + * adds a rectangle element + */ + ctx.prototype.fillRect = function (x, y, width, height) { + var rect, parent; + rect = this.__createElement("rect", { + x : x, + y : y, + width : width, + height : height + }, true); + parent = this.__closestGroupOrSvg(); + parent.appendChild(rect); + this.__currentElement = rect; + this.__applyStyleToCurrentElement("fill"); + }; + + /** + * Draws a rectangle with no fill + * @param x + * @param y + * @param width + * @param height + */ + ctx.prototype.strokeRect = function (x, y, width, height) { + var rect, parent; + rect = this.__createElement("rect", { + x : x, + y : y, + width : width, + height : height + }, true); + parent = this.__closestGroupOrSvg(); + parent.appendChild(rect); + this.__currentElement = rect; + this.__applyStyleToCurrentElement("stroke"); + }; + + + /** + * Clear entire canvas: + * 1. save current transforms + * 2. remove all the childNodes of the root g element + */ + ctx.prototype.__clearCanvas = function () { + var current = this.__closestGroupOrSvg(), + transform = current.getAttribute("transform"); + var rootGroup = this.__root.childNodes[1]; + var childNodes = rootGroup.childNodes; + for (var i = childNodes.length - 1; i >= 0; i--) { + if (childNodes[i]) { + rootGroup.removeChild(childNodes[i]); + } + } + this.__currentElement = rootGroup; + //reset __groupStack as all the child group nodes are all removed. + this.__groupStack = []; + if (transform) { + this.__addTransform(transform); + } + }; + + /** + * "Clears" a canvas by just drawing a white rectangle in the current group. + */ + ctx.prototype.clearRect = function (x, y, width, height) { + //clear entire canvas + if (x === 0 && y === 0 && width === this.width && height === this.height) { + this.__clearCanvas(); + return; + } + var rect, parent = this.__closestGroupOrSvg(); + rect = this.__createElement("rect", { + x : x, + y : y, + width : width, + height : height, + fill : "#FFFFFF" + }, true); + parent.appendChild(rect); + }; + + /** + * Adds a linear gradient to a defs tag. + * Returns a canvas gradient object that has a reference to it's parent def + */ + ctx.prototype.createLinearGradient = function (x1, y1, x2, y2) { + var grad = this.__createElement("linearGradient", { + id : randomString(this.__ids), + x1 : x1+"px", + x2 : x2+"px", + y1 : y1+"px", + y2 : y2+"px", + "gradientUnits" : "userSpaceOnUse" + }, false); + this.__defs.appendChild(grad); + return new CanvasGradient(grad, this); + }; + + /** + * Adds a radial gradient to a defs tag. + * Returns a canvas gradient object that has a reference to it's parent def + */ + ctx.prototype.createRadialGradient = function (x0, y0, r0, x1, y1, r1) { + var grad = this.__createElement("radialGradient", { + id : randomString(this.__ids), + cx : x1+"px", + cy : y1+"px", + r : r1+"px", + fx : x0+"px", + fy : y0+"px", + "gradientUnits" : "userSpaceOnUse" + }, false); + this.__defs.appendChild(grad); + return new CanvasGradient(grad, this); + + }; + + /** + * Parses the font string and returns svg mapping + * @private + */ + ctx.prototype.__parseFont = function () { + var regex = /^\s*(?=(?:(?:[-a-z]+\s*){0,2}(italic|oblique))?)(?=(?:(?:[-a-z]+\s*){0,2}(small-caps))?)(?=(?:(?:[-a-z]+\s*){0,2}(bold(?:er)?|lighter|[1-9]00))?)(?:(?:normal|\1|\2|\3)\s*){0,3}((?:xx?-)?(?:small|large)|medium|smaller|larger|[.\d]+(?:\%|in|[cem]m|ex|p[ctx]))(?:\s*\/\s*(normal|[.\d]+(?:\%|in|[cem]m|ex|p[ctx])))?\s*([-,\'\"\sa-z0-9]+?)\s*$/i; + var fontPart = regex.exec( this.font ); + var data = { + style : fontPart[1] || 'normal', + size : fontPart[4] || '10px', + family : fontPart[6] || 'sans-serif', + weight: fontPart[3] || 'normal', + decoration : fontPart[2] || 'normal', + href : null + }; + + //canvas doesn't support underline natively, but we can pass this attribute + if (this.__fontUnderline === "underline") { + data.decoration = "underline"; + } + + //canvas also doesn't support linking, but we can pass this as well + if (this.__fontHref) { + data.href = this.__fontHref; + } + + return data; + }; + + /** + * Helper to link text fragments + * @param font + * @param element + * @return {*} + * @private + */ + ctx.prototype.__wrapTextLink = function (font, element) { + if (font.href) { + var a = this.__createElement("a"); + a.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", font.href); + a.appendChild(element); + return a; + } + return element; + }; + + /** + * Fills or strokes text + * @param text + * @param x + * @param y + * @param action - stroke or fill + * @private + */ + ctx.prototype.__applyText = function (text, x, y, action) { + var font = this.__parseFont(), + parent = this.__closestGroupOrSvg(), + textElement = this.__createElement("text", { + "font-family" : font.family, + "font-size" : font.size, + "font-style" : font.style, + "font-weight" : font.weight, + "text-decoration" : font.decoration, + "x" : x, + "y" : y, + "text-anchor": getTextAnchor(this.textAlign), + "dominant-baseline": getDominantBaseline(this.textBaseline) + }, true); + + textElement.appendChild(this.__document.createTextNode(text)); + this.__currentElement = textElement; + this.__applyStyleToCurrentElement(action); + parent.appendChild(this.__wrapTextLink(font,textElement)); + }; + + /** + * Creates a text element + * @param text + * @param x + * @param y + */ + ctx.prototype.fillText = function (text, x, y) { + this.__applyText(text, x, y, "fill"); + }; + + /** + * Strokes text + * @param text + * @param x + * @param y + */ + ctx.prototype.strokeText = function (text, x, y) { + this.__applyText(text, x, y, "stroke"); + }; + + /** + * No need to implement this for svg. + * @param text + * @return {TextMetrics} + */ + ctx.prototype.measureText = function (text) { + this.__ctx.font = this.font; + return this.__ctx.measureText(text); + }; + + /** + * Arc command! + */ + ctx.prototype.arc = function (x, y, radius, startAngle, endAngle, counterClockwise) { + // in canvas no circle is drawn if no angle is provided. + if (startAngle === endAngle) { + return; + } + startAngle = startAngle % (2*Math.PI); + endAngle = endAngle % (2*Math.PI); + if (endAngle == 6.28318) endAngle = 6.27; // fix for missing posts + if (startAngle === endAngle) { + //circle time! subtract some of the angle so svg is happy (svg elliptical arc can't draw a full circle) + endAngle = ((endAngle + (2*Math.PI)) - 0.001 * (counterClockwise ? -1 : 1)) % (2*Math.PI); + } + var endX = x+radius*Math.cos(endAngle), + endY = y+radius*Math.sin(endAngle), + startX = x+radius*Math.cos(startAngle), + startY = y+radius*Math.sin(startAngle), + sweepFlag = counterClockwise ? 0 : 1, + largeArcFlag = 0, + diff = endAngle - startAngle; + + // https://github.com/gliffy/canvas2svg/issues/4 + if (diff < 0) { + diff += 2*Math.PI; + } + + if (counterClockwise) { + largeArcFlag = diff > Math.PI ? 0 : 1; + } else { + largeArcFlag = diff > Math.PI ? 1 : 0; + } + + this.lineTo(startX, startY); + this.__addPathCommand(format("A {rx} {ry} {xAxisRotation} {largeArcFlag} {sweepFlag} {endX} {endY}", + {rx:radius, ry:radius, xAxisRotation:0, largeArcFlag:largeArcFlag, sweepFlag:sweepFlag, endX:endX, endY:endY})); + + this.__currentPosition = {x: endX, y: endY}; + }; + + // simple implementation of ellipse. rotation is not supported + ctx.prototype.ellipse = function (x, y, radiusX, radiusY, rotation, startAngle, endAngle, counterClockwise) { + // in canvas no circle is drawn if no angle is provided. + if (startAngle === endAngle) { + return; + } + startAngle = startAngle % (2*Math.PI); + endAngle = endAngle % (2*Math.PI); + if (startAngle === endAngle) { + //circle time! subtract some of the angle so svg is happy (svg elliptical arc can't draw a full circle) + endAngle = ((endAngle + (2*Math.PI)) - 0.001 * (counterClockwise ? -1 : 1)) % (2*Math.PI); + } + var endX = x+radiusX*Math.cos(endAngle), + endY = y+radiusY*Math.sin(endAngle), + startX = x+radiusX*Math.cos(startAngle), + startY = y+radiusY*Math.sin(startAngle), + sweepFlag = counterClockwise ? 0 : 1, + largeArcFlag = 0, + diff = endAngle - startAngle; + + // https://github.com/gliffy/canvas2svg/issues/4 + if (diff < 0) { + diff += 2*Math.PI; + } + + if (counterClockwise) { + largeArcFlag = diff > Math.PI ? 0 : 1; + } else { + largeArcFlag = diff > Math.PI ? 1 : 0; + } + + this.lineTo(startX, startY); + this.__addPathCommand(format("A {rx} {ry} {xAxisRotation} {largeArcFlag} {sweepFlag} {endX} {endY}", + {rx:radiusX, ry:radiusY, xAxisRotation:0, largeArcFlag:largeArcFlag, sweepFlag:sweepFlag, endX:endX, endY:endY})); + + this.__currentPosition = {x: endX, y: endY}; + }; + + /** + * Generates a ClipPath from the clip command. + */ + ctx.prototype.clip = function () { + var group = this.__closestGroupOrSvg(), + clipPath = this.__createElement("clipPath"), + id = randomString(this.__ids), + newGroup = this.__createElement("g"); + + this.__applyCurrentDefaultPath(); + group.removeChild(this.__currentElement); + clipPath.setAttribute("id", id); + clipPath.appendChild(this.__currentElement); + + this.__defs.appendChild(clipPath); + + //set the clip path to this group + group.setAttribute("clip-path", format("url(#{id})", {id:id})); + + //clip paths can be scaled and transformed, we need to add another wrapper group to avoid later transformations + // to this path + group.appendChild(newGroup); + + this.__currentElement = newGroup; + + }; + + /** + * Draws a canvas, image or mock context to this canvas. + * Note that all svg dom manipulation uses node.childNodes rather than node.children for IE support. + * http://www.whatwg.org/specs/web-apps/current-work/multipage/the-canvas-element.html#dom-context-2d-drawimage + */ + ctx.prototype.drawImage = function () { + //convert arguments to a real array + var args = Array.prototype.slice.call(arguments), + image=args[0], + dx, dy, dw, dh, sx=0, sy=0, sw, sh, parent, svg, defs, group, + currentElement, svgImage, canvas, context, id; + + if (args.length === 3) { + dx = args[1]; + dy = args[2]; + sw = image.width; + sh = image.height; + dw = sw; + dh = sh; + } else if (args.length === 5) { + dx = args[1]; + dy = args[2]; + dw = args[3]; + dh = args[4]; + sw = image.width; + sh = image.height; + } else if (args.length === 9) { + sx = args[1]; + sy = args[2]; + sw = args[3]; + sh = args[4]; + dx = args[5]; + dy = args[6]; + dw = args[7]; + dh = args[8]; + } else { + throw new Error("Invalid number of arguments passed to drawImage: " + arguments.length); + } + + parent = this.__closestGroupOrSvg(); + currentElement = this.__currentElement; + var translateDirective = "translate(" + dx + ", " + dy + ")"; + if (image instanceof ctx) { + //canvas2svg mock canvas context. In the future we may want to clone nodes instead. + //also I'm currently ignoring dw, dh, sw, sh, sx, sy for a mock context. + svg = image.getSvg().cloneNode(true); + if (svg.childNodes && svg.childNodes.length > 1) { + defs = svg.childNodes[0]; + while(defs.childNodes.length) { + id = defs.childNodes[0].getAttribute("id"); + this.__ids[id] = id; + this.__defs.appendChild(defs.childNodes[0]); + } + group = svg.childNodes[1]; + if (group) { + //save original transform + var originTransform = group.getAttribute("transform"); + var transformDirective; + if (originTransform) { + transformDirective = originTransform+" "+translateDirective; + } else { + transformDirective = translateDirective; + } + group.setAttribute("transform", transformDirective); + parent.appendChild(group); + } + } + } else if (image.nodeName === "CANVAS" || image.nodeName === "IMG") { + //canvas or image + svgImage = this.__createElement("image"); + svgImage.setAttribute("width", dw); + svgImage.setAttribute("height", dh); + svgImage.setAttribute("preserveAspectRatio", "none"); + + if (sx || sy || sw !== image.width || sh !== image.height) { + //crop the image using a temporary canvas + canvas = this.__document.createElement("canvas"); + canvas.width = dw; + canvas.height = dh; + context = canvas.getContext("2d"); + context.drawImage(image, sx, sy, sw, sh, 0, 0, dw, dh); + image = canvas; + } + svgImage.setAttribute("transform", translateDirective); + svgImage.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", + image.nodeName === "CANVAS" ? image.toDataURL() : image.getAttribute("src")); + parent.appendChild(svgImage); + } + }; + + /** + * Generates a pattern tag + */ + ctx.prototype.createPattern = function (image, repetition) { + var pattern = this.__document.createElementNS("http://www.w3.org/2000/svg", "pattern"), id = randomString(this.__ids), + img; + pattern.setAttribute("id", id); + pattern.setAttribute("width", image.width); + pattern.setAttribute("height", image.height); + if (image.nodeName === "CANVAS" || image.nodeName === "IMG") { + img = this.__document.createElementNS("http://www.w3.org/2000/svg", "image"); + img.setAttribute("width", image.width); + img.setAttribute("height", image.height); + img.setAttributeNS("http://www.w3.org/1999/xlink", "xlink:href", + image.nodeName === "CANVAS" ? image.toDataURL() : image.getAttribute("src")); + pattern.appendChild(img); + this.__defs.appendChild(pattern); + } else if (image instanceof ctx) { + pattern.appendChild(image.__root.childNodes[1]); + this.__defs.appendChild(pattern); + } + return new CanvasPattern(pattern, this); + }; + + ctx.prototype.setLineDash = function (dashArray) { + if (dashArray && dashArray.length > 0) { + this.lineDash = dashArray.join(","); + } else { + this.lineDash = null; + } + }; + + /** + * Not yet implemented + */ + ctx.prototype.drawFocusRing = function () {}; + ctx.prototype.createImageData = function () {}; + ctx.prototype.getImageData = function () {}; + ctx.prototype.putImageData = function () {}; + ctx.prototype.globalCompositeOperation = function () {}; + ctx.prototype.setTransform = function () {}; + + //add options for alternative namespace + if (typeof window === "object") { + window.C2S = ctx; + } + + // CommonJS/Browserify + if (typeof module === "object" && typeof module.exports === "object") { + module.exports = ctx; + } + +}()); diff --git a/circuitjs.html b/circuitjs.html new file mode 100644 index 0000000..59bb5ed --- /dev/null +++ b/circuitjs.html @@ -0,0 +1,183 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/circuitjs1/34BE10C27C953A8358ADAB184A21D5C0.cache.js b/circuitjs1/34BE10C27C953A8358ADAB184A21D5C0.cache.js new file mode 100644 index 0000000..80fcb3d --- /dev/null +++ b/circuitjs1/34BE10C27C953A8358ADAB184A21D5C0.cache.js @@ -0,0 +1,26 @@ +circuitjs1.onScriptDownloaded(["var $wnd = $wnd || window.parent;var __gwtModuleFunction = $wnd.circuitjs1;var $sendStats = __gwtModuleFunction.__sendStats;$sendStats('moduleStartup', 'moduleEvalStart');var $gwt_version = \"2.8.2\";var $strongName = '34BE10C27C953A8358ADAB184A21D5C0';var $gwt = {};var $doc = $wnd.document;var $moduleName, $moduleBase;function __gwtStartLoadingFragment(frag) {var fragFile = 'deferredjs/' + $strongName + '/' + frag + '.cache.js';return __gwtModuleFunction.__startLoadingFragment(fragFile);}function __gwtInstallCode(code) {return __gwtModuleFunction.__installRunAsyncCode(code);}function __gwt_isKnownPropertyValue(propName, propValue) {return __gwtModuleFunction.__gwt_isKnownPropertyValue(propName, propValue);}function __gwt_getMetaProperty(name) {return __gwtModuleFunction.__gwt_getMetaProperty(name);}var $stats = $wnd.__gwtStatsEvent ? function(a) {return $wnd.__gwtStatsEvent && $wnd.__gwtStatsEvent(a);} : null;var $sessionId = $wnd.__gwtStatsSessionId ? $wnd.__gwtStatsSessionId : null;function S(){}\nfunction aG(){}\nfunction ZF(){}\nfunction mb(){}\nfunction zb(){}\nfunction Cf(){}\nfunction hh(){}\nfunction th(){}\nfunction Ah(){}\nfunction hm(){}\nfunction mm(){}\nfunction tm(){}\nfunction ym(){}\nfunction Im(){}\nfunction Om(){}\nfunction Tm(){}\nfunction Ym(){}\nfunction bn(){}\nfunction gn(){}\nfunction mn(){}\nfunction rn(){}\nfunction An(){}\nfunction Fn(){}\nfunction In(){}\nfunction Ln(){}\nfunction Qn(){}\nfunction io(){}\nfunction Gp(){}\nfunction dq(){}\nfunction jq(){}\nfunction lq(){}\nfunction xH(){}\nfunction zH(){}\nfunction CH(){}\nfunction zI(){}\nfunction _I(){}\nfunction rK(){}\nfunction tK(){}\nfunction YK(){}\nfunction $K(){}\nfunction bP(){}\nfunction qP(){}\nfunction IR(){}\nfunction KR(){}\nfunction RR(){}\nfunction lT(){}\nfunction l7(){}\nfunction d7(){}\nfunction i7(){}\nfunction o7(){}\nfunction r7(){}\nfunction v7(){}\nfunction L$(){}\nfunction $T(a){}\nfunction $ib(){}\nfunction gib(){}\nfunction obb(){}\nfunction heb(){}\nfunction hQb(){}\nfunction qhb(){}\nfunction fjb(){}\nfunction Rpb(){}\nfunction uFb(){}\nfunction VHb(){}\nfunction $Mb(){}\nfunction pRb(){}\nfunction sRb(){}\nfunction BRb(){}\nfunction GRb(){}\nfunction bWb(){}\nfunction jWb(){}\nfunction rWb(){}\nfunction oib(a){}\nfunction jDb(a){}\nfunction CG(){vG()}\nfunction JJ(){HJ()}\nfunction Jg(){Jg=ZF}\nfunction dK(a){II(a)}\nfunction kc(a,b){a.a=b}\nfunction bm(a,b){a.a=b}\nfunction cm(a,b){a.b=b}\nfunction EH(a,b){a.b=b}\nfunction DH(a,b){a.a=b}\nfunction FH(a,b){a.d=b}\nfunction $I(a,b){a.d=b}\nfunction $l(a,b){a.f=b}\nfunction bI(a,b){a.f=b}\nfunction bO(a,b){a.d=b}\nfunction dO(a,b){a.f=b}\nfunction IJ(a,b){a.a=b}\nfunction lP(a,b){a.e=b}\nfunction mP(a,b){a.g=b}\nfunction BQ(a,b){a.e=b}\nfunction DQ(a,b){a.e=b}\nfunction x1(a,b){a.d=b}\nfunction _1(a,b){a.d=b}\nfunction Be(a,b){a.Sb=b}\nfunction jb(a){this.a=a}\nfunction qb(a){this.a=a}\nfunction Mb(a){this.a=a}\nfunction Sb(a){this.a=a}\nfunction Un(a){this.a=a}\nfunction Zn(a){this.a=a}\nfunction co(a){this.a=a}\nfunction Eo(a){this.a=a}\nfunction Wo(a){this.a=a}\nfunction _o(a){this.a=a}\nfunction cH(a){this.a=a}\nfunction mH(a){this.a=a}\nfunction gI(a){this.a=a}\nfunction hI(a){this.a=a}\nfunction jI(a){this.a=a}\nfunction lI(a){this.a=a}\nfunction nI(a){this.a=a}\nfunction pI(a){this.a=a}\nfunction uI(a){this.a=a}\nfunction wI(a){this.a=a}\nfunction xL(a){this.a=a}\nfunction VM(a){this.a=a}\nfunction gN(a){this.a=a}\nfunction LN(a){this.d=a}\nfunction sO(a){this.a=a}\nfunction TO(a){this.a=a}\nfunction PO(a){this.b=a}\nfunction PQ(a){this.a=a}\nfunction nQ(a){this.a=a}\nfunction pQ(a){this.a=a}\nfunction RQ(a){this.a=a}\nfunction TQ(a){this.a=a}\nfunction cP(a){this.a=a}\nfunction jP(a){this.a=a}\nfunction KP(a){this.a=a}\nfunction yR(a){this.a=a}\nfunction BS(a){this.a=a}\nfunction IY(a){this.a=a}\nfunction E_(a){this.a=a}\nfunction l6(a){this.a=a}\nfunction n6(a){this.a=a}\nfunction p6(a){this.a=a}\nfunction r6(a){this.a=a}\nfunction t6(a){this.a=a}\nfunction x6(a){this.a=a}\nfunction z6(a){this.a=a}\nfunction A6(a){this.a=a}\nfunction F6(a){this.a=a}\nfunction H6(a){this.a=a}\nfunction O6(a){this.a=a}\nfunction Q6(a){this.a=a}\nfunction S6(a){this.a=a}\nfunction U6(a){this.a=a}\nfunction W6(a){this.a=a}\nfunction Y6(a){this.a=a}\nfunction $6(a){this.a=a}\nfunction f7(a){this.a=a}\nfunction h7(a){this.c=a}\nfunction cT(a){this.c=a}\nfunction wn(){this.a={}}\nfunction e7(){this.a=-1}\nfunction qAb(){this.f=0}\nfunction rab(a,b){a.d=b}\nfunction Gab(a,b){a.a=b}\nfunction gtb(a,b){a.a=b}\nfunction Rzb(a,b){a.a=b}\nfunction WCb(a,b){a.a=b}\nfunction HCb(a,b){a.Z=b}\nfunction hhb(a,b){a.e=b}\nfunction YU(a,b){a.kb=b}\nfunction vK(a,b){af(b,a)}\nfunction vhb(a){this.a=a}\nfunction thb(a){this.a=a}\nfunction xhb(a){this.a=a}\nfunction zhb(a){this.a=a}\nfunction Bhb(a){this.a=a}\nfunction Dhb(a){this.a=a}\nfunction Fhb(a){this.a=a}\nfunction Hhb(a){this.a=a}\nfunction Yhb(a){this.a=a}\nfunction $hb(a){this.a=a}\nfunction aib(a){this.a=a}\nfunction cib(a){this.a=a}\nfunction eib(a){this.a=a}\nfunction iib(a){this.a=a}\nfunction yib(a){this.a=a}\nfunction Fib(a){this.a=a}\nfunction Lib(a){this.a=a}\nfunction Nib(a){this.a=a}\nfunction Qib(a){this.a=a}\nfunction Sib(a){this.a=a}\nfunction Uib(a){this.a=a}\nfunction bjb(a){this.a=a}\nfunction djb(a){this.a=a}\nfunction kjb(a){this.b=a}\nfunction Rlb(a){this.a=a}\nfunction Tlb(a){this.a=a}\nfunction Vlb(a){this.a=a}\nfunction $lb(a){this.a=a}\nfunction LDb(a){this.a=a}\nfunction NDb(a){this.a=a}\nfunction PDb(a){this.a=a}\nfunction RDb(a){this.a=a}\nfunction TDb(a){this.a=a}\nfunction VDb(a){this.a=a}\nfunction XDb(a){this.a=a}\nfunction ZDb(a){this.a=a}\nfunction _Db(a){this.a=a}\nfunction bEb(a){this.a=a}\nfunction dEb(a){this.a=a}\nfunction fEb(a){this.a=a}\nfunction hEb(a){this.a=a}\nfunction lEb(a){this.a=a}\nfunction oEb(a){this.a=a}\nfunction tEb(a){this.a=a}\nfunction vEb(a){this.a=a}\nfunction mFb(a){this.a=a}\nfunction oFb(a){this.a=a}\nfunction qFb(a){this.a=a}\nfunction sFb(a){this.a=a}\nfunction CGb(a){this.a=a}\nfunction EGb(a){this.a=a}\nfunction GGb(a){this.a=a}\nfunction aHb(a){this.a=a}\nfunction cHb(a){this.a=a}\nfunction eHb(a){this.a=a}\nfunction gHb(a){this.a=a}\nfunction iHb(a){this.a=a}\nfunction WHb(a){this.a=a}\nfunction YHb(a){this.a=a}\nfunction LLb(a){this.a=a}\nfunction NLb(a){this.a=a}\nfunction TLb(a){this.a=a}\nfunction VLb(a){this.a=a}\nfunction XLb(a){this.a=a}\nfunction KRb(a){this.a=a}\nfunction DSb(a){this.a=a}\nfunction vUb(a){this.a=a}\nfunction ZUb(a){this.a=a}\nfunction RUb(a){this.d=a}\nfunction cVb(a){this.a=a}\nfunction OVb(a){this.c=a}\nfunction qYb(a){this.a=a}\nfunction Bg(){this.a=Ig()}\nfunction tS(){tS=ZF;HS()}\nfunction DI(){DI=ZF;XJ()}\nfunction kR(){kR=ZF;oR()}\nfunction mT(){mT=ZF;iT()}\nfunction JWb(){qUb(this)}\nfunction J5(){debugger}\nfunction xF(a){return a.e}\nfunction kqb(a){a.a=false}\nfunction cmb(a){a.b=a.c=0}\nfunction R7(a){a.F=0;a.D=0}\nfunction o9(a){a.o&&a.Bh()}\nfunction Ayb(a){a.A=QU(4)}\nfunction qzb(a){a.A=QU(4)}\nfunction Rf(b,a){b.font=a}\nfunction Th(b,a){b.href=a}\nfunction vi(b,a){b.name=a}\nfunction yi(b,a){b.size=a}\nfunction Vh(b,a){b.width=a}\nfunction Uh(b,a){b.height=a}\nfunction vn(a,b,c){a.a[b]=c}\nfunction _7(a,b,c){a.G[b]=c}\nfunction dmb(a,b){a.b=a.c=b}\nfunction ACb(a,b){a.n=uBb=b}\nfunction MM(a,b){$M(a.lb,b)}\nfunction kH(a,b){uH(a.a,b)}\nfunction Llb(a){Jlb=a;Klb()}\nfunction Wjb(a){a.e=0;a.d=0}\nfunction si(b,a){b.checked=a}\nfunction wi(b,a){b.htmlFor=a}\nfunction Sf(b,a){b.lineCap=a}\nfunction LU(a){return LT==a}\nfunction ih(a){return a.ze()}\nfunction oh(a){nh();mh.Be(a)}\nfunction yJ(a){$wnd.alert(a)}\nfunction l2(){JP.call(this)}\nfunction NRb(){wg.call(this)}\nfunction zSb(){wg.call(this)}\nfunction BSb(){wg.call(this)}\nfunction YSb(){wg.call(this)}\nfunction QTb(){wg.call(this)}\nfunction xWb(){wg.call(this)}\nfunction AXb(){wg.call(this)}\nfunction lc(a){kc(this,a.id)}\nfunction VS(a,b){YS(a,b,a.c)}\nfunction XM(a,b){a.a=b;YM(a)}\nfunction PXb(a,b){rVb(a.a,b)}\nfunction ZXb(a,b){zVb(a.a,b)}\nfunction De(a,b){Mh(a.ce(),b)}\nfunction Mg(a,b){Jg();a.src=b}\nfunction ui(b,a){b.disabled=a}\nfunction Ph(b,a){b.tabIndex=a}\nfunction JG(a){MG(a);this.a=a}\nfunction Em(){this.c=++Bm}\nfunction IG(){this.a=new KTb}\nfunction mK(){this.b=new CVb}\nfunction u7(){this.b=new $Xb}\nfunction gp(){gp=ZF;new JWb}\nfunction Dp(){Dp=ZF;Cp=new Gp}\nfunction Dg(){Dg=ZF;Cg=new S}\nfunction dh(){dh=ZF;bh=new hh}\nfunction HJ(){HJ=ZF;GJ=new Em}\nfunction VO(){VO=ZF;UO=new bP}\nfunction NWb(){this.a=new JWb}\nfunction $Xb(){this.a=new CVb}\nfunction Rhb(a){Nhb(a);Mhb(a)}\nfunction BDb(a){a.Y.o||EDb(a)}\nfunction G5(a){console.log(a)}\nfunction Tb(a){Sb.call(this,a)}\nfunction Fc(a){Sb.call(this,a)}\nfunction xg(a){vg.call(this,a)}\nfunction zg(a){xg.call(this,a)}\nfunction Yo(a){vg.call(this,a)}\nfunction Ho(a){Fo.call(this,a)}\nfunction WK(a){Ho.call(this,a)}\nfunction bL(a){pf.call(this,a)}\nfunction PRb(){NRb.call(this)}\nfunction tO(a){sO.call(this,a)}\nfunction Qf(b,a){b.fillStyle=a}\nfunction Oh(b,a){b.scrollTop=a}\nfunction un(a,b){return a.a[b]}\nfunction bV(a){return a<0?-a:a}\nfunction Ag(a){return Ig()-a.a}\nfunction AM(a){return DI(),a.a}\nfunction NY(a){!!a.j&&SEb(a.j)}\nfunction ttb(a,b){a.d=b;wtb(a)}\nfunction yI(a,b,c){a.a=b;a.b=c}\nfunction lH(a,b,c){vH(a.a,b,c)}\nfunction zP(a,b){EP(a,b,b,-1)}\nfunction rP(a,b){sP(a,b,a.k.c)}\nfunction bM(a,b){IL(a,b);WL(a)}\nfunction zO(a,b){aO(a,b);--a.b}\nfunction DCb(a,b){oCb(a);a.p=b}\nfunction Ob(){Mb.call(this,YYb)}\nfunction Pb(){Mb.call(this,ZYb)}\nfunction Xb(){Mb.call(this,$Yb)}\nfunction Yb(){Mb.call(this,_Yb)}\nfunction Zb(){Mb.call(this,aZb)}\nfunction _b(){Mb.call(this,bZb)}\nfunction ac(){Mb.call(this,cZb)}\nfunction bc(){Mb.call(this,dZb)}\nfunction cc(){Mb.call(this,eZb)}\nfunction sc(){Mb.call(this,fZb)}\nfunction zc(){Mb.call(this,gZb)}\nfunction Ac(){Mb.call(this,hZb)}\nfunction Bc(){Mb.call(this,iZb)}\nfunction Dc(){Mb.call(this,jZb)}\nfunction Ec(){Mb.call(this,kZb)}\nfunction Hc(){Mb.call(this,mZb)}\nfunction Mc(){Mb.call(this,nZb)}\nfunction ae(){Mb.call(this,oZb)}\nfunction de(){Mb.call(this,pZb)}\nfunction ze(){throw xF(new QTb)}\nfunction P$(){P$=ZF;M$=new JWb}\nfunction Tg(){Tg=ZF;!!(nh(),mh)}\nfunction TF(){RF==null&&(RF=[])}\nfunction ue(a){return DI(),a.Sb}\nfunction uf(a){return DI(),a.Sb}\nfunction eW(a,b){return a>b?a:b}\nfunction fW(a,b){return ab?a:b}\nfunction DU(a,b){return a.mb[b]}\nfunction Og(a,b){a.a=b;return a}\nfunction RJ(a,b){a.__listener=b}\nfunction pT(a,b){a.style[m_b]=b}\nfunction Pf(c,a,b){c.scale(a,b)}\nfunction Ae(a,b){Be(a,(DI(),b))}\nfunction hL(a,b){iL((DI(),a),b)}\nfunction ftb(a){b4(jRb,a.b,a.a)}\nfunction TEb(a){a.e=true;SEb(a)}\nfunction TRb(a){return BYb(a),a}\nfunction wSb(a){return BYb(a),a}\nfunction ASb(a){xg.call(this,a)}\nfunction CSb(a){xg.call(this,a)}\nfunction ZSb(a){xg.call(this,a)}\nfunction ORb(a){xg.call(this,a)}\nfunction RTb(a){xg.call(this,a)}\nfunction nYb(a,b){a.splice(b,1)}\nfunction Lf(c,a,b){c.lineTo(a,b)}\nfunction Nf(c,a,b){c.moveTo(a,b)}\nfunction nq(a,b){return jSb(a,b)}\nfunction kq(a){return a[4]||a[1]}\nfunction pf(a){Be(this,(DI(),a))}\nfunction Af(a){Be(this,(DI(),a))}\nfunction KL(a){Be(this,(DI(),a))}\nfunction TN(a){Be(this,(DI(),a))}\nfunction dL(a){eL.call(this,a.a)}\nfunction QRb(a){ORb.call(this,a)}\nfunction MJ(){qo.call(this,null)}\nfunction _Sb(a){ASb.call(this,a)}\nfunction KTb(){KRb.call(this,'')}\nfunction LTb(){KRb.call(this,'')}\nfunction NTb(a){ORb.call(this,a)}\nfunction gxb(){this.a=0;this.b=0}\nfunction ESb(a){this.a=vSb(a,10)}\nfunction oYb(a,b){return vq(a,b)}\nfunction rX(a,b){return a.A[b].o}\nfunction Je(a,b){DI();aK(a.Sb,b)}\nfunction VCb(a,b,c){vCb(a.a,b,c)}\nfunction bb(a,b,c){ab(a,b,Ig(),c)}\nfunction Kb(a,b){Lh(b,'role',a.a)}\nfunction rYb(a){qYb.call(this,a)}\nfunction rc(){Mb.call(this,'log')}\nfunction mc(){Mb.call(this,'img')}\nfunction Yd(){Mb.call(this,'row')}\nfunction he(){Mb.call(this,'tab')}\nfunction Ki(){Fi.call(this,OZb,3)}\nfunction Dk(){Ak.call(this,OZb,1)}\nfunction Yk(){Wk.call(this,VZb,0)}\nfunction Kl(){Hl.call(this,OZb,1)}\nfunction Ee(a,b,c){Pe(a.ce(),b,c)}\nfunction po(a,b){return Bo(a.a,b)}\nfunction DF(a,b){return zF(a,b)>0}\nfunction GF(a,b){return zF(a,b)<0}\nfunction jH(a,b){return rH(a.a,b)}\nfunction CK(a,b){return WS(a.k,b)}\nfunction DK(a,b){return XS(a.k,b)}\nfunction FG(b,a){return b.test(a)}\nfunction Tf(b,a){b.strokeStyle=a}\nfunction iL(a,b){a.style[g_b]=b.a}\nfunction qM(a,b){IL(a.tb,b);WL(a)}\nfunction XR(a,b){li((DI(),a.b),b)}\nfunction ZR(a,b){Oh((DI(),a.b),b)}\nfunction vS(a){(DI(),a.Sb).rows=5}\nfunction aSb(a){_Rb(a);return a.k}\nfunction bSb(a){_Rb(a);return a.i}\nfunction Sh(a){a=wTb(a);return a}\nfunction Kgb(a){a.k=true;return a}\nfunction rib(a){a.p=true;return a}\nfunction sib(a){a.d=true;return a}\nfunction ljb(a){this.b=6;this.c=a}\nfunction lJ(){this.a=new qo(null)}\nfunction HK(){this.k=new _S(this)}\nfunction SRb(){SRb=ZF;RRb=false}\nfunction gXb(){gXb=ZF;fXb=iXb()}\nfunction keb(){keb=ZF;ieb=new JWb}\nfunction $Vb(){$Vb=ZF;ZVb=new bWb}\nfunction iWb(){iWb=ZF;hWb=new jWb}\nfunction qWb(){qWb=ZF;pWb=new rWb}\nfunction PTb(){PTb=ZF;OTb=new GRb}\nfunction ah(){Qg!=0&&(Qg=0);Sg=-1}\nfunction jQ(){kQ.call(this,false)}\nfunction KS(){IS.call(this,VZb,0)}\nfunction fc(){Mb.call(this,'form')}\nfunction gc(){Mb.call(this,'grid')}\nfunction nc(){Mb.call(this,'link')}\nfunction oc(){Mb.call(this,'list')}\nfunction uc(){Mb.call(this,'math')}\nfunction vc(){Mb.call(this,'menu')}\nfunction Cc(){Mb.call(this,'note')}\nfunction oe(){Mb.call(this,'tree')}\nfunction se(a,b){Pe(a.ce(),b,true)}\nfunction Fe(a,b){Qe((DI(),a.Sb),b)}\nfunction He(a,b){Re((DI(),a.Sb),b)}\nfunction xf(a,b){Uh((DI(),a.Sb),b)}\nfunction yf(a,b){Vh((DI(),a.Sb),b)}\nfunction of(a){(DI(),a.Sb).focus()}\nfunction ZU(a,b,c){alb(b,FU(a,c))}\nfunction fxb(a,b,c){a.a+=b;a.b+=c}\nfunction syb(a,b,c){a.c+=b;a.d+=c}\nfunction ETb(a,b){a.a+=b;return a}\nfunction FTb(a,b){a.a+=b;return a}\nfunction Ib(a,b){this.b=a;this.a=b}\nfunction Yf(a,b){this.b=a;this.c=b}\nfunction yg(a,b){pg.call(this,a,b)}\nfunction Fi(a,b){Yf.call(this,a,b)}\nfunction dj(a,b){Yf.call(this,a,b)}\nfunction Rj(a,b){Yf.call(this,a,b)}\nfunction pk(a,b){Yf.call(this,a,b)}\nfunction Ak(a,b){Yf.call(this,a,b)}\nfunction Lk(a,b){Yf.call(this,a,b)}\nfunction Wk(a,b){Yf.call(this,a,b)}\nfunction kl(a,b){Yf.call(this,a,b)}\nfunction ml(){kl.call(this,'PX',0)}\nfunction sl(){kl.call(this,'EX',3)}\nfunction ql(){kl.call(this,'EM',2)}\nfunction Al(){kl.call(this,'CM',7)}\nfunction Cl(){kl.call(this,'MM',8)}\nfunction ul(){kl.call(this,'PT',4)}\nfunction wl(){kl.call(this,'PC',5)}\nfunction yl(){kl.call(this,'IN',6)}\nfunction Hl(a,b){Yf.call(this,a,b)}\nfunction Rl(a,b){Yf.call(this,a,b)}\nfunction Ap(a,b){Yf.call(this,a,b)}\nfunction AI(a,b){this.a=a;this.b=b}\nfunction KH(a,b){this.a=a;this.b=b}\nfunction Uo(a,b){this.b=a;this.a=b}\nfunction Bo(a,b){return iUb(a.d,b)}\nfunction BF(a,b){return zF(a,b)==0}\nfunction EF(a,b){return zF(a,b)>=0}\nfunction KF(a,b){return zF(a,b)!=0}\nfunction TI(a){return OJ((DI(),a))}\nfunction MI(a,b){DI();PJ();cK(a,b)}\nfunction WI(a,b){DI();PJ();cK(a,b)}\nfunction aL(a,b){Nh((DI(),a.Sb),b)}\nfunction RN(a,b){vi((DI(),a.Sb),b)}\nfunction HP(a,b){xi((DI(),a.Sb),b)}\nfunction IP(a,b){yi((DI(),a.Sb),b)}\nfunction TP(a){(DI(),a.Sb).focus()}\nfunction yS(a){(DI(),a.Sb).size=50}\nfunction EM(a,b){JM(a,pm(b),qm(b))}\nfunction FM(a,b){KM(a,pm(b),qm(b))}\nfunction IN(a,b){Yf.call(this,a,b)}\nfunction IS(a,b){Yf.call(this,a,b)}\nfunction ZQ(a,b){Yf.call(this,a,b)}\nfunction sT(a,b){pg.call(this,a,b)}\nfunction EZ(a,b){jZ.call(this,a,b)}\nfunction t$(a,b){$Z.call(this,a,b)}\nfunction G_(a,b){_U.call(this,a,b)}\nfunction oK(a,b){this.a=a;this.b=b}\nfunction qQ(a,b){this.a=a;this.b=b}\nfunction C6(a,b){this.a=a;this.b=b}\nfunction L6(a,b){this.a=a;this.b=b}\nfunction dlb(a){this.a=a;this.b=12}\nfunction rUb(a){return a.a.c+a.b.c}\nfunction tCb(a){return a.A.c+a.A.b}\nfunction oDb(a,b){return a.r+a.t-b}\nfunction ECb(a,b,c){TXb(a._,b).n=c}\nfunction uV(a,b){vV(a,b.b,b.c,b.a)}\nfunction yT(a){Co(a.a,a.d,a.c,a.b)}\nfunction k2(a,b){xi((DI(),a.Sb),b)}\nfunction Xe(a,b){!!a.Pb&&oo(a.Pb,b)}\nfunction Xf(c,a,b){c.translate(a,b)}\nfunction Mh(b,a){b.className=a||''}\nfunction Nh(b,a){b.innerHTML=a||''}\nfunction xi(b,a){b.selectedIndex=a}\nfunction ti(b,a){b.defaultChecked=a}\nfunction hJ(a){gJ();return kJ(eJ,a)}\nfunction Bb(a){$wnd.clearTimeout(a)}\nfunction _g(a){$wnd.clearTimeout(a)}\nfunction FJ(a,b,c){$wnd.open(a,b,c)}\nfunction YL(a,b){a.ub=b?b:(YQ(),VQ)}\nfunction wT(c,a,b){c.open(a,b,true)}\nfunction pV(a,b){Wkb(a,b.b,b.c,b.a)}\nfunction W1(a){qL.call(this,xRb(a))}\nfunction qS(a){pf.call(this,a);Dp()}\nfunction Nb(){Mb.call(this,'alert')}\nfunction le(){Mb.call(this,'timer')}\nfunction ic(){Mb.call(this,'group')}\nfunction Lc(){Mb.call(this,'radio')}\nfunction ol(){kl.call(this,'PCT',1)}\nfunction Vl(){Rl.call(this,'PRE',2)}\nfunction $tb(a,b){t$.call(this,a,b)}\nfunction hub(a,b){$Z.call(this,a,b)}\nfunction htb(a,b){this.b=a;this.a=b}\nfunction jEb(a,b){this.b=a;this.a=b}\nfunction RLb(a,b){this.b=a;this.a=b}\nfunction Ylb(a,b){this.a=a;this.b=b}\nfunction zmb(a,b){this.a=a;this.b=b}\nfunction hxb(a,b){this.a=a;this.b=b}\nfunction mVb(a,b){this.a=a;this.b=b}\nfunction FOb(a,b){_U.call(this,a,b)}\nfunction HQb(a,b){_U.call(this,a,b)}\nfunction HRb(a,b){return eTb(a.a,b)}\nfunction LWb(a,b){return iUb(a.a,b)}\nfunction NXb(a,b){return rVb(a.a,b)}\nfunction OXb(a,b){return sVb(a.a,b)}\nfunction YXb(a,b){return xVb(a.a,b)}\nfunction mXb(a,b){return a.a.get(b)}\nfunction a5(a,b){return b+a.sb&a.rb}\nfunction kr(a){return a==null?null:a}\nfunction Ab(a){$wnd.clearInterval(a)}\nfunction g4(a){a.d=true;y4(a);t3(a)}\nfunction w2(a,b){!!a.Nc&&CQ(a.Nc,b)}\nfunction lYb(a,b,c){a.splice(b,0,c)}\nfunction Ykb(a,b,c,d){Kf(a.a,b,c,d)}\nfunction Rb(a,b,c){Lh(b,a.a,Qb(a,c))}\nfunction nf(a,b){(DI(),a.Sb)[AZb]=!b}\nfunction ai(a,b){a.textContent=b||''}\nfunction ge(){Mb.call(this,'status')}\nfunction ce(){Mb.call(this,'slider')}\nfunction Wb(){Mb.call(this,'banner')}\nfunction Nc(){Mb.call(this,'region')}\nfunction Hi(){Fi.call(this,'NONE',0)}\nfunction Tj(){Rj.call(this,'NONE',0)}\nfunction sj(){dj.call(this,'MOVE',4)}\nfunction pj(){dj.call(this,'AUTO',1)}\nfunction Fk(){Ak.call(this,'AUTO',3)}\nfunction sk(){pk.call(this,'BOLD',1)}\nfunction $k(){Wk.call(this,'LEFT',2)}\nfunction qo(a){ro.call(this,a,false)}\nfunction LH(a){KH.call(this,a.a,a.b)}\nfunction GQ(a,b){LQ.call(this,a.a,b)}\nfunction HQ(a,b){MQ.call(this,a.a,b)}\nfunction KK(a,b){zK(a,b,(DI(),a.Sb))}\nfunction uO(a,b){zK(a,b,(DI(),a.Sb))}\nfunction SR(a){return ii((DI(),a.b))}\nfunction sH(a){return $wnd[a].length}\nfunction yWb(){this.a=new $wnd.Date}\nfunction Pg(){this.b='canvas2svg.js'}\nfunction tp(){tp=ZF;gp();sp=new JWb}\nfunction kXb(){gXb();return new fXb}\nfunction Bjb(a,b){a.a==null&&(a.a=b)}\nfunction J4(a,b){b!=null&&$M(a.zd,b)}\nfunction TW(a,b){BW.call(this,a,b,0)}\nfunction hX(a,b){BW.call(this,a,b,1)}\nfunction fX(a,b){UW.call(this,a,b,1)}\nfunction C$(a,b){UW.call(this,a,b,1)}\nfunction rub(a,b){hub.call(this,a,b)}\nfunction VQb(a,b){hub.call(this,a,b)}\nfunction Oub(a,b){tab.call(this,a,b)}\nfunction iBb(a,b){Wmb.call(this,a,b)}\nfunction Vb(){Mb.call(this,'article')}\nfunction jc(){Mb.call(this,'heading')}\nfunction pc(){Mb.call(this,'listbox')}\nfunction tc(){Mb.call(this,'marquee')}\nfunction xc(){Mb.call(this,'menubar')}\nfunction ie(){Mb.call(this,'tablist')}\nfunction ke(){Mb.call(this,'textbox')}\nfunction me(){Mb.call(this,'toolbar')}\nfunction ne(){Mb.call(this,'tooltip')}\nfunction MS(){IS.call(this,'LEFT',2)}\nfunction kj(){dj.call(this,'TEXT',13)}\nfunction lj(){dj.call(this,'WAIT',14)}\nfunction mj(){dj.call(this,'HELP',15)}\nfunction ak(){Rj.call(this,'FLEX',17)}\nfunction ck(){Rj.call(this,'BLOCK',1)}\nfunction ik(){Rj.call(this,'TABLE',7)}\nfunction Qk(){Lk.call(this,'FIXED',3)}\nfunction _k(){Wk.call(this,'RIGHT',3)}\nfunction Li(){Fi.call(this,'SOLID',4)}\nfunction Gb(a){this.a=a;zb.call(this)}\nfunction Mo(a){this.a=a;zb.call(this)}\nfunction yq(a){return zq(a.l,a.m,a.h)}\nfunction USb(a){return zF(a,0)>0?a:0}\nfunction QI(a){return DI(),OJ(a.type)}\nfunction sQ(a){return ei((DI(),a.Sb))}\nfunction zJ(a){return $wnd.confirm(a)}\nfunction uTb(a,b){return a.substr(b)}\nfunction GTb(a,b){a.a+=''+b;return a}\nfunction HTb(a,b){a.a+=''+b;return a}\nfunction mbb(a,b){a.e=b?a.e|1:a.e&-2}\nfunction idb(a,b){BW.call(this,a,b,0)}\nfunction MR(){ER.call(this,$doc.body)}\nfunction NS(){IS.call(this,'RIGHT',3)}\nfunction eR(a){db.call(this);this.a=a}\nfunction eub(a,b){UW.call(this,a,b,6)}\nfunction zHb(a,b){UW.call(this,a,b,2)}\nfunction blb(a,b){Tf(a.a,b);Qf(a.a,b)}\nfunction GM(a,b){LM((pm(b),qm(b),a))}\nfunction GI(a,b,c){DI();_J(a,KI(b),c)}\nfunction iR(a){this.a=a;zb.call(this)}\nfunction j6(a){this.a=a;zb.call(this)}\nfunction ZWb(a){this.a=kXb();this.b=a}\nfunction pXb(a){this.a=kXb();this.b=a}\nfunction PJ(){if(!NJ){$J();NJ=true}}\nfunction tW(a){return a<0?-1:a==0?0:1}\nfunction fUb(a){return !a?null:a.ei()}\nfunction CXb(a){return a!=null?Y(a):0}\nfunction kTb(a,b){return a.indexOf(b)}\nfunction iTb(a,b){return BYb(a),a===b}\nfunction UXb(a,b){return uVb(a.a,b,0)}\nfunction WJb(a){a.n=273.15;a.o=a.n+25}\nfunction xFb(a){a.b=0;a.a=0;a.c=false}\nfunction vYb(){qYb.call(this,'UTF-8')}\nfunction $b(){Mb.call(this,'combobox')}\nfunction ec(){Mb.call(this,'document')}\nfunction hc(){Mb.call(this,'gridcell')}\nfunction qc(){Mb.call(this,'listitem')}\nfunction yc(){Mb.call(this,'menuitem')}\nfunction qe(){Mb.call(this,'treeitem')}\nfunction pe(){Mb.call(this,'treegrid')}\nfunction Zd(){Mb.call(this,'rowgroup')}\nfunction je(){Mb.call(this,'tabpanel')}\nfunction Ii(){Fi.call(this,'DOTTED',1)}\nfunction Ji(){Fi.call(this,'DASHED',2)}\nfunction tk(){pk.call(this,'BOLDER',2)}\nfunction rk(){pk.call(this,'NORMAL',0)}\nfunction Tl(){Rl.call(this,'NORMAL',0)}\nfunction Ul(){Rl.call(this,'NOWRAP',1)}\nfunction dk(){Rj.call(this,'INLINE',2)}\nfunction hk(){Rj.call(this,'RUN_IN',6)}\nfunction Nk(){Lk.call(this,'STATIC',0)}\nfunction Ek(){Ak.call(this,'SCROLL',2)}\nfunction gh(a,b){a.b=jh(a.b,[b,false])}\nfunction $M(a,b){mN(a.b,b,false);YM(a)}\nfunction HG(a,b){HTb(a.a,b.a);return a}\nfunction gL(a,b){(DI(),a)['align']=b.a}\nfunction RO(a,b){return DI(),a.rows[b]}\nfunction QO(a,b){return RO((DI(),a),b)}\nfunction oN(a,b,c){sN(a,b,(HN(),BN),c)}\nfunction pN(a,b,c){sN(a,b,(HN(),EN),c)}\nfunction UW(a,b,c){BW.call(this,a,b,c)}\nfunction Of(e,a,b,c,d){e.rect(a,b,c,d)}\nfunction Df(c,a,b){c.addColorStop(a,b)}\nfunction Lh(c,a,b){c.setAttribute(a,b)}\nfunction VSb(a,b){return zF(a,b)<0?a:b}\nfunction MSb(a){return a==0?0:a<0?-1:1}\nfunction DWb(a){return a<10?'0'+a:''+a}\nfunction ATb(a){return BTb(a,a.length)}\nfunction wf(a){return (DI(),a.Sb).width}\nfunction Hp(){Hp=ZF;Fp((Dp(),Dp(),Cp))}\nfunction eI(a){aI(a);a.b=RI(new pI(a))}\nfunction hg(a){a.j=rq(FE,XYb,158,0,0,1)}\nfunction fj(){dj.call(this,'DEFAULT',0)}\nfunction rj(){dj.call(this,'POINTER',3)}\nfunction uk(){pk.call(this,'LIGHTER',3)}\nfunction Ck(){Ak.call(this,'VISIBLE',0)}\nfunction Jl(){Hl.call(this,'VISIBLE',0)}\nfunction Zk(){Wk.call(this,'JUSTIFY',1)}\nfunction dc(){Mb.call(this,'directory')}\nfunction be(){Mb.call(this,'separator')}\nfunction $d(){Mb.call(this,'rowheader')}\nfunction _d(){Mb.call(this,'scrollbar')}\nfunction hG(a,b){BG(b.d,b.c);wVb(a.c,b)}\nfunction FK(a,b){return RS(a,WS(a.k,b))}\nfunction qO(a,b,c){return pO(a.a.c,b,c)}\nfunction zq(a,b,c){return {l:a,m:b,h:c}}\nfunction If(d,a,b,c){d.drawImage(a,b,c)}\nfunction dY(a,b){jX();zX.call(this,a,b)}\nfunction LS(){IS.call(this,'JUSTIFY',1)}\nfunction P8(a,b){jX();zX.call(this,a,b)}\nfunction a9(a,b){jX();zX.call(this,a,b)}\nfunction i5(a,b){b>0&&(a.t[b-1].b=true)}\nfunction k5(a,b){b>0&&(a.t[b-1].e=true)}\nfunction Xkb(a,b,c,d,e){Vf(a.a,b,c,d,e)}\nfunction _kb(a,b,c,d,e){Jf(a.a,b,c,d,e)}\nfunction emb(a,b,c,d){a.e=b;a.c=c;a.d=d}\nfunction Do(a){this.d=new JWb;this.c=a}\nfunction FRb(a){this.d=a;this.a=new JWb}\nfunction LI(a){DI();CI=a;PJ();XJ(),TJ=a}\nfunction VI(a){DI();CI=a;PJ();XJ(),TJ=a}\nfunction xS(a){(DI(),a.Sb).maxLength=15}\nfunction zVb(a,b){YVb(a.a,a.a.length,b)}\nfunction fr(a,b){return a!=null&&cr(a,b)}\nfunction FSb(a,b){return ab?1:0}\nfunction Ih(b,a){return parseInt(b[a])|0}\nfunction Ch(b,a){return b.appendChild(a)}\nfunction Fh(b,a){return b.removeChild(a)}\nfunction Mf(b,a){return b.measureText(a)}\nfunction fK(a){a.preventDefault();gK(a)}\nfunction Ocb(a){a.s=rq(pr,l$b,8,2,15,1)}\nfunction Ok(){Lk.call(this,'RELATIVE',1)}\nfunction Pk(){Lk.call(this,'ABSOLUTE',2)}\nfunction Wl(){Rl.call(this,'PRE_LINE',3)}\nfunction Xl(){Rl.call(this,'PRE_WRAP',4)}\nfunction tj(){dj.call(this,'E_RESIZE',5)}\nfunction wj(){dj.call(this,'N_RESIZE',8)}\nfunction _j(){Rj.call(this,'INITIAL',16)}\nfunction Ccb(a,b){jX();zX.call(this,a,b)}\nfunction Reb(a,b){jX();zX.call(this,a,b)}\nfunction Blb(a,b){jX();zX.call(this,a,b)}\nfunction lnb(a,b){jX();zX.call(this,a,b)}\nfunction Vob(a,b){jX();zX.call(this,a,b)}\nfunction Gwb(a,b){jX();zX.call(this,a,b)}\nfunction SIb(a,b){jX();zX.call(this,a,b)}\nfunction hLb(a,b){jX();zX.call(this,a,b)}\nfunction gPb(a,b){jX();zX.call(this,a,b)}\nfunction sPb(a,b){jX();m0.call(this,a,b)}\nfunction jyb(a,b){u9.call(this,a,b,true)}\nfunction Fab(a,b){a.A=rq(Ky,XYb,9,b,0,1)}\nfunction CVb(){this.a=rq(DE,XYb,1,0,5,1)}\nfunction ye(a,b){Pe((DI(),a.Sb),b,false)}\nfunction ve(a){return Ih((DI(),a.Sb),rZb)}\nfunction we(a){return Ih((DI(),a.Sb),sZb)}\nfunction EG(c,a,b){return a.replace(c,b)}\nfunction cU(a,b,c){bU(a,b.a,b.b,c.a,c.b)}\nfunction ggb(a,b){a.p=b;a.q=a.p.n;kgb(a)}\nfunction stb(a,b){a.t=b;a.u=a.t.t;wtb(a)}\nfunction Ce(a,b){(DI(),a.Sb).style[tZb]=b}\nfunction Ie(a,b){(DI(),a.Sb).style[uZb]=b}\nfunction hr(a){return typeof a==='number'}\nfunction jr(a){return typeof a==='string'}\nfunction Gl(){Gl=ZF;Fl=new Jl;El=new Kl}\nfunction VK(){VK=ZF;TK=new YK;UK=new $K}\nfunction xm(){xm=ZF;wm=new Fm($Zb,new ym)}\nfunction Hm(){Hm=ZF;Gm=new Fm(_Zb,new Im)}\nfunction Sm(){Sm=ZF;Rm=new Fm(a$b,new Tm)}\nfunction Xm(){Xm=ZF;Wm=new Fm(b$b,new Ym)}\nfunction ln(){ln=ZF;kn=new Fm(c$b,new mn)}\nfunction zn(){zn=ZF;yn=new Fm(f$b,new An)}\nfunction En(){En=ZF;Dn=new Fm(g$b,new Fn)}\nfunction Kn(){Kn=ZF;Jn=new Fm(h$b,new Ln)}\nfunction Pn(){Pn=ZF;On=new Fm(i$b,new Qn)}\nfunction Iq(a){return a.l+a.m*v$b+a.h*w$b}\nfunction FF(a){return typeof a==='number'}\nfunction fG(a,b,c){return yG(a.b,a.d,b,c)}\nfunction TL(a){return Ih((DI(),a.Sb),rZb)}\nfunction UL(a){return Ih((DI(),a.Sb),sZb)}\nfunction LM(a){a.qb=false;JI((DI(),a.Sb))}\nfunction wg(){hg(this);jg(this);this.xe()}\nfunction ON(a,b){this.a=a;LN.call(this,b)}\nfunction d2(a,b){b2.call(this,a);this.d=b}\nfunction gj(){dj.call(this,'SE_RESIZE',9)}\nfunction uj(){dj.call(this,'NE_RESIZE',6)}\nfunction vj(){dj.call(this,'NW_RESIZE',7)}\nfunction jj(){dj.call(this,'W_RESIZE',12)}\nfunction ij(){dj.call(this,'S_RESIZE',11)}\nfunction qj(){dj.call(this,'CROSSHAIR',2)}\nfunction gk(){Rj.call(this,'LIST_ITEM',5)}\nfunction Bwb(a,b){job.call(this,a,b,true)}\nfunction Cwb(a,b){Hnb.call(this,a,b,true)}\nfunction Ewb(a,b){ytb.call(this,a,b,true)}\nfunction QFb(a,b){OFb();zX.call(this,a,b)}\nfunction mTb(a,b){return a.lastIndexOf(b)}\nfunction lTb(a,b,c){return a.indexOf(b,c)}\nfunction lS(a){return Jh((DI(),a.Sb),S_b)}\nfunction YRb(a){return a>=56320&&a<=57343}\nfunction MWb(a,b){return oUb(a.a,b)!=null}\nfunction QXb(a,b){return uVb(a.a,b,0)!=-1}\nfunction vWb(a,b){b.$modCount=a.$modCount}\nfunction w4(a,b){RS(a.Id,b);!!a.Ab&&X4(a)}\nfunction bmb(a){g5(a.g,a.f[0],a.f[1],a.b)}\nfunction Dyb(a){a.s=0;a.t=a.s+1;a.u=a.s+2}\nfunction sAb(a){a.j=50;a.k=0.0082;a.t=I$b}\nfunction KYb(a){return a.$H||(a.$H=++JYb)}\nfunction gr(a){return typeof a==='boolean'}\nfunction wYb(a){if(!a){throw xF(new zSb)}}\nfunction EYb(a){if(!a){throw xF(new BSb)}}\nfunction zYb(a){if(!a){throw xF(new AXb)}}\nfunction CTb(a){KRb.call(this,(BYb(a),a))}\nfunction MTb(a){KRb.call(this,(BYb(a),a))}\nfunction $j(){Rj.call(this,'TABLE_ROW',15)}\nfunction hj(){dj.call(this,'SW_RESIZE',10)}\nfunction Lg(a){a.parentNode.removeChild(a)}\nfunction rH(a,b){return $wnd[a].getItem(b)}\nfunction ZN(a){return (DI(),a).rows.length}\nfunction _H(a){if(a.a){yT(a.a.a);a.a=null}}\nfunction aI(a){if(a.b){yT(a.b.a);a.b=null}}\nfunction FP(a,b){AP(a,b);ki((DI(),a.Sb),b)}\nfunction g5(a,b,c,d){l5(a,b,-d);l5(a,c,d)}\nfunction Jf(e,a,b,c,d){e.fillRect(a,b,c,d)}\nfunction ktb(a,b){job.call(this,a,b,false)}\nfunction ltb(a,b){Hnb.call(this,a,b,false)}\nfunction Ytb(a,b){ytb.call(this,a,b,false)}\nfunction v6(a){this.a=a;kQ.call(this,true)}\nfunction gS(a){this.c=a;this.a=!!this.c.Mb}\nfunction ro(a,b){this.a=new Do(b);this.b=a}\nfunction UCb(a,b){qL.call(this,a);this.a=b}\nfunction RHb(a,b){SHb.call(this,a,b,false)}\nfunction JCb(a,b,c){a.u=new $Xb;yBb(a,b,c)}\nfunction OYb(){OYb=ZF;LYb=new S;NYb=new S}\nfunction pH(){pH=ZF;nH=qH(P$b);oH=qH(Q$b)}\nfunction $Hb(a){a.e=a.i;a.d=0;a.a=1;_Hb(a)}\nfunction PEb(a){a.e=false;a.d=false;SEb(a)}\nfunction KNb(a){a.k=0.0082;a.t=I$b;a.c=100}\nfunction ijb(a){a%=WYb;return a>=0?a:a+WYb}\nfunction rh(a){nh();return parseInt(a)||-1}\nfunction vTb(a,b,c){return a.substr(b,c-b)}\nfunction AVb(a){return jYb(a.a,a.a.length)}\nfunction SI(a){return DI(),a.__eventBits||0}\nfunction HLb(a){(DI(),a.Sb).style[u6b]=E6b}\nfunction lR(b,a){kR();b.__gwt_resolve=mR(a)}\nfunction _Rb(a){if(a.k!=null){return}nSb(a)}\nfunction V4(a){tN(a.Mb,a.Ad,!a.Bd.c);G4(a)}\nfunction V1(a,b){oL(a,(SRb(),b?true:false))}\nfunction XCb(a,b){yCb(a.a,b);sCb(a.a,false)}\nfunction utb(a,b){(a.bb&1)!=0!=b&&(a.bb^=1)}\nfunction b8(a,b){_U.call(this,a,b);R7(this)}\nfunction nj(){dj.call(this,'COL_RESIZE',16)}\nfunction oj(){dj.call(this,'ROW_RESIZE',17)}\nfunction Yj(){Rj.call(this,'TABLE_CELL',13)}\nfunction dr(a){return String.fromCharCode(a)}\nfunction Fb(a,b){return $wnd.setTimeout(a,b)}\nfunction Eh(a,b){return Dh(a,b,a.firstChild)}\nfunction Ug(a,b,c){return a.apply(b,c);var d}\nfunction ng(a,b){a.e=b;b!=null&&IYb(b,DZb,a)}\nfunction Ep(a){!a.a&&(a.a=new lq);return a.a}\nfunction Fp(a){!a.b&&(a.b=new jq);return a.b}\nfunction eb(a){this.j=new jb(this);this.s=a}\nfunction zWb(a){this.a=new $wnd.Date(OF(a))}\nfunction IYb(b,c,d){try{b[c]=d}catch(a){}}\nfunction Vf(e,a,b,c,d){e.strokeRect(a,b,c,d)}\nfunction _p(a,b){Hp();$p.call(this,a,b,true)}\nfunction MP(a,b){return VP(a,b,a.b.a.length)}\nfunction OP(a,b){return WP(a,b,a.b.a.length)}\nfunction pO(a,b,c){return a.rows[b].cells[c]}\nfunction pwb(a,b){_U.call(this,a,b);this.a=0}\nfunction lxb(a,b){A1.call(this,a,b);this.a=1}\nfunction BHb(a,b){_U.call(this,a,b);this.d=1}\nfunction bk(){Rj.call(this,'INLINE_FLEX',18)}\nfunction ek(){Rj.call(this,'INLINE_BLOCK',3)}\nfunction fk(){Rj.call(this,'INLINE_TABLE',4)}\nfunction gm(){gm=ZF;fm=new Fm('blur',new hm)}\nfunction gJ(){gJ=ZF;new nJ;eJ=new lJ;fJ=iJ()}\nfunction RH(a){a.r=false;a.c=false;a.g=null}\nfunction Sfb(a){HM(a,false);p2==a&&(p2=null)}\nfunction nDb(a,b){a.u==0?(a.b=b):(a.b=false)}\nfunction clb(a,b){if(b){Rf(a.a,b.a);a.b=b.b}}\nfunction dXb(a,b){var c;c=a[f4b];c.call(a,b)}\nfunction eXb(a,b){var c;c=a[f4b];c.call(a,b)}\nfunction Eb(a,b){return $wnd.setInterval(a,b)}\nfunction Dh(c,a,b){return c.insertBefore(a,b)}\nfunction zf(a){return (DI(),a.Sb).toDataURL()}\nfunction no(a,b,c){return new Eo(uo(a.a,b,c))}\nfunction SH(a){return new KH(SR(a.s),WR(a.s))}\nfunction sm(){sm=ZF;rm=new Fm('click',new tm)}\nfunction Nm(){Nm=ZF;Mm=new Fm('keyup',new Om)}\nfunction Zj(){Rj.call(this,'TABLE_COLUMN',14)}\nfunction jk(){Rj.call(this,'TABLE_CAPTION',8)}\nfunction fg(a,b,c){Yf.call(this,a,b);this.a=c}\nfunction QN(a,b,c){this.a=a;this.d=b;this.c=c}\n", +"function e_(a,b,c){this.a=a;this.b=b;this.c=c}\nfunction Hjb(){this.a='gnd';this.b=1;this.d=2}\nfunction imb(a,b){a.b=b;emb(a.a,a.b,a.W,a.bb)}\nfunction nT(a){return jT(a.d,a.b,a.c,a.e,a.a)}\nfunction r5(a,b){return lr(b*a.Cd[0]+a.Cd[4])}\nfunction s5(a,b){return lr(b*a.Cd[3]+a.Cd[5])}\nfunction nTb(a,b,c){return a.lastIndexOf(b,c)}\nfunction URb(a,b){SRb();return a==b?0:a?1:-1}\nfunction kQb(a,b){_U.call(this,a,b);jQb(this)}\nfunction LQ(a,b){KQ.call(this,a,true);this.e=b}\nfunction H_(a,b,c,d,e){aV.call(this,a,b,c,d,e)}\nfunction Ff(g,a,b,c,d,e,f){g.arc(a,b,c,d,e,f)}\nfunction vo(a,b,c,d){var e;e=yo(a,b,c);e.Th(d)}\nfunction ko(a){var b;if(ho){b=new io;a.ie(b)}}\nfunction Nhb(a){while(CK(a.k,0)!=a.d)FK(a.k,0)}\nfunction nb(a){$wnd.cancelAnimationFrame(a.id)}\nfunction MRb(){xg.call(this,'divide by zero')}\nfunction tab(a,b){_U.call(this,a,b);this.f=I$b}\nfunction ilb(a,b){_U.call(this,a,b);this.a=hlb}\nfunction xpb(a,b){_U.call(this,a,b);this.a=j_b}\nfunction Szb(a,b){_U.call(this,a,b);this.a=m$b}\nfunction jrb(a,b){_U.call(this,a,b);this.a=2.5}\nfunction Aeb(a,b,c){this.a=a;this.b=b;this.c=c}\nfunction JEb(a,b,c){this.a=a;this.b=b;this.c=c}\nfunction JLb(a,b,c){this.a=a;this.c=b;this.b=c}\nfunction elb(a,b,c,d){c-=a;d-=b;return c*c+d*d}\nfunction wXb(a,b,c){this.a=a;this.b=b;this.c=c}\nfunction xyb(a){vyb.call(this,a.c,a.d,a.b,a.a)}\nfunction YGb(a){while(CK(a.j,0)!=a.f)FK(a.j,0)}\nfunction to(a,b){!a.a&&(a.a=new CVb);rVb(a.a,b)}\nfunction li(a,b){di(a)&&(b=-b);a.scrollLeft=b}\nfunction pS(a,b){(DI(),a.Sb)[S_b]=b!=null?b:''}\nfunction DLb(a,b){$M(a.c,xRb('Mode: ')+(''+b))}\nfunction xYb(a,b){if(!a){throw xF(new ASb(b))}}\nfunction mq(a,b){this.c=a;this.b=b;this.a=false}\nfunction HH(a,b){return new KH(a.a-b.a,a.b-b.b)}\nfunction IH(a,b){return new KH(a.a*b.a,a.b*b.b)}\nfunction JH(a,b){return new KH(a.a+b.a,a.b+b.b)}\nfunction ySb(a){return !isNaN(a)&&!isFinite(a)}\nfunction hbb(a){return a.g!=null&&a.g.length>0}\nfunction R3(a,b){return lr((b-a.Cd[4])/a.Cd[0])}\nfunction S3(a,b){return lr((b-a.Cd[5])/a.Cd[3])}\nfunction xJ(a){AJ();return vJ((HJ(),HJ(),GJ),a)}\nfunction fp(){return ['USD','US$',2,'US$','$']}\nfunction $1(a){a.c=false;a.b='';a.d='';a.a=null}\nfunction ryb(a,b,c,d,e){a.c=b;a.d=c;a.b=d;a.a=e}\nfunction GOb(a,b,c,d,e){aV.call(this,a,b,c,d,e)}\nfunction IQb(a,b,c,d,e){aV.call(this,a,b,c,d,e)}\nfunction Awb(a,b){Zdb();_db.call(this,a,b,true)}\nfunction Wvb(a,b){Zub.call(this,a,b);this.bb|=1}\nfunction IQ(a,b){KQ.call(this,a,false);this.e=b}\nfunction qV(a,b){alb(a,ZT);Zkb(a,b.a-3,b.b-3,7)}\nfunction Ef(f,a,b,c,d,e){f.arc(a,b,c,d,e,false)}\nfunction mYb(a,b,c){kYb(c,0,a,b,c.length,false)}\nfunction Zyb(a,b,c){a.b=(a.bb&2)!=0?1-b:b;a.o=c}\nfunction rVb(a,b){a.a[a.a.length]=b;return true}\nfunction Ro(a,b){bp('callback',b);return Qo(a,b)}\nfunction dI(a,b){XR(a.s,lr(b.a));ZR(a.s,lr(b.b))}\nfunction jG(a,b){this.a=a;this.b=b;db.call(this)}\nfunction ub(){this.a=new CVb;this.b=new Gb(this)}\nfunction lm(){lm=ZF;km=new Fm('change',new mm)}\nfunction an(){an=ZF;_m=new Fm('mouseout',new bn)}\nfunction QSb(){QSb=ZF;PSb=rq(yE,XYb,38,256,0,1)}\nfunction zS(){tS();AS.call(this,Xh($doc,'text'))}\nfunction W_(a,b){jX();zX.call(this,a,b);this.a=1}\nfunction MQ(a,b){KQ.call(this,a,true);FQ(this,b)}\nfunction fM(a){eM.call(this);this.vb=a;this.wb=a}\nfunction Tfb(){OM.call(this,new fN);this.kb=true}\nfunction Xj(){Rj.call(this,'TABLE_ROW_GROUP',12)}\nfunction NM(a){!a.rb&&(a.rb=wJ(new VM(a)));cM(a)}\nfunction fSb(a){var b;b=eSb(a);rSb(a,b);return b}\nfunction nK(a){var b=a[d_b];return b==null?-1:b}\nfunction vT(a){a.onreadystatechange=function(){}}\nfunction Cb(a,b){return SYb(function(){a.$d(b)})}\nfunction CU(a,b){return b==0?a.ib:b==1?a.jb:null}\nfunction Q4(a,b){a.gc=b;b==0?L4(a,m4b):L4(a,n4b)}\nfunction XXb(a,b){bYb(b,a.a.a.length);vVb(a.a,b)}\nfunction YVb(a,b,c){yYb(b,a.length);WVb(a,0,b,c)}\nfunction jtb(a,b){Zdb();_db.call(this,a,b,false)}\nfunction So(a,b){Po();To.call(this,!a?null:a.a,b)}\nfunction eL(a){cL.call(this);Nh((DI(),this.Sb),a)}\nfunction bG(){$wnd.setTimeout(SYb(rT));NI();lRb()}\nfunction fn(){fn=ZF;en=new Fm('mouseover',new gn)}\nfunction PK(a){return new oT(a.d,a.b,a.c,a.e,a.a)}\nfunction tq(a){return Array.isArray(a)&&a.ii===aG}\nfunction WR(a){return ((DI(),a.b).scrollTop||0)|0}\nfunction re(a,b){Ee(a,Me((DI(),a.Sb))+'-'+b,true)}\nfunction cO(a,b){!!a.e&&(b.a=a.e.a);a.e=b;NO(a.e)}\nfunction QP(a,b){if(a.g){VL(a.g.i,!b);b&&TP(a.g)}}\nfunction h0(a,b){jX();zX.call(this,a,b);this.a=-1}\nfunction JQ(a,b){KQ.call(this,a,false);FQ(this,b)}\nfunction xBb(a,b){fr(b,148)?yBb(a,6,b):yBb(a,0,b)}\nfunction tVb(a,b){AYb(b,a.a.length);return a.a[b]}\nfunction Qgb(a,b){nUb(Fgb,a,b);b.p=b.b=true;b.n=a}\nfunction bNb(a,b){nUb(XMb,a,b);b.u=b.d=true;b.t=a}\nfunction lsb(a){sX(a);a.A[2].A=true;a.e=a.c=false}\nfunction GLb(a){(DI(),a.Sb).style[u6b]='#007bff'}\nfunction vf(a){return (DI(),a.Sb).getContext('2d')}\nfunction er(a){return !Array.isArray(a)&&a.ii===aG}\nfunction _n(a,b){var c;if(Yn){c=new Zn(b);a.ie(c)}}\nfunction fo(a,b){var c;if(bo){c=new co(b);oo(a,c)}}\nfunction jh(a,b){!a&&(a=[]);a[a.length]=b;return a}\nfunction nN(a){this.a=a;this.b=dp(a);this.c=this.b}\nfunction JO(a){this.c=a;this.d=this.c.i.b;HO(this)}\nfunction qDb(a){iDb();jDb(this);this.e=a;this.u=0}\nfunction FR(a){DR();try{a.me()}finally{MWb(CR,a)}}\nfunction uJ(a){AJ();return vJ(Yn?Yn:(Yn=new Em),a)}\nfunction pq(a,b,c,d,e,f){return qq(a,b,c,d,e,0,f)}\nfunction VW(a,b,c,d,e,f){CW.call(this,a,b,c,d,e,f)}\nfunction FZ(a,b,c,d,e,f){kZ.call(this,a,b,c,d,e,f)}\nfunction u$(a,b,c,d,e,f){_Z.call(this,a,b,c,d,e,f)}\nfunction Q$(a,b){P$();UW.call(this,a,b,1);this.d=5}\nfunction N7(a,b,c){K7();this.d=a;this.c=b;this.a=c}\nfunction Jjb(a,b){UW.call(this,a,b,1);this.a='ext'}\nfunction Uj(){Rj.call(this,'TABLE_COLUMN_GROUP',9)}\nfunction QHb(a){SHb.call(this,a,' \\t\\n\\r\\f',false)}\nfunction EQ(a){Ee(a,Me((DI(),a.Sb))+'-'+L_b,false)}\nfunction vQ(a){return ei((DI(),a.Sb))+Ih(a.Sb,sZb)}\nfunction oUb(a,b){return jr(b)?pUb(a,b):YWb(a.a,b)}\nfunction lXb(a,b){return !(a.a.get(b)===undefined)}\nfunction iU(a,b,c,d){return a==c&&b==d||a==d&&b==c}\nfunction Kf(d,a,b,c){d.fillText&&d.fillText(a,b,c)}\nfunction qVb(a,b,c){DYb(b,a.a.length);lYb(a.a,b,c)}\nfunction XU(a,b){if(!WT.Cc.c)return;WU(a,b,a.bg())}\nfunction bYb(a,b){if(a<0||a>=b){throw xF(new PRb)}}\nfunction Khb(){Khb=ZF;Jhb=(Hp(),new _p(o5b,fp()))}\nfunction CJ(){pJ&&_n((!qJ&&(qJ=new MJ),qJ),false)}\nfunction DR(){DR=ZF;AR=new IR;BR=new JWb;CR=new NWb}\nfunction hSb(a){var b;b=eSb(a);b.j=a;b.e=1;return b}\nfunction zbb(a){a.d=acb(a.e,a.d);ybb(a);eU(a);uX(a)}\nfunction Deb(a,b){_U.call(this,a,b);Ceb(this,10240)}\nfunction Iab(a,b){jX();zX.call(this,a,b);vX(this,2)}\nfunction vg(a){hg(this);this.g=a;jg(this);this.xe()}\nfunction uyb(){this.c=0;this.d=0;this.b=0;this.a=0}\nfunction agb(a){this.d=a;this.c=rq(pr,l$b,8,2,15,1)}\nfunction hmb(a){this.g=a;this.f=rq(pr,l$b,8,2,15,1)}\nfunction _S(a){this.b=a;this.a=rq($x,XYb,21,4,0,1)}\nfunction _tb(a,b,c,d,e,f){u$.call(this,a,b,c,d,e,f)}\nfunction iub(a,b,c,d,e,f){_Z.call(this,a,b,c,d,e,f)}\nfunction Wf(g,a,b,c,d,e,f){g.transform(a,b,c,d,e,f)}\nfunction XEb(a,b,c,d){WEb.call(this,a,b,c);this.c=d}\nfunction QPb(a,b){mgb.call(this,a,b);this.a=4.0E-12}\nfunction xrb(a,b){u9.call(this,a,b,false);wrb(this)}\nfunction VOb(a,b){TOb();b8.call(this,a,b);UOb(this)}\nfunction Vq(a,b){return zq(a.l^b.l,a.m^b.m,a.h^b.h)}\nfunction Pq(a,b){return zq(a.l|b.l,a.m|b.m,a.h|b.h)}\nfunction RSb(a,b){return zF(a,b)<0?-1:zF(a,b)>0?1:0}\nfunction Jh(b,a){return b[a]==null?null:String(b[a])}\nfunction Nqb(){return !!($wnd.File&&$wnd.FileReader)}\nfunction wDb(a){HM(a,false);p2==a&&(p2=null);vDb(a)}\nfunction f3(a,b){I2(a);o4(a);p2=new $Gb(b,a);p2.nf()}\nfunction amb(a,b){a.a>0&&(a.c=b/a.a+a.b);return a.c}\nfunction Bub(a){a.f=0;a.g=0;a.i=0;a.j=0;a.t=9;a.q=-9}\nfunction NCb(a){if(a.X>1){a.X=a.X/2|0;sCb(a,false)}}\nfunction sb(a,b){wVb(a.a,b);a.a.a.length==0&&wb(a.b)}\nfunction sTb(a,b){return iTb(a.substr(0,b.length),b)}\nfunction iUb(a,b){return jr(b)?lUb(a,b):!!WWb(a.a,b)}\nfunction qUb(a){a.a=new ZWb(a);a.b=new pXb(a);wWb(a)}\nfunction NVb(a){EYb(a.b!=-1);vVb(a.c,a.a=a.b);a.b=-1}\nfunction tub(a,b,c,d,e,f){iub.call(this,a,b,c,d,e,f)}\nfunction WQb(a,b,c,d,e,f){iub.call(this,a,b,c,d,e,f)}\nfunction Pub(a,b,c,d,e,f){uab.call(this,a,b,c,d,e,f)}\nfunction jBb(a,b,c,d,e,f){Xmb.call(this,a,b,c,d,e,f)}\nfunction K9(a,b){u9.call(this,a,b,false);this.gb=true}\nfunction Vj(){Rj.call(this,'TABLE_HEADER_GROUP',10)}\nfunction Wj(){Rj.call(this,'TABLE_FOOTER_GROUP',11)}\nfunction JGb(a,b){jX();zX.call(this,a,b);this.a=false}\nfunction pib(a,b,c){if(U1(a.b))return b|c;return b&~c}\nfunction zRb(a){var b;b=new FRb(a);b.e=DRb();return b}\nfunction KWb(a,b){var c;c=mUb(a.a,b,a);return c==null}\nfunction jYb(a,b){var c;c=a.slice(0,b);return vq(c,a)}\nfunction vJ(a,b){return no((!qJ&&(qJ=new MJ),qJ),a,b)}\nfunction TR(a){return OR((!NR&&(NR=new RR),DI(),a.b))}\nfunction VR(a){return PR((!NR&&(NR=new RR),DI(),a.b))}\nfunction ci(a){return Math.round(-a.wheelDelta/40)||0}\nfunction qtb(a,b){return b==0?a.ib:b==1?a.f[0]:a.k[0]}\nfunction BK(a,b){if(b<0||b>a.k.c){throw xF(new NRb)}}\nfunction HM(a,b){if(a.rb){yT(a.rb.a);a.rb=null}VL(a,b)}\nfunction x5(a,b,c){var d;d=a.oc.a.a.length+b;l5(a,d,c)}\nfunction jL(a,b,c){var d;d=fL(a,b);!!d&&iL((DI(),d),c)}\nfunction fab(){fab=ZF;dab=uq(nq(pr,1),l$b,8,15,[1,2])}\nfunction C8(){C8=ZF;A8=uq(nq(pr,1),l$b,8,15,[2,1,4])}\nfunction jX(){jX=ZF;iX=uq(nq(pr,1),l$b,8,15,[2,3,0,1])}\nfunction Uf(g,a,b,c,d,e,f){g.setTransform(a,b,c,d,e,f)}\nfunction Ujb(a,b,c){return $wnd.Math.sqrt(b*b+c*c)/a.d}\nfunction qib(a,b,c){if(!U1(a.b))return b|c;return b&~c}\nfunction PF(a){if(FF(a)){return a|0}return a.l|a.m<<22}\nfunction z3(a){if(a.Fc.c)return K7(),I7;return K7(),z7}\nfunction BYb(a){if(a==null){throw xF(new YSb)}return a}\nfunction DTb(a,b){a.a+=String.fromCharCode(b);return a}\nfunction _T(a,b){if(a==100||a==-100)return a;return a+b}\nfunction up(a){gp();this.b=new CVb;this.a=a;pp(this,a)}\nfunction ZM(a){Be(this,(DI(),a));this.b=new nN(this.Sb)}\nfunction ER(a){HK.call(this);Be(this,(DI(),a));Ye(this)}\nfunction eN(a){dN.call(this);mN(this.b,a,true);YM(this)}\nfunction aN(a){ZM.call(this,(jTb('span',a.tagName),a))}\nfunction c8(a,b,c,d,e){aV.call(this,a,b,c,d,e);R7(this)}\nfunction eY(a,b,c,d,e,f){jX();AX.call(this,a,b,c,d,e,f)}\nfunction Gf(g,a,b,c,d,e,f){g.bezierCurveTo(a,b,c,d,e,f)}\nfunction gmb(a,b){(a.d&2)==0?(a.b=b/a.a+a.c):(a.b=a.c)}\nfunction MNb(a,b){_U.call(this,a,b);KNb(this);LNb(this)}\nfunction wyb(a){this.c=a.a;this.d=a.b;this.b=0;this.a=0}\nfunction tAb(a){a.f=new agb(WT);$fb(a.f,Wgb(F4b));a.a=1}\nfunction jUb(a,b){return jr(b)?kUb(a,b):fUb(WWb(a.a,b))}\nfunction kJ(a,b){return no(a.a,(!ho&&(ho=new Em),ho),b)}\nfunction IWb(a,b){return kr(a)===kr(b)||a!=null&&U(a,b)}\nfunction BXb(a,b){return kr(a)===kr(b)||a!=null&&U(a,b)}\nfunction RXb(a,b){return bYb(b,a.a.a.length),tVb(a.a,b)}\nfunction TXb(a,b){bYb(b,a.a.a.length);return tVb(a.a,b)}\nfunction WXb(a,b){bYb(b,a.a.a.length);return vVb(a.a,b)}\nfunction JRb(a,b,c){IRb(a,b,b+1,String.fromCharCode(c))}\nfunction I0(a,b,c){b==0&&a.a<9&&(a.g.d[8]=c);a.g.d[b]=c}\nfunction a1(a,b,c){b==0&&a.a<9&&(a.g.d[8]=c);a.g.d[b]=c}\nfunction QUb(a){EYb(a.c!=-1);a.d.ai(a.c);a.b=a.c;a.c=-1}\nfunction O5(a){$wnd.saveFile(null,a);u2.Oc=true;y4(u2)}\nfunction vG(){vG=ZF;uG=DG((jl(),al),al);Ch($doc.body,uG)}\nfunction Zdb(){Zdb=ZF;Xdb=uq(nq(pr,1),l$b,8,15,[1,2,3])}\nfunction TOb(){TOb=ZF;QOb=uq(nq(pr,1),l$b,8,15,[1,2,3])}\nfunction Il(){Gl();return uq(nq(wu,1),XYb,185,0,[Fl,El])}\nfunction te(a){return gi((DI(),a.Sb))+$wnd.pageYOffset|0}\nfunction xe(a){Ee(a,Me((DI(),a.Sb))+'-'+'current',false)}\nfunction Ckb(a){var b;UU(a);b=(a.bb&1)!=0?32:16;hU(a,b)}\nfunction sbb(a){var b;!fbb&&tbb();b=kUb(fbb,a);return b}\nfunction YN(a,b){var c;c=a.rows[b];return c.cells.length}\nfunction CT(a,b,c,d){this.a=a;this.d=b;this.c=c;this.b=d}\nfunction bN(a){_M.call(this);mN(this.b,a,false);YM(this)}\nfunction Y1(a,b){GQ.call(this,(aH(),new RG(Z1+g1b+a)),b)}\nfunction IRb(a,b,c,d){a.a=vTb(a.a,0,b)+(''+d)+uTb(a.a,c)}\nfunction mUb(a,b,c){return jr(b)?nUb(a,b,c):XWb(a.a,b,c)}\nfunction tPb(a,b,c,d,e,f){jX();n0.call(this,a,b,c,d,e,f)}\nfunction hPb(a,b,c,d,e,f){jX();AX.call(this,a,b,c,d,e,f)}\nfunction Dcb(a,b,c,d,e,f){jX();AX.call(this,a,b,c,d,e,f)}\nfunction Clb(a,b,c,d,e,f){jX();AX.call(this,a,b,c,d,e,f)}\nfunction Hwb(a,b,c,d,e,f){jX();AX.call(this,a,b,c,d,e,f)}\nfunction iLb(a,b,c,d,e,f){jX();AX.call(this,a,b,c,d,e,f)}\nfunction Hab(a,b,c,d,e){a.A[b]=new j2(a,c,d,e);f2(a.A[b])}\nfunction VU(a,b,c,d,e){a.nb=b;a.pb=c;a.ob=d;a.qb=e;a.wg()}\nfunction Ijb(a,b,c,d){this.a=a;this.b=b;this.c=c;this.d=d}\nfunction vyb(a,b,c,d){this.c=a;this.d=b;this.b=c;this.a=d}\nfunction zT(a,b,c){this.a=a;this.d=b;this.c=null;this.b=c}\nfunction AT(a,b,c){this.a=a;this.d=b;this.c=null;this.b=c}\nfunction aTb(a,b,c){this.a=KZb;this.d=a;this.b=b;this.c=c}\nfunction cRb(a,b){mgb.call(this,a,b);this.q=bRb;kgb(this)}\nfunction eTb(a,b){HYb(b,a.length);return a.charCodeAt(b)}\nfunction uH(a,b){$wnd[a].getItem(b);$wnd[a].removeItem(b)}\nfunction Lm(a,b){b&&(a==39?(a=37):a==37&&(a=39));return a}\nfunction jg(a){if(a.n){a.e!==CZb&&a.xe();a.j=null}return a}\nfunction Ko(a){if(!a.d){return}Io(a);a.a._e(a,new $o(a.b))}\nfunction pUb(a,b){return b==null?YWb(a.a,null):oXb(a.b,b)}\nfunction xTb(a){return String.fromCharCode.apply(null,a)}\nfunction $g(a){Tg();$wnd.setTimeout(function(){throw a},0)}\nfunction vH(a,b,c){$wnd[a].getItem(b);$wnd[a].setItem(b,c)}\nfunction UH(a,b){if(a.j.a){return TH(b,a.j.a)}return false}\nfunction kbb(a,b){pUb(fbb,a.i);a.i=b;nUb(fbb,a.i,a);++gbb}\nfunction RFb(a,b,c,d,e,f){OFb();AX.call(this,a,b,c,d,e,f)}\nfunction $vb(){$vb=ZF;Yvb=uq(nq(pr,1),l$b,8,15,[6,2,4,5])}\nfunction wBb(){wBb=ZF;vBb=uq(nq(or,1),Z_b,8,15,[2,2.5,2])}\nfunction nh(){nh=ZF;var a,b;b=!sh();a=new Ah;mh=b?new th:a}\nfunction RYb(){if(MYb==256){LYb=NYb;NYb=new S;MYb=0}++MYb}\nfunction RG(a){if(a==null){throw xF(new ZSb(N$b))}this.a=a}\nfunction NG(a){if(a==null){throw xF(new ZSb(N$b))}this.a=a}\nfunction $2(a){if(!Q3(a,_2b)){return}p2=new Eib(2);p2.nf()}\nfunction BP(a,b){AP(a,b);return CP((DI(),a.Sb).options[b])}\nfunction wc(a,b){Rb((Kc(),Ic),a,uq(nq(Vr,1),XYb,269,0,[b]))}\nfunction gg(){eg();return uq(nq(Os,1),XYb,206,0,[bg,cg,dg])}\nfunction oJ(a){return $wnd.decodeURI(a.replace('%23','#'))}\nfunction JL(){KL.call(this,(DI(),$doc.createElement(y$b)))}\nfunction tib(a,b){oib(this);this.n=a;this.t=b;this.d=false}\nfunction Zgb(a){var b,c;c=new QHb(a);b=_gb(c);b.b=b.k=true}\nfunction jNb(a){var b,c;b=new QHb(a);c=lNb(b);c.d=c.k=true}\nfunction GH(a,b){this.c=b;this.d=new LH(a);this.e=new LH(b)}\nfunction GG(a){this.b=0;this.c=0;this.a=9;this.e=5;this.d=a}\nfunction L4(a,b){a.Hb!=null&&ye(a.J,a.Hb);se(a.J,b);a.Hb=b}\nfunction LF(a,b){return AF(Pq(FF(a)?NF(a):a,FF(b)?NF(b):b))}\nfunction QF(a,b){return AF(Vq(FF(a)?NF(a):a,FF(b)?NF(b):b))}\nfunction Bp(){zp();return uq(nq(xv,1),XYb,203,0,[yp,xp,wp])}\nfunction $Q(){YQ();return uq(nq(xx,1),XYb,202,0,[VQ,WQ,XQ])}\nfunction wJ(a){AJ();BJ();return vJ((!bo&&(bo=new Em),bo),a)}\nfunction AW(a){if(a0?to(a,new CT(a,b,c,d)):xo(a,b,c,d)}\nfunction We(a,b,c){return no(!a.Pb?(a.Pb=new qo(a)):a.Pb,c,b)}\nfunction tTb(a,b,c){return c>=0&&iTb(a.substr(c,b.length),b)}\nfunction Hf(e,a,b,c,d){return e.createLinearGradient(a,b,c,d)}\nfunction qT(b,c,d){try{b.setSelectionRange(c,c+d)}catch(a){}}\nfunction rO(a,b,c,d){a.a.rf(b,c);pO(a.a.c,b,c).style[g_b]=d.a}\nfunction l5(a,b,c){if(b>0){a.p?(b=a.t[b-1].d):--b;a.s[b]+=c}}\nfunction FCb(a,b){var c;c=a.A.b;a.A=b;a.A.b!=c&&sCb(a,false)}\nfunction Wn(a,b){var c;if(Tn){c=new Un(b);!!a.Pb&&oo(a.Pb,c)}}\nfunction fL(a,b){if(b.Rb!=a){return null}return DI(),Zh(b.Sb)}\nfunction lSb(a){if(a.Sh()){return null}var b=a.j;return WF[b]}\nfunction $F(a){function b(){}\n;b.prototype=a||{};return new b}\nfunction wR(){if(!uR){uR=new vR;KK((DR(),HR()),uR)}return uR}\nfunction mRb(a){uRb=a;jRb=new E5;P3(jRb);wJ(new sRb);v5(jRb)}\nfunction Abb(a,b){jX();zX.call(this,a,b);this.e=wbb;ybb(this)}\nfunction eAb(a,b){jX();zX.call(this,a,b);this.bb|=2;dAb(this)}\nfunction K0(a,b){jX();m0.call(this,a,b);this.i='2*a';k0(this)}\nfunction c1(a,b){jX();m0.call(this,a,b);this.i='2*a';k0(this)}\nfunction Dkb(a,b){_U.call(this,a,b);this.c=6.73;this.d=0.0613}\nfunction pg(a,b){hg(this);this.f=b;this.g=a;jg(this);this.xe()}\nfunction gTb(a,b){return fTb(a.toLowerCase(),b.toLowerCase())}\nfunction dUb(a,b){return b===a?'(this Map)':b==null?lZb:_F(b)}\nfunction SSb(a){return ($wnd.Math.exp(a)+$wnd.Math.exp(-a))/2}\nfunction lr(a){return Math.max(Math.min(a,UYb),-2147483648)|0}\nfunction KI(a){DI();return a.__gwt_resolve?a.__gwt_resolve():a}\nfunction qk(){ok();return uq(nq(Wt,1),XYb,141,0,[nk,kk,lk,mk])}\nfunction Bk(){zk();return uq(nq(_t,1),XYb,142,0,[yk,wk,xk,vk])}\nfunction Mk(){Kk();return uq(nq(eu,1),XYb,143,0,[Jk,Ik,Gk,Hk])}\nfunction Xk(){Vk();return uq(nq(ju,1),XYb,144,0,[Rk,Sk,Tk,Uk])}\nfunction Aub(){Aub=ZF;yub=uq(nq(pr,1),l$b,8,15,[7,5,15,1,13])}\nfunction JS(){HS();return uq(nq(Vx,1),XYb,147,0,[DS,ES,FS,GS])}\nfunction nS(a){var b;b=Jh((DI(),a.Sb),S_b).length;b>0&&oS(a,b)}\nfunction VL(a,b){if(!a.Kb){return}dR(a.Jb,false,false);_n(a,b)}\nfunction Xub(a){if((a.bb&8)!=0)return;a.a=(a.bb&4)!=0?m$b:E5b}\nfunction O4(a){if(a.Wb){if(a.Wb.kb)return;I2(a);a.Wb.kb=true}}\nfunction UY(a){a.q=0;a.k=0;a.f=0;a.j=0;a.o=0;a.e=true;a.d=true}\nfunction hgb(a){a.k.a=0;a.mb[0]=a.mb[1]=a.V=0;a.o&&(a.mb[2]=0)}\nfunction yb(a){!!a.d&&wb(a);a.c=true;a.d=OSb(Eb(Cb(a,a.b),16))}\nfunction GCb(a,b){b<1&&(b=1);b>o$b&&(b=o$b);a.X=b;sCb(a,false)}\nfunction uUb(a,b){if(fr(b,216)){return cUb(a.a,b)}return false}\nfunction rg(b){if(!(EZb in b)){try{throw b}catch(a){}}return b}\nfunction DYb(a,b){if(a<0||a>b){throw xF(new ORb($6b+a+_6b+b))}}\nfunction GYb(a,b){if(a>b||a<0){throw xF(new NTb(Y6b+a+Z6b+b))}}\nfunction jSb(a,b){var c=a.a=a.a||[];return c[b]||(c[b]=a.Nh(b))}\nfunction Ejb(a){var b;for(b=0;b!=a.d.length;b++)a.b[b]=0;a.a=0}\nfunction tN(a,b,c){var d;d=b.Qb;if(d.b==c){return}d.b=c;KN(a.c)}\nfunction SO(a,b,c){var d;d=(a.a.sf(b),DI(),QO(a.a.c,b));Re(d,c)}\nfunction zK(a,b,c){_e(b);VS(a.k,b);DI();Ch(c,KI(b.Sb));af(b,a)}\nfunction Tkb(a,b,c){a.a.beginPath();Of(a.a,0,0,b,c);a.a.clip()}\nfunction kUb(a,b){return b==null?fUb(WWb(a.a,null)):mXb(a.b,b)}\nfunction p4(a,b){var c;r4(a,uYb((c=b,pYb(),c)),0);$M(a.zd,null)}\nfunction L9(a,b,c,d,e,f){t9.call(this,a,b,c,d,e,f);this.gb=true}\nfunction ydb(a,b){u9.call(this,a,b,false);this.gb=true;this.d=2}\nfunction VY(a,b){_U.call(this,a,b);UY(this);this.bb=3;this.n=0}\nfunction leb(a,b){keb();UW.call(this,a,b,1);this.e=1;this.d=h0b}\nfunction tIb(a,b){u9.call(this,a,b,false);this.gb=true;this.d=2}\nfunction j2(a,b,c,d){this.w=a;this.n=b;this.r=this.q=c;this.u=d}\nfunction Ngb(){this.q=c0b;this.r=0;this.e=1;this.a=0;Mgb(this)}\nfunction WOb(a,b,c,d,e){TOb();c8.call(this,a,b,c,d,e);UOb(this)}\nfunction JTb(a,b,c){a.a=vTb(a.a,0,b)+(''+c)+uTb(a.a,b);return a}\nfunction nUb(a,b,c){return b==null?XWb(a.a,null,c):nXb(a.b,b,c)}\nfunction oyb(a,b){return nyb(a,b.c,b.d)&&nyb(a,b.c+b.b,b.d+b.a)}\nfunction AYb(a,b){if(a<0||a>=b){throw xF(new ORb($6b+a+_6b+b))}}\nfunction HYb(a,b){if(a<0||a>=b){throw xF(new NTb($6b+a+_6b+b))}}\nfunction pK(a,b){for(var c in a){a.hasOwnProperty(c)&&b(c,a[c])}}\nfunction flb(a,b,c){b==0?a.setLineDash([]):a.setLineDash([b,c])}\nfunction VWb(a,b){var c;c=a.a.get(b);return c==null?new Array:c}\nfunction QJ(a){var b=a.__listener;return !ir(b)&&fr(b,24)?b:null}\nfunction D8(a,b){a.d=b;a.c=8*b;a.e=13*b;a.bb=a.bb&-3|(b==1?2:0)}\nfunction vX(a,b){a.o=b;a.p=8*b;a.q=a.p*2;a.bb&=-2;a.bb|=b==1?1:0}\nfunction ZZ(a){var b;for(b=0;b!=a.n;b++)a.mb[b]=a.p^a.Tg()?a.f:0}\nfunction M3(a,b){var c;c=lr(IXb(a.Gc,32));c<0&&(c=-c);return c%b}\nfunction WS(a,b){if(b<0||b>=a.c){throw xF(new NRb)}return a.a[b]}\nfunction Rh(a){if(Gh(a)){return !!a&&a.nodeType==1}return false}\nfunction rI(a){if(a.f){yT(a.f.a);a.f=null}a==a.e.g&&(a.e.g=null)}\nfunction M4(a){a.tb=a.fd.c?8:16;a.rb=~(a.tb-1);a.sb=(a.tb/2|0)-1}\nfunction Yub(a,b){a.j=b;a.i=8*b;a.k=13*b;a.bb=a.bb&-3|(b==1?2:0)}\nfunction ARb(a){if(a.a){a.a.b=DRb();a.a.c=a.a.b-a.a.e;a.a=a.a.d}}\nfunction fN(){dN.call(this);(DI(),this.Sb).className='Caption'}\nfunction vib(a,b){oib(this);this.n=a;this.q=b;this.d=this.p=true}\nfunction L0(a,b,c,d,e,f){jX();n0.call(this,a,b,c,d,e,f);J0(this)}\nfunction d1(a,b,c,d,e,f){jX();n0.call(this,a,b,c,d,e,f);b1(this)}\nfunction N5(){$wnd.openFile(function(a,b){Mqb(a,b);w2(u2,true)})}\nfunction _gb(a){var b,c;c=ccb(PHb(a));b=Wgb(c);Lgb(b,a);return b}\nfunction ii(a){var b;b=(a.scrollLeft||0)|0;di(a)&&(b=-b);return b}\nfunction Xh(a,b){var c=a.createElement('INPUT');c.type=b;return c}\nfunction To(a,b){ap('httpMethod',a);ap('url',b);this.a=a;this.d=b}\nfunction iG(a){this.b=new CG;this.c=new CVb;this.d=a;zG(this.b,a)}\nfunction iP(){iP=ZF;fP=new jP(H$b);gP=new jP(E_b);hP=new jP(F$b)}\nfunction gH(){gH=ZF;new RegExp('%5B','g');new RegExp('%5D','g')}\nfunction Gi(){Ei();return uq(nq(et,1),XYb,132,0,[Ci,Ai,zi,Bi,Di])}\nfunction Sl(){Ql();return uq(nq(Cu,1),XYb,133,0,[Ll,Ml,Nl,Ol,Pl])}\nfunction XH(a){if(!a.r){return}a.r=false;if(a.c){a.c=false;WH(a)}}\nfunction KN(a){a.c=0;a.b=false;if(!a.e){a.e=true;gh((dh(),bh),a)}}\nfunction JM(a,b,c){DI();if(!CI){a.qb=true;LI(a.Sb);a.ob=b;a.pb=c}}\nfunction Ceb(a,b){a.b=b;a.a=rq(or,Z_b,8,a.b,15,1);a.d=0;a.c=false}\nfunction Qwb(a){a.b=rq(uF,P0b,8,0,16,1);a.c=0;a.a=false;a.e=false}\nfunction uDb(a,b,c){fO(b,a.N,a.M,c);if(++a.M>=a.s.a){a.M=0;++a.N}}\nfunction ldb(a,b){jX();zX.call(this,a,b);this.A[2].A=!this.A[1].A}\nfunction sEb(a,b){this.d=a;this.a=b;this.c=new $Xb;this.b=new $Xb}\nfunction uWb(a,b){if(b.$modCount!=a.$modCount){throw xF(new xWb)}}\nfunction Fvb(a){if(a.f==2)return null;return TXb(a.w,a.f==0?20:4)}\nfunction VXb(a){zYb(a.a.a.length!=0);return TXb(a,a.a.a.length-1)}\nfunction MVb(a){zYb(a.ab+1)return b+1;if(a=0&&b<$wnd[a].length?$wnd[a].key(b):null}\nfunction Phb(a){return $wnd.Math.abs(a-OF(CF($wnd.Math.round(a))))}\nfunction ji(a){return a.tabIndex=a.oc.a.a.length)return null;return TXb(a.oc,b)}\nfunction G3(a,b){if(b>=a.ab.a.a.length)return null;return TXb(a.ab,b)}\nfunction xT(c,a){var b=c;c.onreadystatechange=SYb(function(){a.$e(b)})}\nfunction NU(a,b,c){a.nb+=b;a.pb+=c;a.ob+=b;a.qb+=c;syb(a.U,b,c);a.wg()}\nfunction sV(a,b,c,d,e){a.a.lineWidth=3;Ukb(a,b,c,d,e);a.a.lineWidth=1}\nfunction s$(a,b,c,d,e,f,g,h,i){d>=0&&e>=0&&a.ellipse(b,c,d,e,f,g,h,i)}\nfunction f5(a,b,c,d){h5(a,b,b,d);h5(a,c,c,d);h5(a,b,c,-d);h5(a,c,b,-d)}\nfunction dP(a){return a==(zp(),xp)?(aP(),_O):a==yp?(aP(),YO):(aP(),ZO)}\nfunction eP(a){return a==(zp(),xp)?(aP(),YO):a==yp?(aP(),_O):(aP(),$O)}\nfunction OR(a){return QR(a)?0:((a.scrollWidth||0)|0)-(a.clientWidth|0)}\nfunction PR(a){return QR(a)?(a.clientWidth|0)-((a.scrollWidth||0)|0):0}\nfunction ni(a){!a.gwt_uid&&(a.gwt_uid=1);return 'gwt-uid-'+a.gwt_uid++}\nfunction Dmb(a,b){_U.call(this,a,b);this.gb=true;this.f=0.5;this.c=SZ}\nfunction hOb(a,b){_U.call(this,a,b);this.s=93;this.k=680;this.gb=true}\nfunction qkb(a,b){jX();zX.call(this,a,b);this.bb|=2;this.n=4;pkb(this)}\nfunction g7(a,b){this.a=b;this.b=a.Cd[0];this.c=a.Cd[4];this.d=a.Cd[5]}\nfunction CEb(a,b){if(b!=a.e){a.e=b;a.c.t=a.o[b];a.i.rg(0,a.c);g4(a.n)}}\nfunction VBb(a,b,c){if(a.A.d+a.A.a<=a.$+5)return;Ykb(b,c,0,a.$);a.$+=15}\nfunction REb(a,b){if(a.e){if(a.d){a.k=OEb(a,b);SEb(a);!!a.c&&a.c.Ae()}}}\nfunction mqb(a,b){jX();zX.call(this,a,b);kqb(this);this.bb|=2;lqb(this)}\nfunction SHb(a,b,c){this.b=a.length;this.e=a;this.a=b;this.d=c;this.c=0}\nfunction rXb(a){this.d=a;this.b=this.d.a.entries();this.a=this.b.next()}\nfunction ZI(a){a.e=false;a.f=null;a.a=false;a.b=false;a.c=true;a.d=null}\nfunction YZ(a,b){a.c=b;a.d=7*b;a.e=14*b;a.b=8*b;a.bb&=-2;a.bb|=b==1?1:0}\nfunction wib(a,b){var c;c=new uib('',0,-1,-1);c.b=new X1(a,b);return c}\nfunction hTb(a,b){var c;c=b.length;return iTb(a.substr(a.length-c,c),b)}\nfunction cp(a){var b=/\\+/g;return decodeURIComponent(a.replace(b,'%20'))}\nfunction Ig(){if(Date.now){return Date.now()}return (new Date).getTime()}\n", +"function Wg(b){Tg();return function(){return Xg(b,this,arguments);var a}}\nfunction JN(){HN();return uq(nq(Lw,1),XYb,151,0,[EN,BN,FN,GN,AN,DN,CN])}\nfunction JI(a){DI();!!CI&&a==CI&&(CI=null);PJ();(XJ(),TJ)==a&&(TJ=null)}\nfunction UI(a){DI();!!CI&&a==CI&&(CI=null);PJ();(XJ(),TJ)==a&&(TJ=null)}\nfunction HO(a){while(++a.b>22&s$b;d=a<0?t$b:0;return zq(b,c,d)}\nfunction DJ(){var a;if(pJ){a=new JJ;!!qJ&&oo(qJ,a);return a.a}return null}\nfunction i0(){if(WT.rd<10)return h0b;if(WT.rd<200)return I$b;return 0.1}\nfunction Z2(a,b){I2(a);o4(a);if(r2){aM(r2);r2=null}r2=new Thb(b,a);NM(r2)}\nfunction JBb(a,b){a.u=a._;OXb(a.u,b._);b.u.a.a=rq(DE,XYb,1,0,5,1);EBb(a)}\nfunction Mgb(a){a.t=a.e*c5b;a.s=1/a.t;a.j=$wnd.Math.log(1/a.q+1)*a.e*c5b}\nfunction X3(a,b){q4(a,b.a,2);a.Cd[0]=a.Cd[3]=b.b;a.Cd[4]=b.c;a.Cd[5]=b.d}\nfunction tV(a,b,c){a.a.lineWidth=3;Ukb(a,b.a,b.b,c.a,c.b);a.a.lineWidth=1}\nfunction oT(a,b,c,d,e){mT();this.d=a;this.b=b;this.c=c;this.e=d;this.a=e}\nfunction lib(a,b,c){Khb();Thb.call(this,a,b);this.b=a;this.a=c;_e(this.c)}\nfunction Bib(a,b,c){Khb();Thb.call(this,a,b);this.a=a;this.b=c;_e(this.c)}\nfunction cwb(a,b){$vb();e8.call(this,a,b,Zvb,Yvb);this.gb=true;_vb(this)}\nfunction FPb(a,b){UW.call(this,a,b,7);this.c=v0b;this.n=this.o;EPb(this)}\nfunction LXb(a,b){this.b=', ';this.d=a;this.e=b;this.c=this.d+(''+this.e)}\nfunction Tzb(a,b,c,d,e,f){aV.call(this,a,b,c,d,e);this.a=wSb(uSb(PHb(f)))}\nfunction d5(a,b,c,d,e){var f;f=a.oc.a.a.length+d;h5(a,b,f,e);h5(a,c,f,-e)}\nfunction eG(a,b,c){var d,e;d=wG(a.d,b);e=new tG(d,b,c);rVb(a.c,e);return e}\nfunction ERb(a,b,c){if(!lUb(a.a,b)){nUb(a.a,b,c);return true}return false}\nfunction AK(a,b,c){var d;BK(a,c);if(b.Rb==a){d=XS(a.k,b);d=(DI(),a.Sb).options.length){throw xF(new NRb)}}\nfunction _P(a){if(eQ(a)){return}a.o?!!a.g&&!a.g.o?hQ(a.g):QP(a,true):hQ(a)}\nfunction gi(b){try{return b.getBoundingClientRect().top}catch(a){return 0}}\nfunction ei(a){var b;b=fi(a)+$wnd.pageXOffset;di(a)&&(b+=hi(a));return b|0}\nfunction nJ(){var a;a=SYb(jJ);$wnd.addEventListener('hashchange',a,false)}\nfunction fTb(a,b){var c,d;c=(BYb(a),a);d=(BYb(b),b);return c==d?0:c0)b[--a]=new gxb;return b}\nfunction rq(a,b,c,d,e,f){var g;g=sq(e,d);e!=10&&uq(nq(a,f),b,c,e,g);return g}\nfunction Aob(a,b){var c;c=(a.c-b+1)*10;c=OF(CF($wnd.Math.round(c)));return c}\nfunction VEb(a,b){ba.g&&(b=a.g);a.k=b;SEb(a);!!a.c&&a.c.Ae()}\nfunction Ukb(a,b,c,d,e){a.a.beginPath();Nf(a.a,b,c);Lf(a.a,d,e);a.a.stroke()}\nfunction mjb(a,b,c){this.a=new $Xb;NXb(this.a,a);!!b&&NXb(this.a,b);this.b=c}\nfunction hGb(a,b){bGb();zX.call(this,a,b);this.a=this.j=7;this.d=0;fGb(this)}\nfunction CLb(a,b){Nh(ue(a.d),F6b+vTb(b?H6b:I6b,5,(b?H6b:I6b).length-5)+G6b)}\nfunction pKb(a){a.n=uq(nq(pr,1),l$b,8,15,[6,1,8,3,10,5,7,9,11,12]);a.o=37}\nfunction ll(){jl();return uq(nq(tu,1),XYb,71,0,[il,gl,bl,cl,hl,fl,dl,al,el])}\nfunction HI(b){DI();try{return !!b&&!!b.__gwt_resolve}catch(a){return false}}\nfunction EI(a,b){DI();var c;c=QJ(b);if(!c){return false}FI(a,b,c);return true}\nfunction vq(a,b){oq(b)!=10&&uq(W(b),b.hi,b.__elementTypeId$,oq(b),a);return a}\nfunction s9(a,b){_U.call(this,a,b);this.o=false;this.q=0;this.p=2;this.n=null}\nfunction WN(a,b){var c;c=a.qf();if(b>=c||b<0){throw xF(new ORb(B_b+b+C_b+c))}}\nfunction vU(a){var b,c;b=a.nb;c=a.pb;a.nb=a.ob;a.pb=a.qb;a.ob=b;a.qb=c;a.wg()}\nfunction rAb(a){var b;b=new gxb;JU(a.ib,a.jb,b,1,WT.tb*a.g);a.ob=b.a;a.qb=b.b}\nfunction CUb(a){EYb(!!a.c);uWb(a.e,a);a.c.vf();a.c=null;a.b=AUb(a);vWb(a.e,a)}\nfunction lL(a,b){if(!a.e){a.hf();a.e=true}return We(a,b,(!ho&&(ho=new Em),ho))}\nfunction zL(a){if(!a.n){throw xF(new CSb('initWidget() is not called yet'))}}\nfunction fS(a){if(!a.a||!a.c.Mb){throw xF(new AXb)}a.a=false;return a.b=a.c.Mb}\nfunction JF(a){var b;if(FF(a)){b=0-a;if(!isNaN(b)){return b}}return AF(Oq(a))}\nfunction Wh(a){var b=a.createElement('INPUT');b.type=_Yb;b.value='on';return b}\nfunction _h(a){var b=a.button;if(b==1){return 4}else if(b==2){return 2}return 1}\nfunction bi(a,b){var c;c=a.createElement('script');c.textContent=b||'';return c}\nfunction RS(a,b){var c,d;d=(DI(),Zh(b.Sb));c=GK(a,b);c&&Fh(a.i,Zh(d));return c}\nfunction EK(a,b,c,d){d=AK(a,b,d);_e(b);YS(a.k,b,d);DI();Ch(c,KI(b.Sb));af(b,a)}\nfunction Ogb(a,b,c,d,e){this.q=a;this.r=b;this.e=c;this.a=d;this.c=e;Mgb(this)}\nfunction ihb(){Tfb.call(this);this.f=null;this.i=null;this.d=null;this.kb=true}\nfunction E8(a,b){C8();e8.call(this,a,b,B8,A8);this.gb=true;D8(this,WT.fd.c?1:2)}\nfunction X_(a,b,c,d,e,f){jX();AX.call(this,a,b,c,d,e,f);this.a=wSb(uSb(PHb(f)))}\nfunction u9(a,b,c){_U.call(this,a,b);this.q=c?1:0;this.o=c;this.p=2;this.n=null}\nfunction Kjb(a,b,c,d,e,f){VW.call(this,a,b,c,d,e,f);this.a=ccb(PHb(f));this.r=1}\nfunction cgb(a,b){dgb(a,b);a.V=$U(a.W,a.V);WT.O!=a&&qU(b,a.ib,a.jb,a.V);tU(a,b)}\nfunction Ohb(a){HM(a,false);p2==a&&(p2=null);r2==a&&(r2=null);o2==a&&(o2=null)}\nfunction mCb(a){return a.s&&a.u.a.a.length==2&&TXb(a.u,0).v==6&&TXb(a.u,1).v==2}\nfunction ZP(a){if(eQ(a)){return}!a.k&&a.o?hQ(a):!!a.g&&a.g.o?hQ(a.g):QP(a,true)}\nfunction I3(a){if(a.gd.k==0)return 0;return 0.1*$wnd.Math.exp((a.gd.k-61)/24)}\nfunction vXb(a){if(a.a.d!=a.c){return mXb(a.a,a.b.value[0])}return a.b.value[1]}\nfunction bT(a){if(a.b>=a.c.c){throw xF(new AXb)}a.a=a.c.a[a.b];++a.b;return a.a}\nfunction CYb(a){if(!a){throw xF(new ZSb('Cannot suppress a null exception.'))}}\nfunction pYb(){pYb=ZF;new vYb;new rYb('ISO-LATIN-1');new rYb('ISO-8859-1')}\nfunction zp(){zp=ZF;yp=new Ap('RTL',0);xp=new Ap('LTR',1);wp=new Ap('DEFAULT',2)}\nfunction $q(){$q=ZF;Wq=zq(s$b,s$b,524287);Xq=zq(0,0,u$b);Yq=xq(1);xq(2);Zq=xq(0)}\nfunction tP(a){var b,c;for(c=new cT(a.k);c.b1&&(d=0.5*d);return c?JDb(2*d/a.n):2*d/a.n}\nfunction exb(a,b){var c,d;c=false;if(fr(b,19)){d=b;c=a.a==d.a&&a.b==d.b}return c}\nfunction Vkb(a,b,c){a.a.beginPath();Nf(a.a,b.a,b.b);Lf(a.a,c.a,c.b);a.a.stroke()}\nfunction Sab(a,b,c,d,e,f){c8.call(this,a,b,c,d,e);this.c=ccb(PHb(f));Qab(this,f)}\nfunction PLb(a,b,c,d,e,f){this.a=a;this.c=b;this.f=c;this.d=d;this.b=e;this.e=f}\nfunction uib(a,b,c,d){oib(this);this.n=a;this.t=b;this.d=false;this.k=c;this.i=d}\nfunction aNb(a,b){this.e=a;this.v=b;this.g=this.i=1;this.s=1.5;this.r=2;this.c=1}\nfunction w7(a,b){UW.call(this,a,b,2);this.o=2.5;this.i=2.5;this.n=100;this.bb|=1}\nfunction b2(a){IQ.call(this,a,null);$1(this);this.e=this;this.b=a;a2(this,false)}\nfunction Lb(a,b){Rb((Kc(),Jc),a,uq(nq(pE,1),XYb,249,8,[(SRb(),b?true:false)]))}\nfunction uVb(a,b,c){for(;c=1&&a.Mg(b-1,c)}\nfunction Uq(a){if(Lq(a,($q(),Zq))<0){return -Iq(Oq(a))}return a.l+a.m*v$b+a.h*w$b}\nfunction T3(a){if(!a)return false;var b=getComputedStyle(a);return b.display!=xZb}\nfunction oq(a){return a.__elementTypeCategory$==null?10:a.__elementTypeCategory$}\nfunction BUb(a){var b;uWb(a.e,a);zYb(a.b);a.c=a.a;b=a.a.uf();a.b=AUb(a);return b}\nfunction qjb(a){var b;b=sjb(a);while(Cjb(a,'&&')){b=new mjb(b,sjb(a),34)}return b}\nfunction xjb(a){var b;b=qjb(a);while(Cjb(a,'||')){b=new mjb(b,qjb(a),33)}return b}\nfunction Yh(a){var b=a.firstChild;while(b&&b.nodeType!=1)b=b.nextSibling;return b}\nfunction I2(a){var b,c;for(c=0;c!=a.ab.a.a.length;c++){b=G3(a,c);b.kb=false}t3(a)}\nfunction rCb(a,b){var c;if(ba.b+a.i&&HRb(b,a.b+a.i)>=53){c=a.b+a.i-1;Yp(a,b,c)}}\nfunction ab(a,b,c,d){$(a);a.o=true;a.p=false;a.k=b;a.t=c;a.n=d;++a.r;ib(a.j,Ig())}\nfunction lQb(a,b,c,d,e,f){aV.call(this,a,b,c,d,e);this.k=vSb(PHb(f),10);jQb(this)}\nfunction TIb(a,b,c,d,e,f){jX();AX.call(this,a,b,c,d,e,f);this.A[2].A=!this.A[1].A}\nfunction TAb(a,b){jX();zX.call(this,a,b);this.b=this.d=4;this.g=new JWb;SAb(this)}\nfunction qY(a,b){_U.call(this,a,b);this.c=5;this.a=m$b;this.d=40;this.b=0;this.V=0}\nfunction SN(){TN.call(this,Xh($doc,y_b));(DI(),this.Sb).className='gwt-FileUpload'}\nfunction aM(a){(DI(),a.Sb).style[M$b]=C$b;!!a.zb&&(a.zb.style[M$b]=C$b,undefined)}\nfunction ZMb(a){if(a.e==null||iTb(a.e,a.t))return a.t;return a.t+X2b+xRb(a.e)+')'}\nfunction iq(a){var b,c;b=a/60|0;c=a%60;if(c==0){return ''+b}return ''+b+':'+(''+c)}\nfunction eCb(a){var b;if(a._.a.a.length==0)return 'V';b=TXb(a._,0);return SCb(b.u)}\nfunction sjb(a){var b;b=rjb(a);if(Cjb(a,'=='))return new mjb(b,rjb(a),35);return b}\nfunction PS(a){var b;b=(DI(),$doc.createElement('td'));gL(b,a.a);hL(b,a.b);return b}\nfunction X7(a){var b,c;c=0;for(b=0;ba.Y._.a.a.length)return;b=a.Q.k;ECb(a.Y,a.P,b)}\nfunction v2(a,b){var c;if(a.Ab){c=DK(a.Id,a.Ab);QS(a.Id,b,c);X4(a)}else OS(a.Id,b)}\nfunction fh(a){var b,c;if(a.b){c=null;do{b=a.b;a.b=null;c=kh(b,c)}while(a.b);a.b=c}}\nfunction eh(a){var b,c;if(a.a){c=null;do{b=a.a;a.a=null;c=kh(b,c)}while(a.a);a.a=c}}\nfunction S2(a){var b,c;b=DK(a.Id,a.Nb);c=new Kqb(a);QS(a.Id,c,b);FK(a.Id,b+1);a.Nb=c}\nfunction Cfb(a){a.c=new agb(WT);a.d=new agb(WT);$fb(a.c,Wgb(F4b));$fb(a.d,Wgb(F4b))}\nfunction Enb(a){a.C=new agb(WT);$fb(a.C,Wgb(F4b));a.D=new agb(WT);$fb(a.D,Wgb(F4b))}\nfunction LNb(a){a.g=new agb(WT);$fb(a.g,Wgb(F4b));a.i=new agb(WT);$fb(a.i,Wgb(F4b))}\nfunction xnb(a){a.r=1;a.s=2;a.o=4;a.p=8;a.q=16;a.k=32;a.n=64;a.j=a.q|a.o;a.O=0;a.J=0}\nfunction UOb(a){var b;a.gb=true;a.bb|=1;b=new RHb(ROb,'/');Z7(a,b,SOb,QOb);WT.b=true}\nfunction AEb(a,b){var c;a.b+=b/(window.devicePixelRatio||1);c=BEb(a);CEb(a,c);DEb(a)}\nfunction Jo(a,b){var c,d;if(!a.d){return}wb(a.c);d=a.d;a.d=null;c=new _o(d);b.af(a,c)}\nfunction bK(a,b){var c=SJ;var d=c[b]||c['_default_'];a.addEventListener(b,d,false)}\nfunction SF(){TF();var a=RF;for(var b=0;b0;a.n=a.o?2:1;eU(a)}\nfunction eSb(a){var b;b=new cSb;b.k='Class$'+(a?'S'+a:''+b.g);b.b=b.k;b.i=b.k;return b}\nfunction JDb(a){var b,c;a=a*1.001;c=d0b;for(b=0;c=a._.a.a.length)return;IBb(a);TXb(a._,b).j=c;TXb(a._,b).k=true}\nfunction Xxb(a){a.u=0;a.a=0;a.B=0;a.k=0;a.o=0;a.f=0;a.s=0;a.e=0;a.w=0;a.g=true;a.d=true}\nfunction H4(a){var b,c,d;c=a.g;d=a.i;b=lr(c*a.Sc);a.Qc==0&&(b=0);a.j=new vyb(0,0,d,c-b)}\nfunction J2(a){var b;for(b=a.Qc-2;b>=0;b--){JBb(a.Wc[b],a.Wc[b+1]);yCb(a.Wc[b+1],null)}}\nfunction wF(a){var b;if(fr(a,37)){return a}b=a&&a[DZb];if(!b){b=new Fg(a);oh(b)}return b}\nfunction jU(a,b,c){var d;d=new yxb;wxb(d,a.a,a.b);wxb(d,b.a,b.b);wxb(d,c.a,c.b);return d}\nfunction FI(a,b,c){DI();var d;d=BI;BI=a;b==CI&&OJ(a.type)==8192&&(CI=null);c.le(a);BI=d}\nfunction VF(a,b){typeof window===TYb&&typeof window['$gwt']===TYb&&(window['$gwt'][a]=b)}\nfunction ir(a){return a!=null&&(typeof a===TYb||typeof a==='function')&&!(a.ii===aG)}\nfunction HXb(a){return IXb(a,26)*1.4901161193847656E-8+IXb(a,27)*1.1102230246251565E-16}\nfunction jQb(a){a.j=rq(pr,l$b,8,2,15,1);a.c=rq(or,Z_b,8,2,15,1);a.b=rq(or,Z_b,8,2,15,1)}\nfunction j0(a,b){var c;oX(a,b);for(c=0;b[c]!=null;c++);b[c]=$_b+WV(a.A[a.j].i,'A',false)}\nfunction UEb(a,b){!!b.a&&(b.a.preventDefault(),undefined);a.e&&VEb(a,a.k+(ci(b.a)/3|0))}\nfunction di(a){return a.ownerDocument.defaultView.getComputedStyle(a,'').direction=='rtl'}\nfunction ri(a){return ((iTb(a.compatMode,MZb)?a.documentElement:a.body).scrollWidth||0)|0}\nfunction T4(a){if(a.Cc.c){Ee(a.Dc,AZb,false);TEb(a.Bc)}else{Ee(a.Dc,AZb,true);PEb(a.Bc)}}\nfunction sP(a,b,c){var d;_e(b);YS(a.k,b,c);d=eG(a.a,(DI(),b.Sb),b);b.Qb=d;af(b,a);KN(a.b)}\nfunction sX(a){var b;for(b=0;b!=a.ag();b++){a.A[b].A=false;a.A[b].g=0;a.mb[b]=0}a.w=false}\nfunction FBb(a){var b;if(a._.a.a.length==0)return false;b=SXb(a._);return b.u==0||b.u==1}\nfunction Bpb(a){var b;if(!wpb)return null;b=kUb(wpb,a);if(!b)return null;return OSb(b.a)}\nfunction s4(a){var b;b=(!hH&&(pH(),nH)&&(hH=new mH(P$b)),hH);if(!b)return;a.v=rH(b.a,p4b)}\nfunction t1(a){var b;b=a.mb[0]-a.mb[a.c];if(WT.L){a.W=b/W0b;return}a.e>0&&(a.W=b/a.e+a.f)}\nfunction eK(a){var b;b=!II(a);if(b||!TJ){return}EI(a,TJ)&&(a.stopPropagation(),undefined)}\nfunction IM(a,b){var c;c=b.target;if(Rh(c)){return mi(Zh((DI(),zM(a.tb))),c)}return false}\nfunction xxb(a,b){var c,d;d=rq(pr,l$b,8,b,15,1);for(c=0;c=0)++a.c}return a.cd){f=b;b=d;d=f}if(c>e){f=c;c=e;e=f}ryb(a.U,b,c,d-b+1,e-c+1)}\nfunction rkb(a,b,c,d,e,f){jX();AX.call(this,a,b,c,d,e,f);(this.bb&2)!=0||(this.n=1);pkb(this)}\nfunction mdb(a,b,c,d,e,f){jX();AX.call(this,a,b,c,d,e,f);this.A[2].A=!this.A[1].A;this.a=true}\nfunction mnb(a,b,c,d,e,f){jX();AX.call(this,a,b,c,d,e,f);this.A[4].A=!this.A[3].A;this.a=true}\nfunction job(a,b,c){Hnb.call(this,a,b,c);this.gb=true;this.e=new agb(WT);$fb(this.e,Wgb(F4b))}\nfunction $yb(a,b){_U.call(this,a,b);this.gb=true;this.g=0.05;this.f=i0b;this.c=j_b;this.bb|=4}\nfunction mpb(a,b){mgb.call(this,a,b);this.q=lpb;kgb(this);this.g=I$b;this.c=1;this.b=this.a=0}\nfunction MJb(a,b){G_.call(this,a,b);this.c='hello';this.a=new $Xb;NXb(this.a,this.c);this.b=24}\nfunction Tab(a,b,c){b8.call(this,a,b);this.c=c;this.bb|=1;WT.fd.c&&(this.bb|=2);Qab(this,null)}\nfunction lO(){gO.call(this);bO(this,new tO(this));dO(this,new TO(this));cO(this,new PO(this))}\nfunction YJb(a,b){return OF(CF($wnd.Math.round(a.f*$wnd.Math.exp(a.a*(1/(b+a.n)-1/a.o)))))}\nfunction wJb(a){a.B=0;a.v=0;a.n=0;a.p=0;a.e=0;a.q=0;a.a=0;a.u=0;a.d=0;a.w=0;a.f=true;a.c=true}\nfunction i_(a){a.g=0;a.n=0;a.q=uq(nq(pr,1),l$b,8,15,[8000,11025,16000,22050,44100,48000])}\nfunction CP(a){var b;b=a.text;a.hasAttribute(G_b)&&b.length>1&&(b=vTb(b,1,b.length-1));return b}\nfunction BU(a,b,c){var d,e;for(d=0;d!=a.ag();d++){e=a._f(d);if(e.a==b&&e.b==c)return d}return 0}\nfunction wX(a,b,c){var d,e;for(d=0;d!=a.ag();d++){e=a.A[d];if(e.k&&b--==0){e.B=c;return}}PTb()}\nfunction eO(a,b,c){var d;jO(a,b,0);d=XN(a,b,0,c==null);c!=null&&(d.textContent=c||'',undefined)}\nfunction lo(a,b,c){var d;if(!!ho&&b!=c&&(b==null||(BYb(b),b!=c))){d=new io;!!a.Pb&&oo(a.Pb,d)}}\nfunction J_(a,b){G_.call(this,a,b);this.ob=a;this.qb=b;SU(this,this.nb,this.pb,this.ob,this.qb)}\nfunction Jvb(a,b){Evb();b8.call(this,a,b);this.gb=true;this.k=0.6;this.c=S5b;this.f=0;Hvb(this)}\nfunction JP(){pf.call(this,$doc.createElement('select'));(DI(),this.Sb).className='gwt-ListBox'}\nfunction mL(a){return a.Nb?(SRb(),a.c.checked?true:false):(SRb(),a.c.defaultChecked?true:false)}\nfunction CQ(a,b){b?Ee(a,Me((DI(),a.Sb))+'-'+AZb,false):Ee(a,Me((DI(),a.Sb))+'-'+AZb,true);a.f=b}\nfunction Cob(a){UU(a);hU(a,32);a.e=a.g.k*J5b+p5b;a.b=a.c*a.e+a.d;a.f=Aob(a,a.b);new gxb;new gxb}\nfunction Ggb(a){a.d=true;return '34 '+Zbb(a.n)+' '+a.f+' '+a.q+' '+a.r+' '+a.e+' '+a.a+' '+a.g}\nfunction yEb(){yEb=ZF;xEb=uq(nq(or,1),Z_b,8,15,[1,1.2,1.5,1.8,2.2,2.7,3.3,3.9,4.7,5.6,6.8,8.2])}\nfunction Gjb(){this.d=rq(or,Z_b,8,9,15,1);this.b=rq(or,Z_b,8,9,15,1);this.d[4]=2.718281828459045}\nfunction xqb(a,b){G_.call(this,a,b);this.ob=a;this.qb=b;SU(this,this.nb,this.pb,this.ob,this.qb)}\nfunction qL(a){pL.call(this,(DI(),Wh($doc)));this.Sb.className='gwt-CheckBox';mN(this.b,a,false)}\nfunction F8(a,b,c,d,e,f){C8();d8.call(this,a,b,c,d,e,f,B8,A8);this.gb=true;D8(this,(e&2)!=0?1:2)}\nfunction yCb(a,b){a.u=new $Xb;fr(b,148)?(a.u=new $Xb,yBb(a,6,b)):(a.u=new $Xb,yBb(a,0,b));lCb(a)}\nfunction QH(a,b){var c,d;d=b.b-a.b;if(d<=0){return null}c=HH(a.a,b.a);return new KH(c.a/d,c.b/d)}\nfunction RBb(a,b){var c,d;d=rq(JE,XYb,2,1,6,1);bCb(a).Wf(d);for(c=0;d[c]!=null;c++)VBb(a,b,d[c])}\nfunction Bob(a){var b;v2(WT,a.a=new bN(a.i));se(a.a,H0b);b=lr(a.e*100);v2(WT,a.g=new YEb(b,a,a))}\nfunction ZJb(a){var b;v2(WT,a.b=new bN(a.k));se(a.b,H0b);b=lr(a.e*100);v2(WT,a.j=new YEb(b,a,a))}\nfunction DP(a){var b;b=(DI(),a.Sb).selectedIndex;return b==-1?null:(AP(a,b),CP(a.Sb.options[b]))}\nfunction AF(a){var b;b=a.h;if(b==0){return a.l+a.m*v$b}if(b==t$b){return a.l+a.m*v$b-w$b}return a}\nfunction Me(a){var b,c;b=a.className||'';c=kTb(b,yTb(32));if(c>=0){return b.substr(0,c)}return b}\nfunction II(a){DI();var b;b=bJ(OI,a);if(!b&&!!a){a.stopPropagation();a.preventDefault()}return b}\nfunction R2(a){var b,c,d;d=0;for(c=new OVb(a.ab.a);c.a=a.d.a.length){throw xF(new AXb)}b=tVb(a.d,a.b);a.a=a.b;HO(a);return b}\nfunction zBb(a){if(a.i){Ie(a.i,a.A.b+'PX');Ce(a.i,a.A.a+'PX');yf(a.i,a.A.b);xf(a.i,a.A.a);IBb(a)}}\nfunction UZ(a){var b;b=QU(4);KU(a.eb,a.fb,b[0],b[1],0,a.g);KU(a.eb,a.fb,b[3],b[2],1,a.g);a.a=lU(b)}\nfunction yjb(a){var b;b=zjb(a);while(true){if(Cjb(a,'^'))b=new mjb(b,zjb(a),9);else break}return b}\nfunction j3(a,b,c){var d,e;d=b-a.R;e=c-a.S;if(d==0&&e==0)return;a.Cd[4]+=d;a.Cd[5]+=e;a.R=b;a.S=c}\nfunction XJb(a){var b,c;b=a.n+25;c=a.n+50;return ($wnd.Math.log(a.f)-$wnd.Math.log(a.g))/(1/b-1/c)}\nfunction CF(a){if(x$b>22);e=a.h+b.h+(d>>22);return zq(c&s$b,d&s$b,e&t$b)}\nfunction Tq(a,b){var c,d,e;c=a.l-b.l;d=a.m-b.m+(c>>22);e=a.h-b.h+(d>>22);return zq(c&s$b,d&s$b,e&t$b)}\nfunction C4(a,b){if(a.Tc<0)return false;if(a.Tc6||c<-6)return 100;b==100&&(b=0);c%=8;return b+c}\nfunction E2(a){var b;if(!fr(a,152))return false;b=a;if(b.nb==b.ob||b.pb==b.qb)return true;return false}\nfunction F2(a,b){if(a.Qc<2)return false;b==0&&(b=1);if(a.Wc[b].v==a.Wc[b-1].v)return false;return true}\nfunction yRb(a,b){var c;c=zRb(a.a);if(!a.a){a.a=c;if(!a.b){a.c=b;a.b=a.a}}else{ERb(a.a,b,c)&&(a.a=c)}}\nfunction aO(a,b){var c,d,e;d=a.a;for(c=0;cb){return 1}if(a==b){return 0}return isNaN(a)?isNaN(b)?0:1:-1}\nfunction sVb(a,b){var c,d;c=AVb(b.a);d=c.length;if(d==0){return false}mYb(a.a,a.a.length,c);return true}\nfunction PY(a){var b,c;for(c=0;c!=u2.c.a.a.length;c++){b=TXb(u2.c,c);if(b.i==a)return true}return false}\nfunction mg(a){var b,c,d,e;for(b=(a.j==null&&(a.j=(nh(),e=mh.Ce(a),ph(e))),a.j),c=0,d=b.length;c=48&&c<=57&&JRb(a,d,c-48+b&LZb)}}\nfunction TU(a,b,c,d){var e,f;SU(a,b.a,b.b,c.a,c.b);e=lr(a.Y*d);f=lr(a.Z*d);bU(a,b.a+e,b.b+f,b.a-e,b.b-f)}\nfunction fO(a,b,c,d){var e;a.rf(b,c);e=XN(a,b,c,true);if(d){_e(d);kK(a.i,d);DI();Ch(e,KI(d.Sb));af(d,a)}}\nfunction O7(a,b,c){K7();var d;d=1-c;this.d=lr(a.d*d+b.d*c);this.c=lr(a.c*d+b.c*c);this.a=lr(a.a*d+b.a*c)}\nfunction Zjb(a,b){_U.call(this,a,b);Wjb(this);this.b=200;this.f=5;this.a=800;this.g=40;this.c=0;this.V=0}\nfunction TSb(a,b){return !isNaN(a)&&!isFinite(a)||!isNaN(b)&&!isFinite(b)?p$b:$wnd.Math.sqrt(a*a+b*b)}\nfunction ej(){cj();return uq(nq(xt,1),XYb,41,0,[Pi,Mi,Oi,Wi,Si,Qi,Ti,Ui,Vi,Yi,Zi,$i,bj,_i,aj,Ri,Ni,Xi])}\nfunction F4(a){var b,c,d;d=rq(OC,XYb,159,20,0,1);b=0;for(c=0;c=a.k&&(b=a.k-1);return b}\nfunction TVb(a){var b,c,d,e;e=1;for(c=0,d=a.length;c1||b>=0&&a.b<3}\nfunction OY(a,b){var c;if(a.i){OY(a.i,b);return}c=lr((b-a.f)*100/(a.e-a.f));a.g=true;VEb(a.j,c);a.g=false}\nfunction o3(a,b){var c;c=a.g;c<1&&(c=1);a.Sc=1-b/c;a.Sc<0.1&&(a.Sc=0.1);a.Sc>0.9&&(a.Sc=0.9);H4(a);y4(a)}\nfunction m_(a){a.c=lr(a.p*a.j);a.b=rq(or,Z_b,8,a.c,15,1);a.i=WT.td;a.e=0;a.d=false;a.o=1/a.p;a.n=WT.td+a.o}\nfunction wtb(a){a.t=iNb(a.u,a.t);a.u=a.t.t;a.C=c5b*$wnd.Math.log(c5b/($wnd.Math.sqrt(2)*a.t.v));a.gb=true}\nfunction fGb(a){a.j=a.a;a.f>0&&++a.j;if(a.d==0){a.i=a.j;a.b=-1}else{a.i=a.j+1;a.b=a.i-1}eU(a);gGb(a);uX(a)}\nfunction aIb(a,b){_U.call(this,a,b);this.a=1;this.i=20;this.f=4000;this.g=5;this.k=0.1;this.bb=2;$Hb(this)}\nfunction rV(a,b,c,d){a.a.lineWidth=3;a.a.beginPath();Ef(a.a,b,c,d*0.98,0,WYb);a.a.stroke();a.a.lineWidth=1}\nfunction Pp(a,b,c,d){var e;if(d>0){for(e=d;e<\\/i> '+xRb(b);return new GQ((aH(),new RG(d)),c)}\nfunction V3(b,c){var d;d=new So((Po(),Oo),c);try{Ro(d,new H6(b))}catch(a){a=wF(a);if(!fr(a,137))throw xF(a)}}\nfunction eg(){eg=ZF;bg=new fg('BUTT',0,'butt');cg=new fg('ROUND',1,'round');dg=new fg('SQUARE',2,'square')}\nfunction jl(){jl=ZF;il=new ml;gl=new ol;bl=new ql;cl=new sl;hl=new ul;fl=new wl;dl=new yl;al=new Al;el=new Cl}\nfunction SCb(a){wBb();switch(a){case 1:return 'A';case 3:return wRb;case 2:return 'W';default:return 'V';}}\nfunction yDb(b){var c;try{c=vSb(lS(b.n),10);return c}catch(a){a=wF(a);if(fr(a,15)){return 0}else throw xF(a)}}\nfunction iCb(a){var b,c;b=TXb(a.u,0).e;for(c=1;c=a.c){throw xF(new NRb)}--a.c;for(c=b;ca){throw xF(new ASb('fromIndex: 0 > toIndex: '+a))}if(a>b){throw xF(new QRb(Y6b+a+Z6b+b))}}\nfunction ALb(a,b,c,d,e,f){Nh((DI(),b.Sb),c);pUb(a.b,d.a);nUb(a.b,e.a,b);Re(f.Sb,false);gtb(d,e.a);b4(jRb,e.b,e.a)}\nfunction IU(a,b,c,d){c.a=lr($wnd.Math.floor(a.a*(1-d)+b.a*d+a0b));c.b=lr($wnd.Math.floor(a.b*(1-d)+b.b*d+a0b))}\nfunction y1(a,b,c){b==0&&(a.d=c.t>0?c.t:e1b);b==1&&(U1(c.b)?(a.bb&=-3):(a.bb|=2));b==2&&(a.g=c.t);b==3&&(a.n=c.t)}\nfunction xb(a,b){if(b<0){throw xF(new ASb('must be non-negative'))}!!a.d&&wb(a);a.c=false;a.d=OSb(Fb(Cb(a,a.b),b))}\nfunction db(){eb.call(this,(!lb&&(lb=!!$wnd.requestAnimationFrame&&!!$wnd.cancelAnimationFrame?new mb:new ub),lb))}\nfunction tT(a){sT.call(this,W_b+a+X_b+Y_b==null?lZb:_F(W_b+a+X_b+Y_b),fr(W_b+a+X_b+Y_b,37)?W_b+a+X_b+Y_b:null)}\nfunction $Z(a,b){_U.call(this,a,b);this.n=2;this.gb=true;this.n=2;this.f=SZ;TZ&&(this.bb|=2);YZ(this,WT.fd.c?1:2)}\nfunction Wmb(a,b){_U.call(this,a,b);this.gb=true;this.j=0.5;this.k=false;this.g=1.66;this.o=3.33;this.f=5;this.e=0}\nfunction xO(){Ae(this,$doc.createElement('iframe'));(DI(),this.Sb).className='gwt-Frame';this.Sb.src='iframe.html'}\nfunction Bf(){var a;!tf&&(tf=new Cf);a=$doc.createElement('canvas');if(!a.getContext){return null}return new Af(a)}\nfunction C3(a){var b,c,d,e;b=D3(a);e=b.b+140;d=b.a+100;c=new C2S(e,d);q3(a,c,2,b,e,d);return c.getSerializedSvg()}\nfunction TH(a,b){var c,d,e;e=new KH(a.a-b.a,a.b-b.b);c=$wnd.Math.abs(e.a);d=$wnd.Math.abs(e.b);return c<=25&&d<=25}\nfunction SP(a,b){var c,d;for(d=new OVb(a.f);d.a5){a.X8)return;a.j=lr(c.t);a.Ng();eU(a);uX(a)}}\nfunction U2(a){var b,c;for(c=a.ab.a.a.length-1;c>=0;c--){b=G3(a,c);if(fr(b,17)&&pCb(b.a)){b.Ef();WXb(a.ab,c);g4(a)}}}\nfunction T2(a,b){var c,d;if(!a.c)return;for(d=a.c.a.a.length-1;d>=0;d--){c=TXb(a.c,d);if(c.b==b){MY(c,a);WXb(a.c,d)}}}\nfunction T7(a){var b,c,d;b='';for(c=0;c=0&&a._.a.a.length>a.I)return TXb(a._,a.I).e;return a._.a.a.length>0?TXb(a._,0).e:TXb(a.u,0).e}\nfunction afb(a){var b;a.D=3;a.F=a.a;a.A=rq(Ky,XYb,9,a.a,0,1);for(b=0;b!=a.a;b++)a.A[b]=new j2(a,a.a-1-b,2,'I'+b);eU(a)}\nfunction LY(a,b,c){var d;v2(b,a.d=new bN(xRb(a.k)));se(a.d,H0b);d=lr((c-a.f)*100/(a.e-a.f));v2(b,a.j=new YEb(d,a,a.b))}\nfunction D4(a,b,c,d){!!a.fc&&!V2(a)&&a.Vc==-1&&(fr(a.fc,154)||fr(a.fc,135)||fr(a.fc,153))&&(t2=new FEb(b,c,d,a.fc,a))}\nfunction cGb(a,b,c,d){a.a.beginPath();Nf(a.a,b,c-d);Lf(a.a,b-d,c);Lf(a.a,b,c+d);Lf(a.a,b+d,c);Lf(a.a,b,c-d);a.a.fill()}\nfunction x4(a){var b,c;for(c=a.ab.a.a.length-1;c>=0;c--){b=G3(a,c);if(b.nb==b.ob&&b.pb==b.qb){XXb(a.ab,c);b.Ef()}}g4(a)}\nfunction o5(a,b,c,d){var e;e=a.oc.a.a.length+d;h5(a,e,b,-1);h5(a,e,c,1);e>0&&(a.t[e-1].e=true);h5(a,b,e,1);h5(a,c,e,-1)}\nfunction acb(a,b){var c;!Sbb&&(Sbb=new JWb);c=kUb(Sbb,a);if(c)return c;c=new Xbb(b);c.e=a;c.c=a;nUb(Sbb,a,c);return c}\nfunction OEb(a,b){var c;c=a.i+((a.g-a.i)*(b-MEb-NEb-LEb)/(m2-2*(MEb+NEb+LEb))|0);ca.g&&(c=a.g);return c}\nfunction zU(a,b){b[1]=$_b+WV($wnd.Math.abs(a.Rf()),'A',false);b[2]=__b+WV($wnd.Math.abs(a.gg()),'V',false);return 3}\nfunction VRb(a,b){SRb();return jr(a)?fTb(a,b):hr(a)?xSb((BYb(a),a),(BYb(b),b)):gr(a)?URb((BYb(a),a),(BYb(b),b)):a.se(b)}\nfunction Mqb(a,b){o4(Jqb);p4(Jqb,a);S2(Jqb);J4(Jqb,b);b==null||iTb(b.substr(0,10),w5b)?(Hib=null):(Hib=b);Jqb.Gd=false}\nfunction Cub(a,b){Aub();e8.call(this,a,b,zub,yub);Bub(this);this.gb=true;TXb(this.w,0).o=this.q;TXb(this.w,1).o=this.t}\nfunction _db(a,b,c){e8.call(this,a,b,Ydb,Xdb);this.j=c?-1:1;TXb(this.w,0).w=this.j;TXb(this.w,1).w=this.j;this.gb=true}\nfunction CO(a,b){gO.call(this);bO(this,new sO(this));dO(this,new TO(this));cO(this,new PO(this));AO(this,b);BO(this,a)}\nfunction tjb(a){var b;if(a.e.length==0)return new ljb(0);b=ojb(a);a.e.length>0&&Bjb(a,'unexpected token: '+a.e);return b}\nfunction Tbb(a){var b,c;if(a==null)return '';if(a.length==0)return '';c=a[0];for(b=1;b>=1);return b}}\nfunction _F(a){var b;if(Array.isArray(a)&&a.ii===aG){return aSb(W(a))+'@'+(b=Y(a)>>>0,b.toString(16))}return a.toString()}\nfunction OSb(a){var b,c;if(a>-129&&a<128){b=a+128;c=(QSb(),PSb)[b];!c&&(c=PSb[b]=new DSb(a));return c}return new DSb(a)}\nfunction J3(a,b){var c;for(c=0;c!=a.ab.a.a.length;c++){if(fr(TXb(a.ab,c),17)){--b;if(b<0)return TXb(a.ab,c)}}return null}\nfunction pX(a,b,c,d){var e;for(e=0;e!=(a.A==null?1:a.A.length);e++){if(d==e)continue;if(g2(a.A[e],b,c))return e}return -1}\nfunction eU(a){var b;b=a.ag()+a.Yf();if(a.hb==null||a.hb.length!=b){a.hb=rq(pr,l$b,8,b,15,1);a.mb=rq(or,Z_b,8,b,15,1)}}\nfunction Cyb(a){var b,c,d;for(b=0;b!=a.j.a.a.length;b++){c=RXb(a.j,b);if(fr(c,212)){d=c;iTb(d.c,a.q)&&Zyb(d,1-a.C,a.H)}}}\nfunction gab(a){var b,c,d,e;b=TXb(a.w,0);x1(b,a.b);c=TXb(a.w,1);x1(c,a.g);d=TXb(a.w,2);imb(d,a.a);e=TXb(a.w,3);Rzb(e,a.e)}\nfunction Twb(a,b,c,d,e,f){jX();AX.call(this,a,b,c,d,e,f);Qwb(this);this.b=rq(uF,P0b,8,this.n,16,1);VX(f,this.b);Rwb(this)}\nfunction fI(){this.d=new CVb;this.e=new zI;this.k=new zI;this.j=new zI;this.q=new CVb;this.i=new wI(this);bI(this,new CH)}\nfunction Fm(a,b){var c;Em.call(this);this.a=b;!am&&(am=new wn);c=un(am,a);if(!c){c=new CVb;vn(am,a,c)}c.Th(this);this.b=a}\nfunction gCb(a,b){var c;c=a.Z;if(c==null){if(b&&a.L)return null;c=hCb(a);if(c==null)return '';return xRb(c)}else return c}\nfunction zDb(b){var c;try{c=Whb(lS(b.J));c=d||bb&&d.ih(a[f-1],a[f])>0;--f){g=a[f];a[f]=a[f-1];a[f-1]=g}}}\nfunction BTb(a,b){var c,d,e;GYb(b,a.length);e='';for(d=0;d0){this.f=c.k;this.e=c.i}}\nfunction Fg(a){Dg();hg(this);jg(this);this.e=a;a!=null&&IYb(a,DZb,this);this.g=a==null?lZb:_F(a);this.a='';this.b=a;this.a=''}\nfunction KBb(a){return a.A.a>100&&a.A.b>100&&a.V.bc>=a.A.c&&a.V.bc<=a.A.c+36&&a.V.cc>=a.A.d+a.A.a-36&&a.V.cc<=a.A.d+a.A.a}\nfunction zxb(a){var b;v2(WT,a.n=new bN(a.A));se(a.n,H0b);b=PF(CF($wnd.Math.round((a.q-T5b)/J5b)));v2(WT,a.w=new YEb(b,a,a))}\nfunction Op(a){var b;if(48<=a&&a<=57){return a-48}else{b=(HYb(0,'0'.length),'0'.charCodeAt(0));return b<=a&&a<=b+9?a-b:-1}}\nfunction pm(a){var b,c;c=a.b;if(c){return b=a.a,((b.clientX||0)|0)-ei(c)+ii(c)+($wnd.pageXOffset|0)}return (a.a.clientX||0)|0}\nfunction _N(a,b){var c;if(b.Rb!=a){return false}try{af(b,null)}finally{c=(DI(),b.Sb);Fh((null,Zh(c)),c);lK(a.i,c)}return true}\nfunction GK(a,b){var c;if(b.Rb!=a){return false}try{af(b,null)}finally{c=(DI(),b.Sb);Fh((null,Zh(c)),c);$S(a.k,b)}return true}\nfunction zo(a,b,c){var d,e;e=jUb(a.d,b);if(!e){return $Vb(),$Vb(),ZVb}d=fUb(WWb(e.a,c));if(!d){return $Vb(),$Vb(),ZVb}return d}\nfunction yo(a,b,c){var d,e;e=jUb(a.d,b);if(!e){e=new JWb;mUb(a.d,b,e)}d=fUb(WWb(e.a,c));if(!d){d=new CVb;XWb(e.a,c,d)}return d}\nfunction xo(a,b,c,d){var e,f,g;e=zo(a,b,c);f=e.Wh(d);f&&e.Vh()&&(g=jUb(a.d,b),YWb(g.a,c),g.a.c+g.b.c==0&&oUb(a.d,b),undefined)}\nfunction w3(a){var b,c,d,e;e=l4(a);d=e.b*2;for(c=new OVb(a.ab.a);c.a0){$wnd.Error.stackTraceLimit=Error.stackTraceLimit=64;return true}return EZb in new Error}\nfunction szb(a){a.q=3*a.B;a.r=a.q+1;a.s=a.q+2;if(a.H==null||a.H.length!=a.B){a.H=rq(or,Z_b,8,a.B,15,1);a.G=rq(or,Z_b,8,a.B,15,1)}}\nfunction vDb(a){var b,c,d;c=lS(a.D);c.length==0&&(c=null);HCb(a.Y,c);if(a.Y.o){b=zDb(a);b>0&&CCb(a.Y,a.P,b);d=yDb(a);d>0&&ACb(a.Y,d)}}\nfunction MCb(a){var b,c,d;b=false;for(c=0;c!=a.u.a.a.length;c++){d=TXb(a.u,c);if(d.v==0)b=true;else if(d.v!=3)return false}return b}\nfunction Vg(){var a;if(Qg!=0){a=Ig();if(a-Rg>2000){Rg=a;Sg=$wnd.setTimeout(ah,10)}}if(Qg++==0){eh((dh(),bh));return true}return false}\nfunction Wkb(a,b,c,d){var e;a.a.beginPath();for(e=0;e0&&xb(this.c,b)}\nfunction gO(){this.i=new mK;this.g=(DI(),$doc.createElement(h_b));this.c=$doc.createElement(i_b);Ch(this.g,KI(this.c));Ae(this,this.g)}\nfunction kL(){HK.call(this);this.j=(DI(),$doc.createElement(h_b));this.i=$doc.createElement(i_b);Ch(this.j,KI(this.i));Ae(this,this.j)}\nfunction cL(){var a;bL.call(this,(a=$doc.createElement('BUTTON'),a.setAttribute('type',$Yb),a));(DI(),this.Sb).className='gwt-Button'}\nfunction vCb(a,b,c){if(!nyb(a.A,b,c))return;a.s||a._.a.a.length==0?(sBb=-1):(sBb=a.V.td-a.V.Sb*a.X*(a.A.c+a.A.b-b));GBb(a,b,c);rBb=a}\nfunction Xfb(a,b){if(b>=0||a.k==0)return a.b*($wnd.Math.exp(b*a.f)-1);return a.b*($wnd.Math.exp(b*a.f)-$wnd.Math.exp((-b-a.j)*b5b)-1)}\nfunction jbb(a){var b;if(a.i==null)return false;b=(!hH&&(pH(),nH)&&(hH=new mH(P$b)),hH);if(!b)return false;return jH(b,H4b+a.i)!=null}\nfunction xib(a,b,c){var d,e;e=lS(b.s);e.length==0&&(e=L7(c));d=(!hH&&(pH(),nH)&&(hH=new mH(P$b)),hH);!!d&&vH(d.a,a,e);return new P7(e)}\nfunction W4(b){var c;b.Md=1;try{c=(!hH&&(pH(),nH)&&(hH=new mH(P$b)),hH);b.Md=uSb(rH(c.a,t4b))}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}}\nfunction L3(b,c){var d,e;e=Zg()+'setuplist.txt';d=new So((Po(),Oo),e);try{Ro(d,new C6(b,c))}catch(a){a=wF(a);if(!fr(a,137))throw xF(a)}}\nfunction uab(b,c,d,e,f,g){aV.call(this,b,c,d,e,f);try{this.f=wSb(uSb(PHb(g)))}catch(a){a=wF(a);if(fr(a,15)){this.f=I$b}else throw xF(a)}}\nfunction krb(b,c,d,e,f,g){aV.call(this,b,c,d,e,f);try{this.a=wSb(uSb(PHb(g)))}catch(a){a=wF(a);if(fr(a,15)){this.a=2.5}else throw xF(a)}}\nfunction zJb(a,b,c,d,e,f){aV.call(this,a,b,c,d,e);wJb(this);this.o=(new ESb(PHb(f))).a;(this.bb&1)!=0?(this.g=ccb(PHb(f))):(this.g='TP')}\nfunction nsb(a,b,c,d,e,f){jX();AX.call(this,a,b,c,d,e,f);ksb(this);this.d=TRb((SRb(),jTb(yZb,PHb(f))));this.a=wSb(uSb(PHb(f)));lsb(this)}\nfunction Dub(a,b,c,d,e,f){Aub();d8.call(this,a,b,c,d,e,f,zub,yub);Bub(this);this.gb=true;this.q=TXb(this.w,0).o;this.t=TXb(this.w,1).o}\nfunction qSb(a,b){var c=0;while(!b[c]||b[c]==''){c++}var d=b[c++];for(;cd&&(b[d]=null);return b}\nfunction R4(a,b){var c,d,e,f,g;for(e=0;e!=b.length;e++){g=b[e];c=E3(a,e+1);for(f=0;f!=c.b.a.a.length;f++){d=TXb(c.b,f);d.a.ug(d.b,g)}}}\nfunction VX(a,b){var c,d,e;e=0;c=UYb;for(d=0;d=32)if(OHb(a)){e=vSb(PHb(a),10);c=0}else break;b[d]=(e&1<=a.b){throw xF(new ORb(B_b+b+C_b+a.b))}}\nfunction mp(a,b){var c,d;c=(HYb(b,a.length),a.charCodeAt(b));d=b+1;while(da.f*0.5?c:!c;d=a.mb[b]>a.f*(a.o[b]?0.35:0.55);a.o[b]=d;return d?c:!c}\nfunction Jp(a,b,c){if(a.d==0){b.a=b.a.substr(0,0)+'0'+b.a.substr(0);++a.b;++a.d}if(a.b\";return new NG(c.a)}\nfunction j_(a){var b;b='▶ '+xRb('Play Audio');a.k>1&&(b+=' '+a.k);v2(WT,a.a=new eL(b));Fe(a.a,V0b);Ve(a.a,new E_(a),(sm(),sm(),rm))}\nfunction zdb(b,c,d,e,f,g){t9.call(this,b,c,d,e,f,g);try{this.d=(new ESb(PHb(g))).a}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}this.gb=true}\n", +"function p_(a,b,c,d,e,f){aV.call(this,a,b,c,d,e);i_(this);this.j=uSb(PHb(f));this.p=vSb(PHb(f),10);this.k=vSb(PHb(f),10);m_(this);j_(this)}\nfunction Kqb(a){SN.call(this);Jqb=a;(DI(),this.Sb).name='Import';this.Sb.id=g4b;Ve(this,this,(lm(),lm(),km));Pe(this.Sb,'offScreen',true)}\nfunction IBb(a){if(a.j){a.V.Fc.c?(a.j.fillStyle='#eee',undefined):(a.j.fillStyle='#111',undefined);Jf(a.j,0,0,a.A.b-1,a.A.a-1)}a.c=a.d=-1}\nfunction WP(a,b,c){if(c<0||c>a.b.a.length){throw xF(new NRb)}a.o&&((DI(),b.Sb)[J_b]=2,undefined);NP(a,c,(DI(),b.Sb));qVb(a.b,c,b);return b}\nfunction _bb(a){var b;!Sbb&&(Sbb=new JWb);b=kUb(Sbb,a);if(b)return b;b=new Wbb;b.e=a;b.c=iTb(a,F4b)?'custom logic':a;nUb(Sbb,a,b);return b}\nfunction Xgb(a,b){var c;Tgb();c=kUb(Fgb,a);if(c)return c;if(!b){console.log(k5b+a);return Wgb(F4b)}c=new Pgb(b);c.n=a;nUb(Fgb,a,c);return c}\nfunction iNb(a,b){var c;eNb();c=kUb(XMb,a);if(c)return c;if(!b){console.log(k5b+a);return hNb(F4b)}c=new _Mb(b);c.t=a;nUb(XMb,a,c);return c}\nfunction pjb(a){var b;b=wjb(a);while(true){if(Cjb(a,'+'))b=new mjb(b,wjb(a),1);else if(Cjb(a,'-'))b=new mjb(b,wjb(a),2);else break}return b}\nfunction wjb(a){var b;b=Ajb(a);while(true){if(Cjb(a,'*'))b=new mjb(b,Ajb(a),7);else if(Cjb(a,'/'))b=new mjb(b,Ajb(a),8);else break}return b}\nfunction VH(a,b){var c,d,e,f;c=Ig();f=false;for(e=new OVb(a.q);e.ap5b&&Phb(b.t*q5b)>Phb(b.t*q5b/r5b))return Xhb(b,b.t/r5b)+'rms';return Xhb(b,b.t)}\nfunction RAb(a){if(iTb(a.substr(0,2),'0x'))return vSb(a.substr(2),16);if(iTb(a.substr(0,2),'0b'))return vSb(a.substr(2),2);return vSb(a,10)}\nfunction ypb(a,b,c,d,e,f){aV.call(this,a,b,c,d,e);this.a=PHb(f);if((this.bb&4)==0){while(OHb(f))this.a+=' '+PHb(f)}else{this.a=ccb(this.a)}}\nfunction GPb(a,b,c,d,e,f){VW.call(this,a,b,c,d,e,f);this.c=PHb(f);while(OHb(f))this.c+=' '+PHb(f);this.c=pTb(this.c,'%2[bB]','+');EPb(this)}\nfunction SKb(a,b,c,d,e,f){jX();AX.call(this,a,b,c,d,e,f);this.d=uSb(PHb(f));this.b=uSb(PHb(f));this.e=uSb(PHb(f));this.c=this.i=uSb(PHb(f))}\nfunction fmb(a,b,c){a.f[0]=b;a.f[1]=c;(a.d&2)==0?(a.a=2*a.e/a.g.vd):(a.a=a.e/a.g.vd);j5(a.g,a.f[0],a.f[1],a.a);k5(a.g,a.f[0]);k5(a.g,a.f[1])}\nfunction sab(a){var b;UU(a);hU(a,26);a.b=GU(a.eb,a.fb,0.25);a.c=GU(a.eb,a.fb,0.6);a.e=GU(a.eb,a.fb,0.5);b=GU(a.eb,a.fb,0.75);a.a=gU(a.e,b,4,4)}\nfunction BCb(a,b,c){var d,e;b!=a.o&&IBb(a);a.o=b;for(e=new OVb(a.u.a);e.a0){rVb(a.b,new mq(b.a,c));d=b.a.length;0d&&(b.a+=ATb(rq(nr,l$b,8,-d,15,1)))}}\nfunction $N(a,b,c){var d,e;d=(DI(),Yh(b));e=null;!!d&&(e=jK(a.i,d));if(e){_N(a,e);return true}else{c&&(b.innerHTML='',undefined);return false}}\nfunction lp(a,b,c){var d;d=c.a.getFullYear()-1900+1900;d<0&&(d=-d);switch(b){case 1:a.a+=d;break;case 2:rp(a,d%100,2);break;default:rp(a,d,b);}}\nfunction QK(a,b){Ae(this,$doc.createElement('a'));(DI(),this.Sb).className='gwt-Anchor';this.a=new nN(this.Sb);mN(this.a,a,false);Th(this.Sb,b)}\nfunction cfb(b,c,d,e,f,g){jX();AX.call(this,b,c,d,e,f,g);this.a=4;try{this.a=vSb(PHb(g),10)}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}afb(this)}\nfunction Xsb(b,c,d,e,f,g){jX();AX.call(this,b,c,d,e,f,g);this.c=2;try{this.c=vSb(PHb(g),10)}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}Vsb(this)}\nfunction Seb(b,c,d,e,f,g){jX();AX.call(this,b,c,d,e,f,g);try{this.c=vSb(PHb(g),10);Qeb(this);eU(this)}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}}\nfunction Fo(a){var b,c,d;yg.call(this,Go(a),a.Vh()?null:a.ef().uf());this.a=a;d=0;for(c=a.ef();c.tf();){b=c.uf();if(d++==0){continue}ig(this,b)}}\nfunction ep(a,b){switch(b.c){case 0:{a['dir']='rtl';break}case 1:{a['dir']='ltr';break}case 2:{dp(a)!=(zp(),wp)&&(a['dir']='',undefined);break}}}\nfunction YR(a){var b;if(a.c){return false}a.c=(b=(PH==null&&(PH=(SRb(),!xn&&(xn=new In),false)),TRb(PH)?new fI:null),!!b&&cI(b,a),b);return !a.c}\nfunction k_(){var a,b,c,d;d=1;if(!WT.ab)return 0;for(b=0;b!=WT.ab.a.a.length;b++){a=G3(WT,b);if(!fr(a,215))continue;c=a.k;c>=d&&(d=c+1)}return d}\nfunction iFb(a){var b,c,d;d=DP(a.a);for(b=0;b!=a.c.Rb.a.a.length;b++){c=TXb(a.c.Rb,b);if(iTb(c.b,d)){c.e.Ae();break}}HM(a,false);p2==a&&(p2=null)}\nfunction p9(a,b,c){b==0&&(a.o=U1(c.b));if(b==1){a.bb=pib(c,a.bb,2);a.wg()}if(b==2){a.n=lS(c.s);if(a.n.length==0){a.n=null;a.bb&=-5}else a.bb|=4}}\nfunction Y(a){return jr(a)?QYb(a):hr(a)?lr((BYb(a),a)):gr(a)?(BYb(a),a)?1231:1237:er(a)?a.Rd():tq(a)?KYb(a):!!a&&!!a.hashCode?a.hashCode():KYb(a)}\nfunction U(a,b){return jr(a)?iTb(a,b):hr(a)?(BYb(a),a===b):gr(a)?(BYb(a),a===b):er(a)?a.Pd(b):tq(a)?a===b:!!a&&!!a.equals?a.equals(b):kr(a)===kr(b)}\nfunction cr(a,b){if(jr(a)){return !!br[b]}else if(a.hi){return !!a.hi[b]}else if(hr(a)){return !!ar[b]}else if(gr(a)){return !!_q[b]}return false}\nfunction iJ(){var a,b,c;a=(b=$wnd.location.href,c=b.indexOf('#'),c>0?b.substring(c):'');if(a==null||a.length==0){return ''}return oJ(a.substr(1))}\nfunction KM(a,b,c){var d,e;if(a.qb){d=b+ei((DI(),a.Sb));e=c+(gi(a.Sb)+$wnd.pageYOffset|0);if(d=a.sb||ea.t/2)}a.Hg();for(b=0;b!=a.ag();b++){c=a.A[b];c.k&&x5(WT,c.B,c.A?a.t:0)}}\nfunction lHb(a,b,c,d,e,f){aV.call(this,a,b,c,d,e);this.f=wSb(uSb(PHb(f)));this.e=wSb(uSb(PHb(f)));this.c=wSb(uSb(PHb(f)));this.d=wSb(uSb(PHb(f)))}\nfunction AU(a,b,c,d){a.db=-1;elb(a.nb,a.pb,a.ob,a.qb)>=d&&(elb(a.nb,a.pb,b,c)<=25?(a.db=0):a.$f()>1&&elb(a.ob,a.qb,b,c)<=25&&(a.db=1));return a.db}\nfunction nyb(a,b,c){var d,e,f,g;e=a.b;d=a.a;if((e|d)<0){return false}f=a.c;g=a.d;if(bb)&&(dc)}\nfunction CDb(a){var b;b=lr($wnd.Math.pow(2,10-a._.k));G5('changed '+a.Y.X+' '+b+' '+a._.k);a.Y.X!=b&&GCb(a.Y,b);$M(a.Z,WV(BBb(a.Y),'s',false)+h6b)}\nfunction ig(a,b){CYb(b);xYb(b!=a,'Exception can not suppress itself.');if(a.i){return}a.k==null?(a.k=uq(nq(KE,1),XYb,37,0,[b])):(a.k[a.k.length]=b)}\nfunction AH(a,b,c,d){var e,f,g;g=a*b;if(c>=0){e=$wnd.Math.max(0,c-d);g=$wnd.Math.min(g,e)}else{f=$wnd.Math.min(0,c+d);g=$wnd.Math.max(g,f)}return g}\nfunction CM(a){var b,c;c=(DI(),$doc.createElement('td'));b=$doc.createElement(y$b);Ch(c,KI(b));c.className=a||'';b.className=a+'Inner'||'';return c}\nfunction A3(a,b){var c,d,e,f,g;e=Bf();c=D3(a);g=c.b*2+140;f=c.a*2+100;Vh((DI(),e.Sb),g);Uh(e.Sb,f);d=e.Sb.getContext('2d');q3(a,d,b,c,g,f);return e}\nfunction i4(a){var b,c;if(!!a.fc&&!fr(a.fc,123))return false;for(c=0;c!=a.ab.a.a.length;c++){b=G3(a,c);if(b.kb&&!fr(b,123))return false}return true}\nfunction QYb(a){OYb();var b,c,d;c=':'+a;d=NYb[c];if(d!=null){return lr((BYb(d),d))}d=LYb[c];b=d==null?PYb(a):lr((BYb(d),d));RYb();NYb[c]=b;return b}\nfunction YM(a){var b;!a.a?(b=null):a.a?(b=a.a):(b=a.a==(VO(),UO)?eP(a.b.c):dP(a.b.c));if(b!=a.c){a.c=b;(DI(),a.Sb).style['textAlign']=!a.c?'':a.c.a}}\nfunction VN(a,b,c){var d;WN(a,b);if(c<0){throw xF(new ORb('Column '+c+' must be non-negative: '+c))}d=a.a;if(d<=c){throw xF(new ORb(z_b+c+A_b+a.a))}}\nfunction e4(a,b,c){var d;if(a.Qc==0)return false;d=b>=0&&b=a.j.a-5&&c=1){var f=new FileReader;f.onload=function(a){var b=f.result;c.Dh(b,e[0].name)};f.readAsText(e[0])}}\nfunction zsb(a){var b,c,d,e;e=a.a?0:1;for(b=0;b!=WT.ab.a.a.length;b++){c=RXb(WT.ab,b);if(fr(c,212)){d=c;iTb(d.c,a.f)&&(d.b=(d.bb&2)!=0?1-e:e,d.o=0)}}}\nfunction ZRb(a,b,c){wYb(a>=0&&a<=1114111);if(a>=W$b){b[c++]=55296+(a-W$b>>10&1023)&LZb;b[c]=56320+(a-W$b&1023)&LZb;return 2}else{b[c]=a&LZb;return 1}}\nfunction F5(d){d.toBlob(function(b){var c=parent.navigator.clipboard.write([new ClipboardItem({'image/png':b})]);c.then(function(a){console.log(a)})})}\nfunction AMb(a,b){_U.call(this,a,b);this.o=4;this.t=this.p=1;this.u=32;this.gb=true;this.e=0.999;this.j=rq(or,Z_b,8,2,15,1);this.i=rq(or,Z_b,8,2,15,1)}\nfunction YMb(a){a.f=true;return '32 '+Zbb(a.t)+' '+a.j+' '+a.v+' '+a.p+' '+a.b+' '+a.s+' '+a.q+' '+a.a+' '+a.r+' '+a.g+' '+a.i+' '+a.n+' '+a.o+' '+a.c}\nfunction $p(a,b,c){if(!b){throw xF(new ASb('Unknown currency code'))}this.s=a;this.a=b;Vp(this,this.s);if(!c&&this.g){this.n=this.a[2]&7;this.i=this.n}}\nfunction wG(a,b){var c;c=$doc.createElement(y$b);c.appendChild(b);c.style[z$b]=(Kk(),A$b);c.style[B$b]=(zk(),C$b);xG(b);a.insertBefore(c,null);return c}\nfunction ZL(a){a.Eb=true;if(!a.zb){a.zb=$doc.createElement(y$b);Mh(a.zb,a.Bb);a.zb.style[z$b]=(Kk(),A$b);a.zb.style[D$b]=(jl(),E$b);a.zb.style[F$b]=E$b}}\nfunction qR(a,b){pL.call(this,(DI(),$h($doc,a)));this.Sb.className='gwt-RadioButton';pR(this,1);pR(this,8);pR(this,T$b);pR(this,128);mN(this.b,b,false)}\nfunction XSb(a){var b;if(a==0){return a}else if(!isNaN(a)&&!isFinite(a)){return a==0||isNaN(a)?a:a<0?-1:1}else{b=$wnd.Math.exp(2*a);return (b-1)/(b+1)}}\nfunction Eq(a,b){var c,d,e;if(b<=22){c=a.l&(1<>>0,c.toString(16)))+M7((d=a.c>>>0,d.toString(16)))+M7((b=a.a>>>0,b.toString(16)))}\nfunction lg(a,b,c){var d,e,f,g,h;mg(a);for(e=(a.k==null&&(a.k=rq(KE,XYb,37,0,0,1)),a.k),f=0,g=e.length;f=55296&&d<=56319&&b>22);e+=d>>22;if(e<0){return false}a.l=c&s$b;a.m=d&s$b;a.h=e&t$b;return true}\nfunction Ubb(a){a.a=true;a.g.length>0&&!hTb(a.g,GZb)&&(a.g+=GZb);return '! '+Zbb(a.e)+' '+a.b+' '+Zbb(Tbb(a.d))+' '+Zbb(Tbb(a.f))+' '+Zbb(a.c)+' '+Zbb(a.g)}\nfunction Efb(a,b,c,d,e,f){aV.call(this,a,b,c,d,e);this.g=wSb(uSb(PHb(f)));this.f=wSb(uSb(PHb(f)));this.b=wSb(uSb(PHb(f)));this.e=wSb(uSb(PHb(f)));Cfb(this)}\nfunction Ekb(a,b,c,d,e,f){aV.call(this,a,b,c,d,e);this.d=wSb(uSb(PHb(f)));this.c=wSb(uSb(PHb(f)));this.b=wSb(uSb(PHb(f)));this.a=TRb((SRb(),jTb(yZb,PHb(f))))}\nfunction WY(b,c,d,e,f,g){aV.call(this,b,c,d,e,f);UY(this);this.n=0;this.g=vSb(PHb(g),10);try{this.n=vSb(PHb(g),10)}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}}\nfunction NNb(a,b,c,d,e,f){aV.call(this,a,b,c,d,e);KNb(this);this.t=uSb(PHb(f));this.k=uSb(PHb(f));this.c=uSb(PHb(f));this.s=(SRb(),jTb(yZb,PHb(f)));LNb(this)}\nfunction np(a){var b,c,d;b=false;d=a.b.a.length;for(c=0;cd){f=b;b=d;d=f}if(c>e){f=c;c=e;e=f}b=fW(a.U.c,b);c=fW(a.U.d,c);d=eW(a.U.c+a.U.b,d);e=eW(a.U.d+a.U.a,e);ryb(a.U,b,c,d-b,e-c)}\nfunction bY(a){var b,c,d,e;e=new KTb;d=0;b=0;for(c=0;c=32){e.a+=' ';e.a+=d;d=0;b=0}a[c]&&(d|=1<0){e.a+=' ';e.a+=d}return e.a}\nfunction qEb(a,b,c){var d;a.d.M!=0&&++a.d.N;a.d.M=0;d=new nEb(a.d,xRb(b),(SRb(),c?true:false));fO(a.a,a.d.N,a.d.M,d.d);NXb(a.c,d);NXb(a.b,OSb(a.d.N));++a.d.N}\nfunction ZLb(a){if(WT.Sb==0)return;a.j=lr(a.e/WT.Sb);PTb();if(a.j>E5b)a.q=a.r=null;else{a.q=rq(or,Z_b,8,a.j,15,1);a.r=rq(or,Z_b,8,a.j,15,1)}a.n=0;RU(a);a.i=0}\nfunction BG(a,b){var c,d,e;d=Zh(a);!!d&&d.removeChild(a);Zh(b)==a&&(c=Zh(b),!!c&&c.removeChild(b));e=b.style;e[z$b]='';e[D$b]='';e[F$b]='';e[uZb]='';e[tZb]=''}\nfunction bR(a){_Q(a);if(a.i){ue(a.a).style[z$b]=A$b;a.a.Lb!=-1&&$L(a.a,a.a.Fb,a.a.Lb);KK((DR(),HR()),a.a)}else{a.c||LK((DR(),HR()),a.a)}ue(a.a).style[B$b]=o_b}\nfunction ojb(a){var b,c,d,e;b=xjb(a);if(Cjb(a,'?')){c=xjb(a);Cjb(a,':')||Bjb(a,'expected :, got '+a.e);d=ojb(a);e=new mjb(b,c,32);NXb(e.a,d);return e}return b}\nfunction uCb(a){var b,c,d;c=(!hH&&(pH(),nH)&&(hH=new mH(P$b)),hH);if(!c)return;d=TXb(a.u,0);b=cCb(a);lH(c,s6b,'1 '+b+' '+d.s);console.log('saved defaults '+b)}\nfunction ILb(a,b){var c,d;Re((DI(),a.Sb),true);c=ei(b.Sb)-12;d=(gi(b.Sb)+$wnd.pageYOffset|0)+Ih(b.Sb,rZb)-2;a.Sb.style[D$b]=c+(jl(),XZb);a.Sb.style[F$b]=d+XZb}\nfunction _Mb(a){this.j=a.j;this.v=a.v;this.p=a.p;this.b=a.b;this.s=a.s;this.q=a.q;this.a=a.a;this.r=a.r;this.g=a.g;this.i=a.i;this.n=a.n;this.o=a.o;this.c=a.c}\nfunction D2(a){var b;for(b=0;b!=a.Qc;b++)if(QCb(a.Wc[b]))return false;for(b=0;b!=a.ab.a.a.length;b++)if(fr(G3(a,b),17)&&QCb(G3(a,b).a))return false;return true}\nfunction W7(a,b){var c,d,e;c=0;d=TXb(a.A,b).b;for(e=0;ea.i&&--a.k}else{if(b>m2-MEb-NEb){a.k=a.b.length||a.a>=a.c.length){d=a.a*2;d<4?(d=4):(d&d-1)!=0&&(d=JSb(d));a.b=xxb(a.b,d);a.c=xxb(a.c,d)}a.b[a.a]=b;a.c[a.a]=c;++a.a}\nfunction yFb(a){if(a.d.length>0&&a.a>0){if(a.b>=a.a){if((a.bb&4)!=0){a.A[1].A=false;return}a.b=0}a.A[1].A=(a.d[a.b/32|0]&1<\"+vTb(a,5,a.length-5)+G6b}\nfunction Dob(a,b){_U.call(this,a,b);this.d=0.1;this.c=q5b;this.e=0.34;this.b=this.c*this.e+this.d;this.f=Aob(this,this.b);this.i=xRb('Light Brightness');Bob(this)}\nfunction bIb(a,b,c,d,e,f){aV.call(this,a,b,c,d,e);this.a=1;this.i=wSb(uSb(PHb(f)));this.f=wSb(uSb(PHb(f)));this.g=wSb(uSb(PHb(f)));this.k=wSb(uSb(PHb(f)));$Hb(this)}\nfunction lDb(a,b){switch(a.u){case 0:return WV(b,'V',false);case 1:return WV(b,'A',false);case 3:return WV(b,wRb,false);case 2:return WV(b,'W',false);}return null}\nfunction Lq(a,b){var c,d,e,f,g,h,i,j;i=a.h>>19;j=b.h>>19;if(i!=j){return j-i}e=a.h;h=b.h;if(e!=h){return e-h}d=a.m;g=b.m;if(d!=g){return d-g}c=a.l;f=b.l;return c-f}\nfunction zLb(a,b){var c;if(a.a){ue(a.a).style[u6b]=E6b;ue(a.a).style[u4b]=null}c=kUb(a.b,b);if(c){(DI(),c.Sb).style[u6b]='#007bff';c.Sb.style[u4b]='#e6f7ff';a.a=c}}\nfunction z5(){try{l=navigator.languages?navigator.languages[0]:navigator.language||navigator.userLanguage;return l.toUpperCase().startsWith('DE')}catch(a){return 0}}\nfunction sCb(a,b){var c;a.G=1;while(a.G<=a.A.b)a.G*=2;!a.u&&(a.u=new $Xb);a.R=false;for(c=0;c!=a.u.a.a.length;c++)mDb(TXb(a.u,c),a.G,a.X,b);EBb(a);a.H=a.V.Sb;zBb(a)}\nfunction ICb(a,b){var c;if(a.u.a.a.length>2||a.u.a.a.length==0)return;c=SXb(a.u).e;if(a.u.a.a.length==2&&TXb(a.u,1).e!=c)return;a.s=a.t=false;a.u=new $Xb;yBb(a,b,c)}\nfunction _e(a){if(!a.Rb){DR();LWb(CR,a)&&FR(a)}else if(fr(a.Rb,40)){a.Rb.ff(a)}else if(a.Rb){throw xF(new CSb(\"This widget's parent does not implement HasWidgets\"))}}\nfunction jW(){var a,b;!OT&&(OT=(K7(),F7));!MT&&(MT=(K7(),H7));!NT&&(NT=(K7(),E7));for(a=0;a!=FT;a++){b=a*2/FT-1;b<0?(ET[a]=new O7(NT,MT,-b)):(ET[a]=new O7(NT,OT,b))}}\nfunction jO(a,b,c){var d,e;kO(a,b);if(c<0){throw xF(new ORb('Cannot create a column with a negative index: '+c))}d=(WN(a,b),YN((DI(),a.c),b));e=c+1-d;e>0&&UN(a.c,b,e)}\nfunction I4(a,b,c){var d,e,f,g;d=c?a.j.b/2|0:a.bc;e=c?a.j.a/2|0:a.cc;f=lr((d-a.Cd[4])/a.Cd[0]);g=lr((e-a.Cd[5])/a.Cd[3]);a.Cd[0]=a.Cd[3]=b;a.Cd[4]=d-f*b;a.Cd[5]=e-g*b}\nfunction h5(a,b,c,d){var e;!isNaN(d)&&!isFinite(d)&&J5();if(b>0&&c>0){if(a.p){b=a.t[b-1].d;e=a.t[c-1];if(e.f==1){a.s[b]-=d*e.g;return}c=e.c}else{--b;--c}a.k[b][c]+=d}}\nfunction kDb(a,b){if(b>0){a.d=hDb[(b-1)%8];return}switch(a.u){case 0:a.d=L7(OT);break;case 1:a.d=u2.Fc.c?'#A0A000':'#FFFF00';break;default:a.d=u2.Fc.c?f6b:'#FFFFFF';}}\nfunction Kp(a,b){var c,d;c=a.b+a.n;if(a.da.d&&(d=a.d);while(d>c&&eTb(b.a,d-1)==48){--d}if(d0);CQ(a.Ed,a.Fd.a.a.length>0)}\nfunction i3(a){var b;if(a.Fd.a.a.length==0)return;NXb(a.Kc,new g7(a,r3(a)));b=WXb(a.Fd,a.Fd.a.a.length-1);X3(a,b);CQ(a.Jc,a.Kc.a.a.length>0);CQ(a.Ed,a.Fd.a.a.length>0)}\nfunction $Cb(a,b,c,d,e,f){var g,h;aV.call(this,a,b,c,d,e);this.gb=false;g=PHb(f);h=new RHb(g,'_');this.a=new RCb(WT);PCb(this.a,h);UU(this);YCb(this);sCb(this.a,false)}\nfunction rY(a,b,c,d,e,f){aV.call(this,a,b,c,d,e);this.a=wSb(uSb(PHb(f)));this.d=wSb(uSb(PHb(f)));this.c=wSb(uSb(PHb(f)));(this.bb&2)!=0&&(this.bb&=-3);this.b=0;this.V=0}\nfunction gNb(){var a,b,c,d;d=new $Xb;a=new DUb((new vUb(XMb)).a);while(a.b){b=BUb(a);c=b.ei();if(c.k)continue;uVb(d.a,c,0)!=-1||rVb(d.a,c)}$Vb();zVb(d.a,null);return d}\nfunction UF(b,c,d,e){TF();var f=RF;$moduleName=c;$moduleBase=d;vF=e;function g(){for(var a=0;a=0;d--){if(iTb(a[d].d,b)||iTb(a[d].d,c)){a.length>=d+1&&a.splice(0,d+1);break}}return a}\nfunction HN(){HN=ZF;EN=new IN('NORTH',0);BN=new IN('EAST',1);FN=new IN('SOUTH',2);GN=new IN('WEST',3);AN=new IN(VZb,4);DN=new IN('LINE_START',5);CN=new IN('LINE_END',6)}\nfunction BO(a,b){if(a.b==b){return}if(b<0){throw xF(new ORb('Cannot set number of rows to '+b))}if(a.bb){zO(a,a.b-1)}}}\nfunction _Hb(a){if(a.ea.f){a.e=a.i;a.d=0;a.a=1}if((a.bb&1)==0){a.b=a.a*WT.vd*(a.f-a.i)/a.k;a.c=1}else{a.b=0;a.c=$wnd.Math.pow(a.f/a.i,a.a*WT.vd/a.k)}a.j=WT.vd}\nfunction RCb(a){wBb();this.V=a;this.C=rq(or,Z_b,8,4,15,1);this.B=rq(uF,P0b,8,4,16,1);this.n=uBb;this.A=new vyb(0,0,1,1);this.i=Bf();this.j=vf(this.i);zBb(this);lCb(this)}\nfunction YCb(a){var b,c,d,e,f;b=r5(WT,fW(a.nb,a.ob));c=r5(WT,eW(a.nb,a.ob));d=s5(WT,fW(a.pb,a.qb));e=s5(WT,eW(a.pb,a.qb));f=new vyb(b,d,c-b,e-d);pyb(f,a.a.A)||FCb(a.a,f)}\nfunction rEb(a){var b,c,d,e;for(c=0;c\\'\"]');WG=new RegExp('&','g');XG=new RegExp('>','g');ZG=new RegExp('<','g');_G=new RegExp(\"'\",'g');$G=new RegExp('\"','g')}\nfunction XRb(a,b){if(b<2||b>36){return -1}if(a>=48&&a<48+$wnd.Math.min(b,10)){return a-48}if(a>=97&&a=65&&a0?(a.className=d+' '+b||'',undefined):(a.className=b||'',undefined);return true}return false}\nfunction B4(a){var b,c,d,e;d=(!hH&&(pH(),nH)&&(hH=new mH(P$b)),hH);if(!d)return;e='1';for(b=0;b!=a.ad.length;b++){c=a.ad[b];if(c==null)continue;e+=';'+b+'='+c}vH(d.a,b4b,e)}\nfunction Yp(a,b,c){var d,e;d=true;while(d&&c>=0){e=eTb(b.a,c);if(e==57){JRb(b,c--,48)}else{JRb(b,c,e+1&LZb);d=false}}if(d){b.a=b.a.substr(0,0)+'1'+b.a.substr(0);++a.b;++a.d}}\nfunction bJ(a,b){var c,d,e,f,g;if(!!XI&&!!a&&po(a,XI)){c=YI.a;d=YI.b;e=YI.c;f=YI.d;ZI(YI);$I(YI,b);oo(a,YI);g=!(YI.a&&!YI.b);YI.a=c;YI.b=d;YI.c=e;YI.d=f;return g}return true}\nfunction YP(a){if(eQ(a)){return}if(a.o){gQ(a)}else{if(!!a.j.i&&a.j.i.f.a.length!=0&&(!a.k||!a.k.j)){!a.k&&RP(a,a.j,false,true);TP(a.j.i)}else !!a.g&&(a.g.o?gQ(a.g):YP(a.g))}}\nfunction $P(a){if(eQ(a)){return}if(a.o){if(!!a.j.i&&a.j.i.f.a.length!=0&&(!a.k||!a.k.j)){!a.k&&RP(a,a.j,false,true);TP(a.j.i)}else !!a.g&&(a.g.o?$P(a.g):gQ(a.g))}else{gQ(a)}}\nfunction FU(a,b){var c;if(LT==a||a.kb||WT.zc==a||fr(LT,17)&&bCb(LT.a)==a){return ST}if(!WT.Ld.c){return ZT}c=lr((b+YT)*(FT-1)/(YT*2));c<0&&(c=0);c>=FT&&(c=FT-1);return ET[c]}\nfunction Y2(a,b){var c,d,e;b&&o4(a);d=false;for(e=a.ab.a.a.length-1;e>=0;e--){c=G3(a,e);if(c.kb||LT==c){LT==c&&P4(a,null);c.Ef();XXb(a.ab,e);d=true}}if(d){U2(a);g4(a);C5(a)}}\nfunction uIb(b,c,d,e,f,g){t9.call(this,b,c,d,e,f,g);this.a=(new ESb(PHb(g))).a;this.d=2;try{this.d=(new ESb(PHb(g))).a}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}this.gb=true}\nfunction Wob(b,c,d,e,f,g){jX();AX.call(this,b,c,d,e,f,g);try{this.D=vSb(PHb(g),10);this.F=vSb(PHb(g),10)}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}eU(this);Uob(this);uX(this)}\nfunction zTb(a){var b;b=0;while(0<=(b=a.indexOf('\\\\',b))){HYb(b+1,a.length);a.charCodeAt(b+1)==36?(a=a.substr(0,b)+'$'+uTb(a,++b)):(a=a.substr(0,b)+(''+uTb(a,++b)))}return a}\nfunction z1(a){var b;UU(a);b=(a.X/2-4)/a.X;a.eb=GU(a.ib,a.jb,b);a.fb=GU(a.ib,a.jb,1-b);a.i=QU(2);a.j=QU(2);KU(a.ib,a.jb,a.i[0],a.i[1],b,12);KU(a.ib,a.jb,a.j[0],a.j[1],1-b,12)}\nfunction Lgb(b,c){b.f=(new ESb(PHb(c))).a;b.q=uSb(PHb(c));b.r=uSb(PHb(c));b.e=uSb(PHb(c));b.a=uSb(PHb(c));try{b.g=uSb(PHb(c))}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}Mgb(b)}\nfunction DEb(a){var b,c;c=BEb(a);for(b=0;b<5;b++){xe(a.d[b]);if(c+b-2<0||c+b-2>=a.k)$M(a.d[b],'---');else{$M(a.d[b],WV(a.o[c+b-2],'',true));c+b-2==a.a&&re(a.d[b],'current')}}}\nfunction rU(a,b,c){alb(b,c);a.db==-1?_kb(b,a.nb-3,a.pb-3,7,7):a.db==0&&_kb(b,a.nb-4,a.pb-4,9,9);a.$f()>1&&(a.db==-1?_kb(b,a.ob-3,a.qb-3,7,7):a.db==1&&_kb(b,a.ob-4,a.qb-4,9,9))}\nfunction JU(a,b,c,d,e){var f,g;f=b.b-a.b;g=a.a-b.a;e/=$wnd.Math.sqrt(f*f+g*g);c.a=lr($wnd.Math.floor(a.a*(1-d)+b.a*d+e*f+a0b));c.b=lr($wnd.Math.floor(a.b*(1-d)+b.b*d+e*g+a0b))}\nfunction E4(a,b,c,d){var e,f,g,h,i,j;g=c4(b,a.Eb);h=_3(b,a.Eb);i=c4(c,a.Fb);j=_3(c,a.Fb);a.$c=new vyb(g,i,h-g,j-i);for(f=0;f!=a.ab.a.a.length;f++){e=G3(a,f);e.pg(a.$c,d)}t3(a)}\nfunction n9(a,b){var c;if(b==0){c=new uib('',0,-1,-1);c.b=new X1(z4b,a.o);return c}if(b==1)return wib(A4b,(a.bb&2)!=0);if(b==2)return new vib(B4b,a.n==null?'':a.n);return null}\nfunction Zbb(a){if(a.length==0)return '\\\\0';return oTb(oTb(oTb(oTb(oTb(oTb(oTb(oTb(a,'\\\\','\\\\\\\\'),GZb,'\\\\n'),' ','\\\\s'),'+','\\\\p'),'=','\\\\q'),'#','\\\\h'),'&','\\\\a'),'\\r','\\\\r')}\nfunction fhb(a){var b;if(a.f){b=lS(a.f);if(b.length==0){yJ(xRb('Please enter a model name.'));return}kbb(a.e,Oab=b)}lbb(a.e,U1(a.i));w5(u2);g4(u2);HM(a,false);p2==a&&(p2=null)}\nfunction Eob(a,b,c,d,e,f){aV.call(this,a,b,c,d,e);this.d=0.1;this.c=q5b;this.e=wSb(uSb(PHb(f)));this.b=this.c*this.e+this.d;this.f=Aob(this,this.b);this.i=ccb(PHb(f));Bob(this)}\nfunction Emb(b,c,d,e,f,g){aV.call(this,b,c,d,e,f);this.gb=true;this.f=0.5;this.c=5;try{this.f=wSb(uSb(PHb(g)));this.c=wSb(uSb(PHb(g)))}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}}\nfunction rtb(a,b,c){var d;if(b>a.C&&$wnd.Math.abs(b-c)>0.05173){if(c>0){d=1+(b-c)/c5b;d>0?(b=c+c5b*$wnd.Math.log(d)):(b=a.C)}else{b=c5b*$wnd.Math.log(b/c5b)}WT.C=false}return b}\nfunction x3(a){var b,c,d,e;d=l4(a);e=a5(a,d.b-d.c);G5('xmy '+e+' grid '+a.tb+' '+d.b+' '+d.c);for(c=new OVb(a.ab.a);c.a=a.p&&(a.q=0);if(a.n!=null){for(b=0;b!=WT.ab.a.a.length;b++){c=RXb(WT.ab,b);if(fr(c,54)&&c!==a){d=c;iTb(a.n,d.n)&&(++d.q,d.q>=d.p&&(d.q=0))}}}}\nfunction YTb(a){var b,c,d;d=new LXb('[',']');for(c=a.ef();c.tf();){b=c.uf();KXb(d,b===a?'(this Collection)':b==null?lZb:_F(b))}return !d.a?d.c:d.e.length==0?d.a.a:d.a.a+(''+d.e)}\nfunction GXb(){GXb=ZF;var a,b,c,d;DXb=rq(or,Z_b,8,25,15,1);EXb=rq(or,Z_b,8,33,15,1);d=1.52587890625E-5;for(b=32;b>=0;b--){EXb[b]=d;d*=0.5}c=1;for(a=24;a>=0;a--){DXb[a]=c;c*=0.5}}\nfunction $J(){VJ=SYb(gK);WJ=SYb(hK);var c=pK;var d=SJ;c(d,function(a,b){d[a]=SYb(b)});var e=UJ;c(e,function(a,b){e[a]=SYb(b)});c(e,function(a,b){$wnd.addEventListener(a,b,true)})}\nfunction P7(a){K7();var b,c,d;this.b=a;if(iTb(a.substr(0,1),'#')&&a.length==7){d=a.substr(1,2);c=a.substr(3,2);b=a.substr(5,2);this.d=vSb(d,16);this.c=vSb(c,16);this.a=vSb(b,16)}}\n", +"function Iib(a){var b,c;c=lS(a.a);c.indexOf('.')!=-1||(c+='.txt');c==null||iTb(c.substr(0,10),w5b)?(Hib=null):(Hib=c);b=new QK(c,a.b);Lh((DI(),b.Sb),Z0b,c);OS(a.c,b);b.Sb.click()}\nfunction kRb(){if(navigator.languages){if(navigator.languages.length>0){return navigator.languages[0]}else{return 'en-US'}}else{return navigator.language||navigator.userLanguage}}\nfunction NQ(){var a;Be(this,(DI(),$doc.createElement('td')));this.Sb.className='gwt-MenuItemSeparator';a=$doc.createElement(y$b);Ch(this.Sb,KI(a));a.className='menuSeparatorInner'}\nfunction xU(a,b){var c,d,e,f;c=a.pb+b;e=a.nb-b;d=a.qb+b;f=a.ob-b;a.nb=c;a.pb=e;a.ob=d;a.qb=f;a.U=new uyb;ryb(a.U,fW(a.nb,a.ob),fW(a.pb,a.qb),bV(a.ob-a.nb)+1,bV(a.qb-a.pb)+1);a.wg()}\nfunction iXb(){function b(){try{return (new Map).entries().next().done}catch(a){return false}}\nif(typeof Map==='function'&&Map.prototype.entries&&b()){return Map}else{return jXb()}}\nfunction XP(a,b,c){var d;if(!b){if(!!a.j&&!!a.k&&a.k==a.j.i){return}}if(!!b&&!b.f){return}fQ(a,b);c&&a.e&&((DI(),a.Sb).focus(),undefined);!!b&&(!!a.k||!!a.g||a.c)&&RP(a,b,false,a.e)}\nfunction s3(a){var b,c;c=a.N.c?1:0;c|=a.fd.c?2:0;c|=a.Ld.c?0:4;c|=a.Cc.c?8:0;c|=a.cd.c?0:16;c|=a.b?64:0;b='$ '+c+' '+a.Sb+' '+I3(a)+' '+a.H.k+' '+YT+' '+a.Bc.k+' '+a.ac+GZb;return b}\nfunction zFb(a){a.D=2;a.F=2;a.A=rq(Ky,XYb,9,(a.bb&8)!=0?3:2,0,1);a.A[0]=new j2(a,0,2,'');a.A[0].d=true;a.A[1]=new j2(a,1,3,'Q');a.A[1].k=true;(a.bb&8)!=0&&(a.A[2]=new j2(a,1,2,'R'))}\nfunction Ng(a){var b,c,d;d=(Jg(),window);b=d.document;c=b.createElement('script');!!a.a&&Kg(c,a.a,false);Mg(c,a.b);(b.head||b.getElementsByTagName('head')[0]).appendChild(c);return c}\nfunction _L(a,b){(DI(),a.Sb).style[M$b]=C$b;!!a.zb&&(a.zb.style[M$b]=C$b,undefined);a.nf();b.wf(Ih(a.Sb,sZb),Ih(a.Sb,rZb));a.Sb.style[M$b]=o_b;!!a.zb&&(a.zb.style[M$b]=o_b,undefined)}\nfunction Zib(b){var c,d;d='shortrelay.php?v='+b;pS(Wib,'Waiting for short URL for web service...');c=new So((Po(),Oo),d);try{Ro(c,new $ib)}catch(a){a=wF(a);if(!fr(a,137))throw xF(a)}}\nfunction Plb(b){function d(){var a=c.responseText;o4(Nlb);p4(Nlb,a);w2(Nlb,false)}\ntry{var c=new XMLHttpRequest;c.addEventListener('load',d);c.open('GET',b,false);c.send()}catch(a){}}\nfunction iZ(a){UU(a);hU(a,32);dU(a,(a.bb&4)!=0,(a.bb&8)!=0);a.i=new gxb;a.f=(a.bb&4)!=0!=((a.bb&8)!=0)!=((a.bb&16)!=0)?-16:16;a.g=HU(a.eb,a.fb,0.5,-a.f);a.d=HU(a.eb,a.fb,0.5,-a.f/2|0)}\nfunction UU(a){a._=a.ob-a.nb;a.ab=a.qb-a.pb;a.X=$wnd.Math.sqrt(a._*a._+a.ab*a.ab);a.Y=a.ab/a.X;a.Z=-a._/a.X;a.$=a.ab==0?tW(a._):tW(a.ab);a.ib=new hxb(a.nb,a.pb);a.jb=new hxb(a.ob,a.qb)}\nfunction WU(a,b,c){var d;if(!WT.Cc.c)return;if(LT==a||a.kb||WT.zc==a||fr(LT,17)&&bCb(LT.a)==a){alb(b,ST);return}c*=PT;d=lr((FT/2|0)+(FT/2|0)*-c);d<0&&(d=0);d>=FT&&(d=FT-1);alb(b,ET[d])}\nfunction meb(a,b,c,d,e,f){keb();var g;VW.call(this,a,b,c,d,e,f);this.r=1;this.d=uSb(PHb(f));this.e=uSb(PHb(f));this.c=vSb(PHb(f),10);g=jUb(ieb,OSb(this.c));if(g){this.b=g.b;this.a=g.a}}\nfunction hBb(){SN.call(this);RN(this,xRb('Load File'));(DI(),this.Sb).id=t5b;Ve(this,this,(lm(),lm(),km));Pe(this.Sb,'offScreen',true);this.Sb.style[uZb]='0px';this.Sb.style[tZb]='0px'}\nfunction DRb(){if(window.performance.now){return window.performance.now()}else{if(window.performance.webkitNow){return window.performance.webkitNow()}else{return (new Date).getTime()}}}\nfunction oL(a,b){var c;b==null&&(b=(SRb(),RRb));c=a.Nb?(SRb(),a.c.checked?true:false):(SRb(),a.c.defaultChecked?true:false);si(a.c,(BYb(b),b));ti(a.c,(BYb(b),b));BYb(b);if(b==c){return}}\nfunction tU(a,b){var c,d;if(!WT.O&&!(LT==a||a.kb||WT.zc==a||fr(LT,17)&&bCb(LT.a)==a))return;if(WT.gc==2||WT.gc==3)return;for(c=0;c!=a.ag();c++){d=a._f(c);alb(b,ZT);Zkb(b,d.a-3,d.b-3,7)}}\nfunction b9(b,c,d,e,f,g){jX();AX.call(this,b,c,d,e,f,g);this.a=true;try{this.a=(SRb(),jTb(yZb,PHb(g)));this.b=vSb(PHb(g),10)}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}this.A[1].a=this.a}\nfunction nfb(b,c,d,e,f,g){aV.call(this,b,c,d,e,f);this.gb=true;this.b=uSb(PHb(g));this.f=2.5;this.e=5;try{this.f=uSb(PHb(g));this.e=uSb(PHb(g))}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}}\nfunction dhb(a){var b,c;a.g=a.e.d.a.a.length;Fab(a.a,a.g);a.a.D=a.e.k;a.a.F=a.e.n;for(b=0;b!=a.g;b++){c=TXb(a.e.d,b);Hab(a.a,b,c.c,c.d,c.a);a.a.mb[b]=0;b==a.k&&(a.a.A[b].p=true)}uX(a.a)}\nfunction _Bb(a,b,c){if(a.c==-1){a.c=b;a.d=c}a.V.Fc.c?(a.j.strokeStyle=f6b,undefined):(a.j.strokeStyle=e6b,undefined);a.j.beginPath();Nf(a.j,a.c,a.d);Lf(a.j,b,c);a.j.stroke();a.c=b;a.d=c}\nfunction oo(b,c){var d,e;!c.e||c.He();e=c.f;$l(c,b.b);try{wo(b.a,c)}catch(a){a=wF(a);if(fr(a,184)){d=a;throw xF(new Ho(d.a))}else throw xF(a)}finally{e==null?(c.e=true,c.f=null):(c.f=e)}}\nfunction gU(a,b,c,d){var e,f,g,h,i,j;j=new yxb;h=new gxb;i=new gxb;e=b.a-a.a;f=b.b-a.b;g=$wnd.Math.sqrt(e*e+f*f);wxb(j,b.a,b.b);KU(a,b,h,i,1-c/g,d);wxb(j,h.a,h.b);wxb(j,i.a,i.b);return j}\nfunction xX(a){var b,c,d;d=0;for(b=0;b!=a.ag();b++){c=a.A[b];if(c.k){o5(WT,0,a.hb[b],c.B);++d}}d!=a.ig()&&(console.log('voltage source count does not match number of outputs'),undefined)}\nfunction P2(a){var b,c,d,e;e=s3(a);Ybb();pbb();Rgb();cNb();for(c=a.ab.a.a.length-1;c>=0;c--){b=G3(a,c);d=b.Kf();d!=null&&d.length!=0&&(e+=d+GZb);b.kb&&!fr(b,17)&&(e+=b.Jf()+GZb)}return e}\nfunction yTb(a){var b,c;if(a>=W$b){b=55296+(a-W$b>>10&1023)&LZb;c=56320+(a-W$b&1023)&LZb;return String.fromCharCode(b)+(''+String.fromCharCode(c))}else{return String.fromCharCode(a&LZb)}}\nfunction xVb(a,b){var c,d,e,f;BYb(b);e=null;f=0;for(d=0;db){for(d=e;d>b;d--){Fh(a.a,a.a.lastChild)}}}\nfunction hCb(a){var b;if(a.Y!=1)return null;if(a.I<0&&!iCb(a))return null;if(a._.a.a.length==0)return null;b=SXb(a._);a.I>=0&&a._.a.a.length>a.I&&(b=TXb(a._,a.I));return !b.e?'':b.e.cg(b.v)}\nfunction HWb(){HWb=ZF;FWb=uq(nq(JE,1),XYb,2,6,['Sun','Mon','Tue','Wed','Thu','Fri','Sat']);GWb=uq(nq(JE,1),XYb,2,6,['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'])}\nfunction XF(){WF={};!Array.isArray&&(Array.isArray=function(a){return Object.prototype.toString.call(a)==='[object Array]'});function b(){return (new Date).getTime()}\n!Date.now&&(Date.now=b)}\nfunction R$(a,b,c,d,e,f){P$();var g;VW.call(this,a,b,c,d,e,f);this.r=1;this.d=uSb(PHb(f));this.f=uSb(PHb(f));this.c=vSb(PHb(f),10);g=jUb(M$,OSb(this.c));if(g){this.b=g.b;this.a=g.a}this.e=O$}\nfunction Bbb(a,b,c,d,e,f){jX();var g;AX.call(this,a,b,c,d,e,f);this.e=ccb(PHb(f));zbb(this);for(g=0;g!=this.i;g++){if(this.A[g].k){this.mb[g]=wSb(uSb(PHb(f)));this.A[g].A=this.mb[g]>this.t/2}}}\nfunction Vgb(a){var b,c,d,e;e=new $Xb;c=new DUb((new vUb(Fgb)).a);while(c.b){d=BUb(c);b=d.ei();if(b.k)continue;if(a&&b.a==0)continue;uVb(e.a,b,0)!=-1||rVb(e.a,b)}$Vb();zVb(e.a,null);return e}\nfunction nCb(a){var b,c,d,e;d=(!hH&&(pH(),nH)&&(hH=new mH(P$b)),hH);if(!d)return false;e=rH(d.a,s6b);if(e==null)return false;b=rTb(e,' ');c=vSb(b[1],10);zCb(a,c);a.X=vSb(b[2],10);return true}\nfunction wTb(a){var b,c,d;c=a.length;d=0;while(dd&&(HYb(b-1,a.length),a.charCodeAt(b-1)<=32)){--b}return d>0||b>22-b;e=a.h<>22-b}else if(b<44){c=0;d=a.l<>44-b}else{c=0;d=0;e=a.l<0&&fTb(b,VXb(a.Fd).a)==0)return;NXb(a.Fd,new g7(a,b));CQ(a.Jc,a.Kc.a.a.length>0);CQ(a.Ed,a.Fd.a.a.length>0);a.Oc=false}\nfunction Bnb(a,b,c){var d;d=$wnd.Math.abs(b-c);a.u>1&&(d*=100);if(d10&&d<$wnd.Math.abs(c)*h0b)return false;if(WT.rd>100&&di)&&(cj)&&(he)&&(gf)}\nfunction Eg(a){var b;if(a.c==null){b=kr(a.b)===kr(Cg)?null:a.b;a.d=b==null?lZb:ir(b)?b==null?null:b.name:jr(b)?'String':aSb(W(b));a.a=a.a+': '+(ir(b)?b==null?null:b.message:b+'');a.c='('+a.d+') '+a.a}}\nfunction vbb(a){var b,c;c=ccb(PHb(a));b=sbb(c);if(!b){b=new obb;b.i=c;nUb(fbb,c,b);++gbb}else if(b.g!=null){console.log('ignoring model '+c+', using stored version instead');return b}nbb(b,a);return b}\nfunction Sq(a,b){var c,d,e,f;b&=63;c=a.h&t$b;if(b<22){f=c>>>b;e=a.m>>b|c<<22-b;d=a.l>>b|a.m<<22-b}else if(b<44){f=0;e=c>>>b-22;d=a.m>>b-22|a.h<<44-b}else{f=0;e=0;d=c>>>b-44}return zq(d&s$b,e&s$b,f&t$b)}\nfunction KQ(a,b){Be(this,(DI(),$doc.createElement('td')));Ee(this,Me(this.Sb)+'-'+L_b,false);b?Nh(this.Sb,a):ai(this.Sb,a);this.Sb.className='gwt-MenuItem';Lh(this.Sb,'id',ni($doc));Xd();Kb(sd,this.Sb)}\nfunction XV(a,b,c,d){var e;if($wnd.Math.abs(a)>e0b)return WV(a,b,false);e=d?JT:VT;if(c==1)return Mp(e,a)+' '+b;if(c==2)return Mp(e,m$b*a)+' m'+b;if(c==3)return Mp(e,i0b*a)+' '+vRb+b;return WV(a,b,false)}\nfunction N2(a){var b,c,d,e,f;if(a.sd==null)return;for(e=0;e!=2;e++){d=a.sd[e];PP(d);c=rbb();for(b=0;b!=c.a.a.length;b++){f=(bYb(b,c.a.a.length),tVb(c.a,b)).i;MP(d,F3(a,xRb('Add ')+(''+f),$2b+f))}}s2=gbb}\nfunction VZ(a,b){if(b==0)return sib(new uib(O0b,a.n,1,8));if(b==1)return new uib(B0b,a.f,1,10);if(b==2)return wib('Schmitt Inputs',(a.bb&2)!=0);if(b==3)return wib('Invert Inputs',(a.bb&4)!=0);return null}\nfunction z2(a,b){var c,d,e,f;for(c=0;c!=a.n;c++){f=a.t[c];f.f==1?(e=f.g):(e=b[f.c]);if(isNaN(e)){a.C=false;break}if(c2?a.n:2;a.A=rq(Ky,XYb,9,a.n+2,0,1);for(b=0;b!=a.n;b++){a.A[b]=new j2(a,a.n-1-b,3,'D'+b);a.A[b].k=true}a.A[a.n]=new j2(a,0,2,'In');a.A[a.n+1]=new j2(a,a.F-1,2,'V+');eU(a)}\nfunction Bcb(a){var b;a.D=2;a.F=a.n>2?a.n:2;a.A=rq(Ky,XYb,9,a.n+2,0,1);for(b=0;b!=a.n;b++)a.A[b]=new j2(a,a.n-1-b,2,'D'+b);a.A[a.n]=new j2(a,0,3,'O');a.A[a.n].k=true;a.A[a.n+1]=new j2(a,a.F-1,3,'V+');eU(a)}\nfunction w1(a,b){b[0]='capacitor';b[1]=$_b+WV($wnd.Math.abs(a.W),'A',false);b[2]=__b+WV($wnd.Math.abs(a.mb[0]-a.mb[1]),'V',false);b[3]='C = '+WV(a.d,'F',false);b[4]=q0b+WV((a.mb[0]-a.mb[1])*a.W,'W',false)}\nfunction Uob(a){var b;if(a.D==0||a.F==0){a.D=a.F=8;eU(a)}a.A=rq(Ky,XYb,9,a.D+a.F,0,1);for(b=0;b!=a.D;b++)a.A[b]=new j2(a,b,1,'');for(b=0;b!=a.F;b++)a.A[b+a.D]=new j2(a,b,2,'');a.a=rq(or,Z_b,8,a.D*a.F,15,1)}\nfunction EP(a,b,c,d){var e,f,g,h;h=(DI(),a.Sb);g=$doc.createElement(jZb);g.text=b;g.removeAttribute(G_b);g.value=c;f=h.options.length;(d<0||d>f)&&(d=f);if(d==f){h.add(g,null)}else{e=h.options[d];h.add(g,e)}}\nfunction Igb(a){var b,c;a.a>0&&a.a<20?(a.n='zener-'+Mp(VT,a.a)):(a.f&1)!=0?(a.n='fwdrop='+Mp(VT,a.i)):(a.n='diodemodel');if(kUb(Fgb,a.n)!=null){c=2;for(;;c++){b=a.n+'-'+c;if(kUb(Fgb,b)==null){a.n=b;break}}}}\nfunction xRb(a){var b,c;if(a==null)return null;if(a.length==0){return a}c=kUb(uRb,a);if(c!=null)return c;b=kTb(a,yTb(126));if(b!=a.length-1)return a;a=a.substr(0,b);c=kUb(uRb,a);if(c!=null)return c;return a}\nfunction Qlb(a,b){if((BYb(b),b)&&a.indexOf('https://www.dropbox.com/')!=0){$wnd.alert('Dropbox links must start https://www.dropbox.com/');return}a=oTb(a,'www.dropbox.com','dl.dropboxusercontent.com');Plb(a)}\nfunction Vpb(a,b,c,d,e,f){aV.call(this,a,b,c,d,e);this.j=wSb(uSb(PHb(f)));isNaN(this.j)&&(this.j=300);this.f=wSb(uSb(PHb(f)));this.g=wSb(uSb(PHb(f)));this.k=wSb(uSb(PHb(f)));this.d=wSb(uSb(PHb(f)));Tpb(this)}\nfunction NJb(a,b,c,d,e,f){H_.call(this,a,b,c,d,e);this.b=(new ESb(PHb(f))).a;this.c=PHb(f);if((this.bb&4)==0){while(OHb(f))this.c+=' '+PHb(f);this.c=pTb(this.c,'%2[bB]','+')}else{this.c=ccb(this.c)}LJb(this)}\nfunction mi(a,b){if(a.nodeType!=1&&a.nodeType!=9){return a==b}if(b.nodeType!=1){b=b.parentNode;if(!b){return false}}if(a.nodeType==9){return a===b||a.body&&a.body.contains(b)}else{return a===b||a.contains(b)}}\nfunction Qj(){Qj=ZF;Fj=new Tj;xj=new ck;Aj=new dk;Bj=new ek;Dj=new fk;Ej=new gk;Gj=new hk;Hj=new ik;Ij=new jk;Lj=new Uj;Nj=new Vj;Mj=new Wj;Pj=new Xj;Jj=new Yj;Kj=new Zj;Oj=new $j;zj=new _j;yj=new ak;Cj=new bk}\nfunction Go(a){var b,c,d,e,f;c=a.Xh();if(c==0){return null}b=new MTb(c==1?'Exception caught: ':c+' exceptions caught: ');d=true;for(f=a.ef();f.tf();){e=f.uf();d?(d=false):(b.a+='; ',b);HTb(b,e.we())}return b.a}\nfunction OQ(a){var b,c,d,e,f;c=a.a.zb.style;f=pi($doc);e=oi($doc);c[K$b]=(Qj(),xZb);c[uZb]=(jl(),E$b);c[tZb]=E$b;d=ri($doc);b=qi($doc);c[uZb]=$wnd.Math.max(d,f)+XZb;c[tZb]=$wnd.Math.max(b,e)+XZb;c[K$b]='block'}\nfunction VP(a,b,c){var d,e;if(c<0||c>a.b.a.length){throw xF(new NRb)}qVb(a.b,c,b);e=0;for(d=0;da.c){throw xF(new NRb)}if(a.c==a.a.length){f=rq($x,XYb,21,a.a.length*2,0,1);for(e=0;ec;--d){a.a[d]=a.a[d-1]}a.a[c]=b}\nfunction A5(b){try{l=navigator.languages?navigator.languages[0]:navigator.language||navigator.userLanguage;if(l.length>2){l=l.slice(-2).toUpperCase();return l=='US'||l=='CA'&&b}else{return 0}}catch(a){return 0}}\nfunction myb(){var a,b,c,d;this.a=new JWb;d=$wnd.location.search;if(d!=null&&d.length>0){b=rTb(d.substr(1),'&');for(a=0;a>1);XVb(b,a,i,j,-e,f);XVb(b,a,j,h,-e,f);if(f.ih(a[j-1],a[j])<=0){while(c0&&xb(a.b,$wnd.Math.max(5,16-(Ig()-c.a)))}\nfunction Ye(a){var b;if(a.je()){throw xF(new CSb(\"Should only call onAttach when the widget is detached from the browser's document\"))}a.Nb=true;DI();RJ(a.Sb,a);b=a.Ob;a.Ob=-1;b>0&&a.pe(b);a.ge();a.ne();Wn(a,true)}\nfunction Kh(a,b){var c,d,e,f,g;b=Sh(b);g=a.className||'';e=Qh(g,b);if(e!=-1){c=wTb(g.substr(0,e));d=wTb(uTb(g,e+b.length));c.length==0?(f=d):d.length==0?(f=c):(f=c+' '+d);a.className=f||'';return true}return false}\nfunction AL(a,b){var c;if(a.n){throw xF(new CSb('Composite.initWidget() may only be called once.'))}if(!b){throw xF(new ZSb('widget cannot be null'))}_e(b);c=(DI(),b.Sb);Be(a,c);(kR(),HI(c))&&lR(c,a);a.n=b;af(b,a)}\nfunction X2(a){var b,c;o4(a);O4(a);a.v='';for(c=a.ab.a.a.length-1;c>=0;c--){b=G3(a,c);(b.kb||LT==b)&&!fr(b,17)&&(a.v+=b.Jf()+GZb)}B5(a);Y2(a,true);(a.v==null||a.v.length==0)&&s4(a);CQ(a.xc,a.v!=null&&a.v.length>0)}\nfunction Gvb(a){var b,c;Z7(a,null,Cvb,Bvb);Fvb(a).d=3.0E-11/(a.k/0.6);Fvb(a).o=a.a;for(c=0;c!=11;c++)TXb(a.w,21+c).a=Dvb[c];b=a.c/S5b;TXb(a.w,21).a/=b;TXb(a.w,22).a/=b;ttb(TXb(a.w,13),b*100);ttb(TXb(a.w,18),b*100)}\nfunction bJb(a,b){_U.call(this,a,b);this.g=4;this.n=1;this.gb=true;this.b=0.99;this.e=rq(or,Z_b,8,4,15,1);this.d=rq(or,Z_b,8,4,15,1);this.o=rq(or,Z_b,8,3,15,1);this.c=rq(or,Z_b,8,3,15,1);this.a=rq(or,Z_b,8,9,15,1)}\nfunction XWb(a,b,c){var d,e,f,g,h;h=b==null?0:(g=Y(b),g|0);e=(d=a.a.get(h),d==null?new Array:d);if(e.length==0){a.a.set(h,e)}else{f=UWb(b,e);if(f){return f.fi(c)}}e[e.length]=new mVb(b,c);++a.c;wWb(a.b);return null}\nfunction kYb(a,b,c,d,e,f){var g,h,i,j,k;if(kr(a)===kr(c)){a=a.slice(b,b+e);b=0}i=c;for(h=b,j=b+e;h0?to(a,new AT(a,b,c)):(d=yo(a,b,null),d.Th(c));return new zT(a,b,c)}\nfunction a4(a,b,c,d){var e,f;e=L$b;a==''&&(e='');f='
<\\/i>'+e+xRb(b)+h1b+c+h1b;return new GQ((aH(),new RG(f)),d)}\nfunction a3(a){var b,c,d;b=a.Rb.a.a.length;for(c=0;c1&&a.Wc[a.Qc-1].v>0);CQ(a.Hd,a.Qc>1&&a.Wc[a.Qc-1].v!=a.Qc-1);CQ(a.w,a.Qc>1);CQ(a._c,a.Qc>0);s2!=gbb&&N2(a)}\nfunction fe(){fe=ZF;new Fc('aria-busy');new Tb('aria-checked');new Fc('aria-disabled');new Tb('aria-expanded');new Tb('aria-grabbed');ee=new Fc(qZb);new Tb('aria-invalid');new Tb('aria-pressed');new Tb('aria-selected')}\nfunction Qh(a,b){var c,d,e;c=a.indexOf(b);while(c!=-1){if(c==0||(HYb(c-1,a.length),a.charCodeAt(c-1)==32)){d=c+b.length;e=a.length;if(d==e||d0&&(e=255*(1+0.2*$wnd.Math.log(e)));e>255&&(e=255);e<20&&(e=20);e=$wnd.Math.max(e,a.a[c]);a.a[c]=e*0.99;d=new N7(lr(e),0,0);alb(b,d)}\nfunction Lqb(){var c=$doc.getElementById(g4b).files,d=c.length;if(d>=1){if(c[0].size>=128000)alert('File too large!');else{var e=new FileReader;e.onload=function(a){var b=e.result;Mqb(b,c[0].name)};e.readAsText(c[0])}}}\nfunction eq(a){var b;b=uq(nq(nr,1),l$b,8,15,[71,77,84,45,48,48,58,48,48]);if(a<=0){b[3]=43;a=-a}b[4]=b[4]+((a/60|0)/10|0)&LZb;b[5]=b[5]+(a/60|0)%10&LZb;b[7]=b[7]+(a%60/10|0)&LZb;b[8]=b[8]+a%10&LZb;return BTb(b,b.length)}\nfunction xDb(a,b){var c,d;d=TXb(a.Y._,b);c='●<\\/span> CH '+(''+(b+1));switch(d.u){case 0:c+=' (V)';break;case 1:c+=' (I)';break;case 3:c+=' (R)';break;case 2:c+=' (P)';}return c}\nfunction B1(b,c,d,e,f,g){aV.call(this,b,c,d,e,f);this.d=wSb(uSb(PHb(g)));this.o=wSb(uSb(PHb(g)));this.g=h0b;try{this.g=wSb(uSb(PHb(g)));(this.bb&4)!=0&&(this.n=wSb(uSb(PHb(g))))}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}}\nfunction kmb(b,c,d,e,f,g){aV.call(this,b,c,d,e,f);this.a=new hmb(WT);this.b=wSb(uSb(PHb(g)));this.W=wSb(uSb(PHb(g)));try{this.c=wSb(uSb(PHb(g)))}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}emb(this.a,this.b,this.W,this.bb)}\nfunction Kvb(b,c,d,e,f,g){Evb();c8.call(this,b,c,d,e,f);this.gb=true;this.k=uSb(PHb(g));this.a=uSb(PHb(g));this.c=S5b;this.f=0;try{this.c=uSb(PHb(g));this.f=vSb(PHb(g),10)}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}Hvb(this)}\nfunction DBb(a,b){var c,d,e,f,g,h,i;if(a.o)return;f=oDb(b,a.A.b);h=b.o;i=b.p;g=0;c=a.C[b.u];for(d=0;d!=a.A.b;d++){e=d+f&a.G-1;h[e]>g&&(g=h[e]);i[e]<-g&&(g=-i[e])}if(a.p)c=$wnd.Math.max(g,c);else while(g>c)c*=2;a.C[b.u]=c}\nfunction pDb(a){var b,c;if(!a.e)return;c=a.e.eg(a.v);b=a.a*(a.c+c-a.i);a.i=c;a.c=b;a.b&&(c=b);ca.o[a.r]&&(a.o[a.r]=c);if(u2.td-a.g>=u2.Sb*a.s){a.r=a.r+1&a.t-1;a.p[a.r]=a.o[a.r]=c;a.g+=u2.Sb*a.s}}\nfunction sIb(a){var b,c;q9(a);hU(a,32);a.c=QU(a.d);a.b=QU(2+a.d);for(c=0;c!=a.d;c++){b=-16*(c-((a.d-1)/2|0));a.d==2&&c==0&&(b=16);JU(a.eb,a.fb,a.b[c],1,b);JU(a.ib,a.jb,a.c[c],1,b)}a.b[c]=a.fb;a.p=(a.bb&1)!=0&&a.d==2?3:a.d}\nfunction g3(a,b){var c,d,e;d=a5(a,R3(a,a.Zb));e=a5(a,S3(a,a.$b));if(!b||!fr(b,152))return;b.nb==b.ob?(d=b.nb):(e=b.pb);if(d==b.nb&&e==b.pb||d==b.ob&&e==b.qb)return;c=new HQb(d,e);mU(c,b.ob,b.qb);b.Gf(d,e);PXb(a.ab,c);g4(a)}\nfunction awb(a,b,c,d,e,f,g,h,i,j){var k,m,n;k=b%2;if((a.bb&o$b)!=0){e=-e;g=-g;c+=a.b;i=-i}if((a.bb&U$b)!=0){f=-f;h=-h;d+=a.b;j=-j}m=c+a.b*e*k+i;n=d+a.b*f*k+j;_7(a,b,new hxb(m+g*a.b,n+h*a.b));a.g[b]=new hxb(m+g*a.a,n+h*a.a)}\nfunction fgb(a,b){a.p.o?(b[0]='diode'):(b[0]=xRb('diode')+X2b+a.q+')');b[1]=$_b+WV(a.W,'A',false);b[2]=__b+WV(a.mb[0]-a.mb[1],'V',false);b[3]=q0b+WV((a.mb[0]-a.mb[1])*a.W,'W',false);a.p.o&&(b[4]='Vf = '+WV(a.p.j,'V',false))}\nfunction X4(a){var b,c,d;if(!a.Ab)return;b=0;for(c=0;c=60){b=$wnd.Math.floor(a/3600);a-=3600*b;c=$wnd.Math.floor(a/60);a-=60*c;if(b==0)return c+':'+(a>=10?'':'0')+Mp(VT,a);return b+':'+(c>=10?'':'0')+c+':'+(a>=10?'':'0')+Mp(VT,a)}return WV(a,'s',false)}\nfunction tzb(a,b){_U.call(this,a,b);qzb(this);this.n=new hmb(WT);this.o=0.2;emb(this.n,this.o,0,2);this.gb=true;this.u=0.02;this.t=0.015;this.F=0.05;this.D=i0b;this.e=20;this.I=T5b;this.b=this.a=0;this.B=1;this.bb|=6;szb(this)}\nfunction CBb(a,b){var c,d,e,f,g,h,i;a.q=-100000000;a.r=W0b;for(i=0;i!=a._.a.a.length;i++){h=TXb(a._,i);if(h.u!=b)continue;e=oDb(h,a.A.b);f=h.o;g=h.p;for(c=0;c!=a.A.b;c++){d=c+e&a.G-1;f[d]>a.q&&(a.q=f[d]);g[d]=a.a.D+b)return;if(c<0&&(e.q==3||e.q==2)&&e.n>=a.a.F+c)return}}if(a.a.D+b<1||a.a.F+c<1)return;a.e.k+=b;a.e.n+=c;dhb(a);ehb(a)}\nfunction PP(a){var b,c,d;fQ(a,null);b=a.o?a.d:(DI(),YJ(a.d,0));while(DI(),ZJ(b)>0){Fh(b,YJ(b,0))}for(d=new OVb(a.b);d.a>16);b=d>>16&16;c=16-b;a=a>>b;d=a-256;b=d>>16&8;c+=b;a<<=b;d=a-T$b;b=d>>16&4;c+=b;a<<=b;d=a-V$b;b=d>>16&2;c+=b;a<<=b;d=a>>14;b=d&~(d>>1);return c+2-b}}\nfunction IGb(a){var b,c,d;a.D=a.n+1;a.F=3;a.A=rq(Ky,XYb,9,2+a.n,0,1);a.A[0]=new j2(a,1,2,'D');a.A[1]=new j2(a,2,2,'');a.A[1].d=true;for(b=0;b=b.length)return c;f=new RCb(a.V);g=TXb(a._,d);if(!!e&&e.e==g.e&&e.v==0&&g.v==3)continue;JCb(f,g.v,g.e);f.v=c;b[c++]=f;e=g;zCb(f,cCb(a));GCb(f,a.X)}return c}\nfunction vjb(a,b,c,d){var e,f,g,h;e=1;Cjb(a,'(')||Bjb(a,z5b+a.e);g=ojb(a);f=new mjb(g,null,b);while(Cjb(a,',')){h=ojb(a);NXb(f.a,h);++e}Cjb(a,')')||Bjb(a,A5b+a.e);(ed)&&a.a==null&&(a.a='bad number of function args: '+e);return f}\nfunction D3(a){var b,c,d,e,f,g;f=30000;d=d3b;g=30000;e=d3b;for(c=0;c!=a.ab.a.a.length;c++){b=G3(a,c);f=c4(b.nb,c4(b.ob,f));d=_3(b.nb,_3(b.ob,d));g=c4(b.pb,c4(b.qb,g));e=_3(b.pb,_3(b.qb,e))}if(f>d)return null;return new vyb(f,g,d-f,e-g)}\nfunction Qcb(a,b){_U.call(this,a,b);Ocb(this);this.i=new hmb(WT);this.j=new hmb(WT);this.k=0.5;this.p=1;this.d=s0b;this.q=0;this.b=0.15;this.e=0.05;this.a=0.02;this.c=0.15;this.g=1;this.r=0;emb(this.i,this.k,0,2);emb(this.j,this.a,0,2)}\nfunction YF(a,b,c){var d=WF,h;var e=d[a];var f=e instanceof Array?e[0]:null;if(e&&!f){_=e}else{_=(h=b&&b.prototype,!h&&(h=WF[b]),$F(h));_.hi=c;!b&&(_.ii=aG);d[a]=_}for(var g=3;g0);CQ(a.D,g>0);CQ(a.mb,b);CQ(a.ob,d);CQ(a.nb,c)}\n", +"function Ue(a,b){var c=(a.className||'').split(/\\s+/);if(!c){return}var d=c[0];var e=d.length;c[0]=b;for(var f=1,g=c.length;fe&&h.charAt(e)=='-'&&h.indexOf(d)==0&&(c[f]=b+h.substring(e))}a.className=c.join(' ')}\nfunction xQ(a){var b;this.a=a;rM.call(this,true,false,'menuPopup');this.b=(Dp(),true);YL(this,(YQ(),WQ));this.Db=false;Zh((DI(),Yh(this.Sb))).className='gwt-MenuBarPopup';b=Me(a.Sb);iTb(K_b,b)||Pe(Zh(Yh(this.Sb)),b+'Popup',true);this.Ib=true}\nfunction oS(a,b){if(!a.Nb){return}if(b<0){throw xF(new ORb('Length must be a positive integer. Length: '+b))}if(b>Jh((DI(),a.Sb),S_b).length){throw xF(new ORb('From Index: 0 To Index: '+b+' Text Length: '+Jh(a.Sb,S_b).length))}qT(a.Sb,0,b)}\nfunction Rq(a,b){var c,d,e,f,g;b&=63;c=a.h;d=(c&u$b)!=0;d&&(c|=-1048576);if(b<22){g=c>>b;f=a.m>>b|c<<22-b;e=a.l>>b|a.m<<22-b}else if(b<44){g=d?t$b:0;f=c>>b-22;e=a.m>>b-22|c<<44-b}else{g=d?t$b:0;f=d?s$b:0;e=c>>b-44}return zq(e&s$b,f&s$b,g&t$b)}\nfunction Qhb(a,b){var c,d,e,f,g;g=b.f;d=false;c=false;for(f=0;f!=a.g;f++){e=a.i[f];if(kr(e.c)===kr(g)||kr(e.b)===kr(g)||kr(e.a)===kr(g)){if(kr(e.a)===kr(g)&&!e.o){a.Eh();c=true}a.j.rg(f,e);e.o&&(d=true);g4(a.f)}}if(d){c||a.Eh();Nhb(a);Mhb(a)}}\nfunction rKb(a,b){_U.call(this,a,b);pKb(this);this.f=0.435;this.e=0.816;this.d=0.0294;this.c=0.0297;this.b=0.0287;this.a=1;this.g=s0b;this.v=this.q=0;this.i=0.05;this.w=rq(pr,l$b,8,2,15,1);this.p=rq(or,Z_b,8,3,15,1);this.k=rq(or,Z_b,8,5,15,1)}\nfunction Lhb(b){var c,d,e,f,g;for(f=0;f!=b.g;f++){e=b.i[f];if(!!e.s&&e.q==null){try{d=(g=Jh(ue(e.s),S_b),Whb(g));e.t=d}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}}if(e.a)continue;b.j.rg(f,e);if(fr(b.j,7)){c=u3(b.f,b.j,f);!!c&&OY(c,e.t)}}g4(b.f)}\nfunction YWb(a,b){var c,d,e,f,g,h;g=b==null?0:(f=Y(b),f|0);d=(c=a.a.get(g),c==null?new Array:c);for(h=0;h0){try{h=wSb(uSb(PHb(g)))}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}}this.p=Ygb(h,0);this.q=this.p.n}kgb(this)}\nfunction Vrb(b,c,d,e,f,g){aV.call(this,b,c,d,e,f);this.d=wSb(uSb(PHb(g)));this.c=wSb(uSb(PHb(g)));this.a=wSb(uSb(PHb(g)));this.f=wSb(uSb(PHb(g)));this.b=wSb(uSb(PHb(g)));try{this.W=uSb(PHb(g))}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}this.e=100}\nfunction nNb(b,c,d,e,f,g){aV.call(this,b,c,d,e,f);this.i=0.1;this.f=K0b;this.g=0;this.gb=true;this.b=5;try{this.i=wSb(uSb(PHb(g)));this.f=wSb(uSb(PHb(g)));this.g=wSb(uSb(PHb(g)));this.b=wSb(uSb(PHb(g)))}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}}\nfunction LJb(a){var b,c,d;a.a=new $Xb;d=new CTb(a.c);for(c=0;c0&&(d+=' ');d+=Zbb(b.a)+' '+b.b+' '+b.c+' '+b.d}d+=' '+Zbb(a.j)+' '+Zbb(a.c);return d}\nfunction pL(a){var b;bL.call(this,(DI(),$doc.createElement('span')));this.c=a;this.d=$doc.createElement(j_b);Ch(this.Sb,this.c);Ch(this.Sb,this.d);b=ni($doc);this.c['id']=b;wi(this.d,b);this.b=new nN(this.d);!!this.c&&(this.c.tabIndex=0,undefined)}\nfunction jT(a,b,c,d,e){var f;f=new IG;HG(HG(HG(f,new JG('width:'+d+(jl(),XZb)+';')),new JG('height:'+e+XZb+';')),new JG('background:'+('url('+a.a+') '+'no-repeat '+(-b+'px ')+(-c+XZb))+';'));return !hT&&(hT=new lT),kT(gT,new JG((new JG(f.a.a)).a))}\nfunction DG(a,b){var c,d;c=$doc.createElement(y$b);c.innerHTML=L$b;d=c.style;d[z$b]=(Kk(),A$b);d['zIndex']='-32767';d[F$b]=-20+b.Ee();d[uZb]=10+a.Ee();d[tZb]=10+b.Ee();d[M$b]=(Gl(),C$b);Rb((fe(),ee),c,uq(nq(pE,1),XYb,249,8,[(SRb(),true)]));return c}\nfunction cR(a,b){var c,d,e,f,g,h;a.i||(b=1-b);g=0;e=0;f=0;c=0;d=lr(b*a.d);h=lr(b*a.e);switch(a.a.ub.c){case 2:f=a.e;c=d;break;case 0:g=a.d-d>>1;e=a.e-h>>1;f=e+h;c=g+d;break;case 1:Dp();f=h;c=d;}pT(ue(a.a),'rect('+g+'px, '+f+'px, '+c+'px, '+e+'px)')}\nfunction eGb(a,b,c){var d,e,f,g,h;g=WT.Fc.c;if(a.d==0){alb(b,a.A[c].A?(K7(),H7):g?a.g:a.c);return}f=-a.d*a.A[c].i/I$b;f>0&&(f=255*(1+0.2*$wnd.Math.log(f)));f>255&&(f=255);e=g?5:30;f=a.t+a.k;if(a.p&&!d){e=(b-a.t)/a.k;a.Wd((1+$wnd.Math.cos(VYb+e*VYb))/2);return a.o&&a.r==c}if(!a.p&&b>=a.t){a.p=true;a.Vd();if(!(a.o&&a.r==c)){return false}}if(d){a.o=false;a.p=false;a.Ud();return false}return true}\nfunction $R(){JL.call(this);this.b=(DI(),this.Sb);this.a=$doc.createElement(y$b);Ch(this.b,this.a);this.b.style[B$b]=(zk(),'auto');this.b.style[z$b]=(Kk(),J$b);this.a.style[z$b]=J$b;this.b.style[R_b]='1';this.a.style[R_b]='1';YR(this);!NR&&(NR=new RR)}\nfunction Spb(a){var b;if(a.j<1200){b=lr(255*(a.j-800)/400);b<0&&(b=0);return new N7(b,0,0)}if(a.j<1700){b=lr(255*(a.j-1200)/500);b<0&&(b=0);return new N7(255,b,0)}if(a.j<2400){b=lr(255*(a.j-1700)/700);b<0&&(b=0);return new N7(255,255,b)}return K7(),I7}\nfunction PHb(a){var b;if(a.c=0){if(a.d)return vTb(a.e,a.c,++a.c);while(++a.c=0);}if(a.c='))return new mjb(b,pjb(a),37);if(Cjb(a,'!='))return new mjb(b,pjb(a),40);if(Cjb(a,'<'))return new mjb(b,pjb(a),38);if(Cjb(a,'>'))return new mjb(b,pjb(a),39);return b}\nfunction zCb(a,b){a.O=(b&1)!=0;a.U=(b&2)!=0;a.P=(b&4)==0;a.N=(b&8)!=0;a.o=(b&16)!=0;a.t=(b&128)!=0;a.Q=(b&256)!=0;a.T=(b&512)!=0;a.M=(b&o$b)!=0;a.M||(a.e=null);a.p=(b&8192)!=0;a.S=(b&V$b)!=0;a.K=(b&32768)!=0;a.k=(b&W$b)!=0;a.J=(b&X$b)!=0;a.L=(b&$$b)!=0}\nfunction _Jb(a,b){_U.call(this,a,b);WJb(this);this.d=-40;this.c=150;this.f=q5b;this.g=3605;this.e=0.34;YJb(this,this.d);this.a=XJb(this);this.p=OF(CF($wnd.Math.round(this.e*(this.c-this.d)+this.d)));this.i=YJb(this,this.p);this.k='Temperature';ZJb(this)}\nfunction lW(a,b,c){var d,e,f,g;b?(TT=a):(IT=a);f='####.';d=a;for(;d>0;d--)f+='#';e=(Hp(),new _p(f,fp()));b?(UT=e):(VT=e);if(c){g=(!hH&&(pH(),nH)&&(hH=new mH(P$b)),hH);!!g&&vH(g.a,b?l0b:k0b,''+a)}if(!b){f='####.';d=a;for(;d>0;d--)f+='0';JT=new _p(f,fp())}}\nfunction bH(a){aH();if(!FG(YG,a)){return a}a.indexOf('&')!=-1&&(a=EG(WG,a,'&'));a.indexOf('<')!=-1&&(a=EG(ZG,a,'<'));a.indexOf('>')!=-1&&(a=EG(XG,a,'>'));a.indexOf('\"')!=-1&&(a=EG($G,a,'"'));a.indexOf(\"'\")!=-1&&(a=EG(_G,a,'''));return a}\nfunction Tpb(a){var b,c,d,e,f,g;f=a.g*a.g/a.f;g=a.j>5390?5390:a.j;a.i=f*(1.26104-4.90662*$wnd.Math.sqrt(17.1839/g-0.00318794)-7.8569/(g-187.56));b=1.57E-4*a.f;d=b*a.k/0.4;c=b*a.d/0.4;a.j+=(a.mb[0]-a.mb[1])*a.W*WT.vd/d;e=2600/a.f;a.j-=WT.vd*(a.j-300)/(c*e)}\nfunction Lp(a,b){var c,d;d=0;while(d0){b.a=b.a.substr(0,0)+''+uTb(b.a,d);a.d-=d;a.e-=d}if(a.j>a.o&&a.j>0){a.e+=a.b-1;c=a.e%a.j;c<0&&(c+=a.j);a.b=c+1;a.e-=c}else{a.e+=a.b-a.o;a.b=a.o}if(a.d==1&&eTb(b.a,0)==48){a.e=0;a.b=a.o}}\nfunction oU(a,b,c,d,e,f){var g,h;h=lr(Mf(b.a,c).width);g=b.b/2|0;b.a.save();b.c=b.b;b.a.textBaseline=E_b;if(f){b.a.textAlign=f_b;bU(a,d-(h/2|0),e-g,d+(h/2|0),e+g)}else{bU(a,d,e-g,d+h,e+g)}f&&(b.a.textAlign=f_b,undefined);Kf(b.a,c,d,e);b.a.restore();b.b=b.c}\nfunction lCb(a){var b,c;sCb(a,false);a.C[2]=a.C[3]=a.C[0]=5;a.C[1]=0.1;a.D=5;a.F=0.1;a.X=64;a.P=true;a.U=a.O=false;a.T=a.N=a.o=a.Q=a.L=false;a.M=false;a.s=false;if(!nCb(a)){for(b=0;b!=a.u.a.a.length;b++){c=TXb(a.u,b);c.u==0&&(a.U=true);c.u==1&&(a.O=true)}}}\nfunction uYb(a){var b,c,d,e,f,g,h;g=a.length;b=0;for(f=0;f=W$b?2:1;d<128?++b:d=W$b?2:1;h+=tYb(c,h,d)}return c}\nfunction lqb(a){var b;a.D=2;a.F=a.n+1;a.A=rq(Ky,XYb,9,a.n*2+1,0,1);for(b=0;b!=a.n;b++)a.A[b]=new j2(a,a.n-1-b,2,'I'+b);for(b=0;b!=a.n;b++){a.A[b+a.n]=new j2(a,a.n-1-b,3,'O');a.A[b+a.n].k=true;a.A[b+a.n].s=(a.bb&2)!=0}a.A[a.b=a.n*2]=new j2(a,a.n,2,'Ld');eU(a)}\nfunction fQ(a,b){var c,d;if(b==a.j){return}if(a.j){EQ(a.j);if(a.o){d=(DI(),Zh(ue(a.j)));if(ZJ(d)==2){c=YJ(d,1);Pe(c,M_b,false)}}}if(b){Ee(b,Me((DI(),b.Sb))+'-'+L_b,true);if(a.o){d=Zh(b.Sb);if(ZJ(d)==2){c=YJ(d,1);Pe(c,M_b,true)}}Xd();wc(a.Sb,new lc(b.Sb))}a.j=b}\nfunction X5(a,b,c,d){var e,f,g,h,i,j;for(f=0;f!=b;f++){h=c[f];i=d[h];d[h]=d[f];d[f]=i;if(i!=0)break}e=f++;for(;f=0;f--){j=d[f];for(g=f+1;g!=b;g++)j-=a[f][g]*d[g];d[f]=j/a[f][f]}}\nfunction nbb(a,b){var c,d,e,f,g,h;a.e=vSb(PHb(b),10);a.k=vSb(PHb(b),10);a.n=vSb(PHb(b),10);c=vSb(PHb(b),10);a.d=new $Xb;for(d=0;d!=c;d++){g=ccb(PHb(b));e=vSb(PHb(b),10);f=vSb(PHb(b),10);h=vSb(PHb(b),10);NXb(a.d,new Ijb(g,e,f,h))}a.j=ccb(PHb(b));a.c=ccb(PHb(b))}\nfunction _Z(b,c,d,e,f,g){var h;aV.call(this,b,c,d,e,f);this.n=2;this.n=(new ESb(PHb(g))).a;h=wSb(uSb(PHb(g)));this.gb=true;this.f=5;try{this.f=wSb(uSb(PHb(g)))}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}this.p=h>this.f*0.5;YZ(this,(f&1)!=0?1:2);eU(this);ZZ(this)}\nfunction Fnb(a){i5(WT,a.hb[1]);i5(WT,a.hb[2]);(a.bb&a.n)!=0&&(a.bb&a.k)!=0&&a.Kh()?(a.w=3):(a.w=a.R==-1?2:1);if((a.bb&a.k)!=0&&a.Kh()){if(a.R==-1){_fb(a.C,a.hb[1],a.hb[a.w]);_fb(a.D,a.hb[2],a.hb[a.w])}else{_fb(a.C,a.hb[a.w],a.hb[1]);_fb(a.D,a.hb[a.w],a.hb[2])}}}\nfunction zGb(a){var b,c,d;if(yGb(a))return;for(b=0;b!=a.b.ad.length;b++)a.b.ad[b]=null;for(b=0;b!=a.c.a.a.length;b++){d=lS(TXb(a.c,b));c=TXb(a.b.Rb,b);c.d=d;d.length>0&&(a.b.ad[HYb(0,d.length),d.charCodeAt(0)]=TXb(a.b.Qb,b))}B4(a.b);HM(a,false);p2==a&&(p2=null)}\nfunction U5(a,b){var c,d,e,f,g;f=rq(pr,l$b,8,b,15,1);W5(a,b,f);c=rq(or,Z_b,8,b,15,1);e=pq(or,[XYb,Z_b],[14,8],15,[b,b],2);for(d=0;d!=b;d++){for(g=0;g!=b;g++)c[g]=0;c[d]=1;X5(a,b,f,c);for(g=0;g!=b;g++)e[g][d]=c[g]}for(d=0;d!=b;d++)for(g=0;g!=b;g++)a[d][g]=e[d][g]}\nfunction jp(a,b,c){var d,e;d=CF(c.a.getTime());if(zF(d,0)<0){e=m$b-PF(HF(JF(d),m$b));e==m$b&&(e=0)}else{e=PF(HF(d,m$b))}if(b==1){e=$wnd.Math.min((e+50)/100|0,9);DTb(a,48+e&LZb)}else if(b==2){e=$wnd.Math.min((e+5)/10|0,99);rp(a,e,2)}else{rp(a,e,3);b>3&&rp(a,0,b-3)}}\nfunction m4(a){var b=a.toDataURL('image/png');var c=window.open('',E3b,'height=500,width=500,status=yes,location=no');c.document.title='Print Circuit';c.document.open();c.document.write('');c.document.close();setTimeout(function(){c.print()},m$b)}\nfunction Gnb(b,c,d,e,f,g){aV.call(this,b,c,d,e,f);xnb(this);this.R=(f&this.r)!=0?-1:1;this.gb=true;Enb(this);this.T=this.Jh();this.u=this.Hh();try{this.T=wSb(uSb(PHb(g)));this.u=wSb(uSb(PHb(g)))}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}vnb=this.bb&this.j;eU(this)}\nfunction aW(a){var b,c,d;XT=new okb(j0b,0,12);WT=a;ET=rq(uz,XYb,36,FT,0,1);QT=new gxb;RT=new gxb;d=(!hH&&(pH(),nH)&&(hH=new mH(P$b)),hH);IT=3;TT=1;if(d){b=rH(d.a,k0b);c=rH(d.a,l0b);b!=null&&(IT=vSb(b,10));c!=null&&(TT=vSb(c,10))}lW(IT,false,false);lW(TT,true,false)}\nfunction t9(a,b,c,d,e,f){var g;aV.call(this,a,b,c,d,e);g=PHb(f);fTb(g,yZb)==0?(this.q=fr(this,170)?0:1):fTb(g,'false')==0?(this.q=fr(this,170)?1:0):(this.q=(new ESb(g)).a);this.o=TRb((SRb(),jTb(yZb,PHb(f))));this.p=2;this.n=null;(this.bb&4)!=0&&(this.n=ccb(PHb(f)))}\nfunction mX(a){var b,c,d;a.t==5?(a.bb&=-8193):(a.bb|=8192);c=(d=a.Uf(),(d<127?String.fromCharCode(d&LZb)+' ':d+' ')+a.nb+' '+a.pb+' '+a.ob+' '+a.qb+' '+a.bb);a.Lg()&&(c+=' '+a.n);(a.bb&8192)!=0&&(c+=' '+a.t);for(b=0;b!=a.ag();b++){a.A[b].s&&(c+=' '+a.mb[b])}return c}\nfunction IXb(a,b){var c,d,e,f,g,h;f=a.a*V6b+a.b*1502;h=a.b*V6b+11;c=$wnd.Math.floor(h*W6b);f+=c;h-=c*a_b;f%=a_b;a.a=f;a.b=h;if(b<=24){return $wnd.Math.floor(a.a*DXb[b])}else{e=a.a*(1<=2147483648&&(d-=4294967296);return d}}\nfunction rM(a,b,c){var d;fM.call(this,a);this.Gb=b;d=uq(nq(JE,1),XYb,2,6,[c+'Top',c+'Middle',c+'Bottom']);this.tb=new BM(d);De(this.tb,'');Qe(Zh((DI(),Yh(this.Sb))),'gwt-DecoratedPopupPanel');bM(this,this.tb);Pe(Yh(this.Sb),p_b,false);Pe(AM(this.tb),c+'Content',true)}\nfunction mDb(a,b,c,d){var e,f,g,h,i,j;j=a.t;a.t=b;a.s!=c&&(j=0);a.s=c;a.a=1-1/(1.15*a.s*a.t);i=a.p;h=a.o;a.p=rq(or,Z_b,8,a.t,15,1);a.o=rq(or,Z_b,8,a.t,15,1);if(i!=null&&!d){for(e=0;e!=a.t&&e!=j;e++){f=-e&a.t-1;g=a.r-e&j-1;a.p[f]=i[g];a.o[f]=h[g]}}else a.g=u2.td;a.r=0}\nfunction Hq(a){var b,c,d;c=a.l;if((c&c-1)!=0){return -1}d=a.m;if((d&d-1)!=0){return -1}b=a.h;if((b&b-1)!=0){return -1}if(b==0&&d==0&&c==0){return -1}if(b==0&&d==0&&c!=0){return LSb(c)}if(b==0&&d!=0&&c==0){return LSb(d)+22}if(b!=0&&d==0&&c==0){return LSb(b)+44}return -1}\nfunction THb(a){var b,c,d,e,f;d=ue(a.d).selectedIndex;if(d==-1){$wnd.alert('Please select a subcircuit to delete.');return}e=BP(a.d,d);b=$wnd.confirm('Are you sure you want to delete '+e+'?');if(b){c=TXb(a.e,d);WTb(a.e,c,true);lbb(c,false);pUb(fbb,c.i);++gbb;FP(a.d,d)}}\nfunction G4(a){var b,c,d;d=we(wR());b=ve(wR());b=b-(a.wb?0:30);T3(a.dd)||(d=d-m2);a.Bd.c&&(b-=40);d=$wnd.Math.max(d,0);b=$wnd.Math.max(b,0);if(a.J){Ie(a.J,d+'PX');Ce(a.J,b+'PX');a.i=d;a.g=b;c=window.devicePixelRatio;yf(a.J,lr(d*c));xf(a.J,lr(b*c))}H4(a);a.Cd[0]==0&&H2(a)}\nfunction lNb(a){var b,c;c=ccb(PHb(a));b=hNb(c);b.j=(new ESb(PHb(a))).a;b.v=uSb(PHb(a));b.p=uSb(PHb(a));b.b=uSb(PHb(a));b.s=uSb(PHb(a));b.q=uSb(PHb(a));b.a=uSb(PHb(a));b.r=uSb(PHb(a));b.g=uSb(PHb(a));b.i=uSb(PHb(a));b.n=uSb(PHb(a));b.o=uSb(PHb(a));b.c=uSb(PHb(a));return b}\nfunction Vp(a,b){var c,d;d=0;c=new KTb;d+=Tp(a,b,0,c,false);a.t=c.a;d+=Wp(a,b,d,false);d+=Tp(a,b,d,c,false);a.u=c.a;if(d0?e[0]:null);a.p=new KH((d.pageX||0)|0,(d.pageY||0)|0);c=Ig();yI(a.k,a.p,c);yI(a.e,a.p,c);a.n=null;if(a.g){rVb(a.q,new AI(a.p,c));lh((dh(),a.i),2500)}a.o=new KH(SR(a.s),WR(a.s));RH(a);a.r=true}\nfunction KU(a,b,c,d,e,f){var g,h;g=b.b-a.b;h=a.a-b.a;f/=$wnd.Math.sqrt(g*g+h*h);c.a=lr($wnd.Math.floor(a.a*(1-e)+b.a*e+f*g+a0b));c.b=lr($wnd.Math.floor(a.b*(1-e)+b.b*e+f*h+a0b));d.a=lr($wnd.Math.floor(a.a*(1-e)+b.a*e-f*g+a0b));d.b=lr($wnd.Math.floor(a.b*(1-e)+b.b*e-f*h+a0b))}\nfunction q9(a){UU(a);hU(a,32);a.r=new gxb;a.s=new gxb;if((a.bb&2)!=0){a.k=QU(7);JU(a.eb,a.fb,a.k[0],0.5,8);JU(a.eb,a.fb,a.k[1],0.5,24);JU(a.eb,a.fb,a.k[2],0.4,24);JU(a.eb,a.fb,a.k[3],0.6,24);JU(a.eb,a.fb,a.k[4],0.5,19);JU(a.eb,a.fb,a.k[5],0.4,16);JU(a.eb,a.fb,a.k[6],0.5,13)}}\nfunction nEb(a,b,c){this.e=a;this.b=c;this.d=new nP;this.a=new eL((BYb(c),c)?'-':'+');Ve(this.a,new oEb(this),(sm(),sm(),rm));se(this.a,'expand-but');kP(this.d,this.a);this.c=new bN(b);ue(this.c).style['fontWeight']=(ok(),'bold');kP(this.d,this.c);jL(this.d,this.c,(iP(),fP))}\nfunction dGb(a,b,c,d){var e,f,g,h,i;a.a.beginPath();f=new gxb;g=new gxb;h=new gxb;i=new gxb;e=TSb(b.a-c.a,b.b-c.b);KU(b,c,f,g,d/e,d);KU(b,c,h,i,1-d/e,d);Nf(a.a,b.a,b.b);Lf(a.a,f.a,f.b);Lf(a.a,h.a,h.b);Lf(a.a,c.a,c.b);Lf(a.a,i.a,i.b);Lf(a.a,g.a,g.b);Lf(a.a,b.a,b.b);a.a.fill()}\nfunction gcb(a,b,c,d,e,f){var g,h;aV.call(this,a,b,c,d,e);this.A=32;this.o=wSb(uSb(PHb(f)));this.i=wSb(uSb(PHb(f)));h=PHb(f);this.j=ccb(h);this.a=(new ESb(PHb(f))).a;this.d=rq(or,Z_b,8,this.a,15,1);for(g=0;g!=this.a;g++)this.d[g]=wSb(uSb(PHb(f)));this.gb=true;dcb(this,this.j)}\nfunction Mq(a){var b,c,d,e,f;if(isNaN(a)){return $q(),Zq}if(a<-9223372036854775808){return $q(),Xq}if(a>=9223372036854775807){return $q(),Wq}e=false;if(a<0){e=true;a=-a}d=0;if(a>=w$b){d=lr(a/w$b);a-=d*w$b}c=0;if(a>=v$b){c=lr(a/v$b);a-=c*v$b}b=lr(a);f=zq(b,c,d);e&&Fq(f);return f}\nfunction l4(a){var b,c,d,e,f,g,h,i;o4(a);O4(a);h=30000;f=d3b;i=30000;g=d3b;c=R2(a);for(e=0;e!=a.ab.a.a.length;e++){b=G3(a,e);if(b.kb||c==0){h=c4(b.nb,c4(b.ob,h));f=_3(b.nb,_3(b.ob,f));i=c4(b.pb,c4(b.qb,i));g=_3(b.pb,_3(b.qb,g))}}d=new d7;d.b=(h+f)/2|0;d.c=(i+g)/2|0;d.a=c;return d}\nfunction U4(a,b){if(b){if(a.qd!=null)return;a.ed=true;aL(a.Mc,(aH(),(new RG(xRb('RUN<\\/strong> / Stop'))).a));Fe(a.Mc,V0b);yb(a.yd)}else{a.ed=false;aL(a.Mc,(aH(),(new RG(xRb('Run / STOP<\\/strong>'))).a));Fe(a.Mc,'topButton-red');wb(a.yd);y4(a)}}\nfunction yBb(a,b,c){var d;if(b==0){NXb(a.u,new rDb(c,0,0,dCb(a,0,false)));!!c&&a.V.N.c&&!(fr(c,210)||fr(c,240)||fr(c,215)||fr(c,211))&&NXb(a.u,new rDb(c,1,3,dCb(a,1,false)))}else{d=c.dg(b);NXb(a.u,new rDb(c,d,b,dCb(a,d,false)));d==0&&(a.U=true);d==1&&(a.O=true)}EBb(a);sCb(a,false)}\nfunction Xp(a,b){var c,d,e;if(a.b>a.d){while(a.da.o){e=a.b-a.o;for(c=0;c0){b.a=b.a.substr(0,0)+''+uTb(b.a,e);a.d-=e;a.b-=e}}}}\nfunction Klb(){var e={success:function(b){function d(){var a=c.responseText;o4(Jlb);p4(Jlb,a)}\ntry{if(b[0].bytesa.X/2&&(c=lr(a.X/2));a.eb=GU(a.ib,a.jb,0.5-c/a.X);a.fb=GU(a.ib,a.jb,0.5+(c+2)/a.X);a.i=GU(a.ib,a.jb,0.5+(c-2)/a.X);b=QU(3);KU(a.eb,a.fb,b[0],b[1],0,16);b[2]=GU(a.ib,a.jb,0.5+(c-5)/a.X);a.d=lU(b);a.n=EU(a,1,0.30000001192092896);TU(a,a.ib,a.jb,16)}\nfunction WGb(b){var c,d,e,f,g;for(g=0;g!=b.c;g++){c=u3(b.i,b.e,g);if(!c)continue;f=b.d[g];try{c.k=!f.e?'':lS(f.e);G5('slidertext '+c.k+' '+f.e);!!c.d&&$M(c.d,c.k);d=Whb(lS(f.j));c.f=d;d=Whb(lS(f.g));c.e=d;OY(c,f.t)}catch(a){a=wF(a);if(fr(a,15)){e=a;G5(og(e,e.we()))}else throw xF(a)}}}\nfunction eM(){JL.call(this);this.Ab=new PQ(this);this.ub=(YQ(),VQ);this.Bb='gwt-PopupPanelGlass';this.Db=false;this.Fb=-1;this.Jb=new eR(this);this.Lb=-1;Ch((DI(),this.Sb),$doc.createElement(y$b));$L(this,0,0);Zh(Yh(this.Sb)).className='gwt-PopupPanel';(null,Yh(this.Sb)).className=p_b}\nfunction EBb(a){var b,c,d,e,f;a._=new $Xb;f=0;b=0;d=0;if(a.s){for(c=0;c<2&&c0){a.u=new $Xb;NXb(a.u,new rDb(d,d.dg(b),b,dCb(a,d.dg(b),false)));NXb(a.u,new rDb(d,d.dg(c),c,dCb(a,d.dg(c),false)));return}if(e){a.u=new $Xb;NXb(a.u,new rDb(d,d.dg(b),0,dCb(a,d.dg(b),false)));NXb(a.u,new rDb(e,d.dg(c),0,dCb(a,d.dg(b),false)));return}ICb(a,b)}\nfunction PYb(a){var b,c,d,e;b=0;d=a.length;e=d-4;c=0;while(c=0){d=e+1;d=0){a.a=vTb(a.a,0,c)+''+uTb(a.a,c+1);f-=a.a.length-c}return f}\nfunction WBb(a,b){var c,d,e;alb(b,ZT);a.$=10;if(a._.a.a.length==0){a.L&&RBb(a,b);return}c=SXb(a._);a.T&&ZBb(a,c,b);a.P&&VBb(a,b,'Max='+lDb(c,a.q));if(a.Q){e=a.A.a-5;Ykb(b,'Min='+lDb(c,a.r),0,e)}a.S&&YBb(a,b);a.J&&NBb(a,b);a.K&&QBb(a,b);d=gCb(a,true);d!=null&&d!=''&&VBb(a,b,d);a.N&&UBb(a,b);a.L&&RBb(a,b)}\nfunction l3(a,b,c,d){var e,f,g,h,i;a.T==-1&&(a.T=elb(a.fc.nb,a.fc.pb,b,c)>elb(a.fc.ob,a.fc.qb,b,c)?1:0);e=b-a.P;f=c-a.Q;if(e==0&&f==0)return;if(d){for(h=0;h!=a.ab.a.a.length;h++){g=TXb(a.ab,h);if(g.nb==a.P&&g.pb==a.Q)i=0;else if(g.ob==a.P&&g.qb==a.Q)i=1;else continue;OU(g,i,e,f)}}else OU(a.fc,a.T,e,f);g4(a)}\nfunction Bkb(a){var b,c,d,e;b=FU(a,a.mb[0]);c=a.b/a.c;if(c0&&GP(a.a)}\nfunction dR(a,b,c){var d;a.c=c;$(a);if(a.g){wb(a.g);a.g=null;aR(a)}a.a.Kb=b;dM(a.a);d=!c&&a.a.Db;a.a.ub!=(YQ(),VQ)&&!b&&(d=false);a.i=b;if(d){if(b){_Q(a);ue(a.a).style[z$b]=A$b;a.a.Lb!=-1&&$L(a.a,a.a.Fb,a.a.Lb);ue(a.a).style[m_b]=n_b;KK((DR(),HR()),a.a);a.g=new iR(a);xb(a.g,1)}else{ab(a,200,Ig(),null)}}else{bR(a)}}\nfunction xtb(b,c,d,e,f,g){aV.call(this,b,c,d,e,f);this.w=(new ESb(PHb(g))).a;this.d=100;try{this.s=wSb(uSb(PHb(g)));this.r=wSb(uSb(PHb(g)));this.mb[0]=0;this.mb[1]=-this.s;this.mb[2]=-this.r;this.d=wSb(uSb(PHb(g)));this.u=ccb(PHb(g))}catch(a){a=wF(a);if(fr(a,15)){this.u=F4b}else throw xF(a)}ntb=this.bb&2;wtb(this)}\nfunction Ygb(a,b){var c,d,e,f,g,h;Tgb();e=new DUb((new vUb(Fgb)).a);while(e.b){h=BUb(e);d=h.ei();if($wnd.Math.abs(d.j-a)0&&ea.b.k*16&&a==WT.O&&(a.bb&=-3);vX(a.a,(a.bb&2)!=0?1:2);Gab(a.a,(a.b.e&1)!=0?a.b.i:null);a.a.D=a.b.k;a.a.F=a.b.n;Fab(a.a,a.e);for(b=0;b!=a.e;b++){c=TXb(a.b.d,b);Hab(a.a,b,c.c,c.d,c.a)}uX(a.a);for(b=0;b!=a.e;b++)_7(a,b,rX(a.a,b))}\nfunction TBb(a,b){var c,d,e,f,g,h;e=0;d=1/(a.V.Sb*a.X*20*2);for(c=0;c<20;c++){h=a.A.b*c/20|0;if(h0){b.a.strokeStyle='#880000';b.a.fillStyle='#880000';Ukb(b,h,0,h,a.A.a)}b.a.strokeStyle=j6b;b.a.fillStyle=j6b;Ykb(b,f,h+2,a.A.a)}}\nfunction $ub(b,c,d,e,f,g){aV.call(this,b,c,d,e,f);this.f=15;this.g=-15;this.b=i0b;try{this.f=wSb(uSb(PHb(g)));this.g=wSb(uSb(PHb(g)));this.b=wSb(uSb(PHb(g)));this.mb[0]=wSb(uSb(PHb(g)));this.mb[1]=wSb(uSb(PHb(g)));this.a=wSb(uSb(PHb(g)))}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}this.gb=true;Yub(this,(f&2)!=0?1:2);Xub(this)}\nfunction cCb(a){var b,c,d,e;c=(a.O?1:0)|(a.U?2:0)|(a.P?0:4)|(a.N?8:0)|(a.o?524304:0)|(a.s?64:0)|(a.t?128:0)|(a.Q?256:0)|(a.T?512:0)|(a.M?o$b:0)|(a.p?8192:0)|(a.S?V$b:0)|(a.K?32768:0)|(a.k?W$b:0)|(a.J?X$b:0)|(a.L?$$b:0);c|=T$b;b=0;for(e=new OVb(a.u.a);e.a=1){if(e[0].size>=128000){yJ(xRb('Cannot load: That file is too large!'));return}var g=new FileReader;g.onload=function(a){var b=new Uint8Array(g.result);var c='0:';for(var d=0;d2?a.n:2;a.A=rq(Ky,XYb,9,(a.bb&4)!=0?a.n+3:a.n+2,0,1);a.A[0]=new j2(a,0,2,'');a.A[0].d=true;a.A[0].a=(a.bb&8)!=0;a.A[1]=new j2(a,a.F-1,2,'R');a.A[1].a=a.a;for(b=0;b!=a.n;b++){c=b+2;a.A[c]=new j2(a,b,3,'Q'+(a.n-b-1));a.A[c].k=a.A[c].s=true}(a.bb&4)!=0&&(a.A[a.n+2]=new j2(a,a.F-2,2,'U/D'));eU(a)}\nfunction aU(c){var b=c;c.getType=SYb(function(){return b.Of()});c.getInfo=SYb(function(){return b.Xf()});c.getVoltageDiff=SYb(function(){return b.gg()});c.getVoltage=SYb(function(a){return b.hg(a)});c.getCurrent=SYb(function(){return b.Rf()});c.getLabelName=SYb(function(){return b.Lh()});c.getPostCount=SYb(function(){return b.ag()})}\nfunction K7(){K7=ZF;I7=new N7(255,255,255);G7=new N7(192,192,192);E7=new N7(128,128,128);y7=new N7(128,128,128);D7=new N7(64,64,64);C7=new N7(64,64,64);z7=new N7(0,0,0);H7=new N7(255,0,0);new N7(255,175,175);new N7(255,200,0);J7=new N7(255,255,0);F7=new N7(0,255,0);new N7(255,0,255);B7=new N7(0,255,255);A7=new N7(0,0,255);new P7('')}\nfunction _vb(a){var b;a.a=16;a.b=a.a*2;a.d=TXb(a.w,0);b=TXb(a.w,1);b.i='max(0,min(.0001, select(i-.003, (-80000000000*(i)^5+800000000*(i)^4-3000000*(i)^3+5177.2*(i)^2+.2453*(i)-.00005)*1.04/700, (9000000*(i)^5-998113*(i)^4+42174*(i)^3-861.32*(i)^2+9.0836*(i)-.0078)*.945/700)))';k0(b);a.i=TXb(a.w,2);ttb(a.i,700);a.c=rq(or,Z_b,8,4,15,1)}\nfunction UAb(b,c,d,e,f,g){jX();var h,i;AX.call(this,b,c,d,e,f,g);this.g=new JWb;this.b=vSb(PHb(g),10);this.d=vSb(PHb(g),10);SAb(this);try{while(true){h=vSb(PHb(g),10);if(h<0)break;i=vSb(PHb(g),10);mUb(this.g,OSb(h),OSb(i));while(true){i=vSb(PHb(g),10);if(i<0)break;mUb(this.g,OSb(++h),OSb(i))}}}catch(a){a=wF(a);if(!fr(a,15))throw xF(a)}}\nfunction U$(d,e){P$();var f=e.files;var g=new (window.AudioContext||window.webkitAudioContext);d.Vg(g.sampleRate);if(f.length>=1){var h=new FileReader;h.onload=function(c){g.decodeAudioData(h.result,function(a){var b=a.getChannelData(0);d.Ug(b)},function(a){console.log('Error with decoding audio data'+a.err)})};h.readAsArrayBuffer(f[0])}}\nfunction knb(a){a.D=2;a.F=3;a.A=rq(Ky,XYb,9,5+((a.bb&2)!=0?1:0),0,1);a.A[0]=new j2(a,0,2,'J');a.A[1]=new j2(a,1,2,'');a.A[1].d=true;a.A[1].a=(a.bb&4)==0;a.A[2]=new j2(a,2,2,'K');a.A[3]=new j2(a,0,3,'Q');a.A[3].k=a.A[3].s=true;a.A[4]=new j2(a,2,3,'Q');a.A[4].k=true;a.A[4].j=true;if((a.bb&2)!=0){a.A[5]=new j2(a,1,3,'R');a.A[5].a=(a.bb&8)!=0}}\nfunction wo(b,c){var d,e,f,g,h,i;if(!c){throw xF(new ZSb('Cannot fire null event'))}try{++b.b;h=(e=zo(b,c.Ge(),null),e);d=null;i=b.c?h._h(h.Xh()):h.$h();while(b.c?i.bi():i.tf()){g=b.c?i.ci():i.uf();try{c.Fe(g)}catch(a){a=wF(a);if(fr(a,37)){f=a;!d&&(d=new NWb);mUb(d.a,f,d)}else throw xF(a)}}if(d){throw xF(new Fo(d))}}finally{--b.b;b.b==0&&Ao(b)}}\nfunction Hvb(a){var b,c,d;a.bb|=1;switch(a.f){case 0:Gvb(a);break;case 1:c=new RHb(wvb,'/');Z7(a,c,xvb,vvb);Fvb(a).d=1.0E-11/(a.k/0.55);Fvb(a).o=a.a;d=a.c/S5b;TXb(a.w,11).a/=d;ttb(TXb(a.w,9),d*100);ttb(TXb(a.w,10),d*100);ttb(TXb(a.w,12),d*100);ttb(TXb(a.w,16),d*100);break;case 2:b=new RHb(zvb,'/');Z7(a,b,Avb,yvb);}a.b=rq(or,Z_b,8,5,15,1);Ivb(a)}\nfunction GBb(a,b,c){var d,e,f,g,h,i,j,k,m;if(V2(a.V))return;if(!nyb(a.A,b,c)){a.I=-1;return}if(a.u.a.a.length==0){a.I=-1;return}i=oDb(TXb(a.u,0),a.A.b);h=b-a.A.c+i&a.G-1;k=(a.A.a-1)/2|0;e=q5b;d=-1;for(g=0;g!=a._.a.a.length;g++){m=TXb(a._,g);j=lr(m.f*(m.o[h]+m.q));f=$wnd.Math.abs(c-(a.A.d+k-j));if(f=0&&(tBb=TXb(a._,a.I).u)}\nfunction tyb(a,b){var c,d,e,f,g,h,i,j;h=a.b;j=a.a;if(GF(LF(h,j),0)){return new xyb(b)}d=b.b;f=b.a;if(GF(LF(d,f),0)){return new xyb(a)}g=a.c;i=a.d;h=yF(h,g);j=yF(j,i);c=b.c;e=b.d;d=yF(d,c);f=yF(f,e);g>c&&(g=c);i>e&&(i=e);zF(h,d)<0&&(h=d);zF(j,f)<0&&(j=f);h=MF(h,g);j=MF(j,i);zF(h,UYb)>0&&(h=UYb);zF(j,UYb)>0&&(j=UYb);return new vyb(g,i,PF(h),PF(j))}\nfunction sU(a,b,c,d,e){var f,g,h,i,j,k;g=false;if(iTb(c.substr(0,1),'/')){g=true;c=c.substr(1)}h=lr(Mf(b.a,c).width);f=b.b;b.a.save();b.c=b.b;b.a.textBaseline=E_b;i=e.a;j=e.b;if(d.b!=e.b){i-=h/2|0;j+=tW(e.b-d.b)*f}else{e.a>d.a?(i+=4):(i-=4+h)}Kf(b.a,c,i,j);bU(a,i,j-(f/2|0),i+h,j+(f/2|0));b.a.restore();b.b=b.c;if(g){k=j-(f/2|0)-1;Ukb(b,i,k,i+h,k)}}\nfunction $Lb(a){var b,c,d,e,f,g,h,i;UU(a);b=a.ab==0?tW(a._):-tW(a.ab);c=HU(a.ib,a.jb,0,-a.s*b);d=HU(a.ib,a.jb,1,-a.s*b);i=WT.tb/2|0;e=HU(a.ib,a.jb,0,-((a.s/2|0)-i)*b);f=HU(a.ib,a.jb,1,-((a.s/2|0)-i)*b);g=HU(a.ib,a.jb,0,-((a.s/2|0)+i)*b);h=HU(a.ib,a.jb,1,-((a.s/2|0)+i)*b);a.k=uq(nq(YB,1),b0b,19,0,[c,d,a.ib,a.jb]);a.g=uq(nq(YB,1),b0b,19,0,[g,h,e,f])}\nfunction SAb(a){var b,c;a.D=2;a.F=eW(a.b,a.d)+1;a.A=rq(Ky,XYb,9,2+a.b+a.d,0,1);a.A[0]=new j2(a,0,2,'WE');a.A[0].j=true;a.A[1]=new j2(a,0,3,'OE');a.A[1].j=true;a.c=2;a.e=2+a.b;a.f=2+a.b+a.d;for(b=0;b!=a.b;b++){c=b+a.c;a.A[c]=new j2(a,a.F-a.b+b,2,'A'+(a.b-b-1))}for(b=0;b!=a.d;b++){c=b+a.e;a.A[c]=new j2(a,a.F-a.d+b,3,'D'+(a.d-b-1));a.A[c].k=true}eU(a)}\nfunction xJb(a,b,c,d,e,f){var g,h,i,j,k,m;h=lr(Mf(b.a,c).width);i=lr(Mf(b.a,d).width);j=h>i?h:i;g=b.b;b.a.save();b.c=b.b;b.a.textBaseline=E_b;k=f.a;m=f.b;if(e.b!=f.b){k-=j/2|0;m+=tW(f.b-e.b)*g;f.be.a?(k+=4):(k-=4+j)}Kf(b.a,c,k+((j-h)/2|0),m);Kf(b.a,d,k+((j-i)/2|0),m+14);bU(a,k,m-(g/2|0),k+j,m+14+(g/2|0));b.a.restore();b.b=b.c}\nfunction OM(a){var b,c;rM.call(this,false,true,eZb);_e(a);this.lb=a;c=(DI(),zM(this.tb));Ch(c,KI(ue(this.lb)));vK(this,this.lb);Zh(Yh(this.Sb)).className='gwt-DialogBox';this.sb=pi($doc);this.mb=0;this.nb=0;b=new gN(this);Ve(this,b,(Sm(),Sm(),Rm));Ve(this,b,(ln(),ln(),kn));Ve(this,b,(Xm(),Xm(),Wm));Ve(this,b,(fn(),fn(),en));Ve(this,b,(an(),an(),_m))}\nfunction uU(a,b,c,d){var e,f,g,h,i,j,k;if(c==null)return;clb(b,XT);g=lr(Mf(b.a,c).width);alb(b,ZT);j=b.b/2|0;if(fr(a,47)||fr(a,239)){h=a.ob;k=a.qb}else{h=(a.ob+a.nb)/2|0;k=(a.qb+a.pb)/2|0}e=lr(a.Y*d);f=lr(a.Z*d);if(e==0)Kf(b.a,c,h-(g/2|0),k-(f<0?-f:f)-2);else{i=h+(e<0?-e:e)+2;(fr(a,48)||a.nba.qb)&&(i=h-(g+(e<0?-e:e)+2));Kf(b.a,c,i,k+f+j)}}\nfunction Rcb(a,b,c,d,e,f){aV.call(this,a,b,c,d,e);Ocb(this);this.d=s0b;this.q=0;this.k=wSb(uSb(PHb(f)));this.p=wSb(uSb(PHb(f)));this.b=wSb(uSb(PHb(f)));this.c=wSb(uSb(PHb(f)));this.a=wSb(uSb(PHb(f)));this.e=wSb(uSb(PHb(f)));this.g=wSb(uSb(PHb(f)));this.r=wSb(uSb(PHb(f)));this.i=new hmb(WT);this.j=new hmb(WT);emb(this.i,this.k,0,2);emb(this.j,this.a,0,2)}\nfunction Fyb(a,b,c,d,e,f){aV.call(this,a,b,c,d,e);Ayb(this);this.q=ccb(PHb(f));this.p=wSb(uSb(PHb(f)));this.c=wSb(uSb(PHb(f)));this.w=wSb(uSb(PHb(f)));this.f=wSb(uSb(PHb(f)));this.v=wSb(uSb(PHb(f)));this.D=uSb(PHb(f));this.H=vSb(PHb(f),10);this.B=vSb(PHb(f),10);this.C=vSb(PHb(f),10);this.gb=true;this.o=new hmb(WT);emb(this.o,this.p,this.c,2);Dyb(this);eU(this)}\nfunction HY(){var a;eM.call(this);a=(!iH&&(pH(),oH)&&(iH=new mH(Q$b)),iH);vH(a.a,'versionString','3.1.3js');this.b=new SS;bM(this,this.b);Ie(this.b,F0b);OS(this.b,new eN(' +
+
+ +
+ + + diff --git a/doc/js-interface.html b/doc/js-interface.html new file mode 100644 index 0000000..3a5adb1 --- /dev/null +++ b/doc/js-interface.html @@ -0,0 +1,276 @@ + + + + + + Circuit Simulator JavaScript Interface Documentation + + + +

Circuit Simulator JavaScript Interface Documentation

+ +

This documentation outlines how to interact with the Circuit Simulator using JavaScript when it's embedded in an HTML page, particularly focusing on the use of an iframe to host the simulator.

+ +

Overview

+

To use the JavaScript interface, the simulator and the controlling JavaScript page must be served from the same origin (domain). +This is required by the same-origin policy enforced by browsers for security reasons. +

+To run the simulator on your website, get the offline windows version, +and put the contents of the circuitjs1/resources/app/war directory on your website. +

+You can run the CircuitJS1 simulation in an iframe. The CircuitJS1 object provides methods to interact with the simulator. +

+See a running example here. +

+ +

Setup

+ +
<iframe id="circuitFrame" src="circuitjs.html?startCircuit=jsinterface.txt" width="800" height="550"></iframe>
+
+...
+
+<script>
+
+var iframe = document.getElementById("circuitFrame");
+
+// Wait for the circuit simulator to load
+iframe.contentWindow.oncircuitjsloaded = function() {
+    // Simulator is loaded, initialize your code here
+    sim = iframe.contentWindow.CircuitJS1;
+
+    // Set up callbacks for updates, analysis, and time steps (all optional)
+    sim.onupdate = didUpdate;
+    sim.ontimestep = didStep;
+    sim.onanalyze = didAnalyze;
+};
+ +

Available CircuitJS1 Methods

+ +

setSimRunning(boolean run)

+
    +
  • Description: Starts or stops the simulation.
  • +
  • Parameters: +
      +
    • run (boolean): true to start the simulation, false to stop it.
    • +
    +
  • +
  • Example: CircuitJS1.setSimRunning(true);
  • +
+ +

getTime()

+
    +
  • Description: Retrieves the current simulation time.
  • +
  • Returns: The simulation time in seconds as a number.
  • +
  • Example: var time = CircuitJS1.getTime();
  • +
+ +

getTimeStep()

+
    +
  • Description: Gets the current time step of the simulation.
  • +
  • Returns: The time step value.
  • +
  • Example: var timeStep = CircuitJS1.getTimeStep();
  • +
+ +

setTimeStep(double ts) (Deprecated)

+
    +
  • Description: Sets the time step for the simulation. Note: This method is deprecated; changes to time step should be made using setMaxTimeStep.
  • +
  • Parameters: +
      +
    • ts (double): The new time step to set.
    • +
    +
  • +
  • Example: CircuitJS1.setTimeStep(1e-6); // This is deprecated
  • +
+ +

getMaxTimeStep()

+
    +
  • Description: Returns the maximum time step allowed for the simulation.
  • +
  • Returns: The maximum time step value.
  • +
  • Example: var maxTimeStep = CircuitJS1.getMaxTimeStep();
  • +
+ +

setMaxTimeStep(double ts)

+
    +
  • Description: Sets a new maximum time step and also sets the current time step to this value.
  • +
  • Parameters: +
      +
    • ts (double): The new maximum time step to set.
    • +
    +
  • +
  • Example: CircuitJS1.setMaxTimeStep(1e-3);
  • +
+ +

isRunning()

+
    +
  • Description: Checks if the simulation is currently running.
  • +
  • Returns: true if the simulation is running, false otherwise.
  • +
  • Example: if (CircuitJS1.isRunning()) { ... }
  • +
+ +

getNodeVoltage(String n)

+
    +
  • Description: Gets the voltage at a labeled node in the circuit.
  • +
  • Parameters: +
      +
    • n (String): The name of the labeled node.
    • +
    +
  • +
  • Returns: The voltage at the node.
  • +
  • Example: var nodeVoltage = CircuitJS1.getNodeVoltage("vsense");
  • +
+ +

setExtVoltage(String n, double v)

+
    +
  • Description: Sets the voltage of an external voltage element (see Inputs and Sources, +Add External Voltage). These are different than labeled nodes, though they look the same. Labeled nodes are +passive. Their voltage is determined by the rest of the circuit. External voltage elements are voltage sources. Their +voltage is determined by javascript code.
  • +
  • Parameters: +
      +
    • n (String): The name of the external voltage element to set the voltage for.
    • +
    • v (double): The voltage value to set.
    • +
    +
  • +
  • Example: CircuitJS1.setExtVoltage("extsin", 5);
  • +
+ +

getElements()

+
    +
  • Description: Retrieves all elements currently in the circuit.
  • +
  • Returns: An array of circuit elements. See below for methods supported on these element objects.
  • +
  • Example: var elements = CircuitJS1.getElements();
  • +
+ +

getCircuitAsSVG()

+
    +
  • Description: Exports the current circuit as an SVG string.
  • +
  • Returns: The SVG representation of the circuit.
  • +
  • Example: var svgData = CircuitJS1.getCircuitAsSVG();
  • +
+ +

exportCircuit()

+
    +
  • Description: Exports the current circuit to a string format for saving or transmission.
  • +
  • Returns: A string representation of the circuit.
  • +
  • Example: var circuitExport = CircuitJS1.exportCircuit();
  • +
+ +

importCircuit(String circuit, boolean subcircuitsOnly)

+
    +
  • Description: Imports a circuit from a string, potentially only loading subcircuits.
  • +
  • Parameters: +
      +
    • circuit (String): The string representation of the circuit to import (as returned by exportCircuit()).
    • +
    • subcircuitsOnly (boolean): If true, only subcircuits are imported.
    • +
    +
  • +
  • Example: CircuitJS1.importCircuit(circuitString, false);
  • +
+ +

Circuit Element Methods

+ +

getType()

+
    +
  • Description: Retrieves the type of the circuit element.
  • +
  • Returns: A string representing the class name of the element.
  • +
  • Example: var elementType = element.getType();
  • +
+ +

getInfo()

+
    +
  • Description: Gets information about the circuit element, which might include voltage, current, or other relevant data points.
  • +
  • Returns: An array or object containing information about the element.
  • +
  • Example: var elementInfo = element.getInfo();
  • +
+ +

getVoltageDiff()

+
    +
  • Description: Returns the voltage difference across the element. This is particularly useful for two-terminal elements like resistors.
  • +
  • Returns: The voltage difference as a number.
  • +
  • Example: var voltageDiff = element.getVoltageDiff();
  • +
+ +

getVoltage(n)

+
    +
  • Description: Gets the voltage at a specific node (or post) of the element.
  • +
  • Parameters: +
      +
    • n (number): The index of the node to check.
    • +
    +
  • +
  • Returns: The voltage at the specified node.
  • +
  • Example: var nodeVoltage = element.getVoltage(0);
  • +
+ +

getCurrent()

+
    +
  • Description: Retrieves the current flowing through the element.
  • +
  • Returns: The current as a number.
  • +
  • Example: var current = element.getCurrent();
  • +
+ +

getLabelName() (For LabeledNodeElm)

+
    +
  • Description: Returns the name of the label for elements that are labeled nodes.
  • +
  • Returns: The label name as a string.
  • +
  • Example: var labelName = labelElm.getLabelName();
  • +
+ +

getPostCount()

+
    +
  • Description: Returns the number of posts (connection points) for the element.
  • +
  • Returns: The post count as a number.
  • +
  • Example: var postCount = element.getPostCount();
  • +
+

Callbacks

+
    +
  • onupdate: Called when the simulator updates its display (usually 60 times per second). +
    sim.onupdate = didUpdate;
    +...
    +function didUpdate(sim) {
    +    // Update UI with simulation data
    +}
    +
  • +
  • ontimestep: Called every time step of the simulation. +
    sim.ontimestep = didStep;
    +...
    +function didStep(sim) {
    +    // Perform actions per time step
    +}
    +
  • +
  • onanalyze: Called when the circuit is analyzed (loaded or edited). +
    sim.onanalyze = didAnalyze;
    +...
    +function didAnalyze(sim) {
    +    // React to changes in circuit
    +}
    +
  • +
+ + + diff --git a/doc/opampreal.html b/doc/opampreal.html new file mode 100644 index 0000000..a3a9ddd --- /dev/null +++ b/doc/opampreal.html @@ -0,0 +1,19 @@ + +

Real Op-Amps

+The ideal op-amp element uses an ideal approximation to op-amp behavior. It has infinite slew rate +and output current. +

+The real op-amp element uses a subcircuit to emulate a real op-amp implementation with finite slew rate and output current. Presently, +the two implementation options are LM741 and LM324. +

+You can also modify the slew rate or output current, which will modify the circuit to change these values from the default. +

+These subcircuits are complicated, so you may run problems with convergence, especially if you increase the slew rate. Try decreasing +the time step size if this happens. +

+The LM324 can act very glitchy as well if the slew rate is increased. Decreasing the time step size proportionately should fix this. + diff --git a/doc/overview.html b/doc/overview.html new file mode 100644 index 0000000..b3c6155 --- /dev/null +++ b/doc/overview.html @@ -0,0 +1,1297 @@ + + + + + + + + + + + + + + + + + + + +

+ +

+ +

Click here for a more complete tutorial.

+ +

This java applet is an electronic circuit simulator.  When the applet starts up you will see a +simple LRC circuit.  The green color +indicates positive voltage.  The gray +color indicates ground.  A red color +indicates negative voltage.  The moving +yellow dots indicate current.

+ +

To turn a switch on or off, just click on it.  If you move the mouse over any component of +the circuit, you will see a short description of that component and its current +state in the lower right corner of the window.  +To modify a component (say, to change the resistance of one of the +resistors), move the mouse over it, click the right mouse button (or +control-click, if you have a Mac) and select “Edit”.

+ +

There are three graphs at the bottom of the window; these act like +oscilloscopes, each one showing the voltage and current across a particular +component.  Voltage is shown in green, +and current is shown in yellow.  The +current may not be visible if the voltage graph is on top of it.  The peak value of the voltage in the scope +window is also shown.  Move the mouse +over one of the scope views, and the component it is graphing will be +highlighted.  To modify or remove a +scope, click the right mouse button over it.  +To view a component in the scope, click the right mouse button over the +component and select “View in Scope”.

+ +

If the simulation is moving too slowly or too quickly, you can adjust the +speed with the “Simulation Speed” slider.

+ +

+ +

The File menu allows you to load or save circuit description +files.  You can also export a circuit description +as a link so you can share a circuit with others; this link can be optionally +shortened, which is usually better.

+ +

The +Reset button resets the circuit to a reasonable state.  The Run/Stop button allows you to stop +the simulation.  The Simulation Speed +slider allows you to adjust the speed of the simulation.  If the simulation isn’t time-dependent (that +is, if there are no capacitors, inductors, or time-dependent voltage sources), +then this won’t have any effect.  The Current +Speed slider lets you adjust the speed of the dots, in case the currents +are so weak (or strong) that the dots are moving too slowly (or too quickly).

+ +

The Circuits menu can be used to view some interesting pre-defined +circuits. Once a circuit is selected, you may modify it all you want. + +

To +add a new component to the circuit, click the right mouse button on an unused +area of the window.  This will bring up a +menu that allows you to select what component you want.  Then click where you want the first terminal +of the component, and drag to where you want the other terminal.  The menu items allow you to create:

+ +

·      +wires

+ +

·      +resistors; you can adjust the resistance after +creating the resistor by clicking the right mouse button and selecting “Edit”

+ +

·      +capacitors; you can adjust the capacitance using +“Edit”

+ +

·      +inductors, switches, transistors, etc.

+ +

·      +voltage sources, in either 1-terminal or +2-terminal varieties.  The 1-terminal +versions use ground as the other terminal.  +By clicking the right mouse button and selecting “Edit”, you can modify +the voltage and the waveform of the voltage source, changing it to DC, AC (sine +wave), square wave, triangle, sawtooth, or pulse.  If it’s not a DC source, you can also change +the frequency and the DC offset.

+ +

·      +op-amps, with power supply limits of –15V and +15V assumed (not shown).  The limits can +be adjusted using “Edit”.

+ +

·      +text labels, which you can modify with the +“Edit” dialog

+ +

·      +test points; these have no effect on the +circuit, but if you select them and use the right mouse menu item “View in +Scope”, you can view the voltage difference between the terminals.

+ +

Also in the “Other” submenu, there are some items that allow you to click +and drag sections of the circuit around.

+ +

You can drag the circuit around by clicking and dragging with the Alt key +held down.  Zoom in and out with the +mouse wheel or by using the zoom commands in the Edit menu.

+ +

To edit one of the scope views, click the right mouse button on it to view a +menu.  The menu items allow you to remove +a scope view, speed up or slow down the display, adjust the scale, select what +value(s) you want to view, etc.

+ +

The time step size is the time between iterations of the simulator.  Smaller time steps make the simulation more +accurate, but slower.  A smaller time +step size is required to simulate high frequencies.  A larger time step size may be appropriate +for circuits that run in real time.  Use Edit->Other Options… to change the +time step size.

+ +

File->Recover Auto-Save lets +you recover a circuit lost when the simulator window was closed.  If this doesn’t work, try Edit->Undo instead.

+ +

File->Find DC Operating Point +is useful with circuits that take a long time to reach a useful state.  This option instantly charges all the +capacitors.

+ +

Here are some errors you might encounter when using the simulator:

+ +

·      Voltage +source loop with no resistance! – this means one of the voltage sources in +your circuit is shorted.  Make sure there +is some resistance across every voltage source.

+ +

·      Capacitor +loop with no resistance! – it’s not allowed to have any current loops +containing capacitors but no resistance.  +For example, capacitors connected in parallel are not allowed; you must +put a resistor in series with them.  +Shorted capacitors are allowed.

+ +

·      Singular +matrix! – this means that your circuit is inconsistent (two different +voltage sources connected to each other), or that the voltage at some point is +undefined.  It might mean that some +component’s terminals are unconnected; for example, if you create an op-amp but +haven’t connected anything to it yet, you will get this error. 

+ +

·      Convergence +failed! – this means the simulator can’t figure out what the state of the +circuit should be.  Just click Reset +and hopefully that should fix it.  Your +circuit might be too complicated, but this happens sometimes even with the +examples.

+ +

·      Transmission +line delay too large! – the transmission line delay is too large compared +to the timestep of the simulator, so too much memory would be required.  Make the delay smaller.

+ +

·      Need +to ground transmission line! – the bottom two wires of a transmission line +must always be grounded in this simulator.

+ +

 

+ +
+ + + + diff --git a/doc/subcircuit-pins1.png b/doc/subcircuit-pins1.png new file mode 100644 index 0000000..9122c3d Binary files /dev/null and b/doc/subcircuit-pins1.png differ diff --git a/doc/subcircuit-pins2.png b/doc/subcircuit-pins2.png new file mode 100644 index 0000000..292af7c Binary files /dev/null and b/doc/subcircuit-pins2.png differ diff --git a/doc/subcircuits.html b/doc/subcircuits.html new file mode 100644 index 0000000..f2f0380 --- /dev/null +++ b/doc/subcircuits.html @@ -0,0 +1,54 @@ + + + + +

Subcircuits

+

+You can use subcircuits to implement custom "black box" devices. +

+Create and test your device, and then use labeled nodes (under "Outputs and Labels") to mark and label all the inputs/outputs. Here is an example circuit (a bridge rectifier). +

+Then, select File->Create Subcircuit, then rearrange the pins the way you want them, enter a model name, and click OK. This will load the subcircuit model. +Be sure to save this circuit (the subcircuit implementation), because it can't be edited later otherwise. +

+Now you can create a circuit using the subcircuit model. Click with the right mouse and select the "Active Building Blocks" menu, and the "Add Subcircuit Instance" item. Then click +and drag to create an instance. Edit the instance to select which model you want (by default it will use the one you just created). +

+Here is an example using the rectifier. When you save/load this circuit, it will also save/load the subcircuit model so you can use it in other circuits. +

+You can also use subcircuits to rearrange pins on the built-in chips. Here is an example with the 555. And here is that subcircuit model being used in a circuit. +

+If you select part of a circuit before using File->Create Subcircuit, then only the selected elements will be considered part of +the subcircuit. +

+If you want to use labeled nodes in the subcircuit definition but don't want them to be one of the inputs/outputs, then check the "Internal Node" +checkbox in those labeled nodes' edit menus. +

+ +

Pins

+

+ The arrangement and direction of the labeled nodes in your circuit will determine the initial arrangement of the pins when creating the symbol symbol. + During symbol creation, you can change the initial pin layout by dragging the pins with the mouse. +

+

+ The name of the labeled nodes can affect the look of the pin in the following ways: +

+

+ + + +

+
    +
  • Naming a node "CLK" will add a "clock marker" to the symbol at that pin and hide the text.
  • +
  • Prefixing the name with "CLK:" (as in "CLK:C1") will draw a "clock marker" on that pin in the symbol.
  • +
  • Prefixing the name with "INV:" (as in "INV:EN") will draw an "inverter circle" on that pin in the symbol, denoting logical inversion.
  • +
  • Prefixing the name with "/" (as in "/EN") will draw a horizontal line above the text in the symbol, also denoting logical negation.
  • +
  • For all prefixes, the prefix itself will not be shown in the symbol, only the text after the prefix.
  • +
  • All prefixes are purely cosmetic and do not affect the actual signal.
  • +
+ + diff --git a/doc/toc.html b/doc/toc.html new file mode 100644 index 0000000..5f9d9b5 --- /dev/null +++ b/doc/toc.html @@ -0,0 +1,40 @@ + + + + + + Table of Contents + + + +

Table of Contents

+ Overview + Sample Circuits + Audio Input + Data Input + Delayed Buffer + Custom Function for Controlled Sources + Custom Logic + Custom Transformer + JavaScript Interface + Real Op Amp + Subcircuits +

 

+Back to the applet + + + + + diff --git a/doc/welcome.html b/doc/welcome.html new file mode 100644 index 0000000..efb353f --- /dev/null +++ b/doc/welcome.html @@ -0,0 +1,2701 @@ + + + + + + + + + + + + + + + + + + + +
+ +

+ +

Click here to +go to the applet.

+ +

Click here for a more complete manual.

+ +

This java applet is an electronic circuit simulator.  When the applet starts up you will see a +simple LRC circuit.  The green color +indicates positive voltage.  The gray +color indicates ground.  A red color +indicates negative voltage.  The moving +yellow dots indicate current.

+ +

To turn a switch on or off, just click on it.  If you move the mouse over any component of +the circuit, you will see a short description of that component and its current +state in the lower right corner of the window.  +To modify a component (say, to change the resistance of one of the +resistors), move the mouse over it, click the right mouse button (or +control-click, if you have a Mac) and select “Edit”.

+ +

There are three graphs at the bottom of the window; these act like +oscilloscopes, each one showing the voltage and current across a particular +component.  Voltage is shown in green, +and current is shown in yellow.  The +current may not be visible if the voltage graph is on top of it.  The peak value of the voltage in the scope +window is also shown.  Move the mouse +over one of the scope views, and the component it is graphing will be +highlighted.  To modify or remove a +scope, click the right mouse button over it.  +To view a component in the scope, click the right mouse button over the +component and select “View in Scope”.

+ +

If the simulation is moving too slowly or too quickly, you can adjust the +speed with the “Simulation Speed” slider.

+ +

+ +

The File menu allows you to load or save circuit description +files.  You can also export a circuit description +as a link so you can share a circuit with others; this link can be optionally +shortened, which is usually better.

+ +

The +Reset button resets the circuit to a reasonable state.  The Run/Stop button allows you to stop +the simulation.  The Simulation Speed +slider allows you to adjust the speed of the simulation.  If the simulation isn’t time-dependent (that +is, if there are no capacitors, inductors, or time-dependent voltage sources), +then this won’t have any effect.  The Current +Speed slider lets you adjust the speed of the dots, in case the currents +are so weak (or strong) that the dots are moving too slowly (or too quickly).

+ +

The Circuits menu can be used to view some interesting pre-defined +circuits. Once a circuit is selected, you may modify it all you want. The +choices are:

+ +
    +
  • Basics
  • +
      +
    • Resistors: this shows some + resistors of various sizes in series and parallel.
    • +
    • Capacitor: this shows a + capacitor that you can charge and discharge by clicking on the switch.
    • +
    • Inductor: this shows an + inductor that you can charge and discharge by clicking on the switch.
    • +
    • LRC + Circuit: + this shows an oscillating circuit with an inductor, resistor, and + capacitor.  You can close the + switch to get current moving in the inductor, and then open the switch to + see the oscillation.
    • +
    • Voltage + Divider: + this shows a voltage divider, which generates a reference voltage of + 7.5V, 5V, and 2.5V from the 10V power supply.
    • +
    • Thevenin’s + Theorem states + that the circuit on top is equivalent to the circuit on the bottom.
    • +
    • Norton’s + Theorem states + that the circuit on top is equivalent to the circuit on the bottom.
    • +
    +
  • A/C Circuits
  • +
      +
    • Capacitor: this shows a + capacitor connected to an alternating voltage source.
    • +
    • Inductor
    • +
    • Caps of Various + Capacitances: + shows the response of three different capacitors to the same frequency.
    • +
    • Caps w/ Various + Frequencies: + shows the response of three equal capacitors to three different + frequencies; the higher the frequency, the larger the current.
    • +
    • Inductors of Various + Inductances: + shows the response of three different inductors to the same frequency.
    • +
    • Inductors w/ Various + Frequencies: + shows the response of three equal inductors to three different + frequencies: the lower the frequency, the larger the current.
    • +
    • Impedances of Same + Magnitude: + shows a capacitor, an inductor, and a resistor that have impedances of + equal magnitude (but different phase).  + The peak current is the same in all three cases.
    • +
    • Series + Resonance: + shows three identical LRC circuits being driven by three different + frequencies.  The middle one is + being driven at the resonance frequency (shown in the lower right corner + of the screen as “res.f”).  The top + one is being driven at a slightly lower frequency, and the bottom one has + a slightly higher frequency.  The + peak voltage in the middle circuit is very high because it is resonating + with the source.
    • +
    • Parallel + Resonance: + these three circuits have the inductor, resistor, and capacitor in + parallel instead of series.  In this + case, the middle circuit is being driven at resonance, which causes the + current there to be lower than in the other two cases (because the + impedance of the circuit is highest at resonance).
    • +
    +
  • Passive Filters
  • +
      +
    • High-Pass + Filter (RC).  The original signal is shown at the lower left, and + the filtered signal (with the low-frequency part removed) is shown to the + right.  The breakpoint (-3 dB + point) is shown at the lower right, as “f.3db”.
    • +
    • Low-Pass + Filter (RC).
    • +
    • High-Pass Filter (RL).  This high-pass filter uses an inductor + rather than a capacitor.
    • +
    • Low-Pass Filter (RL).
    • +
    • Band-Pass Filter: this filter passes a + range of frequencies close to the resonance frequency (shown at the lower + right, as “res.f”).
    • +
    • Notch Filter: Also known as a + band-stop filter, this circuit filters out a range of frequencies close + to the resonance frequency.
    • +
    • Twin-T Filter: This filter does a + very good job of filtering out 60 Hz signals.
    • +
    • Crossover:  A set of three filters; the top one + passes low frequencies, the middle one passes midrange, and the bottom + one passes high frequencies.
    • +
    +
  • Other Passive Circuits
  • +
      +
    • Series/Parallel
    • +
        +
      1. Inductors in Series.  The circuit at left is equivalent to + the circuit at right.
      2. +
      3. Inductors in Parallel.
      4. +
      5. Caps in Series.
      6. +
      7. Caps in Parallel.
      8. +
      +
    • Transformers
    • +
        +
      1. Transformer: + A + basic transformer circuit with an equal number of windings in each coil.
      2. +
      3. Transformer w/ DC: Here we try to pass a + DC current through a transformer.
      4. +
      5. Step-Up Transformer: Here we step 10 V up + to 100 V.
      6. +
      7. Step-Down Transformer: + Here + we step 120 V down to 12 V.
      8. +
      +
    • 3-Way Light Switches: shows how a light + bulb can be turned on and off from two locations.
    • +
    • 3- and 4-Way Light + Switches: + shows how a light bulb can be turned on and off from three locations.
    • +
    • Differentiator: shows how a capacitor + can act as a differentiator, reflecting changes in voltage.
    • +
    • Wheatstone Bridge: shows a balanced + Wheatstone bridge.  If the bridge + were not balanced, current would be flowing across from one leg to the other.
    • +
    • Critically Damped LRC.
    • +
    • Current Source: shows a source that + keeps the current through the circuit constant regardless of the switch + positions.
    • +
    • Inductive Kickback: In this circuit, we + have a switch that controls the supply of current to an inductor.  An inductor resists any changes in + current.  If you open the switch, + the inductor tries to maintain the same current; it does this by charging + the capacitance between the contacts of the switch.  (Any two wires in close proximity have + some parasitic capacitance between them.)  + There is a small capacitor (much larger than the actual value) + across the switch terminals to simulate this.  When you open the switch, the voltage + goes very high; in real life, this would cause arcing.
    • +
    • Blocking Inductive + Kickback: + shows how inductive kickback can be blocked with a “snubber” circuit.
      +
      +
    • +
    • Power + Factor: This + circuit shows an inductor being driven by an AC voltage.  The colors indicate power consumption; + red means that a component is consuming power, and green means that the + component is contributing power.  + The left side of the circuit represents the power company’s side, + and the right side represents a factory (with a large induction motor).
      +
      + The highly inductive load is causing the power company to work a lot + harder than normal for a given amount of power delivered.  The graph on the left indicates the + power lost in the power company’s equipment (the resistor at top + left).  The graph in the middle is + the power delivered to the factory.  + The graph on the right is the power delivered to the inductor (and + then returned, causing the time average of power delivered to be zero).
      +
      + Even though a peak power of 40 mW is being delivered to the factory, 200 + mW is being dissipated in the power company’s wires.  This is why power companies charge + extra for inductive loads.
      +
      +
    • +
    • Power + Factor Correction: Here a capacitor has been added to the circuit, + causing far less energy to be wasted in the power company’s wires (aside + from an initial spike to charge the capacitor).
    • +
    • Resistor Grid: shows current flowing + in a two-dimensional grid of resistors.
    • +
    • Resistor Grid 2.
    • +
    • Coupled LC's
    • +
    +
+ +

o   +LC Modes(2): Shows both modes of two +coupled LC circuits.

+ +

o   +Weak Coupling.

+ +

o   +LC Modes(3): Shows all 3 modes of 3 +coupled LC circuits.

+ +

o   LC +Ladder: This circuit is a simple model of a transmission line.  A pulse propagates down the length of the +ladder like a wave.  The resistor at the +end has a value equal to the characteristic impedance of the ladder (determined +by the ratio of L to C), which causes the wave to be absorbed.  A larger resistance or an open circuit will +cause the wave to be reflected; a smaller resistance or a short will cause the +wave to be reflected negatively.  See +the Feynman Lectures 22-6, 7.

+ +
    +
      +
    • Phase-Sequence Network: This circuit generates + a series of sine waves with a phase difference of 90°.
    • +
    • Lissajous Figures: + Just + for fun.
    • +
    +
  • Diodes
  • +
      +
    • Half-Wave Rectifier: This circuit removes + the negative part of an input waveform.
    • +
    • Full-Wave Rectifier: This circuit replaces + a waveform with its absolute value.
    • +
    • Full-Wave Rectifier w/ + Filter: + This circuit smoothes out the rectified waveform, doing a pretty good job + of converting AC to DC.
    • +
    • Diode I/V Curve: This demonstrates the + response of a diode to an applied voltage.  The voltage source generates a sawtooth + wave, which starts out at –800 mV and slowly rises to 800 mV, and then + immediately drops back down again.
    • +
    • Diode Limiter.
    • +
    • DC Restoration.  This takes an AC signal and adds a DC + offset, making it a positive signal.
    • +
    • Blocking Inductive + Kickback: + shows how inductive kickback can be blocked with a diode.
    • +
    • Spike Generator.
    • +
    • Voltage Multipliers
    • +
        +
      1. Voltage Doubler: Doubles the voltage + in the AC input signal (minus two diode drops), and turns it into DC.
      2. +
      3. Voltage Doubler 2
      4. +
      5. Voltage Tripler
      6. +
      7. Voltage Quadrupler
      8. +
      +
    • AM + Detector: + This is a “crystal radio”, an AM radio receiver with no amplifier.  The raw antenna feed is shown in the + first scope slot in the lower left.  + The inductor and the capacitor C1 are tuned to 3 kHz, the + frequency shown in the lower right as “res.f”.  This picks up the carrier wave shown in + the middle scope slot.  A diode is + used to rectify this, and the C2 capacitor smoothes it out to generate + the audio signal in the last scope slot (which is simply a 12 Hz sine + wave in this example).  By + experimenting with the value of C1’s capacitance, you can pick up two + other “stations” at 2.71 kHz and 2.43 kHz.
    • +
    • Triangle-to-Sine + Converter
    • +
    +
  • Transistors
  • +
      +
    • Switch.
    • +
    • Emitter + Follower.
    • +
    • Astable + Multivibrator: + A simple oscillator.  The applet + has trouble simulating this circuit, so there might be a slight delay + every time one of the transistors switches on.
    • +
    • Bistable + Multivibrator (Flip Flop): This circuit has two states; use the set/reset + switches to toggle between them.
    • +
    • Monostable + Multivibrator (One-Shot): When you hit the switch, the output will go to 1.7 V + for a short time, and then drop back down.
    • +
    • Common-Emitter + Amplifier: + This circuit amplifies the voltage of the input signal by about 10 times.
    • +
    • Unity-Gain Phase + Splitter: Outputs + two signals 180° out of phase from each other.
    • +
    • Schmitt + Trigger.
    • +
    • Current Source: The current is the + same regardless of the switch position.
    • +
    • Current Source Ramp: Uses a current source + to generate a ramp waveform every time you hit the switch.
    • +
    • Current Mirror: The current on the + right is the same as the current on the left, regardless of the position + of the right switch.
    • +
    • Differential Amplifiers
    • +
        +
      1. Differential Input: This circuit subtracts + the first signal from the second and amplifies it.
      2. +
      3. Common-Mode Input: This shows a + differential amplifier with two equal inputs.  The output should be a constant value, + but instead the input waveforms make it through to the output + (attenuated rather than amplified).  + (When both inputs change together, that is called “common-mode + input”; the “common-mode rejection ratio” is the ability of a + differential amplifier to ignore common-mode signals and amplify only + the difference between the inputs.)
      4. +
      5. Common-Mode w/Current + Source: This + is an improved differential amplifier that uses a current source as a + load.  The common-mode rejection + ratio is very good; the circuit amplifies the small differences between + the two inputs, and ignores the common-mode signal.
      6. +
      +
    • Push-Pull Follower: This is another type of + emitter follower.
    • +
    • Oscillators
    • +
        +
      1. Colpitts Oscillator
      2. +
      3. Hartley Oscillator
      4. +
      5. Emitter-Coupled LC + Oscillator
      6. +
      +
    +
  • JFETs
  • +
      +
    • JFET Current Source
    • +
    • JFET Follower: This is like an emitter + follower, except that the output is 3V more positive than the input.
    • +
    • JFET Follower w/zero + offset
    • +
    • Common-Source + Amplifier
    • +
    • Volume Control: Here the JFET is used + like a variable resistor.
    • +
    +
  • MOSFETs
  • +
      +
    • CMOS + Inverter: + The white “H” is a logic input.  + Click on it to toggle its state.  + “H” means “high” (5 V) and “L” means “low” (0 V).  The output of the inverter is shown at + right, and is the opposite of the input.  + In this (idealized) simulation, the CMOS inverter draws no current + at all.
    • +
    • CMOS Inverter + (w/capacitance): + In reality, there are two reasons that CMOS gates draw current.  This circuit demonstrates the first + reason: capacitance between the MOSFET gate and its source and + drain.  It requires current to charge + this capacitance, which consumes power.  + It also causes a short delay when changing state.
    • +
    • CMOS Inverter (slow + transition): + The other reason that CMOS gates draw current is that both transistors + will conduct at the same time when the input is halfway between high and + low.  This causes a current spike + when the input is in transition.  + In this circuit, there is a low-pass filter on the input which + causes it to transition slowly, so you can see the spike.
    • +
    • CMOS Transmission Gate: This circuit will + pass any signal, even an analog signal (as long as it stays between 0 and + 5 V) when the gate input is “H”.  + When it’s “L”, then the gate acts as an open circuit.
    • +
    • CMOS Multiplexer: This circuit uses two + transmission gates to select one of two inputs.  If the logic input is “H”, then the + output is a 40Hz triangle wave.  If + it’s “L”, then the output is a 80Hz sine wave.
    • +
    • Sample-and-Hold: Click and hold the + “sample” button to sample the input.  + When you release the button, the output level will be held + constant.
    • +
    • Delayed Buffer: This circuit delays + any changes in its input for 15 microseconds.
    • +
    • Leading-Edge Detector
    • +
    • Switchable Filter: Click the “L” to + select from two different low-pass filters.
    • +
    • Voltage Inverter
    • +
    • Inverter Amplifier: This shows how a CMOS + inverter can be used as an amplifier.
    • +
    • Inverter Oscillator
    • +
    +
  • Op-Amps
  • +
      +
    • Amplifiers
    • +
        +
      1. Inverting + Amplifier: + This one has a gain of –3.
      2. +
      3. Non-Inverting + Amplifier
      4. +
      5. Follower
      6. +
      7. Differential + Amplifier
      8. +
      9. Summing + Amplifier
      10. +
      11. Log Amplifier: output is the + (inverted) log of the input
      12. +
      13. Class D + Amplifier
      14. +
      +
    • Oscillators
    • +
        +
      1. Relaxation + Oscillator
      2. +
      3. Phase-Shift + Oscillator
      4. +
      5. Triangle + Wave Generator
      6. +
      7. Sine + Wave Generator
      8. +
      9. Sawtooth Wave + Generator
      10. +
      11. Voltage-Controlled + Oscillator: Here + the frequency of oscillation depends on the input (shown in the scope on + the left).  The oscillator outputs + a square wave and a triangle wave.
      12. +
      13. Rossler Circuit
      14. +
      +
    • Half-Wave Rectifier: An active rectifier + that works on voltages smaller than a diode drop.
    • +
    • Full-Wave Rectifier
    • +
    • Peak Detector: This circuit outputs + the peak voltage of the input.  + Whenever the input voltage is higher than the output, the output + will be adjusted upward to match.  + Press the switch marked “reset” to reset the peak voltage back to 0.
    • +
    • Integrator
    • +
    • Differentiator
    • +
    • Schmitt + Trigger
    • +
    • Negative Impedance + Converter: Converts + the resistor to a “negative” resistor.  + In the first graph, note that the current is 180° out of phase + with the voltage.
    • +
    • Gyrator: The top circuit + simulates the bottom circuit without using an inductor.
    • +
    • Capacitance Multiplier: This circuit allows + you to simulate a large capacitor with a smaller one.  The effective capacitance of the top + circuit is C1 x (R1/R2), and the effective resistance is R2.
    • +
    • Howland Current Source
    • +
    • I-to-V Converter: The output voltage + depends on the input current, which you can adjust with the switches.
    • +
    • 741 + Internals: + The implementation of a 741 op-amp.
    • +
    +
  • 555 + Timer Chip
  • +
      +
    • Square Wave Generator
    • +
    • Internals: The implementation of + a 555 chip, acting as a square wave oscillator
    • +
    • Sawtooth Oscillator
    • +
    • Low-duty-cycle Oscillator: produces short + pulses.
    • +
    • Monostable + Multivibrator: + This is a one-shot circuit that will produce a timed pulse when you click + the “H”.
    • +
    • Pulse Position + Modulator: Produces + pulses whose width is proportional to the input voltage.
    • +
    • Schmitt Trigger
    • +
    • Missing Pulse Detector: + Setting + the logic input low will turn off the square wave input.  The missing pulse detector will detect + the missing input and bring the output high.
    • +
    +
  • Active Filters
  • +
      +
    • VCVS Low-Pass Filter: An active Butterworth + low-pass filter.
    • +
    • VCVS High-Pass Filter
    • +
    • Switched-Capacitor + Filter: + A digital filter, implemented using capacitors and analog switches.
    • +
    +
  • Logic Families
  • +
      +
    • RTL Logic Family
    • +
        +
      1. RTL + Inverter: + The white “H” is a logic input.  + Click on it to toggle its state.  + “H” means “high” (3.6 V) and “L” means “low” (0 V).  The output of the inverter is shown at + right, and is the opposite of the input.
      2. +
      3. RTL + NOR: + The three inputs are at the bottom, and the output is to the right.  The output is “L” if any of the inputs + are “H”.  Otherwise it’s “H”.
      4. +
      5. RTL NAND: The output is “H” + unless all three inputs are “H”, and then it’s “L”.
      6. +
      +
    • DTL Logic Family
    • +
        +
      1. DTL + Inverter
      2. +
      3. DTL + NAND
      4. +
      5. DTL + NOR
      6. +
      +
    • TTL Logic Family
    • +
        +
      1. TTL + Inverter
      2. +
      3. TTL NAND
      4. +
      5. TTL + NOR
      6. +
      +
    • NMOS Logic Family
    • +
        +
      1. NMOS Inverter
      2. +
      3. NMOS Inverter 2: This uses a second + MOSFET instead of a resistor, to save space on a chip.
      4. +
      5. NMOS NAND
      6. +
      +
    • CMOS + Logic Family
    • +
        +
      1. CMOS Inverter
      2. +
      3. CMOS NAND
      4. +
      5. CMOS NOR
      6. +
      7. CMOS XOR
      8. +
      9. CMOS + Flip-Flop (or latch): This circuit consists of two CMOS NAND gates.
      10. +
      11. CMOS + Master-Slave Flip-Flop
      12. +
      +
    • ECL + Logic Family
    • +
        +
      1. ECL NOR/OR
      2. +
      +
    • Ternary: This demonstrates + three-valued logic, where the inputs can be 0, 1, or 2 instead of H and + L.  This logic is implemented using + MOSFETs; the threshold + voltage of each one is shown.
    • +
        +
      1. CGAND: the output is 2-X + where X is the minimum of the two inputs.
      2. +
      3. CGOR: the output is 2-X + where X is the maximum of the two inputs.
      4. +
      5. Complement.
      6. +
      7. F211: 0 becomes 2, 1 becomes + 1, 2 becomes 1.
      8. +
      9. F220
      10. +
      11. F221
      12. +
      +
    +
  • Combinational Logic
  • +
      +
    • Exclusive OR + (XOR) +
    • +
    • Half Adder
    • +
    • Full Adder
    • +
    • 1-of-4 Decoder
    • +
    • 2-to-1 + Mux: This + multiplexer uses two tri-state buffers connected to the output.
    • +
    • Majority Logic: The output is high if a + majority of the inputs are high.
    • +
    • 2-Bit Comparator: Tells you if the + two-bit input A is greater than, less than, or equal to the two-bit input + B.
    • +
    • 7-Segment LED Decoder
    • +
    +
  • Sequential Logic
  • + +
  • Analog/Digital
  • +
      +
    • Flash + ADC: + This is a direct-conversion, or “flash” analog-to-digital converter.
    • +
    • Delta-Sigma + ADC
    • +
    • Half-Flash + (Subranging) ADC: Also known as a pipeline ADC.  The first stage converts the input + voltage to a four-bit digital value.  + Then, a DAC converts these four bits to analog, and then a + comparator calculates the difference between this and the input voltage.  Another ADC converts this to digital, + giving a total of eight bits.
    • +
    • Binary-Weighted + DAC:  Converts a four-bit binary number to a + negative voltage.
    • +
    • R-2R + Ladder DAC
    • +
    • Switch Tree DAC
    • +
    • Digital Sine Wave
    • +
    +
  • Phase-Locked + Loops
  • +
      +
    • XOR Phase Detector: Shows an XOR gate + being used as a type I phase detector.  + The output is high whenever the two input signals are not in + phase.
    • +
    • Type I PLL: This phase-locked loop + circuit consists of an XOR gate (the phase detector), a low-pass filter + (the resistor and capacitor), a follower (the op-amp), and a voltage-controlled + oscillator chip.  The + voltage-controlled oscillator outputs a frequency proportional to the + input voltage.  After the PLL + circuit locks onto the input frequency, the output frequency will be the + same as the input frequency (with a small phase delay).
    • +
    • Phase Comparator (Type + II): Shows + a more sophisticated phase detector, which has no output when the inputs + are in phase, but outputs high (5V) when input 1 is leading input 2, and + low (0V) when input 2 is leading input 1.  + The phase comparator and VCO in this applet are based on the 4046 chip.
    • +
    • Phase Comparator + Internals.
    • +
    • Type II PLL: Shows a phase-locked + loop with a type II phase detector.  + If you adjust the input frequency, the output should lock onto it + in a short time.
    • +
    • Type II PLL (fast): Just a faster + simulation of the type II PLL.
    • +
    • Frequency Doubler
    • +
    +
  • Transmission + Lines
  • +
      +
    • Simple TL: A properly terminated + transmission line, showing the delay as the signal travels down the line.
    • +
    • Standing Wave: A standing wave on a + shorted transmission line.
    • +
    • Termination: The top line is + terminated properly, but the others are not, and so the incoming wave is + reflected.
    • +
    • Mismatched lines: Shows reflections + caused by the middle line having a different impedance than the other two + lines.
    • +
    • Mismatched lines 2: Shows a standing wave + on the first line, caused by the second line having a different + impedance.
    • +
    +
+

 

+

To +add a new component to the circuit, click the right mouse button on an unused +area of the window.  This will bring up a +menu that allows you to select what component you want.  Then click where you want the first terminal +of the component, and drag to where you want the other terminal.  The menu items allow you to create:

+ +

·      +wires

+ +

·      +resistors; you can adjust the resistance after +creating the resistor by clicking the right mouse button and selecting “Edit”

+ +

·      +capacitors; you can adjust the capacitance using +“Edit”

+ +

·      +inductors, switches, transistors, etc.

+ +

·      +voltage sources, in either 1-terminal or +2-terminal varieties.  The 1-terminal +versions use ground as the other terminal.  +By clicking the right mouse button and selecting “Edit”, you can modify +the voltage and the waveform of the voltage source, changing it to DC, AC (sine +wave), square wave, triangle, sawtooth, or pulse.  If it’s not a DC source, you can also change +the frequency and the DC offset.

+ +

·      +op-amps, with power supply limits of –15V and +15V assumed (not shown).  The limits can +be adjusted using “Edit”.

+ +

·      +text labels, which you can modify with the +“Edit” dialog

+ +

·      +test points; these have no effect on the +circuit, but if you select them and use the right mouse menu item “View in +Scope”, you can view the voltage difference between the terminals.

+ +

Also in the “Other” submenu, there are some items that allow you to click +and drag sections of the circuit around.

+ +

You can drag the circuit around by clicking and dragging with the Alt key +held down.  Zoom in and out with the +mouse wheel or by using the zoom commands in the Edit menu.

+ +

To edit one of the scope views, click the right mouse button on it to view a +menu.  The menu items allow you to remove +a scope view, speed up or slow down the display, adjust the scale, select what +value(s) you want to view, etc.

+ +

The time step size is the time between iterations of the simulator.  Smaller time steps make the simulation more +accurate, but slower.  A smaller time +step size is required to simulate high frequencies.  A larger time step size may be appropriate +for circuits that run in real time.  Use Edit->Other Options… to change the +time step size.

+ +

File->Recover Auto-Save lets +you recover a circuit lost when the simulator window was closed.  If this doesn’t work, try Edit->Undo instead.

+ +

File->Find DC Operating Point +is useful with circuits that take a long time to reach a useful state.  This option instantly charges all the +capacitors.

+ +

Here are some errors you might encounter when using the simulator:

+ +

·      Voltage +source loop with no resistance! – this means one of the voltage sources in +your circuit is shorted.  Make sure there +is some resistance across every voltage source.

+ +

·      Capacitor +loop with no resistance! – it’s not allowed to have any current loops +containing capacitors but no resistance.  +For example, capacitors connected in parallel are not allowed; you must +put a resistor in series with them.  +Shorted capacitors are allowed.

+ +

·      Singular +matrix! – this means that your circuit is inconsistent (two different +voltage sources connected to each other), or that the voltage at some point is +undefined.  It might mean that some +component’s terminals are unconnected; for example, if you create an op-amp but +haven’t connected anything to it yet, you will get this error. 

+ +

·      Convergence +failed! – this means the simulator can’t figure out what the state of the +circuit should be.  Just click Reset +and hopefully that should fix it.  Your +circuit might be too complicated, but this happens sometimes even with the +examples.

+ +

·      Transmission +line delay too large! – the transmission line delay is too large compared +to the timestep of the simulator, so too much memory would be required.  Make the delay smaller.

+ +

·      Need +to ground transmission line! – the bottom two wires of a transmission line +must always be grounded in this simulator.

+ +

Click here to go to the applet. +

+ +

+ +


+java@falstad.com

+ +

 

+ +
+ + + + diff --git a/font/LICENSE.txt b/font/LICENSE.txt new file mode 100644 index 0000000..8e1d29a --- /dev/null +++ b/font/LICENSE.txt @@ -0,0 +1,51 @@ +Font license info + + +## Font Awesome + + Copyright (C) 2016 by Dave Gandy + + Author: Dave Gandy + License: SIL (http://scripts.sil.org/OFL) + Homepage: http://fortawesome.github.com/Font-Awesome/ + + +## Entypo + + Copyright (C) 2012 by Daniel Bruce + + Author: Daniel Bruce + License: SIL (http://scripts.sil.org/OFL) + Homepage: http://www.entypo.com + + +## Modern Pictograms + + Copyright (c) 2012 by John Caserta. All rights reserved. + + Author: John Caserta + License: SIL (http://scripts.sil.org/OFL) + Homepage: http://thedesignoffice.org/project/modern-pictograms/ + + +## Elusive + + Copyright (C) 2013 by Aristeides Stathopoulos + + Author: Aristeides Stathopoulos + License: SIL (http://scripts.sil.org/OFL) + Homepage: http://aristeides.com/ + + + +Icon license info + + Authors: + Creaticca Creative Agency (https://www.flaticon.com/authors/creaticca-creative-agency) from www.flaticon.com + Pixel perfect (https://www.flaticon.com/authors/pixel-perfect) from www.flaticon.com + Freepik (https://www.flaticon.com/authors/freepik) from www.flaticon.com + License: Flaticon License (https://www.freepikcompany.com/legal#nav-flaticon). + + Author: Google (https://www.flaticon.com/authors/google) from www.flaticon.com + License: CC 3.0 BY (https://creativecommons.org/licenses/by/3.0/). + diff --git a/font/config.json b/font/config.json new file mode 100644 index 0000000..86a1c0a --- /dev/null +++ b/font/config.json @@ -0,0 +1,294 @@ +{ + "name": "", + "css_prefix_text": "cirjsicon-", + "css_use_suffix": false, + "hinting": true, + "units_per_em": 1000, + "ascent": 850, + "glyphs": [ + { + "uid": "6533bdc16ab201eb3f3b27ce989cab33", + "css": "folder", + "code": 61717, + "src": "fontawesome" + }, + { + "uid": "5408be43f7c42bccee419c6be53fdef5", + "css": "doc-text", + "code": 61686, + "src": "fontawesome" + }, + { + "uid": "b22fdf6cbaa9c54fbb0bc9abb0ed4098", + "css": "dropbox", + "code": 62256, + "src": "entypo" + }, + { + "uid": "f4445feb55521283572ee88bc304f928", + "css": "floppy", + "code": 59392, + "src": "fontawesome" + }, + { + "uid": "895405dfac8a3b7b2f23b183c6608ee6", + "css": "export", + "code": 59395, + "src": "fontawesome" + }, + { + "uid": "1cb3652ffb3492344fa3a675c3ff3290", + "css": "microchip", + "code": 62171, + "src": "fontawesome" + }, + { + "uid": "ff70f7b3228702e0d590e60ed3b90bea", + "css": "magic", + "code": 61648, + "src": "fontawesome" + }, + { + "uid": "89eb512cb82a1c3fe83cb16134f9876c", + "css": "back-in-time", + "code": 59393, + "src": "entypo" + }, + { + "uid": "7ssl5z5jrhu13tb13cd3gb4bdfkzbfzw", + "css": "print", + "code": 59396, + "src": "modernpics" + }, + { + "uid": "7e4164950ffa4990961958b2d6318658", + "css": "info-circled", + "code": 59401, + "src": "entypo" + }, + { + "uid": "f9c3205df26e7778abac86183aefdc99", + "css": "ccw", + "code": 59394, + "src": "fontawesome" + }, + { + "uid": "bc71f4c6e53394d5ba46b063040014f1", + "css": "cw", + "code": 59397, + "src": "fontawesome" + }, + { + "uid": "8772331a9fec983cdb5d72902a6f9e0e", + "css": "scissors", + "code": 59398, + "src": "fontawesome" + }, + { + "uid": "c8585e1e5b0467f28b70bce765d5840c", + "css": "copy", + "code": 61637, + "src": "fontawesome" + }, + { + "uid": "b429436ec5a518c78479d44ef18dbd60", + "css": "paste", + "code": 61674, + "src": "fontawesome" + }, + { + "uid": "6846d155ad5bda456569df81f3057faa", + "css": "clone", + "code": 62029, + "src": "fontawesome" + }, + { + "uid": "9f23eb7958809a08586817a99f6a6feb", + "css": "select-all", + "code": 59408, + "src": "custom_icons", + "selected": true, + "svg": { + "path": "M983.3 483.3H516.7V16.7C516.7 7.5 509.2 0 500 0S483.3 7.5 483.3 16.7V483.3H16.7C7.4 483.3 0 490.8 0 500S7.4 516.7 16.7 516.7H483.3V983.3C483.3 992.5 490.8 1000 500 1000S516.7 992.5 516.7 983.3V516.7H983.3C992.5 516.7 1000 509.2 1000 500S992.6 483.3 983.3 483.3ZM750 550H566.7C557.4 550 550 557.5 550 566.7V750C550 759.2 557.4 766.7 566.7 766.7H750C759.2 766.7 766.7 759.2 766.7 750V566.7C766.7 557.5 759.2 550 750 550ZM433.3 550H250C240.8 550 233.3 557.5 233.3 566.7V750C233.3 759.2 240.8 766.7 250 766.7H433.3C442.6 766.7 450 759.2 450 750V566.7C450 557.5 442.6 550 433.3 550ZM433.3 233.3H250C240.8 233.3 233.3 240.8 233.3 250V433.3C233.3 442.5 240.8 450 250 450H433.3C442.6 450 450 442.5 450 433.3V250C450 240.8 442.6 233.3 433.3 233.3ZM750 233.3H566.7C557.4 233.3 550 240.8 550 250V433.3C550 442.5 557.4 450 566.7 450H750C759.2 450 766.7 442.5 766.7 433.3V250C766.7 240.8 759.2 233.3 750 233.3Z", + "width": 1000 + }, + "search": [ + "select-all" + ] + }, + { + "uid": "0b2b66e526028a6972d51a6f10281b4b", + "css": "zoom-in", + "code": 59402, + "src": "fontawesome" + }, + { + "uid": "d25d10efa900f529ad1d275657cfd30e", + "css": "zoom-out", + "code": 59403, + "src": "fontawesome" + }, + { + "uid": "9cbd6e00a68a821d63f64db616672087", + "css": "zoom-11", + "code": 59399, + "src": "custom_icons", + "selected": true, + "svg": { + "path": "M405.2 0.4C345.8 4.5 291.2 19.1 239.8 44.6 112.7 107.4 24.2 229.4 4.2 369.5 0.7 393.8 0.3 400.3 0.3 432.1 0.3 463.3 0.7 469.7 3.9 493 25.4 648.3 131.2 780.9 278.2 836.4 316.1 850.8 354.4 859.3 398.2 863.1 410.4 864.2 452.6 864.2 464.8 863.1 503.2 859.7 534.3 853.5 568.2 842.2 609.8 828.4 645.6 810.4 680.7 785.8L688.2 780.5 790.1 882.9C864.5 957.6 893.3 986.2 896.7 988.5 902.6 992.6 910.5 996.3 917.1 998.1 924.3 1000.1 939.4 1000.6 946.8 999.1 971.3 994.1 989.9 977.1 997.2 952.9 998.8 947.6 999 946.4 999 935.3 999 924.9 998.8 922.9 997.6 918.1 995.8 911.5 991.5 902.5 987.8 897.1 986.2 895 939 847 882.7 790.5L780.5 687.8 782.5 685.3C783.5 683.9 787.3 678.5 790.8 673.2 831.8 612.3 855.7 544.1 862.8 468.6 864.1 453.8 864.3 412.3 863.1 398.2 859.8 360.6 853.5 329.3 842.7 296.2 815 211.7 761.5 137.6 689.5 84.2 633.2 42.5 567.1 15.1 497.4 4.5 475.5 1.2 465.2 0.5 436.3 0.3 421.2 0.3 407.2 0.3 405.2 0.4ZM465.1 132.2C519.6 138.6 569.3 158.2 612.4 190.1 634.1 206.2 658.1 230.2 674.1 251.9 702.9 290.6 722 335.7 729.8 382.8 732.8 401.7 733.4 408.5 733.4 431.8 733.4 454.5 733 459.2 730.5 476.6 723.2 525.7 703.8 572.3 674.1 612.4 658.1 634.1 634 658.1 612.4 674.1 539.8 727.9 448.1 746.4 360.1 725.1 321.6 715.7 284.2 698.1 251.9 674.1 235.3 661.8 213.8 641.5 200.8 625.8 162.2 579.3 139.4 525.9 132.1 464.5 130.5 450.8 130.5 413.5 132.1 399.8 136.5 363.1 145.7 331.3 161.3 299.3 176.1 269 194.6 243.3 218.9 218.9 249 188.9 282.3 166.9 321.4 151.5 350.3 140.1 377.5 134 412.3 131 419.8 130.3 456.6 131.2 465.1 132.2ZM256.2 293.9C242.4 303.8 231.1 312.2 231.1 312.6 231.1 313.1 233.6 323.2 236.6 335.3 240.7 351.1 242.4 357.2 243 357 243.5 356.8 250.1 351.7 257.6 345.8L271.4 334.8 271.4 427 271.4 519.2 261.2 519.2 251 519.2 251 541 251 562.7 295.5 562.7 339.9 562.7 339.9 541 339.9 519.2 331.3 519.2 322.7 519.2 322.7 397.6 322.7 275.9 302 275.9 281.4 275.9 256.2 293.9ZM550.4 293.8C536.8 303.5 525.5 311.7 525.3 311.9 524.8 312.3 535.8 356 536.6 356.9 536.8 357.2 543 352.7 550.4 346.9 557.7 341.1 564.1 336.2 564.5 335.9 565.1 335.5 565.3 354 565.3 427.3L565.3 519.2 556 519.2 546.7 519.2 546.7 541 546.7 562.7 591.5 562.7 636.4 562.7 636.4 541 636.4 519.2 626.8 519.2 617.2 519.2 617.2 397.6 617.2 275.9 596.2 276 575.2 276 550.4 293.8ZM431.1 351.7C419 354.5 409.7 363.8 406.9 375.9 404.9 384.3 405.9 393.9 409.5 401.3 411.8 406 417.9 412.3 422.4 414.7 432.4 420 444.7 420 454.7 414.7 459.3 412.3 465.4 406 467.6 401.2 475.2 385.3 470.1 364.7 456.6 356 449.7 351.7 439.2 349.9 431.1 351.7ZM432.1 495.6C423.4 497.1 414.2 503.8 409.9 511.9 402.8 525.4 405.2 543.4 415.4 553.6 421.7 559.9 428.9 562.7 438.7 562.7 454.1 562.7 466.1 553.5 469.9 538.7 474.1 522.2 467 504.9 453.2 498.4 446.4 495.2 439.9 494.4 432.1 495.6Z", + "width": 999 + }, + "search": [ + "zoom-11" + ] + }, + { + "uid": "cf772d9d1eca484c9772a98045dd39d6", + "css": "target", + "code": 59400, + "src": "elusive" + }, + { + "uid": "543093d4fa683d47a9d0ae7e1c261359", + "css": "lines", + "code": 59406, + "src": "custom_icons", + "selected": true, + "svg": { + "path": "M944.4 0H55.6C24.9 0 0 24.9 0 55.6V166.7C0 197.3 24.9 222.2 55.6 222.2H944.4C975.1 222.2 1000 197.3 1000 166.7V55.6C1000 24.9 975.1 0 944.4 0ZM944.4 0M944.4 333.3H55.6C24.9 333.3 0 358.3 0 388.9V500C0 530.6 24.9 555.6 55.6 555.6H944.4C975.1 555.6 1000 530.6 1000 500V388.9C1000 358.3 975.1 333.3 944.4 333.3ZM944.4 333.3M944.4 666.7H55.6C24.9 666.7 0 691.6 0 722.2V833.3C0 863.9 24.9 888.9 55.6 888.9H944.4C975.1 888.9 1000 863.9 1000 833.3V722.2C1000 691.6 975.1 666.7 944.4 666.7ZM944.4 666.7", + "width": 1000 + }, + "search": [ + "menu" + ] + }, + { + "uid": "0751e9283287ec810f337df91f232374", + "css": "columns", + "code": 59405, + "src": "custom_icons", + "selected": true, + "svg": { + "path": "M210.5 131.6H52.6C23.7 131.6 0 155.3 0 184.2V815.8C0 844.7 23.7 868.4 52.6 868.4H210.5C239.5 868.4 263.2 844.7 263.2 815.8V184.2C263.2 155.3 239.5 131.6 210.5 131.6ZM578.9 131.6H421.1C392.1 131.6 368.4 155.3 368.4 184.2V815.8C368.4 844.7 392.1 868.4 421.1 868.4H578.9C607.9 868.4 631.6 844.7 631.6 815.8V184.2C631.6 155.3 607.9 131.6 578.9 131.6ZM947.4 131.6H789.5C760.5 131.6 736.8 155.3 736.8 184.2V815.8C736.8 844.7 760.5 868.4 789.5 868.4H947.4C976.3 868.4 1000 844.7 1000 815.8V184.2C1000 155.3 976.3 131.6 947.4 131.6Z", + "width": 1000 + }, + "search": [ + "columns-(1)" + ] + }, + { + "uid": "7aa8cc552d9d6d19815750fc339cf090", + "css": "object-group", + "code": 62023, + "src": "fontawesome" + }, + { + "uid": "d4edf8563d5cb3b5f654808aa4fe438a", + "css": "object-ungroup", + "code": 62024, + "src": "fontawesome" + }, + { + "uid": "7184d8171b6a9b18eabbace94cca21db", + "css": "chart-line", + "code": 59404, + "src": "entypo" + }, + { + "uid": "922ab2cb66943a83de969990289ef1dc", + "css": "docsx", + "code": 59407, + "src": "entypo" + }, + { + "uid": "b013f6403e5ab0326614e68d1850fd6b", + "css": "resize-full-alt", + "code": 61618, + "src": "fontawesome" + }, + { + "uid": "744a71fe4b5ab7c4f4b7cd598e9bf75a", + "css": "window", + "code": 59409, + "src": "entypo" + }, + { + "uid": "2d60c785d26bf9c685424dd64248aaee", + "css": "none", + "code": 59410, + "src": "custom_icons", + "selected": true, + "svg": { + "path": "", + "width": 1000 + }, + "search": [ + "none" + ] + }, + { + "uid": "9e0404ba55575a540164db9a5ad511df", + "css": "doc-new", + "code": 59411, + "src": "elusive" + }, + { + "uid": "9dd9e835aebe1060ba7190ad2b2ed951", + "css": "search", + "code": 59412, + "src": "fontawesome" + }, + { + "uid": "3c961c1a8d874815856fc6637dc5a13c", + "css": "image", + "code": 61893, + "src": "fontawesome" + }, + { + "uid": "d3b3f17bc3eb7cd809a07bbd4d178bee", + "css": "flip-y", + "code": 59413, + "src": "fontawesome" + }, + { + "uid": "3c73d058e4589b65a8d959c0fc8f153d", + "css": "flip-x", + "code": 59414, + "src": "fontawesome" + }, + { + "uid": "e594fc6e5870b4ab7e49f52571d52577", + "css": "flip-x-y", + "code": 59415, + "src": "fontawesome" + }, + { + "uid": "500f9108bd1bad36bbe1a4cef7828974", + "css": "folder", + "code": 59408, + "src": "custom_icons", + "selected": false, + "svg": { + "path": "M958.2 358.3H900V253.9C900 228.8 879.6 208.3 854.5 208.3H441.9L358.6 91.7H45.5C20.4 91.7 0 112.1 0 137.2V865.3L0.1 865.3C0 874.7 2.9 883.9 8.8 891.6 17 902.2 29.3 908.3 42.8 908.3H788.7C808 908.3 825 895.4 829.6 878.1L1000 410.8V407.9C1000 379.2 982.4 358.3 958.2 358.3ZM33.3 137.2C33.3 130.5 38.8 125 45.5 125H341.4L424.8 241.7H854.5C861.2 241.7 866.6 247.1 866.6 253.9V358.3H212.2C209.8 358.3 207.4 358.5 205.1 358.9 188.9 361.7 175.4 373.5 171.4 388.5L33.3 765V137.2ZM797.8 868.1C796.7 872.1 793 875 788.7 875H42.8C38.7 875 36.3 872.7 35.3 871.3 34.2 869.9 32.6 867 33.2 864.5L203.1 398.6C204.2 394.5 207.9 391.7 212.2 391.7H900 958.2C964.5 391.7 966.1 400.8 966.5 405.3L797.8 868.1Z", + "width": 1000 + }, + "search": [ + "folder" + ] + }, + { + "uid": "ff6c7d2e5cc1d08e8edb96d215b287de", + "css": "quote", + "code": 59409, + "src": "custom_icons", + "selected": false, + "svg": { + "path": "M261.6 292.5H226C231.4 252.9 253.3 251 263.3 250 273.4 249.1 281.1 240.7 281.1 230.6V172.1C281.1 166.8 278.9 161.6 275 157.9 271.1 154.3 265.8 152.4 260.5 152.6 198.7 156.1 125.1 187.3 125.1 316.1V417.7C125.1 434.7 138.9 448.5 155.9 448.5H261.6C278.5 448.5 292.3 434.7 292.3 417.7V323.3C292.3 306.3 278.5 292.5 261.6 292.5ZM253.3 409.4H164.2V316.1C164.2 226.2 204.2 201.1 242 194V214.6C215.9 222.5 185.8 246 185.8 312 185.8 322.8 194.5 331.6 205.3 331.6H253.3V409.4ZM868.7 500H773.6C757.3 500 744 513.3 744 529.6V614.6C744 631 757.3 644.3 773.6 644.3H803.4C798.4 676.2 780.9 677.8 771.8 678.6 761.8 679.5 754.1 687.9 754.1 698V750.7C754.1 756 756.3 761.2 760.2 764.8 763.8 768.3 768.6 770.2 773.6 770.2 774 770.2 774.3 770.2 774.7 770.2 831.1 767 898.3 738.5 898.3 621.1V529.6C898.3 513.3 885 500 868.7 500ZM859.3 621.1C859.3 698.7 825.8 721.7 793.1 728.6V713.9H793.1C817 706.2 843.8 684.3 843.8 624.7 843.8 613.9 835 605.2 824.2 605.2H783V539.1H859.3V621.1ZM687.3 500H592.2C575.9 500 562.6 513.3 562.6 529.6V614.6C562.6 631 575.9 644.3 592.2 644.3H622C617 676.2 599.6 677.8 590.5 678.6 580.4 679.5 572.7 687.9 572.7 698V750.7C572.7 756 574.9 761.2 578.8 764.8 582.5 768.3 587.3 770.2 592.3 770.2 592.6 770.2 593 770.2 593.3 770.2 649.8 767 717 738.5 717 621.1V529.6C717 513.3 703.7 500 687.3 500ZM677.9 621.1C677.9 698.7 644.4 721.7 611.8 728.6V713.9C635.6 706.2 662.4 684.3 662.4 624.7 662.4 613.9 653.7 605.2 642.9 605.2H601.7V539.1H677.9V621.1ZM883.5 372.1H821.1C810.4 372.1 801.6 380.8 801.6 391.6S810.4 411.1 821.1 411.1H883.5C926.2 411.1 960.9 445.9 960.9 488.6V779C960.9 821.7 926.2 856.4 883.5 856.4H733.1C727.9 856.4 722.9 858.5 719.3 862.2L649.1 932.3V876C649.1 865.2 640.3 856.4 629.6 856.4H577.5C534.8 856.4 500 821.7 500 779V488.6C500 445.9 534.8 411.1 577.5 411.1H650.4C661.2 411.1 669.9 402.4 669.9 391.6 669.9 380.8 661.2 372.1 650.4 372.1H577.5C543.7 372.1 513.3 386.5 492 409.5V323.3C492 306.3 478.2 292.5 461.3 292.5H425.7C431.1 252.9 452.9 251 463 250 473.1 249.1 480.8 240.7 480.8 230.6V172.1C480.8 166.8 478.6 161.6 474.7 157.9 470.8 154.3 465.5 152.3 460.1 152.6 398.4 156.1 324.8 187.3 324.8 316.1V417.7C324.8 434.7 338.6 448.5 355.6 448.5H461.3C463.7 448.5 466.1 448.2 468.4 447.6 463.6 460.4 460.9 474.2 460.9 488.6V779C460.9 843.2 513.2 895.5 577.5 895.5H610V979.5C610 987.4 614.8 994.5 622.1 997.5 624.5 998.5 627 999 629.6 999 634.6 999 639.6 997 643.4 993.3L741.2 895.5H883.5C947.7 895.5 1000 843.2 1000 779V488.6C1000 424.3 947.7 372.1 883.5 372.1ZM453 409.4H363.9V316.1C363.9 226.2 403.8 201.1 441.7 194V214.6C415.6 222.5 385.5 246 385.5 312 385.5 322.8 394.2 331.6 405 331.6H453V409.4ZM754 377.8C750.4 374.2 745.4 372.1 740.2 372.1S730.1 374.2 726.4 377.8C722.8 381.4 720.7 386.5 720.7 391.6S722.8 401.8 726.4 405.4C730.1 409 735.1 411.1 740.2 411.1S750.4 409 754 405.4C757.7 401.8 759.8 396.7 759.8 391.6S757.7 381.4 754 377.8ZM611.5 308.8C607.8 305.1 602.8 303.1 597.7 303.1 592.5 303.1 587.5 305.1 583.8 308.8 580.2 312.4 578.1 317.4 578.1 322.6 578.1 327.7 580.2 332.8 583.8 336.4 587.5 340 592.5 342.1 597.7 342.1 602.8 342.1 607.8 340 611.5 336.4 615.1 332.8 617.2 327.7 617.2 322.6 617.2 317.4 615.1 312.4 611.5 308.8ZM485.5 1H131.7C59.1 1 0 60.1 0 132.7V468.4C0 541 59.1 600.1 131.7 600.1H172.9L286.9 714.1C290.6 717.8 295.6 719.8 300.7 719.8 303.2 719.8 305.8 719.3 308.2 718.3 315.5 715.3 320.3 708.2 320.3 700.3V600.1H388.7C399.5 600.1 408.2 591.4 408.2 580.6S399.5 561 388.7 561H300.7C289.9 561 281.2 569.8 281.2 580.6V653.1L194.8 566.8C191.2 563.1 186.2 561 181 561H131.7C80.6 561 39.1 519.5 39.1 468.4V132.7C39.1 81.6 80.6 40 131.7 40H485.5C536.6 40 578.1 81.6 578.1 132.7V248.4C578.1 259.2 586.9 267.9 597.7 267.9 608.4 267.9 617.2 259.2 617.2 248.4V132.7C617.2 60.1 558.1 1 485.5 1Z", + "width": 1000 + }, + "search": [ + "quote" + ] + } + ] +} \ No newline at end of file diff --git a/font/fontello.css b/font/fontello.css new file mode 100644 index 0000000..7d78278 --- /dev/null +++ b/font/fontello.css @@ -0,0 +1,92 @@ +@font-face { + font-family: 'fontello'; + src: url('../font/fontello.eot?11951332'); + src: url('../font/fontello.eot?11951332#iefix') format('embedded-opentype'), + url('../font/fontello.woff2?11951332') format('woff2'), + url('../font/fontello.woff?11951332') format('woff'), + url('../font/fontello.ttf?11951332') format('truetype'), + url('../font/fontello.svg?11951332#fontello') format('svg'); + font-weight: normal; + font-style: normal; +} +/* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ +/* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ +/* +@media screen and (-webkit-min-device-pixel-ratio:0) { + @font-face { + font-family: 'fontello'; + src: url('../font/fontello.svg?11951332#fontello') format('svg'); + } +} +*/ +[class^="cirjsicon-"]:before, [class*=" cirjsicon-"]:before { + font-family: "fontello"; + font-style: normal; + font-weight: normal; + speak: never; + + display: inline-block; + text-decoration: inherit; + width: 1em; + margin-right: .2em; + text-align: center; + /* opacity: .8; */ + + /* For safety - reset parent styles, that can break glyph codes*/ + font-variant: normal; + text-transform: none; + + /* fix buttons height, for twitter bootstrap */ + line-height: 1em; + + /* Animation center compensation - margins should be symmetric */ + /* remove if not needed */ + margin-left: .2em; + + /* you can be more comfortable with increased icons size */ + /* font-size: 120%; */ + + /* Font smoothing. That was taken from TWBS */ + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + + /* Uncomment for 3D effect */ + /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ +} + +.cirjsicon-floppy:before { content: '\e800'; } /* '' */ +.cirjsicon-back-in-time:before { content: '\e801'; } /* '' */ +.cirjsicon-ccw:before { content: '\e802'; } /* '' */ +.cirjsicon-export:before { content: '\e803'; } /* '' */ +.cirjsicon-print:before { content: '\e804'; } /* '' */ +.cirjsicon-cw:before { content: '\e805'; } /* '' */ +.cirjsicon-scissors:before { content: '\e806'; } /* '' */ +.cirjsicon-zoom-11:before { content: '\e807'; } /* '' */ +.cirjsicon-target:before { content: '\e808'; } /* '' */ +.cirjsicon-info-circled:before { content: '\e809'; } /* '' */ +.cirjsicon-zoom-in:before { content: '\e80a'; } /* '' */ +.cirjsicon-zoom-out:before { content: '\e80b'; } /* '' */ +.cirjsicon-chart-line:before { content: '\e80c'; } /* '' */ +.cirjsicon-columns:before { content: '\e80d'; } /* '' */ +.cirjsicon-lines:before { content: '\e80e'; } /* '' */ +.cirjsicon-docsx:before { content: '\e80f'; } /* '' */ +.cirjsicon-select-all:before { content: '\e810'; } /* '' */ +.cirjsicon-window:before { content: '\e811'; } /* '' */ +.cirjsicon-none:before { content: '\e812'; } /* '' */ +.cirjsicon-doc-new:before { content: '\e813'; } /* '' */ +.cirjsicon-search:before { content: '\e814'; } /* '' */ +.cirjsicon-flip-y:before { content: '\e815'; } /* '' */ +.cirjsicon-flip-x:before { content: '\e816'; } /* '' */ +.cirjsicon-flip-x-y:before { content: '\e817'; } /* '' */ +.cirjsicon-resize-full-alt:before { content: '\f0b2'; } /* '' */ +.cirjsicon-copy:before { content: '\f0c5'; } /* '' */ +.cirjsicon-magic:before { content: '\f0d0'; } /* '' */ +.cirjsicon-paste:before { content: '\f0ea'; } /* '' */ +.cirjsicon-doc-text:before { content: '\f0f6'; } /* '' */ +.cirjsicon-folder:before { content: '\f115'; } /* '' */ +.cirjsicon-image:before { content: '\f1c5'; } /* '' */ +.cirjsicon-object-group:before { content: '\f247'; } /* '' */ +.cirjsicon-object-ungroup:before { content: '\f248'; } /* '' */ +.cirjsicon-clone:before { content: '\f24d'; } /* '' */ +.cirjsicon-microchip:before { content: '\f2db'; } /* '' */ +.cirjsicon-dropbox:before { content: '\f330'; } /* '' */ diff --git a/font/fontello.eot b/font/fontello.eot new file mode 100644 index 0000000..77b19c5 Binary files /dev/null and b/font/fontello.eot differ diff --git a/font/fontello.svg b/font/fontello.svg new file mode 100644 index 0000000..a737c8e --- /dev/null +++ b/font/fontello.svg @@ -0,0 +1,82 @@ + + + +Copyright (C) 2024 by original authors @ fontello.com + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/font/fontello.ttf b/font/fontello.ttf new file mode 100644 index 0000000..aa30be9 Binary files /dev/null and b/font/fontello.ttf differ diff --git a/font/fontello.woff b/font/fontello.woff new file mode 100644 index 0000000..d529042 Binary files /dev/null and b/font/fontello.woff differ diff --git a/font/fontello.woff2 b/font/fontello.woff2 new file mode 100644 index 0000000..f6612b9 Binary files /dev/null and b/font/fontello.woff2 differ diff --git a/font/webfontlicense.html b/font/webfontlicense.html new file mode 100644 index 0000000..52d5d8d --- /dev/null +++ b/font/webfontlicense.html @@ -0,0 +1,37 @@ + + +⇐ go back + +
+

Font license info

+

Font Awesome

+

Copyright (C) 2016 by Dave Gandy

+

Author: Dave Gandy
+ License: SIL (http://scripts.sil.org/OFL)
+ Homepage: http://fortawesome.github.com/Font-Awesome/

+

Entypo

+

Copyright (C) 2012 by Daniel Bruce

+

Author: Daniel Bruce
+ License: SIL (http://scripts.sil.org/OFL)
+ Homepage: http://www.entypo.com

+

Modern Pictograms

+

Copyright (c) 2012 by John Caserta. All rights reserved.

+

Author: John Caserta
+ License: SIL (http://scripts.sil.org/OFL)
+ Homepage: http://thedesignoffice.org/project/modern-pictograms/

+

Elusive

+

Copyright (C) 2013 by Aristeides Stathopoulos

+

Author: Aristeides Stathopoulos
+ License: SIL (http://scripts.sil.org/OFL)
+ Homepage: http://aristeides.com/


+ +

Icon license info

+

+ Icons made by Freepik, Creaticca Creative Agency, Pixel perfect (Flaticon License) and Google (License CC 3.0 BY) from www.flaticon.com
+

+
diff --git a/icon1024.png b/icon1024.png new file mode 100644 index 0000000..f45d9aa Binary files /dev/null and b/icon1024.png differ diff --git a/icon128.png b/icon128.png new file mode 100644 index 0000000..1854d75 Binary files /dev/null and b/icon128.png differ diff --git a/icon512.png b/icon512.png new file mode 100644 index 0000000..625a650 Binary files /dev/null and b/icon512.png differ diff --git a/iframe.html b/iframe.html new file mode 100644 index 0000000..5561153 --- /dev/null +++ b/iframe.html @@ -0,0 +1,9 @@ + + + + +Insert title here + + + + \ No newline at end of file diff --git a/jsinterface.html b/jsinterface.html new file mode 100644 index 0000000..0c8f887 --- /dev/null +++ b/jsinterface.html @@ -0,0 +1,121 @@ + +Circuit Simulator Applet + + +
+ +

+Javascript Interface Example +

+You can write javascript code that interfaces with the simulator running in an iframe, as long as the +simulator code is hosted on the same website (has the same origin). Your code can get the list of circuit +elements and get information about each element (like the voltage of each node, and the current of two-terminal elements), +and set the voltage of external voltage nodes. +

+ + + + +

+extsin frequency: + +
+extsin amplitude: + +

+ + + diff --git a/lz-string.min.js b/lz-string.min.js new file mode 100644 index 0000000..2d1900a --- /dev/null +++ b/lz-string.min.js @@ -0,0 +1 @@ +var LZString=function(){function o(o,r){if(!t[o]){t[o]={};for(var n=0;ne;e++){var s=r.charCodeAt(e);n[2*e]=s>>>8,n[2*e+1]=s%256}return n},decompressFromUint8Array:function(o){if(null===o||void 0===o)return i.decompress(o);for(var n=new Array(o.length/2),e=0,t=n.length;t>e;e++)n[e]=256*o[2*e]+o[2*e+1];var s=[];return n.forEach(function(o){s.push(r(o))}),i.decompress(s.join(""))},compressToEncodedURIComponent:function(o){return null==o?"":i._compress(o,6,function(o){return e.charAt(o)})},decompressFromEncodedURIComponent:function(r){return null==r?"":""==r?null:(r=r.replace(/ /g,"+"),i._decompress(r.length,32,function(n){return o(e,r.charAt(n))}))},compress:function(o){return i._compress(o,16,function(o){return r(o)})},_compress:function(o,r,n){if(null==o)return"";var e,t,i,s={},p={},u="",c="",a="",l=2,f=3,h=2,d=[],m=0,v=0;for(i=0;ie;e++)m<<=1,v==r-1?(v=0,d.push(n(m)),m=0):v++;for(t=a.charCodeAt(0),e=0;8>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;h>e;e++)m=m<<1|t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=a.charCodeAt(0),e=0;16>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}l--,0==l&&(l=Math.pow(2,h),h++),delete p[a]}else for(t=s[a],e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;l--,0==l&&(l=Math.pow(2,h),h++),s[c]=f++,a=String(u)}if(""!==a){if(Object.prototype.hasOwnProperty.call(p,a)){if(a.charCodeAt(0)<256){for(e=0;h>e;e++)m<<=1,v==r-1?(v=0,d.push(n(m)),m=0):v++;for(t=a.charCodeAt(0),e=0;8>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}else{for(t=1,e=0;h>e;e++)m=m<<1|t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t=0;for(t=a.charCodeAt(0),e=0;16>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1}l--,0==l&&(l=Math.pow(2,h),h++),delete p[a]}else for(t=s[a],e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;l--,0==l&&(l=Math.pow(2,h),h++)}for(t=2,e=0;h>e;e++)m=m<<1|1&t,v==r-1?(v=0,d.push(n(m)),m=0):v++,t>>=1;for(;;){if(m<<=1,v==r-1){d.push(n(m));break}v++}return d.join("")},decompress:function(o){return null==o?"":""==o?null:i._decompress(o.length,32768,function(r){return o.charCodeAt(r)})},_decompress:function(o,n,e){var t,i,s,p,u,c,a,l,f=[],h=4,d=4,m=3,v="",w=[],A={val:e(0),position:n,index:1};for(i=0;3>i;i+=1)f[i]=i;for(p=0,c=Math.pow(2,2),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;switch(t=p){case 0:for(p=0,c=Math.pow(2,8),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;l=r(p);break;case 1:for(p=0,c=Math.pow(2,16),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;l=r(p);break;case 2:return""}for(f[3]=l,s=l,w.push(l);;){if(A.index>o)return"";for(p=0,c=Math.pow(2,m),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;switch(l=p){case 0:for(p=0,c=Math.pow(2,8),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;f[d++]=r(p),l=d-1,h--;break;case 1:for(p=0,c=Math.pow(2,16),a=1;a!=c;)u=A.val&A.position,A.position>>=1,0==A.position&&(A.position=n,A.val=e(A.index++)),p|=(u>0?1:0)*a,a<<=1;f[d++]=r(p),l=d-1,h--;break;case 2:return w.join("")}if(0==h&&(h=Math.pow(2,m),m++),f[l])v=f[l];else{if(l!==d)return null;v=s+s.charAt(0)}w.push(v),f[d++]=s+v.charAt(0),h--,s=v,0==h&&(h=Math.pow(2,m),m++)}}};return i}();"function"==typeof define&&define.amd?define(function(){return LZString}):"undefined"!=typeof module&&null!=module&&(module.exports=LZString); diff --git a/manifest.json b/manifest.json new file mode 100644 index 0000000..f8a79dc --- /dev/null +++ b/manifest.json @@ -0,0 +1,22 @@ +{ + "name": "CircuitJS1", + "short_name": "CircuitJS1", + "start_url": "/circuit/circuitjs.html", + "display": "standalone", + "background_color": "#000000", + "theme_color": "#2196f3", + "description": "Circuit Simulator", + "icons": [ + { + "src": "/circuit/icon512.png", + "sizes": "512x512", + "type": "image/png" + }, + { + "src": "/circuit/icon1024.png", + "sizes": "128x128", + "type": "image/png" + } + ] +} + diff --git a/mosfet-beta.html b/mosfet-beta.html new file mode 100644 index 0000000..d5839dc --- /dev/null +++ b/mosfet-beta.html @@ -0,0 +1,51 @@ + +

MOSFET Beta

+We use a parameter called "beta" to describe the behavior of a MOSFET. The default value is small (20m), which is appropriate for a signal MOSFET. To simulate +a power MOSFET, use a larger value like 80. +

+In the saturation region, Ids = beta * (Vgs - Vt)2/2. +

+This worksheet will calculate the value of beta for a particular MOSFET, given Rds(on). +

+ + +

+ RDS(on) (Ω) (use typical value):
+ VGS where measured (V):
+ Threshold (V) (use typical value):
+
+
+ +
+ + diff --git a/opampreal.html b/opampreal.html new file mode 100644 index 0000000..a3a9ddd --- /dev/null +++ b/opampreal.html @@ -0,0 +1,19 @@ + +

Real Op-Amps

+The ideal op-amp element uses an ideal approximation to op-amp behavior. It has infinite slew rate +and output current. +

+The real op-amp element uses a subcircuit to emulate a real op-amp implementation with finite slew rate and output current. Presently, +the two implementation options are LM741 and LM324. +

+You can also modify the slew rate or output current, which will modify the circuit to change these values from the default. +

+These subcircuits are complicated, so you may run problems with convergence, especially if you increase the slew rate. Try decreasing +the time step size if this happens. +

+The LM324 can act very glitchy as well if the slew rate is increased. Decreasing the time step size proportionately should fix this. + diff --git a/service-worker.js b/service-worker.js new file mode 100644 index 0000000..b7af0a8 --- /dev/null +++ b/service-worker.js @@ -0,0 +1,74 @@ +const CACHE_NAME = 'circuitjs1-app-cache-v1'; +const urlsToCache = [ + '/circuit/about.html', + '/circuit/canvas2svg.js', + '/circuit/circuitjs.html', + '/circuit/crystal.html', + '/circuit/customfunction.html', + '/circuit/customlogic.html', + '/circuit/customtransformer.html', + '/circuit/diodecalc.html', + '/circuit/icon512.png', + '/circuit/icon128.png', + '/circuit/iframe.html', + '/circuit/lz-string.min.js', + '/circuit/manifest.json', + '/circuit/mexle.html', + '/circuit/mosfet-beta.html', + '/circuit/opampreal.html', + '/circuit/split.js', + '/circuit/subcircuits.html', + // put everything else here +]; + +self.addEventListener('install', event => { + event.waitUntil( + caches.open(CACHE_NAME) + .then(cache => cache.addAll(urlsToCache)) + ); +}); + +self.addEventListener('fetch', (event) => { + event.respondWith( + caches.match(event.request).then((cachedResponse) => { + if (cachedResponse) { + // If the resource is already cached, return it + return cachedResponse; + } + + // Otherwise, fetch it from the network and add it to the cache + return fetch(event.request).then((networkResponse) => { + // Only cache non-GET requests and responses that aren't errors + if ( + event.request.method === 'GET' && + networkResponse.status === 200 + ) { + const responseClone = networkResponse.clone(); + caches.open(CACHE_NAME).then((cache) => { + cache.put(event.request, responseClone); + }); + } + + return networkResponse; + }); + }) + ); +}); + + +// Activate event: cleans up old caches +self.addEventListener('activate', (event) => { + const cacheWhitelist = [CACHE_NAME]; // List of cache versions you want to keep + + event.waitUntil( + caches.keys().then((cacheNames) => { + return Promise.all( + cacheNames.map((cacheName) => { + if (!cacheWhitelist.includes(cacheName)) { + return caches.delete(cacheName); // Delete old caches that aren't in whitelist + } + }) + ); + }) + ); +}); diff --git a/shortrelay.php b/shortrelay.php new file mode 100644 index 0000000..fab69a2 --- /dev/null +++ b/shortrelay.php @@ -0,0 +1,19 @@ + diff --git a/subcircuits.html b/subcircuits.html new file mode 100644 index 0000000..c6b65a9 --- /dev/null +++ b/subcircuits.html @@ -0,0 +1,54 @@ + + + + +

Subcircuits

+

+You can use subcircuits to implement custom "black box" devices. +

+Create and test your device, and then use labeled nodes (under "Outputs and Labels") to mark and label all the inputs/outputs. Here is an example circuit (a bridge rectifier). +

+Then, select File->Create Subcircuit, then rearrange the pins the way you want them, enter a model name, and click OK. This will load the subcircuit model. +Be sure to save this circuit (the subcircuit implementation), because it can't be edited later otherwise. +

+Now you can create a circuit using the subcircuit model. Click with the right mouse and select the "Active Building Blocks" menu, and the "Add Subcircuit Instance" item. Then click +and drag to create an instance. Edit the instance to select which model you want (by default it will use the one you just created). +

+Here is an example using the rectifier. When you save/load this circuit, it will also save/load the subcircuit model so you can use it in other circuits. +

+You can also use subcircuits to rearrange pins on the built-in chips. Here is an example with the 555. And here is that subcircuit model being used in a circuit. +

+If you select part of a circuit before using File->Create Subcircuit, then only the selected elements will be considered part of +the subcircuit. +

+If you want to use labeled nodes in the subcircuit definition but don't want them to be one of the inputs/outputs, then check the "Internal Node" +checkbox in those labeled nodes' edit menus. +

+ +

Pins

+

+ The arrangement and direction of the labeled nodes in your circuit will determine the initial arrangement of the pins when creating the symbol symbol. + During symbol creation, you can change the initial pin layout by dragging the pins with the mouse. +

+

+ The name of the labeled nodes can affect the look of the pin in the following ways: +

+

+ + + +

+
    +
  • Naming a node "CLK" will add a "clock marker" to the symbol at that pin and hide the text.
  • +
  • Prefixing the name with "CLK:" (as in "CLK:C1") will draw a "clock marker" on that pin in the symbol.
  • +
  • Prefixing the name with "INV:" (as in "INV:EN") will draw an "inverter circle" on that pin in the symbol, denoting logical inversion.
  • +
  • Prefixing the name with "/" (as in "/EN") will draw a horizontal line above the text in the symbol, also denoting logical negation.
  • +
  • For all prefixes, the prefix itself will not be shown in the symbol, only the text after the prefix.
  • +
  • All prefixes are purely cosmetic and do not affect the actual signal.
  • +
+ +