Adding env.js as found at https://bugs.openjdk.java.net/browse/JDK-8006183 envjs
authorJaroslav Tulach <jtulach@netbeans.org>
Wed, 04 Jun 2014 10:24:28 +0200
branchenvjs
changeset 678ac3a8dafaad7
parent 677 076a1e3e0dbb
child 679 9ca8cf2f2ce2
Adding env.js as found at https://bugs.openjdk.java.net/browse/JDK-8006183
boot-script/src/test/resources/net/java/html/boot/script/ko4j/env.nashorn.1.2-debug.js
pom.xml
     1.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     1.2 +++ b/boot-script/src/test/resources/net/java/html/boot/script/ko4j/env.nashorn.1.2-debug.js	Wed Jun 04 10:24:28 2014 +0200
     1.3 @@ -0,0 +1,24054 @@
     1.4 +/*
     1.5 + * Envjs core-env.1.2.13
     1.6 + * Pure JavaScript Browser Environment
     1.7 + * By John Resig <http://ejohn.org/> and the Envjs Team
     1.8 + * Copyright 2008-2010 John Resig, under the MIT License
     1.9 + */
    1.10 +
    1.11 +load("nashorn:mozilla_compat.js");
    1.12 +
    1.13 +var Envjs = function(){
    1.14 +    var i,
    1.15 +        name,
    1.16 +        override = function(){
    1.17 +            for(i=0;i<arguments.length;i++){
    1.18 +                for ( name in arguments[i] ) {
    1.19 +                    var g = arguments[i].__lookupGetter__(name),
    1.20 +                        s = arguments[i].__lookupSetter__(name);
    1.21 +                    if ( g || s ) {
    1.22 +                        if ( g ) { Envjs.__defineGetter__(name, g); }
    1.23 +                        if ( s ) { Envjs.__defineSetter__(name, s); }
    1.24 +                    } else {
    1.25 +                        Envjs[name] = arguments[i][name];
    1.26 +                    }
    1.27 +                }
    1.28 +            }
    1.29 +        };
    1.30 +    if(arguments.length === 1 && typeof(arguments[0]) == 'string'){
    1.31 +        window.location = arguments[0];
    1.32 +    }else if (arguments.length === 1 && typeof(arguments[0]) == "object"){
    1.33 +        override(arguments[0]);
    1.34 +    }else if(arguments.length === 2 && typeof(arguments[0]) == 'string'){
    1.35 +        override(arguments[1]);
    1.36 +        window.location = arguments[0];
    1.37 +    }
    1.38 +    return;
    1.39 +},
    1.40 +__this__ = this;
    1.41 +
    1.42 +//eg "Mozilla"
    1.43 +Envjs.appCodeName  = "Envjs";
    1.44 +
    1.45 +//eg "Gecko/20070309 Firefox/2.0.0.3"
    1.46 +Envjs.appName      = "Resig/20070309 PilotFish/1.2.13";
    1.47 +
    1.48 +Envjs.version = "1.6";//?
    1.49 +Envjs.revision = '';
    1.50 +/*
    1.51 + * Envjs core-env.1.2.13 
    1.52 + * Pure JavaScript Browser Environment
    1.53 + * By John Resig <http://ejohn.org/> and the Envjs Team
    1.54 + * Copyright 2008-2010 John Resig, under the MIT License
    1.55 + */
    1.56 +
    1.57 +//CLOSURE_START
    1.58 +(function(){
    1.59 +
    1.60 +
    1.61 +
    1.62 +
    1.63 +
    1.64 +/**
    1.65 + * @author john resig
    1.66 + */
    1.67 +// Helper method for extending one object with another.
    1.68 +function __extend__(a,b) {
    1.69 +    for ( var i in b ) {
    1.70 +        var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
    1.71 +        if ( g || s ) {
    1.72 +            if ( g ) { a.__defineGetter__(i, g); }
    1.73 +            if ( s ) { a.__defineSetter__(i, s); }
    1.74 +        } else {
    1.75 +            a[i] = b[i];
    1.76 +        }
    1.77 +    } return a;
    1.78 +}
    1.79 +
    1.80 +/**
    1.81 + * Writes message to system out
    1.82 + * @param {String} message
    1.83 + */
    1.84 +Envjs.log = function(message){};
    1.85 +
    1.86 +/**
    1.87 + * Constants providing enumerated levels for logging in modules
    1.88 + */
    1.89 +Envjs.DEBUG = 1;
    1.90 +Envjs.INFO = 2;
    1.91 +Envjs.WARN = 3;
    1.92 +Envjs.ERROR = 3;
    1.93 +Envjs.NONE = 3;
    1.94 +
    1.95 +/**
    1.96 + * Writes error info out to console
    1.97 + * @param {Error} e
    1.98 + */
    1.99 +Envjs.lineSource = function(e){};
   1.100 +
   1.101 +    
   1.102 +/**
   1.103 + * TODO: used in ./event/eventtarget.js
   1.104 + * @param {Object} event
   1.105 + */
   1.106 +Envjs.defaultEventBehaviors = {};
   1.107 +
   1.108 +
   1.109 +/**
   1.110 + * describes which script src values will trigger Envjs to load
   1.111 + * the script like a browser would
   1.112 + */
   1.113 +Envjs.scriptTypes = {
   1.114 +    "text/javascript"   :false,
   1.115 +    "text/envjs"        :true
   1.116 +};
   1.117 +
   1.118 +/**
   1.119 + * will be called when loading a script throws an error
   1.120 + * @param {Object} script
   1.121 + * @param {Object} e
   1.122 + */
   1.123 +Envjs.onScriptLoadError = function(script, e){
   1.124 +    console.log('error loading script %s %s', script, e);
   1.125 +};
   1.126 +
   1.127 +
   1.128 +/**
   1.129 + * load and execute script tag text content
   1.130 + * @param {Object} script
   1.131 + */
   1.132 +Envjs.loadInlineScript = function(script){
   1.133 +    var tmpFile;
   1.134 +    tmpFile = Envjs.writeToTempFile(script.text, 'js') ;
   1.135 +    load(tmpFile);
   1.136 +};
   1.137 +
   1.138 +/**
   1.139 + * Should evaluate script in some context
   1.140 + * @param {Object} context
   1.141 + * @param {Object} source
   1.142 + * @param {Object} name
   1.143 + */
   1.144 +Envjs.eval = function(context, source, name){};
   1.145 +
   1.146 +
   1.147 +/**
   1.148 + * Executes a script tag
   1.149 + * @param {Object} script
   1.150 + * @param {Object} parser
   1.151 + */
   1.152 +Envjs.loadLocalScript = function(script){
   1.153 +    //console.log("loading script %s", script);
   1.154 +    var types,
   1.155 +    src,
   1.156 +    i,
   1.157 +    base,
   1.158 +    filename,
   1.159 +    xhr;
   1.160 +
   1.161 +    if(script.type){
   1.162 +        types = script.type.split(";");
   1.163 +        for(i=0;i<types.length;i++){
   1.164 +            if(Envjs.scriptTypes[types[i]]){
   1.165 +                //ok this script type is allowed
   1.166 +                break;
   1.167 +            }
   1.168 +            if(i+1 == types.length){
   1.169 +                //console.log('wont load script type %s', script.type);
   1.170 +                return false;
   1.171 +            }
   1.172 +        }
   1.173 +    }
   1.174 +
   1.175 +    try{
   1.176 +        //console.log('handling inline scripts');
   1.177 +        if(!script.src.length){
   1.178 +            Envjs.loadInlineScript(script);
   1.179 +            return true;
   1.180 +        }
   1.181 +    }catch(e){
   1.182 +        //Envjs.error("Error loading script.", e);
   1.183 +        Envjs.onScriptLoadError(script, e);
   1.184 +        return false;
   1.185 +    }
   1.186 +
   1.187 +
   1.188 +    //console.log("loading allowed external script %s", script.src);
   1.189 +
   1.190 +    //lets you register a function to execute
   1.191 +    //before the script is loaded
   1.192 +    if(Envjs.beforeScriptLoad){
   1.193 +        for(src in Envjs.beforeScriptLoad){
   1.194 +            if(script.src.match(src)){
   1.195 +                Envjs.beforeScriptLoad[src](script);
   1.196 +            }
   1.197 +        }
   1.198 +    }
   1.199 +    base = "" + script.ownerDocument.location;
   1.200 +    //filename = Envjs.uri(script.src.match(/([^\?#]*)/)[1], base );
   1.201 +    //console.log('loading script from base %s', base);
   1.202 +    filename = Envjs.uri(script.src, base);
   1.203 +    try {
   1.204 +        xhr = new XMLHttpRequest();
   1.205 +        xhr.open("GET", filename, false/*syncronous*/);
   1.206 +        //console.log("loading external script %s", filename);
   1.207 +        xhr.onreadystatechange = function(){
   1.208 +            //console.log("readyState %s", xhr.readyState);
   1.209 +            if(xhr.readyState === 4){
   1.210 +                Envjs.eval(
   1.211 +                    script.ownerDocument.ownerWindow,
   1.212 +                    xhr.responseText,
   1.213 +                    filename
   1.214 +                );
   1.215 +            }
   1.216 +        };
   1.217 +        xhr.send(null, false);
   1.218 +    } catch(e) {
   1.219 +        console.log("could not load script %s \n %s", filename, e );
   1.220 +        Envjs.onScriptLoadError(script, e);
   1.221 +        return false;
   1.222 +    }
   1.223 +    //lets you register a function to execute
   1.224 +    //after the script is loaded
   1.225 +    if(Envjs.afterScriptLoad){
   1.226 +        for(src in Envjs.afterScriptLoad){
   1.227 +            if(script.src.match(src)){
   1.228 +                Envjs.afterScriptLoad[src](script);
   1.229 +            }
   1.230 +        }
   1.231 +    }
   1.232 +    return true;
   1.233 +};
   1.234 +
   1.235 +
   1.236 +/**
   1.237 + * An 'image' was requested by the document.
   1.238 + *
   1.239 + * - During inital parse of a <link>
   1.240 + * - Via an innerHTML parse of a <link>
   1.241 + * - A modificiation of the 'src' attribute of an Image/HTMLImageElement
   1.242 + *
   1.243 + * NOTE: this is optional API.  If this doesn't exist then the default
   1.244 + * 'loaded' event occurs.
   1.245 + *
   1.246 + * @param node {Object} the <img> node
   1.247 + * @param node the src value
   1.248 + * @return 'true' to indicate the 'load' succeed, false otherwise
   1.249 + */
   1.250 +Envjs.loadImage = function(node, src) {
   1.251 +    return true;
   1.252 +};
   1.253 +
   1.254 +
   1.255 +/**
   1.256 + * A 'link'  was requested by the document.  Typically this occurs when:
   1.257 + * - During inital parse of a <link>
   1.258 + * - Via an innerHTML parse of a <link>
   1.259 + * - A modificiation of the 'href' attribute on a <link> node in the tree
   1.260 + *
   1.261 + * @param node {Object} is the link node in question
   1.262 + * @param href {String} is the href.
   1.263 + *
   1.264 + * Return 'true' to indicate that the 'load' was successful, or false
   1.265 + * otherwise.  The appropriate event is then triggered.
   1.266 + *
   1.267 + * NOTE: this is optional API.  If this doesn't exist then the default
   1.268 + *   'loaded' event occurs
   1.269 + */
   1.270 +Envjs.loadLink = function(node, href) {
   1.271 +    return true;
   1.272 +};
   1.273 +
   1.274 +(function(){
   1.275 +
   1.276 +
   1.277 +/*
   1.278 + *  cookie handling
   1.279 + *  Private internal helper class used to save/retreive cookies
   1.280 + */
   1.281 +
   1.282 +/**
   1.283 + * Specifies the location of the cookie file
   1.284 + */
   1.285 +Envjs.cookieFile = function(){
   1.286 +    return 'file://'+Envjs.homedir+'/.cookies';
   1.287 +};
   1.288 +
   1.289 +/**
   1.290 + * saves cookies to a local file
   1.291 + * @param {Object} htmldoc
   1.292 + */
   1.293 +Envjs.saveCookies = function(){
   1.294 +    var cookiejson = JSON.stringify(Envjs.cookies.peristent,null,'\t');
   1.295 +    //console.log('persisting cookies %s', cookiejson);
   1.296 +    Envjs.writeToFile(cookiejson, Envjs.cookieFile());
   1.297 +};
   1.298 +
   1.299 +/**
   1.300 + * loads cookies from a local file
   1.301 + * @param {Object} htmldoc
   1.302 + */
   1.303 +Envjs.loadCookies = function(){
   1.304 +    var cookiejson,
   1.305 +        js;
   1.306 +    try{
   1.307 +        cookiejson = Envjs.readFromFile(Envjs.cookieFile())
   1.308 +        js = JSON.parse(cookiejson, null, '\t');
   1.309 +    }catch(e){
   1.310 +        //console.log('failed to load cookies %s', e);
   1.311 +        js = {};
   1.312 +    }
   1.313 +    return js;
   1.314 +};
   1.315 +
   1.316 +Envjs.cookies = {
   1.317 +    persistent:{
   1.318 +        //domain - key on domain name {
   1.319 +            //path - key on path {
   1.320 +                //name - key on name {
   1.321 +                     //value : cookie value
   1.322 +                     //other cookie properties
   1.323 +                //}
   1.324 +            //}
   1.325 +        //}
   1.326 +        //expire - provides a timestamp for expiring the cookie
   1.327 +        //cookie - the cookie!
   1.328 +    },
   1.329 +    temporary:{//transient is a reserved word :(
   1.330 +        //like above
   1.331 +    }
   1.332 +};
   1.333 +
   1.334 +var __cookies__;
   1.335 +
   1.336 +//HTMLDocument cookie
   1.337 +Envjs.setCookie = function(url, cookie){
   1.338 +    var i,
   1.339 +        index,
   1.340 +        name,
   1.341 +        value,
   1.342 +        properties = {},
   1.343 +        attr,
   1.344 +        attrs;
   1.345 +    url = Envjs.urlsplit(url);
   1.346 +    if(cookie)
   1.347 +        attrs = cookie.split(";");
   1.348 +    else
   1.349 +        return;
   1.350 +    
   1.351 +    //for now the strategy is to simply create a json object
   1.352 +    //and post it to a file in the .cookies.js file.  I hate parsing
   1.353 +    //dates so I decided not to implement support for 'expires' 
   1.354 +    //(which is deprecated) and instead focus on the easier 'max-age'
   1.355 +    //(which succeeds 'expires') 
   1.356 +    cookie = {};//keyword properties of the cookie
   1.357 +    cookie['domain'] = url.hostname;
   1.358 +    cookie['path'] = url.path||'/';
   1.359 +    for(i=0;i<attrs.length;i++){
   1.360 +        index = attrs[i].indexOf("=");
   1.361 +        if(index > -1){
   1.362 +            name = __trim__(attrs[i].slice(0,index));
   1.363 +            value = __trim__(attrs[i].slice(index+1));
   1.364 +            if(name=='max-age'){
   1.365 +                //we'll have to when to check these
   1.366 +                //and garbage collect expired cookies
   1.367 +                cookie[name] = parseInt(value, 10);
   1.368 +            } else if( name == 'domain' ){
   1.369 +                if(__domainValid__(url, value)){
   1.370 +                    cookie['domain'] = value;
   1.371 +                }
   1.372 +            } else if( name == 'path' ){
   1.373 +                //not sure of any special logic for path
   1.374 +                cookie['path'] = value;
   1.375 +            } else {
   1.376 +                //its not a cookie keyword so store it in our array of properties
   1.377 +                //and we'll serialize individually in a moment
   1.378 +                properties[name] = value;
   1.379 +            }
   1.380 +        }else{
   1.381 +            if( attrs[i] == 'secure' ){
   1.382 +                cookie[attrs[i]] = true;
   1.383 +            }
   1.384 +        }
   1.385 +    }
   1.386 +    if(!('max-age' in cookie)){
   1.387 +        //it's a transient cookie so it only lasts as long as 
   1.388 +        //the window.location remains the same (ie in-memory cookie)
   1.389 +        __mergeCookie__(Envjs.cookies.temporary, cookie, properties);
   1.390 +    }else{
   1.391 +        //the cookie is persistent
   1.392 +        __mergeCookie__(Envjs.cookies.persistent, cookie, properties);
   1.393 +        Envjs.saveCookies();
   1.394 +    }
   1.395 +};
   1.396 +
   1.397 +function __domainValid__(url, value){
   1.398 +    var i,
   1.399 +        domainParts = url.hostname.split('.').reverse(),
   1.400 +        newDomainParts = value.split('.').reverse();
   1.401 +    if(newDomainParts.length > 1){
   1.402 +        for(i=0;i<newDomainParts.length;i++){
   1.403 +            if(!(newDomainParts[i] == domainParts[i])){
   1.404 +                return false;
   1.405 +            }
   1.406 +        }
   1.407 +        return true;
   1.408 +    }
   1.409 +    return false;
   1.410 +};
   1.411 +
   1.412 +Envjs.getCookies = function(url){
   1.413 +    //The cookies that are returned must belong to the same domain
   1.414 +    //and be at or below the current window.location.path.  Also
   1.415 +    //we must check to see if the cookie was set to 'secure' in which
   1.416 +    //case we must check our current location.protocol to make sure it's
   1.417 +    //https:
   1.418 +    var persisted;
   1.419 +    url = Envjs.urlsplit(url);
   1.420 +    if(!__cookies__){
   1.421 +        try{
   1.422 +            __cookies__ = true;
   1.423 +            try{
   1.424 +                persisted = Envjs.loadCookies();
   1.425 +            }catch(e){
   1.426 +                //fail gracefully
   1.427 +                //console.log('%s', e);
   1.428 +            }   
   1.429 +            if(persisted){
   1.430 +                __extend__(Envjs.cookies.persistent, persisted);
   1.431 +            }
   1.432 +            //console.log('set cookies for doc %s', doc.baseURI);
   1.433 +        }catch(e){
   1.434 +            console.log('cookies not loaded %s', e)
   1.435 +        };
   1.436 +    }
   1.437 +    var temporary = __cookieString__(Envjs.cookies.temporary, url),
   1.438 +        persistent =  __cookieString__(Envjs.cookies.persistent, url);
   1.439 +    //console.log('temporary cookies: %s', temporary);  
   1.440 +    //console.log('persistent cookies: %s', persistent);  
   1.441 +    return  temporary + persistent;
   1.442 +};
   1.443 +
   1.444 +function __cookieString__(cookies, url) {
   1.445 +    var cookieString = "",
   1.446 +        domain, 
   1.447 +        path,
   1.448 +        name,
   1.449 +        i=0;
   1.450 +    for (domain in cookies) {
   1.451 +        // check if the cookie is in the current domain (if domain is set)
   1.452 +        // console.log('cookie domain %s', domain);
   1.453 +        if (domain == "" || domain == url.hostname) {
   1.454 +            for (path in cookies[domain]) {
   1.455 +                // console.log('cookie domain path %s', path);
   1.456 +                // make sure path is at or below the window location path
   1.457 +                if (path == "/" || url.path.indexOf(path) > -1) {
   1.458 +                    for (name in cookies[domain][path]) {
   1.459 +                        // console.log('cookie domain path name %s', name);
   1.460 +                        cookieString += 
   1.461 +                            ((i++ > 0)?'; ':'') +
   1.462 +                            name + "=" + 
   1.463 +                            cookies[domain][path][name].value;
   1.464 +                    }
   1.465 +                }
   1.466 +            }
   1.467 +        }
   1.468 +    }
   1.469 +    return cookieString;
   1.470 +};
   1.471 +
   1.472 +function __mergeCookie__(target, cookie, properties){
   1.473 +    var name, now;
   1.474 +    if(!target[cookie.domain]){
   1.475 +        target[cookie.domain] = {};
   1.476 +    }
   1.477 +    if(!target[cookie.domain][cookie.path]){
   1.478 +        target[cookie.domain][cookie.path] = {};
   1.479 +    }
   1.480 +    for(name in properties){
   1.481 +        now = new Date().getTime();
   1.482 +        target[cookie.domain][cookie.path][name] = {
   1.483 +            "value":properties[name],
   1.484 +            "secure":cookie.secure,
   1.485 +            "max-age":cookie['max-age'],
   1.486 +            "date-created":now,
   1.487 +            "expiration":(cookie['max-age']===0) ? 
   1.488 +                0 :
   1.489 +                now + cookie['max-age']
   1.490 +        };
   1.491 +        //console.log('cookie is %o',target[cookie.domain][cookie.path][name]);
   1.492 +    }
   1.493 +};
   1.494 +
   1.495 +})();//end cookies
   1.496 +/*
   1.497 +    http://www.JSON.org/json2.js
   1.498 +    2008-07-15
   1.499 +
   1.500 +    Public Domain.
   1.501 +
   1.502 +    NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.
   1.503 +
   1.504 +    See http://www.JSON.org/js.html
   1.505 +
   1.506 +   
   1.507 +    This code should be minified before deployment.
   1.508 +    See http://javascript.crockford.com/jsmin.html
   1.509 +
   1.510 +    USE YOUR OWN COPY. IT IS EXTREMELY UNWISE TO LOAD CODE FROM SERVERS YOU DO
   1.511 +    NOT CONTROL.
   1.512 +*/
   1.513 +try{ JSON; }catch(e){ 
   1.514 +JSON = function () {
   1.515 +
   1.516 +    function f(n) {
   1.517 +        // Format integers to have at least two digits.
   1.518 +        return n < 10 ? '0' + n : n;
   1.519 +    }
   1.520 +
   1.521 +    Date.prototype.toJSON = function (key) {
   1.522 +
   1.523 +        return this.getUTCFullYear()   + '-' +
   1.524 +             f(this.getUTCMonth() + 1) + '-' +
   1.525 +             f(this.getUTCDate())      + 'T' +
   1.526 +             f(this.getUTCHours())     + ':' +
   1.527 +             f(this.getUTCMinutes())   + ':' +
   1.528 +             f(this.getUTCSeconds())   + 'Z';
   1.529 +    };
   1.530 +
   1.531 +    String.prototype.toJSON = function (key) {
   1.532 +        return String(this);
   1.533 +    };
   1.534 +    Number.prototype.toJSON =
   1.535 +    Boolean.prototype.toJSON = function (key) {
   1.536 +        return this.valueOf();
   1.537 +    };
   1.538 +
   1.539 +    var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
   1.540 +        escapeable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
   1.541 +        gap,
   1.542 +        indent,
   1.543 +        meta = {    // table of character substitutions
   1.544 +            '\b': '\\b',
   1.545 +            '\t': '\\t',
   1.546 +            '\n': '\\n',
   1.547 +            '\f': '\\f',
   1.548 +            '\r': '\\r',
   1.549 +            '"' : '\\"',
   1.550 +            '\\': '\\\\'
   1.551 +        },
   1.552 +        rep;
   1.553 +
   1.554 +
   1.555 +    function quote(string) {
   1.556 +        
   1.557 +        escapeable.lastIndex = 0;
   1.558 +        return escapeable.test(string) ?
   1.559 +            '"' + string.replace(escapeable, function (a) {
   1.560 +                var c = meta[a];
   1.561 +                if (typeof c === 'string') {
   1.562 +                    return c;
   1.563 +                }
   1.564 +                return '\\u' + ('0000' +
   1.565 +                        (+(a.charCodeAt(0))).toString(16)).slice(-4);
   1.566 +            }) + '"' :
   1.567 +            '"' + string + '"';
   1.568 +    }
   1.569 +
   1.570 +
   1.571 +    function str(key, holder) {
   1.572 +
   1.573 +        var i,          // The loop counter.
   1.574 +            k,          // The member key.
   1.575 +            v,          // The member value.
   1.576 +            length,
   1.577 +            mind = gap,
   1.578 +            partial,
   1.579 +            value = holder[key];
   1.580 +
   1.581 +        if (value && typeof value === 'object' &&
   1.582 +                typeof value.toJSON === 'function') {
   1.583 +            value = value.toJSON(key);
   1.584 +        }
   1.585 +        if (typeof rep === 'function') {
   1.586 +            value = rep.call(holder, key, value);
   1.587 +        }
   1.588 +
   1.589 +        switch (typeof value) {
   1.590 +        case 'string':
   1.591 +            return quote(value);
   1.592 +
   1.593 +        case 'number':
   1.594 +            return isFinite(value) ? String(value) : 'null';
   1.595 +
   1.596 +        case 'boolean':
   1.597 +        case 'null':
   1.598 +
   1.599 +            return String(value);
   1.600 +            
   1.601 +        case 'object':
   1.602 +
   1.603 +            if (!value) {
   1.604 +                return 'null';
   1.605 +            }
   1.606 +            gap += indent;
   1.607 +            partial = [];
   1.608 +
   1.609 +            if (typeof value.length === 'number' &&
   1.610 +                    !(value.propertyIsEnumerable('length'))) {
   1.611 +
   1.612 +                length = value.length;
   1.613 +                for (i = 0; i < length; i += 1) {
   1.614 +                    partial[i] = str(i, value) || 'null';
   1.615 +                }
   1.616 +                
   1.617 +                v = partial.length === 0 ? '[]' :
   1.618 +                    gap ? '[\n' + gap +
   1.619 +                            partial.join(',\n' + gap) + '\n' +
   1.620 +                                mind + ']' :
   1.621 +                          '[' + partial.join(',') + ']';
   1.622 +                gap = mind;
   1.623 +                return v;
   1.624 +            }
   1.625 +
   1.626 +            if (rep && typeof rep === 'object') {
   1.627 +                length = rep.length;
   1.628 +                for (i = 0; i < length; i += 1) {
   1.629 +                    k = rep[i];
   1.630 +                    if (typeof k === 'string') {
   1.631 +                        v = str(k, value);
   1.632 +                        if (v) {
   1.633 +                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
   1.634 +                        }
   1.635 +                    }
   1.636 +                }
   1.637 +            } else {
   1.638 +
   1.639 +                for (k in value) {
   1.640 +                    if (Object.hasOwnProperty.call(value, k)) {
   1.641 +                        v = str(k, value);
   1.642 +                        if (v) {
   1.643 +                            partial.push(quote(k) + (gap ? ': ' : ':') + v);
   1.644 +                        }
   1.645 +                    }
   1.646 +                }
   1.647 +            }
   1.648 +
   1.649 +            v = partial.length === 0 ? '{}' :
   1.650 +                gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' +
   1.651 +                        mind + '}' : '{' + partial.join(',') + '}';
   1.652 +            gap = mind;
   1.653 +            return v;
   1.654 +        }
   1.655 +    }
   1.656 +
   1.657 +    return {
   1.658 +        stringify: function (value, replacer, space) {
   1.659 +
   1.660 +            var i;
   1.661 +            gap = '';
   1.662 +            indent = '';
   1.663 +
   1.664 +            if (typeof space === 'number') {
   1.665 +                for (i = 0; i < space; i += 1) {
   1.666 +                    indent += ' ';
   1.667 +                }
   1.668 +
   1.669 +            } else if (typeof space === 'string') {
   1.670 +                indent = space;
   1.671 +            }
   1.672 +
   1.673 +            rep = replacer;
   1.674 +            if (replacer && typeof replacer !== 'function' &&
   1.675 +                    (typeof replacer !== 'object' ||
   1.676 +                     typeof replacer.length !== 'number')) {
   1.677 +                throw new Error('JSON.stringify');
   1.678 +            }
   1.679 +
   1.680 +            return str('', {'': value});
   1.681 +        },
   1.682 +
   1.683 +
   1.684 +        parse: function (text, reviver) {
   1.685 +            var j;
   1.686 +            function walk(holder, key) {
   1.687 +                var k, v, value = holder[key];
   1.688 +                if (value && typeof value === 'object') {
   1.689 +                    for (k in value) {
   1.690 +                        if (Object.hasOwnProperty.call(value, k)) {
   1.691 +                            v = walk(value, k);
   1.692 +                            if (v !== undefined) {
   1.693 +                                value[k] = v;
   1.694 +                            } else {
   1.695 +                                delete value[k];
   1.696 +                            }
   1.697 +                        }
   1.698 +                    }
   1.699 +                }
   1.700 +                return reviver.call(holder, key, value);
   1.701 +            }
   1.702 +
   1.703 +            cx.lastIndex = 0;
   1.704 +            if (cx.test(text)) {
   1.705 +                text = text.replace(cx, function (a) {
   1.706 +                    return '\\u' + ('0000' +
   1.707 +                            (+(a.charCodeAt(0))).toString(16)).slice(-4);
   1.708 +                });
   1.709 +            }
   1.710 +
   1.711 +
   1.712 +            if (/^[\],:{}\s]*$/.
   1.713 +test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
   1.714 +replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
   1.715 +replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
   1.716 +        
   1.717 +                j = eval('(' + text + ')');
   1.718 +
   1.719 +                return typeof reviver === 'function' ?
   1.720 +                    walk({'': j}, '') : j;
   1.721 +            }
   1.722 +
   1.723 +            throw new SyntaxError('JSON.parse');
   1.724 +        }
   1.725 +    };
   1.726 +}();
   1.727 +
   1.728 +}
   1.729 +
   1.730 +/**
   1.731 + * synchronizes thread modifications
   1.732 + * @param {Function} fn
   1.733 + */
   1.734 +Envjs.sync = function(fn){};
   1.735 +
   1.736 +/**
   1.737 + * sleep thread for specified duration
   1.738 + * @param {Object} millseconds
   1.739 + */
   1.740 +Envjs.sleep = function(millseconds){};
   1.741 +
   1.742 +/**
   1.743 + * Interval to wait on event loop when nothing is happening
   1.744 + */
   1.745 +Envjs.WAIT_INTERVAL = 20;//milliseconds
   1.746 +
   1.747 +/*
   1.748 + * Copyright (c) 2010 Nick Galbreath
   1.749 + * http://code.google.com/p/stringencoders/source/browse/#svn/trunk/javascript
   1.750 + *
   1.751 + * Permission is hereby granted, free of charge, to any person
   1.752 + * obtaining a copy of this software and associated documentation
   1.753 + * files (the "Software"), to deal in the Software without
   1.754 + * restriction, including without limitation the rights to use,
   1.755 + * copy, modify, merge, publish, distribute, sublicense, and/or sell
   1.756 + * copies of the Software, and to permit persons to whom the
   1.757 + * Software is furnished to do so, subject to the following
   1.758 + * conditions:
   1.759 + *
   1.760 + * The above copyright notice and this permission notice shall be
   1.761 + * included in all copies or substantial portions of the Software.
   1.762 + *
   1.763 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
   1.764 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
   1.765 + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
   1.766 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
   1.767 + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
   1.768 + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
   1.769 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
   1.770 + * OTHER DEALINGS IN THE SOFTWARE.
   1.771 + */
   1.772 +
   1.773 +/*
   1.774 + * url processing in the spirit of python's urlparse module
   1.775 + * see `pydoc urlparse` or
   1.776 + * http://docs.python.org/library/urlparse.html
   1.777 + *
   1.778 + *  urlsplit: break apart a URL into components
   1.779 + *  urlunsplit:  reconsistute a URL from componets
   1.780 + *  urljoin: join an absolute and another URL
   1.781 + *  urldefrag: remove the fragment from a URL
   1.782 + *
   1.783 + * Take a look at the tests in urlparse-test.html
   1.784 + *
   1.785 + * On URL Normalization:
   1.786 + *
   1.787 + * urlsplit only does minor normalization the components Only scheme
   1.788 + * and hostname are lowercased urljoin does a bit more, normalizing
   1.789 + * paths with "."  and "..".
   1.790 +
   1.791 + * urlnormalize adds additional normalization
   1.792 + *
   1.793 + *   * removes default port numbers
   1.794 + *     http://abc.com:80/ -> http://abc.com/, etc
   1.795 + *   * normalizes path
   1.796 + *     http://abc.com -> http://abc.com/
   1.797 + *     and other "." and ".." cleanups
   1.798 + *   * if file, remove query and fragment
   1.799 + *
   1.800 + * It does not do:
   1.801 + *   * normalizes escaped hex values
   1.802 + *     http://abc.com/%7efoo -> http://abc.com/%7Efoo
   1.803 + *   * normalize '+' <--> '%20'
   1.804 + *
   1.805 + * Differences with Python
   1.806 + *
   1.807 + * The javascript urlsplit returns a normal object with the following
   1.808 + * properties: scheme, netloc, hostname, port, path, query, fragment.
   1.809 + * All properties are read-write.
   1.810 + *
   1.811 + * In python, the resulting object is not a dict, but a specialized,
   1.812 + * read-only, and has alternative tuple interface (e.g. obj[0] ==
   1.813 + * obj.scheme).  It's not clear why such a simple function requires
   1.814 + * a unique datastructure.
   1.815 + *
   1.816 + * urlunsplit in javascript takes an duck-typed object,
   1.817 + *  { scheme: 'http', netloc: 'abc.com', ...}
   1.818 + *  while in  * python it takes a list-like object.
   1.819 + *  ['http', 'abc.com'... ]
   1.820 + *
   1.821 + * For all functions, the javascript version use
   1.822 + * hostname+port if netloc is missing.  In python
   1.823 + * hostname+port were always ignored.
   1.824 + *
   1.825 + * Similar functionality in different languages:
   1.826 + *
   1.827 + *   http://php.net/manual/en/function.parse-url.php
   1.828 + *   returns assocative array but cannot handle relative URL
   1.829 + *
   1.830 + * TODO: test allowfragments more
   1.831 + * TODO: test netloc missing, but hostname present
   1.832 + */
   1.833 +
   1.834 +var urlparse = {};
   1.835 +
   1.836 +// Unlike to be useful standalone
   1.837 +//
   1.838 +// NORMALIZE PATH with "../" and "./"
   1.839 +//   http://en.wikipedia.org/wiki/URL_normalization
   1.840 +//   http://tools.ietf.org/html/rfc3986#section-5.2.3
   1.841 +//
   1.842 +urlparse.normalizepath = function(path)
   1.843 +{
   1.844 +    if (!path || path === '/') {
   1.845 +        return '/';
   1.846 +    }
   1.847 +
   1.848 +    var parts = path.split('/');
   1.849 +
   1.850 +    var newparts = [];
   1.851 +    // make sure path always starts with '/'
   1.852 +    if (parts[0]) {
   1.853 +        newparts.push('');
   1.854 +    }
   1.855 +
   1.856 +    for (var i = 0; i < parts.length; ++i) {
   1.857 +        if (parts[i] === '..') {
   1.858 +            if (newparts.length > 1) {
   1.859 +                newparts.pop();
   1.860 +            } else {
   1.861 +                newparts.push(parts[i]);
   1.862 +            }
   1.863 +        } else if (parts[i] != '.') {
   1.864 +            newparts.push(parts[i]);
   1.865 +        }
   1.866 +    }
   1.867 +
   1.868 +    path = newparts.join('/');
   1.869 +    if (!path) {
   1.870 +        path = '/';
   1.871 +    }
   1.872 +    return path;
   1.873 +};
   1.874 +
   1.875 +//
   1.876 +// Does many of the normalizations that the stock
   1.877 +//  python urlsplit/urlunsplit/urljoin neglects
   1.878 +//
   1.879 +// Doesn't do hex-escape normalization on path or query
   1.880 +//   %7e -> %7E
   1.881 +// Nor, '+' <--> %20 translation
   1.882 +//
   1.883 +urlparse.urlnormalize = function(url)
   1.884 +{
   1.885 +    var parts = urlparse.urlsplit(url);
   1.886 +    switch (parts.scheme) {
   1.887 +    case 'file':
   1.888 +        // files can't have query strings
   1.889 +        //  and we don't bother with fragments
   1.890 +        parts.query = '';
   1.891 +        parts.fragment = '';
   1.892 +        break;
   1.893 +    case 'http':
   1.894 +    case 'https':
   1.895 +        // remove default port
   1.896 +        if ((parts.scheme === 'http' && parts.port == 80) ||
   1.897 +            (parts.scheme === 'https' && parts.port == 443)) {
   1.898 +            parts.port = null;
   1.899 +            // hostname is already lower case
   1.900 +            parts.netloc = parts.hostname;
   1.901 +        }
   1.902 +        break;
   1.903 +    default:
   1.904 +        // if we don't have specific normalizations for this
   1.905 +        // scheme, return the original url unmolested
   1.906 +        return url;
   1.907 +    }
   1.908 +
   1.909 +    // for [file|http|https].  Not sure about other schemes
   1.910 +    parts.path = urlparse.normalizepath(parts.path);
   1.911 +
   1.912 +    return urlparse.urlunsplit(parts);
   1.913 +};
   1.914 +
   1.915 +urlparse.urldefrag = function(url)
   1.916 +{
   1.917 +    var idx = url.indexOf('#');
   1.918 +    if (idx == -1) {
   1.919 +        return [ url, '' ];
   1.920 +    } else {
   1.921 +        return [ url.substr(0,idx), url.substr(idx+1) ];
   1.922 +    }
   1.923 +};
   1.924 +
   1.925 +urlparse.urlsplit = function(url, default_scheme, allow_fragments)
   1.926 +{
   1.927 +    var leftover;
   1.928 +
   1.929 +    if (typeof allow_fragments === 'undefined') {
   1.930 +        allow_fragments = true;
   1.931 +    }
   1.932 +
   1.933 +    // scheme (optional), host, port
   1.934 +    var fullurl = /^([A-Za-z]+)?(:?\/\/)([0-9.\-A-Za-z]*)(?::(\d+))?(.*)$/;
   1.935 +    // path, query, fragment
   1.936 +    var parse_leftovers = /([^?#]*)?(?:\?([^#]*))?(?:#(.*))?$/;
   1.937 +
   1.938 +    var o = {};
   1.939 +
   1.940 +    var parts = url.match(fullurl);
   1.941 +    if (parts) {
   1.942 +        o.scheme = parts[1] || default_scheme || '';
   1.943 +        o.hostname = parts[3].toLowerCase() || '';
   1.944 +        o.port = parseInt(parts[4],10) || '';
   1.945 +        // Probably should grab the netloc from regexp
   1.946 +        //  and then parse again for hostname/port
   1.947 +
   1.948 +        o.netloc = parts[3];
   1.949 +        if (parts[4]) {
   1.950 +            o.netloc += ':' + parts[4];
   1.951 +        }
   1.952 +
   1.953 +        leftover = parts[5];
   1.954 +    } else {
   1.955 +        o.scheme = default_scheme || '';
   1.956 +        o.netloc = '';
   1.957 +        o.hostname = '';
   1.958 +        leftover = url;
   1.959 +    }
   1.960 +    o.scheme = o.scheme.toLowerCase();
   1.961 +
   1.962 +    parts = leftover.match(parse_leftovers);
   1.963 +
   1.964 +    o.path =  parts[1] || '';
   1.965 +    o.query = parts[2] || '';
   1.966 +
   1.967 +    if (allow_fragments) {
   1.968 +        o.fragment = parts[3] || '';
   1.969 +    } else {
   1.970 +        o.fragment = '';
   1.971 +    }
   1.972 +
   1.973 +    return o;
   1.974 +};
   1.975 +
   1.976 +urlparse.urlunsplit = function(o) {
   1.977 +    var s = '';
   1.978 +    if (o.scheme) {
   1.979 +        s += o.scheme + '://';
   1.980 +    }
   1.981 +
   1.982 +    if (o.netloc) {
   1.983 +        if (s == '') {
   1.984 +            s += '//';
   1.985 +        }
   1.986 +        s +=  o.netloc;
   1.987 +    } else if (o.hostname) {
   1.988 +        // extension.  Python only uses netloc
   1.989 +        if (s == '') {
   1.990 +            s += '//';
   1.991 +        }
   1.992 +        s += o.hostname;
   1.993 +        if (o.port) {
   1.994 +            s += ':' + o.port;
   1.995 +        }
   1.996 +    }
   1.997 +
   1.998 +    if (o.path) {
   1.999 +        s += o.path;
  1.1000 +    }
  1.1001 +
  1.1002 +    if (o.query) {
  1.1003 +        s += '?' + o.query;
  1.1004 +    }
  1.1005 +    if (o.fragment) {
  1.1006 +        s += '#' + o.fragment;
  1.1007 +    }
  1.1008 +    return s;
  1.1009 +};
  1.1010 +
  1.1011 +urlparse.urljoin = function(base, url, allow_fragments)
  1.1012 +{
  1.1013 +    if (typeof allow_fragments === 'undefined') {
  1.1014 +        allow_fragments = true;
  1.1015 +    }
  1.1016 +
  1.1017 +    var url_parts = urlparse.urlsplit(url);
  1.1018 +
  1.1019 +    // if url parts has a scheme (i.e. absolute)
  1.1020 +    // then nothing to do
  1.1021 +    if (url_parts.scheme) {
  1.1022 +        if (! allow_fragments) {
  1.1023 +            return url;
  1.1024 +        } else {
  1.1025 +            return urlparse.urldefrag(url)[0];
  1.1026 +        }
  1.1027 +    }
  1.1028 +    var base_parts = urlparse.urlsplit(base);
  1.1029 +
  1.1030 +    // copy base, only if not present
  1.1031 +    if (!base_parts.scheme) {
  1.1032 +        base_parts.scheme = url_parts.scheme;
  1.1033 +    }
  1.1034 +
  1.1035 +    // copy netloc, only if not present
  1.1036 +    if (!base_parts.netloc || !base_parts.hostname) {
  1.1037 +        base_parts.netloc = url_parts.netloc;
  1.1038 +        base_parts.hostname = url_parts.hostname;
  1.1039 +        base_parts.port = url_parts.port;
  1.1040 +    }
  1.1041 +
  1.1042 +    // paths
  1.1043 +    if (url_parts.path.length > 0) {
  1.1044 +        if (url_parts.path.charAt(0) == '/') {
  1.1045 +            base_parts.path = url_parts.path;
  1.1046 +        } else {
  1.1047 +            // relative path.. get rid of "current filename" and
  1.1048 +            //   replace.  Same as var parts =
  1.1049 +            //   base_parts.path.split('/'); parts[parts.length-1] =
  1.1050 +            //   url_parts.path; base_parts.path = parts.join('/');
  1.1051 +            var idx = base_parts.path.lastIndexOf('/');
  1.1052 +            if (idx == -1) {
  1.1053 +                base_parts.path = url_parts.path;
  1.1054 +            } else {
  1.1055 +                base_parts.path = base_parts.path.substr(0,idx) + '/' +
  1.1056 +                    url_parts.path;
  1.1057 +            }
  1.1058 +        }
  1.1059 +    }
  1.1060 +
  1.1061 +    // clean up path
  1.1062 +    base_parts.path = urlparse.normalizepath(base_parts.path);
  1.1063 +
  1.1064 +    // copy query string
  1.1065 +    base_parts.query = url_parts.query;
  1.1066 +
  1.1067 +    // copy fragments
  1.1068 +    if (allow_fragments) {
  1.1069 +        base_parts.fragment = url_parts.fragment;
  1.1070 +    } else {
  1.1071 +        base_parts.fragment = '';
  1.1072 +    }
  1.1073 +
  1.1074 +    return urlparse.urlunsplit(base_parts);
  1.1075 +};
  1.1076 +
  1.1077 +/**
  1.1078 + * getcwd - named after posix call of same name (see 'man 2 getcwd')
  1.1079 + *
  1.1080 + */
  1.1081 +Envjs.getcwd = function() {
  1.1082 +    return '.';
  1.1083 +};
  1.1084 +
  1.1085 +/**
  1.1086 + * resolves location relative to doc location
  1.1087 + *
  1.1088 + * @param {Object} path  Relative or absolute URL
  1.1089 + * @param {Object} base  (semi-optional)  The base url used in resolving "path" above
  1.1090 + */
  1.1091 +Envjs.uri = function(path, base) {
  1.1092 +    //console.log('constructing uri from path %s and base %s', path, base);
  1.1093 +
  1.1094 +    // Semi-common trick is to make an iframe with src='javascript:false'
  1.1095 +    //  (or some equivalent).  By returning '', the load is skipped
  1.1096 +    if (path.indexOf('javascript') === 0) {
  1.1097 +        return '';
  1.1098 +    }
  1.1099 +
  1.1100 +    // if path is absolute, then just normalize and return
  1.1101 +    if (path.match('^[a-zA-Z]+://')) {
  1.1102 +        return urlparse.urlnormalize(path);
  1.1103 +    }
  1.1104 +
  1.1105 +    // interesting special case, a few very large websites use
  1.1106 +    // '//foo/bar/' to mean 'http://foo/bar'
  1.1107 +    if (path.match('^//')) {
  1.1108 +        path = 'http:' + path;
  1.1109 +    }
  1.1110 +
  1.1111 +    // if base not passed in, try to get it from document
  1.1112 +    // Ideally I would like the caller to pass in document.baseURI to
  1.1113 +    //  make this more self-sufficient and testable
  1.1114 +    if (!base && document) {
  1.1115 +        base = document.baseURI;
  1.1116 +    }
  1.1117 +
  1.1118 +    // about:blank doesn't count
  1.1119 +    if (base === 'about:blank'){
  1.1120 +        base = '';
  1.1121 +    }
  1.1122 +
  1.1123 +    // if base is still empty, then we are in QA mode loading local
  1.1124 +    // files.  Get current working directory
  1.1125 +    if (!base) {
  1.1126 +        base = 'file://' +  Envjs.getcwd() + '/';
  1.1127 +    }
  1.1128 +    // handles all cases if path is abosulte or relative to base
  1.1129 +    // 3rd arg is "false" --> remove fragments
  1.1130 +    var newurl = urlparse.urlnormalize(urlparse.urljoin(base, path, false));
  1.1131 +
  1.1132 +    return newurl;
  1.1133 +};
  1.1134 +
  1.1135 +
  1.1136 +
  1.1137 +/**
  1.1138 + * Used in the XMLHttpRquest implementation to run a
  1.1139 + * request in a seperate thread
  1.1140 + * @param {Object} fn
  1.1141 + */
  1.1142 +Envjs.runAsync = function(fn){};
  1.1143 +
  1.1144 +
  1.1145 +/**
  1.1146 + * Used to write to a local file
  1.1147 + * @param {Object} text
  1.1148 + * @param {Object} url
  1.1149 + */
  1.1150 +Envjs.writeToFile = function(text, url){};
  1.1151 +
  1.1152 +
  1.1153 +/**
  1.1154 + * Used to write to a local file
  1.1155 + * @param {Object} text
  1.1156 + * @param {Object} suffix
  1.1157 + */
  1.1158 +Envjs.writeToTempFile = function(text, suffix){};
  1.1159 +
  1.1160 +/**
  1.1161 + * Used to read the contents of a local file
  1.1162 + * @param {Object} url
  1.1163 + */
  1.1164 +Envjs.readFromFile = function(url){};
  1.1165 +
  1.1166 +/**
  1.1167 + * Used to delete a local file
  1.1168 + * @param {Object} url
  1.1169 + */
  1.1170 +Envjs.deleteFile = function(url){};
  1.1171 +
  1.1172 +/**
  1.1173 + * establishes connection and calls responsehandler
  1.1174 + * @param {Object} xhr
  1.1175 + * @param {Object} responseHandler
  1.1176 + * @param {Object} data
  1.1177 + */
  1.1178 +Envjs.connection = function(xhr, responseHandler, data){};
  1.1179 +
  1.1180 +
  1.1181 +__extend__(Envjs, urlparse);
  1.1182 +
  1.1183 +/**
  1.1184 + * Makes an object window-like by proxying object accessors
  1.1185 + * @param {Object} scope
  1.1186 + * @param {Object} parent
  1.1187 + */
  1.1188 +Envjs.proxy = function(scope, parent, aliasList){};
  1.1189 +
  1.1190 +Envjs.javaEnabled = false;
  1.1191 +
  1.1192 +Envjs.homedir        = '';
  1.1193 +Envjs.tmpdir         = '';
  1.1194 +Envjs.os_name        = '';
  1.1195 +Envjs.os_arch        = '';
  1.1196 +Envjs.os_version     = '';
  1.1197 +Envjs.lang           = '';
  1.1198 +Envjs.platform       = '';
  1.1199 +
  1.1200 +/**
  1.1201 + *
  1.1202 + * @param {Object} frameElement
  1.1203 + * @param {Object} url
  1.1204 + */
  1.1205 +Envjs.loadFrame = function(frame, url){
  1.1206 +    try {
  1.1207 +        if(frame.contentWindow){
  1.1208 +            //mark for garbage collection
  1.1209 +            frame.contentWindow = null;
  1.1210 +        }
  1.1211 +
  1.1212 +        //create a new scope for the window proxy
  1.1213 +        //platforms will need to override this function
  1.1214 +        //to make sure the scope is global-like
  1.1215 +        frame.contentWindow = (function(){return this;})();
  1.1216 +        new Window(frame.contentWindow, window);
  1.1217 +
  1.1218 +        //I dont think frames load asynchronously in firefox
  1.1219 +        //and I think the tests have verified this but for
  1.1220 +        //some reason I'm less than confident... Are there cases?
  1.1221 +        frame.contentDocument = frame.contentWindow.document;
  1.1222 +        frame.contentDocument.async = false;
  1.1223 +        if(url){
  1.1224 +            //console.log('envjs.loadFrame async %s', frame.contentDocument.async);
  1.1225 +            frame.contentWindow.location = url;
  1.1226 +        }
  1.1227 +    } catch(e) {
  1.1228 +        console.log("failed to load frame content: from %s %s", url, e);
  1.1229 +    }
  1.1230 +};
  1.1231 +
  1.1232 +
  1.1233 +// The following are in rhino/window.js
  1.1234 +// TODO: Envjs.unloadFrame
  1.1235 +// TODO: Envjs.proxy
  1.1236 +
  1.1237 +/**
  1.1238 + * @author john resig & the envjs team
  1.1239 + * @uri http://www.envjs.com/
  1.1240 + * @copyright 2008-2010
  1.1241 + * @license MIT
  1.1242 + */
  1.1243 +//CLOSURE_END
  1.1244 +}());
  1.1245 +/*
  1.1246 + * Envjs rhino-env.1.2.13
  1.1247 + * Pure JavaScript Browser Environment
  1.1248 + * By John Resig <http://ejohn.org/> and the Envjs Team
  1.1249 + * Copyright 2008-2010 John Resig, under the MIT License
  1.1250 + */
  1.1251 +
  1.1252 +var __context__ = Packages.jdk.nashorn.internal.runtime.Context.getContext();
  1.1253 +
  1.1254 +Envjs.platform       = "Nashorn";
  1.1255 +Envjs.revision       = "0.1";
  1.1256 +
  1.1257 +/*
  1.1258 + * Envjs rhino-env.1.2.13 
  1.1259 + * Pure JavaScript Browser Environment
  1.1260 + * By John Resig <http://ejohn.org/> and the Envjs Team
  1.1261 + * Copyright 2008-2010 John Resig, under the MIT License
  1.1262 + */
  1.1263 +
  1.1264 +//CLOSURE_START
  1.1265 +(function(){
  1.1266 +
  1.1267 +
  1.1268 +
  1.1269 +
  1.1270 +
  1.1271 +/**
  1.1272 + * @author john resig
  1.1273 + */
  1.1274 +// Helper method for extending one object with another.
  1.1275 +function __extend__(a,b) {
  1.1276 +    for ( var i in b ) {
  1.1277 +        var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
  1.1278 +        if ( g || s ) {
  1.1279 +            if ( g ) { a.__defineGetter__(i, g); }
  1.1280 +            if ( s ) { a.__defineSetter__(i, s); }
  1.1281 +        } else {
  1.1282 +            a[i] = b[i];
  1.1283 +        }
  1.1284 +    } return a;
  1.1285 +}
  1.1286 +
  1.1287 +/**
  1.1288 + * Writes message to system out.
  1.1289 + *
  1.1290 + * Some sites redefine 'print' as in 'window.print', so instead of
  1.1291 + * printing to stdout, you are popping open a new window, which might
  1.1292 + * call print, etc, etc,etc This can cause infinite loops and can
  1.1293 + * exhausing all memory.
  1.1294 + *
  1.1295 + * By defining this upfront now, Envjs.log will always call the native 'print'
  1.1296 + * function
  1.1297 + *
  1.1298 + * @param {Object} message
  1.1299 + */
  1.1300 +Envjs.log = print;
  1.1301 +
  1.1302 +Envjs.lineSource = function(e){
  1.1303 +    return e&&e.rhinoException?e.rhinoException.lineSource():"(line ?)";
  1.1304 +};
  1.1305 +/**
  1.1306 + * load and execute script tag text content
  1.1307 + * @param {Object} script
  1.1308 + */
  1.1309 +Envjs.loadInlineScript = function(script){
  1.1310 +    if(script.ownerDocument.ownerWindow){
  1.1311 +        Envjs.eval(
  1.1312 +            script.ownerDocument.ownerWindow,
  1.1313 +            script.text,
  1.1314 +            'eval('+script.text.substring(0,16)+'...):'+new Date().getTime()
  1.1315 +        );
  1.1316 +    }else{
  1.1317 +        Envjs.eval(
  1.1318 +            __this__,
  1.1319 +            script.text,
  1.1320 +            'eval('+script.text.substring(0,16)+'...):'+new Date().getTime()
  1.1321 +        );
  1.1322 +    }
  1.1323 +    //console.log('evaluated at scope %s \n%s',
  1.1324 +    //    script.ownerDocument.ownerWindow.guid, script.text);
  1.1325 +};
  1.1326 +
  1.1327 +
  1.1328 +Envjs.eval = function(context, source, name){
  1.1329 +    __context__.eval(context, source, null, name, false);
  1.1330 +};
  1.1331 +
  1.1332 +
  1.1333 +/**
  1.1334 + * Rhino provides a very succinct 'sync'
  1.1335 + * @param {Function} fn
  1.1336 + */
  1.1337 +Envjs.sync = function(fn){
  1.1338 +    //console.log('Threadless platform, sync is safe');
  1.1339 +    return fn;
  1.1340 +};
  1.1341 +Envjs.spawn = function(fn){
  1.1342 +    //console.log('Threadless platform, spawn shares main thread.');
  1.1343 +    return fn();
  1.1344 +};
  1.1345 +
  1.1346 +/**
  1.1347 + * sleep thread for specified duration
  1.1348 + * @param {Object} millseconds
  1.1349 + */
  1.1350 +Envjs.sleep = function(millseconds){
  1.1351 +    try{
  1.1352 +        java.lang.Thread.sleep(millseconds);
  1.1353 +    }catch(e){
  1.1354 +        console.log('Threadless platform, cannot sleep.');
  1.1355 +    }
  1.1356 +};
  1.1357 +
  1.1358 +/**
  1.1359 + * provides callback hook for when the system exits
  1.1360 + */
  1.1361 +Envjs.onExit = function(callback){
  1.1362 +    // TODO add exit listener
  1.1363 +};
  1.1364 +
  1.1365 +/**
  1.1366 + * Get 'Current Working Directory'
  1.1367 + */
  1.1368 +Envjs.getcwd = function() {
  1.1369 +    return java.lang.System.getProperty('user.dir');
  1.1370 +}
  1.1371 +
  1.1372 +/**
  1.1373 + *
  1.1374 + * @param {Object} fn
  1.1375 + * @param {Object} onInterupt
  1.1376 + */
  1.1377 +Envjs.runAsync = function(fn, onInterupt){
  1.1378 +    ////Envjs.debug("running async");
  1.1379 +    var running = true,
  1.1380 +        run;
  1.1381 +
  1.1382 +    try{
  1.1383 +        run = Envjs.sync(function(){
  1.1384 +            fn();
  1.1385 +            Envjs.wait();
  1.1386 +        });
  1.1387 +        Envjs.spawn(run);
  1.1388 +    }catch(e){
  1.1389 +        console.log("error while running async operation", e);
  1.1390 +        try{if(onInterrupt)onInterrupt(e)}catch(ee){};
  1.1391 +    }
  1.1392 +};
  1.1393 +
  1.1394 +/**
  1.1395 + * Used to write to a local file
  1.1396 + * @param {Object} text
  1.1397 + * @param {Object} url
  1.1398 + */
  1.1399 +Envjs.writeToFile = function(text, url){
  1.1400 +    //Envjs.debug("writing text to url : " + url);
  1.1401 +    var out = new java.io.FileWriter(
  1.1402 +        new java.io.File(
  1.1403 +            new java.net.URI(url.toString())));
  1.1404 +    out.write( text, 0, text.length );
  1.1405 +    out.flush();
  1.1406 +    out.close();
  1.1407 +};
  1.1408 +
  1.1409 +/**
  1.1410 + * Used to write to a local file
  1.1411 + * @param {Object} text
  1.1412 + * @param {Object} suffix
  1.1413 + */
  1.1414 +Envjs.writeToTempFile = function(text, suffix){
  1.1415 +    //Envjs.debug("writing text to temp url : " + suffix);
  1.1416 +    // Create temp file.
  1.1417 +    var temp = java.io.File.createTempFile("envjs-tmp", suffix);
  1.1418 +
  1.1419 +    // Delete temp file when program exits.
  1.1420 +    temp.deleteOnExit();
  1.1421 +
  1.1422 +    // Write to temp file
  1.1423 +    var out = new java.io.FileWriter(temp);
  1.1424 +    out.write(text, 0, text.length);
  1.1425 +    out.close();
  1.1426 +    return temp.getAbsolutePath().toString()+'';
  1.1427 +};
  1.1428 +
  1.1429 +
  1.1430 +/**
  1.1431 + * Used to read the contents of a local file
  1.1432 + * @param {Object} url
  1.1433 + */
  1.1434 +Envjs.readFromFile = function( url ){
  1.1435 +    var fileReader = new java.io.FileReader(
  1.1436 +        new java.io.File( 
  1.1437 +            new java.net.URI( url )));
  1.1438 +            
  1.1439 +    var stringwriter = new java.io.StringWriter(),
  1.1440 +        buffer = java.lang.reflect.Array.newInstance(java.lang.Character.TYPE, 1024),
  1.1441 +        length;
  1.1442 +
  1.1443 +    while ((length = fileReader.read(buffer, 0, 1024)) != -1) {
  1.1444 +        stringwriter.write(buffer, 0, length);
  1.1445 +    }
  1.1446 +
  1.1447 +    stringwriter.close();
  1.1448 +    return stringwriter.toString()+"";
  1.1449 +};
  1.1450 +    
  1.1451 +
  1.1452 +/**
  1.1453 + * Used to delete a local file
  1.1454 + * @param {Object} url
  1.1455 + */
  1.1456 +Envjs.deleteFile = function(url){
  1.1457 +    var file = new java.io.File( new java.net.URI( url ) );
  1.1458 +    file["delete"]();
  1.1459 +};
  1.1460 +
  1.1461 +/**
  1.1462 + * establishes connection and calls responsehandler
  1.1463 + * @param {Object} xhr
  1.1464 + * @param {Object} responseHandler
  1.1465 + * @param {Object} data
  1.1466 + */
  1.1467 +Envjs.connection = function(xhr, responseHandler, data){
  1.1468 +    var url = new java.net.URL(xhr.url),
  1.1469 +        connection,
  1.1470 +        header,
  1.1471 +        outstream,
  1.1472 +        buffer,
  1.1473 +        length,
  1.1474 +        binary = false,
  1.1475 +        name, value,
  1.1476 +        contentEncoding,
  1.1477 +        instream,
  1.1478 +        responseXML,
  1.1479 +        i;
  1.1480 +    if ( /^file\:/.test(url) ) {
  1.1481 +        try{
  1.1482 +            if ( "PUT" == xhr.method || "POST" == xhr.method ) {
  1.1483 +                data =  data || "" ;
  1.1484 +                Envjs.writeToFile(data, url);
  1.1485 +                xhr.readyState = 4;
  1.1486 +                //could be improved, I just cant recall the correct http codes
  1.1487 +                xhr.status = 200;
  1.1488 +                xhr.statusText = "";
  1.1489 +            } else if ( xhr.method == "DELETE" ) {
  1.1490 +                Envjs.deleteFile(url);
  1.1491 +                xhr.readyState = 4;
  1.1492 +                //could be improved, I just cant recall the correct http codes
  1.1493 +                xhr.status = 200;
  1.1494 +                xhr.statusText = "";
  1.1495 +            } else {
  1.1496 +                connection = url.openConnection();
  1.1497 +                connection.connect();
  1.1498 +                //try to add some canned headers that make sense
  1.1499 +
  1.1500 +                try{
  1.1501 +                    if(xhr.url.match(/html$/)){
  1.1502 +                        xhr.responseHeaders["Content-Type"] = 'text/html';
  1.1503 +                    }else if(xhr.url.match(/.xml$/)){
  1.1504 +                        xhr.responseHeaders["Content-Type"] = 'text/xml';
  1.1505 +                    }else if(xhr.url.match(/.js$/)){
  1.1506 +                        xhr.responseHeaders["Content-Type"] = 'text/javascript';
  1.1507 +                    }else if(xhr.url.match(/.json$/)){
  1.1508 +                        xhr.responseHeaders["Content-Type"] = 'application/json';
  1.1509 +                    }else{
  1.1510 +                        xhr.responseHeaders["Content-Type"] = 'text/plain';
  1.1511 +                    }
  1.1512 +                    //xhr.responseHeaders['Last-Modified'] = connection.getLastModified();
  1.1513 +                    //xhr.responseHeaders['Content-Length'] = headerValue+'';
  1.1514 +                    //xhr.responseHeaders['Date'] = new Date()+'';*/
  1.1515 +                }catch(e){
  1.1516 +                    console.log('failed to load response headers',e);
  1.1517 +                }
  1.1518 +            }
  1.1519 +        }catch(e){
  1.1520 +            console.log('failed to open file %s %s', url, e);
  1.1521 +            connection = null;
  1.1522 +            xhr.readyState = 4;
  1.1523 +            xhr.statusText = "Local File Protocol Error";
  1.1524 +            xhr.responseText = "<html><head/><body><p>"+ e+ "</p></body></html>";
  1.1525 +        }
  1.1526 +    } else {
  1.1527 +        connection = url.openConnection();
  1.1528 +        connection.setRequestMethod( xhr.method );
  1.1529 +
  1.1530 +        // Add headers to Java connection
  1.1531 +        for (header in xhr.headers){
  1.1532 +            connection.addRequestProperty(header+'', xhr.headers[header]+'');
  1.1533 +        }
  1.1534 +
  1.1535 +        //write data to output stream if required
  1.1536 +        if(data){
  1.1537 +            if(data instanceof Document){
  1.1538 +                if ( xhr.method == "PUT" || xhr.method == "POST" ) {
  1.1539 +                    connection.setDoOutput(true);
  1.1540 +                    outstream = connection.getOutputStream(),
  1.1541 +                    xml = (new XMLSerializer()).serializeToString(data);
  1.1542 +                    buffer = new java.lang.String(xml).getBytes('UTF-8');
  1.1543 +                    outstream.write(buffer, 0, buffer.length);
  1.1544 +                    outstream.close();
  1.1545 +                }
  1.1546 +            }else if(data.length&&data.length>0){
  1.1547 +                if ( xhr.method == "PUT" || xhr.method == "POST" ) {
  1.1548 +                    connection.setDoOutput(true);
  1.1549 +                    outstream = connection.getOutputStream();
  1.1550 +                    buffer = new java.lang.String(data).getBytes('UTF-8');
  1.1551 +                    outstream.write(buffer, 0, buffer.length);
  1.1552 +                    outstream.close();
  1.1553 +                }
  1.1554 +            }
  1.1555 +            connection.connect();
  1.1556 +        }else{
  1.1557 +            connection.connect();
  1.1558 +        }
  1.1559 +    }
  1.1560 +
  1.1561 +    if(connection){
  1.1562 +        try{
  1.1563 +            length = connection.getHeaderFields().size();
  1.1564 +            // Stick the response headers into responseHeaders
  1.1565 +            for (i = 0; i < length; i++) {
  1.1566 +                name = connection.getHeaderFieldKey(i);
  1.1567 +                value = connection.getHeaderField(i);
  1.1568 +                if (name)
  1.1569 +                    xhr.responseHeaders[name+''] = value+'';
  1.1570 +            }
  1.1571 +        }catch(e){
  1.1572 +            console.log('failed to load response headers \n%s',e);
  1.1573 +        }
  1.1574 +
  1.1575 +        xhr.readyState = 4;
  1.1576 +        xhr.status = parseInt(connection.responseCode,10) || undefined;
  1.1577 +        xhr.statusText = connection.responseMessage || "";
  1.1578 +
  1.1579 +        contentEncoding = connection.getContentEncoding() || "utf-8";
  1.1580 +        instream = null;
  1.1581 +        responseXML = null;
  1.1582 +        
  1.1583 +        try{
  1.1584 +            //console.log('contentEncoding %s', contentEncoding);
  1.1585 +            if( contentEncoding.equalsIgnoreCase("gzip") ||
  1.1586 +                contentEncoding.equalsIgnoreCase("decompress")){
  1.1587 +                //zipped content
  1.1588 +                binary = true;
  1.1589 +                outstream = new java.io.ByteArrayOutputStream();
  1.1590 +                buffer = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 1024);
  1.1591 +                instream = new java.util.zip.GZIPInputStream(connection.getInputStream())
  1.1592 +            }else{
  1.1593 +                //this is a text file
  1.1594 +                outstream = new java.io.StringWriter();
  1.1595 +                buffer = java.lang.reflect.Array.newInstance(java.lang.Character.TYPE, 1024);
  1.1596 +                instream = new java.io.InputStreamReader(connection.getInputStream());
  1.1597 +            }
  1.1598 +        }catch(e){
  1.1599 +            if (connection.getResponseCode() == 404){
  1.1600 +                console.log('failed to open connection stream \n %s %s',
  1.1601 +                            e.toString(), e);
  1.1602 +            }else{
  1.1603 +                console.log('failed to open connection stream \n %s %s',
  1.1604 +                            e.toString(), e);
  1.1605 +            }
  1.1606 +            instream = connection.getErrorStream();
  1.1607 +        }
  1.1608 +
  1.1609 +        while ((length = instream.read(buffer, 0, 1024)) != -1) {
  1.1610 +            outstream.write(buffer, 0, length);
  1.1611 +        }
  1.1612 +
  1.1613 +        outstream.close();
  1.1614 +        instream.close();
  1.1615 +        
  1.1616 +        if(binary){
  1.1617 +            xhr.responseText = new String(outstream.toByteArray(), 'UTF-8')+'';
  1.1618 +        }else{
  1.1619 +            xhr.responseText = outstream.toString()+'';
  1.1620 +        }
  1.1621 +
  1.1622 +    }
  1.1623 +    if(responseHandler){
  1.1624 +        //Envjs.debug('calling ajax response handler');
  1.1625 +        responseHandler();
  1.1626 +    }
  1.1627 +};
  1.1628 +
  1.1629 +//Since we're running in rhino I guess we can safely assume
  1.1630 +//java is 'enabled'.  I'm sure this requires more thought
  1.1631 +//than I've given it here
  1.1632 +Envjs.javaEnabled = true;
  1.1633 +
  1.1634 +Envjs.homedir        = java.lang.System.getProperty("user.home");
  1.1635 +Envjs.tmpdir         = java.lang.System.getProperty("java.io.tmpdir");
  1.1636 +Envjs.os_name        = java.lang.System.getProperty("os.name");
  1.1637 +Envjs.os_arch        = java.lang.System.getProperty("os.arch");
  1.1638 +Envjs.os_version     = java.lang.System.getProperty("os.version");
  1.1639 +Envjs.lang           = java.lang.System.getProperty("user.lang");
  1.1640 +
  1.1641 +
  1.1642 +/**
  1.1643 + *
  1.1644 + * @param {Object} frameElement
  1.1645 + * @param {Object} url
  1.1646 + */
  1.1647 +Envjs.loadFrame = function(frame, url){
  1.1648 +    try {
  1.1649 +        if(frame.contentWindow){
  1.1650 +            //mark for garbage collection
  1.1651 +            frame.contentWindow = null;
  1.1652 +        }
  1.1653 +
  1.1654 +        //create a new scope for the window proxy
  1.1655 +        frame.contentWindow = Envjs.proxy();
  1.1656 +        new Window(frame.contentWindow, window);
  1.1657 +
  1.1658 +        //I dont think frames load asynchronously in firefox
  1.1659 +        //and I think the tests have verified this but for
  1.1660 +        //some reason I'm less than confident... Are there cases?
  1.1661 +        frame.contentDocument = frame.contentWindow.document;
  1.1662 +        frame.contentDocument.async = false;
  1.1663 +        if(url){
  1.1664 +            //console.log('envjs.loadFrame async %s', frame.contentDocument.async);
  1.1665 +            frame.contentWindow.location = url;
  1.1666 +        }
  1.1667 +    } catch(e) {
  1.1668 +        console.log("failed to load frame content: from %s %s", url, e);
  1.1669 +    }
  1.1670 +};
  1.1671 +
  1.1672 +/**
  1.1673 + * unloadFrame
  1.1674 + * @param {Object} frame
  1.1675 + */
  1.1676 +Envjs.unloadFrame = function(frame){
  1.1677 +    var all, length, i;
  1.1678 +    try{
  1.1679 +        //TODO: probably self-referencing structures within a document tree
  1.1680 +        //preventing it from being entirely garbage collected once orphaned.
  1.1681 +        //Should have code to walk tree and break all links between contained
  1.1682 +        //objects.
  1.1683 +        frame.contentDocument = null;
  1.1684 +        if(frame.contentWindow){
  1.1685 +            frame.contentWindow.close();
  1.1686 +        }
  1.1687 +        gc();
  1.1688 +    }catch(e){
  1.1689 +        console.log(e);
  1.1690 +    }
  1.1691 +};
  1.1692 +
  1.1693 +/**
  1.1694 + * Makes an object window-like by proxying object accessors
  1.1695 + * @param {Object} scope
  1.1696 + * @param {Object} parent
  1.1697 + */
  1.1698 +Envjs.proxy = function(scope, parent) {
  1.1699 +    try{
  1.1700 +        if(scope+'' == '[object global]'){
  1.1701 +            return scope
  1.1702 +        }else{
  1.1703 +            return __context__.createGlobal();
  1.1704 +        }
  1.1705 +    }catch(e){
  1.1706 +        console.log('failed to init standard objects %s %s \n%s', scope, parent, e);
  1.1707 +    }
  1.1708 +
  1.1709 +};
  1.1710 +
  1.1711 +/**
  1.1712 + * @author john resig & the envjs team
  1.1713 + * @uri http://www.envjs.com/
  1.1714 + * @copyright 2008-2010
  1.1715 + * @license MIT
  1.1716 + */
  1.1717 +//CLOSURE_END
  1.1718 +}());
  1.1719 +
  1.1720 +/**
  1.1721 + * @author envjs team
  1.1722 + */
  1.1723 +var Console,
  1.1724 +    console;
  1.1725 +
  1.1726 +/*
  1.1727 + * Envjs console.1.2.13 
  1.1728 + * Pure JavaScript Browser Environment
  1.1729 + * By John Resig <http://ejohn.org/> and the Envjs Team
  1.1730 + * Copyright 2008-2010 John Resig, under the MIT License
  1.1731 + */
  1.1732 +
  1.1733 +//CLOSURE_START
  1.1734 +(function(){
  1.1735 +
  1.1736 +
  1.1737 +
  1.1738 +
  1.1739 +
  1.1740 +/**
  1.1741 + * @author envjs team
  1.1742 + * borrowed 99%-ish with love from firebug-lite
  1.1743 + *
  1.1744 + * http://wiki.commonjs.org/wiki/Console
  1.1745 + */
  1.1746 +Console = function(module){
  1.1747 +    var $level,
  1.1748 +    $logger,
  1.1749 +    $null = function(){};
  1.1750 +
  1.1751 +
  1.1752 +    if(Envjs[module] && Envjs[module].loglevel){
  1.1753 +        $level = Envjs.module.loglevel;
  1.1754 +        $logger = {
  1.1755 +            log: function(level){
  1.1756 +                logFormatted(arguments, (module)+" ");
  1.1757 +            },
  1.1758 +            debug: $level>1 ? $null: function() {
  1.1759 +                logFormatted(arguments, (module)+" debug");
  1.1760 +            },
  1.1761 +            info: $level>2 ? $null:function(){
  1.1762 +                logFormatted(arguments, (module)+" info");
  1.1763 +            },
  1.1764 +            warn: $level>3 ? $null:function(){
  1.1765 +                logFormatted(arguments, (module)+" warning");
  1.1766 +            },
  1.1767 +            error: $level>4 ? $null:function(){
  1.1768 +                logFormatted(arguments, (module)+" error");
  1.1769 +            }
  1.1770 +        };
  1.1771 +    } else {
  1.1772 +        $logger = {
  1.1773 +            log: function(level){
  1.1774 +                logFormatted(arguments, "");
  1.1775 +            },
  1.1776 +            debug: $null,
  1.1777 +            info: $null,
  1.1778 +            warn: $null,
  1.1779 +            error: $null
  1.1780 +        };
  1.1781 +    }
  1.1782 +
  1.1783 +    return $logger;
  1.1784 +};
  1.1785 +
  1.1786 +console = new Console("console",1);
  1.1787 +
  1.1788 +function logFormatted(objects, className)
  1.1789 +{
  1.1790 +    var html = [];
  1.1791 +
  1.1792 +    var format = objects[0];
  1.1793 +    var objIndex = 0;
  1.1794 +
  1.1795 +    if (typeof(format) != "string")
  1.1796 +    {
  1.1797 +        format = "";
  1.1798 +        objIndex = -1;
  1.1799 +    }
  1.1800 +
  1.1801 +    var parts = parseFormat(format);
  1.1802 +    for (var i = 0; i < parts.length; ++i)
  1.1803 +    {
  1.1804 +        var part = parts[i];
  1.1805 +        if (part && typeof(part) == "object")
  1.1806 +        {
  1.1807 +            var object = objects[++objIndex];
  1.1808 +            part.appender(object, html);
  1.1809 +        }
  1.1810 +        else {
  1.1811 +            appendText(part, html);
  1.1812 +	}
  1.1813 +    }
  1.1814 +
  1.1815 +    for (var i = objIndex+1; i < objects.length; ++i)
  1.1816 +    {
  1.1817 +        appendText(" ", html);
  1.1818 +
  1.1819 +        var object = objects[i];
  1.1820 +        if (typeof(object) == "string") {
  1.1821 +            appendText(object, html);
  1.1822 +        } else {
  1.1823 +            appendObject(object, html);
  1.1824 +	}
  1.1825 +    }
  1.1826 +
  1.1827 +    Envjs.log(html.join(' '));
  1.1828 +}
  1.1829 +
  1.1830 +function parseFormat(format)
  1.1831 +{
  1.1832 +    var parts = [];
  1.1833 +
  1.1834 +    var reg = /((^%|[^\\]%)(\d+)?(\.)([a-zA-Z]))|((^%|[^\\]%)([a-zA-Z]))/;
  1.1835 +    var appenderMap = {s: appendText, d: appendInteger, i: appendInteger, f: appendFloat};
  1.1836 +
  1.1837 +    for (var m = reg.exec(format); m; m = reg.exec(format))
  1.1838 +    {
  1.1839 +        var type = m[8] ? m[8] : m[5];
  1.1840 +        var appender = type in appenderMap ? appenderMap[type] : appendObject;
  1.1841 +        var precision = m[3] ? parseInt(m[3]) : (m[4] == "." ? -1 : 0);
  1.1842 +
  1.1843 +        parts.push(format.substr(0, m[0][0] == "%" ? m.index : m.index+1));
  1.1844 +        parts.push({appender: appender, precision: precision});
  1.1845 +
  1.1846 +        format = format.substr(m.index+m[0].length);
  1.1847 +    }
  1.1848 +
  1.1849 +    parts.push(format);
  1.1850 +
  1.1851 +    return parts;
  1.1852 +}
  1.1853 +
  1.1854 +function escapeHTML(value)
  1.1855 +{
  1.1856 +    return value;
  1.1857 +}
  1.1858 +
  1.1859 +function objectToString(object)
  1.1860 +{
  1.1861 +    try
  1.1862 +    {
  1.1863 +        return object+"";
  1.1864 +    }
  1.1865 +    catch (exc)
  1.1866 +    {
  1.1867 +        return null;
  1.1868 +    }
  1.1869 +}
  1.1870 +
  1.1871 +// ********************************************************************************************
  1.1872 +
  1.1873 +function appendText(object, html)
  1.1874 +{
  1.1875 +    html.push(escapeHTML(objectToString(object)));
  1.1876 +}
  1.1877 +
  1.1878 +function appendNull(object, html)
  1.1879 +{
  1.1880 +    html.push(escapeHTML(objectToString(object)));
  1.1881 +}
  1.1882 +
  1.1883 +function appendString(object, html)
  1.1884 +{
  1.1885 +    html.push(escapeHTML(objectToString(object)));
  1.1886 +}
  1.1887 +
  1.1888 +function appendInteger(object, html)
  1.1889 +{
  1.1890 +    html.push(escapeHTML(objectToString(object)));
  1.1891 +}
  1.1892 +
  1.1893 +function appendFloat(object, html)
  1.1894 +{
  1.1895 +    html.push(escapeHTML(objectToString(object)));
  1.1896 +}
  1.1897 +
  1.1898 +function appendFunction(object, html)
  1.1899 +{
  1.1900 +    var reName = /function ?(.*?)\(/;
  1.1901 +    var m = reName.exec(objectToString(object));
  1.1902 +    var name = m ? m[1] : "function";
  1.1903 +    html.push(escapeHTML(name));
  1.1904 +}
  1.1905 +
  1.1906 +function appendObject(object, html)
  1.1907 +{
  1.1908 +    try
  1.1909 +    {
  1.1910 +        if (object == undefined) {
  1.1911 +            appendNull("undefined", html);
  1.1912 +        } else if (object == null) {
  1.1913 +            appendNull("null", html);
  1.1914 +        } else if (typeof object == "string") {
  1.1915 +            appendString(object, html);
  1.1916 +	} else if (typeof object == "number") {
  1.1917 +            appendInteger(object, html);
  1.1918 +	} else if (typeof object == "function") {
  1.1919 +            appendFunction(object, html);
  1.1920 +        } else if (object.nodeType == 1) {
  1.1921 +            appendSelector(object, html);
  1.1922 +        } else if (typeof object == "object") {
  1.1923 +            appendObjectFormatted(object, html);
  1.1924 +        } else {
  1.1925 +            appendText(object, html);
  1.1926 +	}
  1.1927 +    }
  1.1928 +    catch (exc)
  1.1929 +    {
  1.1930 +    }
  1.1931 +}
  1.1932 +
  1.1933 +function appendObjectFormatted(object, html)
  1.1934 +{
  1.1935 +    var text = objectToString(object);
  1.1936 +    var reObject = /\[object (.*?)\]/;
  1.1937 +
  1.1938 +    var m = reObject.exec(text);
  1.1939 +    html.push( m ? m[1] : text);
  1.1940 +}
  1.1941 +
  1.1942 +function appendSelector(object, html)
  1.1943 +{
  1.1944 +
  1.1945 +    html.push(escapeHTML(object.nodeName.toLowerCase()));
  1.1946 +    if (object.id) {
  1.1947 +        html.push(escapeHTML(object.id));
  1.1948 +    }
  1.1949 +    if (object.className) {
  1.1950 +        html.push(escapeHTML(object.className));
  1.1951 +    }
  1.1952 +}
  1.1953 +
  1.1954 +function appendNode(node, html)
  1.1955 +{
  1.1956 +    if (node.nodeType == 1)
  1.1957 +    {
  1.1958 +        html.push( node.nodeName.toLowerCase());
  1.1959 +
  1.1960 +        for (var i = 0; i < node.attributes.length; ++i)
  1.1961 +        {
  1.1962 +            var attr = node.attributes[i];
  1.1963 +            if (!attr.specified) {
  1.1964 +                continue;
  1.1965 +	    }
  1.1966 +
  1.1967 +            html.push( attr.nodeName.toLowerCase(),escapeHTML(attr.nodeValue));
  1.1968 +        }
  1.1969 +
  1.1970 +        if (node.firstChild)
  1.1971 +        {
  1.1972 +            for (var child = node.firstChild; child; child = child.nextSibling) {
  1.1973 +                appendNode(child, html);
  1.1974 +	    }
  1.1975 +
  1.1976 +            html.push( node.nodeName.toLowerCase());
  1.1977 +        }
  1.1978 +    }
  1.1979 +    else if (node.nodeType === 3)
  1.1980 +    {
  1.1981 +        html.push(escapeHTML(node.nodeValue));
  1.1982 +    }
  1.1983 +};
  1.1984 +
  1.1985 +/**
  1.1986 + * @author john resig & the envjs team
  1.1987 + * @uri http://www.envjs.com/
  1.1988 + * @copyright 2008-2010
  1.1989 + * @license MIT
  1.1990 + */
  1.1991 +//CLOSURE_END
  1.1992 +}());
  1.1993 +/*
  1.1994 + * Envjs dom.1.2.13 
  1.1995 + * Pure JavaScript Browser Environment
  1.1996 + * By John Resig <http://ejohn.org/> and the Envjs Team
  1.1997 + * Copyright 2008-2010 John Resig, under the MIT License
  1.1998 + * 
  1.1999 + * Parts of the implementation were originally written by:\
  1.2000 + * and Jon van Noort   (jon@webarcana.com.au) \
  1.2001 + * and David Joham     (djoham@yahoo.com)",\ 
  1.2002 + * and Scott Severtson
  1.2003 + * 
  1.2004 + * This file simply provides the global definitions we need to \
  1.2005 + * be able to correctly implement to core browser DOM interfaces."
  1.2006 + */
  1.2007 +
  1.2008 +var Attr,
  1.2009 +    CDATASection,
  1.2010 +    CharacterData,
  1.2011 +    Comment,
  1.2012 +    Document,
  1.2013 +    DocumentFragment,
  1.2014 +    DocumentType,
  1.2015 +    DOMException,
  1.2016 +    DOMImplementation,
  1.2017 +    Element,
  1.2018 +    Entity,
  1.2019 +    EntityReference,
  1.2020 +    NamedNodeMap,
  1.2021 +    Namespace,
  1.2022 +    Node,
  1.2023 +    NodeList,
  1.2024 +    Notation,
  1.2025 +    ProcessingInstruction,
  1.2026 +    Text,
  1.2027 +    Range,
  1.2028 +    XMLSerializer,
  1.2029 +    DOMParser;
  1.2030 +
  1.2031 +
  1.2032 +
  1.2033 +/*
  1.2034 + * Envjs dom.1.2.13 
  1.2035 + * Pure JavaScript Browser Environment
  1.2036 + * By John Resig <http://ejohn.org/> and the Envjs Team
  1.2037 + * Copyright 2008-2010 John Resig, under the MIT License
  1.2038 + */
  1.2039 +
  1.2040 +//CLOSURE_START
  1.2041 +(function(){
  1.2042 +
  1.2043 +
  1.2044 +
  1.2045 +
  1.2046 +
  1.2047 +/**
  1.2048 + * @author john resig
  1.2049 + */
  1.2050 +// Helper method for extending one object with another.
  1.2051 +function __extend__(a,b) {
  1.2052 +    for ( var i in b ) {
  1.2053 +        var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
  1.2054 +        if ( g || s ) {
  1.2055 +            if ( g ) { a.__defineGetter__(i, g); }
  1.2056 +            if ( s ) { a.__defineSetter__(i, s); }
  1.2057 +        } else {
  1.2058 +            a[i] = b[i];
  1.2059 +        }
  1.2060 +    } return a;
  1.2061 +}
  1.2062 +
  1.2063 +/**
  1.2064 + * @author john resig
  1.2065 + */
  1.2066 +//from jQuery
  1.2067 +function __setArray__( target, array ) {
  1.2068 +    // Resetting the length to 0, then using the native Array push
  1.2069 +    // is a super-fast way to populate an object with array-like properties
  1.2070 +    target.length = 0;
  1.2071 +    Array.prototype.push.apply( target, array );
  1.2072 +}
  1.2073 +
  1.2074 +/**
  1.2075 + * @class  NodeList -
  1.2076 + *      provides the abstraction of an ordered collection of nodes
  1.2077 + *
  1.2078 + * @param  ownerDocument : Document - the ownerDocument
  1.2079 + * @param  parentNode    : Node - the node that the NodeList is attached to (or null)
  1.2080 + */
  1.2081 +NodeList = function(ownerDocument, parentNode) {
  1.2082 +    this.length = 0;
  1.2083 +    this.parentNode = parentNode;
  1.2084 +    this.ownerDocument = ownerDocument;
  1.2085 +    this._readonly = false;
  1.2086 +    __setArray__(this, []);
  1.2087 +};
  1.2088 +
  1.2089 +__extend__(NodeList.prototype, {
  1.2090 +    item : function(index) {
  1.2091 +        var ret = null;
  1.2092 +        if ((index >= 0) && (index < this.length)) {
  1.2093 +            // bounds check
  1.2094 +            ret = this[index];
  1.2095 +        }
  1.2096 +        // if the index is out of bounds, default value null is returned
  1.2097 +        return ret;
  1.2098 +    },
  1.2099 +    get xml() {
  1.2100 +        var ret = "",
  1.2101 +            i;
  1.2102 +
  1.2103 +        // create string containing the concatenation of the string values of each child
  1.2104 +        for (i=0; i < this.length; i++) {
  1.2105 +            if(this[i]){
  1.2106 +                if(this[i].nodeType == Node.TEXT_NODE && i>0 &&
  1.2107 +                   this[i-1].nodeType == Node.TEXT_NODE){
  1.2108 +                    //add a single space between adjacent text nodes
  1.2109 +                    ret += " "+this[i].xml;
  1.2110 +                }else{
  1.2111 +                    ret += this[i].xml;
  1.2112 +                }
  1.2113 +            }
  1.2114 +        }
  1.2115 +        return ret;
  1.2116 +    },
  1.2117 +    toArray: function () {
  1.2118 +        var children = [],
  1.2119 +            i;
  1.2120 +        for ( i=0; i < this.length; i++) {
  1.2121 +            children.push (this[i]);
  1.2122 +        }
  1.2123 +        return children;
  1.2124 +    },
  1.2125 +    toString: function(){
  1.2126 +        return "[object NodeList]";
  1.2127 +    }
  1.2128 +});
  1.2129 +
  1.2130 +
  1.2131 +/**
  1.2132 + * @method __findItemIndex__
  1.2133 + *      find the item index of the node
  1.2134 + * @author Jon van Noort (jon@webarcana.com.au)
  1.2135 + * @param  node : Node
  1.2136 + * @return : int
  1.2137 + */
  1.2138 +var __findItemIndex__ = function (nodelist, node) {
  1.2139 +    var ret = -1, i;
  1.2140 +    for (i=0; i<nodelist.length; i++) {
  1.2141 +        // compare id to each node's _id
  1.2142 +        if (nodelist[i] === node) {
  1.2143 +            // found it!
  1.2144 +            ret = i;
  1.2145 +            break;
  1.2146 +        }
  1.2147 +    }
  1.2148 +    // if node is not found, default value -1 is returned
  1.2149 +    return ret;
  1.2150 +};
  1.2151 +
  1.2152 +/**
  1.2153 + * @method __insertBefore__
  1.2154 + *      insert the specified Node into the NodeList before the specified index
  1.2155 + *      Used by Node.insertBefore(). Note: Node.insertBefore() is responsible
  1.2156 + *      for Node Pointer surgery __insertBefore__ simply modifies the internal
  1.2157 + *      data structure (Array).
  1.2158 + * @param  newChild      : Node - the Node to be inserted
  1.2159 + * @param  refChildIndex : int     - the array index to insert the Node before
  1.2160 + */
  1.2161 +var __insertBefore__ = function(nodelist, newChild, refChildIndex) {
  1.2162 +    if ((refChildIndex >= 0) && (refChildIndex <= nodelist.length)) {
  1.2163 +        // bounds check
  1.2164 +        if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
  1.2165 +            // node is a DocumentFragment
  1.2166 +            // append the children of DocumentFragment
  1.2167 +            Array.prototype.splice.apply(nodelist,
  1.2168 +                [refChildIndex, 0].concat(newChild.childNodes.toArray()));
  1.2169 +        }
  1.2170 +        else {
  1.2171 +            // append the newChild
  1.2172 +            Array.prototype.splice.apply(nodelist,[refChildIndex, 0, newChild]);
  1.2173 +        }
  1.2174 +    }
  1.2175 +};
  1.2176 +
  1.2177 +/**
  1.2178 + * @method __replaceChild__
  1.2179 + *      replace the specified Node in the NodeList at the specified index
  1.2180 + *      Used by Node.replaceChild(). Note: Node.replaceChild() is responsible
  1.2181 + *      for Node Pointer surgery __replaceChild__ simply modifies the internal
  1.2182 + *      data structure (Array).
  1.2183 + *
  1.2184 + * @param  newChild      : Node - the Node to be inserted
  1.2185 + * @param  refChildIndex : int     - the array index to hold the Node
  1.2186 + */
  1.2187 +var __replaceChild__ = function(nodelist, newChild, refChildIndex) {
  1.2188 +    var ret = null;
  1.2189 +
  1.2190 +    // bounds check
  1.2191 +    if ((refChildIndex >= 0) && (refChildIndex < nodelist.length)) {
  1.2192 +        // preserve old child for return
  1.2193 +        ret = nodelist[refChildIndex];
  1.2194 +
  1.2195 +        if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
  1.2196 +            // node is a DocumentFragment
  1.2197 +            // get array containing children prior to refChild
  1.2198 +            Array.prototype.splice.apply(nodelist,
  1.2199 +                [refChildIndex, 1].concat(newChild.childNodes.toArray()));
  1.2200 +        }
  1.2201 +        else {
  1.2202 +            // simply replace node in array (links between Nodes are
  1.2203 +            // made at higher level)
  1.2204 +            nodelist[refChildIndex] = newChild;
  1.2205 +        }
  1.2206 +    }
  1.2207 +    // return replaced node
  1.2208 +    return ret;
  1.2209 +};
  1.2210 +
  1.2211 +/**
  1.2212 + * @method __removeChild__
  1.2213 + *      remove the specified Node in the NodeList at the specified index
  1.2214 + *      Used by Node.removeChild(). Note: Node.removeChild() is responsible
  1.2215 + *      for Node Pointer surgery __removeChild__ simply modifies the internal
  1.2216 + *      data structure (Array).
  1.2217 + * @param  refChildIndex : int - the array index holding the Node to be removed
  1.2218 + */
  1.2219 +var __removeChild__ = function(nodelist, refChildIndex) {
  1.2220 +    var ret = null;
  1.2221 +
  1.2222 +    if (refChildIndex > -1) {
  1.2223 +        // found it!
  1.2224 +        // return removed node
  1.2225 +        ret = nodelist[refChildIndex];
  1.2226 +
  1.2227 +        // rebuild array without removed child
  1.2228 +        Array.prototype.splice.apply(nodelist,[refChildIndex, 1]);
  1.2229 +    }
  1.2230 +    // return removed node
  1.2231 +    return ret;
  1.2232 +};
  1.2233 +
  1.2234 +/**
  1.2235 + * @method __appendChild__
  1.2236 + *      append the specified Node to the NodeList. Used by Node.appendChild().
  1.2237 + *      Note: Node.appendChild() is responsible for Node Pointer surgery
  1.2238 + *      __appendChild__ simply modifies the internal data structure (Array).
  1.2239 + * @param  newChild      : Node - the Node to be inserted
  1.2240 + */
  1.2241 +var __appendChild__ = function(nodelist, newChild) {
  1.2242 +    if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
  1.2243 +        // node is a DocumentFragment
  1.2244 +        // append the children of DocumentFragment
  1.2245 +        Array.prototype.push.apply(nodelist, newChild.childNodes.toArray() );
  1.2246 +    } else {
  1.2247 +        // simply add node to array (links between Nodes are made at higher level)
  1.2248 +        Array.prototype.push.apply(nodelist, [newChild]);
  1.2249 +    }
  1.2250 +
  1.2251 +};
  1.2252 +
  1.2253 +/**
  1.2254 + * @method __cloneNodes__ -
  1.2255 + *      Returns a NodeList containing clones of the Nodes in this NodeList
  1.2256 + * @param  deep : boolean -
  1.2257 + *      If true, recursively clone the subtree under each of the nodes;
  1.2258 + *      if false, clone only the nodes themselves (and their attributes,
  1.2259 + *      if it is an Element).
  1.2260 + * @param  parentNode : Node - the new parent of the cloned NodeList
  1.2261 + * @return : NodeList - NodeList containing clones of the Nodes in this NodeList
  1.2262 + */
  1.2263 +var __cloneNodes__ = function(nodelist, deep, parentNode) {
  1.2264 +    var cloneNodeList = new NodeList(nodelist.ownerDocument, parentNode);
  1.2265 +
  1.2266 +    // create list containing clones of each child
  1.2267 +    for (var i=0; i < nodelist.length; i++) {
  1.2268 +        __appendChild__(cloneNodeList, nodelist[i].cloneNode(deep));
  1.2269 +    }
  1.2270 +
  1.2271 +    return cloneNodeList;
  1.2272 +};
  1.2273 +
  1.2274 +
  1.2275 +var __ownerDocument__ = function(node){
  1.2276 +    return (node.nodeType == Node.DOCUMENT_NODE)?node:node.ownerDocument;
  1.2277 +};
  1.2278 +
  1.2279 +/**
  1.2280 + * @class  Node -
  1.2281 + *      The Node interface is the primary datatype for the entire
  1.2282 + *      Document Object Model. It represents a single node in the
  1.2283 + *      document tree.
  1.2284 + * @param  ownerDocument : Document - The Document object associated with this node.
  1.2285 + */
  1.2286 +
  1.2287 +Node = function(ownerDocument) {
  1.2288 +    this.baseURI = 'about:blank';
  1.2289 +    this.namespaceURI = null;
  1.2290 +    this.nodeName = "";
  1.2291 +    this.nodeValue = null;
  1.2292 +
  1.2293 +    // A NodeList that contains all children of this node. If there are no
  1.2294 +    // children, this is a NodeList containing no nodes.  The content of the
  1.2295 +    // returned NodeList is "live" in the sense that, for instance, changes to
  1.2296 +    // the children of the node object that it was created from are immediately
  1.2297 +    // reflected in the nodes returned by the NodeList accessors; it is not a
  1.2298 +    // static snapshot of the content of the node. This is true for every
  1.2299 +    // NodeList, including the ones returned by the getElementsByTagName method.
  1.2300 +    this.childNodes      = new NodeList(ownerDocument, this);
  1.2301 +
  1.2302 +    // The first child of this node. If there is no such node, this is null
  1.2303 +    this.firstChild      = null;
  1.2304 +    // The last child of this node. If there is no such node, this is null.
  1.2305 +    this.lastChild       = null;
  1.2306 +    // The node immediately preceding this node. If there is no such node,
  1.2307 +    // this is null.
  1.2308 +    this.previousSibling = null;
  1.2309 +    // The node immediately following this node. If there is no such node,
  1.2310 +    // this is null.
  1.2311 +    this.nextSibling     = null;
  1.2312 +
  1.2313 +    this.attributes = null;
  1.2314 +    // The namespaces in scope for this node
  1.2315 +    this._namespaces = new NamespaceNodeMap(ownerDocument, this);
  1.2316 +    this._readonly = false;
  1.2317 +
  1.2318 +    //IMPORTANT: These must come last so rhino will not iterate parent
  1.2319 +    //           properties before child properties.  (qunit.equiv issue)
  1.2320 +
  1.2321 +    // The parent of this node. All nodes, except Document, DocumentFragment,
  1.2322 +    // and Attr may have a parent.  However, if a node has just been created
  1.2323 +    // and not yet added to the tree, or if it has been removed from the tree,
  1.2324 +    // this is null
  1.2325 +    this.parentNode      = null;
  1.2326 +    // The Document object associated with this node
  1.2327 +    this.ownerDocument = ownerDocument;
  1.2328 +
  1.2329 +};
  1.2330 +
  1.2331 +// nodeType constants
  1.2332 +Node.ELEMENT_NODE                = 1;
  1.2333 +Node.ATTRIBUTE_NODE              = 2;
  1.2334 +Node.TEXT_NODE                   = 3;
  1.2335 +Node.CDATA_SECTION_NODE          = 4;
  1.2336 +Node.ENTITY_REFERENCE_NODE       = 5;
  1.2337 +Node.ENTITY_NODE                 = 6;
  1.2338 +Node.PROCESSING_INSTRUCTION_NODE = 7;
  1.2339 +Node.COMMENT_NODE                = 8;
  1.2340 +Node.DOCUMENT_NODE               = 9;
  1.2341 +Node.DOCUMENT_TYPE_NODE          = 10;
  1.2342 +Node.DOCUMENT_FRAGMENT_NODE      = 11;
  1.2343 +Node.NOTATION_NODE               = 12;
  1.2344 +Node.NAMESPACE_NODE              = 13;
  1.2345 +
  1.2346 +Node.DOCUMENT_POSITION_EQUAL        = 0x00;
  1.2347 +Node.DOCUMENT_POSITION_DISCONNECTED = 0x01;
  1.2348 +Node.DOCUMENT_POSITION_PRECEDING    = 0x02;
  1.2349 +Node.DOCUMENT_POSITION_FOLLOWING    = 0x04;
  1.2350 +Node.DOCUMENT_POSITION_CONTAINS     = 0x08;
  1.2351 +Node.DOCUMENT_POSITION_CONTAINED_BY = 0x10;
  1.2352 +Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC      = 0x20;
  1.2353 +
  1.2354 +
  1.2355 +__extend__(Node.prototype, {
  1.2356 +    get localName(){
  1.2357 +        return this.prefix?
  1.2358 +            this.nodeName.substring(this.prefix.length+1, this.nodeName.length):
  1.2359 +            this.nodeName;
  1.2360 +    },
  1.2361 +    get prefix(){
  1.2362 +        return this.nodeName.split(':').length>1?
  1.2363 +            this.nodeName.split(':')[0]:
  1.2364 +            null;
  1.2365 +    },
  1.2366 +    set prefix(value){
  1.2367 +        if(value === null){
  1.2368 +            this.nodeName = this.localName;
  1.2369 +        }else{
  1.2370 +            this.nodeName = value+':'+this.localName;
  1.2371 +        }
  1.2372 +    },
  1.2373 +    hasAttributes : function() {
  1.2374 +        if (this.attributes.length == 0) {
  1.2375 +            return false;
  1.2376 +        }else{
  1.2377 +            return true;
  1.2378 +        }
  1.2379 +    },
  1.2380 +    get textContent(){
  1.2381 +        return __recursivelyGatherText__(this);
  1.2382 +    },
  1.2383 +    set textContent(newText){
  1.2384 +        while(this.firstChild != null){
  1.2385 +            this.removeChild( this.firstChild );
  1.2386 +        }
  1.2387 +        var text = this.ownerDocument.createTextNode(newText);
  1.2388 +        this.appendChild(text);
  1.2389 +    },
  1.2390 +    insertBefore : function(newChild, refChild) {
  1.2391 +        var prevNode;
  1.2392 +
  1.2393 +        if(newChild==null){
  1.2394 +            return newChild;
  1.2395 +        }
  1.2396 +        if(refChild==null){
  1.2397 +            this.appendChild(newChild);
  1.2398 +            return this.newChild;
  1.2399 +        }
  1.2400 +
  1.2401 +        // test for exceptions
  1.2402 +        if (__ownerDocument__(this).implementation.errorChecking) {
  1.2403 +            // throw Exception if Node is readonly
  1.2404 +            if (this._readonly) {
  1.2405 +                throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.2406 +            }
  1.2407 +
  1.2408 +            // throw Exception if newChild was not created by this Document
  1.2409 +            if (__ownerDocument__(this) != __ownerDocument__(newChild)) {
  1.2410 +                throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
  1.2411 +            }
  1.2412 +
  1.2413 +            // throw Exception if the node is an ancestor
  1.2414 +            if (__isAncestor__(this, newChild)) {
  1.2415 +                throw(new DOMException(DOMException.HIERARCHY_REQUEST_ERR));
  1.2416 +            }
  1.2417 +        }
  1.2418 +
  1.2419 +        // if refChild is specified, insert before it
  1.2420 +        if (refChild) {
  1.2421 +            // find index of refChild
  1.2422 +            var itemIndex = __findItemIndex__(this.childNodes, refChild);
  1.2423 +            // throw Exception if there is no child node with this id
  1.2424 +            if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
  1.2425 +                throw(new DOMException(DOMException.NOT_FOUND_ERR));
  1.2426 +            }
  1.2427 +
  1.2428 +            // if the newChild is already in the tree,
  1.2429 +            var newChildParent = newChild.parentNode;
  1.2430 +            if (newChildParent) {
  1.2431 +                // remove it
  1.2432 +                newChildParent.removeChild(newChild);
  1.2433 +            }
  1.2434 +
  1.2435 +            // insert newChild into childNodes
  1.2436 +            __insertBefore__(this.childNodes, newChild, itemIndex);
  1.2437 +
  1.2438 +            // do node pointer surgery
  1.2439 +            prevNode = refChild.previousSibling;
  1.2440 +
  1.2441 +            // handle DocumentFragment
  1.2442 +            if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
  1.2443 +                if (newChild.childNodes.length > 0) {
  1.2444 +                    // set the parentNode of DocumentFragment's children
  1.2445 +                    for (var ind = 0; ind < newChild.childNodes.length; ind++) {
  1.2446 +                        newChild.childNodes[ind].parentNode = this;
  1.2447 +                    }
  1.2448 +
  1.2449 +                    // link refChild to last child of DocumentFragment
  1.2450 +                    refChild.previousSibling = newChild.childNodes[newChild.childNodes.length-1];
  1.2451 +                }
  1.2452 +            }else {
  1.2453 +                // set the parentNode of the newChild
  1.2454 +                newChild.parentNode = this;
  1.2455 +                // link refChild to newChild
  1.2456 +                refChild.previousSibling = newChild;
  1.2457 +            }
  1.2458 +
  1.2459 +        }else {
  1.2460 +            // otherwise, append to end
  1.2461 +            prevNode = this.lastChild;
  1.2462 +            this.appendChild(newChild);
  1.2463 +        }
  1.2464 +
  1.2465 +        if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
  1.2466 +            // do node pointer surgery for DocumentFragment
  1.2467 +            if (newChild.childNodes.length > 0) {
  1.2468 +                if (prevNode) {
  1.2469 +                    prevNode.nextSibling = newChild.childNodes[0];
  1.2470 +                }else {
  1.2471 +                    // this is the first child in the list
  1.2472 +                    this.firstChild = newChild.childNodes[0];
  1.2473 +                }
  1.2474 +                newChild.childNodes[0].previousSibling = prevNode;
  1.2475 +                newChild.childNodes[newChild.childNodes.length-1].nextSibling = refChild;
  1.2476 +            }
  1.2477 +        }else {
  1.2478 +            // do node pointer surgery for newChild
  1.2479 +            if (prevNode) {
  1.2480 +                prevNode.nextSibling = newChild;
  1.2481 +            }else {
  1.2482 +                // this is the first child in the list
  1.2483 +                this.firstChild = newChild;
  1.2484 +            }
  1.2485 +            newChild.previousSibling = prevNode;
  1.2486 +            newChild.nextSibling     = refChild;
  1.2487 +        }
  1.2488 +
  1.2489 +        return newChild;
  1.2490 +    },
  1.2491 +    replaceChild : function(newChild, oldChild) {
  1.2492 +        var ret = null;
  1.2493 +
  1.2494 +        if(newChild==null || oldChild==null){
  1.2495 +            return oldChild;
  1.2496 +        }
  1.2497 +
  1.2498 +        // test for exceptions
  1.2499 +        if (__ownerDocument__(this).implementation.errorChecking) {
  1.2500 +            // throw Exception if Node is readonly
  1.2501 +            if (this._readonly) {
  1.2502 +                throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.2503 +            }
  1.2504 +
  1.2505 +            // throw Exception if newChild was not created by this Document
  1.2506 +            if (__ownerDocument__(this) != __ownerDocument__(newChild)) {
  1.2507 +                throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
  1.2508 +            }
  1.2509 +
  1.2510 +            // throw Exception if the node is an ancestor
  1.2511 +            if (__isAncestor__(this, newChild)) {
  1.2512 +                throw(new DOMException(DOMException.HIERARCHY_REQUEST_ERR));
  1.2513 +            }
  1.2514 +        }
  1.2515 +
  1.2516 +        // get index of oldChild
  1.2517 +        var index = __findItemIndex__(this.childNodes, oldChild);
  1.2518 +
  1.2519 +        // throw Exception if there is no child node with this id
  1.2520 +        if (__ownerDocument__(this).implementation.errorChecking && (index < 0)) {
  1.2521 +            throw(new DOMException(DOMException.NOT_FOUND_ERR));
  1.2522 +        }
  1.2523 +
  1.2524 +        // if the newChild is already in the tree,
  1.2525 +        var newChildParent = newChild.parentNode;
  1.2526 +        if (newChildParent) {
  1.2527 +            // remove it
  1.2528 +            newChildParent.removeChild(newChild);
  1.2529 +        }
  1.2530 +
  1.2531 +        // add newChild to childNodes
  1.2532 +        ret = __replaceChild__(this.childNodes,newChild, index);
  1.2533 +
  1.2534 +
  1.2535 +        if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
  1.2536 +            // do node pointer surgery for Document Fragment
  1.2537 +            if (newChild.childNodes.length > 0) {
  1.2538 +                for (var ind = 0; ind < newChild.childNodes.length; ind++) {
  1.2539 +                    newChild.childNodes[ind].parentNode = this;
  1.2540 +                }
  1.2541 +
  1.2542 +                if (oldChild.previousSibling) {
  1.2543 +                    oldChild.previousSibling.nextSibling = newChild.childNodes[0];
  1.2544 +                } else {
  1.2545 +                    this.firstChild = newChild.childNodes[0];
  1.2546 +                }
  1.2547 +
  1.2548 +                if (oldChild.nextSibling) {
  1.2549 +                    oldChild.nextSibling.previousSibling = newChild;
  1.2550 +                } else {
  1.2551 +                    this.lastChild = newChild.childNodes[newChild.childNodes.length-1];
  1.2552 +                }
  1.2553 +
  1.2554 +                newChild.childNodes[0].previousSibling = oldChild.previousSibling;
  1.2555 +                newChild.childNodes[newChild.childNodes.length-1].nextSibling = oldChild.nextSibling;
  1.2556 +            }
  1.2557 +        } else {
  1.2558 +            // do node pointer surgery for newChild
  1.2559 +            newChild.parentNode = this;
  1.2560 +
  1.2561 +            if (oldChild.previousSibling) {
  1.2562 +                oldChild.previousSibling.nextSibling = newChild;
  1.2563 +            }else{
  1.2564 +                this.firstChild = newChild;
  1.2565 +            }
  1.2566 +            if (oldChild.nextSibling) {
  1.2567 +                oldChild.nextSibling.previousSibling = newChild;
  1.2568 +            }else{
  1.2569 +                this.lastChild = newChild;
  1.2570 +            }
  1.2571 +            newChild.previousSibling = oldChild.previousSibling;
  1.2572 +            newChild.nextSibling = oldChild.nextSibling;
  1.2573 +        }
  1.2574 +
  1.2575 +        return ret;
  1.2576 +    },
  1.2577 +    removeChild : function(oldChild) {
  1.2578 +        if(!oldChild){
  1.2579 +            return null;
  1.2580 +        }
  1.2581 +        // throw Exception if NamedNodeMap is readonly
  1.2582 +        if (__ownerDocument__(this).implementation.errorChecking &&
  1.2583 +            (this._readonly || oldChild._readonly)) {
  1.2584 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.2585 +        }
  1.2586 +
  1.2587 +        // get index of oldChild
  1.2588 +        var itemIndex = __findItemIndex__(this.childNodes, oldChild);
  1.2589 +
  1.2590 +        // throw Exception if there is no child node with this id
  1.2591 +        if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
  1.2592 +            throw(new DOMException(DOMException.NOT_FOUND_ERR));
  1.2593 +        }
  1.2594 +
  1.2595 +        // remove oldChild from childNodes
  1.2596 +        __removeChild__(this.childNodes, itemIndex);
  1.2597 +
  1.2598 +        // do node pointer surgery
  1.2599 +        oldChild.parentNode = null;
  1.2600 +
  1.2601 +        if (oldChild.previousSibling) {
  1.2602 +            oldChild.previousSibling.nextSibling = oldChild.nextSibling;
  1.2603 +        }else {
  1.2604 +            this.firstChild = oldChild.nextSibling;
  1.2605 +        }
  1.2606 +        if (oldChild.nextSibling) {
  1.2607 +            oldChild.nextSibling.previousSibling = oldChild.previousSibling;
  1.2608 +        }else {
  1.2609 +            this.lastChild = oldChild.previousSibling;
  1.2610 +        }
  1.2611 +
  1.2612 +        oldChild.previousSibling = null;
  1.2613 +        oldChild.nextSibling = null;
  1.2614 +
  1.2615 +        return oldChild;
  1.2616 +    },
  1.2617 +    appendChild : function(newChild) {
  1.2618 +        if(!newChild){
  1.2619 +            return null;
  1.2620 +        }
  1.2621 +        // test for exceptions
  1.2622 +        if (__ownerDocument__(this).implementation.errorChecking) {
  1.2623 +            // throw Exception if Node is readonly
  1.2624 +            if (this._readonly) {
  1.2625 +                throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.2626 +            }
  1.2627 +
  1.2628 +            // throw Exception if arg was not created by this Document
  1.2629 +            if (__ownerDocument__(this) != __ownerDocument__(this)) {
  1.2630 +                throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
  1.2631 +            }
  1.2632 +
  1.2633 +            // throw Exception if the node is an ancestor
  1.2634 +            if (__isAncestor__(this, newChild)) {
  1.2635 +              throw(new DOMException(DOMException.HIERARCHY_REQUEST_ERR));
  1.2636 +            }
  1.2637 +        }
  1.2638 +
  1.2639 +        // if the newChild is already in the tree,
  1.2640 +        var newChildParent = newChild.parentNode;
  1.2641 +        if (newChildParent) {
  1.2642 +            // remove it
  1.2643 +           //console.debug('removing node %s', newChild);
  1.2644 +            newChildParent.removeChild(newChild);
  1.2645 +        }
  1.2646 +
  1.2647 +        // add newChild to childNodes
  1.2648 +        __appendChild__(this.childNodes, newChild);
  1.2649 +
  1.2650 +        if (newChild.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
  1.2651 +            // do node pointer surgery for DocumentFragment
  1.2652 +            if (newChild.childNodes.length > 0) {
  1.2653 +                for (var ind = 0; ind < newChild.childNodes.length; ind++) {
  1.2654 +                    newChild.childNodes[ind].parentNode = this;
  1.2655 +                }
  1.2656 +
  1.2657 +                if (this.lastChild) {
  1.2658 +                    this.lastChild.nextSibling = newChild.childNodes[0];
  1.2659 +                    newChild.childNodes[0].previousSibling = this.lastChild;
  1.2660 +                    this.lastChild = newChild.childNodes[newChild.childNodes.length-1];
  1.2661 +                } else {
  1.2662 +                    this.lastChild = newChild.childNodes[newChild.childNodes.length-1];
  1.2663 +                    this.firstChild = newChild.childNodes[0];
  1.2664 +                }
  1.2665 +            }
  1.2666 +        } else {
  1.2667 +            // do node pointer surgery for newChild
  1.2668 +            newChild.parentNode = this;
  1.2669 +            if (this.lastChild) {
  1.2670 +                this.lastChild.nextSibling = newChild;
  1.2671 +                newChild.previousSibling = this.lastChild;
  1.2672 +                this.lastChild = newChild;
  1.2673 +            } else {
  1.2674 +                this.lastChild = newChild;
  1.2675 +                this.firstChild = newChild;
  1.2676 +            }
  1.2677 +       }
  1.2678 +       return newChild;
  1.2679 +    },
  1.2680 +    hasChildNodes : function() {
  1.2681 +        return (this.childNodes.length > 0);
  1.2682 +    },
  1.2683 +    cloneNode: function(deep) {
  1.2684 +        // use importNode to clone this Node
  1.2685 +        //do not throw any exceptions
  1.2686 +        try {
  1.2687 +            return __ownerDocument__(this).importNode(this, deep);
  1.2688 +        } catch (e) {
  1.2689 +            //there shouldn't be any exceptions, but if there are, return null
  1.2690 +            // may want to warn: $debug("could not clone node: "+e.code);
  1.2691 +            return null;
  1.2692 +        }
  1.2693 +    },
  1.2694 +    normalize : function() {
  1.2695 +        var i;
  1.2696 +        var inode;
  1.2697 +        var nodesToRemove = new NodeList();
  1.2698 +
  1.2699 +        if (this.nodeType == Node.ELEMENT_NODE || this.nodeType == Node.DOCUMENT_NODE) {
  1.2700 +            var adjacentTextNode = null;
  1.2701 +
  1.2702 +            // loop through all childNodes
  1.2703 +            for(i = 0; i < this.childNodes.length; i++) {
  1.2704 +                inode = this.childNodes.item(i);
  1.2705 +
  1.2706 +                if (inode.nodeType == Node.TEXT_NODE) {
  1.2707 +                    // this node is a text node
  1.2708 +                    if (inode.length < 1) {
  1.2709 +                        // this text node is empty
  1.2710 +                        // add this node to the list of nodes to be remove
  1.2711 +                        __appendChild__(nodesToRemove, inode);
  1.2712 +                    }else {
  1.2713 +                        if (adjacentTextNode) {
  1.2714 +                            // previous node was also text
  1.2715 +                            adjacentTextNode.appendData(inode.data);
  1.2716 +                            // merge the data in adjacent text nodes
  1.2717 +                            // add this node to the list of nodes to be removed
  1.2718 +                            __appendChild__(nodesToRemove, inode);
  1.2719 +                        } else {
  1.2720 +                            // remember this node for next cycle
  1.2721 +                            adjacentTextNode = inode;
  1.2722 +                        }
  1.2723 +                    }
  1.2724 +                } else {
  1.2725 +                    // (soon to be) previous node is not a text node
  1.2726 +                    adjacentTextNode = null;
  1.2727 +                    // normalize non Text childNodes
  1.2728 +                    inode.normalize();
  1.2729 +                }
  1.2730 +            }
  1.2731 +
  1.2732 +            // remove redundant Text Nodes
  1.2733 +            for(i = 0; i < nodesToRemove.length; i++) {
  1.2734 +                inode = nodesToRemove.item(i);
  1.2735 +                inode.parentNode.removeChild(inode);
  1.2736 +            }
  1.2737 +        }
  1.2738 +    },
  1.2739 +    isSupported : function(feature, version) {
  1.2740 +        // use Implementation.hasFeature to determine if this feature is supported
  1.2741 +        return __ownerDocument__(this).implementation.hasFeature(feature, version);
  1.2742 +    },
  1.2743 +    getElementsByTagName : function(tagname) {
  1.2744 +        // delegate to _getElementsByTagNameRecursive
  1.2745 +        // recurse childNodes
  1.2746 +        var nodelist = new NodeList(__ownerDocument__(this));
  1.2747 +        for (var i = 0; i < this.childNodes.length; i++) {
  1.2748 +            __getElementsByTagNameRecursive__(this.childNodes.item(i),
  1.2749 +                                              tagname,
  1.2750 +                                              nodelist);
  1.2751 +        }
  1.2752 +        return nodelist;
  1.2753 +    },
  1.2754 +    getElementsByTagNameNS : function(namespaceURI, localName) {
  1.2755 +        // delegate to _getElementsByTagNameNSRecursive
  1.2756 +        return __getElementsByTagNameNSRecursive__(this, namespaceURI, localName,
  1.2757 +            new NodeList(__ownerDocument__(this)));
  1.2758 +    },
  1.2759 +    importNode : function(importedNode, deep) {
  1.2760 +        var i;
  1.2761 +        var importNode;
  1.2762 +
  1.2763 +        //there is no need to perform namespace checks since everything has already gone through them
  1.2764 +        //in order to have gotten into the DOM in the first place. The following line
  1.2765 +        //turns namespace checking off in ._isValidNamespace
  1.2766 +        __ownerDocument__(this).importing = true;
  1.2767 +
  1.2768 +        if (importedNode.nodeType == Node.ELEMENT_NODE) {
  1.2769 +            if (!__ownerDocument__(this).implementation.namespaceAware) {
  1.2770 +                // create a local Element (with the name of the importedNode)
  1.2771 +                importNode = __ownerDocument__(this).createElement(importedNode.tagName);
  1.2772 +
  1.2773 +                // create attributes matching those of the importedNode
  1.2774 +                for(i = 0; i < importedNode.attributes.length; i++) {
  1.2775 +                    importNode.setAttribute(importedNode.attributes.item(i).name, importedNode.attributes.item(i).value);
  1.2776 +                }
  1.2777 +            } else {
  1.2778 +                // create a local Element (with the name & namespaceURI of the importedNode)
  1.2779 +                importNode = __ownerDocument__(this).createElementNS(importedNode.namespaceURI, importedNode.nodeName);
  1.2780 +
  1.2781 +                // create attributes matching those of the importedNode
  1.2782 +                for(i = 0; i < importedNode.attributes.length; i++) {
  1.2783 +                    importNode.setAttributeNS(importedNode.attributes.item(i).namespaceURI,
  1.2784 +                        importedNode.attributes.item(i).name, importedNode.attributes.item(i).value);
  1.2785 +                }
  1.2786 +
  1.2787 +                // create namespace definitions matching those of the importedNode
  1.2788 +                for(i = 0; i < importedNode._namespaces.length; i++) {
  1.2789 +                    importNode._namespaces[i] = __ownerDocument__(this).createNamespace(importedNode._namespaces.item(i).localName);
  1.2790 +                    importNode._namespaces[i].value = importedNode._namespaces.item(i).value;
  1.2791 +                }
  1.2792 +            }
  1.2793 +        } else if (importedNode.nodeType == Node.ATTRIBUTE_NODE) {
  1.2794 +            if (!__ownerDocument__(this).implementation.namespaceAware) {
  1.2795 +                // create a local Attribute (with the name of the importedAttribute)
  1.2796 +                importNode = __ownerDocument__(this).createAttribute(importedNode.name);
  1.2797 +            } else {
  1.2798 +                // create a local Attribute (with the name & namespaceURI of the importedAttribute)
  1.2799 +                importNode = __ownerDocument__(this).createAttributeNS(importedNode.namespaceURI, importedNode.nodeName);
  1.2800 +
  1.2801 +                // create namespace definitions matching those of the importedAttribute
  1.2802 +                for(i = 0; i < importedNode._namespaces.length; i++) {
  1.2803 +                    importNode._namespaces[i] = __ownerDocument__(this).createNamespace(importedNode._namespaces.item(i).localName);
  1.2804 +                    importNode._namespaces[i].value = importedNode._namespaces.item(i).value;
  1.2805 +                }
  1.2806 +            }
  1.2807 +
  1.2808 +            // set the value of the local Attribute to match that of the importedAttribute
  1.2809 +            importNode.value = importedNode.value;
  1.2810 +
  1.2811 +        } else if (importedNode.nodeType == Node.DOCUMENT_FRAGMENT_NODE) {
  1.2812 +            // create a local DocumentFragment
  1.2813 +            importNode = __ownerDocument__(this).createDocumentFragment();
  1.2814 +        } else if (importedNode.nodeType == Node.NAMESPACE_NODE) {
  1.2815 +            // create a local NamespaceNode (with the same name & value as the importedNode)
  1.2816 +            importNode = __ownerDocument__(this).createNamespace(importedNode.nodeName);
  1.2817 +            importNode.value = importedNode.value;
  1.2818 +        } else if (importedNode.nodeType == Node.TEXT_NODE) {
  1.2819 +            // create a local TextNode (with the same data as the importedNode)
  1.2820 +            importNode = __ownerDocument__(this).createTextNode(importedNode.data);
  1.2821 +        } else if (importedNode.nodeType == Node.CDATA_SECTION_NODE) {
  1.2822 +            // create a local CDATANode (with the same data as the importedNode)
  1.2823 +            importNode = __ownerDocument__(this).createCDATASection(importedNode.data);
  1.2824 +        } else if (importedNode.nodeType == Node.PROCESSING_INSTRUCTION_NODE) {
  1.2825 +            // create a local ProcessingInstruction (with the same target & data as the importedNode)
  1.2826 +            importNode = __ownerDocument__(this).createProcessingInstruction(importedNode.target, importedNode.data);
  1.2827 +        } else if (importedNode.nodeType == Node.COMMENT_NODE) {
  1.2828 +            // create a local Comment (with the same data as the importedNode)
  1.2829 +            importNode = __ownerDocument__(this).createComment(importedNode.data);
  1.2830 +        } else {  // throw Exception if nodeType is not supported
  1.2831 +            throw(new DOMException(DOMException.NOT_SUPPORTED_ERR));
  1.2832 +        }
  1.2833 +
  1.2834 +        if (deep) {
  1.2835 +            // recurse childNodes
  1.2836 +            for(i = 0; i < importedNode.childNodes.length; i++) {
  1.2837 +                importNode.appendChild(__ownerDocument__(this).importNode(importedNode.childNodes.item(i), true));
  1.2838 +            }
  1.2839 +        }
  1.2840 +
  1.2841 +        //reset importing
  1.2842 +        __ownerDocument__(this).importing = false;
  1.2843 +        return importNode;
  1.2844 +
  1.2845 +    },
  1.2846 +    contains : function(node){
  1.2847 +        while(node && node != this ){
  1.2848 +            node = node.parentNode;
  1.2849 +        }
  1.2850 +        return !!node;
  1.2851 +    },
  1.2852 +    compareDocumentPosition : function(b){
  1.2853 +        //console.log("comparing document position %s %s", this, b);
  1.2854 +        var i,
  1.2855 +            length,
  1.2856 +            a = this,
  1.2857 +            parent,
  1.2858 +            aparents,
  1.2859 +            bparents;
  1.2860 +        //handle a couple simpler case first
  1.2861 +        if(a === b) {
  1.2862 +            return Node.DOCUMENT_POSITION_EQUAL;
  1.2863 +        }
  1.2864 +        if(a.ownerDocument !== b.ownerDocument) {
  1.2865 +            return Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC|
  1.2866 +               Node.DOCUMENT_POSITION_FOLLOWING|
  1.2867 +               Node.DOCUMENT_POSITION_DISCONNECTED;
  1.2868 +        }
  1.2869 +        if(a.parentNode === b.parentNode){
  1.2870 +            length = a.parentNode.childNodes.length;
  1.2871 +            for(i=0;i<length;i++){
  1.2872 +                if(a.parentNode.childNodes[i] === a){
  1.2873 +                    return Node.DOCUMENT_POSITION_FOLLOWING;
  1.2874 +                }else if(a.parentNode.childNodes[i] === b){
  1.2875 +                    return Node.DOCUMENT_POSITION_PRECEDING;
  1.2876 +                }
  1.2877 +            }
  1.2878 +        }
  1.2879 +
  1.2880 +        if(a.contains(b)) {
  1.2881 +            return Node.DOCUMENT_POSITION_CONTAINED_BY|
  1.2882 +                   Node.DOCUMENT_POSITION_FOLLOWING;
  1.2883 +        }
  1.2884 +        if(b.contains(a)) {
  1.2885 +            return Node.DOCUMENT_POSITION_CONTAINS|
  1.2886 +                   Node.DOCUMENT_POSITION_PRECEDING;
  1.2887 +        }
  1.2888 +        aparents = [];
  1.2889 +        parent = a.parentNode;
  1.2890 +        while(parent){
  1.2891 +            aparents[aparents.length] = parent;
  1.2892 +            parent = parent.parentNode;
  1.2893 +        }
  1.2894 +
  1.2895 +        bparents = [];
  1.2896 +        parent = b.parentNode;
  1.2897 +        while(parent){
  1.2898 +            i = aparents.indexOf(parent);
  1.2899 +            if(i < 0){
  1.2900 +                bparents[bparents.length] = parent;
  1.2901 +                parent = parent.parentNode;
  1.2902 +            }else{
  1.2903 +                //i cant be 0 since we already checked for equal parentNode
  1.2904 +                if(bparents.length > aparents.length){
  1.2905 +                    return Node.DOCUMENT_POSITION_FOLLOWING;
  1.2906 +                }else if(bparents.length < aparents.length){
  1.2907 +                    return Node.DOCUMENT_POSITION_PRECEDING;
  1.2908 +                }else{
  1.2909 +                    //common ancestor diverge point
  1.2910 +                    if (i === 0) {
  1.2911 +                        return Node.DOCUMENT_POSITION_FOLLOWING;
  1.2912 +                    } else {
  1.2913 +                        parent = aparents[i-1];
  1.2914 +                    }
  1.2915 +                    return parent.compareDocumentPosition(bparents.pop());
  1.2916 +                }
  1.2917 +            }
  1.2918 +        }
  1.2919 +
  1.2920 +        return Node.DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC|
  1.2921 +               Node.DOCUMENT_POSITION_DISCONNECTED;
  1.2922 +
  1.2923 +    },
  1.2924 +    toString : function() {
  1.2925 +        return '[object Node]';
  1.2926 +    }
  1.2927 +
  1.2928 +});
  1.2929 +
  1.2930 +
  1.2931 +
  1.2932 +/**
  1.2933 + * @method __getElementsByTagNameRecursive__ - implements getElementsByTagName()
  1.2934 + * @param  elem     : Element  - The element which are checking and then recursing into
  1.2935 + * @param  tagname  : string      - The name of the tag to match on. The special value "*" matches all tags
  1.2936 + * @param  nodeList : NodeList - The accumulating list of matching nodes
  1.2937 + *
  1.2938 + * @return : NodeList
  1.2939 + */
  1.2940 +var __getElementsByTagNameRecursive__ = function (elem, tagname, nodeList) {
  1.2941 +
  1.2942 +    if (elem.nodeType == Node.ELEMENT_NODE || elem.nodeType == Node.DOCUMENT_NODE) {
  1.2943 +
  1.2944 +        if(elem.nodeType !== Node.DOCUMENT_NODE &&
  1.2945 +            ((elem.nodeName.toUpperCase() == tagname.toUpperCase()) ||
  1.2946 +                (tagname == "*")) ){
  1.2947 +            // add matching node to nodeList
  1.2948 +            __appendChild__(nodeList, elem);
  1.2949 +        }
  1.2950 +
  1.2951 +        // recurse childNodes
  1.2952 +        for(var i = 0; i < elem.childNodes.length; i++) {
  1.2953 +            nodeList = __getElementsByTagNameRecursive__(elem.childNodes.item(i), tagname, nodeList);
  1.2954 +        }
  1.2955 +    }
  1.2956 +
  1.2957 +    return nodeList;
  1.2958 +};
  1.2959 +
  1.2960 +/**
  1.2961 + * @method __getElementsByTagNameNSRecursive__
  1.2962 + *      implements getElementsByTagName()
  1.2963 + *
  1.2964 + * @param  elem     : Element  - The element which are checking and then recursing into
  1.2965 + * @param  namespaceURI : string - the namespace URI of the required node
  1.2966 + * @param  localName    : string - the local name of the required node
  1.2967 + * @param  nodeList     : NodeList - The accumulating list of matching nodes
  1.2968 + *
  1.2969 + * @return : NodeList
  1.2970 + */
  1.2971 +var __getElementsByTagNameNSRecursive__ = function(elem, namespaceURI, localName, nodeList) {
  1.2972 +    if (elem.nodeType == Node.ELEMENT_NODE || elem.nodeType == Node.DOCUMENT_NODE) {
  1.2973 +
  1.2974 +        if (((elem.namespaceURI == namespaceURI) || (namespaceURI == "*")) &&
  1.2975 +            ((elem.localName == localName) || (localName == "*"))) {
  1.2976 +            // add matching node to nodeList
  1.2977 +            __appendChild__(nodeList, elem);
  1.2978 +        }
  1.2979 +
  1.2980 +        // recurse childNodes
  1.2981 +        for(var i = 0; i < elem.childNodes.length; i++) {
  1.2982 +            nodeList = __getElementsByTagNameNSRecursive__(
  1.2983 +                elem.childNodes.item(i), namespaceURI, localName, nodeList);
  1.2984 +        }
  1.2985 +    }
  1.2986 +
  1.2987 +    return nodeList;
  1.2988 +};
  1.2989 +
  1.2990 +/**
  1.2991 + * @method __isAncestor__ - returns true if node is ancestor of target
  1.2992 + * @param  target         : Node - The node we are using as context
  1.2993 + * @param  node         : Node - The candidate ancestor node
  1.2994 + * @return : boolean
  1.2995 + */
  1.2996 +var __isAncestor__ = function(target, node) {
  1.2997 +    // if this node matches, return true,
  1.2998 +    // otherwise recurse up (if there is a parentNode)
  1.2999 +    return ((target == node) || ((target.parentNode) && (__isAncestor__(target.parentNode, node))));
  1.3000 +};
  1.3001 +
  1.3002 +
  1.3003 +
  1.3004 +var __recursivelyGatherText__ = function(aNode) {
  1.3005 +    var accumulateText = "",
  1.3006 +        idx,
  1.3007 +        node;
  1.3008 +    for (idx=0;idx < aNode.childNodes.length;idx++){
  1.3009 +        node = aNode.childNodes.item(idx);
  1.3010 +        if(node.nodeType == Node.TEXT_NODE)
  1.3011 +            accumulateText += node.data;
  1.3012 +        else
  1.3013 +            accumulateText += __recursivelyGatherText__(node);
  1.3014 +    }
  1.3015 +    return accumulateText;
  1.3016 +};
  1.3017 +
  1.3018 +/**
  1.3019 + * function __escapeXML__
  1.3020 + * @param  str : string - The string to be escaped
  1.3021 + * @return : string - The escaped string
  1.3022 + */
  1.3023 +var escAmpRegEx = /&(?!(amp;|lt;|gt;|quot|apos;))/g;
  1.3024 +var escLtRegEx = /</g;
  1.3025 +var escGtRegEx = />/g;
  1.3026 +var quotRegEx = /"/g;
  1.3027 +var aposRegEx = /'/g;
  1.3028 +
  1.3029 +function __escapeXML__(str) {
  1.3030 +    str = str.replace(escAmpRegEx, "&amp;").
  1.3031 +            replace(escLtRegEx, "&lt;").
  1.3032 +            replace(escGtRegEx, "&gt;").
  1.3033 +            replace(quotRegEx, "&quot;").
  1.3034 +            replace(aposRegEx, "&apos;");
  1.3035 +
  1.3036 +    return str;
  1.3037 +};
  1.3038 +
  1.3039 +/*
  1.3040 +function __escapeHTML5__(str) {
  1.3041 +    str = str.replace(escAmpRegEx, "&amp;").
  1.3042 +            replace(escLtRegEx, "&lt;").
  1.3043 +            replace(escGtRegEx, "&gt;");
  1.3044 +
  1.3045 +    return str;
  1.3046 +};
  1.3047 +function __escapeHTML5Atribute__(str) {
  1.3048 +    str = str.replace(escAmpRegEx, "&amp;").
  1.3049 +            replace(escLtRegEx, "&lt;").
  1.3050 +            replace(escGtRegEx, "&gt;").
  1.3051 +            replace(quotRegEx, "&quot;").
  1.3052 +            replace(aposRegEx, "&apos;");
  1.3053 +
  1.3054 +    return str;
  1.3055 +};
  1.3056 +*/
  1.3057 +
  1.3058 +/**
  1.3059 + * function __unescapeXML__
  1.3060 + * @param  str : string - The string to be unescaped
  1.3061 + * @return : string - The unescaped string
  1.3062 + */
  1.3063 +var unescAmpRegEx = /&amp;/g;
  1.3064 +var unescLtRegEx = /&lt;/g;
  1.3065 +var unescGtRegEx = /&gt;/g;
  1.3066 +var unquotRegEx = /&quot;/g;
  1.3067 +var unaposRegEx = /&apos;/g;
  1.3068 +function __unescapeXML__(str) {
  1.3069 +    str = str.replace(unescAmpRegEx, "&").
  1.3070 +            replace(unescLtRegEx, "<").
  1.3071 +            replace(unescGtRegEx, ">").
  1.3072 +            replace(unquotRegEx, "\"").
  1.3073 +            replace(unaposRegEx, "'");
  1.3074 +
  1.3075 +    return str;
  1.3076 +};
  1.3077 +
  1.3078 +/**
  1.3079 + * @class  NamedNodeMap -
  1.3080 + *      used to represent collections of nodes that can be accessed by name
  1.3081 + *      typically a set of Element attributes
  1.3082 + *
  1.3083 + * @extends NodeList -
  1.3084 + *      note W3C spec says that this is not the case, but we need an item()
  1.3085 + *      method identical to NodeList's, so why not?
  1.3086 + * @param  ownerDocument : Document - the ownerDocument
  1.3087 + * @param  parentNode    : Node - the node that the NamedNodeMap is attached to (or null)
  1.3088 + */
  1.3089 +NamedNodeMap = function(ownerDocument, parentNode) {
  1.3090 +    NodeList.apply(this, arguments);
  1.3091 +    __setArray__(this, []);
  1.3092 +};
  1.3093 +NamedNodeMap.prototype = new NodeList();
  1.3094 +__extend__(NamedNodeMap.prototype, {
  1.3095 +    add: function(name){
  1.3096 +        this[this.length] = name;
  1.3097 +    },
  1.3098 +    getNamedItem : function(name) {
  1.3099 +        var ret = null;
  1.3100 +        //console.log('NamedNodeMap getNamedItem %s', name);
  1.3101 +        // test that Named Node exists
  1.3102 +        var itemIndex = __findNamedItemIndex__(this, name);
  1.3103 +
  1.3104 +        if (itemIndex > -1) {
  1.3105 +            // found it!
  1.3106 +            ret = this[itemIndex];
  1.3107 +        }
  1.3108 +        // if node is not found, default value null is returned
  1.3109 +        return ret;
  1.3110 +    },
  1.3111 +    setNamedItem : function(arg) {
  1.3112 +      //console.log('setNamedItem %s', arg);
  1.3113 +      // test for exceptions
  1.3114 +      if (__ownerDocument__(this).implementation.errorChecking) {
  1.3115 +            // throw Exception if arg was not created by this Document
  1.3116 +            if (this.ownerDocument != arg.ownerDocument) {
  1.3117 +              throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
  1.3118 +            }
  1.3119 +
  1.3120 +            // throw Exception if DOMNamedNodeMap is readonly
  1.3121 +            if (this._readonly || (this.parentNode && this.parentNode._readonly)) {
  1.3122 +              throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.3123 +            }
  1.3124 +
  1.3125 +            // throw Exception if arg is already an attribute of another Element object
  1.3126 +            if (arg.ownerElement && (arg.ownerElement != this.parentNode)) {
  1.3127 +              throw(new DOMException(DOMException.INUSE_ATTRIBUTE_ERR));
  1.3128 +            }
  1.3129 +      }
  1.3130 +
  1.3131 +     //console.log('setNamedItem __findNamedItemIndex__ ');
  1.3132 +      // get item index
  1.3133 +      var itemIndex = __findNamedItemIndex__(this, arg.name);
  1.3134 +      var ret = null;
  1.3135 +
  1.3136 +     //console.log('setNamedItem __findNamedItemIndex__ %s', itemIndex);
  1.3137 +      if (itemIndex > -1) {                          // found it!
  1.3138 +            ret = this[itemIndex];                // use existing Attribute
  1.3139 +
  1.3140 +            // throw Exception if DOMAttr is readonly
  1.3141 +            if (__ownerDocument__(this).implementation.errorChecking && ret._readonly) {
  1.3142 +              throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.3143 +            } else {
  1.3144 +              this[itemIndex] = arg;                // over-write existing NamedNode
  1.3145 +              this[arg.name.toLowerCase()] = arg;
  1.3146 +            }
  1.3147 +      } else {
  1.3148 +            // add new NamedNode
  1.3149 +           //console.log('setNamedItem add new named node map (by index)');
  1.3150 +            Array.prototype.push.apply(this, [arg]);
  1.3151 +           //console.log('setNamedItem add new named node map (by name) %s %s', arg, arg.name);
  1.3152 +            this[arg.name] = arg;
  1.3153 +           //console.log('finsished setNamedItem add new named node map (by name) %s', arg.name);
  1.3154 +
  1.3155 +      }
  1.3156 +
  1.3157 +     //console.log('setNamedItem parentNode');
  1.3158 +      arg.ownerElement = this.parentNode;            // update ownerElement
  1.3159 +      // return old node or new node
  1.3160 +     //console.log('setNamedItem exit');
  1.3161 +      return ret;
  1.3162 +    },
  1.3163 +    removeNamedItem : function(name) {
  1.3164 +          var ret = null;
  1.3165 +          // test for exceptions
  1.3166 +          // throw Exception if NamedNodeMap is readonly
  1.3167 +          if (__ownerDocument__(this).implementation.errorChecking &&
  1.3168 +                (this._readonly || (this.parentNode && this.parentNode._readonly))) {
  1.3169 +              throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.3170 +          }
  1.3171 +
  1.3172 +          // get item index
  1.3173 +          var itemIndex = __findNamedItemIndex__(this, name);
  1.3174 +
  1.3175 +          // throw Exception if there is no node named name in this map
  1.3176 +          if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
  1.3177 +            throw(new DOMException(DOMException.NOT_FOUND_ERR));
  1.3178 +          }
  1.3179 +
  1.3180 +          // get Node
  1.3181 +          var oldNode = this[itemIndex];
  1.3182 +          //this[oldNode.name] = undefined;
  1.3183 +
  1.3184 +          // throw Exception if Node is readonly
  1.3185 +          if (__ownerDocument__(this).implementation.errorChecking && oldNode._readonly) {
  1.3186 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.3187 +          }
  1.3188 +
  1.3189 +          // return removed node
  1.3190 +          return __removeChild__(this, itemIndex);
  1.3191 +    },
  1.3192 +    getNamedItemNS : function(namespaceURI, localName) {
  1.3193 +        var ret = null;
  1.3194 +
  1.3195 +        // test that Named Node exists
  1.3196 +        var itemIndex = __findNamedItemNSIndex__(this, namespaceURI, localName);
  1.3197 +
  1.3198 +        if (itemIndex > -1) {
  1.3199 +            // found it! return NamedNode
  1.3200 +            ret = this[itemIndex];
  1.3201 +        }
  1.3202 +        // if node is not found, default value null is returned
  1.3203 +        return ret;
  1.3204 +    },
  1.3205 +    setNamedItemNS : function(arg) {
  1.3206 +        //console.log('setNamedItemNS %s', arg);
  1.3207 +        // test for exceptions
  1.3208 +        if (__ownerDocument__(this).implementation.errorChecking) {
  1.3209 +            // throw Exception if NamedNodeMap is readonly
  1.3210 +            if (this._readonly || (this.parentNode && this.parentNode._readonly)) {
  1.3211 +                throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.3212 +            }
  1.3213 +
  1.3214 +            // throw Exception if arg was not created by this Document
  1.3215 +            if (__ownerDocument__(this) != __ownerDocument__(arg)) {
  1.3216 +                throw(new DOMException(DOMException.WRONG_DOCUMENT_ERR));
  1.3217 +            }
  1.3218 +
  1.3219 +            // throw Exception if arg is already an attribute of another Element object
  1.3220 +            if (arg.ownerElement && (arg.ownerElement != this.parentNode)) {
  1.3221 +                throw(new DOMException(DOMException.INUSE_ATTRIBUTE_ERR));
  1.3222 +            }
  1.3223 +        }
  1.3224 +
  1.3225 +        // get item index
  1.3226 +        var itemIndex = __findNamedItemNSIndex__(this, arg.namespaceURI, arg.localName);
  1.3227 +        var ret = null;
  1.3228 +
  1.3229 +        if (itemIndex > -1) {
  1.3230 +            // found it!
  1.3231 +            // use existing Attribute
  1.3232 +            ret = this[itemIndex];
  1.3233 +            // throw Exception if Attr is readonly
  1.3234 +            if (__ownerDocument__(this).implementation.errorChecking && ret._readonly) {
  1.3235 +                throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.3236 +            } else {
  1.3237 +                // over-write existing NamedNode
  1.3238 +                this[itemIndex] = arg;
  1.3239 +            }
  1.3240 +        }else {
  1.3241 +            // add new NamedNode
  1.3242 +            Array.prototype.push.apply(this, [arg]);
  1.3243 +        }
  1.3244 +        arg.ownerElement = this.parentNode;
  1.3245 +
  1.3246 +        // return old node or null
  1.3247 +        return ret;
  1.3248 +        //console.log('finished setNamedItemNS %s', arg);
  1.3249 +    },
  1.3250 +    removeNamedItemNS : function(namespaceURI, localName) {
  1.3251 +          var ret = null;
  1.3252 +
  1.3253 +          // test for exceptions
  1.3254 +          // throw Exception if NamedNodeMap is readonly
  1.3255 +          if (__ownerDocument__(this).implementation.errorChecking && (this._readonly || (this.parentNode && this.parentNode._readonly))) {
  1.3256 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.3257 +          }
  1.3258 +
  1.3259 +          // get item index
  1.3260 +          var itemIndex = __findNamedItemNSIndex__(this, namespaceURI, localName);
  1.3261 +
  1.3262 +          // throw Exception if there is no matching node in this map
  1.3263 +          if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
  1.3264 +            throw(new DOMException(DOMException.NOT_FOUND_ERR));
  1.3265 +          }
  1.3266 +
  1.3267 +          // get Node
  1.3268 +          var oldNode = this[itemIndex];
  1.3269 +
  1.3270 +          // throw Exception if Node is readonly
  1.3271 +          if (__ownerDocument__(this).implementation.errorChecking && oldNode._readonly) {
  1.3272 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.3273 +          }
  1.3274 +
  1.3275 +          return __removeChild__(this, itemIndex);             // return removed node
  1.3276 +    },
  1.3277 +    get xml() {
  1.3278 +          var ret = "";
  1.3279 +
  1.3280 +          // create string containing concatenation of all (but last) Attribute string values (separated by spaces)
  1.3281 +          for (var i=0; i < this.length -1; i++) {
  1.3282 +            ret += this[i].xml +" ";
  1.3283 +          }
  1.3284 +
  1.3285 +          // add last Attribute to string (without trailing space)
  1.3286 +          if (this.length > 0) {
  1.3287 +            ret += this[this.length -1].xml;
  1.3288 +          }
  1.3289 +
  1.3290 +          return ret;
  1.3291 +    },
  1.3292 +    toString : function(){
  1.3293 +        return "[object NamedNodeMap]";
  1.3294 +    }
  1.3295 +
  1.3296 +});
  1.3297 +
  1.3298 +/**
  1.3299 + * @method __findNamedItemIndex__
  1.3300 + *      find the item index of the node with the specified name
  1.3301 + *
  1.3302 + * @param  name : string - the name of the required node
  1.3303 + * @param  isnsmap : if its a NamespaceNodeMap
  1.3304 + * @return : int
  1.3305 + */
  1.3306 +var __findNamedItemIndex__ = function(namednodemap, name, isnsmap) {
  1.3307 +    var ret = -1;
  1.3308 +    // loop through all nodes
  1.3309 +    for (var i=0; i<namednodemap.length; i++) {
  1.3310 +        // compare name to each node's nodeName
  1.3311 +        if(namednodemap[i].localName && name && isnsmap){
  1.3312 +            if (namednodemap[i].localName.toLowerCase() == name.toLowerCase()) {
  1.3313 +                // found it!
  1.3314 +                ret = i;
  1.3315 +                break;
  1.3316 +            }
  1.3317 +        }else{
  1.3318 +            if(namednodemap[i].name && name){
  1.3319 +                if (namednodemap[i].name.toLowerCase() == name.toLowerCase()) {
  1.3320 +                    // found it!
  1.3321 +                    ret = i;
  1.3322 +                    break;
  1.3323 +                }
  1.3324 +            }
  1.3325 +        }
  1.3326 +    }
  1.3327 +    // if node is not found, default value -1 is returned
  1.3328 +    return ret;
  1.3329 +};
  1.3330 +
  1.3331 +/**
  1.3332 + * @method __findNamedItemNSIndex__
  1.3333 + *      find the item index of the node with the specified
  1.3334 + *      namespaceURI and localName
  1.3335 + *
  1.3336 + * @param  namespaceURI : string - the namespace URI of the required node
  1.3337 + * @param  localName    : string - the local name of the required node
  1.3338 + * @return : int
  1.3339 + */
  1.3340 +var __findNamedItemNSIndex__ = function(namednodemap, namespaceURI, localName) {
  1.3341 +    var ret = -1;
  1.3342 +    // test that localName is not null
  1.3343 +    if (localName) {
  1.3344 +        // loop through all nodes
  1.3345 +        for (var i=0; i<namednodemap.length; i++) {
  1.3346 +            if(namednodemap[i].namespaceURI && namednodemap[i].localName){
  1.3347 +                // compare name to each node's namespaceURI and localName
  1.3348 +                if ((namednodemap[i].namespaceURI.toLowerCase() == namespaceURI.toLowerCase()) &&
  1.3349 +                    (namednodemap[i].localName.toLowerCase() == localName.toLowerCase())) {
  1.3350 +                    // found it!
  1.3351 +                    ret = i;
  1.3352 +                    break;
  1.3353 +                }
  1.3354 +            }
  1.3355 +        }
  1.3356 +    }
  1.3357 +    // if node is not found, default value -1 is returned
  1.3358 +    return ret;
  1.3359 +};
  1.3360 +
  1.3361 +/**
  1.3362 + * @method __hasAttribute__
  1.3363 + *      Returns true if specified node exists
  1.3364 + *
  1.3365 + * @param  name : string - the name of the required node
  1.3366 + * @return : boolean
  1.3367 + */
  1.3368 +var __hasAttribute__ = function(namednodemap, name) {
  1.3369 +    var ret = false;
  1.3370 +    // test that Named Node exists
  1.3371 +    var itemIndex = __findNamedItemIndex__(namednodemap, name);
  1.3372 +        if (itemIndex > -1) {
  1.3373 +        // found it!
  1.3374 +        ret = true;
  1.3375 +    }
  1.3376 +    // if node is not found, default value false is returned
  1.3377 +    return ret;
  1.3378 +}
  1.3379 +
  1.3380 +/**
  1.3381 + * @method __hasAttributeNS__
  1.3382 + *      Returns true if specified node exists
  1.3383 + *
  1.3384 + * @param  namespaceURI : string - the namespace URI of the required node
  1.3385 + * @param  localName    : string - the local name of the required node
  1.3386 + * @return : boolean
  1.3387 + */
  1.3388 +var __hasAttributeNS__ = function(namednodemap, namespaceURI, localName) {
  1.3389 +    var ret = false;
  1.3390 +    // test that Named Node exists
  1.3391 +    var itemIndex = __findNamedItemNSIndex__(namednodemap, namespaceURI, localName);
  1.3392 +    if (itemIndex > -1) {
  1.3393 +        // found it!
  1.3394 +        ret = true;
  1.3395 +    }
  1.3396 +    // if node is not found, default value false is returned
  1.3397 +    return ret;
  1.3398 +}
  1.3399 +
  1.3400 +/**
  1.3401 + * @method __cloneNamedNodes__
  1.3402 + *      Returns a NamedNodeMap containing clones of the Nodes in this NamedNodeMap
  1.3403 + *
  1.3404 + * @param  parentNode : Node - the new parent of the cloned NodeList
  1.3405 + * @param  isnsmap : bool - is this a NamespaceNodeMap
  1.3406 + * @return NamedNodeMap containing clones of the Nodes in this NamedNodeMap
  1.3407 + */
  1.3408 +var __cloneNamedNodes__ = function(namednodemap, parentNode, isnsmap) {
  1.3409 +    var cloneNamedNodeMap = isnsmap?
  1.3410 +        new NamespaceNodeMap(namednodemap.ownerDocument, parentNode):
  1.3411 +        new NamedNodeMap(namednodemap.ownerDocument, parentNode);
  1.3412 +
  1.3413 +    // create list containing clones of all children
  1.3414 +    for (var i=0; i < namednodemap.length; i++) {
  1.3415 +        __appendChild__(cloneNamedNodeMap, namednodemap[i].cloneNode(false));
  1.3416 +    }
  1.3417 +
  1.3418 +    return cloneNamedNodeMap;
  1.3419 +};
  1.3420 +
  1.3421 +
  1.3422 +/**
  1.3423 + * @class  NamespaceNodeMap -
  1.3424 + *      used to represent collections of namespace nodes that can be
  1.3425 + *      accessed by name typically a set of Element attributes
  1.3426 + *
  1.3427 + * @extends NamedNodeMap
  1.3428 + *
  1.3429 + * @param  ownerDocument : Document - the ownerDocument
  1.3430 + * @param  parentNode    : Node - the node that the NamespaceNodeMap is attached to (or null)
  1.3431 + */
  1.3432 +var NamespaceNodeMap = function(ownerDocument, parentNode) {
  1.3433 +    this.NamedNodeMap = NamedNodeMap;
  1.3434 +    this.NamedNodeMap(ownerDocument, parentNode);
  1.3435 +    __setArray__(this, []);
  1.3436 +};
  1.3437 +NamespaceNodeMap.prototype = new NamedNodeMap();
  1.3438 +__extend__(NamespaceNodeMap.prototype, {
  1.3439 +    get xml() {
  1.3440 +        var ret = "",
  1.3441 +            ns,
  1.3442 +            ind;
  1.3443 +        // identify namespaces declared local to this Element (ie, not inherited)
  1.3444 +        for (ind = 0; ind < this.length; ind++) {
  1.3445 +            // if namespace declaration does not exist in the containing node's, parentNode's namespaces
  1.3446 +            ns = null;
  1.3447 +            try {
  1.3448 +                var ns = this.parentNode.parentNode._namespaces.
  1.3449 +                    getNamedItem(this[ind].localName);
  1.3450 +            }catch (e) {
  1.3451 +                //breaking to prevent default namespace being inserted into return value
  1.3452 +                break;
  1.3453 +            }
  1.3454 +            if (!(ns && (""+ ns.nodeValue == ""+ this[ind].nodeValue))) {
  1.3455 +                // display the namespace declaration
  1.3456 +                ret += this[ind].xml +" ";
  1.3457 +            }
  1.3458 +        }
  1.3459 +        return ret;
  1.3460 +    }
  1.3461 +});
  1.3462 +
  1.3463 +/**
  1.3464 + * @class  Namespace -
  1.3465 + *      The Namespace interface represents an namespace in an Element object
  1.3466 + *
  1.3467 + * @param  ownerDocument : The Document object associated with this node.
  1.3468 + */
  1.3469 +Namespace = function(ownerDocument) {
  1.3470 +    Node.apply(this, arguments);
  1.3471 +    // the name of this attribute
  1.3472 +    this.name      = "";
  1.3473 +
  1.3474 +    // If this attribute was explicitly given a value in the original document,
  1.3475 +    // this is true; otherwise, it is false.
  1.3476 +    // Note that the implementation is in charge of this attribute, not the user.
  1.3477 +    // If the user changes the value of the attribute (even if it ends up having
  1.3478 +    // the same value as the default value) then the specified flag is
  1.3479 +    // automatically flipped to true
  1.3480 +    this.specified = false;
  1.3481 +};
  1.3482 +Namespace.prototype = new Node();
  1.3483 +__extend__(Namespace.prototype, {
  1.3484 +    get value(){
  1.3485 +        // the value of the attribute is returned as a string
  1.3486 +        return this.nodeValue;
  1.3487 +    },
  1.3488 +    set value(value){
  1.3489 +        this.nodeValue = value+'';
  1.3490 +    },
  1.3491 +    get nodeType(){
  1.3492 +        return Node.NAMESPACE_NODE;
  1.3493 +    },
  1.3494 +    get xml(){
  1.3495 +        var ret = "";
  1.3496 +
  1.3497 +          // serialize Namespace Declaration
  1.3498 +          if (this.nodeName != "") {
  1.3499 +            ret += this.nodeName +"=\""+ __escapeXML__(this.nodeValue) +"\"";
  1.3500 +          }
  1.3501 +          else {  // handle default namespace
  1.3502 +            ret += "xmlns=\""+ __escapeXML__(this.nodeValue) +"\"";
  1.3503 +          }
  1.3504 +
  1.3505 +          return ret;
  1.3506 +    },
  1.3507 +    toString: function(){
  1.3508 +        return '[object Namespace]';
  1.3509 +    }
  1.3510 +});
  1.3511 +
  1.3512 +
  1.3513 +/**
  1.3514 + * @class  CharacterData - parent abstract class for Text and Comment
  1.3515 + * @extends Node
  1.3516 + * @param  ownerDocument : The Document object associated with this node.
  1.3517 + */
  1.3518 +CharacterData = function(ownerDocument) {
  1.3519 +    Node.apply(this, arguments);
  1.3520 +};
  1.3521 +CharacterData.prototype = new Node();
  1.3522 +__extend__(CharacterData.prototype,{
  1.3523 +    get data(){
  1.3524 +        return this.nodeValue;
  1.3525 +    },
  1.3526 +    set data(data){
  1.3527 +        this.nodeValue = data;
  1.3528 +    },
  1.3529 +    get textContent(){
  1.3530 +        return this.nodeValue;
  1.3531 +    },
  1.3532 +    set textContent(newText){
  1.3533 +        this.nodeValue = newText;
  1.3534 +    },
  1.3535 +    get length(){return this.nodeValue.length;},
  1.3536 +    appendData: function(arg){
  1.3537 +        // throw Exception if CharacterData is readonly
  1.3538 +        if (__ownerDocument__(this).implementation.errorChecking && this._readonly) {
  1.3539 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.3540 +        }
  1.3541 +        // append data
  1.3542 +        this.data = "" + this.data + arg;
  1.3543 +    },
  1.3544 +    deleteData: function(offset, count){
  1.3545 +        // throw Exception if CharacterData is readonly
  1.3546 +        if (__ownerDocument__(this).implementation.errorChecking && this._readonly) {
  1.3547 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.3548 +        }
  1.3549 +        if (this.data) {
  1.3550 +            // throw Exception if offset is negative or greater than the data length,
  1.3551 +            if (__ownerDocument__(this).implementation.errorChecking &&
  1.3552 +                ((offset < 0) || (offset >  this.data.length) || (count < 0))) {
  1.3553 +                throw(new DOMException(DOMException.INDEX_SIZE_ERR));
  1.3554 +            }
  1.3555 +
  1.3556 +            // delete data
  1.3557 +            if(!count || (offset + count) > this.data.length) {
  1.3558 +              this.data = this.data.substring(0, offset);
  1.3559 +            }else {
  1.3560 +              this.data = this.data.substring(0, offset).
  1.3561 +                concat(this.data.substring(offset + count));
  1.3562 +            }
  1.3563 +        }
  1.3564 +    },
  1.3565 +    insertData: function(offset, arg){
  1.3566 +        // throw Exception if CharacterData is readonly
  1.3567 +        if(__ownerDocument__(this).implementation.errorChecking && this._readonly){
  1.3568 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.3569 +        }
  1.3570 +
  1.3571 +        if(this.data){
  1.3572 +            // throw Exception if offset is negative or greater than the data length,
  1.3573 +            if (__ownerDocument__(this).implementation.errorChecking &&
  1.3574 +                ((offset < 0) || (offset >  this.data.length))) {
  1.3575 +                throw(new DOMException(DOMException.INDEX_SIZE_ERR));
  1.3576 +            }
  1.3577 +
  1.3578 +            // insert data
  1.3579 +            this.data =  this.data.substring(0, offset).concat(arg, this.data.substring(offset));
  1.3580 +        }else {
  1.3581 +            // throw Exception if offset is negative or greater than the data length,
  1.3582 +            if (__ownerDocument__(this).implementation.errorChecking && (offset !== 0)) {
  1.3583 +               throw(new DOMException(DOMException.INDEX_SIZE_ERR));
  1.3584 +            }
  1.3585 +
  1.3586 +            // set data
  1.3587 +            this.data = arg;
  1.3588 +        }
  1.3589 +    },
  1.3590 +    replaceData: function(offset, count, arg){
  1.3591 +        // throw Exception if CharacterData is readonly
  1.3592 +        if (__ownerDocument__(this).implementation.errorChecking && this._readonly) {
  1.3593 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.3594 +        }
  1.3595 +
  1.3596 +        if (this.data) {
  1.3597 +            // throw Exception if offset is negative or greater than the data length,
  1.3598 +            if (__ownerDocument__(this).implementation.errorChecking &&
  1.3599 +                ((offset < 0) || (offset >  this.data.length) || (count < 0))) {
  1.3600 +                throw(new DOMException(DOMException.INDEX_SIZE_ERR));
  1.3601 +            }
  1.3602 +
  1.3603 +            // replace data
  1.3604 +            this.data = this.data.substring(0, offset).
  1.3605 +                concat(arg, this.data.substring(offset + count));
  1.3606 +        }else {
  1.3607 +            // set data
  1.3608 +            this.data = arg;
  1.3609 +        }
  1.3610 +    },
  1.3611 +    substringData: function(offset, count){
  1.3612 +        var ret = null;
  1.3613 +        if (this.data) {
  1.3614 +            // throw Exception if offset is negative or greater than the data length,
  1.3615 +            // or the count is negative
  1.3616 +            if (__ownerDocument__(this).implementation.errorChecking &&
  1.3617 +                ((offset < 0) || (offset > this.data.length) || (count < 0))) {
  1.3618 +                throw(new DOMException(DOMException.INDEX_SIZE_ERR));
  1.3619 +            }
  1.3620 +            // if count is not specified
  1.3621 +            if (!count) {
  1.3622 +                ret = this.data.substring(offset); // default to 'end of string'
  1.3623 +            }else{
  1.3624 +                ret = this.data.substring(offset, offset + count);
  1.3625 +            }
  1.3626 +        }
  1.3627 +        return ret;
  1.3628 +    },
  1.3629 +    toString : function(){
  1.3630 +        return "[object CharacterData]";
  1.3631 +    }
  1.3632 +});
  1.3633 +
  1.3634 +/**
  1.3635 + * @class  Text
  1.3636 + *      The Text interface represents the textual content (termed
  1.3637 + *      character data in XML) of an Element or Attr.
  1.3638 + *      If there is no markup inside an element's content, the text is
  1.3639 + *      contained in a single object implementing the Text interface that
  1.3640 + *      is the only child of the element. If there is markup, it is
  1.3641 + *      parsed into a list of elements and Text nodes that form the
  1.3642 + *      list of children of the element.
  1.3643 + * @extends CharacterData
  1.3644 + * @param  ownerDocument The Document object associated with this node.
  1.3645 + */
  1.3646 +Text = function(ownerDocument) {
  1.3647 +    CharacterData.apply(this, arguments);
  1.3648 +    this.nodeName  = "#text";
  1.3649 +};
  1.3650 +Text.prototype = new CharacterData();
  1.3651 +__extend__(Text.prototype,{
  1.3652 +    get localName(){
  1.3653 +        return null;
  1.3654 +    },
  1.3655 +    // Breaks this Text node into two Text nodes at the specified offset,
  1.3656 +    // keeping both in the tree as siblings. This node then only contains
  1.3657 +    // all the content up to the offset point.  And a new Text node, which
  1.3658 +    // is inserted as the next sibling of this node, contains all the
  1.3659 +    // content at and after the offset point.
  1.3660 +    splitText : function(offset) {
  1.3661 +        var data,
  1.3662 +            inode;
  1.3663 +        // test for exceptions
  1.3664 +        if (__ownerDocument__(this).implementation.errorChecking) {
  1.3665 +            // throw Exception if Node is readonly
  1.3666 +            if (this._readonly) {
  1.3667 +              throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.3668 +            }
  1.3669 +            // throw Exception if offset is negative or greater than the data length,
  1.3670 +            if ((offset < 0) || (offset > this.data.length)) {
  1.3671 +              throw(new DOMException(DOMException.INDEX_SIZE_ERR));
  1.3672 +            }
  1.3673 +        }
  1.3674 +        if (this.parentNode) {
  1.3675 +            // get remaining string (after offset)
  1.3676 +            data  = this.substringData(offset);
  1.3677 +            // create new TextNode with remaining string
  1.3678 +            inode = __ownerDocument__(this).createTextNode(data);
  1.3679 +            // attach new TextNode
  1.3680 +            if (this.nextSibling) {
  1.3681 +              this.parentNode.insertBefore(inode, this.nextSibling);
  1.3682 +            } else {
  1.3683 +              this.parentNode.appendChild(inode);
  1.3684 +            }
  1.3685 +            // remove remaining string from original TextNode
  1.3686 +            this.deleteData(offset);
  1.3687 +        }
  1.3688 +        return inode;
  1.3689 +    },
  1.3690 +    get nodeType(){
  1.3691 +        return Node.TEXT_NODE;
  1.3692 +    },
  1.3693 +    get xml(){
  1.3694 +        return __escapeXML__(""+ this.nodeValue);
  1.3695 +    },
  1.3696 +    toString: function(){
  1.3697 +        return "[object Text]";
  1.3698 +    }
  1.3699 +});
  1.3700 +
  1.3701 +/**
  1.3702 + * @class CDATASection 
  1.3703 + *      CDATA sections are used to escape blocks of text containing 
  1.3704 + *      characters that would otherwise be regarded as markup.
  1.3705 + *      The only delimiter that is recognized in a CDATA section is 
  1.3706 + *      the "\]\]\>" string that ends the CDATA section
  1.3707 + * @extends Text
  1.3708 + * @param  ownerDocument : The Document object associated with this node.
  1.3709 + */
  1.3710 +CDATASection = function(ownerDocument) {
  1.3711 +    Text.apply(this, arguments);
  1.3712 +    this.nodeName = '#cdata-section';
  1.3713 +};
  1.3714 +CDATASection.prototype = new Text();
  1.3715 +__extend__(CDATASection.prototype,{
  1.3716 +    get nodeType(){
  1.3717 +        return Node.CDATA_SECTION_NODE;
  1.3718 +    },
  1.3719 +    get xml(){
  1.3720 +        return "<![CDATA[" + this.nodeValue + "]]>";
  1.3721 +    },
  1.3722 +    toString : function(){
  1.3723 +        return "[object CDATASection]";
  1.3724 +    }
  1.3725 +});
  1.3726 +/**
  1.3727 + * @class  Comment
  1.3728 + *      This represents the content of a comment, i.e., all the
  1.3729 + *      characters between the starting '<!--' and ending '-->'
  1.3730 + * @extends CharacterData
  1.3731 + * @param  ownerDocument :  The Document object associated with this node.
  1.3732 + */
  1.3733 +Comment = function(ownerDocument) {
  1.3734 +    CharacterData.apply(this, arguments);
  1.3735 +    this.nodeName  = "#comment";
  1.3736 +};
  1.3737 +Comment.prototype = new CharacterData();
  1.3738 +__extend__(Comment.prototype, {
  1.3739 +    get localName(){
  1.3740 +        return null;
  1.3741 +    },
  1.3742 +    get nodeType(){
  1.3743 +        return Node.COMMENT_NODE;
  1.3744 +    },
  1.3745 +    get xml(){
  1.3746 +        return "<!--" + this.nodeValue + "-->";
  1.3747 +    },
  1.3748 +    toString : function(){
  1.3749 +        return "[object Comment]";
  1.3750 +    }
  1.3751 +});
  1.3752 +
  1.3753 +
  1.3754 +/**
  1.3755 + * @author envjs team
  1.3756 + * @param {Document} onwnerDocument
  1.3757 + */
  1.3758 +DocumentType = function(ownerDocument) {
  1.3759 +    Node.apply(this, arguments);
  1.3760 +    this.systemId = null;
  1.3761 +    this.publicId = null;
  1.3762 +};
  1.3763 +DocumentType.prototype = new Node();
  1.3764 +__extend__({
  1.3765 +    get name(){
  1.3766 +        return this.nodeName;
  1.3767 +    },
  1.3768 +    get entities(){
  1.3769 +        return null;
  1.3770 +    },
  1.3771 +    get internalSubsets(){
  1.3772 +        return null;
  1.3773 +    },
  1.3774 +    get notations(){
  1.3775 +        return null;
  1.3776 +    },
  1.3777 +    toString : function(){
  1.3778 +        return "[object DocumentType]";
  1.3779 +    }
  1.3780 +});
  1.3781 +
  1.3782 +/**
  1.3783 + * @class  Attr
  1.3784 + *      The Attr interface represents an attribute in an Element object
  1.3785 + * @extends Node
  1.3786 + * @param  ownerDocument : The Document object associated with this node.
  1.3787 + */
  1.3788 +Attr = function(ownerDocument) {
  1.3789 +    Node.apply(this, arguments);
  1.3790 +    // set when Attr is added to NamedNodeMap
  1.3791 +    this.ownerElement = null;
  1.3792 +    //TODO: our implementation of Attr is incorrect because we don't
  1.3793 +    //      treat the value of the attribute as a child text node.
  1.3794 +};
  1.3795 +Attr.prototype = new Node();
  1.3796 +__extend__(Attr.prototype, {
  1.3797 +    // the name of this attribute
  1.3798 +    get name(){
  1.3799 +        return this.nodeName;
  1.3800 +    },
  1.3801 +    // the value of the attribute is returned as a string
  1.3802 +    get value(){
  1.3803 +        return this.nodeValue||'';
  1.3804 +    },
  1.3805 +    set value(value){
  1.3806 +        // throw Exception if Attribute is readonly
  1.3807 +        if (__ownerDocument__(this).implementation.errorChecking && this._readonly) {
  1.3808 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.3809 +        }
  1.3810 +        // delegate to node
  1.3811 +        this.nodeValue = value;
  1.3812 +    },
  1.3813 +    get textContent(){
  1.3814 +        return this.nodeValue;
  1.3815 +    },
  1.3816 +    set textContent(newText){
  1.3817 +        this.nodeValue = newText;
  1.3818 +    },
  1.3819 +    get specified(){
  1.3820 +        return (this !== null && this !== undefined);
  1.3821 +    },
  1.3822 +    get nodeType(){
  1.3823 +        return Node.ATTRIBUTE_NODE;
  1.3824 +    },
  1.3825 +    get xml() {
  1.3826 +        if (this.nodeValue) {
  1.3827 +            return  __escapeXML__(this.nodeValue+"");
  1.3828 +        } else {
  1.3829 +            return '';
  1.3830 +        }
  1.3831 +    },
  1.3832 +    toString : function() {
  1.3833 +        return '[object Attr]';
  1.3834 +    }
  1.3835 +});
  1.3836 +
  1.3837 +
  1.3838 +/**
  1.3839 + * @class  Element -
  1.3840 + *      By far the vast majority of objects (apart from text)
  1.3841 + *      that authors encounter when traversing a document are
  1.3842 + *      Element nodes.
  1.3843 + * @extends Node
  1.3844 + * @param  ownerDocument : The Document object associated with this node.
  1.3845 + */
  1.3846 +Element = function(ownerDocument) {
  1.3847 +    Node.apply(this, arguments);
  1.3848 +    this.attributes = new NamedNodeMap(this.ownerDocument, this);
  1.3849 +};
  1.3850 +Element.prototype = new Node();
  1.3851 +__extend__(Element.prototype, {
  1.3852 +    // The name of the element.
  1.3853 +    get tagName(){
  1.3854 +        return this.nodeName;
  1.3855 +    },
  1.3856 +
  1.3857 +    getAttribute: function(name) {
  1.3858 +        var ret = null;
  1.3859 +        // if attribute exists, use it
  1.3860 +        var attr = this.attributes.getNamedItem(name);
  1.3861 +        if (attr) {
  1.3862 +            ret = attr.value;
  1.3863 +        }
  1.3864 +        // if Attribute exists, return its value, otherwise, return null
  1.3865 +        return ret;
  1.3866 +    },
  1.3867 +    setAttribute : function (name, value) {
  1.3868 +        // if attribute exists, use it
  1.3869 +        var attr = this.attributes.getNamedItem(name);
  1.3870 +       //console.log('attr %s', attr);
  1.3871 +        //I had to add this check because as the script initializes
  1.3872 +        //the id may be set in the constructor, and the html element
  1.3873 +        //overrides the id property with a getter/setter.
  1.3874 +        if(__ownerDocument__(this)){
  1.3875 +            if (attr===null||attr===undefined) {
  1.3876 +                // otherwise create it
  1.3877 +                attr = __ownerDocument__(this).createAttribute(name);
  1.3878 +               //console.log('attr %s', attr);
  1.3879 +            }
  1.3880 +
  1.3881 +
  1.3882 +            // test for exceptions
  1.3883 +            if (__ownerDocument__(this).implementation.errorChecking) {
  1.3884 +                // throw Exception if Attribute is readonly
  1.3885 +                if (attr._readonly) {
  1.3886 +                    throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.3887 +                }
  1.3888 +
  1.3889 +                // throw Exception if the value string contains an illegal character
  1.3890 +                if (!__isValidString__(value+'')) {
  1.3891 +                    throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
  1.3892 +                }
  1.3893 +            }
  1.3894 +
  1.3895 +            // assign values to properties (and aliases)
  1.3896 +            attr.value     = value + '';
  1.3897 +
  1.3898 +            // add/replace Attribute in NamedNodeMap
  1.3899 +            this.attributes.setNamedItem(attr);
  1.3900 +           //console.log('element setNamedItem %s', attr);
  1.3901 +        }else{
  1.3902 +           console.warn('Element has no owner document '+this.tagName+
  1.3903 +                '\n\t cant set attribute ' + name + ' = '+value );
  1.3904 +        }
  1.3905 +    },
  1.3906 +    removeAttribute : function removeAttribute(name) {
  1.3907 +        // delegate to NamedNodeMap.removeNamedItem
  1.3908 +        return this.attributes.removeNamedItem(name);
  1.3909 +    },
  1.3910 +    getAttributeNode : function getAttributeNode(name) {
  1.3911 +        // delegate to NamedNodeMap.getNamedItem
  1.3912 +        return this.attributes.getNamedItem(name);
  1.3913 +    },
  1.3914 +    setAttributeNode: function(newAttr) {
  1.3915 +        // if this Attribute is an ID
  1.3916 +        if (__isIdDeclaration__(newAttr.name)) {
  1.3917 +            this.id = newAttr.value;  // cache ID for getElementById()
  1.3918 +        }
  1.3919 +        // delegate to NamedNodeMap.setNamedItem
  1.3920 +        return this.attributes.setNamedItem(newAttr);
  1.3921 +    },
  1.3922 +    removeAttributeNode: function(oldAttr) {
  1.3923 +      // throw Exception if Attribute is readonly
  1.3924 +      if (__ownerDocument__(this).implementation.errorChecking && oldAttr._readonly) {
  1.3925 +        throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.3926 +      }
  1.3927 +
  1.3928 +      // get item index
  1.3929 +      var itemIndex = this.attributes._findItemIndex(oldAttr._id);
  1.3930 +
  1.3931 +      // throw Exception if node does not exist in this map
  1.3932 +      if (__ownerDocument__(this).implementation.errorChecking && (itemIndex < 0)) {
  1.3933 +        throw(new DOMException(DOMException.NOT_FOUND_ERR));
  1.3934 +      }
  1.3935 +
  1.3936 +      return this.attributes._removeChild(itemIndex);
  1.3937 +    },
  1.3938 +    getAttributeNS : function(namespaceURI, localName) {
  1.3939 +        var ret = "";
  1.3940 +        // delegate to NAmedNodeMap.getNamedItemNS
  1.3941 +        var attr = this.attributes.getNamedItemNS(namespaceURI, localName);
  1.3942 +        if (attr) {
  1.3943 +            ret = attr.value;
  1.3944 +        }
  1.3945 +        return ret;  // if Attribute exists, return its value, otherwise return ""
  1.3946 +    },
  1.3947 +    setAttributeNS : function(namespaceURI, qualifiedName, value) {
  1.3948 +        // call NamedNodeMap.getNamedItem
  1.3949 +        //console.log('setAttributeNS %s %s %s', namespaceURI, qualifiedName, value);
  1.3950 +        var attr = this.attributes.getNamedItem(namespaceURI, qualifiedName);
  1.3951 +
  1.3952 +        if (!attr) {  // if Attribute exists, use it
  1.3953 +            // otherwise create it
  1.3954 +            attr = __ownerDocument__(this).createAttributeNS(namespaceURI, qualifiedName);
  1.3955 +        }
  1.3956 +
  1.3957 +        value = '' + value;
  1.3958 +
  1.3959 +        // test for exceptions
  1.3960 +        if (__ownerDocument__(this).implementation.errorChecking) {
  1.3961 +            // throw Exception if Attribute is readonly
  1.3962 +            if (attr._readonly) {
  1.3963 +                throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.3964 +            }
  1.3965 +
  1.3966 +            // throw Exception if the Namespace is invalid
  1.3967 +            if (!__isValidNamespace__(this.ownerDocument, namespaceURI, qualifiedName, true)) {
  1.3968 +                throw(new DOMException(DOMException.NAMESPACE_ERR));
  1.3969 +            }
  1.3970 +
  1.3971 +            // throw Exception if the value string contains an illegal character
  1.3972 +            if (!__isValidString__(value)) {
  1.3973 +                throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
  1.3974 +            }
  1.3975 +        }
  1.3976 +
  1.3977 +        // if this Attribute is an ID
  1.3978 +        //if (__isIdDeclaration__(name)) {
  1.3979 +        //    this.id = value;
  1.3980 +        //}
  1.3981 +
  1.3982 +        // assign values to properties (and aliases)
  1.3983 +        attr.value     = value;
  1.3984 +        attr.nodeValue = value;
  1.3985 +
  1.3986 +        // delegate to NamedNodeMap.setNamedItem
  1.3987 +        this.attributes.setNamedItemNS(attr);
  1.3988 +    },
  1.3989 +    removeAttributeNS : function(namespaceURI, localName) {
  1.3990 +        // delegate to NamedNodeMap.removeNamedItemNS
  1.3991 +        return this.attributes.removeNamedItemNS(namespaceURI, localName);
  1.3992 +    },
  1.3993 +    getAttributeNodeNS : function(namespaceURI, localName) {
  1.3994 +        // delegate to NamedNodeMap.getNamedItemNS
  1.3995 +        return this.attributes.getNamedItemNS(namespaceURI, localName);
  1.3996 +    },
  1.3997 +    setAttributeNodeNS : function(newAttr) {
  1.3998 +        // if this Attribute is an ID
  1.3999 +        if ((newAttr.prefix == "") &&  __isIdDeclaration__(newAttr.name)) {
  1.4000 +            this.id = newAttr.value+'';  // cache ID for getElementById()
  1.4001 +        }
  1.4002 +
  1.4003 +        // delegate to NamedNodeMap.setNamedItemNS
  1.4004 +        return this.attributes.setNamedItemNS(newAttr);
  1.4005 +    },
  1.4006 +    hasAttribute : function(name) {
  1.4007 +        // delegate to NamedNodeMap._hasAttribute
  1.4008 +        return __hasAttribute__(this.attributes,name);
  1.4009 +    },
  1.4010 +    hasAttributeNS : function(namespaceURI, localName) {
  1.4011 +        // delegate to NamedNodeMap._hasAttributeNS
  1.4012 +        return __hasAttributeNS__(this.attributes, namespaceURI, localName);
  1.4013 +    },
  1.4014 +    get nodeType(){
  1.4015 +        return Node.ELEMENT_NODE;
  1.4016 +    },
  1.4017 +    get xml() {
  1.4018 +        var ret = "",
  1.4019 +            ns = "",
  1.4020 +            attrs,
  1.4021 +            attrstring,
  1.4022 +            i;
  1.4023 +
  1.4024 +        // serialize namespace declarations
  1.4025 +        if (this.namespaceURI ){
  1.4026 +            if((this === this.ownerDocument.documentElement) ||
  1.4027 +               (!this.parentNode)||
  1.4028 +               (this.parentNode && (this.parentNode.namespaceURI !== this.namespaceURI))) {
  1.4029 +                ns = ' xmlns' + (this.prefix?(':'+this.prefix):'') +
  1.4030 +                    '="' + this.namespaceURI + '"';
  1.4031 +            }
  1.4032 +        }
  1.4033 +
  1.4034 +        // serialize Attribute declarations
  1.4035 +        attrs = this.attributes;
  1.4036 +        attrstring = "";
  1.4037 +        for(i=0;i< attrs.length;i++){
  1.4038 +            if(attrs[i].name.match('xmlns:')) {
  1.4039 +                attrstring += " "+attrs[i].name+'="'+attrs[i].xml+'"';
  1.4040 +            }
  1.4041 +        }
  1.4042 +        for(i=0;i< attrs.length;i++){
  1.4043 +            if(!attrs[i].name.match('xmlns:')) {
  1.4044 +                attrstring += " "+attrs[i].name+'="'+attrs[i].xml+'"';
  1.4045 +            }
  1.4046 +        }
  1.4047 +
  1.4048 +        if(this.hasChildNodes()){
  1.4049 +            // serialize this Element
  1.4050 +            ret += "<" + this.tagName + ns + attrstring +">";
  1.4051 +            ret += this.childNodes.xml;
  1.4052 +            ret += "</" + this.tagName + ">";
  1.4053 +        }else{
  1.4054 +            ret += "<" + this.tagName + ns + attrstring +"/>";
  1.4055 +        }
  1.4056 +
  1.4057 +        return ret;
  1.4058 +    },
  1.4059 +    toString : function(){
  1.4060 +        return '[object Element]';
  1.4061 +    }
  1.4062 +});
  1.4063 +/**
  1.4064 + * @class  DOMException - raised when an operation is impossible to perform
  1.4065 + * @author Jon van Noort (jon@webarcana.com.au)
  1.4066 + * @param  code : int - the exception code (one of the DOMException constants)
  1.4067 + */
  1.4068 +DOMException = function(code) {
  1.4069 +    this.code = code;
  1.4070 +};
  1.4071 +
  1.4072 +// DOMException constants
  1.4073 +// Introduced in DOM Level 1:
  1.4074 +DOMException.INDEX_SIZE_ERR                 = 1;
  1.4075 +DOMException.DOMSTRING_SIZE_ERR             = 2;
  1.4076 +DOMException.HIERARCHY_REQUEST_ERR          = 3;
  1.4077 +DOMException.WRONG_DOCUMENT_ERR             = 4;
  1.4078 +DOMException.INVALID_CHARACTER_ERR          = 5;
  1.4079 +DOMException.NO_DATA_ALLOWED_ERR            = 6;
  1.4080 +DOMException.NO_MODIFICATION_ALLOWED_ERR    = 7;
  1.4081 +DOMException.NOT_FOUND_ERR                  = 8;
  1.4082 +DOMException.NOT_SUPPORTED_ERR              = 9;
  1.4083 +DOMException.INUSE_ATTRIBUTE_ERR            = 10;
  1.4084 +
  1.4085 +// Introduced in DOM Level 2:
  1.4086 +DOMException.INVALID_STATE_ERR              = 11;
  1.4087 +DOMException.SYNTAX_ERR                     = 12;
  1.4088 +DOMException.INVALID_MODIFICATION_ERR       = 13;
  1.4089 +DOMException.NAMESPACE_ERR                  = 14;
  1.4090 +DOMException.INVALID_ACCESS_ERR             = 15;
  1.4091 +
  1.4092 +/**
  1.4093 + * @class  DocumentFragment -
  1.4094 + *      DocumentFragment is a "lightweight" or "minimal" Document object.
  1.4095 + * @extends Node
  1.4096 + * @param  ownerDocument :  The Document object associated with this node.
  1.4097 + */
  1.4098 +DocumentFragment = function(ownerDocument) {
  1.4099 +    Node.apply(this, arguments);
  1.4100 +    this.nodeName  = "#document-fragment";
  1.4101 +};
  1.4102 +DocumentFragment.prototype = new Node();
  1.4103 +__extend__(DocumentFragment.prototype,{
  1.4104 +    get nodeType(){
  1.4105 +        return Node.DOCUMENT_FRAGMENT_NODE;
  1.4106 +    },
  1.4107 +    get xml(){
  1.4108 +        var xml = "",
  1.4109 +        count = this.childNodes.length;
  1.4110 +
  1.4111 +        // create string concatenating the serialized ChildNodes
  1.4112 +        for (var i = 0; i < count; i++) {
  1.4113 +            xml += this.childNodes.item(i).xml;
  1.4114 +        }
  1.4115 +
  1.4116 +        return xml;
  1.4117 +    },
  1.4118 +    toString : function(){
  1.4119 +        return "[object DocumentFragment]";
  1.4120 +    },
  1.4121 +    get localName(){
  1.4122 +        return null;
  1.4123 +    }
  1.4124 +});
  1.4125 +
  1.4126 +
  1.4127 +/**
  1.4128 + * @class  ProcessingInstruction -
  1.4129 + *      The ProcessingInstruction interface represents a
  1.4130 + *      "processing instruction", used in XML as a way to
  1.4131 + *      keep processor-specific information in the text of
  1.4132 + *      the document
  1.4133 + * @extends Node
  1.4134 + * @author Jon van Noort (jon@webarcana.com.au)
  1.4135 + * @param  ownerDocument :  The Document object associated with this node.
  1.4136 + */
  1.4137 +ProcessingInstruction = function(ownerDocument) {
  1.4138 +    Node.apply(this, arguments);
  1.4139 +};
  1.4140 +ProcessingInstruction.prototype = new Node();
  1.4141 +__extend__(ProcessingInstruction.prototype, {
  1.4142 +    get data(){
  1.4143 +        return this.nodeValue;
  1.4144 +    },
  1.4145 +    set data(data){
  1.4146 +        // throw Exception if Node is readonly
  1.4147 +        if (__ownerDocument__(this).errorChecking && this._readonly) {
  1.4148 +            throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
  1.4149 +        }
  1.4150 +        this.nodeValue = data;
  1.4151 +    },
  1.4152 +    get textContent(){
  1.4153 +        return this.data;
  1.4154 +    },
  1.4155 +    get localName(){
  1.4156 +        return null;
  1.4157 +    },
  1.4158 +    get target(){
  1.4159 +      // The target of this processing instruction.
  1.4160 +      // XML defines this as being the first token following the markup that begins the processing instruction.
  1.4161 +      // The content of this processing instruction.
  1.4162 +        return this.nodeName;
  1.4163 +    },
  1.4164 +    set target(value){
  1.4165 +      // The target of this processing instruction.
  1.4166 +      // XML defines this as being the first token following the markup that begins the processing instruction.
  1.4167 +      // The content of this processing instruction.
  1.4168 +        this.nodeName = value;
  1.4169 +    },
  1.4170 +    get nodeType(){
  1.4171 +        return Node.PROCESSING_INSTRUCTION_NODE;
  1.4172 +    },
  1.4173 +    get xml(){
  1.4174 +        return "<?" + this.nodeName +" "+ this.nodeValue + "?>";
  1.4175 +    },
  1.4176 +    toString : function(){
  1.4177 +        return "[object ProcessingInstruction]";
  1.4178 +    }
  1.4179 +});
  1.4180 +
  1.4181 +
  1.4182 +/**
  1.4183 + * @author envjs team
  1.4184 + */
  1.4185 +
  1.4186 +Entity = function() {
  1.4187 +    throw new Error("Entity Not Implemented" );
  1.4188 +};
  1.4189 +
  1.4190 +Entity.constants = {
  1.4191 +        // content taken from W3C "HTML 4.01 Specification"
  1.4192 +        //                        "W3C Recommendation 24 December 1999"
  1.4193 +
  1.4194 +    nbsp: "\u00A0",
  1.4195 +    iexcl: "\u00A1",
  1.4196 +    cent: "\u00A2",
  1.4197 +    pound: "\u00A3",
  1.4198 +    curren: "\u00A4",
  1.4199 +    yen: "\u00A5",
  1.4200 +    brvbar: "\u00A6",
  1.4201 +    sect: "\u00A7",
  1.4202 +    uml: "\u00A8",
  1.4203 +    copy: "\u00A9",
  1.4204 +    ordf: "\u00AA",
  1.4205 +    laquo: "\u00AB",
  1.4206 +    not: "\u00AC",
  1.4207 +    shy: "\u00AD",
  1.4208 +    reg: "\u00AE",
  1.4209 +    macr: "\u00AF",
  1.4210 +    deg: "\u00B0",
  1.4211 +    plusmn: "\u00B1",
  1.4212 +    sup2: "\u00B2",
  1.4213 +    sup3: "\u00B3",
  1.4214 +    acute: "\u00B4",
  1.4215 +    micro: "\u00B5",
  1.4216 +    para: "\u00B6",
  1.4217 +    middot: "\u00B7",
  1.4218 +    cedil: "\u00B8",
  1.4219 +    sup1: "\u00B9",
  1.4220 +    ordm: "\u00BA",
  1.4221 +    raquo: "\u00BB",
  1.4222 +    frac14: "\u00BC",
  1.4223 +    frac12: "\u00BD",
  1.4224 +    frac34: "\u00BE",
  1.4225 +    iquest: "\u00BF",
  1.4226 +    Agrave: "\u00C0",
  1.4227 +    Aacute: "\u00C1",
  1.4228 +    Acirc: "\u00C2",
  1.4229 +    Atilde: "\u00C3",
  1.4230 +    Auml: "\u00C4",
  1.4231 +    Aring: "\u00C5",
  1.4232 +    AElig: "\u00C6",
  1.4233 +    Ccedil: "\u00C7",
  1.4234 +    Egrave: "\u00C8",
  1.4235 +    Eacute: "\u00C9",
  1.4236 +    Ecirc: "\u00CA",
  1.4237 +    Euml: "\u00CB",
  1.4238 +    Igrave: "\u00CC",
  1.4239 +    Iacute: "\u00CD",
  1.4240 +    Icirc: "\u00CE",
  1.4241 +    Iuml: "\u00CF",
  1.4242 +    ETH: "\u00D0",
  1.4243 +    Ntilde: "\u00D1",
  1.4244 +    Ograve: "\u00D2",
  1.4245 +    Oacute: "\u00D3",
  1.4246 +    Ocirc: "\u00D4",
  1.4247 +    Otilde: "\u00D5",
  1.4248 +    Ouml: "\u00D6",
  1.4249 +    times: "\u00D7",
  1.4250 +    Oslash: "\u00D8",
  1.4251 +    Ugrave: "\u00D9",
  1.4252 +    Uacute: "\u00DA",
  1.4253 +    Ucirc: "\u00DB",
  1.4254 +    Uuml: "\u00DC",
  1.4255 +    Yacute: "\u00DD",
  1.4256 +    THORN: "\u00DE",
  1.4257 +    szlig: "\u00DF",
  1.4258 +    agrave: "\u00E0",
  1.4259 +    aacute: "\u00E1",
  1.4260 +    acirc: "\u00E2",
  1.4261 +    atilde: "\u00E3",
  1.4262 +    auml: "\u00E4",
  1.4263 +    aring: "\u00E5",
  1.4264 +    aelig: "\u00E6",
  1.4265 +    ccedil: "\u00E7",
  1.4266 +    egrave: "\u00E8",
  1.4267 +    eacute: "\u00E9",
  1.4268 +    ecirc: "\u00EA",
  1.4269 +    euml: "\u00EB",
  1.4270 +    igrave: "\u00EC",
  1.4271 +    iacute: "\u00ED",
  1.4272 +    icirc: "\u00EE",
  1.4273 +    iuml: "\u00EF",
  1.4274 +    eth: "\u00F0",
  1.4275 +    ntilde: "\u00F1",
  1.4276 +    ograve: "\u00F2",
  1.4277 +    oacute: "\u00F3",
  1.4278 +    ocirc: "\u00F4",
  1.4279 +    otilde: "\u00F5",
  1.4280 +    ouml: "\u00F6",
  1.4281 +    divide: "\u00F7",
  1.4282 +    oslash: "\u00F8",
  1.4283 +    ugrave: "\u00F9",
  1.4284 +    uacute: "\u00FA",
  1.4285 +    ucirc: "\u00FB",
  1.4286 +    uuml: "\u00FC",
  1.4287 +    yacute: "\u00FD",
  1.4288 +    thorn: "\u00FE",
  1.4289 +    yuml: "\u00FF",
  1.4290 +    fnof: "\u0192",
  1.4291 +    Alpha: "\u0391",
  1.4292 +    Beta: "\u0392",
  1.4293 +    Gamma: "\u0393",
  1.4294 +    Delta: "\u0394",
  1.4295 +    Epsilon: "\u0395",
  1.4296 +    Zeta: "\u0396",
  1.4297 +    Eta: "\u0397",
  1.4298 +    Theta: "\u0398",
  1.4299 +    Iota: "\u0399",
  1.4300 +    Kappa: "\u039A",
  1.4301 +    Lambda: "\u039B",
  1.4302 +    Mu: "\u039C",
  1.4303 +    Nu: "\u039D",
  1.4304 +    Xi: "\u039E",
  1.4305 +    Omicron: "\u039F",
  1.4306 +    Pi: "\u03A0",
  1.4307 +    Rho: "\u03A1",
  1.4308 +    Sigma: "\u03A3",
  1.4309 +    Tau: "\u03A4",
  1.4310 +    Upsilon: "\u03A5",
  1.4311 +    Phi: "\u03A6",
  1.4312 +    Chi: "\u03A7",
  1.4313 +    Psi: "\u03A8",
  1.4314 +    Omega: "\u03A9",
  1.4315 +    alpha: "\u03B1",
  1.4316 +    beta: "\u03B2",
  1.4317 +    gamma: "\u03B3",
  1.4318 +    delta: "\u03B4",
  1.4319 +    epsilon: "\u03B5",
  1.4320 +    zeta: "\u03B6",
  1.4321 +    eta: "\u03B7",
  1.4322 +    theta: "\u03B8",
  1.4323 +    iota: "\u03B9",
  1.4324 +    kappa: "\u03BA",
  1.4325 +    lambda: "\u03BB",
  1.4326 +    mu: "\u03BC",
  1.4327 +    nu: "\u03BD",
  1.4328 +    xi: "\u03BE",
  1.4329 +    omicron: "\u03BF",
  1.4330 +    pi: "\u03C0",
  1.4331 +    rho: "\u03C1",
  1.4332 +    sigmaf: "\u03C2",
  1.4333 +    sigma: "\u03C3",
  1.4334 +    tau: "\u03C4",
  1.4335 +    upsilon: "\u03C5",
  1.4336 +    phi: "\u03C6",
  1.4337 +    chi: "\u03C7",
  1.4338 +    psi: "\u03C8",
  1.4339 +    omega: "\u03C9",
  1.4340 +    thetasym: "\u03D1",
  1.4341 +    upsih: "\u03D2",
  1.4342 +    piv: "\u03D6",
  1.4343 +    bull: "\u2022",
  1.4344 +    hellip: "\u2026",
  1.4345 +    prime: "\u2032",
  1.4346 +    Prime: "\u2033",
  1.4347 +    oline: "\u203E",
  1.4348 +    frasl: "\u2044",
  1.4349 +    weierp: "\u2118",
  1.4350 +    image: "\u2111",
  1.4351 +    real: "\u211C",
  1.4352 +    trade: "\u2122",
  1.4353 +    alefsym: "\u2135",
  1.4354 +    larr: "\u2190",
  1.4355 +    uarr: "\u2191",
  1.4356 +    rarr: "\u2192",
  1.4357 +    darr: "\u2193",
  1.4358 +    harr: "\u2194",
  1.4359 +    crarr: "\u21B5",
  1.4360 +    lArr: "\u21D0",
  1.4361 +    uArr: "\u21D1",
  1.4362 +    rArr: "\u21D2",
  1.4363 +    dArr: "\u21D3",
  1.4364 +    hArr: "\u21D4",
  1.4365 +    forall: "\u2200",
  1.4366 +    part: "\u2202",
  1.4367 +    exist: "\u2203",
  1.4368 +    empty: "\u2205",
  1.4369 +    nabla: "\u2207",
  1.4370 +    isin: "\u2208",
  1.4371 +    notin: "\u2209",
  1.4372 +    ni: "\u220B",
  1.4373 +    prod: "\u220F",
  1.4374 +    sum: "\u2211",
  1.4375 +    minus: "\u2212",
  1.4376 +    lowast: "\u2217",
  1.4377 +    radic: "\u221A",
  1.4378 +    prop: "\u221D",
  1.4379 +    infin: "\u221E",
  1.4380 +    ang: "\u2220",
  1.4381 +    and: "\u2227",
  1.4382 +    or: "\u2228",
  1.4383 +    cap: "\u2229",
  1.4384 +    cup: "\u222A",
  1.4385 +    intXX: "\u222B",
  1.4386 +    there4: "\u2234",
  1.4387 +    sim: "\u223C",
  1.4388 +    cong: "\u2245",
  1.4389 +    asymp: "\u2248",
  1.4390 +    ne: "\u2260",
  1.4391 +    equiv: "\u2261",
  1.4392 +    le: "\u2264",
  1.4393 +    ge: "\u2265",
  1.4394 +    sub: "\u2282",
  1.4395 +    sup: "\u2283",
  1.4396 +    nsub: "\u2284",
  1.4397 +    sube: "\u2286",
  1.4398 +    supe: "\u2287",
  1.4399 +    oplus: "\u2295",
  1.4400 +    otimes: "\u2297",
  1.4401 +    perp: "\u22A5",
  1.4402 +    sdot: "\u22C5",
  1.4403 +    lceil: "\u2308",
  1.4404 +    rceil: "\u2309",
  1.4405 +    lfloor: "\u230A",
  1.4406 +    rfloor: "\u230B",
  1.4407 +    lang: "\u2329",
  1.4408 +    rang: "\u232A",
  1.4409 +    loz: "\u25CA",
  1.4410 +    spades: "\u2660",
  1.4411 +    clubs: "\u2663",
  1.4412 +    hearts: "\u2665",
  1.4413 +    diams: "\u2666",
  1.4414 +    quot: "\u0022",
  1.4415 +    amp: "\u0026",
  1.4416 +    lt: "\u003C",
  1.4417 +    gt: "\u003E",
  1.4418 +    OElig: "\u0152",
  1.4419 +    oelig: "\u0153",
  1.4420 +    Scaron: "\u0160",
  1.4421 +    scaron: "\u0161",
  1.4422 +    Yuml: "\u0178",
  1.4423 +    circ: "\u02C6",
  1.4424 +    tilde: "\u02DC",
  1.4425 +    ensp: "\u2002",
  1.4426 +    emsp: "\u2003",
  1.4427 +    thinsp: "\u2009",
  1.4428 +    zwnj: "\u200C",
  1.4429 +    zwj: "\u200D",
  1.4430 +    lrm: "\u200E",
  1.4431 +    rlm: "\u200F",
  1.4432 +    ndash: "\u2013",
  1.4433 +    mdash: "\u2014",
  1.4434 +    lsquo: "\u2018",
  1.4435 +    rsquo: "\u2019",
  1.4436 +    sbquo: "\u201A",
  1.4437 +    ldquo: "\u201C",
  1.4438 +    rdquo: "\u201D",
  1.4439 +    bdquo: "\u201E",
  1.4440 +    dagger: "\u2020",
  1.4441 +    Dagger: "\u2021",
  1.4442 +    permil: "\u2030",
  1.4443 +    lsaquo: "\u2039",
  1.4444 +    rsaquo: "\u203A",
  1.4445 +    euro: "\u20AC",
  1.4446 +
  1.4447 +    // non-standard entities
  1.4448 +    apos: "'"
  1.4449 +};
  1.4450 +
  1.4451 +/**
  1.4452 + * @author envjs team
  1.4453 + */
  1.4454 +
  1.4455 +EntityReference = function() {
  1.4456 +    throw new Error("EntityReference Not Implemented" );
  1.4457 +};
  1.4458 +
  1.4459 +/**
  1.4460 + * @class  DOMImplementation -
  1.4461 + *      provides a number of methods for performing operations
  1.4462 + *      that are independent of any particular instance of the
  1.4463 + *      document object model.
  1.4464 + *
  1.4465 + * @author Jon van Noort (jon@webarcana.com.au)
  1.4466 + */
  1.4467 +DOMImplementation = function() {
  1.4468 +    this.preserveWhiteSpace = false;  // by default, ignore whitespace
  1.4469 +    this.namespaceAware = true;       // by default, handle namespaces
  1.4470 +    this.errorChecking  = true;      // by default, test for exceptions
  1.4471 +};
  1.4472 +
  1.4473 +__extend__(DOMImplementation.prototype,{
  1.4474 +    // @param  feature : string - The package name of the feature to test.
  1.4475 +    //      the legal only values are "XML" and "CORE" (case-insensitive).
  1.4476 +    // @param  version : string - This is the version number of the package
  1.4477 +    //       name to test. In Level 1, this is the string "1.0".*
  1.4478 +    // @return : boolean
  1.4479 +    hasFeature : function(feature, version) {
  1.4480 +        var ret = false;
  1.4481 +        if (feature.toLowerCase() == "xml") {
  1.4482 +            ret = (!version || (version == "1.0") || (version == "2.0"));
  1.4483 +        }
  1.4484 +        else if (feature.toLowerCase() == "core") {
  1.4485 +            ret = (!version || (version == "2.0"));
  1.4486 +        }
  1.4487 +        else if (feature == "http://www.w3.org/TR/SVG11/feature#BasicStructure") {
  1.4488 +            ret = (version == "1.1");
  1.4489 +        }
  1.4490 +        return ret;
  1.4491 +    },
  1.4492 +    createDocumentType : function(qname, publicId, systemId){
  1.4493 +        var doctype = new DocumentType();
  1.4494 +        doctype.nodeName = qname?qname.toUpperCase():null;
  1.4495 +        doctype.publicId = publicId?publicId:null;
  1.4496 +        doctype.systemId = systemId?systemId:null;
  1.4497 +        return doctype;
  1.4498 +    },
  1.4499 +    createDocument : function(nsuri, qname, doctype){
  1.4500 +
  1.4501 +        var doc = null, documentElement;
  1.4502 +
  1.4503 +        doc = new Document(this, null);
  1.4504 +        if(doctype){
  1.4505 +            doc.doctype = doctype;
  1.4506 +        }
  1.4507 +
  1.4508 +        if(nsuri && qname){
  1.4509 +            documentElement = doc.createElementNS(nsuri, qname);
  1.4510 +        }else if(qname){
  1.4511 +            documentElement = doc.createElement(qname);
  1.4512 +        }
  1.4513 +        if(documentElement){
  1.4514 +            doc.appendChild(documentElement);
  1.4515 +        }
  1.4516 +        return doc;
  1.4517 +    },
  1.4518 +    createHTMLDocument : function(title){
  1.4519 +        var doc = new HTMLDocument($implementation, null, "");
  1.4520 +        var html = doc.createElement("html"); doc.appendChild(html);
  1.4521 +        var head = doc.createElement("head"); html.appendChild(head);
  1.4522 +        var body = doc.createElement("body"); html.appendChild(body);
  1.4523 +        var t = doc.createElement("title"); head.appendChild(t);
  1.4524 +        if( title) {
  1.4525 +            t.appendChild(doc.createTextNode(title));
  1.4526 +        }
  1.4527 +        return doc;
  1.4528 +    },
  1.4529 +    translateErrCode : function(code) {
  1.4530 +        //convert DOMException Code to human readable error message;
  1.4531 +      var msg = "";
  1.4532 +
  1.4533 +      switch (code) {
  1.4534 +        case DOMException.INDEX_SIZE_ERR :                // 1
  1.4535 +           msg = "INDEX_SIZE_ERR: Index out of bounds";
  1.4536 +           break;
  1.4537 +
  1.4538 +        case DOMException.DOMSTRING_SIZE_ERR :            // 2
  1.4539 +           msg = "DOMSTRING_SIZE_ERR: The resulting string is too long to fit in a DOMString";
  1.4540 +           break;
  1.4541 +
  1.4542 +        case DOMException.HIERARCHY_REQUEST_ERR :         // 3
  1.4543 +           msg = "HIERARCHY_REQUEST_ERR: The Node can not be inserted at this location";
  1.4544 +           break;
  1.4545 +
  1.4546 +        case DOMException.WRONG_DOCUMENT_ERR :            // 4
  1.4547 +           msg = "WRONG_DOCUMENT_ERR: The source and the destination Documents are not the same";
  1.4548 +           break;
  1.4549 +
  1.4550 +        case DOMException.INVALID_CHARACTER_ERR :         // 5
  1.4551 +           msg = "INVALID_CHARACTER_ERR: The string contains an invalid character";
  1.4552 +           break;
  1.4553 +
  1.4554 +        case DOMException.NO_DATA_ALLOWED_ERR :           // 6
  1.4555 +           msg = "NO_DATA_ALLOWED_ERR: This Node / NodeList does not support data";
  1.4556 +           break;
  1.4557 +
  1.4558 +        case DOMException.NO_MODIFICATION_ALLOWED_ERR :   // 7
  1.4559 +           msg = "NO_MODIFICATION_ALLOWED_ERR: This object cannot be modified";
  1.4560 +           break;
  1.4561 +
  1.4562 +        case DOMException.NOT_FOUND_ERR :                 // 8
  1.4563 +           msg = "NOT_FOUND_ERR: The item cannot be found";
  1.4564 +           break;
  1.4565 +
  1.4566 +        case DOMException.NOT_SUPPORTED_ERR :             // 9
  1.4567 +           msg = "NOT_SUPPORTED_ERR: This implementation does not support function";
  1.4568 +           break;
  1.4569 +
  1.4570 +        case DOMException.INUSE_ATTRIBUTE_ERR :           // 10
  1.4571 +           msg = "INUSE_ATTRIBUTE_ERR: The Attribute has already been assigned to another Element";
  1.4572 +           break;
  1.4573 +
  1.4574 +        // Introduced in DOM Level 2:
  1.4575 +        case DOMException.INVALID_STATE_ERR :             // 11
  1.4576 +           msg = "INVALID_STATE_ERR: The object is no longer usable";
  1.4577 +           break;
  1.4578 +
  1.4579 +        case DOMException.SYNTAX_ERR :                    // 12
  1.4580 +           msg = "SYNTAX_ERR: Syntax error";
  1.4581 +           break;
  1.4582 +
  1.4583 +        case DOMException.INVALID_MODIFICATION_ERR :      // 13
  1.4584 +           msg = "INVALID_MODIFICATION_ERR: Cannot change the type of the object";
  1.4585 +           break;
  1.4586 +
  1.4587 +        case DOMException.NAMESPACE_ERR :                 // 14
  1.4588 +           msg = "NAMESPACE_ERR: The namespace declaration is incorrect";
  1.4589 +           break;
  1.4590 +
  1.4591 +        case DOMException.INVALID_ACCESS_ERR :            // 15
  1.4592 +           msg = "INVALID_ACCESS_ERR: The object does not support this function";
  1.4593 +           break;
  1.4594 +
  1.4595 +        default :
  1.4596 +           msg = "UNKNOWN: Unknown Exception Code ("+ code +")";
  1.4597 +      }
  1.4598 +
  1.4599 +      return msg;
  1.4600 +    },
  1.4601 +    toString : function(){
  1.4602 +        return "[object DOMImplementation]";
  1.4603 +    }
  1.4604 +});
  1.4605 +
  1.4606 +
  1.4607 +
  1.4608 +/**
  1.4609 + * @method DOMImplementation._isNamespaceDeclaration - Return true, if attributeName is a namespace declaration
  1.4610 + * @author Jon van Noort (jon@webarcana.com.au)
  1.4611 + * @param  attributeName : string - the attribute name
  1.4612 + * @return : boolean
  1.4613 + */
  1.4614 +function __isNamespaceDeclaration__(attributeName) {
  1.4615 +  // test if attributeName is 'xmlns'
  1.4616 +  return (attributeName.indexOf('xmlns') > -1);
  1.4617 +}
  1.4618 +
  1.4619 +/**
  1.4620 + * @method DOMImplementation._isIdDeclaration - Return true, if attributeName is an id declaration
  1.4621 + * @author Jon van Noort (jon@webarcana.com.au)
  1.4622 + * @param  attributeName : string - the attribute name
  1.4623 + * @return : boolean
  1.4624 + */
  1.4625 +function __isIdDeclaration__(attributeName) {
  1.4626 +  // test if attributeName is 'id' (case insensitive)
  1.4627 +  return attributeName?(attributeName.toLowerCase() == 'id'):false;
  1.4628 +}
  1.4629 +
  1.4630 +/**
  1.4631 + * @method DOMImplementation._isValidName - Return true,
  1.4632 + *   if name contains no invalid characters
  1.4633 + * @author Jon van Noort (jon@webarcana.com.au)
  1.4634 + * @param  name : string - the candidate name
  1.4635 + * @return : boolean
  1.4636 + */
  1.4637 +function __isValidName__(name) {
  1.4638 +  // test if name contains only valid characters
  1.4639 +  return name.match(re_validName);
  1.4640 +}
  1.4641 +var re_validName = /^[a-zA-Z_:][a-zA-Z0-9\.\-_:]*$/;
  1.4642 +
  1.4643 +/**
  1.4644 + * @method DOMImplementation._isValidString - Return true, if string does not contain any illegal chars
  1.4645 + *  All of the characters 0 through 31 and character 127 are nonprinting control characters.
  1.4646 + *  With the exception of characters 09, 10, and 13, (Ox09, Ox0A, and Ox0D)
  1.4647 + *  Note: different from _isValidName in that ValidStrings may contain spaces
  1.4648 + * @author Jon van Noort (jon@webarcana.com.au)
  1.4649 + * @param  name : string - the candidate string
  1.4650 + * @return : boolean
  1.4651 + */
  1.4652 +function __isValidString__(name) {
  1.4653 +  // test that string does not contains invalid characters
  1.4654 +  return (name.search(re_invalidStringChars) < 0);
  1.4655 +}
  1.4656 +var re_invalidStringChars = /\x01|\x02|\x03|\x04|\x05|\x06|\x07|\x08|\x0B|\x0C|\x0E|\x0F|\x10|\x11|\x12|\x13|\x14|\x15|\x16|\x17|\x18|\x19|\x1A|\x1B|\x1C|\x1D|\x1E|\x1F|\x7F/;
  1.4657 +
  1.4658 +/**
  1.4659 + * @method DOMImplementation._parseNSName - parse the namespace name.
  1.4660 + *  if there is no colon, the
  1.4661 + * @author Jon van Noort (jon@webarcana.com.au)
  1.4662 + * @param  qualifiedName : string - The qualified name
  1.4663 + * @return : NSName - [
  1.4664 +         .prefix        : string - The prefix part of the qname
  1.4665 +         .namespaceName : string - The namespaceURI part of the qname
  1.4666 +    ]
  1.4667 + */
  1.4668 +function __parseNSName__(qualifiedName) {
  1.4669 +    var resultNSName = {};
  1.4670 +    // unless the qname has a namespaceName, the prefix is the entire String
  1.4671 +    resultNSName.prefix          = qualifiedName;
  1.4672 +    resultNSName.namespaceName   = "";
  1.4673 +    // split on ':'
  1.4674 +    var delimPos = qualifiedName.indexOf(':');
  1.4675 +    if (delimPos > -1) {
  1.4676 +        // get prefix
  1.4677 +        resultNSName.prefix        = qualifiedName.substring(0, delimPos);
  1.4678 +        // get namespaceName
  1.4679 +        resultNSName.namespaceName = qualifiedName.substring(delimPos +1, qualifiedName.length);
  1.4680 +    }
  1.4681 +    return resultNSName;
  1.4682 +}
  1.4683 +
  1.4684 +/**
  1.4685 + * @method DOMImplementation._parseQName - parse the qualified name
  1.4686 + * @author Jon van Noort (jon@webarcana.com.au)
  1.4687 + * @param  qualifiedName : string - The qualified name
  1.4688 + * @return : QName
  1.4689 + */
  1.4690 +function __parseQName__(qualifiedName) {
  1.4691 +    var resultQName = {};
  1.4692 +    // unless the qname has a prefix, the local name is the entire String
  1.4693 +    resultQName.localName = qualifiedName;
  1.4694 +    resultQName.prefix    = "";
  1.4695 +    // split on ':'
  1.4696 +    var delimPos = qualifiedName.indexOf(':');
  1.4697 +    if (delimPos > -1) {
  1.4698 +        // get prefix
  1.4699 +        resultQName.prefix    = qualifiedName.substring(0, delimPos);
  1.4700 +        // get localName
  1.4701 +        resultQName.localName = qualifiedName.substring(delimPos +1, qualifiedName.length);
  1.4702 +    }
  1.4703 +    return resultQName;
  1.4704 +}
  1.4705 +/**
  1.4706 + * @author envjs team
  1.4707 + */
  1.4708 +Notation = function() {
  1.4709 +    throw new Error("Notation Not Implemented" );
  1.4710 +};/**
  1.4711 + * @author thatcher
  1.4712 + */
  1.4713 +Range = function(){
  1.4714 +
  1.4715 +};
  1.4716 +
  1.4717 +__extend__(Range.prototype, {
  1.4718 +    get startContainer(){
  1.4719 +
  1.4720 +    },
  1.4721 +    get endContainer(){
  1.4722 +
  1.4723 +    },
  1.4724 +    get startOffset(){
  1.4725 +
  1.4726 +    },
  1.4727 +    get endOffset(){
  1.4728 +
  1.4729 +    },
  1.4730 +    get collapsed(){
  1.4731 +
  1.4732 +    },
  1.4733 +    get commonAncestorContainer(){
  1.4734 +
  1.4735 +    },
  1.4736 +    setStart: function(refNode, offset){//throws RangeException
  1.4737 +
  1.4738 +    },
  1.4739 +    setEnd: function(refNode, offset){//throws RangeException
  1.4740 +    
  1.4741 +    },
  1.4742 +    setStartBefore: function(refNode){//throws RangeException
  1.4743 +    
  1.4744 +    },
  1.4745 +    setStartAfter: function(refNode){//throws RangeException
  1.4746 +    
  1.4747 +    },
  1.4748 +    setEndBefore: function(refNode){//throws RangeException
  1.4749 +    
  1.4750 +    },
  1.4751 +    setEndAfter: function(refNode){//throws RangeException
  1.4752 +    
  1.4753 +    },
  1.4754 +    collapse: function(toStart){//throws RangeException
  1.4755 +    
  1.4756 +    },
  1.4757 +    selectNode: function(refNode){//throws RangeException
  1.4758 +    
  1.4759 +    },
  1.4760 +    selectNodeContents: function(refNode){//throws RangeException
  1.4761 +    
  1.4762 +    },
  1.4763 +    compareBoundaryPoints: function(how, sourceRange){
  1.4764 +
  1.4765 +    },
  1.4766 +    deleteContents: function(){
  1.4767 +
  1.4768 +    },
  1.4769 +    extractContents: function(){
  1.4770 +
  1.4771 +    },
  1.4772 +    cloneContents: function(){
  1.4773 +
  1.4774 +    },
  1.4775 +    insertNode: function(newNode){
  1.4776 +
  1.4777 +    },
  1.4778 +    surroundContents: function(newParent){
  1.4779 +
  1.4780 +    },
  1.4781 +    cloneRange: function(){
  1.4782 +
  1.4783 +    },
  1.4784 +    toString: function(){
  1.4785 +        return '[object Range]';
  1.4786 +    },
  1.4787 +    detach: function(){
  1.4788 +
  1.4789 +    }
  1.4790 +});
  1.4791 +
  1.4792 +
  1.4793 +  // CompareHow
  1.4794 +Range.START_TO_START                 = 0;
  1.4795 +Range.START_TO_END                   = 1;
  1.4796 +Range.END_TO_END                     = 2;
  1.4797 +Range.END_TO_START                   = 3;
  1.4798 +  
  1.4799 +/*
  1.4800 + * Forward declarations
  1.4801 + */
  1.4802 +var __isValidNamespace__;
  1.4803 +
  1.4804 +/**
  1.4805 + * @class  Document - The Document interface represents the entire HTML
  1.4806 + *      or XML document. Conceptually, it is the root of the document tree,
  1.4807 + *      and provides the primary access to the document's data.
  1.4808 + *
  1.4809 + * @extends Node
  1.4810 + * @param  implementation : DOMImplementation - the creator Implementation
  1.4811 + */
  1.4812 +Document = function(implementation, docParentWindow) {
  1.4813 +    Node.apply(this, arguments);
  1.4814 +
  1.4815 +    //TODO: Temporary!!! Cnage back to true!!!
  1.4816 +    this.async = true;
  1.4817 +    // The Document Type Declaration (see DocumentType) associated with this document
  1.4818 +    this.doctype = null;
  1.4819 +    // The DOMImplementation object that handles this document.
  1.4820 +    this.implementation = implementation;
  1.4821 +
  1.4822 +    this.nodeName  = "#document";
  1.4823 +    // initially false, set to true by parser
  1.4824 +    this.parsing = false;
  1.4825 +    this.baseURI = 'about:blank';
  1.4826 +
  1.4827 +    this.ownerDocument = null;
  1.4828 +
  1.4829 +    this.importing = false;
  1.4830 +};
  1.4831 +
  1.4832 +Document.prototype = new Node();
  1.4833 +__extend__(Document.prototype,{
  1.4834 +    get localName(){
  1.4835 +        return null;
  1.4836 +    },
  1.4837 +    get textContent(){
  1.4838 +        return null;
  1.4839 +    },
  1.4840 +    get all(){
  1.4841 +        return this.getElementsByTagName("*");
  1.4842 +    },
  1.4843 +    get documentElement(){
  1.4844 +        var i, length = this.childNodes?this.childNodes.length:0;
  1.4845 +        for(i=0;i<length;i++){
  1.4846 +            if(this.childNodes[i].nodeType === Node.ELEMENT_NODE){
  1.4847 +                return this.childNodes[i];
  1.4848 +            }
  1.4849 +        }
  1.4850 +        return null;
  1.4851 +    },
  1.4852 +    get documentURI(){
  1.4853 +        return this.baseURI;
  1.4854 +    },
  1.4855 +    createExpression: function(xpath, nsuriMap){
  1.4856 +        return new XPathExpression(xpath, nsuriMap);
  1.4857 +    },
  1.4858 +    createDocumentFragment: function() {
  1.4859 +        var node = new DocumentFragment(this);
  1.4860 +        return node;
  1.4861 +    },
  1.4862 +    createTextNode: function(data) {
  1.4863 +        var node = new Text(this);
  1.4864 +        node.data = data;
  1.4865 +        return node;
  1.4866 +    },
  1.4867 +    createComment: function(data) {
  1.4868 +        var node = new Comment(this);
  1.4869 +        node.data = data;
  1.4870 +        return node;
  1.4871 +    },
  1.4872 +    createCDATASection : function(data) {
  1.4873 +        var node = new CDATASection(this);
  1.4874 +        node.data = data;
  1.4875 +        return node;
  1.4876 +    },
  1.4877 +    createProcessingInstruction: function(target, data) {
  1.4878 +        // throw Exception if the target string contains an illegal character
  1.4879 +        if (__ownerDocument__(this).implementation.errorChecking &&
  1.4880 +            (!__isValidName__(target))) {
  1.4881 +            throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
  1.4882 +        }
  1.4883 +
  1.4884 +        var node = new ProcessingInstruction(this);
  1.4885 +        node.target = target;
  1.4886 +        node.data = data;
  1.4887 +        return node;
  1.4888 +    },
  1.4889 +    createElement: function(tagName) {
  1.4890 +        // throw Exception if the tagName string contains an illegal character
  1.4891 +        if (__ownerDocument__(this).implementation.errorChecking &&
  1.4892 +            (!__isValidName__(tagName))) {
  1.4893 +            throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
  1.4894 +        }
  1.4895 +        var node = new Element(this);
  1.4896 +        node.nodeName = tagName;
  1.4897 +        return node;
  1.4898 +    },
  1.4899 +    createElementNS : function(namespaceURI, qualifiedName) {
  1.4900 +        //we use this as a parser flag to ignore the xhtml
  1.4901 +        //namespace assumed by the parser
  1.4902 +        //console.log('creating element %s %s', namespaceURI, qualifiedName);
  1.4903 +        if(this.baseURI === 'http://envjs.com/xml' &&
  1.4904 +            namespaceURI === 'http://www.w3.org/1999/xhtml'){
  1.4905 +            return this.createElement(qualifiedName);
  1.4906 +        }
  1.4907 +        //console.log('createElementNS %s %s', namespaceURI, qualifiedName);
  1.4908 +        if (__ownerDocument__(this).implementation.errorChecking) {
  1.4909 +            // throw Exception if the Namespace is invalid
  1.4910 +            if (!__isValidNamespace__(this, namespaceURI, qualifiedName)) {
  1.4911 +                throw(new DOMException(DOMException.NAMESPACE_ERR));
  1.4912 +            }
  1.4913 +
  1.4914 +            // throw Exception if the qualifiedName string contains an illegal character
  1.4915 +            if (!__isValidName__(qualifiedName)) {
  1.4916 +                throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
  1.4917 +            }
  1.4918 +        }
  1.4919 +        var node  = new Element(this);
  1.4920 +        var qname = __parseQName__(qualifiedName);
  1.4921 +        node.namespaceURI = namespaceURI;
  1.4922 +        node.prefix       = qname.prefix;
  1.4923 +        node.nodeName     = qualifiedName;
  1.4924 +
  1.4925 +        //console.log('created element %s %s', namespaceURI, qualifiedName);
  1.4926 +        return node;
  1.4927 +    },
  1.4928 +    createAttribute : function(name) {
  1.4929 +        //console.log('createAttribute %s ', name);
  1.4930 +        // throw Exception if the name string contains an illegal character
  1.4931 +        if (__ownerDocument__(this).implementation.errorChecking &&
  1.4932 +            (!__isValidName__(name))) {
  1.4933 +            throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
  1.4934 +        }
  1.4935 +        var node = new Attr(this);
  1.4936 +        node.nodeName = name;
  1.4937 +        return node;
  1.4938 +    },
  1.4939 +    createAttributeNS : function(namespaceURI, qualifiedName) {
  1.4940 +        //we use this as a parser flag to ignore the xhtml
  1.4941 +        //namespace assumed by the parser
  1.4942 +        if(this.baseURI === 'http://envjs.com/xml' &&
  1.4943 +            namespaceURI === 'http://www.w3.org/1999/xhtml'){
  1.4944 +            return this.createAttribute(qualifiedName);
  1.4945 +        }
  1.4946 +        //console.log('createAttributeNS %s %s', namespaceURI, qualifiedName);
  1.4947 +        // test for exceptions
  1.4948 +        if (this.implementation.errorChecking) {
  1.4949 +            // throw Exception if the Namespace is invalid
  1.4950 +            if (!__isValidNamespace__(this, namespaceURI, qualifiedName, true)) {
  1.4951 +                throw(new DOMException(DOMException.NAMESPACE_ERR));
  1.4952 +            }
  1.4953 +
  1.4954 +            // throw Exception if the qualifiedName string contains an illegal character
  1.4955 +            if (!__isValidName__(qualifiedName)) {
  1.4956 +                throw(new DOMException(DOMException.INVALID_CHARACTER_ERR));
  1.4957 +            }
  1.4958 +        }
  1.4959 +        var node  = new Attr(this);
  1.4960 +        var qname = __parseQName__(qualifiedName);
  1.4961 +        node.namespaceURI = namespaceURI === '' ? null : namespaceURI;
  1.4962 +        node.prefix       = qname.prefix;
  1.4963 +        node.nodeName     = qualifiedName;
  1.4964 +        node.nodeValue    = "";
  1.4965 +        //console.log('attribute %s %s %s', node.namespaceURI, node.prefix, node.nodeName);
  1.4966 +        return node;
  1.4967 +    },
  1.4968 +    createNamespace : function(qualifiedName) {
  1.4969 +        //console.log('createNamespace %s', qualifiedName);
  1.4970 +        // create Namespace specifying 'this' as ownerDocument
  1.4971 +        var node  = new Namespace(this);
  1.4972 +        var qname = __parseQName__(qualifiedName);
  1.4973 +
  1.4974 +        // assign values to properties (and aliases)
  1.4975 +        node.prefix       = qname.prefix;
  1.4976 +        node.localName    = qname.localName;
  1.4977 +        node.name         = qualifiedName;
  1.4978 +        node.nodeValue    = "";
  1.4979 +
  1.4980 +        return node;
  1.4981 +    },
  1.4982 +
  1.4983 +    createRange: function(){
  1.4984 +        return new Range();
  1.4985 +    },
  1.4986 +
  1.4987 +    evaluate: function(xpathText, contextNode, nsuriMapper, resultType, result){
  1.4988 +        //return new XPathExpression().evaluate();
  1.4989 +        throw Error('Document.evaluate not supported yet!');
  1.4990 +    },
  1.4991 +
  1.4992 +    getElementById : function(elementId) {
  1.4993 +        var retNode = null,
  1.4994 +            node;
  1.4995 +        // loop through all Elements
  1.4996 +        var all = this.getElementsByTagName('*');
  1.4997 +        for (var i=0; i < all.length; i++) {
  1.4998 +            node = all[i];
  1.4999 +            // if id matches
  1.5000 +            if (node.id == elementId) {
  1.5001 +                //found the node
  1.5002 +                retNode = node;
  1.5003 +                break;
  1.5004 +            }
  1.5005 +        }
  1.5006 +        return retNode;
  1.5007 +    },
  1.5008 +    normalizeDocument: function(){
  1.5009 +        this.normalize();
  1.5010 +    },
  1.5011 +    get nodeType(){
  1.5012 +        return Node.DOCUMENT_NODE;
  1.5013 +    },
  1.5014 +    get xml(){
  1.5015 +        return this.documentElement.xml;
  1.5016 +    },
  1.5017 +    toString: function(){
  1.5018 +        return "[object XMLDocument]";
  1.5019 +    },
  1.5020 +    get defaultView(){
  1.5021 +        return { getComputedStyle: function(elem){
  1.5022 +            return window.getComputedStyle(elem);
  1.5023 +        }};
  1.5024 +    },
  1.5025 +});
  1.5026 +
  1.5027 +/*
  1.5028 + * Helper function
  1.5029 + *
  1.5030 + */
  1.5031 +__isValidNamespace__ = function(doc, namespaceURI, qualifiedName, isAttribute) {
  1.5032 +
  1.5033 +    if (doc.importing === true) {
  1.5034 +        //we're doing an importNode operation (or a cloneNode) - in both cases, there
  1.5035 +        //is no need to perform any namespace checking since the nodes have to have been valid
  1.5036 +        //to have gotten into the DOM in the first place
  1.5037 +        return true;
  1.5038 +    }
  1.5039 +
  1.5040 +    var valid = true;
  1.5041 +    // parse QName
  1.5042 +    var qName = __parseQName__(qualifiedName);
  1.5043 +
  1.5044 +
  1.5045 +    //only check for namespaces if we're finished parsing
  1.5046 +    if (this.parsing === false) {
  1.5047 +
  1.5048 +        // if the qualifiedName is malformed
  1.5049 +        if (qName.localName.indexOf(":") > -1 ){
  1.5050 +            valid = false;
  1.5051 +        }
  1.5052 +
  1.5053 +        if ((valid) && (!isAttribute)) {
  1.5054 +            // if the namespaceURI is not null
  1.5055 +            if (!namespaceURI) {
  1.5056 +                valid = false;
  1.5057 +            }
  1.5058 +        }
  1.5059 +
  1.5060 +        // if the qualifiedName has a prefix
  1.5061 +        if ((valid) && (qName.prefix === "")) {
  1.5062 +            valid = false;
  1.5063 +        }
  1.5064 +    }
  1.5065 +
  1.5066 +    // if the qualifiedName has a prefix that is "xml" and the namespaceURI is
  1.5067 +    //  different from "http://www.w3.org/XML/1998/namespace" [Namespaces].
  1.5068 +    if ((valid) && (qName.prefix === "xml") && (namespaceURI !== "http://www.w3.org/XML/1998/namespace")) {
  1.5069 +        valid = false;
  1.5070 +    }
  1.5071 +
  1.5072 +    return valid;
  1.5073 +};
  1.5074 +/**
  1.5075 + *
  1.5076 + * This file only handles XML parser.
  1.5077 + * It is extended by parser/domparser.js (and parser/htmlparser.js)
  1.5078 + *
  1.5079 + * This depends on e4x, which some engines may not have.
  1.5080 + *
  1.5081 + * @author thatcher
  1.5082 + */
  1.5083 +DOMParser = function(principle, documentURI, baseURI) {
  1.5084 +    // TODO: why/what should these 3 args do?
  1.5085 +};
  1.5086 +__extend__(DOMParser.prototype,{
  1.5087 +    parseFromString: function(xmlstring, mimetype){
  1.5088 +        var doc = new Document(new DOMImplementation()),
  1.5089 +            e4;
  1.5090 +
  1.5091 +        // The following are e4x directives.
  1.5092 +        // Full spec is here:
  1.5093 +        // http://www.ecma-international.org/publications/standards/Ecma-357.htm
  1.5094 +        //
  1.5095 +        // that is pretty gross, so checkout this summary
  1.5096 +        // http://rephrase.net/days/07/06/e4x
  1.5097 +        //
  1.5098 +        // also see the Mozilla Developer Center:
  1.5099 +        // https://developer.mozilla.org/en/E4X
  1.5100 +        //
  1.5101 +        XML.ignoreComments = false;
  1.5102 +        XML.ignoreProcessingInstructions = false;
  1.5103 +        XML.ignoreWhitespace = false;
  1.5104 +
  1.5105 +        // for some reason e4x can't handle initial xml declarations
  1.5106 +        // https://bugzilla.mozilla.org/show_bug.cgi?id=336551
  1.5107 +        // The official workaround is the big regexp below
  1.5108 +        // but simpler one seems to be ok
  1.5109 +        // xmlstring = xmlstring.replace(/^<\?xml\s+version\s*=\s*(["'])[^\1]+\1[^?]*\?>/, "");
  1.5110 +        //
  1.5111 +        xmlstring = xmlstring.replace(/<\?xml.*\?>/);
  1.5112 +
  1.5113 +        e4 = new XMLList(xmlstring);
  1.5114 +
  1.5115 +        __toDomNode__(e4, doc, doc);
  1.5116 +
  1.5117 +        //console.log('xml \n %s', doc.documentElement.xml);
  1.5118 +        return doc;
  1.5119 +    }
  1.5120 +});
  1.5121 +
  1.5122 +var __toDomNode__ = function(e4, parent, doc){
  1.5123 +    var xnode,
  1.5124 +        domnode,
  1.5125 +        children,
  1.5126 +        target,
  1.5127 +        value,
  1.5128 +        length,
  1.5129 +        element,
  1.5130 +        kind,
  1.5131 +        item;
  1.5132 +    //console.log('converting e4x node list \n %s', e4)
  1.5133 +
  1.5134 +    // not using the for each(item in e4) since some engines can't
  1.5135 +    // handle the syntax (i.e. says syntax error)
  1.5136 +    //
  1.5137 +    // for each(xnode in e4) {
  1.5138 +    for (item in e4) {
  1.5139 +        // NO do not do this if (e4.hasOwnProperty(item)) {
  1.5140 +        // breaks spidermonkey
  1.5141 +        xnode = e4[item];
  1.5142 +
  1.5143 +        kind = xnode.nodeKind();
  1.5144 +        //console.log('treating node kind %s', kind);
  1.5145 +        switch(kind){
  1.5146 +        case 'element':
  1.5147 +            // add node
  1.5148 +            //console.log('creating element %s %s', xnode.localName(), xnode.namespace());
  1.5149 +            if(xnode.namespace() && (xnode.namespace()+'') !== ''){
  1.5150 +                //console.log('createElementNS %s %s',xnode.namespace()+'', xnode.localName() );
  1.5151 +                domnode = doc.createElementNS(xnode.namespace()+'', xnode.localName());
  1.5152 +            }else{
  1.5153 +                domnode = doc.createElement(xnode.name()+'');
  1.5154 +            }
  1.5155 +            parent.appendChild(domnode);
  1.5156 +
  1.5157 +            // add attributes
  1.5158 +            __toDomNode__(xnode.attributes(), domnode, doc);
  1.5159 +
  1.5160 +            // add children
  1.5161 +            children = xnode.children();
  1.5162 +            length = children.length();
  1.5163 +            //console.log('recursing? %s', length ? 'yes' : 'no');
  1.5164 +            if (length > 0) {
  1.5165 +                __toDomNode__(children, domnode, doc);
  1.5166 +            }
  1.5167 +            break;
  1.5168 +        case 'attribute':
  1.5169 +            // console.log('setting attribute %s %s %s',
  1.5170 +            //       xnode.localName(), xnode.namespace(), xnode.valueOf());
  1.5171 +
  1.5172 +            //
  1.5173 +            // cross-platform alert.  The original code used
  1.5174 +            //  xnode.text() to get the attribute value
  1.5175 +            //  This worked in Rhino, but did not in Spidermonkey
  1.5176 +            //  valueOf seemed to work in both
  1.5177 +            //
  1.5178 +            if(xnode.namespace() && xnode.namespace().prefix){
  1.5179 +                //console.log("%s", xnode.namespace().prefix);
  1.5180 +                parent.setAttributeNS(xnode.namespace()+'',
  1.5181 +                                      xnode.namespace().prefix+':'+xnode.localName(),
  1.5182 +                                      xnode.valueOf());
  1.5183 +            }else if((xnode.name()+'').match('http://www.w3.org/2000/xmlns/::')){
  1.5184 +                if(xnode.localName()!=='xmlns'){
  1.5185 +                    parent.setAttributeNS('http://www.w3.org/2000/xmlns/',
  1.5186 +                                          'xmlns:'+xnode.localName(),
  1.5187 +                                          xnode.valueOf());
  1.5188 +                }
  1.5189 +            }else{
  1.5190 +                parent.setAttribute(xnode.localName()+'', xnode.valueOf());
  1.5191 +            }
  1.5192 +            break;
  1.5193 +        case 'text':
  1.5194 +            //console.log('creating text node : %s', xnode);
  1.5195 +            domnode = doc.createTextNode(xnode+'');
  1.5196 +            parent.appendChild(domnode);
  1.5197 +            break;
  1.5198 +        case 'comment':
  1.5199 +            //console.log('creating comment node : %s', xnode);
  1.5200 +            value = xnode+'';
  1.5201 +            domnode = doc.createComment(value.substring(4,value.length-3));
  1.5202 +            parent.appendChild(domnode);
  1.5203 +            break;
  1.5204 +        case 'processing-instruction':
  1.5205 +            //console.log('creating processing-instruction node : %s', xnode);
  1.5206 +            value = xnode+'';
  1.5207 +            target = value.split(' ')[0].substring(2);
  1.5208 +            value = value.split(' ').splice(1).join(' ').replace('?>','');
  1.5209 +            //console.log('creating processing-instruction data : %s', value);
  1.5210 +            domnode = doc.createProcessingInstruction(target, value);
  1.5211 +            parent.appendChild(domnode);
  1.5212 +            break;
  1.5213 +        default:
  1.5214 +            console.log('e4x DOM ERROR');
  1.5215 +            throw new Error("Assertion failed in xml parser");
  1.5216 +        }
  1.5217 +    }
  1.5218 +};
  1.5219 +/**
  1.5220 + * @author envjs team
  1.5221 + * @class XMLSerializer
  1.5222 + */
  1.5223 +
  1.5224 +XMLSerializer = function() {};
  1.5225 +
  1.5226 +__extend__(XMLSerializer.prototype, {
  1.5227 +    serializeToString: function(node){
  1.5228 +        return node.xml;
  1.5229 +    },
  1.5230 +    toString : function(){
  1.5231 +        return "[object XMLSerializer]";
  1.5232 +    }
  1.5233 +});
  1.5234 +
  1.5235 +/**
  1.5236 + * @author john resig & the envjs team
  1.5237 + * @uri http://www.envjs.com/
  1.5238 + * @copyright 2008-2010
  1.5239 + * @license MIT
  1.5240 + */
  1.5241 +//CLOSURE_END
  1.5242 +}());
  1.5243 +/*
  1.5244 + * Envjs event.1.2.13
  1.5245 + * Pure JavaScript Browser Environment
  1.5246 + * By John Resig <http://ejohn.org/> and the Envjs Team
  1.5247 + * Copyright 2008-2010 John Resig, under the MIT License
  1.5248 + *
  1.5249 + * This file simply provides the global definitions we need to
  1.5250 + * be able to correctly implement to core browser DOM Event interfaces.
  1.5251 + */
  1.5252 +var Event,
  1.5253 +    MouseEvent,
  1.5254 +    UIEvent,
  1.5255 +    KeyboardEvent,
  1.5256 +    MutationEvent,
  1.5257 +    DocumentEvent,
  1.5258 +    EventTarget,
  1.5259 +    EventException,
  1.5260 +    //nonstandard but very useful for implementing mutation events
  1.5261 +    //among other things like general profiling
  1.5262 +    Aspect;
  1.5263 +/*
  1.5264 + * Envjs event.1.2.13 
  1.5265 + * Pure JavaScript Browser Environment
  1.5266 + * By John Resig <http://ejohn.org/> and the Envjs Team
  1.5267 + * Copyright 2008-2010 John Resig, under the MIT License
  1.5268 + */
  1.5269 +
  1.5270 +//CLOSURE_START
  1.5271 +(function(){
  1.5272 +
  1.5273 +
  1.5274 +
  1.5275 +
  1.5276 +
  1.5277 +/**
  1.5278 + * @author john resig
  1.5279 + */
  1.5280 +// Helper method for extending one object with another.
  1.5281 +function __extend__(a,b) {
  1.5282 +    for ( var i in b ) {
  1.5283 +        var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
  1.5284 +        if ( g || s ) {
  1.5285 +            if ( g ) { a.__defineGetter__(i, g); }
  1.5286 +            if ( s ) { a.__defineSetter__(i, s); }
  1.5287 +        } else {
  1.5288 +            a[i] = b[i];
  1.5289 +        }
  1.5290 +    } return a;
  1.5291 +}
  1.5292 +
  1.5293 +/**
  1.5294 + * @author john resig
  1.5295 + */
  1.5296 +//from jQuery
  1.5297 +function __setArray__( target, array ) {
  1.5298 +    // Resetting the length to 0, then using the native Array push
  1.5299 +    // is a super-fast way to populate an object with array-like properties
  1.5300 +    target.length = 0;
  1.5301 +    Array.prototype.push.apply( target, array );
  1.5302 +}
  1.5303 +/**
  1.5304 + * Borrowed with love from:
  1.5305 + * 
  1.5306 + * jQuery AOP - jQuery plugin to add features of aspect-oriented programming (AOP) to jQuery.
  1.5307 + * http://jquery-aop.googlecode.com/
  1.5308 + *
  1.5309 + * Licensed under the MIT license:
  1.5310 + * http://www.opensource.org/licenses/mit-license.php
  1.5311 + *
  1.5312 + * Version: 1.1
  1.5313 + */
  1.5314 +(function() {
  1.5315 +
  1.5316 +	var _after	= 1;
  1.5317 +	var _before	= 2;
  1.5318 +	var _around	= 3;
  1.5319 +	var _intro  = 4;
  1.5320 +	var _regexEnabled = true;
  1.5321 +
  1.5322 +	/**
  1.5323 +	 * Private weaving function.
  1.5324 +	 */
  1.5325 +	var weaveOne = function(source, method, advice) {
  1.5326 +
  1.5327 +		var old = source[method];
  1.5328 +
  1.5329 +		var aspect;
  1.5330 +		if (advice.type == _after)
  1.5331 +			aspect = function() {
  1.5332 +				var returnValue = old.apply(this, arguments);
  1.5333 +				return advice.value.apply(this, [returnValue, method]);
  1.5334 +			};
  1.5335 +		else if (advice.type == _before)
  1.5336 +			aspect = function() {
  1.5337 +				advice.value.apply(this, [arguments, method]);
  1.5338 +				return old.apply(this, arguments);
  1.5339 +			};
  1.5340 +		else if (advice.type == _intro)
  1.5341 +			aspect = function() {
  1.5342 +				return advice.value.apply(this, arguments);
  1.5343 +			};
  1.5344 +		else if (advice.type == _around) {
  1.5345 +			aspect = function() {
  1.5346 +				var invocation = { object: this, args: arguments };
  1.5347 +				return advice.value.apply(invocation.object, [{ arguments: invocation.args, method: method, proceed : 
  1.5348 +					function() {
  1.5349 +						return old.apply(invocation.object, invocation.args);
  1.5350 +					}
  1.5351 +				}] );
  1.5352 +			};
  1.5353 +		}
  1.5354 +
  1.5355 +		aspect.unweave = function() { 
  1.5356 +			source[method] = old;
  1.5357 +			pointcut = source = aspect = old = null;
  1.5358 +		};
  1.5359 +
  1.5360 +		source[method] = aspect;
  1.5361 +
  1.5362 +		return aspect;
  1.5363 +
  1.5364 +	};
  1.5365 +
  1.5366 +
  1.5367 +	/**
  1.5368 +	 * Private weaver and pointcut parser.
  1.5369 +	 */
  1.5370 +	var weave = function(pointcut, advice)
  1.5371 +	{
  1.5372 +
  1.5373 +		var source = (typeof(pointcut.target.prototype) != 'undefined') ? pointcut.target.prototype : pointcut.target;
  1.5374 +		var advices = [];
  1.5375 +
  1.5376 +		// If it's not an introduction and no method was found, try with regex...
  1.5377 +		if (advice.type != _intro && typeof(source[pointcut.method]) == 'undefined')
  1.5378 +		{
  1.5379 +
  1.5380 +			for (var method in source)
  1.5381 +			{
  1.5382 +				if (source[method] != null && source[method] instanceof Function && method.match(pointcut.method))
  1.5383 +				{
  1.5384 +					advices[advices.length] = weaveOne(source, method, advice);
  1.5385 +				}
  1.5386 +			}
  1.5387 +
  1.5388 +			if (advices.length == 0)
  1.5389 +				throw 'No method: ' + pointcut.method;
  1.5390 +
  1.5391 +		} 
  1.5392 +		else
  1.5393 +		{
  1.5394 +			// Return as an array of one element
  1.5395 +			advices[0] = weaveOne(source, pointcut.method, advice);
  1.5396 +		}
  1.5397 +
  1.5398 +		return _regexEnabled ? advices : advices[0];
  1.5399 +
  1.5400 +	};
  1.5401 +
  1.5402 +	Aspect = 
  1.5403 +	{
  1.5404 +		/**
  1.5405 +		 * Creates an advice after the defined point-cut. The advice will be executed after the point-cut method 
  1.5406 +		 * has completed execution successfully, and will receive one parameter with the result of the execution.
  1.5407 +		 * This function returns an array of weaved aspects (Function).
  1.5408 +		 *
  1.5409 +		 * @example jQuery.aop.after( {target: window, method: 'MyGlobalMethod'}, function(result) { alert('Returned: ' + result); } );
  1.5410 +		 * @result Array<Function>
  1.5411 +		 *
  1.5412 +		 * @example jQuery.aop.after( {target: String, method: 'indexOf'}, function(index) { alert('Result found at: ' + index + ' on:' + this); } );
  1.5413 +		 * @result Array<Function>
  1.5414 +		 *
  1.5415 +		 * @name after
  1.5416 +		 * @param Map pointcut Definition of the point-cut to apply the advice. A point-cut is the definition of the object/s and method/s to be weaved.
  1.5417 +		 * @option Object target Target object to be weaved. 
  1.5418 +		 * @option String method Name of the function to be weaved. Regex are supported, but not on built-in objects.
  1.5419 +		 * @param Function advice Function containing the code that will get called after the execution of the point-cut. It receives one parameter
  1.5420 +		 *                        with the result of the point-cut's execution.
  1.5421 +		 *
  1.5422 +		 * @type Array<Function>
  1.5423 +		 * @cat Plugins/General
  1.5424 +		 */
  1.5425 +		after : function(pointcut, advice)
  1.5426 +		{
  1.5427 +			return weave( pointcut, { type: _after, value: advice } );
  1.5428 +		},
  1.5429 +
  1.5430 +		/**
  1.5431 +		 * Creates an advice before the defined point-cut. The advice will be executed before the point-cut method 
  1.5432 +		 * but cannot modify the behavior of the method, or prevent its execution.
  1.5433 +		 * This function returns an array of weaved aspects (Function).
  1.5434 +		 *
  1.5435 +		 * @example jQuery.aop.before( {target: window, method: 'MyGlobalMethod'}, function() { alert('About to execute MyGlobalMethod'); } );
  1.5436 +		 * @result Array<Function>
  1.5437 +		 *
  1.5438 +		 * @example jQuery.aop.before( {target: String, method: 'indexOf'}, function(index) { alert('About to execute String.indexOf on: ' + this); } );
  1.5439 +		 * @result Array<Function>
  1.5440 +		 *
  1.5441 +		 * @name before
  1.5442 +		 * @param Map pointcut Definition of the point-cut to apply the advice. A point-cut is the definition of the object/s and method/s to be weaved.
  1.5443 +		 * @option Object target Target object to be weaved. 
  1.5444 +		 * @option String method Name of the function to be weaved. Regex are supported, but not on built-in objects.
  1.5445 +		 * @param Function advice Function containing the code that will get called before the execution of the point-cut.
  1.5446 +		 *
  1.5447 +		 * @type Array<Function>
  1.5448 +		 * @cat Plugins/General
  1.5449 +		 */
  1.5450 +		before : function(pointcut, advice)
  1.5451 +		{
  1.5452 +			return weave( pointcut, { type: _before, value: advice } );
  1.5453 +		},
  1.5454 +
  1.5455 +
  1.5456 +		/**
  1.5457 +		 * Creates an advice 'around' the defined point-cut. This type of advice can control the point-cut method execution by calling
  1.5458 +		 * the functions '.proceed()' on the 'invocation' object, and also, can modify the arguments collection before sending them to the function call.
  1.5459 +		 * This function returns an array of weaved aspects (Function).
  1.5460 +		 *
  1.5461 +		 * @example jQuery.aop.around( {target: window, method: 'MyGlobalMethod'}, function(invocation) {
  1.5462 +		 *                alert('# of Arguments: ' + invocation.arguments.length); 
  1.5463 +		 *                return invocation.proceed(); 
  1.5464 +		 *          } );
  1.5465 +		 * @result Array<Function>
  1.5466 +		 *
  1.5467 +		 * @example jQuery.aop.around( {target: String, method: 'indexOf'}, function(invocation) { 
  1.5468 +		 *                alert('Searching: ' + invocation.arguments[0] + ' on: ' + this); 
  1.5469 +		 *                return invocation.proceed(); 
  1.5470 +		 *          } );
  1.5471 +		 * @result Array<Function>
  1.5472 +		 *
  1.5473 +		 * @example jQuery.aop.around( {target: window, method: /Get(\d+)/}, function(invocation) {
  1.5474 +		 *                alert('Executing ' + invocation.method); 
  1.5475 +		 *                return invocation.proceed(); 
  1.5476 +		 *          } );
  1.5477 +		 * @desc Matches all global methods starting with 'Get' and followed by a number.
  1.5478 +		 * @result Array<Function>
  1.5479 +		 *
  1.5480 +		 *
  1.5481 +		 * @name around
  1.5482 +		 * @param Map pointcut Definition of the point-cut to apply the advice. A point-cut is the definition of the object/s and method/s to be weaved.
  1.5483 +		 * @option Object target Target object to be weaved. 
  1.5484 +		 * @option String method Name of the function to be weaved. Regex are supported, but not on built-in objects.
  1.5485 +		 * @param Function advice Function containing the code that will get called around the execution of the point-cut. This advice will be called with one
  1.5486 +		 *                        argument containing one function '.proceed()', the collection of arguments '.arguments', and the matched method name '.method'.
  1.5487 +		 *
  1.5488 +		 * @type Array<Function>
  1.5489 +		 * @cat Plugins/General
  1.5490 +		 */
  1.5491 +		around : function(pointcut, advice)
  1.5492 +		{
  1.5493 +			return weave( pointcut, { type: _around, value: advice } );
  1.5494 +		},
  1.5495 +
  1.5496 +		/**
  1.5497 +		 * Creates an introduction on the defined point-cut. This type of advice replaces any existing methods with the same
  1.5498 +		 * name. To restore them, just unweave it.
  1.5499 +		 * This function returns an array with only one weaved aspect (Function).
  1.5500 +		 *
  1.5501 +		 * @example jQuery.aop.introduction( {target: window, method: 'MyGlobalMethod'}, function(result) { alert('Returned: ' + result); } );
  1.5502 +		 * @result Array<Function>
  1.5503 +		 *
  1.5504 +		 * @example jQuery.aop.introduction( {target: String, method: 'log'}, function() { alert('Console: ' + this); } );
  1.5505 +		 * @result Array<Function>
  1.5506 +		 *
  1.5507 +		 * @name introduction
  1.5508 +		 * @param Map pointcut Definition of the point-cut to apply the advice. A point-cut is the definition of the object/s and method/s to be weaved.
  1.5509 +		 * @option Object target Target object to be weaved. 
  1.5510 +		 * @option String method Name of the function to be weaved.
  1.5511 +		 * @param Function advice Function containing the code that will be executed on the point-cut. 
  1.5512 +		 *
  1.5513 +		 * @type Array<Function>
  1.5514 +		 * @cat Plugins/General
  1.5515 +		 */
  1.5516 +		introduction : function(pointcut, advice)
  1.5517 +		{
  1.5518 +			return weave( pointcut, { type: _intro, value: advice } );
  1.5519 +		},
  1.5520 +		
  1.5521 +		/**
  1.5522 +		 * Configures global options.
  1.5523 +		 *
  1.5524 +		 * @name setup
  1.5525 +		 * @param Map settings Configuration options.
  1.5526 +		 * @option Boolean regexMatch Enables/disables regex matching of method names.
  1.5527 +		 *
  1.5528 +		 * @example jQuery.aop.setup( { regexMatch: false } );
  1.5529 +		 * @desc Disable regex matching.
  1.5530 +		 *
  1.5531 +		 * @type Void
  1.5532 +		 * @cat Plugins/General
  1.5533 +		 */
  1.5534 +		setup: function(settings)
  1.5535 +		{
  1.5536 +			_regexEnabled = settings.regexMatch;
  1.5537 +		}
  1.5538 +	};
  1.5539 +
  1.5540 +})();
  1.5541 +
  1.5542 +
  1.5543 +
  1.5544 +
  1.5545 +/**
  1.5546 + * @name EventTarget
  1.5547 + * @w3c:domlevel 2
  1.5548 + * @uri -//TODO: paste dom event level 2 w3c spc uri here
  1.5549 + */
  1.5550 +EventTarget = function(){};
  1.5551 +EventTarget.prototype.addEventListener = function(type, fn, phase){
  1.5552 +    __addEventListener__(this, type, fn, phase);
  1.5553 +};
  1.5554 +EventTarget.prototype.removeEventListener = function(type, fn){
  1.5555 +    __removeEventListener__(this, type, fn);
  1.5556 +};
  1.5557 +EventTarget.prototype.dispatchEvent = function(event, bubbles){
  1.5558 +    __dispatchEvent__(this, event, bubbles);
  1.5559 +};
  1.5560 +
  1.5561 +__extend__(Node.prototype, EventTarget.prototype);
  1.5562 +
  1.5563 +
  1.5564 +var $events = [{}];
  1.5565 +
  1.5566 +function __addEventListener__(target, type, fn, phase){
  1.5567 +    phase = !!phase?"CAPTURING":"BUBBLING";
  1.5568 +    if ( !target.uuid ) {
  1.5569 +        //console.log('event uuid %s %s', target, target.uuid);
  1.5570 +        target.uuid = $events.length+'';
  1.5571 +    }
  1.5572 +    if ( !$events[target.uuid] ) {
  1.5573 +        //console.log('creating listener for target: %s %s', target, target.uuid);
  1.5574 +        $events[target.uuid] = {};
  1.5575 +    }
  1.5576 +    if ( !$events[target.uuid][type] ){
  1.5577 +        //console.log('creating listener for type: %s %s %s', target, target.uuid, type);
  1.5578 +        $events[target.uuid][type] = {
  1.5579 +            CAPTURING:[],
  1.5580 +            BUBBLING:[]
  1.5581 +        };
  1.5582 +    }
  1.5583 +    if ( $events[target.uuid][type][phase].indexOf( fn ) < 0 ){
  1.5584 +        //console.log('adding event listener %s %s %s %s %s %s', target, target.uuid, type, phase,
  1.5585 +        //    $events[target.uuid][type][phase].length, $events[target.uuid][type][phase].indexOf( fn ));
  1.5586 +        //console.log('creating listener for function: %s %s %s', target, target.uuid, phase);
  1.5587 +        $events[target.uuid][type][phase].push( fn );
  1.5588 +        //console.log('adding event listener %s %s %s %s %s %s', target, target.uuid, type, phase,
  1.5589 +        //    $events[target.uuid][type][phase].length, $events[target.uuid][type][phase].indexOf( fn ));
  1.5590 +    }
  1.5591 +    //console.log('registered event listeners %s', $events.length);
  1.5592 +}
  1.5593 +
  1.5594 +function __removeEventListener__(target, type, fn, phase){
  1.5595 +
  1.5596 +    phase = !!phase?"CAPTURING":"BUBBLING";
  1.5597 +    if ( !target.uuid ) {
  1.5598 +        return;
  1.5599 +    }
  1.5600 +    if ( !$events[target.uuid] ) {
  1.5601 +        return;
  1.5602 +    }
  1.5603 +    if(type == '*'){
  1.5604 +        //used to clean all event listeners for a given node
  1.5605 +        //console.log('cleaning all event listeners for node %s %s',target, target.uuid);
  1.5606 +        delete $events[target.uuid];
  1.5607 +        return;
  1.5608 +    }else if ( !$events[target.uuid][type] ){
  1.5609 +        return;
  1.5610 +    }
  1.5611 +    $events[target.uuid][type][phase] =
  1.5612 +    $events[target.uuid][type][phase].filter(function(f){
  1.5613 +        //console.log('removing event listener %s %s %s %s', target, type, phase, fn);
  1.5614 +        return f != fn;
  1.5615 +    });
  1.5616 +}
  1.5617 +
  1.5618 +var __eventuuid__ = 0;
  1.5619 +function __dispatchEvent__(target, event, bubbles){
  1.5620 +
  1.5621 +    if (!event.uuid) {
  1.5622 +        event.uuid = __eventuuid__++;
  1.5623 +    }
  1.5624 +    //the window scope defines the $event object, for IE(^^^) compatibility;
  1.5625 +    //$event = event;
  1.5626 +    //console.log('dispatching event %s', event.uuid);
  1.5627 +    if (bubbles === undefined || bubbles === null) {
  1.5628 +        bubbles = true;
  1.5629 +    }
  1.5630 +
  1.5631 +    if (!event.target) {
  1.5632 +        event.target = target;
  1.5633 +    }
  1.5634 +
  1.5635 +    //console.log('dispatching? %s %s %s', target, event.type, bubbles);
  1.5636 +    if ( event.type && (target.nodeType || target === window )) {
  1.5637 +
  1.5638 +        //console.log('dispatching event %s %s %s', target, event.type, bubbles);
  1.5639 +        __captureEvent__(target, event);
  1.5640 +
  1.5641 +        event.eventPhase = Event.AT_TARGET;
  1.5642 +        if ( target.uuid && $events[target.uuid] && $events[target.uuid][event.type] ) {
  1.5643 +            event.currentTarget = target;
  1.5644 +            //console.log('dispatching %s %s %s %s', target, event.type,
  1.5645 +            //  $events[target.uuid][event.type]['CAPTURING'].length);
  1.5646 +            $events[target.uuid][event.type].CAPTURING.forEach(function(fn){
  1.5647 +                //console.log('AT_TARGET (CAPTURING) event %s', fn);
  1.5648 +                var returnValue = fn( event );
  1.5649 +                //console.log('AT_TARGET (CAPTURING) return value %s', returnValue);
  1.5650 +                if(returnValue === false){
  1.5651 +                    event.stopPropagation();
  1.5652 +                }
  1.5653 +            });
  1.5654 +            //console.log('dispatching %s %s %s %s', target, event.type,
  1.5655 +            //  $events[target.uuid][event.type]['BUBBLING'].length);
  1.5656 +            $events[target.uuid][event.type].BUBBLING.forEach(function(fn){
  1.5657 +                //console.log('AT_TARGET (BUBBLING) event %s', fn);
  1.5658 +                var returnValue = fn( event );
  1.5659 +                //console.log('AT_TARGET (BUBBLING) return value %s', returnValue);
  1.5660 +                if(returnValue === false){
  1.5661 +                    event.stopPropagation();
  1.5662 +                }
  1.5663 +            });
  1.5664 +        }
  1.5665 +        if (target["on" + event.type]) {
  1.5666 +            target["on" + event.type](event);
  1.5667 +        }
  1.5668 +        if (bubbles && !event.cancelled){
  1.5669 +            __bubbleEvent__(target, event);
  1.5670 +        }
  1.5671 +        if(!event._preventDefault){
  1.5672 +            //At this point I'm guessing that just HTMLEvents are concerned
  1.5673 +            //with default behavior being executed in a browser but I could be
  1.5674 +            //wrong as usual.  The goal is much more to filter at this point
  1.5675 +            //what events have no need to be handled
  1.5676 +            //console.log('triggering default behavior for %s', event.type);
  1.5677 +            if(event.type in Envjs.defaultEventBehaviors){
  1.5678 +                Envjs.defaultEventBehaviors[event.type](event);
  1.5679 +            }
  1.5680 +        }
  1.5681 +        //console.log('deleting event %s', event.uuid);
  1.5682 +        event.target = null;
  1.5683 +        event = null;
  1.5684 +    }else{
  1.5685 +        throw new EventException(EventException.UNSPECIFIED_EVENT_TYPE_ERR);
  1.5686 +    }
  1.5687 +}
  1.5688 +
  1.5689 +function __captureEvent__(target, event){
  1.5690 +    var ancestorStack = [],
  1.5691 +        parent = target.parentNode;
  1.5692 +
  1.5693 +    event.eventPhase = Event.CAPTURING_PHASE;
  1.5694 +    while(parent){
  1.5695 +        if(parent.uuid && $events[parent.uuid] && $events[parent.uuid][event.type]){
  1.5696 +            ancestorStack.push(parent);
  1.5697 +        }
  1.5698 +        parent = parent.parentNode;
  1.5699 +    }
  1.5700 +    while(ancestorStack.length && !event.cancelled){
  1.5701 +        event.currentTarget = ancestorStack.pop();
  1.5702 +        if($events[event.currentTarget.uuid] && $events[event.currentTarget.uuid][event.type]){
  1.5703 +            $events[event.currentTarget.uuid][event.type].CAPTURING.forEach(function(fn){
  1.5704 +                var returnValue = fn( event );
  1.5705 +                if(returnValue === false){
  1.5706 +                    event.stopPropagation();
  1.5707 +                }
  1.5708 +            });
  1.5709 +        }
  1.5710 +    }
  1.5711 +}
  1.5712 +
  1.5713 +function __bubbleEvent__(target, event){
  1.5714 +    var parent = target.parentNode;
  1.5715 +    event.eventPhase = Event.BUBBLING_PHASE;
  1.5716 +    while(parent){
  1.5717 +        if(parent.uuid && $events[parent.uuid] && $events[parent.uuid][event.type] ){
  1.5718 +            event.currentTarget = parent;
  1.5719 +            $events[event.currentTarget.uuid][event.type].BUBBLING.forEach(function(fn){
  1.5720 +                var returnValue = fn( event );
  1.5721 +                if(returnValue === false){
  1.5722 +                    event.stopPropagation();
  1.5723 +                }
  1.5724 +            });
  1.5725 +        }
  1.5726 +        parent = parent.parentNode;
  1.5727 +    }
  1.5728 +}
  1.5729 +
  1.5730 +/**
  1.5731 + * @class Event
  1.5732 + */
  1.5733 +Event = function(options){
  1.5734 +    // event state is kept read-only by forcing
  1.5735 +    // a new object for each event.  This may not
  1.5736 +    // be appropriate in the long run and we'll
  1.5737 +    // have to decide if we simply dont adhere to
  1.5738 +    // the read-only restriction of the specification
  1.5739 +    this._bubbles = true;
  1.5740 +    this._cancelable = true;
  1.5741 +    this._cancelled = false;
  1.5742 +    this._currentTarget = null;
  1.5743 +    this._target = null;
  1.5744 +    this._eventPhase = Event.AT_TARGET;
  1.5745 +    this._timeStamp = new Date().getTime();
  1.5746 +    this._preventDefault = false;
  1.5747 +    this._stopPropogation = false;
  1.5748 +};
  1.5749 +
  1.5750 +__extend__(Event.prototype,{
  1.5751 +    get bubbles(){return this._bubbles;},
  1.5752 +    get cancelable(){return this._cancelable;},
  1.5753 +    get currentTarget(){return this._currentTarget;},
  1.5754 +    set currentTarget(currentTarget){ this._currentTarget = currentTarget; },
  1.5755 +    get eventPhase(){return this._eventPhase;},
  1.5756 +    set eventPhase(eventPhase){this._eventPhase = eventPhase;},
  1.5757 +    get target(){return this._target;},
  1.5758 +    set target(target){ this._target = target;},
  1.5759 +    get timeStamp(){return this._timeStamp;},
  1.5760 +    get type(){return this._type;},
  1.5761 +    initEvent: function(type, bubbles, cancelable){
  1.5762 +        this._type=type?type:'';
  1.5763 +        this._bubbles=!!bubbles;
  1.5764 +        this._cancelable=!!cancelable;
  1.5765 +    },
  1.5766 +    preventDefault: function(){
  1.5767 +        this._preventDefault = true;
  1.5768 +    },
  1.5769 +    stopPropagation: function(){
  1.5770 +        if(this._cancelable){
  1.5771 +            this._cancelled = true;
  1.5772 +            this._bubbles = false;
  1.5773 +        }
  1.5774 +    },
  1.5775 +    get cancelled(){
  1.5776 +        return this._cancelled;
  1.5777 +    },
  1.5778 +    toString: function(){
  1.5779 +        return '[object Event]';
  1.5780 +    }
  1.5781 +});
  1.5782 +
  1.5783 +__extend__(Event,{
  1.5784 +    CAPTURING_PHASE : 1,
  1.5785 +    AT_TARGET       : 2,
  1.5786 +    BUBBLING_PHASE  : 3
  1.5787 +});
  1.5788 +
  1.5789 +
  1.5790 +
  1.5791 +/**
  1.5792 + * @name UIEvent
  1.5793 + * @param {Object} options
  1.5794 + */
  1.5795 +UIEvent = function(options) {
  1.5796 +    this._view = null;
  1.5797 +    this._detail = 0;
  1.5798 +};
  1.5799 +
  1.5800 +UIEvent.prototype = new Event();
  1.5801 +__extend__(UIEvent.prototype,{
  1.5802 +    get view(){
  1.5803 +        return this._view;
  1.5804 +    },
  1.5805 +    get detail(){
  1.5806 +        return this._detail;
  1.5807 +    },
  1.5808 +    initUIEvent: function(type, bubbles, cancelable, windowObject, detail){
  1.5809 +        this.initEvent(type, bubbles, cancelable);
  1.5810 +        this._detail = 0;
  1.5811 +        this._view = windowObject;
  1.5812 +    }
  1.5813 +});
  1.5814 +
  1.5815 +var $onblur,
  1.5816 +    $onfocus,
  1.5817 +    $onresize;
  1.5818 +
  1.5819 +
  1.5820 +/**
  1.5821 + * @name MouseEvent
  1.5822 + * @w3c:domlevel 2 
  1.5823 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
  1.5824 + */
  1.5825 +MouseEvent = function(options) {
  1.5826 +    this._screenX= 0;
  1.5827 +    this._screenY= 0;
  1.5828 +    this._clientX= 0;
  1.5829 +    this._clientY= 0;
  1.5830 +    this._ctrlKey= false;
  1.5831 +    this._metaKey= false;
  1.5832 +    this._altKey= false;
  1.5833 +    this._button= null;
  1.5834 +    this._relatedTarget= null;
  1.5835 +};
  1.5836 +MouseEvent.prototype = new UIEvent();
  1.5837 +__extend__(MouseEvent.prototype,{
  1.5838 +    get screenX(){
  1.5839 +        return this._screenX;
  1.5840 +    },
  1.5841 +    get screenY(){
  1.5842 +        return this._screenY;
  1.5843 +    },
  1.5844 +    get clientX(){
  1.5845 +        return this._clientX;
  1.5846 +    },
  1.5847 +    get clientY(){
  1.5848 +        return this._clientY;
  1.5849 +    },
  1.5850 +    get ctrlKey(){
  1.5851 +        return this._ctrlKey;
  1.5852 +    },
  1.5853 +    get altKey(){
  1.5854 +        return this._altKey;
  1.5855 +    },
  1.5856 +    get shiftKey(){
  1.5857 +        return this._shiftKey;
  1.5858 +    },
  1.5859 +    get metaKey(){
  1.5860 +        return this._metaKey;
  1.5861 +    },
  1.5862 +    get button(){
  1.5863 +        return this._button;
  1.5864 +    },
  1.5865 +    get relatedTarget(){
  1.5866 +        return this._relatedTarget;
  1.5867 +    },
  1.5868 +    initMouseEvent: function(type, bubbles, cancelable, windowObject, detail,
  1.5869 +            screenX, screenY, clientX, clientY, ctrlKey, altKey, shiftKey, 
  1.5870 +            metaKey, button, relatedTarget){
  1.5871 +        this.initUIEvent(type, bubbles, cancelable, windowObject, detail);
  1.5872 +        this._screenX = screenX;
  1.5873 +        this._screenY = screenY;
  1.5874 +        this._clientX = clientX;
  1.5875 +        this._clientY = clientY;
  1.5876 +        this._ctrlKey = ctrlKey;
  1.5877 +        this._altKey = altKey;
  1.5878 +        this._shiftKey = shiftKey;
  1.5879 +        this._metaKey = metaKey;
  1.5880 +        this._button = button;
  1.5881 +        this._relatedTarget = relatedTarget;
  1.5882 +    }
  1.5883 +});
  1.5884 +
  1.5885 +/**
  1.5886 + * Interface KeyboardEvent (introduced in DOM Level 3)
  1.5887 + */
  1.5888 +KeyboardEvent = function(options) {
  1.5889 +    this._keyIdentifier = 0;
  1.5890 +    this._keyLocation = 0;
  1.5891 +    this._ctrlKey = false;
  1.5892 +    this._metaKey = false;
  1.5893 +    this._altKey = false;
  1.5894 +    this._metaKey = false;
  1.5895 +};
  1.5896 +KeyboardEvent.prototype = new UIEvent();
  1.5897 +
  1.5898 +__extend__(KeyboardEvent.prototype,{
  1.5899 +
  1.5900 +    get ctrlKey(){
  1.5901 +        return this._ctrlKey;
  1.5902 +    },
  1.5903 +    get altKey(){
  1.5904 +        return this._altKey;
  1.5905 +    },
  1.5906 +    get shiftKey(){
  1.5907 +        return this._shiftKey;
  1.5908 +    },
  1.5909 +    get metaKey(){
  1.5910 +        return this._metaKey;
  1.5911 +    },
  1.5912 +    get button(){
  1.5913 +        return this._button;
  1.5914 +    },
  1.5915 +    get relatedTarget(){
  1.5916 +        return this._relatedTarget;
  1.5917 +    },
  1.5918 +    getModifiersState: function(keyIdentifier){
  1.5919 +
  1.5920 +    },
  1.5921 +    initMouseEvent: function(type, bubbles, cancelable, windowObject,
  1.5922 +            keyIdentifier, keyLocation, modifiersList, repeat){
  1.5923 +        this.initUIEvent(type, bubbles, cancelable, windowObject, 0);
  1.5924 +        this._keyIdentifier = keyIdentifier;
  1.5925 +        this._keyLocation = keyLocation;
  1.5926 +        this._modifiersList = modifiersList;
  1.5927 +        this._repeat = repeat;
  1.5928 +    }
  1.5929 +});
  1.5930 +
  1.5931 +KeyboardEvent.DOM_KEY_LOCATION_STANDARD      = 0;
  1.5932 +KeyboardEvent.DOM_KEY_LOCATION_LEFT          = 1;
  1.5933 +KeyboardEvent.DOM_KEY_LOCATION_RIGHT         = 2;
  1.5934 +KeyboardEvent.DOM_KEY_LOCATION_NUMPAD        = 3;
  1.5935 +KeyboardEvent.DOM_KEY_LOCATION_MOBILE        = 4;
  1.5936 +KeyboardEvent.DOM_KEY_LOCATION_JOYSTICK      = 5;
  1.5937 +
  1.5938 +
  1.5939 +
  1.5940 +//We dont fire mutation events until someone has registered for them
  1.5941 +var __supportedMutations__ = /DOMSubtreeModified|DOMNodeInserted|DOMNodeRemoved|DOMAttrModified|DOMCharacterDataModified/;
  1.5942 +
  1.5943 +var __fireMutationEvents__ = Aspect.before({
  1.5944 +    target: EventTarget,
  1.5945 +    method: 'addEventListener'
  1.5946 +}, function(target, type){
  1.5947 +    if(type && type.match(__supportedMutations__)){
  1.5948 +        //unweaving removes the __addEventListener__ aspect
  1.5949 +        __fireMutationEvents__.unweave();
  1.5950 +        // These two methods are enough to cover all dom 2 manipulations
  1.5951 +        Aspect.around({
  1.5952 +            target: Node,
  1.5953 +            method:"removeChild"
  1.5954 +        }, function(invocation){
  1.5955 +            var event,
  1.5956 +                node = invocation.arguments[0];
  1.5957 +            event = node.ownerDocument.createEvent('MutationEvents');
  1.5958 +            event.initEvent('DOMNodeRemoved', true, false, node.parentNode, null, null, null, null);
  1.5959 +            node.dispatchEvent(event, false);
  1.5960 +            return invocation.proceed();
  1.5961 +
  1.5962 +        });
  1.5963 +        Aspect.around({
  1.5964 +            target: Node,
  1.5965 +            method:"appendChild"
  1.5966 +        }, function(invocation) {
  1.5967 +            var event,
  1.5968 +                node = invocation.proceed();
  1.5969 +            event = node.ownerDocument.createEvent('MutationEvents');
  1.5970 +            event.initEvent('DOMNodeInserted', true, false, node.parentNode, null, null, null, null);
  1.5971 +            node.dispatchEvent(event, false);
  1.5972 +            return node;
  1.5973 +        });
  1.5974 +    }
  1.5975 +});
  1.5976 +
  1.5977 +/**
  1.5978 + * @name MutationEvent
  1.5979 + * @param {Object} options
  1.5980 + */
  1.5981 +MutationEvent = function(options) {
  1.5982 +    this._cancelable = false;
  1.5983 +    this._timeStamp = 0;
  1.5984 +};
  1.5985 +
  1.5986 +MutationEvent.prototype = new Event();
  1.5987 +__extend__(MutationEvent.prototype,{
  1.5988 +    get relatedNode(){
  1.5989 +        return this._relatedNode;
  1.5990 +    },
  1.5991 +    get prevValue(){
  1.5992 +        return this._prevValue;
  1.5993 +    },
  1.5994 +    get newValue(){
  1.5995 +        return this._newValue;
  1.5996 +    },
  1.5997 +    get attrName(){
  1.5998 +        return this._attrName;
  1.5999 +    },
  1.6000 +    get attrChange(){
  1.6001 +        return this._attrChange;
  1.6002 +    },
  1.6003 +    initMutationEvent: function( type, bubbles, cancelable,
  1.6004 +            relatedNode, prevValue, newValue, attrName, attrChange ){
  1.6005 +        this._relatedNode = relatedNode;
  1.6006 +        this._prevValue = prevValue;
  1.6007 +        this._newValue = newValue;
  1.6008 +        this._attrName = attrName;
  1.6009 +        this._attrChange = attrChange;
  1.6010 +        switch(type){
  1.6011 +            case "DOMSubtreeModified":
  1.6012 +                this.initEvent(type, true, false);
  1.6013 +                break;
  1.6014 +            case "DOMNodeInserted":
  1.6015 +                this.initEvent(type, true, false);
  1.6016 +                break;
  1.6017 +            case "DOMNodeRemoved":
  1.6018 +                this.initEvent(type, true, false);
  1.6019 +                break;
  1.6020 +            case "DOMNodeRemovedFromDocument":
  1.6021 +                this.initEvent(type, false, false);
  1.6022 +                break;
  1.6023 +            case "DOMNodeInsertedIntoDocument":
  1.6024 +                this.initEvent(type, false, false);
  1.6025 +                break;
  1.6026 +            case "DOMAttrModified":
  1.6027 +                this.initEvent(type, true, false);
  1.6028 +                break;
  1.6029 +            case "DOMCharacterDataModified":
  1.6030 +                this.initEvent(type, true, false);
  1.6031 +                break;
  1.6032 +            default:
  1.6033 +                this.initEvent(type, bubbles, cancelable);
  1.6034 +        }
  1.6035 +    }
  1.6036 +});
  1.6037 +
  1.6038 +// constants
  1.6039 +MutationEvent.ADDITION = 0;
  1.6040 +MutationEvent.MODIFICATION = 1;
  1.6041 +MutationEvent.REMOVAL = 2;
  1.6042 +
  1.6043 +
  1.6044 +/**
  1.6045 + * @name EventException
  1.6046 + */
  1.6047 +EventException = function(code) {
  1.6048 +  this.code = code;
  1.6049 +};
  1.6050 +EventException.UNSPECIFIED_EVENT_TYPE_ERR = 0;
  1.6051 +/**
  1.6052 + *
  1.6053 + * DOM Level 2: http://www.w3.org/TR/DOM-Level-2-Events/events.html
  1.6054 + * DOM Level 3: http://www.w3.org/TR/DOM-Level-3-Events/
  1.6055 + *
  1.6056 + * interface DocumentEvent {
  1.6057 + *   Event createEvent (in DOMString eventType)
  1.6058 + *      raises (DOMException);
  1.6059 + * };
  1.6060 + *
  1.6061 + * Firefox (3.6) exposes DocumentEvent
  1.6062 + * Safari (4) does NOT.
  1.6063 + */
  1.6064 +
  1.6065 +/**
  1.6066 + * TODO: Not sure we need a full prototype.  We not just an regular object?
  1.6067 + */
  1.6068 +DocumentEvent = function(){};
  1.6069 +DocumentEvent.prototype.__EventMap__ = {
  1.6070 +    // Safari4: singular and plural forms accepted
  1.6071 +    // Firefox3.6: singular and plural forms accepted
  1.6072 +    'Event'          : Event,
  1.6073 +    'Events'         : Event,
  1.6074 +    'UIEvent'        : UIEvent,
  1.6075 +    'UIEvents'       : UIEvent,
  1.6076 +    'MouseEvent'     : MouseEvent,
  1.6077 +    'MouseEvents'    : MouseEvent,
  1.6078 +    'MutationEvent'  : MutationEvent,
  1.6079 +    'MutationEvents' : MutationEvent,
  1.6080 +
  1.6081 +    // Safari4: accepts HTMLEvents, but not HTMLEvent
  1.6082 +    // Firefox3.6: accepts HTMLEvents, but not HTMLEvent
  1.6083 +    'HTMLEvent'      : Event,
  1.6084 +    'HTMLEvents'     : Event,
  1.6085 +
  1.6086 +    // Safari4: both not accepted
  1.6087 +    // Firefox3.6, only KeyEvents is accepted
  1.6088 +    'KeyEvent'       : KeyboardEvent,
  1.6089 +    'KeyEvents'      : KeyboardEvent,
  1.6090 +
  1.6091 +    // Safari4: both accepted
  1.6092 +    // Firefox3.6: none accepted
  1.6093 +    'KeyboardEvent'  : KeyboardEvent,
  1.6094 +    'KeyboardEvents' : KeyboardEvent
  1.6095 +};
  1.6096 +
  1.6097 +DocumentEvent.prototype.createEvent = function(eventType) {
  1.6098 +    var Clazz = this.__EventMap__[eventType];
  1.6099 +    if (Clazz) {
  1.6100 +        return new Clazz();
  1.6101 +    }
  1.6102 +    throw(new DOMException(DOMException.NOT_SUPPORTED_ERR));
  1.6103 +};
  1.6104 +
  1.6105 +__extend__(Document.prototype, DocumentEvent.prototype);
  1.6106 +
  1.6107 +/**
  1.6108 + * @author john resig & the envjs team
  1.6109 + * @uri http://www.envjs.com/
  1.6110 + * @copyright 2008-2010
  1.6111 + * @license MIT
  1.6112 + */
  1.6113 +//CLOSURE_END
  1.6114 +}());
  1.6115 +
  1.6116 +/*
  1.6117 + * Envjs timer.1.2.13 
  1.6118 + * Pure JavaScript Browser Environment
  1.6119 + * By John Resig <http://ejohn.org/> and the Envjs Team
  1.6120 + * Copyright 2008-2010 John Resig, under the MIT License
  1.6121 + * 
  1.6122 + * Parts of the implementation were originally written by:\
  1.6123 + * Steven Parkes
  1.6124 + * 
  1.6125 + * requires Envjs.wait, Envjs.sleep, Envjs.WAIT_INTERVAL
  1.6126 + */
  1.6127 +var setTimeout,
  1.6128 +    clearTimeout,
  1.6129 +    setInterval,
  1.6130 +    clearInterval;
  1.6131 +    
  1.6132 +/*
  1.6133 + * Envjs timer.1.2.13 
  1.6134 + * Pure JavaScript Browser Environment
  1.6135 + * By John Resig <http://ejohn.org/> and the Envjs Team
  1.6136 + * Copyright 2008-2010 John Resig, under the MIT License
  1.6137 + */
  1.6138 +
  1.6139 +//CLOSURE_START
  1.6140 +(function(){
  1.6141 +
  1.6142 +
  1.6143 +
  1.6144 +
  1.6145 +/*
  1.6146 +*       timer.js
  1.6147 +*   implementation provided by Steven Parkes
  1.6148 +*/
  1.6149 +
  1.6150 +//private
  1.6151 +var $timers = [],
  1.6152 +    EVENT_LOOP_RUNNING = false;
  1.6153 +
  1.6154 +$timers.lock = function(fn){
  1.6155 +    Envjs.sync(fn)();
  1.6156 +};
  1.6157 +
  1.6158 +//private internal class
  1.6159 +var Timer = function(fn, interval){
  1.6160 +    this.fn = fn;
  1.6161 +    this.interval = interval;
  1.6162 +    this.at = Date.now() + interval;
  1.6163 +    // allows for calling wait() from callbacks
  1.6164 +    this.running = false;
  1.6165 +};
  1.6166 +
  1.6167 +Timer.prototype.start = function(){};
  1.6168 +Timer.prototype.stop = function(){};
  1.6169 +
  1.6170 +//static
  1.6171 +Timer.normalize = function(time) {
  1.6172 +    time = time*1;
  1.6173 +    if ( isNaN(time) || time < 0 ) {
  1.6174 +        time = 0;
  1.6175 +    }
  1.6176 +
  1.6177 +    if ( EVENT_LOOP_RUNNING && time < Timer.MIN_TIME ) {
  1.6178 +        time = Timer.MIN_TIME;
  1.6179 +    }
  1.6180 +    return time;
  1.6181 +};
  1.6182 +// html5 says this should be at least 4, but the parser is using
  1.6183 +// a setTimeout for the SAX stuff which messes up the world
  1.6184 +Timer.MIN_TIME = /* 4 */ 0;
  1.6185 +
  1.6186 +/**
  1.6187 + * @function setTimeout
  1.6188 + * @param {Object} fn
  1.6189 + * @param {Object} time
  1.6190 + */
  1.6191 +setTimeout = function(fn, time){
  1.6192 +    var num;
  1.6193 +    time = Timer.normalize(time);
  1.6194 +    $timers.lock(function(){
  1.6195 +        num = $timers.length+1;
  1.6196 +        var tfn;
  1.6197 +        if (typeof fn == 'string') {
  1.6198 +            tfn = function() {
  1.6199 +                try {
  1.6200 +                    // eval in global scope
  1.6201 +                    eval(fn, null);
  1.6202 +                // } catch (e) {
  1.6203 +                //     console.log('timer error %s %s', fn, e);
  1.6204 +                } finally {
  1.6205 +                    clearInterval(num);
  1.6206 +                }
  1.6207 +            };
  1.6208 +        } else {
  1.6209 +            tfn = function() {
  1.6210 +                try {
  1.6211 +                    fn();
  1.6212 +                // } catch (e) {
  1.6213 +                //     console.log('timer error %s %s', fn, e);
  1.6214 +                } finally {
  1.6215 +                    clearInterval(num);
  1.6216 +                }
  1.6217 +            };
  1.6218 +        }
  1.6219 +        //console.log("Creating timer number %s", num);
  1.6220 +        $timers[num] = new Timer(tfn, time);
  1.6221 +        $timers[num].start();
  1.6222 +    });
  1.6223 +    return num;
  1.6224 +};
  1.6225 +
  1.6226 +/**
  1.6227 + * @function setInterval
  1.6228 + * @param {Object} fn
  1.6229 + * @param {Object} time
  1.6230 + */
  1.6231 +setInterval = function(fn, time){
  1.6232 +    //console.log('setting interval %s %s', time, fn.toString().substring(0,64));
  1.6233 +    time = Timer.normalize(time);
  1.6234 +    if ( time < 10 ) {
  1.6235 +        time = 10;
  1.6236 +    }
  1.6237 +    if (typeof fn == 'string') {
  1.6238 +        var fnstr = fn;
  1.6239 +        fn = function() {
  1.6240 +            eval(fnstr);
  1.6241 +        };
  1.6242 +    }
  1.6243 +    var num;
  1.6244 +    $timers.lock(function(){
  1.6245 +        num = $timers.length+1;
  1.6246 +        //Envjs.debug("Creating timer number "+num);
  1.6247 +        $timers[num] = new Timer(fn, time);
  1.6248 +        $timers[num].start();
  1.6249 +    });
  1.6250 +    return num;
  1.6251 +};
  1.6252 +
  1.6253 +/**
  1.6254 + * clearInterval
  1.6255 + * @param {Object} num
  1.6256 + */
  1.6257 +clearInterval = clearTimeout = function(num){
  1.6258 +    //console.log("clearing interval "+num);
  1.6259 +    $timers.lock(function(){
  1.6260 +        if ( $timers[num] ) {
  1.6261 +            $timers[num].stop();
  1.6262 +            delete $timers[num];
  1.6263 +        }
  1.6264 +    });
  1.6265 +};
  1.6266 +
  1.6267 +// wait === null/undefined: execute any timers as they fire,
  1.6268 +//  waiting until there are none left
  1.6269 +// wait(n) (n > 0): execute any timers as they fire until there
  1.6270 +//  are none left waiting at least n ms but no more, even if there
  1.6271 +//  are future events/current threads
  1.6272 +// wait(0): execute any immediately runnable timers and return
  1.6273 +// wait(-n): keep sleeping until the next event is more than n ms
  1.6274 +//  in the future
  1.6275 +//
  1.6276 +// TODO: make a priority queue ...
  1.6277 +
  1.6278 +Envjs.wait = function(wait) {
  1.6279 +    //console.log('wait %s', wait);
  1.6280 +    var delta_wait,
  1.6281 +        start = Date.now(),
  1.6282 +        was_running = EVENT_LOOP_RUNNING;
  1.6283 +
  1.6284 +    if (wait < 0) {
  1.6285 +        delta_wait = -wait;
  1.6286 +        wait = 0;
  1.6287 +    }
  1.6288 +    EVENT_LOOP_RUNNING = true;
  1.6289 +    if (wait !== 0 && wait !== null && wait !== undefined){
  1.6290 +        wait += Date.now();
  1.6291 +    }
  1.6292 +
  1.6293 +    var earliest,
  1.6294 +        timer,
  1.6295 +        sleep,
  1.6296 +        index,
  1.6297 +        goal,
  1.6298 +        now,
  1.6299 +        nextfn;
  1.6300 +
  1.6301 +    for (;;) {
  1.6302 +        //console.log('timer loop');
  1.6303 +        earliest = sleep = goal = now = nextfn = null;
  1.6304 +        $timers.lock(function(){
  1.6305 +            for(index in $timers){
  1.6306 +                if( isNaN(index*0) ) {
  1.6307 +                    continue;
  1.6308 +                }
  1.6309 +                timer = $timers[index];
  1.6310 +                // determine timer with smallest run-at time that is
  1.6311 +                // not already running
  1.6312 +                if( !timer.running && ( !earliest || timer.at < earliest.at) ) {
  1.6313 +                    earliest = timer;
  1.6314 +                }
  1.6315 +            }
  1.6316 +        });
  1.6317 +        //next sleep time
  1.6318 +        sleep = earliest && earliest.at - Date.now();
  1.6319 +        if ( earliest && sleep <= 0 ) {
  1.6320 +            nextfn = earliest.fn;
  1.6321 +            try {
  1.6322 +                //console.log('running stack %s', nextfn.toString().substring(0,64));
  1.6323 +                earliest.running = true;
  1.6324 +                nextfn();
  1.6325 +            // } catch (e) {
  1.6326 +            //     console.log('timer error %s %s', nextfn, e);
  1.6327 +            } finally {
  1.6328 +                earliest.running = false;
  1.6329 +            }
  1.6330 +            goal = earliest.at + earliest.interval;
  1.6331 +            now = Date.now();
  1.6332 +            if ( goal < now ) {
  1.6333 +                earliest.at = now;
  1.6334 +            } else {
  1.6335 +                earliest.at = goal;
  1.6336 +            }
  1.6337 +            continue;
  1.6338 +        }
  1.6339 +
  1.6340 +        // bunch of subtle cases here ...
  1.6341 +        if ( !earliest ) {
  1.6342 +            // no events in the queue (but maybe XHR will bring in events, so ...
  1.6343 +            if ( !wait || wait < Date.now() ) {
  1.6344 +                // Loop ends if there are no events and a wait hasn't been
  1.6345 +                // requested or has expired
  1.6346 +                break;
  1.6347 +            }
  1.6348 +        // no events, but a wait requested: fall through to sleep
  1.6349 +        } else {
  1.6350 +            // there are events in the queue, but they aren't firable now
  1.6351 +            /*if ( delta_wait && sleep <= delta_wait ) {
  1.6352 +                //TODO: why waste a check on a tight
  1.6353 +                // loop if it just falls through?
  1.6354 +            // if they will happen within the next delta, fall through to sleep
  1.6355 +            } else */if ( wait === 0 || ( wait > 0 && wait < Date.now () ) ) {
  1.6356 +                // loop ends even if there are events but the user
  1.6357 +                // specifcally asked not to wait too long
  1.6358 +                break;
  1.6359 +            }
  1.6360 +            // there are events and the user wants to wait: fall through to sleep
  1.6361 +        }
  1.6362 +
  1.6363 +        // Related to ajax threads ... hopefully can go away ..
  1.6364 +        var interval =  Envjs.WAIT_INTERVAL || 100;
  1.6365 +        if ( !sleep || sleep > interval ) {
  1.6366 +            sleep = interval;
  1.6367 +        }
  1.6368 +        //console.log('sleeping %s', sleep);
  1.6369 +        Envjs.sleep(sleep);
  1.6370 +
  1.6371 +    }
  1.6372 +    EVENT_LOOP_RUNNING = was_running;
  1.6373 +};
  1.6374 +
  1.6375 +
  1.6376 +/**
  1.6377 + * @author john resig & the envjs team
  1.6378 + * @uri http://www.envjs.com/
  1.6379 + * @copyright 2008-2010
  1.6380 + * @license MIT
  1.6381 + */
  1.6382 +//CLOSURE_END
  1.6383 +}());
  1.6384 +/*
  1.6385 + * Pure JavaScript Browser Environment
  1.6386 + * By John Resig <http://ejohn.org/> and the Envjs Team
  1.6387 + * Copyright 2008-2010 John Resig, under the MIT License
  1.6388 + *
  1.6389 + * This file simply provides the global definitions we need to
  1.6390 + * be able to correctly implement to core browser DOM HTML interfaces.
  1.6391 + */
  1.6392 +var HTMLDocument,
  1.6393 +    HTMLElement,
  1.6394 +    HTMLCollection,
  1.6395 +    HTMLAnchorElement,
  1.6396 +    HTMLAreaElement,
  1.6397 +    HTMLBaseElement,
  1.6398 +    HTMLQuoteElement,
  1.6399 +    HTMLBodyElement,
  1.6400 +    HTMLBRElement,
  1.6401 +    HTMLButtonElement,
  1.6402 +    HTMLCanvasElement,
  1.6403 +    HTMLTableColElement,
  1.6404 +    HTMLModElement,
  1.6405 +    HTMLDivElement,
  1.6406 +    HTMLDListElement,
  1.6407 +    HTMLFieldSetElement,
  1.6408 +    HTMLFormElement,
  1.6409 +    HTMLFrameElement,
  1.6410 +    HTMLFrameSetElement,
  1.6411 +    HTMLHeadElement,
  1.6412 +    HTMLHeadingElement,
  1.6413 +    HTMLHRElement,
  1.6414 +    HTMLHtmlElement,
  1.6415 +    HTMLIFrameElement,
  1.6416 +    HTMLImageElement,
  1.6417 +    HTMLInputElement,
  1.6418 +    HTMLLabelElement,
  1.6419 +    HTMLLegendElement,
  1.6420 +    HTMLLIElement,
  1.6421 +    HTMLLinkElement,
  1.6422 +    HTMLMapElement,
  1.6423 +    HTMLMetaElement,
  1.6424 +    HTMLObjectElement,
  1.6425 +    HTMLOListElement,
  1.6426 +    HTMLOptGroupElement,
  1.6427 +    HTMLOptionElement,
  1.6428 +    HTMLParagraphElement,
  1.6429 +    HTMLParamElement,
  1.6430 +    HTMLPreElement,
  1.6431 +    HTMLScriptElement,
  1.6432 +    HTMLSelectElement,
  1.6433 +    HTMLSpanElement,
  1.6434 +    HTMLStyleElement,
  1.6435 +    HTMLTableElement,
  1.6436 +    HTMLTableSectionElement,
  1.6437 +    HTMLTableCellElement,
  1.6438 +    HTMLTableDataCellElement,
  1.6439 +    HTMLTableHeaderCellElement,
  1.6440 +    HTMLTableRowElement,
  1.6441 +    HTMLTextAreaElement,
  1.6442 +    HTMLTitleElement,
  1.6443 +    HTMLUListElement,
  1.6444 +    HTMLUnknownElement,
  1.6445 +    Image,
  1.6446 +    Option,
  1.6447 +    __loadImage__,
  1.6448 +    __loadLink__;
  1.6449 +
  1.6450 +/*
  1.6451 + * Envjs html.1.2.13 
  1.6452 + * Pure JavaScript Browser Environment
  1.6453 + * By John Resig <http://ejohn.org/> and the Envjs Team
  1.6454 + * Copyright 2008-2010 John Resig, under the MIT License
  1.6455 + */
  1.6456 +
  1.6457 +//CLOSURE_START
  1.6458 +(function(){
  1.6459 +
  1.6460 +
  1.6461 +
  1.6462 +
  1.6463 +
  1.6464 +/**
  1.6465 + * @author ariel flesler
  1.6466 + *    http://flesler.blogspot.com/2008/11/fast-trim-function-for-javascript.html
  1.6467 + * @param {Object} str
  1.6468 + */
  1.6469 +function __trim__( str ){
  1.6470 +    return (str || "").replace( /^\s+|\s+$/g, "" );
  1.6471 +}
  1.6472 +
  1.6473 +
  1.6474 +/**
  1.6475 + * @author john resig
  1.6476 + */
  1.6477 +// Helper method for extending one object with another.
  1.6478 +function __extend__(a,b) {
  1.6479 +    for ( var i in b ) {
  1.6480 +        var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
  1.6481 +        if ( g || s ) {
  1.6482 +            if ( g ) { a.__defineGetter__(i, g); }
  1.6483 +            if ( s ) { a.__defineSetter__(i, s); }
  1.6484 +        } else {
  1.6485 +            a[i] = b[i];
  1.6486 +        }
  1.6487 +    } return a;
  1.6488 +}
  1.6489 +
  1.6490 +/**
  1.6491 + * @author john resig
  1.6492 + */
  1.6493 +//from jQuery
  1.6494 +function __setArray__( target, array ) {
  1.6495 +    // Resetting the length to 0, then using the native Array push
  1.6496 +    // is a super-fast way to populate an object with array-like properties
  1.6497 +    target.length = 0;
  1.6498 +    Array.prototype.push.apply( target, array );
  1.6499 +}
  1.6500 +
  1.6501 +/**
  1.6502 + * @class  HTMLDocument
  1.6503 + *      The Document interface represents the entire HTML or XML document.
  1.6504 + *      Conceptually, it is the root of the document tree, and provides
  1.6505 + *      the primary access to the document's data.
  1.6506 + *
  1.6507 + * @extends Document
  1.6508 + */
  1.6509 +HTMLDocument = function(implementation, ownerWindow, referrer) {
  1.6510 +    Document.apply(this, arguments);
  1.6511 +    this.referrer = referrer || '';
  1.6512 +    this.baseURI = "about:blank";
  1.6513 +    this.ownerWindow = ownerWindow;
  1.6514 +};
  1.6515 +
  1.6516 +HTMLDocument.prototype = new Document();
  1.6517 +
  1.6518 +__extend__(HTMLDocument.prototype, {
  1.6519 +    createElement: function(tagName){
  1.6520 +        var node;
  1.6521 +        tagName = tagName.toUpperCase();
  1.6522 +        // create Element specifying 'this' as ownerDocument
  1.6523 +        // This is an html document so we need to use explicit interfaces per the
  1.6524 +        //TODO: would be much faster as a big switch
  1.6525 +        switch(tagName){
  1.6526 +        case "A":
  1.6527 +            node = new HTMLAnchorElement(this);break;
  1.6528 +        case "AREA":
  1.6529 +            node = new HTMLAreaElement(this);break;
  1.6530 +        case "BASE":
  1.6531 +            node = new HTMLBaseElement(this);break;
  1.6532 +        case "BLOCKQUOTE":
  1.6533 +            node = new HTMLQuoteElement(this);break;
  1.6534 +        case "CANVAS":
  1.6535 +            node = new HTMLCanvasElement(this);break;
  1.6536 +        case "Q":
  1.6537 +            node = new HTMLQuoteElement(this);break;
  1.6538 +        case "BODY":
  1.6539 +            node = new HTMLBodyElement(this);break;
  1.6540 +        case "BR":
  1.6541 +            node = new HTMLBRElement(this);break;
  1.6542 +        case "BUTTON":
  1.6543 +            node = new HTMLButtonElement(this);break;
  1.6544 +        case "CAPTION":
  1.6545 +            node = new HTMLElement(this);break;
  1.6546 +        case "COL":
  1.6547 +            node = new HTMLTableColElement(this);break;
  1.6548 +        case "COLGROUP":
  1.6549 +            node = new HTMLTableColElement(this);break;
  1.6550 +        case "DEL":
  1.6551 +            node = new HTMLModElement(this);break;
  1.6552 +        case "INS":
  1.6553 +            node = new HTMLModElement(this);break;
  1.6554 +        case "DIV":
  1.6555 +            node = new HTMLDivElement(this);break;
  1.6556 +        case "DL":
  1.6557 +            node = new HTMLDListElement(this);break;
  1.6558 +        case "DT":
  1.6559 +            node = new HTMLElement(this); break;
  1.6560 +        case "FIELDSET":
  1.6561 +            node = new HTMLFieldSetElement(this);break;
  1.6562 +        case "FORM":
  1.6563 +            node = new HTMLFormElement(this);break;
  1.6564 +        case "FRAME":
  1.6565 +            node = new HTMLFrameElement(this);break;
  1.6566 +        case "H1":
  1.6567 +            node = new HTMLHeadingElement(this);break;
  1.6568 +        case "H2":
  1.6569 +            node = new HTMLHeadingElement(this);break;
  1.6570 +        case "H3":
  1.6571 +            node = new HTMLHeadingElement(this);break;
  1.6572 +        case "H4":
  1.6573 +            node = new HTMLHeadingElement(this);break;
  1.6574 +        case "H5":
  1.6575 +            node = new HTMLHeadingElement(this);break;
  1.6576 +        case "H6":
  1.6577 +            node = new HTMLHeadingElement(this);break;
  1.6578 +        case "HEAD":
  1.6579 +            node = new HTMLHeadElement(this);break;
  1.6580 +        case "HR":
  1.6581 +            node = new HTMLHRElement(this);break;
  1.6582 +        case "HTML":
  1.6583 +            node = new HTMLHtmlElement(this);break;
  1.6584 +        case "IFRAME":
  1.6585 +            node = new HTMLIFrameElement(this);break;
  1.6586 +        case "IMG":
  1.6587 +            node = new HTMLImageElement(this);break;
  1.6588 +        case "INPUT":
  1.6589 +            node = new HTMLInputElement(this);break;
  1.6590 +        case "LABEL":
  1.6591 +            node = new HTMLLabelElement(this);break;
  1.6592 +        case "LEGEND":
  1.6593 +            node = new HTMLLegendElement(this);break;
  1.6594 +        case "LI":
  1.6595 +            node = new HTMLLIElement(this);break;
  1.6596 +        case "LINK":
  1.6597 +            node = new HTMLLinkElement(this);break;
  1.6598 +        case "MAP":
  1.6599 +            node = new HTMLMapElement(this);break;
  1.6600 +        case "META":
  1.6601 +            node = new HTMLMetaElement(this);break;
  1.6602 +        case "NOSCRIPT":
  1.6603 +            node = new HTMLElement(this);break;
  1.6604 +        case "OBJECT":
  1.6605 +            node = new HTMLObjectElement(this);break;
  1.6606 +        case "OPTGROUP":
  1.6607 +            node = new HTMLOptGroupElement(this);break;
  1.6608 +        case "OL":
  1.6609 +            node = new HTMLOListElement(this); break;
  1.6610 +        case "OPTION":
  1.6611 +            node = new HTMLOptionElement(this);break;
  1.6612 +        case "P":
  1.6613 +            node = new HTMLParagraphElement(this);break;
  1.6614 +        case "PARAM":
  1.6615 +            node = new HTMLParamElement(this);break;
  1.6616 +        case "PRE":
  1.6617 +            node = new HTMLPreElement(this);break;
  1.6618 +        case "SCRIPT":
  1.6619 +            node = new HTMLScriptElement(this);break;
  1.6620 +        case "SELECT":
  1.6621 +            node = new HTMLSelectElement(this);break;
  1.6622 +        case "SMALL":
  1.6623 +            node = new HTMLElement(this);break;
  1.6624 +        case "SPAN":
  1.6625 +            node = new HTMLSpanElement(this);break;
  1.6626 +        case "STRONG":
  1.6627 +            node = new HTMLElement(this);break;
  1.6628 +        case "STYLE":
  1.6629 +            node = new HTMLStyleElement(this);break;
  1.6630 +        case "TABLE":
  1.6631 +            node = new HTMLTableElement(this);break;
  1.6632 +        case "TBODY":
  1.6633 +            node = new HTMLTableSectionElement(this);break;
  1.6634 +        case "TFOOT":
  1.6635 +            node = new HTMLTableSectionElement(this);break;
  1.6636 +        case "THEAD":
  1.6637 +            node = new HTMLTableSectionElement(this);break;
  1.6638 +        case "TD":
  1.6639 +            node = new HTMLTableDataCellElement(this);break;
  1.6640 +        case "TH":
  1.6641 +            node = new HTMLTableHeaderCellElement(this);break;
  1.6642 +        case "TEXTAREA":
  1.6643 +            node = new HTMLTextAreaElement(this);break;
  1.6644 +        case "TITLE":
  1.6645 +            node = new HTMLTitleElement(this);break;
  1.6646 +        case "TR":
  1.6647 +            node = new HTMLTableRowElement(this);break;
  1.6648 +        case "UL":
  1.6649 +            node = new HTMLUListElement(this);break;
  1.6650 +        default:
  1.6651 +            node = new HTMLUnknownElement(this);
  1.6652 +        }
  1.6653 +        // assign values to properties (and aliases)
  1.6654 +        node.nodeName  = tagName;
  1.6655 +        return node;
  1.6656 +    },
  1.6657 +    createElementNS : function (uri, local) {
  1.6658 +        //print('createElementNS :'+uri+" "+local);
  1.6659 +        if(!uri){
  1.6660 +            return this.createElement(local);
  1.6661 +        }else if ("http://www.w3.org/1999/xhtml" == uri) {
  1.6662 +            return this.createElement(local);
  1.6663 +        } else if ("http://www.w3.org/1998/Math/MathML" == uri) {
  1.6664 +            return this.createElement(local);
  1.6665 +        } else {
  1.6666 +            return Document.prototype.createElementNS.apply(this,[uri, local]);
  1.6667 +        }
  1.6668 +    },
  1.6669 +    get anchors(){
  1.6670 +        return new HTMLCollection(this.getElementsByTagName('a'));
  1.6671 +    },
  1.6672 +    get applets(){
  1.6673 +        return new HTMLCollection(this.getElementsByTagName('applet'));
  1.6674 +    },
  1.6675 +    get documentElement(){
  1.6676 +        var html = Document.prototype.__lookupGetter__('documentElement').apply(this,[]);
  1.6677 +        if( html === null){
  1.6678 +            html = this.createElement('html');
  1.6679 +            this.appendChild(html);
  1.6680 +            html.appendChild(this.createElement('head'));
  1.6681 +            html.appendChild(this.createElement('body'));
  1.6682 +        }
  1.6683 +        return html;
  1.6684 +    },
  1.6685 +    //document.head is non-standard
  1.6686 +    get head(){
  1.6687 +        //console.log('get head');
  1.6688 +        if (!this.documentElement) {
  1.6689 +            this.appendChild(this.createElement('html'));
  1.6690 +        }
  1.6691 +        var element = this.documentElement,
  1.6692 +        length = element.childNodes.length,
  1.6693 +        i;
  1.6694 +        //check for the presence of the head element in this html doc
  1.6695 +        for(i=0;i<length;i++){
  1.6696 +            if(element.childNodes[i].nodeType === Node.ELEMENT_NODE){
  1.6697 +                if(element.childNodes[i].tagName.toLowerCase() === 'head'){
  1.6698 +                    return element.childNodes[i];
  1.6699 +                }
  1.6700 +            }
  1.6701 +        }
  1.6702 +        //no head?  ugh bad news html.. I guess we'll force the issue?
  1.6703 +        var head = element.appendChild(this.createElement('head'));
  1.6704 +        return head;
  1.6705 +    },
  1.6706 +    get title(){
  1.6707 +        //console.log('get title');
  1.6708 +        if (!this.documentElement) {
  1.6709 +            this.appendChild(this.createElement('html'));
  1.6710 +        }
  1.6711 +        var title,
  1.6712 +        head = this.head,
  1.6713 +        length = head.childNodes.length,
  1.6714 +        i;
  1.6715 +        //check for the presence of the title element in this head element
  1.6716 +        for(i=0;i<length;i++){
  1.6717 +            if(head.childNodes[i].nodeType === Node.ELEMENT_NODE){
  1.6718 +                if(head.childNodes[i].tagName.toLowerCase() === 'title'){
  1.6719 +                    return head.childNodes[i].textContent;
  1.6720 +                }
  1.6721 +            }
  1.6722 +        }
  1.6723 +        //no title?  ugh bad news html.. I guess we'll force the issue?
  1.6724 +        title = head.appendChild(this.createElement('title'));
  1.6725 +        return title.appendChild(this.createTextNode('Untitled Document')).nodeValue;
  1.6726 +    },
  1.6727 +    set title(titleStr){
  1.6728 +        //console.log('set title %s', titleStr);
  1.6729 +        if (!this.documentElement) {
  1.6730 +            this.appendChild(this.createElement('html'));
  1.6731 +        }
  1.6732 +        var title = this.title;
  1.6733 +        title.textContent = titleStr;
  1.6734 +    },
  1.6735 +
  1.6736 +    get body(){
  1.6737 +        //console.log('get body');
  1.6738 +        if (!this.documentElement) {
  1.6739 +            this.appendChild(this.createElement('html'));
  1.6740 +        }
  1.6741 +        var body,
  1.6742 +        element = this.documentElement,
  1.6743 +        length = element.childNodes.length,
  1.6744 +        i;
  1.6745 +        //check for the presence of the head element in this html doc
  1.6746 +        for(i=0;i<length;i++){
  1.6747 +            if(element.childNodes[i].nodeType === Node.ELEMENT_NODE){
  1.6748 +                if(element.childNodes[i].tagName.toLowerCase() === 'body'){
  1.6749 +                    return element.childNodes[i];
  1.6750 +                }
  1.6751 +            }
  1.6752 +        }
  1.6753 +        //no head?  ugh bad news html.. I guess we'll force the issue?
  1.6754 +        return element.appendChild(this.createElement('body'));
  1.6755 +    },
  1.6756 +    set body(x){console.log('set body');/**in firefox this is a benevolent do nothing*/},
  1.6757 +    get cookie(){
  1.6758 +        return Envjs.getCookies(this.location+'');
  1.6759 +    },
  1.6760 +    set cookie(cookie){
  1.6761 +        return Envjs.setCookie(this.location+'', cookie);
  1.6762 +    },
  1.6763 +
  1.6764 +    /**
  1.6765 +     * document.location
  1.6766 +     *
  1.6767 +     * should be identical to window.location
  1.6768 +     *
  1.6769 +     * HTML5:
  1.6770 +     * http://dev.w3.org/html5/spec/Overview.html#the-location-interface
  1.6771 +     *
  1.6772 +     * Mozilla MDC:
  1.6773 +     * https://developer.mozilla.org/en/DOM/document.location
  1.6774 +     *
  1.6775 +     */
  1.6776 +    get location() {
  1.6777 +        if (this.ownerWindow) {
  1.6778 +            return this.ownerWindow.location;
  1.6779 +        } else {
  1.6780 +            return this.baseURI;
  1.6781 +        }
  1.6782 +    },
  1.6783 +    set location(url) {
  1.6784 +        this.baseURI = url;
  1.6785 +        if (this.ownerWindow) {
  1.6786 +            this.ownerWindow.location = url;
  1.6787 +        }
  1.6788 +    },
  1.6789 +
  1.6790 +    /**
  1.6791 +     * document.URL (read-only)
  1.6792 +     *
  1.6793 +     * HTML DOM Level 2:
  1.6794 +     * http://www.w3.org/TR/DOM-Level-2-HTML/html.html#ID-46183437
  1.6795 +     *
  1.6796 +     * HTML5:
  1.6797 +     * http://dev.w3.org/html5/spec/Overview.html#dom-document-url
  1.6798 +     *
  1.6799 +     * Mozilla MDC:
  1.6800 +     * https://developer.mozilla.org/en/DOM/document.URL
  1.6801 +     */
  1.6802 +    get URL() {
  1.6803 +        return this.location;
  1.6804 +    },
  1.6805 +    set URL(url) {
  1.6806 +        this.location = url;
  1.6807 +    },
  1.6808 +
  1.6809 +    /**
  1.6810 +     * document.domain
  1.6811 +     *
  1.6812 +     * HTML5 Spec:
  1.6813 +     * http://dev.w3.org/html5/spec/Overview.html#dom-document-domain
  1.6814 +     *
  1.6815 +     * Mozilla MDC:
  1.6816 +     * https://developer.mozilla.org/en/DOM/document.domain
  1.6817 +     *
  1.6818 +     */
  1.6819 +    get domain(){
  1.6820 +        var HOSTNAME = new RegExp('\/\/([^\:\/]+)'),
  1.6821 +        matches = HOSTNAME.exec(this.baseURI);
  1.6822 +        return matches&&matches.length>1?matches[1]:"";
  1.6823 +    },
  1.6824 +    set domain(value){
  1.6825 +        var i,
  1.6826 +        domainParts = this.domain.split('.').reverse(),
  1.6827 +        newDomainParts = value.split('.').reverse();
  1.6828 +        if(newDomainParts.length > 1){
  1.6829 +            for(i=0;i<newDomainParts.length;i++){
  1.6830 +                if(!(newDomainParts[i] === domainParts[i])){
  1.6831 +                    return;
  1.6832 +                }
  1.6833 +            }
  1.6834 +            this.baseURI = this.baseURI.replace(domainParts.join('.'), value);
  1.6835 +        }
  1.6836 +    },
  1.6837 +
  1.6838 +    get forms(){
  1.6839 +        return new HTMLCollection(this.getElementsByTagName('form'));
  1.6840 +    },
  1.6841 +    get images(){
  1.6842 +        return new HTMLCollection(this.getElementsByTagName('img'));
  1.6843 +    },
  1.6844 +    get lastModified(){
  1.6845 +        /* TODO */
  1.6846 +        return this._lastModified;
  1.6847 +    },
  1.6848 +    get links(){
  1.6849 +        return new HTMLCollection(this.getElementsByTagName('a'));
  1.6850 +    },
  1.6851 +    getElementsByName : function(name){
  1.6852 +        //returns a real Array + the NodeList
  1.6853 +        var retNodes = __extend__([],new NodeList(this, this.documentElement)),
  1.6854 +        node;
  1.6855 +        // loop through all Elements
  1.6856 +        var all = this.getElementsByTagName('*');
  1.6857 +        for (var i=0; i < all.length; i++) {
  1.6858 +            node = all[i];
  1.6859 +            if (node.nodeType === Node.ELEMENT_NODE &&
  1.6860 +                node.getAttribute('name') == name) {
  1.6861 +                retNodes.push(node);
  1.6862 +            }
  1.6863 +        }
  1.6864 +        return retNodes;
  1.6865 +    },
  1.6866 +    toString: function(){
  1.6867 +        return "[object HTMLDocument]";
  1.6868 +    },
  1.6869 +    get innerHTML(){
  1.6870 +        return this.documentElement.outerHTML;
  1.6871 +    }
  1.6872 +});
  1.6873 +
  1.6874 +
  1.6875 +
  1.6876 +Aspect.around({
  1.6877 +    target: Node,
  1.6878 +    method:"appendChild"
  1.6879 +}, function(invocation) {
  1.6880 +    var event,
  1.6881 +    okay,
  1.6882 +    node = invocation.proceed(),
  1.6883 +    doc = node.ownerDocument;
  1.6884 +
  1.6885 +    //console.log('element appended: %s %s %s', node+'', node.nodeName, node.namespaceURI);
  1.6886 +    if((node.nodeType !== Node.ELEMENT_NODE)){
  1.6887 +        //for now we are only handling element insertions.  probably
  1.6888 +        //we will need to handle text node changes to script tags and
  1.6889 +        //changes to src attributes
  1.6890 +        return node;
  1.6891 +    }
  1.6892 +    //console.log('appended html element %s %s %s',
  1.6893 +    //             node.namespaceURI, node.nodeName, node);
  1.6894 +    switch(doc.parsing){
  1.6895 +        case true:
  1.6896 +            //handled by parser if included
  1.6897 +            //console.log('html document in parse mode');
  1.6898 +            break;
  1.6899 +        case false:
  1.6900 +            switch(node.namespaceURI){
  1.6901 +                case null:
  1.6902 +                    //fall through
  1.6903 +                case "":
  1.6904 +                    //fall through
  1.6905 +                case "http://www.w3.org/1999/xhtml":
  1.6906 +                    switch(node.tagName.toLowerCase()){
  1.6907 +                    case 'style':
  1.6908 +                        document.styleSheets.push(CSSStyleSheet(node));
  1.6909 +                        break;
  1.6910 +                    case 'script':
  1.6911 +                        if((this.nodeName.toLowerCase() === 'head')){
  1.6912 +                            try{
  1.6913 +                                okay = Envjs.loadLocalScript(node, null);
  1.6914 +                                //console.log('loaded script? %s %s', node.uuid, okay);
  1.6915 +                                // only fire event if we actually had something to load
  1.6916 +                                if (node.src && node.src.length > 0){
  1.6917 +                                    event = doc.createEvent('HTMLEvents');
  1.6918 +                                    event.initEvent( okay ? "load" : "error", false, false );
  1.6919 +                                    node.dispatchEvent( event, false );
  1.6920 +                                }
  1.6921 +                            }catch(e){
  1.6922 +                                console.log('error loading html element %s %e', node, e.toString());
  1.6923 +                            }
  1.6924 +                        }
  1.6925 +                        break;
  1.6926 +                    case 'frame':
  1.6927 +                    case 'iframe':
  1.6928 +                        node.contentWindow = { };
  1.6929 +                        node.contentDocument = new HTMLDocument(new DOMImplementation(), node.contentWindow);
  1.6930 +                        node.contentWindow.document = node.contentDocument;
  1.6931 +                        try{
  1.6932 +                            Window;
  1.6933 +                        }catch(e){
  1.6934 +                            node.contentDocument.addEventListener('DOMContentLoaded', function(){
  1.6935 +                                event = node.contentDocument.createEvent('HTMLEvents');
  1.6936 +                                event.initEvent("load", false, false);
  1.6937 +                                node.dispatchEvent( event, false );
  1.6938 +                            });
  1.6939 +                        }
  1.6940 +                        try{
  1.6941 +                            if (node.src && node.src.length > 0){
  1.6942 +                                //console.log("getting content document for (i)frame from %s", node.src);
  1.6943 +                                Envjs.loadFrame(node, Envjs.uri(node.src));
  1.6944 +                                event = node.contentDocument.createEvent('HTMLEvents');
  1.6945 +                                event.initEvent("load", false, false);
  1.6946 +                                node.dispatchEvent( event, false );
  1.6947 +                            }else{
  1.6948 +                                //I dont like this being here:
  1.6949 +                                //TODO: better  mix-in strategy so the try/catch isnt required
  1.6950 +                                try{
  1.6951 +                                    if(Window){
  1.6952 +                                        Envjs.loadFrame(node);
  1.6953 +                                        //console.log('src/html/document.js: triggering frame load');
  1.6954 +                                        event = node.contentDocument.createEvent('HTMLEvents');
  1.6955 +                                        event.initEvent("load", false, false);
  1.6956 +                                        node.dispatchEvent( event, false );
  1.6957 +                                    }
  1.6958 +                                }catch(e){}
  1.6959 +                            }
  1.6960 +                        }catch(e){
  1.6961 +                            console.log('error loading html element %s %e', node, e.toString());
  1.6962 +                        }
  1.6963 +                        break;
  1.6964 +        
  1.6965 +                    case 'link':
  1.6966 +                        if (node.href && node.href.length > 0) {
  1.6967 +                            __loadLink__(node, node.href);
  1.6968 +                        }
  1.6969 +                        break;
  1.6970 +                        /*
  1.6971 +                          case 'img':
  1.6972 +                          if (node.src && node.src.length > 0){
  1.6973 +                          // don't actually load anything, so we're "done" immediately:
  1.6974 +                          event = doc.createEvent('HTMLEvents');
  1.6975 +                          event.initEvent("load", false, false);
  1.6976 +                          node.dispatchEvent( event, false );
  1.6977 +                          }
  1.6978 +                          break;
  1.6979 +                        */
  1.6980 +                    case 'option':
  1.6981 +                        node._updateoptions();
  1.6982 +                        break;
  1.6983 +                    default:
  1.6984 +                        if(node.getAttribute('onload')){
  1.6985 +                            console.log('calling attribute onload %s | %s', node.onload, node.tagName);
  1.6986 +                            node.onload();
  1.6987 +                        }
  1.6988 +                        break;
  1.6989 +                    }//switch on name
  1.6990 +                default:
  1.6991 +                    break;
  1.6992 +            }//switch on ns
  1.6993 +            break;
  1.6994 +        default:
  1.6995 +            // console.log('element appended: %s %s', node+'', node.namespaceURI);
  1.6996 +    }//switch on doc.parsing
  1.6997 +    return node;
  1.6998 +
  1.6999 +});
  1.7000 +
  1.7001 +Aspect.around({
  1.7002 +    target: Node,
  1.7003 +    method:"removeChild"
  1.7004 +}, function(invocation) {
  1.7005 +    var event,
  1.7006 +        okay,
  1.7007 +        node = invocation.proceed(),
  1.7008 +        doc = node.ownerDocument;
  1.7009 +    if((node.nodeType !== Node.ELEMENT_NODE)){
  1.7010 +        //for now we are only handling element insertions.  probably we will need
  1.7011 +        //to handle text node changes to script tags and changes to src
  1.7012 +        //attributes
  1.7013 +        if(node.nodeType !== Node.DOCUMENT_NODE && node.uuid){
  1.7014 +            //console.log('removing event listeners, %s', node, node.uuid);
  1.7015 +            node.removeEventListener('*', null, null);
  1.7016 +        }
  1.7017 +        return node;
  1.7018 +    }
  1.7019 +    //console.log('appended html element %s %s %s', node.namespaceURI, node.nodeName, node);
  1.7020 +
  1.7021 +    switch(doc.parsing){
  1.7022 +        case true:
  1.7023 +            //handled by parser if included
  1.7024 +            break;
  1.7025 +        case false:
  1.7026 +            switch(node.namespaceURI){
  1.7027 +            case null:
  1.7028 +                //fall through
  1.7029 +            case "":
  1.7030 +                //fall through
  1.7031 +            case "http://www.w3.org/1999/xhtml":
  1.7032 +                //this is interesting dillema since our event engine is
  1.7033 +                //storing the registered events in an array accessed
  1.7034 +                //by the uuid property of the node.  unforunately this
  1.7035 +                //means listeners hang out way after(forever ;)) the node
  1.7036 +                //has been removed and gone out of scope.
  1.7037 +                //console.log('removing event listeners, %s', node, node.uuid);
  1.7038 +                node.removeEventListener('*', null, null);
  1.7039 +                switch(node.tagName.toLowerCase()){
  1.7040 +                case 'frame':
  1.7041 +                case 'iframe':
  1.7042 +                    try{
  1.7043 +                        //console.log('removing iframe document');
  1.7044 +                        try{
  1.7045 +                            Envjs.unloadFrame(node);
  1.7046 +                        }catch(e){
  1.7047 +                            console.log('error freeing resources from frame %s', e);
  1.7048 +                        }
  1.7049 +                        node.contentWindow = null;
  1.7050 +                        node.contentDocument = null;
  1.7051 +                    }catch(e){
  1.7052 +                        console.log('error unloading html element %s %e', node, e.toString());
  1.7053 +                    }
  1.7054 +                    break;
  1.7055 +                default:
  1.7056 +                    break;
  1.7057 +                }//switch on name
  1.7058 +            default:
  1.7059 +                break;
  1.7060 +            }//switch on ns
  1.7061 +            break;
  1.7062 +        default:
  1.7063 +            console.log('element appended: %s %s', node+'', node.namespaceURI);
  1.7064 +    }//switch on doc.parsing
  1.7065 +    return node;
  1.7066 +
  1.7067 +});
  1.7068 +
  1.7069 +
  1.7070 +
  1.7071 +/**
  1.7072 + * Named Element Support
  1.7073 + *
  1.7074 + *
  1.7075 + */
  1.7076 +
  1.7077 +/*
  1.7078 + *
  1.7079 + * @returns 'name' if the node has a appropriate name
  1.7080 + *          null if node does not have a name
  1.7081 + */
  1.7082 +
  1.7083 +var __isNamedElement__ = function(node) {
  1.7084 +    if (node.nodeType !== Node.ELEMENT_NODE) {
  1.7085 +        return null;
  1.7086 +    }
  1.7087 +    var tagName = node.tagName.toLowerCase();
  1.7088 +    var nodename = null;
  1.7089 +
  1.7090 +    switch (tagName) {
  1.7091 +        case 'embed':
  1.7092 +        case 'form':
  1.7093 +        case 'iframe':
  1.7094 +            nodename = node.getAttribute('name');
  1.7095 +            break;
  1.7096 +        case 'applet':
  1.7097 +            nodename = node.id;
  1.7098 +            break;
  1.7099 +        case 'object':
  1.7100 +            // TODO: object needs to be 'fallback free'
  1.7101 +            nodename = node.id;
  1.7102 +            break;
  1.7103 +        case 'img':
  1.7104 +            nodename = node.id;
  1.7105 +            if (!nodename || ! node.getAttribute('name')) {
  1.7106 +                nodename = null;
  1.7107 +            }
  1.7108 +            break;
  1.7109 +    }
  1.7110 +    return (nodename) ? nodename : null;
  1.7111 +};
  1.7112 +
  1.7113 +
  1.7114 +var __addNamedMap__ = function(target, node) {
  1.7115 +    var nodename = __isNamedElement__(node);
  1.7116 +    if (nodename) {
  1.7117 +        target.__defineGetter__(nodename, function() {
  1.7118 +            return node;
  1.7119 +        });
  1.7120 +    }
  1.7121 +};
  1.7122 +
  1.7123 +var __removeNamedMap__ = function(target, node) {
  1.7124 +    if (!node) {
  1.7125 +        return;
  1.7126 +    }
  1.7127 +    var nodename = __isNamedElement__(node);
  1.7128 +    if (nodename) {
  1.7129 +        delete target[nodename];
  1.7130 +    }
  1.7131 +};
  1.7132 +    
  1.7133 +/**
  1.7134 + * @name HTMLEvents
  1.7135 + * @w3c:domlevel 2
  1.7136 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
  1.7137 + */
  1.7138 +
  1.7139 +var __eval__ = function(script, node){
  1.7140 +    if (!script == ""){
  1.7141 +        // don't assemble environment if no script...
  1.7142 +        try{
  1.7143 +            eval(script);
  1.7144 +        }catch(e){
  1.7145 +            console.log('error evaluating %s', e);
  1.7146 +        }
  1.7147 +    }
  1.7148 +};
  1.7149 +
  1.7150 +var HTMLEvents= function(){};
  1.7151 +HTMLEvents.prototype = {
  1.7152 +    onload: function(event){
  1.7153 +        __eval__(this.getAttribute('onload')||'', this);
  1.7154 +    },
  1.7155 +    onunload: function(event){
  1.7156 +        __eval__(this.getAttribute('onunload')||'', this);
  1.7157 +    },
  1.7158 +    onabort: function(event){
  1.7159 +        __eval__(this.getAttribute('onabort')||'', this);
  1.7160 +    },
  1.7161 +    onerror: function(event){
  1.7162 +        __eval__(this.getAttribute('onerror')||'', this);
  1.7163 +    },
  1.7164 +    onselect: function(event){
  1.7165 +        __eval__(this.getAttribute('onselect')||'', this);
  1.7166 +    },
  1.7167 +    onchange: function(event){
  1.7168 +        __eval__(this.getAttribute('onchange')||'', this);
  1.7169 +    },
  1.7170 +    onsubmit: function(event){
  1.7171 +        if (__eval__(this.getAttribute('onsubmit')||'', this)) {
  1.7172 +            this.submit();
  1.7173 +        }
  1.7174 +    },
  1.7175 +    onreset: function(event){
  1.7176 +        __eval__(this.getAttribute('onreset')||'', this);
  1.7177 +    },
  1.7178 +    onfocus: function(event){
  1.7179 +        __eval__(this.getAttribute('onfocus')||'', this);
  1.7180 +    },
  1.7181 +    onblur: function(event){
  1.7182 +        __eval__(this.getAttribute('onblur')||'', this);
  1.7183 +    },
  1.7184 +    onresize: function(event){
  1.7185 +        __eval__(this.getAttribute('onresize')||'', this);
  1.7186 +    },
  1.7187 +    onscroll: function(event){
  1.7188 +        __eval__(this.getAttribute('onscroll')||'', this);
  1.7189 +    }
  1.7190 +};
  1.7191 +
  1.7192 +//HTMLDocument, HTMLFramesetElement, HTMLObjectElement
  1.7193 +var  __load__ = function(element){
  1.7194 +    var event = new Event('HTMLEvents');
  1.7195 +    event.initEvent("load", false, false);
  1.7196 +    element.dispatchEvent(event);
  1.7197 +    return event;
  1.7198 +};
  1.7199 +
  1.7200 +//HTMLFramesetElement, HTMLBodyElement
  1.7201 +var  __unload__ = function(element){
  1.7202 +    var event = new Event('HTMLEvents');
  1.7203 +    event.initEvent("unload", false, false);
  1.7204 +    element.dispatchEvent(event);
  1.7205 +    return event;
  1.7206 +};
  1.7207 +
  1.7208 +//HTMLObjectElement
  1.7209 +var  __abort__ = function(element){
  1.7210 +    var event = new Event('HTMLEvents');
  1.7211 +    event.initEvent("abort", true, false);
  1.7212 +    element.dispatchEvent(event);
  1.7213 +    return event;
  1.7214 +};
  1.7215 +
  1.7216 +//HTMLFramesetElement, HTMLObjectElement, HTMLBodyElement
  1.7217 +var  __error__ = function(element){
  1.7218 +    var event = new Event('HTMLEvents');
  1.7219 +    event.initEvent("error", true, false);
  1.7220 +    element.dispatchEvent(event);
  1.7221 +    return event;
  1.7222 +};
  1.7223 +
  1.7224 +//HTMLInputElement, HTMLTextAreaElement
  1.7225 +var  __select__ = function(element){
  1.7226 +    var event = new Event('HTMLEvents');
  1.7227 +    event.initEvent("select", true, false);
  1.7228 +    element.dispatchEvent(event);
  1.7229 +    return event;
  1.7230 +};
  1.7231 +
  1.7232 +//HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement
  1.7233 +var  __change__ = function(element){
  1.7234 +    var event = new Event('HTMLEvents');
  1.7235 +    event.initEvent("change", true, false);
  1.7236 +    element.dispatchEvent(event);
  1.7237 +    return event;
  1.7238 +};
  1.7239 +
  1.7240 +//HtmlFormElement
  1.7241 +var __submit__ = function(element){
  1.7242 +    var event = new Event('HTMLEvents');
  1.7243 +    event.initEvent("submit", true, true);
  1.7244 +    element.dispatchEvent(event);
  1.7245 +    return event;
  1.7246 +};
  1.7247 +
  1.7248 +//HtmlFormElement
  1.7249 +var  __reset__ = function(element){
  1.7250 +    var event = new Event('HTMLEvents');
  1.7251 +    event.initEvent("reset", false, false);
  1.7252 +    element.dispatchEvent(event);
  1.7253 +    return event;
  1.7254 +};
  1.7255 +
  1.7256 +//LABEL, INPUT, SELECT, TEXTAREA, and BUTTON
  1.7257 +var __focus__ = function(element){
  1.7258 +    var event = new Event('HTMLEvents');
  1.7259 +    event.initEvent("focus", false, false);
  1.7260 +    element.dispatchEvent(event);
  1.7261 +    return event;
  1.7262 +};
  1.7263 +
  1.7264 +//LABEL, INPUT, SELECT, TEXTAREA, and BUTTON
  1.7265 +var __blur__ = function(element){
  1.7266 +    var event = new Event('HTMLEvents');
  1.7267 +    event.initEvent("blur", false, false);
  1.7268 +    element.dispatchEvent(event);
  1.7269 +    return event;
  1.7270 +};
  1.7271 +
  1.7272 +//Window
  1.7273 +var __resize__ = function(element){
  1.7274 +    var event = new Event('HTMLEvents');
  1.7275 +    event.initEvent("resize", true, false);
  1.7276 +    element.dispatchEvent(event);
  1.7277 +    return event;
  1.7278 +};
  1.7279 +
  1.7280 +//Window
  1.7281 +var __scroll__ = function(element){
  1.7282 +    var event = new Event('HTMLEvents');
  1.7283 +    event.initEvent("scroll", true, false);
  1.7284 +    element.dispatchEvent(event);
  1.7285 +    return event;
  1.7286 +};
  1.7287 +
  1.7288 +/**
  1.7289 + * @name KeyboardEvents
  1.7290 + * @w3c:domlevel 2 
  1.7291 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
  1.7292 + */
  1.7293 +var KeyboardEvents= function(){};
  1.7294 +KeyboardEvents.prototype = {
  1.7295 +    onkeydown: function(event){
  1.7296 +        __eval__(this.getAttribute('onkeydown')||'', this);
  1.7297 +    },
  1.7298 +    onkeypress: function(event){
  1.7299 +        __eval__(this.getAttribute('onkeypress')||'', this);
  1.7300 +    },
  1.7301 +    onkeyup: function(event){
  1.7302 +        __eval__(this.getAttribute('onkeyup')||'', this);
  1.7303 +    }
  1.7304 +};
  1.7305 +
  1.7306 +
  1.7307 +var __registerKeyboardEventAttrs__ = function(elm){
  1.7308 +    if(elm.hasAttribute('onkeydown')){ 
  1.7309 +        elm.addEventListener('keydown', elm.onkeydown, false); 
  1.7310 +    }
  1.7311 +    if(elm.hasAttribute('onkeypress')){ 
  1.7312 +        elm.addEventListener('keypress', elm.onkeypress, false); 
  1.7313 +    }
  1.7314 +    if(elm.hasAttribute('onkeyup')){ 
  1.7315 +        elm.addEventListener('keyup', elm.onkeyup, false); 
  1.7316 +    }
  1.7317 +    return elm;
  1.7318 +};
  1.7319 +
  1.7320 +//HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement
  1.7321 +var  __keydown__ = function(element){
  1.7322 +    var event = new Event('KeyboardEvents');
  1.7323 +    event.initEvent("keydown", false, false);
  1.7324 +    element.dispatchEvent(event);
  1.7325 +};
  1.7326 +
  1.7327 +//HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement
  1.7328 +var  __keypress__ = function(element){
  1.7329 +    var event = new Event('KeyboardEvents');
  1.7330 +    event.initEvent("keypress", false, false);
  1.7331 +    element.dispatchEvent(event);
  1.7332 +};
  1.7333 +
  1.7334 +//HTMLInputElement, HTMLSelectElement, HTMLTextAreaElement
  1.7335 +var  __keyup__ = function(element){
  1.7336 +    var event = new Event('KeyboardEvents');
  1.7337 +    event.initEvent("keyup", false, false);
  1.7338 +    element.dispatchEvent(event);
  1.7339 +};
  1.7340 +
  1.7341 +/**
  1.7342 + * @name MaouseEvents
  1.7343 + * @w3c:domlevel 2 
  1.7344 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
  1.7345 + */
  1.7346 +var MouseEvents= function(){};
  1.7347 +MouseEvents.prototype = {
  1.7348 +    onclick: function(event){
  1.7349 +        __eval__(this.getAttribute('onclick')||'', this);
  1.7350 +    },
  1.7351 +    ondblclick: function(event){
  1.7352 +        __eval__(this.getAttribute('ondblclick')||'', this);
  1.7353 +    },
  1.7354 +    onmousedown: function(event){
  1.7355 +        __eval__(this.getAttribute('onmousedown')||'', this);
  1.7356 +    },
  1.7357 +    onmousemove: function(event){
  1.7358 +        __eval__(this.getAttribute('onmousemove')||'', this);
  1.7359 +    },
  1.7360 +    onmouseout: function(event){
  1.7361 +        __eval__(this.getAttribute('onmouseout')||'', this);
  1.7362 +    },
  1.7363 +    onmouseover: function(event){
  1.7364 +        __eval__(this.getAttribute('onmouseover')||'', this);
  1.7365 +    },
  1.7366 +    onmouseup: function(event){
  1.7367 +        __eval__(this.getAttribute('onmouseup')||'', this);
  1.7368 +    }  
  1.7369 +};
  1.7370 +
  1.7371 +var __registerMouseEventAttrs__ = function(elm){
  1.7372 +    if(elm.hasAttribute('onclick')){ 
  1.7373 +        elm.addEventListener('click', elm.onclick, false); 
  1.7374 +    }
  1.7375 +    if(elm.hasAttribute('ondblclick')){ 
  1.7376 +        elm.addEventListener('dblclick', elm.ondblclick, false); 
  1.7377 +    }
  1.7378 +    if(elm.hasAttribute('onmousedown')){ 
  1.7379 +        elm.addEventListener('mousedown', elm.onmousedown, false); 
  1.7380 +    }
  1.7381 +    if(elm.hasAttribute('onmousemove')){ 
  1.7382 +        elm.addEventListener('mousemove', elm.onmousemove, false); 
  1.7383 +    }
  1.7384 +    if(elm.hasAttribute('onmouseout')){ 
  1.7385 +        elm.addEventListener('mouseout', elm.onmouseout, false); 
  1.7386 +    }
  1.7387 +    if(elm.hasAttribute('onmouseover')){ 
  1.7388 +        elm.addEventListener('mouseover', elm.onmouseover, false); 
  1.7389 +    }
  1.7390 +    if(elm.hasAttribute('onmouseup')){ 
  1.7391 +        elm.addEventListener('mouseup', elm.onmouseup, false); 
  1.7392 +    }
  1.7393 +    return elm;
  1.7394 +};
  1.7395 +
  1.7396 +
  1.7397 +var  __click__ = function(element){
  1.7398 +    var event = new Event('MouseEvents');
  1.7399 +    event.initEvent("click", true, true, null, 0,
  1.7400 +                0, 0, 0, 0, false, false, false, 
  1.7401 +                false, null, null);
  1.7402 +    element.dispatchEvent(event);
  1.7403 +};
  1.7404 +var  __mousedown__ = function(element){
  1.7405 +    var event = new Event('MouseEvents');
  1.7406 +    event.initEvent("mousedown", true, true, null, 0,
  1.7407 +                0, 0, 0, 0, false, false, false, 
  1.7408 +                false, null, null);
  1.7409 +    element.dispatchEvent(event);
  1.7410 +};
  1.7411 +var  __mouseup__ = function(element){
  1.7412 +    var event = new Event('MouseEvents');
  1.7413 +    event.initEvent("mouseup", true, true, null, 0,
  1.7414 +                0, 0, 0, 0, false, false, false, 
  1.7415 +                false, null, null);
  1.7416 +    element.dispatchEvent(event);
  1.7417 +};
  1.7418 +var  __mouseover__ = function(element){
  1.7419 +    var event = new Event('MouseEvents');
  1.7420 +    event.initEvent("mouseover", true, true, null, 0,
  1.7421 +                0, 0, 0, 0, false, false, false, 
  1.7422 +                false, null, null);
  1.7423 +    element.dispatchEvent(event);
  1.7424 +};
  1.7425 +var  __mousemove__ = function(element){
  1.7426 +    var event = new Event('MouseEvents');
  1.7427 +    event.initEvent("mousemove", true, true, null, 0,
  1.7428 +                0, 0, 0, 0, false, false, false, 
  1.7429 +                false, null, null);
  1.7430 +    element.dispatchEvent(event);
  1.7431 +};
  1.7432 +var  __mouseout__ = function(element){
  1.7433 +    var event = new Event('MouseEvents');
  1.7434 +    event.initEvent("mouseout", true, true, null, 0,
  1.7435 +                0, 0, 0, 0, false, false, false, 
  1.7436 +                false, null, null);
  1.7437 +    element.dispatchEvent(event);
  1.7438 +};
  1.7439 +
  1.7440 +/**
  1.7441 + * HTMLElement - DOM Level 2
  1.7442 + */
  1.7443 +
  1.7444 +
  1.7445 +/* Hack for http://www.prototypejs.org/
  1.7446 + *
  1.7447 + * Prototype 1.6 (the library) creates a new global Element, which causes
  1.7448 + * envjs to use the wrong Element.
  1.7449 + *
  1.7450 + * http://envjs.lighthouseapp.com/projects/21590/tickets/108-prototypejs-wont-load-due-it-clobbering-element
  1.7451 + *
  1.7452 + * Options:
  1.7453 + *  (1) Rename the dom/element to something else
  1.7454 + *       rejected: been done before. people want Element.
  1.7455 + *  (2) merge dom+html and not export Element to global namespace
  1.7456 + *      (meaning we would use a local var Element in a closure, so prototype
  1.7457 + *      can do what ever it wants)
  1.7458 + *       rejected: want dom and html separate
  1.7459 + *  (3) use global namespace (put everything under Envjs = {})
  1.7460 + *       rejected: massive change
  1.7461 + *  (4) use commonjs modules (similar to (3) in spirit)
  1.7462 + *       rejected: massive change
  1.7463 + *
  1.7464 + *  or
  1.7465 + *
  1.7466 + *  (5) take a reference to Element during initial loading ("compile
  1.7467 + *      time"), and use the reference instead of "Element".  That's
  1.7468 + *      what the next line does.  We use __DOMElement__ if we need to
  1.7469 + *      reference the parent class.  Only this file explcity uses
  1.7470 + *      Element so this should work, and is the most minimal change I
  1.7471 + *      could think of with no external API changes.
  1.7472 + *
  1.7473 + */
  1.7474 +var  __DOMElement__ = Element;
  1.7475 +
  1.7476 +HTMLElement = function(ownerDocument) {
  1.7477 +    __DOMElement__.apply(this, arguments);
  1.7478 +};
  1.7479 +
  1.7480 +HTMLElement.prototype = new Element();
  1.7481 +__extend__(HTMLElement.prototype, HTMLEvents.prototype);
  1.7482 +__extend__(HTMLElement.prototype, {
  1.7483 +    get className() {
  1.7484 +        return this.getAttribute("class")||'';
  1.7485 +    },
  1.7486 +    set className(value) {
  1.7487 +        return this.setAttribute("class",__trim__(value));
  1.7488 +    },
  1.7489 +    get dir() {
  1.7490 +        return this.getAttribute("dir")||"ltr";
  1.7491 +    },
  1.7492 +    set dir(val) {
  1.7493 +        return this.setAttribute("dir",val);
  1.7494 +    },
  1.7495 +    get id(){
  1.7496 +        return this.getAttribute('id');
  1.7497 +    },
  1.7498 +    set id(id){
  1.7499 +        this.setAttribute('id', id);
  1.7500 +    },
  1.7501 +    get innerHTML(){
  1.7502 +        var ret = "",
  1.7503 +        i;
  1.7504 +
  1.7505 +        // create string containing the concatenation of the string
  1.7506 +        // values of each child
  1.7507 +        for (i=0; i < this.childNodes.length; i++) {
  1.7508 +            if(this.childNodes[i]){
  1.7509 +                if(this.childNodes[i].nodeType === Node.ELEMENT_NODE){
  1.7510 +                    ret += this.childNodes[i].xhtml;
  1.7511 +                } else if (this.childNodes[i].nodeType === Node.TEXT_NODE && i>0 &&
  1.7512 +                           this.childNodes[i-1].nodeType === Node.TEXT_NODE){
  1.7513 +                    //add a single space between adjacent text nodes
  1.7514 +                    ret += " "+this.childNodes[i].xml;
  1.7515 +                }else{
  1.7516 +                    ret += this.childNodes[i].xml;
  1.7517 +                }
  1.7518 +            }
  1.7519 +        }
  1.7520 +        return ret;
  1.7521 +    },
  1.7522 +    get lang() {
  1.7523 +        return this.getAttribute("lang");
  1.7524 +    },
  1.7525 +    set lang(val) {
  1.7526 +        return this.setAttribute("lang",val);
  1.7527 +    },
  1.7528 +    get offsetHeight(){
  1.7529 +        return Number((this.style.height || '').replace("px",""));
  1.7530 +    },
  1.7531 +    get offsetWidth(){
  1.7532 +        return Number((this.style.width || '').replace("px",""));
  1.7533 +    },
  1.7534 +    offsetLeft: 0,
  1.7535 +    offsetRight: 0,
  1.7536 +    get offsetParent(){
  1.7537 +        /* TODO */
  1.7538 +        return;
  1.7539 +    },
  1.7540 +    set offsetParent(element){
  1.7541 +        /* TODO */
  1.7542 +        return;
  1.7543 +    },
  1.7544 +    scrollHeight: 0,
  1.7545 +    scrollWidth: 0,
  1.7546 +    scrollLeft: 0,
  1.7547 +    scrollRight: 0,
  1.7548 +    get style(){
  1.7549 +        return this.getAttribute('style')||'';
  1.7550 +    },
  1.7551 +    get title() {
  1.7552 +        return this.getAttribute("title");
  1.7553 +    },
  1.7554 +    set title(value) {
  1.7555 +        return this.setAttribute("title", value);
  1.7556 +    },
  1.7557 +    get tabIndex(){
  1.7558 +        var tabindex = this.getAttribute('tabindex');
  1.7559 +        if(tabindex!==null){
  1.7560 +            return Number(tabindex);
  1.7561 +        } else {
  1.7562 +            return 0;
  1.7563 +        }
  1.7564 +    },
  1.7565 +    set tabIndex(value){
  1.7566 +        if (value === undefined || value === null) {
  1.7567 +            value = 0;
  1.7568 +        }
  1.7569 +        this.setAttribute('tabindex',Number(value));
  1.7570 +    },
  1.7571 +    get outerHTML(){
  1.7572 +        //Not in the specs but I'll leave it here for now.
  1.7573 +        return this.xhtml;
  1.7574 +    },
  1.7575 +    scrollIntoView: function(){
  1.7576 +        /*TODO*/
  1.7577 +        return;
  1.7578 +    },
  1.7579 +    toString: function(){
  1.7580 +        return '[object HTMLElement]';
  1.7581 +    },
  1.7582 +    get xhtml() {
  1.7583 +        // HTMLDocument.xhtml is non-standard
  1.7584 +        // This is exactly like Document.xml except the tagName has to be
  1.7585 +        // lower cased.  I dont like to duplicate this but its really not
  1.7586 +        // a simple work around between xml and html serialization via
  1.7587 +        // XMLSerializer (which uppercases html tags) and innerHTML (which
  1.7588 +        // lowercases tags)
  1.7589 +
  1.7590 +        var ret = "",
  1.7591 +            ns = "",
  1.7592 +            name = (this.tagName+"").toLowerCase(),
  1.7593 +            attrs,
  1.7594 +            attrstring = "",
  1.7595 +            i;
  1.7596 +
  1.7597 +        // serialize namespace declarations
  1.7598 +        if (this.namespaceURI){
  1.7599 +            if((this === this.ownerDocument.documentElement) ||
  1.7600 +               (!this.parentNode) ||
  1.7601 +               (this.parentNode &&
  1.7602 +                (this.parentNode.namespaceURI !== this.namespaceURI))) {
  1.7603 +                ns = ' xmlns' + (this.prefix ? (':' + this.prefix) : '') +
  1.7604 +                    '="' + this.namespaceURI + '"';
  1.7605 +            }
  1.7606 +        }
  1.7607 +
  1.7608 +        // serialize Attribute declarations
  1.7609 +        attrs = this.attributes;
  1.7610 +        for(i=0;i< attrs.length;i++){
  1.7611 +            attrstring += " "+attrs[i].name+'="'+attrs[i].xml+'"';
  1.7612 +        }
  1.7613 +
  1.7614 +        if(this.hasChildNodes()){
  1.7615 +            // serialize this Element
  1.7616 +            ret += "<" + name + ns + attrstring +">";
  1.7617 +            for(i=0;i< this.childNodes.length;i++){
  1.7618 +                ret += this.childNodes[i].xhtml ?
  1.7619 +                    this.childNodes[i].xhtml :
  1.7620 +                    this.childNodes[i].xml;
  1.7621 +            }
  1.7622 +            ret += "</" + name + ">";
  1.7623 +        }else{
  1.7624 +            switch(name){
  1.7625 +            case 'script':
  1.7626 +                ret += "<" + name + ns + attrstring +"></"+name+">";
  1.7627 +                break;
  1.7628 +            default:
  1.7629 +                ret += "<" + name + ns + attrstring +"/>";
  1.7630 +            }
  1.7631 +        }
  1.7632 +
  1.7633 +        return ret;
  1.7634 +    },
  1.7635 +
  1.7636 +    /**
  1.7637 +     * setAttribute use a dispatch table that other tags can set to
  1.7638 +     *  "listen" to various values being set.  The dispatch table
  1.7639 +     * and registration functions are at the end of the file.
  1.7640 +     *
  1.7641 +     */
  1.7642 +
  1.7643 +    setAttribute: function(name, value) {
  1.7644 +        var result = __DOMElement__.prototype.setAttribute.apply(this, arguments);
  1.7645 +        __addNamedMap__(this.ownerDocument, this);
  1.7646 +        var tagname = this.tagName;
  1.7647 +        var callback = HTMLElement.getAttributeCallback('set', tagname, name);
  1.7648 +        if (callback) {
  1.7649 +            callback(this, value);
  1.7650 +        }
  1.7651 +    },
  1.7652 +    setAttributeNS: function(namespaceURI, name, value) {
  1.7653 +        var result = __DOMElement__.prototype.setAttributeNS.apply(this, arguments);
  1.7654 +        __addNamedMap__(this.ownerDocument, this);
  1.7655 +        var tagname = this.tagName;
  1.7656 +        var callback = HTMLElement.getAttributeCallback('set', tagname, name);
  1.7657 +        if (callback) {
  1.7658 +            callback(this, value);
  1.7659 +        }
  1.7660 +
  1.7661 +        return result;
  1.7662 +    },
  1.7663 +    setAttributeNode: function(newnode) {
  1.7664 +        var result = __DOMElement__.prototype.setAttributeNode.apply(this, arguments);
  1.7665 +        __addNamedMap__(this.ownerDocument, this);
  1.7666 +        var tagname = this.tagName;
  1.7667 +        var callback = HTMLElement.getAttributeCallback('set', tagname, newnode.name);
  1.7668 +        if (callback) {
  1.7669 +            callback(this, node.value);
  1.7670 +        }
  1.7671 +        return result;
  1.7672 +    },
  1.7673 +    setAttributeNodeNS: function(newnode) {
  1.7674 +        var result = __DOMElement__.prototype.setAttributeNodeNS.apply(this, arguments);
  1.7675 +        __addNamedMap__(this.ownerDocument, this);
  1.7676 +        var tagname = this.tagName;
  1.7677 +        var callback = HTMLElement.getAttributeCallback('set', tagname, newnode.name);
  1.7678 +        if (callback) {
  1.7679 +            callback(this, node.value);
  1.7680 +        }
  1.7681 +        return result;
  1.7682 +    },
  1.7683 +    removeAttribute: function(name) {
  1.7684 +        __removeNamedMap__(this.ownerDocument, this);
  1.7685 +        return __DOMElement__.prototype.removeAttribute.apply(this, arguments);
  1.7686 +    },
  1.7687 +    removeAttributeNS: function(namespace, localname) {
  1.7688 +        __removeNamedMap__(this.ownerDocument, this);
  1.7689 +        return __DOMElement__.prototype.removeAttributeNS.apply(this, arguments);
  1.7690 +    },
  1.7691 +    removeAttributeNode: function(name) {
  1.7692 +        __removeNamedMap__(this.ownerDocument, this);
  1.7693 +        return __DOMElement__.prototype.removeAttribute.apply(this, arguments);
  1.7694 +    },
  1.7695 +    removeChild: function(oldChild) {
  1.7696 +        __removeNamedMap__(this.ownerDocument, oldChild);
  1.7697 +        return __DOMElement__.prototype.removeChild.apply(this, arguments);
  1.7698 +    },
  1.7699 +    importNode: function(othernode, deep) {
  1.7700 +        var newnode = __DOMElement__.prototype.importNode.apply(this, arguments);
  1.7701 +        __addNamedMap__(this.ownerDocument, newnode);
  1.7702 +        return newnode;
  1.7703 +    },
  1.7704 +
  1.7705 +    // not actually sure if this is needed or not
  1.7706 +    replaceNode: function(newchild, oldchild) {
  1.7707 +        var newnode = __DOMElement__.prototype.replaceNode.apply(this, arguments);
  1.7708 +        __removeNamedMap__(this.ownerDocument, oldchild);
  1.7709 +        __addNamedMap__(this.ownerDocument, newnode);
  1.7710 +                return newnode;
  1.7711 +    }
  1.7712 +});
  1.7713 +
  1.7714 +
  1.7715 +HTMLElement.attributeCallbacks = {};
  1.7716 +HTMLElement.registerSetAttribute = function(tag, attrib, callbackfn) {
  1.7717 +    HTMLElement.attributeCallbacks[tag + ':set:' + attrib] = callbackfn;
  1.7718 +};
  1.7719 +HTMLElement.registerRemoveAttribute = function(tag, attrib, callbackfn) {
  1.7720 +    HTMLElement.attributeCallbacks[tag + ':remove:' + attrib] = callbackfn;
  1.7721 +};
  1.7722 +
  1.7723 +/**
  1.7724 + * This is really only useful internally
  1.7725 + *
  1.7726 + */
  1.7727 +HTMLElement.getAttributeCallback = function(type, tag, attrib) {
  1.7728 +    return HTMLElement.attributeCallbacks[tag + ':' + type + ':' + attrib] || null;
  1.7729 +};
  1.7730 +/*
  1.7731 + * HTMLCollection
  1.7732 + *
  1.7733 + * HTML5 -- 2.7.2.1 HTMLCollection
  1.7734 + * http://dev.w3.org/html5/spec/Overview.html#htmlcollection
  1.7735 + * http://dev.w3.org/html5/spec/Overview.html#collections
  1.7736 + */
  1.7737 +HTMLCollection = function(nodelist, type) {
  1.7738 +
  1.7739 +    __setArray__(this, []);
  1.7740 +    var n;
  1.7741 +    for (var i=0; i<nodelist.length; i++) {
  1.7742 +        this[i] = nodelist[i];
  1.7743 +        n = nodelist[i].name;
  1.7744 +        if (n) {
  1.7745 +            this[n] = nodelist[i];
  1.7746 +        }
  1.7747 +        n = nodelist[i].id;
  1.7748 +        if (n) {
  1.7749 +            this[n] = nodelist[i];
  1.7750 +        }
  1.7751 +    }
  1.7752 +
  1.7753 +    this.length = nodelist.length;
  1.7754 +};
  1.7755 +
  1.7756 +HTMLCollection.prototype = {
  1.7757 +
  1.7758 +    item: function (idx) {
  1.7759 +        return  ((idx >= 0) && (idx < this.length)) ? this[idx] : null;
  1.7760 +    },
  1.7761 +
  1.7762 +    namedItem: function (name) {
  1.7763 +        return this[name] || null;
  1.7764 +    },
  1.7765 +
  1.7766 +    toString: function() {
  1.7767 +        return '[object HTMLCollection]';
  1.7768 +    }
  1.7769 +};
  1.7770 +/*
  1.7771 + *  a set of convenience classes to centralize implementation of
  1.7772 + * properties and methods across multiple in-form elements
  1.7773 + *
  1.7774 + *  the hierarchy of related HTML elements and their members is as follows:
  1.7775 + *
  1.7776 + * Condensed Version
  1.7777 + *
  1.7778 + *  HTMLInputCommon
  1.7779 + *     * legent (no value attr)
  1.7780 + *     * fieldset (no value attr)
  1.7781 + *     * label (no value attr)
  1.7782 + *     * option (custom value)
  1.7783 + *  HTMLTypeValueInputs (extends InputCommon)
  1.7784 + *     * select  (custom value)
  1.7785 + *     * button (just sets value)
  1.7786 + *  HTMLInputAreaCommon (extends TypeValueIput)
  1.7787 + *     * input  (custom)
  1.7788 + *     * textarea (just sets value)
  1.7789 + *
  1.7790 + * -----------------------
  1.7791 + *    HTMLInputCommon:  common to all elements
  1.7792 + *       .form
  1.7793 + *
  1.7794 + *    <legend>
  1.7795 + *          [common plus:]
  1.7796 + *       .align
  1.7797 + *
  1.7798 + *    <fieldset>
  1.7799 + *          [identical to "legend" plus:]
  1.7800 + *       .margin
  1.7801 + *
  1.7802 + *
  1.7803 + *  ****
  1.7804 + *
  1.7805 + *    <label>
  1.7806 + *          [common plus:]
  1.7807 + *       .dataFormatAs
  1.7808 + *       .htmlFor
  1.7809 + *       [plus data properties]
  1.7810 + *
  1.7811 + *    <option>
  1.7812 + *          [common plus:]
  1.7813 + *       .defaultSelected
  1.7814 + *       .index
  1.7815 + *       .label
  1.7816 + *       .selected
  1.7817 + *       .text
  1.7818 + *       .value   // unique implementation, not duplicated
  1.7819 + *       .form    // unique implementation, not duplicated
  1.7820 + *  ****
  1.7821 + *
  1.7822 + *    HTMLTypeValueInputs:  common to remaining elements
  1.7823 + *          [common plus:]
  1.7824 + *       .name
  1.7825 + *       .type
  1.7826 + *       .value
  1.7827 + *       [plus data properties]
  1.7828 + *
  1.7829 + *
  1.7830 + *    <select>
  1.7831 + *       .length
  1.7832 + *       .multiple
  1.7833 + *       .options[]
  1.7834 + *       .selectedIndex
  1.7835 + *       .add()
  1.7836 + *       .remove()
  1.7837 + *       .item()                                       // unimplemented
  1.7838 + *       .namedItem()                                  // unimplemented
  1.7839 + *       [plus ".onchange"]
  1.7840 + *       [plus focus events]
  1.7841 + *       [plus data properties]
  1.7842 + *       [plus ".size"]
  1.7843 + *
  1.7844 + *    <button>
  1.7845 + *       .dataFormatAs   // duplicated from above, oh well....
  1.7846 + *       [plus ".status", ".createTextRange()"]
  1.7847 + *
  1.7848 + *  ****
  1.7849 + *
  1.7850 + *    HTMLInputAreaCommon:  common to remaining elements
  1.7851 + *       .defaultValue
  1.7852 + *       .readOnly
  1.7853 + *       .handleEvent()                                // unimplemented
  1.7854 + *       .select()
  1.7855 + *       .onselect
  1.7856 + *       [plus ".size"]
  1.7857 + *       [plus ".status", ".createTextRange()"]
  1.7858 + *       [plus focus events]
  1.7859 + *       [plus ".onchange"]
  1.7860 + *
  1.7861 + *    <textarea>
  1.7862 + *       .cols
  1.7863 + *       .rows
  1.7864 + *       .wrap                                         // unimplemented
  1.7865 + *       .onscroll                                     // unimplemented
  1.7866 + *
  1.7867 + *    <input>
  1.7868 + *       .alt
  1.7869 + *       .accept                                       // unimplemented
  1.7870 + *       .checked
  1.7871 + *       .complete                                     // unimplemented
  1.7872 + *       .defaultChecked
  1.7873 + *       .dynsrc                                       // unimplemented
  1.7874 + *       .height
  1.7875 + *       .hspace                                       // unimplemented
  1.7876 + *       .indeterminate                                // unimplemented
  1.7877 + *       .loop                                         // unimplemented
  1.7878 + *       .lowsrc                                       // unimplemented
  1.7879 + *       .maxLength
  1.7880 + *       .src
  1.7881 + *       .start                                        // unimplemented
  1.7882 + *       .useMap
  1.7883 + *       .vspace                                       // unimplemented
  1.7884 + *       .width
  1.7885 + *       .onclick
  1.7886 + *       [plus ".size"]
  1.7887 + *       [plus ".status", ".createTextRange()"]
  1.7888 +
  1.7889 + *    [data properties]                                // unimplemented
  1.7890 + *       .dataFld
  1.7891 + *       .dataSrc
  1.7892 +
  1.7893 + *    [status stuff]                                   // unimplemented
  1.7894 + *       .status
  1.7895 + *       .createTextRange()
  1.7896 +
  1.7897 + *    [focus events]
  1.7898 + *       .onblur
  1.7899 + *       .onfocus
  1.7900 +
  1.7901 + */
  1.7902 +
  1.7903 +
  1.7904 +
  1.7905 +var inputElements_dataProperties = {};
  1.7906 +var inputElements_status = {};
  1.7907 +
  1.7908 +var inputElements_onchange = {
  1.7909 +    onchange: function(event){
  1.7910 +        __eval__(this.getAttribute('onchange')||'', this);
  1.7911 +    }
  1.7912 +};
  1.7913 +
  1.7914 +var inputElements_size = {
  1.7915 +    get size(){
  1.7916 +        return Number(this.getAttribute('size'));
  1.7917 +    },
  1.7918 +    set size(value){
  1.7919 +        this.setAttribute('size',value);
  1.7920 +    }
  1.7921 +};
  1.7922 +
  1.7923 +var inputElements_focusEvents = {
  1.7924 +    blur: function(){
  1.7925 +        __blur__(this);
  1.7926 +
  1.7927 +        if (this._oldValue != this.value){
  1.7928 +            var event = document.createEvent("HTMLEvents");
  1.7929 +            event.initEvent("change", true, true);
  1.7930 +            this.dispatchEvent( event );
  1.7931 +        }
  1.7932 +    },
  1.7933 +    focus: function(){
  1.7934 +        __focus__(this);
  1.7935 +        this._oldValue = this.value;
  1.7936 +    }
  1.7937 +};
  1.7938 +
  1.7939 +
  1.7940 +/*
  1.7941 +* HTMLInputCommon - convenience class, not DOM
  1.7942 +*/
  1.7943 +var HTMLInputCommon = function(ownerDocument) {
  1.7944 +    HTMLElement.apply(this, arguments);
  1.7945 +};
  1.7946 +HTMLInputCommon.prototype = new HTMLElement();
  1.7947 +__extend__(HTMLInputCommon.prototype, {
  1.7948 +    get form() {
  1.7949 +        // parent can be null if element is outside of a form
  1.7950 +        // or not yet added to the document
  1.7951 +        var parent = this.parentNode;
  1.7952 +        while (parent && parent.nodeName.toLowerCase() !== 'form') {
  1.7953 +            parent = parent.parentNode;
  1.7954 +        }
  1.7955 +        return parent;
  1.7956 +    },
  1.7957 +    get accessKey(){
  1.7958 +        return this.getAttribute('accesskey');
  1.7959 +    },
  1.7960 +    set accessKey(value){
  1.7961 +        this.setAttribute('accesskey',value);
  1.7962 +    },
  1.7963 +    get access(){
  1.7964 +        return this.getAttribute('access');
  1.7965 +    },
  1.7966 +    set access(value){
  1.7967 +        this.setAttribute('access', value);
  1.7968 +    },
  1.7969 +    get disabled(){
  1.7970 +        return (this.getAttribute('disabled') === 'disabled');
  1.7971 +    },
  1.7972 +    set disabled(value){
  1.7973 +        this.setAttribute('disabled', (value ? 'disabled' :''));
  1.7974 +    }
  1.7975 +});
  1.7976 +
  1.7977 +
  1.7978 +
  1.7979 +
  1.7980 +/*
  1.7981 +* HTMLTypeValueInputs - convenience class, not DOM
  1.7982 +*/
  1.7983 +var HTMLTypeValueInputs = function(ownerDocument) {
  1.7984 +
  1.7985 +    HTMLInputCommon.apply(this, arguments);
  1.7986 +
  1.7987 +    this._oldValue = "";
  1.7988 +};
  1.7989 +HTMLTypeValueInputs.prototype = new HTMLInputCommon();
  1.7990 +__extend__(HTMLTypeValueInputs.prototype, inputElements_size);
  1.7991 +__extend__(HTMLTypeValueInputs.prototype, inputElements_status);
  1.7992 +__extend__(HTMLTypeValueInputs.prototype, inputElements_dataProperties);
  1.7993 +__extend__(HTMLTypeValueInputs.prototype, {
  1.7994 +    get name(){
  1.7995 +        return this.getAttribute('name')||'';
  1.7996 +    },
  1.7997 +    set name(value){
  1.7998 +        this.setAttribute('name',value);
  1.7999 +    },
  1.8000 +});
  1.8001 +
  1.8002 +
  1.8003 +/*
  1.8004 +* HTMLInputAreaCommon - convenience class, not DOM
  1.8005 +*/
  1.8006 +var HTMLInputAreaCommon = function(ownerDocument) {
  1.8007 +    HTMLTypeValueInputs.apply(this, arguments);
  1.8008 +};
  1.8009 +HTMLInputAreaCommon.prototype = new HTMLTypeValueInputs();
  1.8010 +__extend__(HTMLInputAreaCommon.prototype, inputElements_focusEvents);
  1.8011 +__extend__(HTMLInputAreaCommon.prototype, inputElements_onchange);
  1.8012 +__extend__(HTMLInputAreaCommon.prototype, {
  1.8013 +    get readOnly(){
  1.8014 +        return (this.getAttribute('readonly')=='readonly');
  1.8015 +    },
  1.8016 +    set readOnly(value){
  1.8017 +        this.setAttribute('readonly', (value ? 'readonly' :''));
  1.8018 +    },
  1.8019 +    select:function(){
  1.8020 +        __select__(this);
  1.8021 +
  1.8022 +    }
  1.8023 +});
  1.8024 +
  1.8025 +
  1.8026 +var __updateFormForNamedElement__ = function(node, value) {
  1.8027 +    if (node.form) {
  1.8028 +        // to check for ID or NAME attribute too
  1.8029 +        // not, then nothing to do
  1.8030 +        node.form._updateElements();
  1.8031 +    }
  1.8032 +};
  1.8033 +
  1.8034 +/**
  1.8035 + * HTMLAnchorElement - DOM Level 2
  1.8036 + *
  1.8037 + * HTML5: 4.6.1 The a element
  1.8038 + * http://dev.w3.org/html5/spec/Overview.html#the-a-element
  1.8039 + */
  1.8040 +HTMLAnchorElement = function(ownerDocument) {
  1.8041 +    HTMLElement.apply(this, arguments);
  1.8042 +};
  1.8043 +HTMLAnchorElement.prototype = new HTMLElement();
  1.8044 +__extend__(HTMLAnchorElement.prototype, {
  1.8045 +    get accessKey() {
  1.8046 +        return this.getAttribute("accesskey")||'';
  1.8047 +    },
  1.8048 +    set accessKey(val) {
  1.8049 +        return this.setAttribute("accesskey",val);
  1.8050 +    },
  1.8051 +    get charset() {
  1.8052 +        return this.getAttribute("charset")||'';
  1.8053 +    },
  1.8054 +    set charset(val) {
  1.8055 +        return this.setAttribute("charset",val);
  1.8056 +    },
  1.8057 +    get coords() {
  1.8058 +        return this.getAttribute("coords")||'';
  1.8059 +    },
  1.8060 +    set coords(val) {
  1.8061 +        return this.setAttribute("coords",val);
  1.8062 +    },
  1.8063 +    get href() {
  1.8064 +        var link = this.getAttribute('href');
  1.8065 +        if (!link) {
  1.8066 +            return '';
  1.8067 +        }
  1.8068 +        return Envjs.uri(link,
  1.8069 +                         this.ownerDocument.location.toString());
  1.8070 +    },
  1.8071 +    set href(val) {
  1.8072 +        return this.setAttribute("href", val);
  1.8073 +    },
  1.8074 +    get hreflang() {
  1.8075 +        return this.getAttribute("hreflang")||'';
  1.8076 +    },
  1.8077 +    set hreflang(val) {
  1.8078 +        this.setAttribute("hreflang",val);
  1.8079 +    },
  1.8080 +    get name() {
  1.8081 +        return this.getAttribute("name")||'';
  1.8082 +    },
  1.8083 +    set name(val) {
  1.8084 +        this.setAttribute("name",val);
  1.8085 +    },
  1.8086 +    get rel() {
  1.8087 +        return this.getAttribute("rel")||'';
  1.8088 +    },
  1.8089 +    set rel(val) {
  1.8090 +        return this.setAttribute("rel", val);
  1.8091 +    },
  1.8092 +    get rev() {
  1.8093 +        return this.getAttribute("rev")||'';
  1.8094 +    },
  1.8095 +    set rev(val) {
  1.8096 +        return this.setAttribute("rev",val);
  1.8097 +    },
  1.8098 +    get shape() {
  1.8099 +        return this.getAttribute("shape")||'';
  1.8100 +    },
  1.8101 +    set shape(val) {
  1.8102 +        return this.setAttribute("shape",val);
  1.8103 +    },
  1.8104 +    get target() {
  1.8105 +        return this.getAttribute("target")||'';
  1.8106 +    },
  1.8107 +    set target(val) {
  1.8108 +        return this.setAttribute("target",val);
  1.8109 +    },
  1.8110 +    get type() {
  1.8111 +        return this.getAttribute("type")||'';
  1.8112 +    },
  1.8113 +    set type(val) {
  1.8114 +        return this.setAttribute("type",val);
  1.8115 +    },
  1.8116 +    blur: function() {
  1.8117 +        __blur__(this);
  1.8118 +    },
  1.8119 +    focus: function() {
  1.8120 +        __focus__(this);
  1.8121 +    },
  1.8122 +
  1.8123 +    /**
  1.8124 +     * Unlike other elements, toString returns the href
  1.8125 +     */
  1.8126 +    toString: function() {
  1.8127 +        return this.href;
  1.8128 +    }
  1.8129 +});
  1.8130 +
  1.8131 +/*
  1.8132 + * HTMLAreaElement - DOM Level 2
  1.8133 + *
  1.8134 + * HTML5: 4.8.13 The area element
  1.8135 + * http://dev.w3.org/html5/spec/Overview.html#the-area-element
  1.8136 + */
  1.8137 +HTMLAreaElement = function(ownerDocument) {
  1.8138 +    HTMLElement.apply(this, arguments);
  1.8139 +};
  1.8140 +HTMLAreaElement.prototype = new HTMLElement();
  1.8141 +__extend__(HTMLAreaElement.prototype, {
  1.8142 +    get accessKey(){
  1.8143 +        return this.getAttribute('accesskey');
  1.8144 +    },
  1.8145 +    set accessKey(value){
  1.8146 +        this.setAttribute('accesskey',value);
  1.8147 +    },
  1.8148 +    get alt(){
  1.8149 +        return this.getAttribute('alt') || '';
  1.8150 +    },
  1.8151 +    set alt(value){
  1.8152 +        this.setAttribute('alt',value);
  1.8153 +    },
  1.8154 +    get coords(){
  1.8155 +        return this.getAttribute('coords');
  1.8156 +    },
  1.8157 +    set coords(value){
  1.8158 +        this.setAttribute('coords',value);
  1.8159 +    },
  1.8160 +    get href(){
  1.8161 +        return this.getAttribute('href') || '';
  1.8162 +    },
  1.8163 +    set href(value){
  1.8164 +        this.setAttribute('href',value);
  1.8165 +    },
  1.8166 +    get noHref(){
  1.8167 +        return this.hasAttribute('href');
  1.8168 +    },
  1.8169 +    get shape(){
  1.8170 +        //TODO
  1.8171 +        return 0;
  1.8172 +    },
  1.8173 +    /*get tabIndex(){
  1.8174 +      return this.getAttribute('tabindex');
  1.8175 +      },
  1.8176 +      set tabIndex(value){
  1.8177 +      this.setAttribute('tabindex',value);
  1.8178 +      },*/
  1.8179 +    get target(){
  1.8180 +        return this.getAttribute('target');
  1.8181 +    },
  1.8182 +    set target(value){
  1.8183 +        this.setAttribute('target',value);
  1.8184 +    },
  1.8185 +
  1.8186 +    /**
  1.8187 +     * toString like <a>, returns the href
  1.8188 +     */
  1.8189 +    toString: function() {
  1.8190 +        return this.href;
  1.8191 +    }
  1.8192 +});
  1.8193 +
  1.8194 +
  1.8195 +/*
  1.8196 + * HTMLBaseElement - DOM Level 2
  1.8197 + *
  1.8198 + * HTML5: 4.2.3 The base element
  1.8199 + * http://dev.w3.org/html5/spec/Overview.html#the-base-element
  1.8200 + */
  1.8201 +HTMLBaseElement = function(ownerDocument) {
  1.8202 +    HTMLElement.apply(this, arguments);
  1.8203 +};
  1.8204 +HTMLBaseElement.prototype = new HTMLElement();
  1.8205 +__extend__(HTMLBaseElement.prototype, {
  1.8206 +    get href(){
  1.8207 +        return this.getAttribute('href');
  1.8208 +    },
  1.8209 +    set href(value){
  1.8210 +        this.setAttribute('href',value);
  1.8211 +    },
  1.8212 +    get target(){
  1.8213 +        return this.getAttribute('target');
  1.8214 +    },
  1.8215 +    set target(value){
  1.8216 +        this.setAttribute('target',value);
  1.8217 +    },
  1.8218 +    toString: function() {
  1.8219 +        return '[object HTMLBaseElement]';
  1.8220 +    }
  1.8221 +});
  1.8222 +
  1.8223 +
  1.8224 +/*
  1.8225 + * HTMLQuoteElement - DOM Level 2
  1.8226 + * HTML5: 4.5.5 The blockquote element
  1.8227 + * http://dev.w3.org/html5/spec/Overview.html#htmlquoteelement
  1.8228 + */
  1.8229 +HTMLQuoteElement = function(ownerDocument) {
  1.8230 +    HTMLElement.apply(this, arguments);
  1.8231 +};
  1.8232 +__extend__(HTMLQuoteElement.prototype, HTMLElement.prototype);
  1.8233 +__extend__(HTMLQuoteElement.prototype, {
  1.8234 +    /**
  1.8235 +     * Quoth the spec:
  1.8236 +     * """
  1.8237 +     * If the cite attribute is present, it must be a valid URL. To
  1.8238 +     * obtain the corresponding citation link, the value of the
  1.8239 +     * attribute must be resolved relative to the element. User agents
  1.8240 +     * should allow users to follow such citation links.
  1.8241 +     * """
  1.8242 +     *
  1.8243 +     * TODO: normalize
  1.8244 +     *
  1.8245 +     */
  1.8246 +    get cite() {
  1.8247 +        return this.getAttribute('cite') || '';
  1.8248 +    },
  1.8249 +
  1.8250 +    set cite(value) {
  1.8251 +        this.setAttribute('cite', value);
  1.8252 +    },
  1.8253 +    toString: function() {
  1.8254 +        return '[object HTMLQuoteElement]';
  1.8255 +    }
  1.8256 +});
  1.8257 +
  1.8258 +/*
  1.8259 + * HTMLBodyElement - DOM Level 2
  1.8260 + * HTML5: http://dev.w3.org/html5/spec/Overview.html#the-body-element-0
  1.8261 + */
  1.8262 +HTMLBodyElement = function(ownerDocument) {
  1.8263 +    HTMLElement.apply(this, arguments);
  1.8264 +};
  1.8265 +HTMLBodyElement.prototype = new HTMLElement();
  1.8266 +__extend__(HTMLBodyElement.prototype, {
  1.8267 +    onload: function(event){
  1.8268 +        __eval__(this.getAttribute('onload')||'', this);
  1.8269 +    },
  1.8270 +    onunload: function(event){
  1.8271 +        __eval__(this.getAttribute('onunload')||'', this);
  1.8272 +    },
  1.8273 +    toString: function() {
  1.8274 +        return '[object HTMLBodyElement]';
  1.8275 +    }
  1.8276 +});
  1.8277 +
  1.8278 +/*
  1.8279 + * HTMLBRElement
  1.8280 + * HTML5: 4.5.3 The hr Element
  1.8281 + * http://dev.w3.org/html5/spec/Overview.html#the-br-element
  1.8282 + */
  1.8283 +HTMLBRElement = function(ownerDocument) {
  1.8284 +    HTMLElement.apply(this, arguments);
  1.8285 +};
  1.8286 +
  1.8287 +HTMLBRElement.prototype = new HTMLElement();
  1.8288 +__extend__(HTMLBRElement.prototype, {
  1.8289 +
  1.8290 +    // no additional properties or elements
  1.8291 +
  1.8292 +    toString: function() {
  1.8293 +        return '[object HTMLBRElement]';
  1.8294 +    }
  1.8295 +});
  1.8296 +
  1.8297 +
  1.8298 +/*
  1.8299 + * HTMLButtonElement - DOM Level 2
  1.8300 + *
  1.8301 + * HTML5: 4.10.6 The button element
  1.8302 + * http://dev.w3.org/html5/spec/Overview.html#the-button-element
  1.8303 + */
  1.8304 +HTMLButtonElement = function(ownerDocument) {
  1.8305 +    HTMLTypeValueInputs.apply(this, arguments);
  1.8306 +};
  1.8307 +HTMLButtonElement.prototype = new HTMLTypeValueInputs();
  1.8308 +__extend__(HTMLButtonElement.prototype, inputElements_status);
  1.8309 +__extend__(HTMLButtonElement.prototype, {
  1.8310 +    get dataFormatAs(){
  1.8311 +        return this.getAttribute('dataFormatAs');
  1.8312 +    },
  1.8313 +    set dataFormatAs(value){
  1.8314 +        this.setAttribute('dataFormatAs',value);
  1.8315 +    },
  1.8316 +    get type() {
  1.8317 +        return this.getAttribute('type') || 'submit';
  1.8318 +    },
  1.8319 +    set type(value) {
  1.8320 +        this.setAttribute('type', value);
  1.8321 +    },
  1.8322 +    get value() {
  1.8323 +        return this.getAttribute('value') || '';
  1.8324 +    },
  1.8325 +    set value(value) {
  1.8326 +        this.setAttribute('value', value);
  1.8327 +    },
  1.8328 +    toString: function() {
  1.8329 +        return '[object HTMLButtonElement]';
  1.8330 +    }
  1.8331 +});
  1.8332 +
  1.8333 +// Named Element Support
  1.8334 +HTMLElement.registerSetAttribute('BUTTON', 'name',
  1.8335 +                                 __updateFormForNamedElement__);
  1.8336 +
  1.8337 +/*
  1.8338 + * HTMLCanvasElement - DOM Level 2
  1.8339 + * HTML5: 4.8.11 The canvas element
  1.8340 + * http://dev.w3.org/html5/spec/Overview.html#the-canvas-element
  1.8341 + */
  1.8342 +
  1.8343 +
  1.8344 +/*
  1.8345 + * This is a "non-Abstract Base Class". For an implmentation that actually
  1.8346 + * did something, all these methods would need to over-written
  1.8347 + */
  1.8348 +CanvasRenderingContext2D = function() {
  1.8349 +    // NOP
  1.8350 +};
  1.8351 +
  1.8352 +var nullfunction = function() {};
  1.8353 +
  1.8354 +CanvasRenderingContext2D.prototype = {
  1.8355 +    addColorStop: nullfunction,
  1.8356 +    arc: nullfunction,
  1.8357 +    beginPath: nullfunction,
  1.8358 +    bezierCurveTo: nullfunction,
  1.8359 +    clearRect: nullfunction,
  1.8360 +    clip: nullfunction,
  1.8361 +    closePath: nullfunction,
  1.8362 +    createLinearGradient: nullfunction,
  1.8363 +    createPattern: nullfunction,
  1.8364 +    createRadialGradient: nullfunction,
  1.8365 +    drawImage: nullfunction,
  1.8366 +    fill: nullfunction,
  1.8367 +    fillRect:  nullfunction,
  1.8368 +    lineTo: nullfunction,
  1.8369 +    moveTo: nullfunction,
  1.8370 +    quadraticCurveTo: nullfunction,
  1.8371 +    rect: nullfunction,
  1.8372 +    restore: nullfunction,
  1.8373 +    rotate: nullfunction,
  1.8374 +    save: nullfunction,
  1.8375 +    scale: nullfunction,
  1.8376 +    setTranform: nullfunction,
  1.8377 +    stroke: nullfunction,
  1.8378 +    strokeRect: nullfunction,
  1.8379 +    transform: nullfunction,
  1.8380 +    translate: nullfunction,
  1.8381 +
  1.8382 +    toString: function() {
  1.8383 +        return '[object CanvasRenderingContext2D]';
  1.8384 +    }
  1.8385 +};
  1.8386 +
  1.8387 +HTMLCanvasElement = function(ownerDocument) {
  1.8388 +    HTMLElement.apply(this, arguments);
  1.8389 +};
  1.8390 +HTMLCanvasElement.prototype = new HTMLElement();
  1.8391 +__extend__(HTMLCanvasElement.prototype, {
  1.8392 +
  1.8393 +    getContext: function(ctxtype) {
  1.8394 +        if (ctxtype === '2d') {
  1.8395 +            return new CanvasRenderingContext2D();
  1.8396 +        }
  1.8397 +        throw new Error("Unknown context type of '" + ctxtype + '"');
  1.8398 +    },
  1.8399 +
  1.8400 +    get height(){
  1.8401 +        return Number(this.getAttribute('height')|| 150);
  1.8402 +    },
  1.8403 +    set height(value){
  1.8404 +        this.setAttribute('height', value);
  1.8405 +    },
  1.8406 +
  1.8407 +    get width(){
  1.8408 +        return Number(this.getAttribute('width')|| 300);
  1.8409 +    },
  1.8410 +    set width(value){
  1.8411 +        this.setAttribute('width', value);
  1.8412 +    },
  1.8413 +
  1.8414 +    toString: function() {
  1.8415 +        return '[object HTMLCanvasElement]';
  1.8416 +    }
  1.8417 +
  1.8418 +});
  1.8419 +
  1.8420 +
  1.8421 +/*
  1.8422 +* HTMLTableColElement - DOM Level 2
  1.8423 +*
  1.8424 +* HTML5: 4.9.3 The colgroup element
  1.8425 +* http://dev.w3.org/html5/spec/Overview.html#the-colgroup-element
  1.8426 +*/
  1.8427 +HTMLTableColElement = function(ownerDocument) {
  1.8428 +    HTMLElement.apply(this, arguments);
  1.8429 +};
  1.8430 +HTMLTableColElement.prototype = new HTMLElement();
  1.8431 +__extend__(HTMLTableColElement.prototype, {
  1.8432 +    get align(){
  1.8433 +        return this.getAttribute('align');
  1.8434 +    },
  1.8435 +    set align(value){
  1.8436 +        this.setAttribute('align', value);
  1.8437 +    },
  1.8438 +    get ch(){
  1.8439 +        return this.getAttribute('ch');
  1.8440 +    },
  1.8441 +    set ch(value){
  1.8442 +        this.setAttribute('ch', value);
  1.8443 +    },
  1.8444 +    get chOff(){
  1.8445 +        return this.getAttribute('ch');
  1.8446 +    },
  1.8447 +    set chOff(value){
  1.8448 +        this.setAttribute('ch', value);
  1.8449 +    },
  1.8450 +    get span(){
  1.8451 +        return this.getAttribute('span');
  1.8452 +    },
  1.8453 +    set span(value){
  1.8454 +        this.setAttribute('span', value);
  1.8455 +    },
  1.8456 +    get vAlign(){
  1.8457 +        return this.getAttribute('valign');
  1.8458 +    },
  1.8459 +    set vAlign(value){
  1.8460 +        this.setAttribute('valign', value);
  1.8461 +    },
  1.8462 +    get width(){
  1.8463 +        return this.getAttribute('width');
  1.8464 +    },
  1.8465 +    set width(value){
  1.8466 +        this.setAttribute('width', value);
  1.8467 +    },
  1.8468 +    toString: function() {
  1.8469 +        return '[object HTMLTableColElement]';
  1.8470 +    }
  1.8471 +});
  1.8472 +
  1.8473 +
  1.8474 +/*
  1.8475 + * HTMLModElement - DOM Level 2
  1.8476 + * http://dev.w3.org/html5/spec/Overview.html#htmlmodelement
  1.8477 + */
  1.8478 +HTMLModElement = function(ownerDocument) {
  1.8479 +    HTMLElement.apply(this, arguments);
  1.8480 +};
  1.8481 +HTMLModElement.prototype = new HTMLElement();
  1.8482 +__extend__(HTMLModElement.prototype, {
  1.8483 +    get cite(){
  1.8484 +        return this.getAttribute('cite');
  1.8485 +    },
  1.8486 +    set cite(value){
  1.8487 +        this.setAttribute('cite', value);
  1.8488 +    },
  1.8489 +    get dateTime(){
  1.8490 +        return this.getAttribute('datetime');
  1.8491 +    },
  1.8492 +    set dateTime(value){
  1.8493 +        this.setAttribute('datetime', value);
  1.8494 +    },
  1.8495 +    toString: function() {
  1.8496 +        return '[object HTMLModElement]';
  1.8497 +    }
  1.8498 +});
  1.8499 +
  1.8500 +/*
  1.8501 + * HTMLDivElement - DOM Level 2
  1.8502 + * HTML5: 4.5.12 The Div Element
  1.8503 + * http://dev.w3.org/html5/spec/Overview.html#the-div-element
  1.8504 + */
  1.8505 +HTMLDivElement = function(ownerDocument) {
  1.8506 +    HTMLElement.apply(this, arguments);
  1.8507 +};
  1.8508 +
  1.8509 +HTMLDivElement.prototype = new HTMLElement();
  1.8510 +__extend__(HTMLDivElement.prototype, {
  1.8511 +    get align(){
  1.8512 +        return this.getAttribute('align') || 'left';
  1.8513 +    },
  1.8514 +    set align(value){
  1.8515 +        this.setAttribute('align', value);
  1.8516 +    },
  1.8517 +    toString: function() {
  1.8518 +        return '[object HTMLDivElement]';
  1.8519 +    }
  1.8520 +});
  1.8521 +
  1.8522 +
  1.8523 +/*
  1.8524 + * HTMLDListElement
  1.8525 + * HTML5: 4.5.7 The dl Element
  1.8526 + * http://dev.w3.org/html5/spec/Overview.html#the-dl-element
  1.8527 + */
  1.8528 +HTMLDListElement = function(ownerDocument) {
  1.8529 +    HTMLElement.apply(this, arguments);
  1.8530 +};
  1.8531 +
  1.8532 +HTMLDListElement.prototype = new HTMLElement();
  1.8533 +__extend__(HTMLDListElement.prototype, {
  1.8534 +
  1.8535 +    // no additional properties or elements
  1.8536 +
  1.8537 +    toString: function() {
  1.8538 +        return '[object HTMLDListElement]';
  1.8539 +    }
  1.8540 +});
  1.8541 +
  1.8542 +
  1.8543 +/**
  1.8544 + * HTMLLegendElement - DOM Level 2
  1.8545 + *
  1.8546 + * HTML5: 4.10.3 The legend element
  1.8547 + * http://dev.w3.org/html5/spec/Overview.html#the-legend-element
  1.8548 + */
  1.8549 +HTMLLegendElement = function(ownerDocument) {
  1.8550 +    HTMLInputCommon.apply(this, arguments);
  1.8551 +};
  1.8552 +HTMLLegendElement.prototype = new HTMLInputCommon();
  1.8553 +__extend__(HTMLLegendElement.prototype, {
  1.8554 +    get align(){
  1.8555 +        return this.getAttribute('align');
  1.8556 +    },
  1.8557 +    set align(value){
  1.8558 +        this.setAttribute('align',value);
  1.8559 +    }
  1.8560 +});
  1.8561 +
  1.8562 +
  1.8563 +/*
  1.8564 + * HTMLFieldSetElement - DOM Level 2
  1.8565 + *
  1.8566 + * HTML5: 4.10.2 The fieldset element
  1.8567 + * http://dev.w3.org/html5/spec/Overview.html#the-fieldset-element
  1.8568 + */
  1.8569 +HTMLFieldSetElement = function(ownerDocument) {
  1.8570 +    HTMLLegendElement.apply(this, arguments);
  1.8571 +};
  1.8572 +HTMLFieldSetElement.prototype = new HTMLLegendElement();
  1.8573 +__extend__(HTMLFieldSetElement.prototype, {
  1.8574 +    get margin(){
  1.8575 +        return this.getAttribute('margin');
  1.8576 +    },
  1.8577 +    set margin(value){
  1.8578 +        this.setAttribute('margin',value);
  1.8579 +    },
  1.8580 +    toString: function() {
  1.8581 +        return '[object HTMLFieldSetElement]';
  1.8582 +    }
  1.8583 +});
  1.8584 +
  1.8585 +// Named Element Support
  1.8586 +HTMLElement.registerSetAttribute('FIELDSET', 'name',
  1.8587 +                                 __updateFormForNamedElement__);
  1.8588 +/*
  1.8589 + * HTMLFormElement - DOM Level 2
  1.8590 + *
  1.8591 + * HTML5: http://dev.w3.org/html5/spec/Overview.html#the-form-element
  1.8592 + */
  1.8593 +HTMLFormElement = function(ownerDocument){
  1.8594 +    HTMLElement.apply(this, arguments);
  1.8595 +
  1.8596 +    //TODO: on __elementPopped__ from the parser
  1.8597 +    //      we need to determine all the forms default
  1.8598 +    //      values
  1.8599 +};
  1.8600 +HTMLFormElement.prototype = new HTMLElement();
  1.8601 +__extend__(HTMLFormElement.prototype,{
  1.8602 +    get acceptCharset(){
  1.8603 +        return this.getAttribute('accept-charset');
  1.8604 +    },
  1.8605 +    set acceptCharset(acceptCharset) {
  1.8606 +        this.setAttribute('accept-charset', acceptCharset);
  1.8607 +    },
  1.8608 +    get action() {
  1.8609 +        return this.getAttribute('action');
  1.8610 +    },
  1.8611 +    set action(action){
  1.8612 +        this.setAttribute('action', action);
  1.8613 +    },
  1.8614 +
  1.8615 +    get enctype() {
  1.8616 +        return this.getAttribute('enctype');
  1.8617 +    },
  1.8618 +    set enctype(enctype) {
  1.8619 +        this.setAttribute('enctype', enctype);
  1.8620 +    },
  1.8621 +    get method() {
  1.8622 +        return this.getAttribute('method');
  1.8623 +    },
  1.8624 +    set method(method) {
  1.8625 +        this.setAttribute('method', method);
  1.8626 +    },
  1.8627 +    get name() {
  1.8628 +        return this.getAttribute("name");
  1.8629 +    },
  1.8630 +    set name(val) {
  1.8631 +        return this.setAttribute("name",val);
  1.8632 +    },
  1.8633 +    get target() {
  1.8634 +        return this.getAttribute("target");
  1.8635 +    },
  1.8636 +    set target(val) {
  1.8637 +        return this.setAttribute("target",val);
  1.8638 +    },
  1.8639 +
  1.8640 +    /**
  1.8641 +     * "Named Elements"
  1.8642 +     *
  1.8643 +     */
  1.8644 +    /**
  1.8645 +     * returns HTMLFormControlsCollection
  1.8646 +     * http://dev.w3.org/html5/spec/Overview.html#dom-form-elements
  1.8647 +     *
  1.8648 +     * button fieldset input keygen object output select textarea
  1.8649 +     */
  1.8650 +    get elements() {
  1.8651 +        var nodes = this.getElementsByTagName('*');
  1.8652 +        var alist = [];
  1.8653 +        var i, tmp;
  1.8654 +        for (i = 0; i < nodes.length; ++i) {
  1.8655 +            nodename = nodes[i].nodeName;
  1.8656 +            // would like to replace switch with something else
  1.8657 +            //  since it's redundant with the SetAttribute callbacks
  1.8658 +            switch (nodes[i].nodeName) {
  1.8659 +            case 'BUTTON':
  1.8660 +            case 'FIELDSET':
  1.8661 +            case 'INPUT':
  1.8662 +            case 'KEYGEN':
  1.8663 +            case 'OBJECT':
  1.8664 +            case 'OUTPUT':
  1.8665 +            case 'SELECT':
  1.8666 +            case 'TEXTAREA':
  1.8667 +                alist.push(nodes[i]);
  1.8668 +                this[i] = nodes[i];
  1.8669 +                tmp = nodes[i].name;
  1.8670 +                if (tmp) {
  1.8671 +                    this[tmp] = nodes[i];
  1.8672 +                }
  1.8673 +                tmp = nodes[i].id;
  1.8674 +                if (tmp) {
  1.8675 +                    this[tmp] = nodes[i];
  1.8676 +                }
  1.8677 +            }
  1.8678 +        }
  1.8679 +        return new HTMLCollection(alist);
  1.8680 +    },
  1.8681 +    _updateElements: function() {
  1.8682 +        this.elements;
  1.8683 +    },
  1.8684 +    get length() {
  1.8685 +        return this.elements.length;
  1.8686 +    },
  1.8687 +    item: function(idx) {
  1.8688 +        return this.elements[idx];
  1.8689 +    },
  1.8690 +    namedItem: function(aname) {
  1.8691 +        return this.elements.namedItem(aname);
  1.8692 +    },
  1.8693 +    toString: function() {
  1.8694 +        return '[object HTMLFormElement]';
  1.8695 +    },
  1.8696 +    submit: function() {
  1.8697 +        //TODO: this needs to perform the form inputs serialization
  1.8698 +        //      and submission
  1.8699 +        //  DONE: see xhr/form.js
  1.8700 +        var event = __submit__(this);
  1.8701 +
  1.8702 +    },
  1.8703 +    reset: function() {
  1.8704 +        //TODO: this needs to reset all values specified in the form
  1.8705 +        //      to those which where set as defaults
  1.8706 +        __reset__(this);
  1.8707 +
  1.8708 +    },
  1.8709 +    onsubmit: HTMLEvents.prototype.onsubmit,
  1.8710 +    onreset: HTMLEvents.prototype.onreset
  1.8711 +});
  1.8712 +
  1.8713 +/**
  1.8714 + * HTMLFrameElement - DOM Level 2
  1.8715 + */
  1.8716 +HTMLFrameElement = function(ownerDocument) {
  1.8717 +    HTMLElement.apply(this, arguments);
  1.8718 +    // this is normally a getter but we need to be
  1.8719 +    // able to set it to correctly emulate behavior
  1.8720 +    this.contentDocument = null;
  1.8721 +    this.contentWindow = null;
  1.8722 +};
  1.8723 +HTMLFrameElement.prototype = new HTMLElement();
  1.8724 +__extend__(HTMLFrameElement.prototype, {
  1.8725 +
  1.8726 +    get frameBorder(){
  1.8727 +        return this.getAttribute('border')||"";
  1.8728 +    },
  1.8729 +    set frameBorder(value){
  1.8730 +        this.setAttribute('border', value);
  1.8731 +    },
  1.8732 +    get longDesc(){
  1.8733 +        return this.getAttribute('longdesc')||"";
  1.8734 +    },
  1.8735 +    set longDesc(value){
  1.8736 +        this.setAttribute('longdesc', value);
  1.8737 +    },
  1.8738 +    get marginHeight(){
  1.8739 +        return this.getAttribute('marginheight')||"";
  1.8740 +    },
  1.8741 +    set marginHeight(value){
  1.8742 +        this.setAttribute('marginheight', value);
  1.8743 +    },
  1.8744 +    get marginWidth(){
  1.8745 +        return this.getAttribute('marginwidth')||"";
  1.8746 +    },
  1.8747 +    set marginWidth(value){
  1.8748 +        this.setAttribute('marginwidth', value);
  1.8749 +    },
  1.8750 +    get name(){
  1.8751 +        return this.getAttribute('name')||"";
  1.8752 +    },
  1.8753 +    set name(value){
  1.8754 +        this.setAttribute('name', value);
  1.8755 +    },
  1.8756 +    get noResize(){
  1.8757 +        return this.getAttribute('noresize')||false;
  1.8758 +    },
  1.8759 +    set noResize(value){
  1.8760 +        this.setAttribute('noresize', value);
  1.8761 +    },
  1.8762 +    get scrolling(){
  1.8763 +        return this.getAttribute('scrolling')||"";
  1.8764 +    },
  1.8765 +    set scrolling(value){
  1.8766 +        this.setAttribute('scrolling', value);
  1.8767 +    },
  1.8768 +    get src(){
  1.8769 +        return this.getAttribute('src')||"";
  1.8770 +    },
  1.8771 +    set src(value){
  1.8772 +        this.setAttribute('src', value);
  1.8773 +    },
  1.8774 +    toString: function(){
  1.8775 +        return '[object HTMLFrameElement]';
  1.8776 +    },
  1.8777 +    onload: HTMLEvents.prototype.onload
  1.8778 +});
  1.8779 +
  1.8780 +/**
  1.8781 + * HTMLFrameSetElement - DOM Level 2
  1.8782 + *
  1.8783 + * HTML5: 12.3.3 Frames
  1.8784 + * http://dev.w3.org/html5/spec/Overview.html#frameset
  1.8785 + */
  1.8786 +HTMLFrameSetElement = function(ownerDocument) {
  1.8787 +    HTMLElement.apply(this, arguments);
  1.8788 +};
  1.8789 +HTMLFrameSetElement.prototype = new HTMLElement();
  1.8790 +__extend__(HTMLFrameSetElement.prototype, {
  1.8791 +    get cols(){
  1.8792 +        return this.getAttribute('cols');
  1.8793 +    },
  1.8794 +    set cols(value){
  1.8795 +        this.setAttribute('cols', value);
  1.8796 +    },
  1.8797 +    get rows(){
  1.8798 +        return this.getAttribute('rows');
  1.8799 +    },
  1.8800 +    set rows(value){
  1.8801 +        this.setAttribute('rows', value);
  1.8802 +    },
  1.8803 +    toString: function() {
  1.8804 +        return '[object HTMLFrameSetElement]';
  1.8805 +    }
  1.8806 +});
  1.8807 +
  1.8808 +/*
  1.8809 + * HTMLHeadingElement
  1.8810 + * HTML5: 4.4.6 The h1, h2, h3, h4, h5, and h6 elements
  1.8811 + * http://dev.w3.org/html5/spec/Overview.html#the-h1-h2-h3-h4-h5-and-h6-elements
  1.8812 + */
  1.8813 +HTMLHeadingElement = function(ownerDocument) {
  1.8814 +    HTMLElement.apply(this, arguments);
  1.8815 +};
  1.8816 +
  1.8817 +HTMLHeadingElement.prototype = new HTMLElement();
  1.8818 +__extend__(HTMLHeadingElement.prototype, {
  1.8819 +    toString: function() {
  1.8820 +        return '[object HTMLHeadingElement]';
  1.8821 +    }
  1.8822 +});
  1.8823 +
  1.8824 +/**
  1.8825 + * HTMLHeadElement - DOM Level 2
  1.8826 + *
  1.8827 + * HTML5: 4.2.1 The head element
  1.8828 + * http://dev.w3.org/html5/spec/Overview.html#the-head-element-0
  1.8829 + */
  1.8830 +HTMLHeadElement = function(ownerDocument) {
  1.8831 +    HTMLElement.apply(this, arguments);
  1.8832 +};
  1.8833 +HTMLHeadElement.prototype = new HTMLElement();
  1.8834 +__extend__(HTMLHeadElement.prototype, {
  1.8835 +    get profile(){
  1.8836 +        return this.getAttribute('profile');
  1.8837 +    },
  1.8838 +    set profile(value){
  1.8839 +        this.setAttribute('profile', value);
  1.8840 +    },
  1.8841 +    //we override this so we can apply browser behavior specific to head children
  1.8842 +    //like loading scripts
  1.8843 +    appendChild : function(newChild) {
  1.8844 +        newChild = HTMLElement.prototype.appendChild.apply(this,[newChild]);
  1.8845 +        //TODO: evaluate scripts which are appended to the head
  1.8846 +        //__evalScript__(newChild);
  1.8847 +        return newChild;
  1.8848 +    },
  1.8849 +    insertBefore : function(newChild, refChild) {
  1.8850 +        newChild = HTMLElement.prototype.insertBefore.apply(this,[newChild]);
  1.8851 +        //TODO: evaluate scripts which are appended to the head
  1.8852 +        //__evalScript__(newChild);
  1.8853 +        return newChild;
  1.8854 +    },
  1.8855 +    toString: function(){
  1.8856 +        return '[object HTMLHeadElement]';
  1.8857 +    }
  1.8858 +});
  1.8859 +
  1.8860 +
  1.8861 +/*
  1.8862 + * HTMLHRElement
  1.8863 + * HTML5: 4.5.2 The hr Element
  1.8864 + * http://dev.w3.org/html5/spec/Overview.html#the-hr-element
  1.8865 + */
  1.8866 +HTMLHRElement = function(ownerDocument) {
  1.8867 +    HTMLElement.apply(this, arguments);
  1.8868 +};
  1.8869 +
  1.8870 +HTMLHRElement.prototype = new HTMLElement();
  1.8871 +__extend__(HTMLHRElement.prototype, {
  1.8872 +
  1.8873 +    // no additional properties or elements
  1.8874 +
  1.8875 +    toString: function() {
  1.8876 +        return '[object HTMLHRElement]';
  1.8877 +    }
  1.8878 +});
  1.8879 +
  1.8880 +
  1.8881 +/*
  1.8882 + * HTMLHtmlElement
  1.8883 + * HTML5: 4.1.1 The Html Element
  1.8884 + * http://dev.w3.org/html5/spec/Overview.html#htmlhtmlelement
  1.8885 + */
  1.8886 +HTMLHtmlElement = function(ownerDocument) {
  1.8887 +    HTMLElement.apply(this, arguments);
  1.8888 +};
  1.8889 +
  1.8890 +HTMLHtmlElement.prototype = new HTMLElement();
  1.8891 +__extend__(HTMLHtmlElement.prototype, {
  1.8892 +
  1.8893 +    // no additional properties or elements
  1.8894 +
  1.8895 +    toString: function() {
  1.8896 +        return '[object HTMLHtmlElement]';
  1.8897 +    }
  1.8898 +});
  1.8899 +
  1.8900 +
  1.8901 +/*
  1.8902 + * HTMLIFrameElement - DOM Level 2
  1.8903 + *
  1.8904 + * HTML5: 4.8.3 The iframe element
  1.8905 + * http://dev.w3.org/html5/spec/Overview.html#the-iframe-element
  1.8906 + */
  1.8907 +HTMLIFrameElement = function(ownerDocument) {
  1.8908 +    HTMLFrameElement.apply(this, arguments);
  1.8909 +};
  1.8910 +HTMLIFrameElement.prototype = new HTMLFrameElement();
  1.8911 +__extend__(HTMLIFrameElement.prototype, {
  1.8912 +    get height() {
  1.8913 +        return this.getAttribute("height") || "";
  1.8914 +    },
  1.8915 +    set height(val) {
  1.8916 +        return this.setAttribute("height",val);
  1.8917 +    },
  1.8918 +    get width() {
  1.8919 +        return this.getAttribute("width") || "";
  1.8920 +    },
  1.8921 +    set width(val) {
  1.8922 +        return this.setAttribute("width",val);
  1.8923 +    },
  1.8924 +    toString: function(){
  1.8925 +        return '[object HTMLIFrameElement]';
  1.8926 +    }
  1.8927 +});
  1.8928 +
  1.8929 +/**
  1.8930 + * HTMLImageElement and Image
  1.8931 + */
  1.8932 +
  1.8933 +
  1.8934 +HTMLImageElement = function(ownerDocument) {
  1.8935 +    HTMLElement.apply(this, arguments);
  1.8936 +};
  1.8937 +HTMLImageElement.prototype = new HTMLElement();
  1.8938 +__extend__(HTMLImageElement.prototype, {
  1.8939 +    get alt(){
  1.8940 +        return this.getAttribute('alt');
  1.8941 +    },
  1.8942 +    set alt(value){
  1.8943 +        this.setAttribute('alt', value);
  1.8944 +    },
  1.8945 +    get height(){
  1.8946 +        return parseInt(this.getAttribute('height'), 10) || 0;
  1.8947 +    },
  1.8948 +    set height(value){
  1.8949 +        this.setAttribute('height', value);
  1.8950 +    },
  1.8951 +    get isMap(){
  1.8952 +        return this.hasAttribute('map');
  1.8953 +    },
  1.8954 +    set useMap(value){
  1.8955 +        this.setAttribute('map', value);
  1.8956 +    },
  1.8957 +    get longDesc(){
  1.8958 +        return this.getAttribute('longdesc');
  1.8959 +    },
  1.8960 +    set longDesc(value){
  1.8961 +        this.setAttribute('longdesc', value);
  1.8962 +    },
  1.8963 +    get name(){
  1.8964 +        return this.getAttribute('name');
  1.8965 +    },
  1.8966 +    set name(value){
  1.8967 +        this.setAttribute('name', value);
  1.8968 +    },
  1.8969 +    get src(){
  1.8970 +        return this.getAttribute('src') || '';
  1.8971 +    },
  1.8972 +    set src(value){
  1.8973 +        this.setAttribute('src', value);
  1.8974 +    },
  1.8975 +    get width(){
  1.8976 +        return parseInt(this.getAttribute('width'), 10) || 0;
  1.8977 +    },
  1.8978 +    set width(value){
  1.8979 +        this.setAttribute('width', value);
  1.8980 +    },
  1.8981 +    toString: function(){
  1.8982 +        return '[object HTMLImageElement]';
  1.8983 +    }
  1.8984 +});
  1.8985 +
  1.8986 +/*
  1.8987 + * html5 4.8.1
  1.8988 + * http://dev.w3.org/html5/spec/Overview.html#the-img-element
  1.8989 + */
  1.8990 +Image = function(width, height) {
  1.8991 +    // Not sure if "[global].document" satifies this requirement:
  1.8992 +    // "The element's document must be the active document of the
  1.8993 +    // browsing context of the Window object on which the interface
  1.8994 +    // object of the invoked constructor is found."
  1.8995 +
  1.8996 +    HTMLElement.apply(this, [document]);
  1.8997 +    // Note: firefox will throw an error if the width/height
  1.8998 +    //   is not an integer.  Safari just converts to 0 on error.
  1.8999 +    this.width = parseInt(width, 10) || 0;
  1.9000 +    this.height = parseInt(height, 10) || 0;
  1.9001 +    this.nodeName = 'IMG';
  1.9002 +};
  1.9003 +Image.prototype = new HTMLImageElement();
  1.9004 +
  1.9005 +
  1.9006 +/*
  1.9007 + * Image.src attribute events.
  1.9008 + *
  1.9009 + * Not sure where this should live... in events/img.js? in parser/img.js?
  1.9010 + * Split out to make it easy to move.
  1.9011 + */
  1.9012 +
  1.9013 +/**
  1.9014 + * HTMLImageElement && Image are a bit odd in that the 'src' attribute
  1.9015 + * is 'active' -- changing it triggers loading of the image from the
  1.9016 + * network.
  1.9017 + *
  1.9018 + * This can occur by
  1.9019 + *   - Directly setting the Image.src =
  1.9020 + *   - Using one of the Element.setAttributeXXX methods
  1.9021 + *   - Node.importNode an image
  1.9022 + *   - The initial creation and parsing of an <img> tag
  1.9023 + *
  1.9024 + * __onImageRequest__ is a function that handles eventing
  1.9025 + *  and dispatches to a user-callback.
  1.9026 + *
  1.9027 + */
  1.9028 +__loadImage__ = function(node, value) {
  1.9029 +    var event;
  1.9030 +    if (value && (!Envjs.loadImage ||
  1.9031 +                  (Envjs.loadImage &&
  1.9032 +                   Envjs.loadImage(node, value)))) {
  1.9033 +        // value has to be something (easy)
  1.9034 +        // if the user-land API doesn't exist
  1.9035 +        // Or if the API exists and it returns true, then ok:
  1.9036 +        event = document.createEvent('Events');
  1.9037 +        event.initEvent('load');
  1.9038 +    } else {
  1.9039 +        // oops
  1.9040 +        event = document.createEvent('Events');
  1.9041 +        event.initEvent('error');
  1.9042 +    }
  1.9043 +    node.dispatchEvent(event, false);
  1.9044 +};
  1.9045 +
  1.9046 +__extend__(HTMLImageElement.prototype, {
  1.9047 +    onload: function(event){
  1.9048 +        __eval__(this.getAttribute('onload') || '', this);
  1.9049 +    }
  1.9050 +});
  1.9051 +
  1.9052 +
  1.9053 +/*
  1.9054 + * Image Loading
  1.9055 + *
  1.9056 + * The difference between "owner.parsing" and "owner.fragment"
  1.9057 + *
  1.9058 + * If owner.parsing === true, then during the html5 parsing then,
  1.9059 + *  __elementPopped__ is called when a compete tag (with attrs and
  1.9060 + *  children) is full parsed and added the DOM.
  1.9061 + *
  1.9062 + *   For images, __elementPopped__ is called with everything the
  1.9063 + *    tag has.  which in turn looks for a "src" attr and calls
  1.9064 + *    __loadImage__
  1.9065 + *
  1.9066 + * If owner.parser === false (or non-existant), then we are not in
  1.9067 + * a parsing step.  For images, perhaps someone directly modified
  1.9068 + * a 'src' attribute of an existing image.
  1.9069 + *
  1.9070 + * 'innerHTML' is tricky since we first create a "fake document",
  1.9071 + *  parse it, then import the right parts.  This may call
  1.9072 + *  img.setAttributeNS twice.  once during the parse and once
  1.9073 + *  during the clone of the node.  We want event to trigger on the
  1.9074 + *  later and not during th fake doco.  "owner.fragment" is set by
  1.9075 + *  the fake doco parser to indicate that events should not be
  1.9076 + *  triggered on this.
  1.9077 + *
  1.9078 + * We coud make 'owner.parser' == [ 'none', 'full', 'fragment']
  1.9079 + * and just use one variable That was not done since the patch is
  1.9080 + * quite large as is.
  1.9081 + *
  1.9082 + * This same problem occurs with scripts.  innerHTML oddly does
  1.9083 + * not eval any <script> tags inside.
  1.9084 + */
  1.9085 +HTMLElement.registerSetAttribute('IMG', 'src', function(node, value) {
  1.9086 +    var owner = node.ownerDocument;
  1.9087 +    if (!owner.parsing && !owner.fragment) {
  1.9088 +        __loadImage__(node, value);
  1.9089 +    }
  1.9090 +});
  1.9091 +/**
  1.9092 + * HTMLInputElement
  1.9093 + *
  1.9094 + * HTML5: 4.10.5 The input element
  1.9095 + * http://dev.w3.org/html5/spec/Overview.html#the-input-element
  1.9096 + */
  1.9097 +HTMLInputElement = function(ownerDocument) {
  1.9098 +    HTMLInputAreaCommon.apply(this, arguments);
  1.9099 +    this._dirty = false;
  1.9100 +    this._checked = null;
  1.9101 +    this._value = null;
  1.9102 +};
  1.9103 +HTMLInputElement.prototype = new HTMLInputAreaCommon();
  1.9104 +__extend__(HTMLInputElement.prototype, {
  1.9105 +    get alt(){
  1.9106 +        return this.getAttribute('alt') || '';
  1.9107 +    },
  1.9108 +    set alt(value){
  1.9109 +        this.setAttribute('alt', value);
  1.9110 +    },
  1.9111 +
  1.9112 +    /**
  1.9113 +     * 'checked' returns state, NOT the value of the attribute
  1.9114 +     */
  1.9115 +    get checked(){
  1.9116 +        if (this._checked === null) {
  1.9117 +            this._checked = this.defaultChecked;
  1.9118 +        }
  1.9119 +        return this._checked;
  1.9120 +    },
  1.9121 +    set checked(value){
  1.9122 +        // force to boolean value
  1.9123 +        this._checked = (value) ? true : false;
  1.9124 +    },
  1.9125 +
  1.9126 +    /**
  1.9127 +     * 'defaultChecked' actually reflects if the 'checked' attribute
  1.9128 +     * is present or not
  1.9129 +     */
  1.9130 +    get defaultChecked(){
  1.9131 +        return this.hasAttribute('checked');
  1.9132 +    },
  1.9133 +    set defaultChecked(val){
  1.9134 +        if (val) {
  1.9135 +            this.setAttribute('checked', '');
  1.9136 +        } else {
  1.9137 +            if (this.defaultChecked) {
  1.9138 +                this.removeAttribute('checked');
  1.9139 +            }
  1.9140 +        }
  1.9141 +    },
  1.9142 +    get defaultValue() {
  1.9143 +        return this.getAttribute('value') || '';
  1.9144 +    },
  1.9145 +    set defaultValue(value) {
  1.9146 +        this._dirty = true;
  1.9147 +        this.setAttribute('value', value);
  1.9148 +    },
  1.9149 +    get value() {
  1.9150 +        return (this._value === null) ? this.defaultValue : this._value;
  1.9151 +    },
  1.9152 +    set value(newvalue) {
  1.9153 +        this._value = newvalue;
  1.9154 +    },
  1.9155 +    /**
  1.9156 +     * Height is a string
  1.9157 +     */
  1.9158 +    get height(){
  1.9159 +        // spec says it is a string
  1.9160 +        return this.getAttribute('height') || '';
  1.9161 +    },
  1.9162 +    set height(value){
  1.9163 +        this.setAttribute('height',value);
  1.9164 +    },
  1.9165 +
  1.9166 +    /**
  1.9167 +     * MaxLength is a number
  1.9168 +     */
  1.9169 +    get maxLength(){
  1.9170 +        return Number(this.getAttribute('maxlength')||'-1');
  1.9171 +    },
  1.9172 +    set maxLength(value){
  1.9173 +        this.setAttribute('maxlength', value);
  1.9174 +    },
  1.9175 +
  1.9176 +    /**
  1.9177 +     * Src is a URL string
  1.9178 +     */
  1.9179 +    get src(){
  1.9180 +        return this.getAttribute('src') || '';
  1.9181 +    },
  1.9182 +    set src(value){
  1.9183 +        // TODO: make absolute any relative URLS
  1.9184 +        this.setAttribute('src', value);
  1.9185 +    },
  1.9186 +
  1.9187 +    get type() {
  1.9188 +        return this.getAttribute('type') || 'text';
  1.9189 +    },
  1.9190 +    set type(value) {
  1.9191 +        this.setAttribute('type', value);
  1.9192 +    },
  1.9193 +
  1.9194 +    get useMap(){
  1.9195 +        return this.getAttribute('map') || '';
  1.9196 +    },
  1.9197 +
  1.9198 +    /**
  1.9199 +     * Width: spec says it is a string
  1.9200 +     */
  1.9201 +    get width(){
  1.9202 +        return this.getAttribute('width') || '';
  1.9203 +    },
  1.9204 +    set width(value){
  1.9205 +        this.setAttribute('width',value);
  1.9206 +    },
  1.9207 +    click:function(){
  1.9208 +        __click__(this);
  1.9209 +    },
  1.9210 +    toString: function() {
  1.9211 +        return '[object HTMLInputElement]';
  1.9212 +    }
  1.9213 +});
  1.9214 +
  1.9215 +//http://dev.w3.org/html5/spec/Overview.html#dom-input-value
  1.9216 +// if someone directly modifies the value attribute, then the input's value
  1.9217 +// also directly changes.
  1.9218 +HTMLElement.registerSetAttribute('INPUT', 'value', function(node, value) {
  1.9219 +    if (!node._dirty) {
  1.9220 +        node._value = value;
  1.9221 +        node._dirty = true;
  1.9222 +    }
  1.9223 +});
  1.9224 +
  1.9225 +/*
  1.9226 + *The checked content attribute is a boolean attribute that gives the
  1.9227 + *default checkedness of the input element. When the checked content
  1.9228 + *attribute is added, if the control does not have dirty checkedness,
  1.9229 + *the user agent must set the checkedness of the element to true; when
  1.9230 + *the checked content attribute is removed, if the control does not
  1.9231 + *have dirty checkedness, the user agent must set the checkedness of
  1.9232 + *the element to false.
  1.9233 + */
  1.9234 +// Named Element Support
  1.9235 +HTMLElement.registerSetAttribute('INPUT', 'name',
  1.9236 +                                 __updateFormForNamedElement__);
  1.9237 +
  1.9238 +/**
  1.9239 + * HTMLLabelElement - DOM Level 2
  1.9240 + * HTML5 4.10.4 The label element
  1.9241 + * http://dev.w3.org/html5/spec/Overview.html#the-label-element
  1.9242 + */
  1.9243 +HTMLLabelElement = function(ownerDocument) {
  1.9244 +    HTMLInputCommon.apply(this, arguments);
  1.9245 +};
  1.9246 +HTMLLabelElement.prototype = new HTMLInputCommon();
  1.9247 +__extend__(HTMLLabelElement.prototype, inputElements_dataProperties);
  1.9248 +__extend__(HTMLLabelElement.prototype, {
  1.9249 +    get htmlFor() {
  1.9250 +        return this.getAttribute('for');
  1.9251 +    },
  1.9252 +    set htmlFor(value) {
  1.9253 +        this.setAttribute('for',value);
  1.9254 +    },
  1.9255 +    get dataFormatAs() {
  1.9256 +        return this.getAttribute('dataFormatAs');
  1.9257 +    },
  1.9258 +    set dataFormatAs(value) {
  1.9259 +        this.setAttribute('dataFormatAs',value);
  1.9260 +    },
  1.9261 +    toString: function() {
  1.9262 +        return '[object HTMLLabelElement]';
  1.9263 +    }
  1.9264 +});
  1.9265 +
  1.9266 +/*
  1.9267 + * HTMLLIElement
  1.9268 + * HTML5: 4.5.8 The li Element
  1.9269 + * http://dev.w3.org/html5/spec/Overview.html#the-li-element
  1.9270 + */
  1.9271 +HTMLLIElement = function(ownerDocument) {
  1.9272 +    HTMLElement.apply(this, arguments);
  1.9273 +};
  1.9274 +
  1.9275 +HTMLLIElement.prototype = new HTMLElement();
  1.9276 +__extend__(HTMLLIElement.prototype, {
  1.9277 +
  1.9278 +    // TODO: attribute long value;
  1.9279 +
  1.9280 +    toString: function() {
  1.9281 +        return '[object HTMLLIElement]';
  1.9282 +    }
  1.9283 +});
  1.9284 +
  1.9285 +
  1.9286 +/*
  1.9287 + * HTMLLinkElement - DOM Level 2
  1.9288 + *
  1.9289 + * HTML5: 4.8.12 The map element
  1.9290 + * http://dev.w3.org/html5/spec/Overview.html#the-map-element
  1.9291 + */
  1.9292 +HTMLLinkElement = function(ownerDocument) {
  1.9293 +    HTMLElement.apply(this, arguments);
  1.9294 +};
  1.9295 +HTMLLinkElement.prototype = new HTMLElement();
  1.9296 +__extend__(HTMLLinkElement.prototype, {
  1.9297 +    get disabled(){
  1.9298 +        return this.getAttribute('disabled');
  1.9299 +    },
  1.9300 +    set disabled(value){
  1.9301 +        this.setAttribute('disabled',value);
  1.9302 +    },
  1.9303 +    get charset(){
  1.9304 +        return this.getAttribute('charset');
  1.9305 +    },
  1.9306 +    set charset(value){
  1.9307 +        this.setAttribute('charset',value);
  1.9308 +    },
  1.9309 +    get href(){
  1.9310 +        return this.getAttribute('href');
  1.9311 +    },
  1.9312 +    set href(value){
  1.9313 +        this.setAttribute('href',value);
  1.9314 +    },
  1.9315 +    get hreflang(){
  1.9316 +        return this.getAttribute('hreflang');
  1.9317 +    },
  1.9318 +    set hreflang(value){
  1.9319 +        this.setAttribute('hreflang',value);
  1.9320 +    },
  1.9321 +    get media(){
  1.9322 +        return this.getAttribute('media');
  1.9323 +    },
  1.9324 +    set media(value){
  1.9325 +        this.setAttribute('media',value);
  1.9326 +    },
  1.9327 +    get rel(){
  1.9328 +        return this.getAttribute('rel');
  1.9329 +    },
  1.9330 +    set rel(value){
  1.9331 +        this.setAttribute('rel',value);
  1.9332 +    },
  1.9333 +    get rev(){
  1.9334 +        return this.getAttribute('rev');
  1.9335 +    },
  1.9336 +    set rev(value){
  1.9337 +        this.setAttribute('rev',value);
  1.9338 +    },
  1.9339 +    get target(){
  1.9340 +        return this.getAttribute('target');
  1.9341 +    },
  1.9342 +    set target(value){
  1.9343 +        this.setAttribute('target',value);
  1.9344 +    },
  1.9345 +    get type(){
  1.9346 +        return this.getAttribute('type');
  1.9347 +    },
  1.9348 +    set type(value){
  1.9349 +        this.setAttribute('type',value);
  1.9350 +    },
  1.9351 +    toString: function() {
  1.9352 +        return '[object HTMLLinkElement]';
  1.9353 +    }
  1.9354 +});
  1.9355 +
  1.9356 +__loadLink__ = function(node, value) {
  1.9357 +    var event;
  1.9358 +    var owner = node.ownerDocument;
  1.9359 +
  1.9360 +    if (owner.fragment) {
  1.9361 +        /**
  1.9362 +         * if we are in an innerHTML fragment parsing step
  1.9363 +         * then ignore.  It will be handled once the fragment is
  1.9364 +         * added to the real doco
  1.9365 +         */
  1.9366 +        return;
  1.9367 +    }
  1.9368 +
  1.9369 +    if (node.parentNode === null) {
  1.9370 +        /*
  1.9371 +         * if a <link> is parentless (normally by create a new link
  1.9372 +         * via document.createElement('link'), then do *not* fire an
  1.9373 +         * event, even if it has a valid 'href' attribute.
  1.9374 +         */
  1.9375 +        return;
  1.9376 +    }
  1.9377 +    if (value != '' && (!Envjs.loadLink ||
  1.9378 +                        (Envjs.loadLink &&
  1.9379 +                         Envjs.loadLink(node, value)))) {
  1.9380 +        // value has to be something (easy)
  1.9381 +        // if the user-land API doesn't exist
  1.9382 +        // Or if the API exists and it returns true, then ok:
  1.9383 +        event = document.createEvent('Events');
  1.9384 +        event.initEvent('load');
  1.9385 +    } else {
  1.9386 +        // oops
  1.9387 +        event = document.createEvent('Events');
  1.9388 +        event.initEvent('error');
  1.9389 +    }
  1.9390 +    node.dispatchEvent(event, false);
  1.9391 +};
  1.9392 +
  1.9393 +
  1.9394 +HTMLElement.registerSetAttribute('LINK', 'href', function(node, value) {
  1.9395 +    __loadLink__(node, value);
  1.9396 +});
  1.9397 +
  1.9398 +/**
  1.9399 + * Event stuff, not sure where it goes
  1.9400 + */
  1.9401 +__extend__(HTMLLinkElement.prototype, {
  1.9402 +    onload: function(event){
  1.9403 +        __eval__(this.getAttribute('onload')||'', this);
  1.9404 +    },
  1.9405 +});
  1.9406 +
  1.9407 +/**
  1.9408 + * HTMLMapElement
  1.9409 + *
  1.9410 + * 4.8.12 The map element
  1.9411 + * http://dev.w3.org/html5/spec/Overview.html#the-map-element
  1.9412 + */
  1.9413 +HTMLMapElement = function(ownerDocument) {
  1.9414 +    HTMLElement.apply(this, arguments);
  1.9415 +};
  1.9416 +HTMLMapElement.prototype = new HTMLElement();
  1.9417 +__extend__(HTMLMapElement.prototype, {
  1.9418 +    get areas(){
  1.9419 +        return this.getElementsByTagName('area');
  1.9420 +    },
  1.9421 +    get name(){
  1.9422 +        return this.getAttribute('name') || '';
  1.9423 +    },
  1.9424 +    set name(value){
  1.9425 +        this.setAttribute('name',value);
  1.9426 +    },
  1.9427 +    toString: function() {
  1.9428 +        return '[object HTMLMapElement]';
  1.9429 +    }
  1.9430 +});
  1.9431 +
  1.9432 +/**
  1.9433 + * HTMLMetaElement - DOM Level 2
  1.9434 + * HTML5: 4.2.5 The meta element
  1.9435 + * http://dev.w3.org/html5/spec/Overview.html#meta
  1.9436 + */
  1.9437 +HTMLMetaElement = function(ownerDocument) {
  1.9438 +    HTMLElement.apply(this, arguments);
  1.9439 +};
  1.9440 +HTMLMetaElement.prototype = new HTMLElement();
  1.9441 +__extend__(HTMLMetaElement.prototype, {
  1.9442 +    get content() {
  1.9443 +        return this.getAttribute('content') || '';
  1.9444 +    },
  1.9445 +    set content(value){
  1.9446 +        this.setAttribute('content',value);
  1.9447 +    },
  1.9448 +    get httpEquiv(){
  1.9449 +        return this.getAttribute('http-equiv') || '';
  1.9450 +    },
  1.9451 +    set httpEquiv(value){
  1.9452 +        this.setAttribute('http-equiv',value);
  1.9453 +    },
  1.9454 +    get name(){
  1.9455 +        return this.getAttribute('name') || '';
  1.9456 +    },
  1.9457 +    set name(value){
  1.9458 +        this.setAttribute('name',value);
  1.9459 +    },
  1.9460 +    get scheme(){
  1.9461 +        return this.getAttribute('scheme');
  1.9462 +    },
  1.9463 +    set scheme(value){
  1.9464 +        this.setAttribute('scheme',value);
  1.9465 +    },
  1.9466 +    toString: function() {
  1.9467 +        return '[object HTMLMetaElement]';
  1.9468 +    }
  1.9469 +});
  1.9470 +
  1.9471 +
  1.9472 +/**
  1.9473 + * HTMLObjectElement - DOM Level 2
  1.9474 + * HTML5: 4.8.5 The object element
  1.9475 + * http://dev.w3.org/html5/spec/Overview.html#the-object-element
  1.9476 + */
  1.9477 +HTMLObjectElement = function(ownerDocument) {
  1.9478 +    HTMLElement.apply(this, arguments);
  1.9479 +};
  1.9480 +HTMLObjectElement.prototype = new HTMLElement();
  1.9481 +__extend__(HTMLObjectElement.prototype, {
  1.9482 +    get code(){
  1.9483 +        return this.getAttribute('code');
  1.9484 +    },
  1.9485 +    set code(value){
  1.9486 +        this.setAttribute('code',value);
  1.9487 +    },
  1.9488 +    get archive(){
  1.9489 +        return this.getAttribute('archive');
  1.9490 +    },
  1.9491 +    set archive(value){
  1.9492 +        this.setAttribute('archive',value);
  1.9493 +    },
  1.9494 +    get codeBase(){
  1.9495 +        return this.getAttribute('codebase');
  1.9496 +    },
  1.9497 +    set codeBase(value){
  1.9498 +        this.setAttribute('codebase',value);
  1.9499 +    },
  1.9500 +    get codeType(){
  1.9501 +        return this.getAttribute('codetype');
  1.9502 +    },
  1.9503 +    set codeType(value){
  1.9504 +        this.setAttribute('codetype',value);
  1.9505 +    },
  1.9506 +    get data(){
  1.9507 +        return this.getAttribute('data');
  1.9508 +    },
  1.9509 +    set data(value){
  1.9510 +        this.setAttribute('data',value);
  1.9511 +    },
  1.9512 +    get declare(){
  1.9513 +        return this.getAttribute('declare');
  1.9514 +    },
  1.9515 +    set declare(value){
  1.9516 +        this.setAttribute('declare',value);
  1.9517 +    },
  1.9518 +    get height(){
  1.9519 +        return this.getAttribute('height');
  1.9520 +    },
  1.9521 +    set height(value){
  1.9522 +        this.setAttribute('height',value);
  1.9523 +    },
  1.9524 +    get standby(){
  1.9525 +        return this.getAttribute('standby');
  1.9526 +    },
  1.9527 +    set standby(value){
  1.9528 +        this.setAttribute('standby',value);
  1.9529 +    },
  1.9530 +    /*get tabIndex(){
  1.9531 +      return this.getAttribute('tabindex');
  1.9532 +      },
  1.9533 +      set tabIndex(value){
  1.9534 +      this.setAttribute('tabindex',value);
  1.9535 +      },*/
  1.9536 +    get type(){
  1.9537 +        return this.getAttribute('type');
  1.9538 +    },
  1.9539 +    set type(value){
  1.9540 +        this.setAttribute('type',value);
  1.9541 +    },
  1.9542 +    get useMap(){
  1.9543 +        return this.getAttribute('usemap');
  1.9544 +    },
  1.9545 +    set useMap(value){
  1.9546 +        this.setAttribute('usemap',value);
  1.9547 +    },
  1.9548 +    get width(){
  1.9549 +        return this.getAttribute('width');
  1.9550 +    },
  1.9551 +    set width(value){
  1.9552 +        this.setAttribute('width',value);
  1.9553 +    },
  1.9554 +    get contentDocument(){
  1.9555 +        return this.ownerDocument;
  1.9556 +    },
  1.9557 +    toString: function() {
  1.9558 +        return '[object HTMLObjectElement]';
  1.9559 +    }
  1.9560 +});
  1.9561 +
  1.9562 +// Named Element Support
  1.9563 +HTMLElement.registerSetAttribute('OBJECT', 'name',
  1.9564 +                                 __updateFormForNamedElement__);
  1.9565 +
  1.9566 +/*
  1.9567 + * HTMLOListElement
  1.9568 + * HTML5: 4.5.6 The ol Element
  1.9569 + * http://dev.w3.org/html5/spec/Overview.html#the-ol-element
  1.9570 + */
  1.9571 +HTMLOListElement = function(ownerDocument) {
  1.9572 +    HTMLElement.apply(this, arguments);
  1.9573 +};
  1.9574 +
  1.9575 +HTMLOListElement.prototype = new HTMLElement();
  1.9576 +__extend__(HTMLOListElement.prototype, {
  1.9577 +
  1.9578 +    // TODO: attribute boolean reversed;
  1.9579 +    // TODO:  attribute long start;
  1.9580 +
  1.9581 +    toString: function() {
  1.9582 +        return '[object HTMLOListElement]';
  1.9583 +    }
  1.9584 +});
  1.9585 +
  1.9586 +
  1.9587 +/**
  1.9588 + * HTMLOptGroupElement - DOM Level 2
  1.9589 + * HTML 5: 4.10.9 The optgroup element
  1.9590 + * http://dev.w3.org/html5/spec/Overview.html#the-optgroup-element
  1.9591 + */
  1.9592 +HTMLOptGroupElement = function(ownerDocument) {
  1.9593 +    HTMLElement.apply(this, arguments);
  1.9594 +};
  1.9595 +HTMLOptGroupElement.prototype = new HTMLElement();
  1.9596 +__extend__(HTMLOptGroupElement.prototype, {
  1.9597 +    get disabled(){
  1.9598 +        return this.getAttribute('disabled');
  1.9599 +    },
  1.9600 +    set disabled(value){
  1.9601 +        this.setAttribute('disabled',value);
  1.9602 +    },
  1.9603 +    get label(){
  1.9604 +        return this.getAttribute('label');
  1.9605 +    },
  1.9606 +    set label(value){
  1.9607 +        this.setAttribute('label',value);
  1.9608 +    },
  1.9609 +    appendChild: function(node){
  1.9610 +        var i,
  1.9611 +        length,
  1.9612 +        selected = false;
  1.9613 +        //make sure at least one is selected by default
  1.9614 +        if(node.nodeType === Node.ELEMENT_NODE && node.tagName === 'OPTION'){
  1.9615 +            length = this.childNodes.length;
  1.9616 +            for(i=0;i<length;i++){
  1.9617 +                if(this.childNodes[i].nodeType === Node.ELEMENT_NODE &&
  1.9618 +                   this.childNodes[i].tagName === 'OPTION'){
  1.9619 +                    //check if it is selected
  1.9620 +                    if(this.selected){
  1.9621 +                        selected = true;
  1.9622 +                        break;
  1.9623 +                    }
  1.9624 +                }
  1.9625 +            }
  1.9626 +            if(!selected){
  1.9627 +                node.selected = true;
  1.9628 +                this.value = node.value?node.value:'';
  1.9629 +            }
  1.9630 +        }
  1.9631 +        return HTMLElement.prototype.appendChild.apply(this, [node]);
  1.9632 +    },
  1.9633 +    toString: function() {
  1.9634 +        return '[object HTMLOptGroupElement]';
  1.9635 +    }
  1.9636 +});
  1.9637 +
  1.9638 +/**
  1.9639 + * HTMLOptionElement, Option
  1.9640 + * HTML5: 4.10.10 The option element
  1.9641 + * http://dev.w3.org/html5/spec/Overview.html#the-option-element
  1.9642 + */
  1.9643 +HTMLOptionElement = function(ownerDocument) {
  1.9644 +    HTMLInputCommon.apply(this, arguments);
  1.9645 +    this._selected = null;
  1.9646 +};
  1.9647 +HTMLOptionElement.prototype = new HTMLInputCommon();
  1.9648 +__extend__(HTMLOptionElement.prototype, {
  1.9649 +
  1.9650 +    /**
  1.9651 +     * defaultSelected actually reflects the presence of the
  1.9652 +     * 'selected' attribute.
  1.9653 +     */
  1.9654 +    get defaultSelected() {
  1.9655 +        return this.hasAttribute('selected');
  1.9656 +    },
  1.9657 +    set defaultSelected(value) {
  1.9658 +        if (value) {
  1.9659 +            this.setAttribute('selected','');
  1.9660 +        } else {
  1.9661 +            if (this.hasAttribute('selected')) {
  1.9662 +                this.removeAttribute('selected');
  1.9663 +            }
  1.9664 +        }
  1.9665 +    },
  1.9666 +
  1.9667 +    /*
  1.9668 +     * HTML5: The form IDL attribute's behavior depends on whether the
  1.9669 +     * option element is in a select element or not. If the option has
  1.9670 +     * a select element as its parent, or has a colgroup element as
  1.9671 +     * its parent and that colgroup element has a select element as
  1.9672 +     * its parent, then the form IDL attribute must return the same
  1.9673 +     * value as the form IDL attribute on that select
  1.9674 +     * element. Otherwise, it must return null.
  1.9675 +     */
  1.9676 +    _selectparent: function() {
  1.9677 +        var parent = this.parentNode;
  1.9678 +        if (!parent) {
  1.9679 +            return null;
  1.9680 +        }
  1.9681 +
  1.9682 +        if (parent.tagName === 'SELECT') {
  1.9683 +            return parent;
  1.9684 +        }
  1.9685 +        if (parent.tagName === 'COLGROUP') {
  1.9686 +            parent = parent.parentNode;
  1.9687 +            if (parent && parent.tagName === 'SELECT') {
  1.9688 +                return parent;
  1.9689 +            }
  1.9690 +        }
  1.9691 +    },
  1.9692 +    _updateoptions: function() {
  1.9693 +        var parent = this._selectparent();
  1.9694 +        if (parent) {
  1.9695 +            // has side effects and updates owner select's options
  1.9696 +            parent.options;
  1.9697 +        }
  1.9698 +    },
  1.9699 +    get form() {
  1.9700 +        var parent = this._selectparent();
  1.9701 +        return parent ? parent.form : null;
  1.9702 +    },
  1.9703 +    get index() {
  1.9704 +        var options, i;
  1.9705 +
  1.9706 +        if (! this.parentNode) {
  1.9707 +            return -1;
  1.9708 +        }
  1.9709 +        options = this.parentNode.options;
  1.9710 +        for (i=0; i < options.length; ++i) {
  1.9711 +            if (this === options[i]) {
  1.9712 +                return i;
  1.9713 +            }
  1.9714 +        }
  1.9715 +        return 0;
  1.9716 +    },
  1.9717 +    get label() {
  1.9718 +        return this.getAttribute('label');
  1.9719 +    },
  1.9720 +    set label(value) {
  1.9721 +        this.setAttribute('label', value);
  1.9722 +    },
  1.9723 +
  1.9724 +    /*
  1.9725 +     * This is not in the spec, but safari and firefox both
  1.9726 +     * use this
  1.9727 +     */
  1.9728 +    get name() {
  1.9729 +        return this.getAttribute('name');
  1.9730 +    },
  1.9731 +    set name(value) {
  1.9732 +        this.setAttribute('name', value);
  1.9733 +    },
  1.9734 +
  1.9735 +    /**
  1.9736 +     *
  1.9737 +     */
  1.9738 +    get selected() {
  1.9739 +        // if disabled, return false, no matter what
  1.9740 +        if (this.disabled) {
  1.9741 +            return false;
  1.9742 +        }
  1.9743 +        if (this._selected === null) {
  1.9744 +            return this.defaultSelected;
  1.9745 +        }
  1.9746 +
  1.9747 +        return this._selected;
  1.9748 +    },
  1.9749 +    set selected(value) {
  1.9750 +        this._selected = (value) ? true : false;
  1.9751 +    },
  1.9752 +
  1.9753 +    get text() {
  1.9754 +        var val = this.nodeValue;
  1.9755 +        return (val === null || this.value === undefined) ?
  1.9756 +            this.innerHTML :
  1.9757 +            val;
  1.9758 +    },
  1.9759 +    get value() {
  1.9760 +        var val = this.getAttribute('value');
  1.9761 +        return (val === null || val === undefined) ?
  1.9762 +            this.textContent :
  1.9763 +            val;
  1.9764 +    },
  1.9765 +    set value(value) {
  1.9766 +        this.setAttribute('value', value);
  1.9767 +    },
  1.9768 +    toString: function() {
  1.9769 +        return '[object HTMLOptionElement]';
  1.9770 +    }
  1.9771 +});
  1.9772 +
  1.9773 +Option = function(text, value, defaultSelected, selected) {
  1.9774 +
  1.9775 +    // Not sure if this is correct:
  1.9776 +    //
  1.9777 +    // The element's document must be the active document of the
  1.9778 +    // browsing context of the Window object on which the interface
  1.9779 +    // object of the invoked constructor is found.
  1.9780 +    HTMLOptionElement.apply(this, [document]);
  1.9781 +    this.nodeName = 'OPTION';
  1.9782 +
  1.9783 +    if (arguments.length >= 1) {
  1.9784 +        this.appendChild(document.createTextNode('' + text));
  1.9785 +    }
  1.9786 +    if (arguments.length >= 2) {
  1.9787 +        this.value = value;
  1.9788 +    }
  1.9789 +    if (arguments.length >= 3) {
  1.9790 +        if (defaultSelected) {
  1.9791 +            this.defaultSelected = '';
  1.9792 +        }
  1.9793 +    }
  1.9794 +    if (arguments.length >= 4) {
  1.9795 +        this.selected = (selected) ? true : false;
  1.9796 +    }
  1.9797 +};
  1.9798 +
  1.9799 +Option.prototype = new HTMLOptionElement();
  1.9800 +
  1.9801 +// Named Element Support
  1.9802 +
  1.9803 +function updater(node, value) {
  1.9804 +    node._updateoptions();
  1.9805 +}
  1.9806 +HTMLElement.registerSetAttribute('OPTION', 'name', updater);
  1.9807 +HTMLElement.registerSetAttribute('OPTION', 'id', updater);
  1.9808 +
  1.9809 +/*
  1.9810 +* HTMLParagraphElement - DOM Level 2
  1.9811 +*/
  1.9812 +HTMLParagraphElement = function(ownerDocument) {
  1.9813 +    HTMLElement.apply(this, arguments);
  1.9814 +};
  1.9815 +HTMLParagraphElement.prototype = new HTMLElement();
  1.9816 +__extend__(HTMLParagraphElement.prototype, {
  1.9817 +    toString: function(){
  1.9818 +        return '[object HTMLParagraphElement]';
  1.9819 +    }
  1.9820 +});
  1.9821 +
  1.9822 +
  1.9823 +/**
  1.9824 + * HTMLParamElement
  1.9825 + *
  1.9826 + * HTML5: 4.8.6 The param element
  1.9827 + * http://dev.w3.org/html5/spec/Overview.html#the-param-element
  1.9828 + */
  1.9829 +HTMLParamElement = function(ownerDocument) {
  1.9830 +    HTMLElement.apply(this, arguments);
  1.9831 +};
  1.9832 +HTMLParamElement.prototype = new HTMLElement();
  1.9833 +__extend__(HTMLParamElement.prototype, {
  1.9834 +    get name() {
  1.9835 +        return this.getAttribute('name') || '';
  1.9836 +    },
  1.9837 +    set name(value) {
  1.9838 +        this.setAttribute('name', value);
  1.9839 +    },
  1.9840 +    get type(){
  1.9841 +        return this.getAttribute('type');
  1.9842 +    },
  1.9843 +    set type(value){
  1.9844 +        this.setAttribute('type',value);
  1.9845 +    },
  1.9846 +    get value(){
  1.9847 +        return this.getAttribute('value');
  1.9848 +    },
  1.9849 +    set value(value){
  1.9850 +        this.setAttribute('value',value);
  1.9851 +    },
  1.9852 +    get valueType(){
  1.9853 +        return this.getAttribute('valuetype');
  1.9854 +    },
  1.9855 +    set valueType(value){
  1.9856 +        this.setAttribute('valuetype',value);
  1.9857 +    },
  1.9858 +    toString: function() {
  1.9859 +        return '[object HTMLParamElement]';
  1.9860 +    }
  1.9861 +});
  1.9862 +
  1.9863 +
  1.9864 +/**
  1.9865 + * HTMLScriptElement - DOM Level 2
  1.9866 + *
  1.9867 + * HTML5: 4.3.1 The script element
  1.9868 + * http://dev.w3.org/html5/spec/Overview.html#script
  1.9869 + */
  1.9870 +HTMLScriptElement = function(ownerDocument) {
  1.9871 +    HTMLElement.apply(this, arguments);
  1.9872 +};
  1.9873 +HTMLScriptElement.prototype = new HTMLElement();
  1.9874 +__extend__(HTMLScriptElement.prototype, {
  1.9875 +
  1.9876 +    /**
  1.9877 +     * HTML5 spec @ http://dev.w3.org/html5/spec/Overview.html#script
  1.9878 +     *
  1.9879 +     * "The IDL attribute text must return a concatenation of the
  1.9880 +     * contents of all the text nodes that are direct children of the
  1.9881 +     * script element (ignoring any other nodes such as comments or
  1.9882 +     * elements), in tree order. On setting, it must act the same way
  1.9883 +     * as the textContent IDL attribute."
  1.9884 +     *
  1.9885 +     * AND... "The term text node refers to any Text node,
  1.9886 +     * including CDATASection nodes; specifically, any Node with node
  1.9887 +     * type TEXT_NODE (3) or CDATA_SECTION_NODE (4)"
  1.9888 +     */
  1.9889 +    get text() {
  1.9890 +        var kids = this.childNodes;
  1.9891 +        var kid;
  1.9892 +        var s = '';
  1.9893 +        var imax = kids.length;
  1.9894 +        for (var i = 0; i < imax; ++i) {
  1.9895 +            kid = kids[i];
  1.9896 +            if (kid.nodeType === Node.TEXT_NODE ||
  1.9897 +                kid.nodeType === Node.CDATA_SECTION_NODE) {
  1.9898 +                s += kid.nodeValue;
  1.9899 +            }
  1.9900 +        }
  1.9901 +        return s;
  1.9902 +    },
  1.9903 +
  1.9904 +    /**
  1.9905 +     * HTML5 spec "Can be set, to replace the element's children with
  1.9906 +     * the given value."
  1.9907 +     */
  1.9908 +    set text(value) {
  1.9909 +        // this deletes all children, and make a new single text node
  1.9910 +        // with value
  1.9911 +        this.textContent = value;
  1.9912 +
  1.9913 +        /* Currently we always execute, but this isn't quite right if
  1.9914 +         * the node has *not* been inserted into the document, then it
  1.9915 +         * should *not* fire.  The more detailed answer from the spec:
  1.9916 +         *
  1.9917 +         * When a script element that is neither marked as having
  1.9918 +         * "already started" nor marked as being "parser-inserted"
  1.9919 +         * experiences one of the events listed in the following list,
  1.9920 +         * the user agent must synchronously run the script element:
  1.9921 +         *
  1.9922 +         *   * The script element gets inserted into a document.
  1.9923 +         *   * The script element is in a Document and its child nodes
  1.9924 +         *     are changed.
  1.9925 +         *   * The script element is in a Document and has a src
  1.9926 +         *     attribute set where previously the element had no such
  1.9927 +         *     attribute.
  1.9928 +         *
  1.9929 +         * And no doubt there are other cases as well.
  1.9930 +         */
  1.9931 +        Envjs.loadInlineScript(this);
  1.9932 +    },
  1.9933 +
  1.9934 +    get htmlFor(){
  1.9935 +        return this.getAttribute('for');
  1.9936 +    },
  1.9937 +    set htmlFor(value){
  1.9938 +        this.setAttribute('for',value);
  1.9939 +    },
  1.9940 +    get event(){
  1.9941 +        return this.getAttribute('event');
  1.9942 +    },
  1.9943 +    set event(value){
  1.9944 +        this.setAttribute('event',value);
  1.9945 +    },
  1.9946 +    get charset(){
  1.9947 +        return this.getAttribute('charset');
  1.9948 +    },
  1.9949 +    set charset(value){
  1.9950 +        this.setAttribute('charset',value);
  1.9951 +    },
  1.9952 +    get defer(){
  1.9953 +        return this.getAttribute('defer');
  1.9954 +    },
  1.9955 +    set defer(value){
  1.9956 +        this.setAttribute('defer',value);
  1.9957 +    },
  1.9958 +    get src(){
  1.9959 +        return this.getAttribute('src')||'';
  1.9960 +    },
  1.9961 +    set src(value){
  1.9962 +        this.setAttribute('src',value);
  1.9963 +    },
  1.9964 +    get type(){
  1.9965 +        return this.getAttribute('type')||'';
  1.9966 +    },
  1.9967 +    set type(value){
  1.9968 +        this.setAttribute('type',value);
  1.9969 +    },
  1.9970 +    onload: HTMLEvents.prototype.onload,
  1.9971 +    onerror: HTMLEvents.prototype.onerror,
  1.9972 +    toString: function() {
  1.9973 +        return '[object HTMLScriptElement]';
  1.9974 +    }
  1.9975 +});
  1.9976 +
  1.9977 +
  1.9978 +/**
  1.9979 + * HTMLSelectElement
  1.9980 + * HTML5: http://dev.w3.org/html5/spec/Overview.html#the-select-element
  1.9981 + */
  1.9982 +HTMLSelectElement = function(ownerDocument) {
  1.9983 +    HTMLTypeValueInputs.apply(this, arguments);
  1.9984 +    this._oldIndex = -1;
  1.9985 +};
  1.9986 +
  1.9987 +HTMLSelectElement.prototype = new HTMLTypeValueInputs();
  1.9988 +__extend__(HTMLSelectElement.prototype, inputElements_dataProperties);
  1.9989 +__extend__(HTMLButtonElement.prototype, inputElements_size);
  1.9990 +__extend__(HTMLSelectElement.prototype, inputElements_onchange);
  1.9991 +__extend__(HTMLSelectElement.prototype, inputElements_focusEvents);
  1.9992 +__extend__(HTMLSelectElement.prototype, {
  1.9993 +
  1.9994 +    get value() {
  1.9995 +        var index = this.selectedIndex;
  1.9996 +        return (index === -1) ? '' : this.options[index].value;
  1.9997 +    },
  1.9998 +    set value(newValue) {
  1.9999 +        var options = this.options;
 1.10000 +        var imax = options.length;
 1.10001 +        for (var i=0; i< imax; ++i) {
 1.10002 +            if (options[i].value == newValue) {
 1.10003 +                this.setAttribute('value', newValue);
 1.10004 +                this.selectedIndex = i;
 1.10005 +                return;
 1.10006 +            }
 1.10007 +        }
 1.10008 +    },
 1.10009 +    get multiple() {
 1.10010 +        return this.hasAttribute('multiple');
 1.10011 +    },
 1.10012 +    set multiple(value) {
 1.10013 +        if (value) {
 1.10014 +            this.setAttribute('multiple', '');
 1.10015 +        } else {
 1.10016 +            if (this.hasAttribute('multiple')) {
 1.10017 +                this.removeAttribute('multiple');
 1.10018 +            }
 1.10019 +        }
 1.10020 +    },
 1.10021 +    // Returns HTMLOptionsCollection
 1.10022 +    get options() {
 1.10023 +        var nodes = this.getElementsByTagName('option');
 1.10024 +        var alist = [];
 1.10025 +        var i, tmp;
 1.10026 +        for (i = 0; i < nodes.length; ++i) {
 1.10027 +            alist.push(nodes[i]);
 1.10028 +            this[i] = nodes[i];
 1.10029 +            tmp = nodes[i].name;
 1.10030 +            if (tmp) {
 1.10031 +                this[tmp] = nodes[i];
 1.10032 +            }
 1.10033 +            tmp = nodes[i].id;
 1.10034 +            if (tmp) {
 1.10035 +                this[tmp] = nodes[i];
 1.10036 +            }
 1.10037 +        }
 1.10038 +        return new HTMLCollection(alist);
 1.10039 +    },
 1.10040 +    get length() {
 1.10041 +        return this.options.length;
 1.10042 +    },
 1.10043 +    item: function(idx) {
 1.10044 +        return this.options[idx];
 1.10045 +    },
 1.10046 +    namedItem: function(aname) {
 1.10047 +        return this.options[aname];
 1.10048 +    },
 1.10049 +
 1.10050 +    get selectedIndex() {
 1.10051 +        var options = this.options;
 1.10052 +        var imax = options.length;
 1.10053 +        for (var i=0; i < imax; ++i) {
 1.10054 +            if (options[i].selected) {
 1.10055 +                //console.log('select get selectedIndex %s', i);
 1.10056 +                return i;
 1.10057 +            }
 1.10058 +        }
 1.10059 +        //console.log('select get selectedIndex %s', -1);
 1.10060 +        return -1;
 1.10061 +    },
 1.10062 +
 1.10063 +    set selectedIndex(value) {
 1.10064 +        var options = this.options;
 1.10065 +        var num = Number(value);
 1.10066 +        var imax = options.length;
 1.10067 +        for (var i = 0; i < imax; ++i) {
 1.10068 +            options[i].selected = (i === num);
 1.10069 +        }
 1.10070 +    },
 1.10071 +    get type() {
 1.10072 +        return this.multiple ? 'select-multiple' : 'select-one';
 1.10073 +    },
 1.10074 +
 1.10075 +    add: function(element, before) {
 1.10076 +        this.appendChild(element);
 1.10077 +        //__add__(this);
 1.10078 +    },
 1.10079 +    remove: function() {
 1.10080 +        __remove__(this);
 1.10081 +    },
 1.10082 +    toString: function() {
 1.10083 +        return '[object HTMLSelectElement]';
 1.10084 +    }
 1.10085 +});
 1.10086 +
 1.10087 +// Named Element Support
 1.10088 +HTMLElement.registerSetAttribute('SELECT', 'name',
 1.10089 +                                 __updateFormForNamedElement__);
 1.10090 +/**
 1.10091 + * HTML 5: 4.6.22 The span element
 1.10092 + * http://dev.w3.org/html5/spec/Overview.html#the-span-element
 1.10093 + * 
 1.10094 + */
 1.10095 +HTMLSpanElement = function(ownerDocument) {
 1.10096 +    HTMLElement.apply(this, arguments);
 1.10097 +};
 1.10098 +HTMLSpanElement.prototype = new HTMLElement();
 1.10099 +__extend__(HTMLSpanElement.prototype, {
 1.10100 +    toString: function(){
 1.10101 +        return '[object HTMLSpanElement]';
 1.10102 +    }
 1.10103 +});
 1.10104 +
 1.10105 +
 1.10106 +/**
 1.10107 + * HTMLStyleElement - DOM Level 2
 1.10108 + * HTML5 4.2.6 The style element
 1.10109 + * http://dev.w3.org/html5/spec/Overview.html#the-style-element
 1.10110 + */
 1.10111 +HTMLStyleElement = function(ownerDocument) {
 1.10112 +    HTMLElement.apply(this, arguments);
 1.10113 +};
 1.10114 +HTMLStyleElement.prototype = new HTMLElement();
 1.10115 +__extend__(HTMLStyleElement.prototype, {
 1.10116 +    get disabled(){
 1.10117 +        return this.getAttribute('disabled');
 1.10118 +    },
 1.10119 +    set disabled(value){
 1.10120 +        this.setAttribute('disabled',value);
 1.10121 +    },
 1.10122 +    get media(){
 1.10123 +        return this.getAttribute('media');
 1.10124 +    },
 1.10125 +    set media(value){
 1.10126 +        this.setAttribute('media',value);
 1.10127 +    },
 1.10128 +    get type(){
 1.10129 +        return this.getAttribute('type');
 1.10130 +    },
 1.10131 +    set type(value){
 1.10132 +        this.setAttribute('type',value);
 1.10133 +    },
 1.10134 +    toString: function() {
 1.10135 +        return '[object HTMLStyleElement]';
 1.10136 +    }
 1.10137 +});
 1.10138 +
 1.10139 +/**
 1.10140 + * HTMLTableElement - DOM Level 2
 1.10141 + * Implementation Provided by Steven Wood
 1.10142 + *
 1.10143 + * HTML5: 4.9.1 The table element
 1.10144 + * http://dev.w3.org/html5/spec/Overview.html#the-table-element
 1.10145 + */
 1.10146 +HTMLTableElement = function(ownerDocument) {
 1.10147 +    HTMLElement.apply(this, arguments);
 1.10148 +};
 1.10149 +HTMLTableElement.prototype = new HTMLElement();
 1.10150 +__extend__(HTMLTableElement.prototype, {
 1.10151 +
 1.10152 +    get tFoot() {
 1.10153 +        //tFoot returns the table footer.
 1.10154 +        return this.getElementsByTagName("tfoot")[0];
 1.10155 +    },
 1.10156 +
 1.10157 +    createTFoot : function () {
 1.10158 +        var tFoot = this.tFoot;
 1.10159 +
 1.10160 +        if (!tFoot) {
 1.10161 +            tFoot = document.createElement("tfoot");
 1.10162 +            this.appendChild(tFoot);
 1.10163 +        }
 1.10164 +
 1.10165 +        return tFoot;
 1.10166 +    },
 1.10167 +
 1.10168 +    deleteTFoot : function () {
 1.10169 +        var foot = this.tFoot;
 1.10170 +        if (foot) {
 1.10171 +            foot.parentNode.removeChild(foot);
 1.10172 +        }
 1.10173 +    },
 1.10174 +
 1.10175 +    get tHead() {
 1.10176 +        //tHead returns the table head.
 1.10177 +        return this.getElementsByTagName("thead")[0];
 1.10178 +    },
 1.10179 +
 1.10180 +    createTHead : function () {
 1.10181 +        var tHead = this.tHead;
 1.10182 +
 1.10183 +        if (!tHead) {
 1.10184 +            tHead = document.createElement("thead");
 1.10185 +            this.insertBefore(tHead, this.firstChild);
 1.10186 +        }
 1.10187 +
 1.10188 +        return tHead;
 1.10189 +    },
 1.10190 +
 1.10191 +    deleteTHead : function () {
 1.10192 +        var head = this.tHead;
 1.10193 +        if (head) {
 1.10194 +            head.parentNode.removeChild(head);
 1.10195 +        }
 1.10196 +    },
 1.10197 +
 1.10198 +    /*appendChild : function (child) {
 1.10199 +
 1.10200 +      var tagName;
 1.10201 +      if(child&&child.nodeType==Node.ELEMENT_NODE){
 1.10202 +      tagName = child.tagName.toLowerCase();
 1.10203 +      if (tagName === "tr") {
 1.10204 +      // need an implcit <tbody> to contain this...
 1.10205 +      if (!this.currentBody) {
 1.10206 +      this.currentBody = document.createElement("tbody");
 1.10207 +
 1.10208 +      Node.prototype.appendChild.apply(this, [this.currentBody]);
 1.10209 +      }
 1.10210 +
 1.10211 +      return this.currentBody.appendChild(child);
 1.10212 +
 1.10213 +      } else if (tagName === "tbody" || tagName === "tfoot" && this.currentBody) {
 1.10214 +      this.currentBody = child;
 1.10215 +      return Node.prototype.appendChild.apply(this, arguments);
 1.10216 +
 1.10217 +      } else {
 1.10218 +      return Node.prototype.appendChild.apply(this, arguments);
 1.10219 +      }
 1.10220 +      }else{
 1.10221 +      //tables can still have text node from white space
 1.10222 +      return Node.prototype.appendChild.apply(this, arguments);
 1.10223 +      }
 1.10224 +      },*/
 1.10225 +
 1.10226 +    get tBodies() {
 1.10227 +        return new HTMLCollection(this.getElementsByTagName("tbody"));
 1.10228 +
 1.10229 +    },
 1.10230 +
 1.10231 +    get rows() {
 1.10232 +        return new HTMLCollection(this.getElementsByTagName("tr"));
 1.10233 +    },
 1.10234 +
 1.10235 +    insertRow : function (idx) {
 1.10236 +        if (idx === undefined) {
 1.10237 +            throw new Error("Index omitted in call to HTMLTableElement.insertRow ");
 1.10238 +        }
 1.10239 +
 1.10240 +        var rows = this.rows,
 1.10241 +            numRows = rows.length,
 1.10242 +            node,
 1.10243 +            inserted,
 1.10244 +            lastRow;
 1.10245 +
 1.10246 +        if (idx > numRows) {
 1.10247 +            throw new Error("Index > rows.length in call to HTMLTableElement.insertRow");
 1.10248 +        }
 1.10249 +
 1.10250 +        inserted = document.createElement("tr");
 1.10251 +        // If index is -1 or equal to the number of rows,
 1.10252 +        // the row is appended as the last row. If index is omitted
 1.10253 +        // or greater than the number of rows, an error will result
 1.10254 +        if (idx === -1 || idx === numRows) {
 1.10255 +            this.appendChild(inserted);
 1.10256 +        } else {
 1.10257 +            rows[idx].parentNode.insertBefore(inserted, rows[idx]);
 1.10258 +        }
 1.10259 +
 1.10260 +        return inserted;
 1.10261 +    },
 1.10262 +
 1.10263 +    deleteRow : function (idx) {
 1.10264 +        var elem = this.rows[idx];
 1.10265 +        elem.parentNode.removeChild(elem);
 1.10266 +    },
 1.10267 +
 1.10268 +    get summary() {
 1.10269 +        return this.getAttribute("summary");
 1.10270 +    },
 1.10271 +
 1.10272 +    set summary(summary) {
 1.10273 +        this.setAttribute("summary", summary);
 1.10274 +    },
 1.10275 +
 1.10276 +    get align() {
 1.10277 +        return this.getAttribute("align");
 1.10278 +    },
 1.10279 +
 1.10280 +    set align(align) {
 1.10281 +        this.setAttribute("align", align);
 1.10282 +    },
 1.10283 +
 1.10284 +    get bgColor() {
 1.10285 +        return this.getAttribute("bgColor");
 1.10286 +    },
 1.10287 +
 1.10288 +    set bgColor(bgColor) {
 1.10289 +        return this.setAttribute("bgColor", bgColor);
 1.10290 +    },
 1.10291 +
 1.10292 +    get cellPadding() {
 1.10293 +        return this.getAttribute("cellPadding");
 1.10294 +    },
 1.10295 +
 1.10296 +    set cellPadding(cellPadding) {
 1.10297 +        return this.setAttribute("cellPadding", cellPadding);
 1.10298 +    },
 1.10299 +
 1.10300 +    get cellSpacing() {
 1.10301 +        return this.getAttribute("cellSpacing");
 1.10302 +    },
 1.10303 +
 1.10304 +    set cellSpacing(cellSpacing) {
 1.10305 +        this.setAttribute("cellSpacing", cellSpacing);
 1.10306 +    },
 1.10307 +
 1.10308 +    get frame() {
 1.10309 +        return this.getAttribute("frame");
 1.10310 +    },
 1.10311 +
 1.10312 +    set frame(frame) {
 1.10313 +        this.setAttribute("frame", frame);
 1.10314 +    },
 1.10315 +
 1.10316 +    get rules() {
 1.10317 +        return this.getAttribute("rules");
 1.10318 +    },
 1.10319 +
 1.10320 +    set rules(rules) {
 1.10321 +        this.setAttribute("rules", rules);
 1.10322 +    },
 1.10323 +
 1.10324 +    get width() {
 1.10325 +        return this.getAttribute("width");
 1.10326 +    },
 1.10327 +
 1.10328 +    set width(width) {
 1.10329 +        this.setAttribute("width", width);
 1.10330 +    },
 1.10331 +    toString: function() {
 1.10332 +        return '[object HTMLTableElement]';
 1.10333 +    }
 1.10334 +});
 1.10335 +
 1.10336 +/*
 1.10337 + * HTMLxElement - DOM Level 2
 1.10338 + * - Contributed by Steven Wood
 1.10339 + *
 1.10340 + * HTML5: 4.9.5 The tbody element
 1.10341 + * http://dev.w3.org/html5/spec/Overview.html#the-tbody-element
 1.10342 + * http://dev.w3.org/html5/spec/Overview.html#htmltablesectionelement
 1.10343 + */
 1.10344 +HTMLTableSectionElement = function(ownerDocument) {
 1.10345 +    HTMLElement.apply(this, arguments);
 1.10346 +};
 1.10347 +HTMLTableSectionElement.prototype = new HTMLElement();
 1.10348 +__extend__(HTMLTableSectionElement.prototype, {
 1.10349 +
 1.10350 +    /*appendChild : function (child) {
 1.10351 +
 1.10352 +    // disallow nesting of these elements.
 1.10353 +    if (child.tagName.match(/TBODY|TFOOT|THEAD/)) {
 1.10354 +    return this.parentNode.appendChild(child);
 1.10355 +    } else {
 1.10356 +    return Node.prototype.appendChild.apply(this, arguments);
 1.10357 +    }
 1.10358 +
 1.10359 +    },*/
 1.10360 +
 1.10361 +    get align() {
 1.10362 +        return this.getAttribute("align");
 1.10363 +    },
 1.10364 +
 1.10365 +    get ch() {
 1.10366 +        return this.getAttribute("ch");
 1.10367 +    },
 1.10368 +
 1.10369 +    set ch(ch) {
 1.10370 +        this.setAttribute("ch", ch);
 1.10371 +    },
 1.10372 +
 1.10373 +    // ch gets or sets the alignment character for cells in a column.
 1.10374 +    set chOff(chOff) {
 1.10375 +        this.setAttribute("chOff", chOff);
 1.10376 +    },
 1.10377 +
 1.10378 +    get chOff() {
 1.10379 +        return this.getAttribute("chOff");
 1.10380 +    },
 1.10381 +
 1.10382 +    get vAlign () {
 1.10383 +        return this.getAttribute("vAlign");
 1.10384 +    },
 1.10385 +
 1.10386 +    get rows() {
 1.10387 +        return new HTMLCollection(this.getElementsByTagName("tr"));
 1.10388 +    },
 1.10389 +
 1.10390 +    insertRow : function (idx) {
 1.10391 +        if (idx === undefined) {
 1.10392 +            throw new Error("Index omitted in call to HTMLTableSectionElement.insertRow ");
 1.10393 +        }
 1.10394 +
 1.10395 +        var numRows = this.rows.length,
 1.10396 +        node = null;
 1.10397 +
 1.10398 +        if (idx > numRows) {
 1.10399 +            throw new Error("Index > rows.length in call to HTMLTableSectionElement.insertRow");
 1.10400 +        }
 1.10401 +
 1.10402 +        var row = document.createElement("tr");
 1.10403 +        // If index is -1 or equal to the number of rows,
 1.10404 +        // the row is appended as the last row. If index is omitted
 1.10405 +        // or greater than the number of rows, an error will result
 1.10406 +        if (idx === -1 || idx === numRows) {
 1.10407 +            this.appendChild(row);
 1.10408 +        } else {
 1.10409 +            node = this.firstChild;
 1.10410 +
 1.10411 +            for (var i=0; i<idx; i++) {
 1.10412 +                node = node.nextSibling;
 1.10413 +            }
 1.10414 +        }
 1.10415 +
 1.10416 +        this.insertBefore(row, node);
 1.10417 +
 1.10418 +        return row;
 1.10419 +    },
 1.10420 +
 1.10421 +    deleteRow : function (idx) {
 1.10422 +        var elem = this.rows[idx];
 1.10423 +        this.removeChild(elem);
 1.10424 +    },
 1.10425 +
 1.10426 +    toString: function() {
 1.10427 +        return '[object HTMLTableSectionElement]';
 1.10428 +    }
 1.10429 +});
 1.10430 +
 1.10431 +/**
 1.10432 + * HTMLTableCellElement
 1.10433 + * base interface for TD and TH
 1.10434 + *
 1.10435 + * HTML5: 4.9.11 Attributes common to td and th elements
 1.10436 + * http://dev.w3.org/html5/spec/Overview.html#htmltablecellelement
 1.10437 + */
 1.10438 +HTMLTableCellElement = function(ownerDocument) {
 1.10439 +    HTMLElement.apply(this, arguments);
 1.10440 +};
 1.10441 +HTMLTableCellElement.prototype = new HTMLElement();
 1.10442 +__extend__(HTMLTableCellElement.prototype, {
 1.10443 +
 1.10444 +
 1.10445 +    // TOOD: attribute unsigned long  colSpan;
 1.10446 +    // TODO: attribute unsigned long  rowSpan;
 1.10447 +    // TODO: attribute DOMString      headers;
 1.10448 +    // TODO: readonly attribute long  cellIndex;
 1.10449 +
 1.10450 +    // Not really necessary but might be helpful in debugging
 1.10451 +    toString: function() {
 1.10452 +        return '[object HTMLTableCellElement]';
 1.10453 +    }
 1.10454 +
 1.10455 +});
 1.10456 +
 1.10457 +/**
 1.10458 + * HTMLTableDataCellElement
 1.10459 + * HTML5: 4.9.9 The td Element
 1.10460 + * http://dev.w3.org/html5/spec/Overview.html#the-td-element
 1.10461 + */
 1.10462 +HTMLTableDataCellElement = function(ownerDocument) {
 1.10463 +    HTMLElement.apply(this, arguments);
 1.10464 +};
 1.10465 +HTMLTableDataCellElement.prototype = new HTMLTableCellElement();
 1.10466 +__extend__(HTMLTableDataCellElement.prototype, {
 1.10467 +
 1.10468 +    // adds no new properties or methods
 1.10469 +
 1.10470 +    toString: function() {
 1.10471 +        return '[object HTMLTableDataCellElement]';
 1.10472 +    }
 1.10473 +});
 1.10474 +
 1.10475 +/**
 1.10476 + * HTMLTableHeaderCellElement
 1.10477 + * HTML5: 4.9.10 The th Element
 1.10478 + * http://dev.w3.org/html5/spec/Overview.html#the-th-element
 1.10479 + */
 1.10480 +HTMLTableHeaderCellElement = function(ownerDocument) {
 1.10481 +    HTMLElement.apply(this, arguments);
 1.10482 +};
 1.10483 +HTMLTableHeaderCellElement.prototype = new HTMLTableCellElement();
 1.10484 +__extend__(HTMLTableHeaderCellElement.prototype, {
 1.10485 +
 1.10486 +    // TODO:  attribute DOMString scope
 1.10487 +
 1.10488 +    toString: function() {
 1.10489 +        return '[object HTMLTableHeaderCellElement]';
 1.10490 +    }
 1.10491 +});
 1.10492 +
 1.10493 +
 1.10494 +/**
 1.10495 + * HTMLTextAreaElement - DOM Level 2
 1.10496 + * HTML5: 4.10.11 The textarea element
 1.10497 + * http://dev.w3.org/html5/spec/Overview.html#the-textarea-element
 1.10498 + */
 1.10499 +HTMLTextAreaElement = function(ownerDocument) {
 1.10500 +    HTMLInputAreaCommon.apply(this, arguments);
 1.10501 +    this._rawvalue = null;
 1.10502 +};
 1.10503 +HTMLTextAreaElement.prototype = new HTMLInputAreaCommon();
 1.10504 +__extend__(HTMLTextAreaElement.prototype, {
 1.10505 +    get cols(){
 1.10506 +        return Number(this.getAttribute('cols')||'-1');
 1.10507 +    },
 1.10508 +    set cols(value){
 1.10509 +        this.setAttribute('cols', value);
 1.10510 +    },
 1.10511 +    get rows(){
 1.10512 +        return Number(this.getAttribute('rows')||'-1');
 1.10513 +    },
 1.10514 +    set rows(value){
 1.10515 +        this.setAttribute('rows', value);
 1.10516 +    },
 1.10517 +
 1.10518 +    /*
 1.10519 +     * read-only
 1.10520 +     */
 1.10521 +    get type() {
 1.10522 +        return this.getAttribute('type') || 'textarea';
 1.10523 +    },
 1.10524 +
 1.10525 +    /**
 1.10526 +     * This modifies the text node under the widget
 1.10527 +     */
 1.10528 +    get defaultValue() {
 1.10529 +        return this.textContent;
 1.10530 +    },
 1.10531 +    set defaultValue(value) {
 1.10532 +        this.textContent = value;
 1.10533 +    },
 1.10534 +
 1.10535 +    /**
 1.10536 +     * http://dev.w3.org/html5/spec/Overview.html#concept-textarea-raw-value
 1.10537 +     */
 1.10538 +    get value() {
 1.10539 +        return (this._rawvalue === null) ? this.defaultValue : this._rawvalue;
 1.10540 +    },
 1.10541 +    set value(value) {
 1.10542 +        this._rawvalue = value;
 1.10543 +    },
 1.10544 +    toString: function() {
 1.10545 +        return '[object HTMLTextAreaElement]';
 1.10546 +    }
 1.10547 +});
 1.10548 +
 1.10549 +// Named Element Support
 1.10550 +HTMLElement.registerSetAttribute('TEXTAREA', 'name',
 1.10551 +                                 __updateFormForNamedElement__);
 1.10552 +
 1.10553 +/**
 1.10554 + * HTMLTitleElement - DOM Level 2
 1.10555 + *
 1.10556 + * HTML5: 4.2.2 The title element
 1.10557 + * http://dev.w3.org/html5/spec/Overview.html#the-title-element-0
 1.10558 + */
 1.10559 +HTMLTitleElement = function(ownerDocument) {
 1.10560 +    HTMLElement.apply(this, arguments);
 1.10561 +};
 1.10562 +HTMLTitleElement.prototype = new HTMLElement();
 1.10563 +__extend__(HTMLTitleElement.prototype, {
 1.10564 +    get text() {
 1.10565 +        return this.innerText;
 1.10566 +    },
 1.10567 +
 1.10568 +    set text(titleStr) {
 1.10569 +        this.textContent = titleStr;
 1.10570 +    },
 1.10571 +    toString: function() {
 1.10572 +        return '[object HTMLTitleElement]';
 1.10573 +    }
 1.10574 +});
 1.10575 +
 1.10576 +
 1.10577 +
 1.10578 +/**
 1.10579 + * HTMLRowElement - DOM Level 2
 1.10580 + * Implementation Provided by Steven Wood
 1.10581 + *
 1.10582 + * HTML5: 4.9.8 The tr element
 1.10583 + * http://dev.w3.org/html5/spec/Overview.html#the-tr-element
 1.10584 + */
 1.10585 +HTMLTableRowElement = function(ownerDocument) {
 1.10586 +    HTMLElement.apply(this, arguments);
 1.10587 +};
 1.10588 +HTMLTableRowElement.prototype = new HTMLElement();
 1.10589 +__extend__(HTMLTableRowElement.prototype, {
 1.10590 +
 1.10591 +    /*appendChild : function (child) {
 1.10592 +
 1.10593 +      var retVal = Node.prototype.appendChild.apply(this, arguments);
 1.10594 +      retVal.cellIndex = this.cells.length -1;
 1.10595 +
 1.10596 +      return retVal;
 1.10597 +      },*/
 1.10598 +    // align gets or sets the horizontal alignment of data within cells of the row.
 1.10599 +    get align() {
 1.10600 +        return this.getAttribute("align");
 1.10601 +    },
 1.10602 +
 1.10603 +    get bgColor() {
 1.10604 +        return this.getAttribute("bgcolor");
 1.10605 +    },
 1.10606 +
 1.10607 +    get cells() {
 1.10608 +        var nl = this.getElementsByTagName("td");
 1.10609 +        return new HTMLCollection(nl);
 1.10610 +    },
 1.10611 +
 1.10612 +    get ch() {
 1.10613 +        return this.getAttribute("ch");
 1.10614 +    },
 1.10615 +
 1.10616 +    set ch(ch) {
 1.10617 +        this.setAttribute("ch", ch);
 1.10618 +    },
 1.10619 +
 1.10620 +    // ch gets or sets the alignment character for cells in a column.
 1.10621 +    set chOff(chOff) {
 1.10622 +        this.setAttribute("chOff", chOff);
 1.10623 +    },
 1.10624 +
 1.10625 +    get chOff() {
 1.10626 +        return this.getAttribute("chOff");
 1.10627 +    },
 1.10628 +
 1.10629 +    /**
 1.10630 +     * http://dev.w3.org/html5/spec/Overview.html#dom-tr-rowindex
 1.10631 +     */
 1.10632 +    get rowIndex() {
 1.10633 +        var nl = this.parentNode.childNodes;
 1.10634 +        for (var i=0; i<nl.length; i++) {
 1.10635 +            if (nl[i] === this) {
 1.10636 +                return i;
 1.10637 +            }
 1.10638 +        }
 1.10639 +        return -1;
 1.10640 +    },
 1.10641 +
 1.10642 +    /**
 1.10643 +     * http://dev.w3.org/html5/spec/Overview.html#dom-tr-sectionrowindex
 1.10644 +     */
 1.10645 +    get sectionRowIndex() {
 1.10646 +        var nl = this.parentNode.getElementsByTagName(this.tagName);
 1.10647 +        for (var i=0; i<nl.length; i++) {
 1.10648 +            if (nl[i] === this) {
 1.10649 +                return i;
 1.10650 +            }
 1.10651 +        }
 1.10652 +        return -1;
 1.10653 +    },
 1.10654 +
 1.10655 +    get vAlign () {
 1.10656 +        return this.getAttribute("vAlign");
 1.10657 +    },
 1.10658 +
 1.10659 +    insertCell : function (idx) {
 1.10660 +        if (idx === undefined) {
 1.10661 +            throw new Error("Index omitted in call to HTMLTableRow.insertCell");
 1.10662 +        }
 1.10663 +
 1.10664 +        var numCells = this.cells.length,
 1.10665 +        node = null;
 1.10666 +
 1.10667 +        if (idx > numCells) {
 1.10668 +            throw new Error("Index > rows.length in call to HTMLTableRow.insertCell");
 1.10669 +        }
 1.10670 +
 1.10671 +        var cell = document.createElement("td");
 1.10672 +
 1.10673 +        if (idx === -1 || idx === numCells) {
 1.10674 +            this.appendChild(cell);
 1.10675 +        } else {
 1.10676 +
 1.10677 +
 1.10678 +            node = this.firstChild;
 1.10679 +
 1.10680 +            for (var i=0; i<idx; i++) {
 1.10681 +                node = node.nextSibling;
 1.10682 +            }
 1.10683 +        }
 1.10684 +
 1.10685 +        this.insertBefore(cell, node);
 1.10686 +        cell.cellIndex = idx;
 1.10687 +
 1.10688 +        return cell;
 1.10689 +    },
 1.10690 +    deleteCell : function (idx) {
 1.10691 +        var elem = this.cells[idx];
 1.10692 +        this.removeChild(elem);
 1.10693 +    },
 1.10694 +    toString: function() {
 1.10695 +        return '[object HTMLTableRowElement]';
 1.10696 +    }
 1.10697 +
 1.10698 +});
 1.10699 +
 1.10700 +/*
 1.10701 + * HTMLUListElement
 1.10702 + * HTML5: 4.5.7 The ul Element
 1.10703 + * http://dev.w3.org/html5/spec/Overview.html#htmlhtmlelement
 1.10704 + */
 1.10705 +HTMLUListElement = function(ownerDocument) {
 1.10706 +    HTMLElement.apply(this, arguments);
 1.10707 +};
 1.10708 +
 1.10709 +HTMLUListElement.prototype = new HTMLElement();
 1.10710 +__extend__(HTMLUListElement.prototype, {
 1.10711 +
 1.10712 +    // no additional properties or elements
 1.10713 +
 1.10714 +    toString: function() {
 1.10715 +        return '[object HTMLUListElement]';
 1.10716 +    }
 1.10717 +});
 1.10718 +
 1.10719 +
 1.10720 +/**
 1.10721 + * HTMLUnknownElement DOM Level 2
 1.10722 + */
 1.10723 +HTMLUnknownElement = function(ownerDocument) {
 1.10724 +    HTMLElement.apply(this, arguments);
 1.10725 +};
 1.10726 +HTMLUnknownElement.prototype = new HTMLElement();
 1.10727 +__extend__(HTMLUnknownElement.prototype,{
 1.10728 +    toString: function(){
 1.10729 +        return '[object HTMLUnknownElement]';
 1.10730 +    }
 1.10731 +});
 1.10732 +
 1.10733 +/**
 1.10734 + * @author john resig & the envjs team
 1.10735 + * @uri http://www.envjs.com/
 1.10736 + * @copyright 2008-2010
 1.10737 + * @license MIT
 1.10738 + */
 1.10739 +//CLOSURE_END
 1.10740 +}());
 1.10741 +
 1.10742 +/**
 1.10743 + * DOM Style Level 2
 1.10744 + */
 1.10745 +var CSS2Properties,
 1.10746 +    CSSRule,
 1.10747 +    CSSStyleRule,
 1.10748 +    CSSImportRule,
 1.10749 +    CSSMediaRule,
 1.10750 +    CSSFontFaceRule,
 1.10751 +    CSSPageRule,
 1.10752 +    CSSRuleList,
 1.10753 +    CSSStyleSheet,
 1.10754 +    StyleSheet,
 1.10755 +    StyleSheetList;
 1.10756 +;
 1.10757 +
 1.10758 +/*
 1.10759 + * Envjs css.1.2.13 
 1.10760 + * Pure JavaScript Browser Environment
 1.10761 + * By John Resig <http://ejohn.org/> and the Envjs Team
 1.10762 + * Copyright 2008-2010 John Resig, under the MIT License
 1.10763 + */
 1.10764 +
 1.10765 +//CLOSURE_START
 1.10766 +(function(){
 1.10767 +
 1.10768 +
 1.10769 +
 1.10770 +
 1.10771 +
 1.10772 +/**
 1.10773 + * @author john resig
 1.10774 + */
 1.10775 +// Helper method for extending one object with another.
 1.10776 +function __extend__(a,b) {
 1.10777 +    for ( var i in b ) {
 1.10778 +        var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
 1.10779 +        if ( g || s ) {
 1.10780 +            if ( g ) { a.__defineGetter__(i, g); }
 1.10781 +            if ( s ) { a.__defineSetter__(i, s); }
 1.10782 +        } else {
 1.10783 +            a[i] = b[i];
 1.10784 +        }
 1.10785 +    } return a;
 1.10786 +}
 1.10787 +
 1.10788 +/**
 1.10789 + * @author john resig
 1.10790 + */
 1.10791 +//from jQuery
 1.10792 +function __setArray__( target, array ) {
 1.10793 +    // Resetting the length to 0, then using the native Array push
 1.10794 +    // is a super-fast way to populate an object with array-like properties
 1.10795 +    target.length = 0;
 1.10796 +    Array.prototype.push.apply( target, array );
 1.10797 +}
 1.10798 +
 1.10799 +/**
 1.10800 + * @author ariel flesler
 1.10801 + *    http://flesler.blogspot.com/2008/11/fast-trim-function-for-javascript.html
 1.10802 + * @param {Object} str
 1.10803 + */
 1.10804 +function __trim__( str ){
 1.10805 +    return (str || "").replace( /^\s+|\s+$/g, "" );
 1.10806 +}
 1.10807 +
 1.10808 +/*
 1.10809 + * Interface DocumentStyle (introduced in DOM Level 2)
 1.10810 + * http://www.w3.org/TR/2000/REC-DOM-Level-2-Style-20001113/stylesheets.html#StyleSheets-StyleSheet-DocumentStyle
 1.10811 + *
 1.10812 + * interface DocumentStyle {
 1.10813 + *   readonly attribute StyleSheetList   styleSheets;
 1.10814 + * };
 1.10815 + *
 1.10816 + */
 1.10817 +__extend__(Document.prototype, {
 1.10818 +    get styleSheets() {
 1.10819 +        if (! this._styleSheets) {
 1.10820 +            this._styleSheets = new StyleSheetList();
 1.10821 +        }
 1.10822 +        return this._styleSheets;
 1.10823 +    }
 1.10824 +});
 1.10825 +/*
 1.10826 + * CSS2Properties - DOM Level 2 CSS
 1.10827 + * Renamed to CSSStyleDeclaration??
 1.10828 + */
 1.10829 +
 1.10830 +var __toCamelCase__ = function(name) {
 1.10831 +    if (name) {
 1.10832 +        return name.replace(/\-(\w)/g, function(all, letter) {
 1.10833 +            return letter.toUpperCase();
 1.10834 +        });
 1.10835 +    }
 1.10836 +    return name;
 1.10837 +};
 1.10838 +
 1.10839 +var __toDashed__ = function(camelCaseName) {
 1.10840 +    if (camelCaseName) {
 1.10841 +        return camelCaseName.replace(/[A-Z]/g, function(all) {
 1.10842 +            return '-' + all.toLowerCase();
 1.10843 +        });
 1.10844 +    }
 1.10845 +    return camelCaseName;
 1.10846 +};
 1.10847 +
 1.10848 +CSS2Properties = function(element){
 1.10849 +    //console.log('css2properties %s', __cssproperties__++);
 1.10850 +    this.styleIndex = __supportedStyles__;//non-standard
 1.10851 +    this.type = element.tagName;//non-standard
 1.10852 +    __setArray__(this, []);
 1.10853 +    __cssTextToStyles__(this, element.cssText || '');
 1.10854 +};
 1.10855 +__extend__(CSS2Properties.prototype, {
 1.10856 +    get cssText() {
 1.10857 +        var i, css = [];
 1.10858 +        for (i = 0; i < this.length; ++i) {
 1.10859 +            css.push(this[i] + ': ' + this.getPropertyValue(this[i]) + ';');
 1.10860 +        }
 1.10861 +        return css.join(' ');
 1.10862 +    },
 1.10863 +    set cssText(cssText) {
 1.10864 +        __cssTextToStyles__(this, cssText);
 1.10865 +    },
 1.10866 +    getPropertyCSSValue: function(name) {
 1.10867 +        //?
 1.10868 +    },
 1.10869 +    getPropertyPriority: function() {
 1.10870 +
 1.10871 +    },
 1.10872 +    getPropertyValue: function(name) {
 1.10873 +        var index, cname = __toCamelCase__(name);
 1.10874 +        if (cname in this.styleIndex) {
 1.10875 +            return this[cname];
 1.10876 +        } else {
 1.10877 +            index = Array.prototype.indexOf.apply(this, [name]);
 1.10878 +            if (index > -1) {
 1.10879 +                return this[index];
 1.10880 +            }
 1.10881 +        }
 1.10882 +        return null;
 1.10883 +    },
 1.10884 +    item: function(index) {
 1.10885 +        return this[index];
 1.10886 +    },
 1.10887 +    removeProperty: function(name) {
 1.10888 +        this.styleIndex[name] = null;
 1.10889 +        name = __toDashed__(name);
 1.10890 +        var index = Array.prototype.indexOf.apply(this, [name]);
 1.10891 +        if (index > -1) {
 1.10892 +            Array.prototype.splice.apply(this, [1,index]);
 1.10893 +        }
 1.10894 +    },
 1.10895 +    setProperty: function(name, value, priority) {
 1.10896 +        var nval;
 1.10897 +        name = __toCamelCase__(name);
 1.10898 +        if (value !== undefined && name in this.styleIndex) {
 1.10899 +            // NOTE:  parseFloat('300px') ==> 300  no
 1.10900 +            // NOTE:  Number('300px') ==> Nan      yes
 1.10901 +            nval = Number(value);
 1.10902 +            this.styleIndex[name] = isNaN(nval) ? value : nval;
 1.10903 +            name = __toDashed__(name);
 1.10904 +            if (Array.prototype.indexOf.apply(this, [name]) === -1 ){
 1.10905 +                Array.prototype.push.apply(this,[name]);
 1.10906 +            }
 1.10907 +        }
 1.10908 +    },
 1.10909 +    toString: function() {
 1.10910 +        return '[object CSS2Properties]';
 1.10911 +    }
 1.10912 +});
 1.10913 +
 1.10914 +
 1.10915 +
 1.10916 +var __cssTextToStyles__ = function(css2props, cssText) {
 1.10917 +    //console.log('__cssTextToStyles__ %s %s', css2props, cssText);
 1.10918 +    //var styleArray=[];
 1.10919 +    var i, style, styles = cssText.split(';');
 1.10920 +    for (i = 0; i < styles.length; ++i) {
 1.10921 +        style = styles[i].split(':');
 1.10922 +        if (style.length === 2) {
 1.10923 +            css2props.setProperty(style[0].replace(' ', '', 'g'),
 1.10924 +                                  style[1].replace(' ', '', 'g'));
 1.10925 +        }
 1.10926 +    }
 1.10927 +};
 1.10928 +
 1.10929 +//Obviously these arent all supported but by commenting out various
 1.10930 +//sections this provides a single location to configure what is
 1.10931 +//exposed as supported.
 1.10932 +var __supportedStyles__ = {
 1.10933 +    azimuth:                null,
 1.10934 +    background:             null,
 1.10935 +    backgroundAttachment:   null,
 1.10936 +    backgroundColor:        'rgb(0,0,0)',
 1.10937 +    backgroundImage:        null,
 1.10938 +    backgroundPosition:     null,
 1.10939 +    backgroundRepeat:       null,
 1.10940 +    border:                 null,
 1.10941 +    borderBottom:           null,
 1.10942 +    borderBottomColor:      null,
 1.10943 +    borderBottomStyle:      null,
 1.10944 +    borderBottomWidth:      null,
 1.10945 +    borderCollapse:         null,
 1.10946 +    borderColor:            null,
 1.10947 +    borderLeft:             null,
 1.10948 +    borderLeftColor:        null,
 1.10949 +    borderLeftStyle:        null,
 1.10950 +    borderLeftWidth:        null,
 1.10951 +    borderRight:            null,
 1.10952 +    borderRightColor:       null,
 1.10953 +    borderRightStyle:       null,
 1.10954 +    borderRightWidth:       null,
 1.10955 +    borderSpacing:          null,
 1.10956 +    borderStyle:            null,
 1.10957 +    borderTop:              null,
 1.10958 +    borderTopColor:         null,
 1.10959 +    borderTopStyle:         null,
 1.10960 +    borderTopWidth:         null,
 1.10961 +    borderWidth:            null,
 1.10962 +    bottom:                 null,
 1.10963 +    captionSide:            null,
 1.10964 +    clear:                  null,
 1.10965 +    clip:                   null,
 1.10966 +    color:                  null,
 1.10967 +    content:                null,
 1.10968 +    counterIncrement:       null,
 1.10969 +    counterReset:           null,
 1.10970 +    cssFloat:               null,
 1.10971 +    cue:                    null,
 1.10972 +    cueAfter:               null,
 1.10973 +    cueBefore:              null,
 1.10974 +    cursor:                 null,
 1.10975 +    direction:              'ltr',
 1.10976 +    display:                null,
 1.10977 +    elevation:              null,
 1.10978 +    emptyCells:             null,
 1.10979 +    font:                   null,
 1.10980 +    fontFamily:             null,
 1.10981 +    fontSize:               '1em',
 1.10982 +    fontSizeAdjust:         null,
 1.10983 +    fontStretch:            null,
 1.10984 +    fontStyle:              null,
 1.10985 +    fontVariant:            null,
 1.10986 +    fontWeight:             null,
 1.10987 +    height:                 '',
 1.10988 +    left:                   null,
 1.10989 +    letterSpacing:          null,
 1.10990 +    lineHeight:             null,
 1.10991 +    listStyle:              null,
 1.10992 +    listStyleImage:         null,
 1.10993 +    listStylePosition:      null,
 1.10994 +    listStyleType:          null,
 1.10995 +    margin:                 null,
 1.10996 +    marginBottom:           '0px',
 1.10997 +    marginLeft:             '0px',
 1.10998 +    marginRight:            '0px',
 1.10999 +    marginTop:              '0px',
 1.11000 +    markerOffset:           null,
 1.11001 +    marks:                  null,
 1.11002 +    maxHeight:              null,
 1.11003 +    maxWidth:               null,
 1.11004 +    minHeight:              null,
 1.11005 +    minWidth:               null,
 1.11006 +    opacity:                1,
 1.11007 +    orphans:                null,
 1.11008 +    outline:                null,
 1.11009 +    outlineColor:           null,
 1.11010 +    outlineOffset:          null,
 1.11011 +    outlineStyle:           null,
 1.11012 +    outlineWidth:           null,
 1.11013 +    overflow:               null,
 1.11014 +    overflowX:              null,
 1.11015 +    overflowY:              null,
 1.11016 +    padding:                null,
 1.11017 +    paddingBottom:          '0px',
 1.11018 +    paddingLeft:            '0px',
 1.11019 +    paddingRight:           '0px',
 1.11020 +    paddingTop:             '0px',
 1.11021 +    page:                   null,
 1.11022 +    pageBreakAfter:         null,
 1.11023 +    pageBreakBefore:        null,
 1.11024 +    pageBreakInside:        null,
 1.11025 +    pause:                  null,
 1.11026 +    pauseAfter:             null,
 1.11027 +    pauseBefore:            null,
 1.11028 +    pitch:                  null,
 1.11029 +    pitchRange:             null,
 1.11030 +    position:               null,
 1.11031 +    quotes:                 null,
 1.11032 +    richness:               null,
 1.11033 +    right:                  null,
 1.11034 +    size:                   null,
 1.11035 +    speak:                  null,
 1.11036 +    speakHeader:            null,
 1.11037 +    speakNumeral:           null,
 1.11038 +    speakPunctuation:       null,
 1.11039 +    speechRate:             null,
 1.11040 +    stress:                 null,
 1.11041 +    tableLayout:            null,
 1.11042 +    textAlign:              null,
 1.11043 +    textDecoration:         null,
 1.11044 +    textIndent:             null,
 1.11045 +    textShadow:             null,
 1.11046 +    textTransform:          null,
 1.11047 +    top:                    null,
 1.11048 +    unicodeBidi:            null,
 1.11049 +    verticalAlign:          null,
 1.11050 +    visibility:             '',
 1.11051 +    voiceFamily:            null,
 1.11052 +    volume:                 null,
 1.11053 +    whiteSpace:             null,
 1.11054 +    widows:                 null,
 1.11055 +    width:                  '1px',
 1.11056 +    wordSpacing:            null,
 1.11057 +    zIndex:                 1
 1.11058 +};
 1.11059 +
 1.11060 +var __displayMap__ = {
 1.11061 +    DIV      : 'block',
 1.11062 +    P        : 'block',
 1.11063 +    A        : 'inline',
 1.11064 +    CODE     : 'inline',
 1.11065 +    PRE      : 'block',
 1.11066 +    SPAN     : 'inline',
 1.11067 +    TABLE    : 'table',
 1.11068 +    THEAD    : 'table-header-group',
 1.11069 +    TBODY    : 'table-row-group',
 1.11070 +    TR       : 'table-row',
 1.11071 +    TH       : 'table-cell',
 1.11072 +    TD       : 'table-cell',
 1.11073 +    UL       : 'block',
 1.11074 +    LI       : 'list-item'
 1.11075 +};
 1.11076 +
 1.11077 +for (var style in __supportedStyles__) {
 1.11078 +    if (__supportedStyles__.hasOwnProperty(style)) {
 1.11079 +        (function(name) {
 1.11080 +            if (name === 'width' || name === 'height') {
 1.11081 +                CSS2Properties.prototype.__defineGetter__(name, function() {
 1.11082 +                    if (this.display === 'none'){
 1.11083 +                        return '0px';
 1.11084 +                    }
 1.11085 +                    return this.styleIndex[name];
 1.11086 +                });
 1.11087 +            } else if (name === 'display') {
 1.11088 +                //display will be set to a tagName specific value if ''
 1.11089 +                CSS2Properties.prototype.__defineGetter__(name, function() {
 1.11090 +                    var val = this.styleIndex[name];
 1.11091 +                    val = val ? val :__displayMap__[this.type];
 1.11092 +                    return val;
 1.11093 +                });
 1.11094 +            } else {
 1.11095 +                CSS2Properties.prototype.__defineGetter__(name, function() {
 1.11096 +                    return this.styleIndex[name];
 1.11097 +                });
 1.11098 +            }
 1.11099 +            CSS2Properties.prototype.__defineSetter__(name, function(value) {
 1.11100 +                this.setProperty(name, value);
 1.11101 +            });
 1.11102 +        }(style));
 1.11103 +    }
 1.11104 +}
 1.11105 +
 1.11106 +/*
 1.11107 + * CSSRule - DOM Level 2
 1.11108 + */
 1.11109 +CSSRule = function(options) {
 1.11110 +
 1.11111 +
 1.11112 +
 1.11113 +    var $style,
 1.11114 +    $selectorText = options.selectorText ? options.selectorText : '';
 1.11115 +    $style = new CSS2Properties({
 1.11116 +        cssText: options.cssText ? options.cssText : null
 1.11117 +    });
 1.11118 +
 1.11119 +    return __extend__(this, {
 1.11120 +        get style(){
 1.11121 +            return $style;
 1.11122 +        },
 1.11123 +        get selectorText(){
 1.11124 +            return $selectorText;
 1.11125 +        },
 1.11126 +        set selectorText(selectorText){
 1.11127 +            $selectorText = selectorText;
 1.11128 +        },
 1.11129 +        toString : function(){
 1.11130 +            return "[object CSSRule]";
 1.11131 +        }
 1.11132 +    });
 1.11133 +};
 1.11134 +CSSRule.STYLE_RULE     =  1;
 1.11135 +CSSRule.IMPORT_RULE    =  3;
 1.11136 +CSSRule.MEDIA_RULE     =  4;
 1.11137 +CSSRule.FONT_FACE_RULE =  5;
 1.11138 +CSSRule.PAGE_RULE      =  6;
 1.11139 +//CSSRule.NAMESPACE_RULE = 10;
 1.11140 +
 1.11141 +
 1.11142 +CSSStyleRule = function() {
 1.11143 +
 1.11144 +};
 1.11145 +
 1.11146 +CSSImportRule = function() {
 1.11147 +
 1.11148 +};
 1.11149 +
 1.11150 +CSSMediaRule = function() {
 1.11151 +
 1.11152 +};
 1.11153 +
 1.11154 +CSSFontFaceRule = function() {
 1.11155 +
 1.11156 +};
 1.11157 +
 1.11158 +CSSPageRule = function() {
 1.11159 +
 1.11160 +};
 1.11161 +
 1.11162 +
 1.11163 +CSSRuleList = function(data) {
 1.11164 +    this.length = 0;
 1.11165 +    __setArray__(this, data);
 1.11166 +};
 1.11167 +
 1.11168 +__extend__(CSSRuleList.prototype, {
 1.11169 +    item : function(index) {
 1.11170 +        if ((index >= 0) && (index < this.length)) {
 1.11171 +            // bounds check
 1.11172 +            return this[index];
 1.11173 +        }
 1.11174 +        return null;
 1.11175 +    },
 1.11176 +    toString: function() {
 1.11177 +        return '[object CSSRuleList]';
 1.11178 +    }
 1.11179 +});
 1.11180 +
 1.11181 +/**
 1.11182 + * StyleSheet
 1.11183 + * http://dev.w3.org/csswg/cssom/#stylesheet
 1.11184 + *
 1.11185 + * interface StyleSheet {
 1.11186 + *   readonly attribute DOMString type;
 1.11187 + *   readonly attribute DOMString href;
 1.11188 + *   readonly attribute Node ownerNode;
 1.11189 + *   readonly attribute StyleSheet parentStyleSheet;
 1.11190 + *   readonly attribute DOMString title;
 1.11191 + *   [PutForwards=mediaText] readonly attribute MediaList media;
 1.11192 + *          attribute boolean disabled;
 1.11193 + * };
 1.11194 + */
 1.11195 +StyleSheet = function() {
 1.11196 +}
 1.11197 +
 1.11198 +/*
 1.11199 + * CSSStyleSheet
 1.11200 + * http://dev.w3.org/csswg/cssom/#cssstylesheet
 1.11201 + *
 1.11202 + * interface CSSStyleSheet : StyleSheet {
 1.11203 + *   readonly attribute CSSRule ownerRule;
 1.11204 + *   readonly attribute CSSRuleList cssRules;
 1.11205 + *   unsigned long insertRule(DOMString rule, unsigned long index);
 1.11206 + *   void deleteRule(unsigned long index);
 1.11207 + * };
 1.11208 + */
 1.11209 +CSSStyleSheet = function(options){
 1.11210 +    var $cssRules,
 1.11211 +        $disabled = options.disabled ? options.disabled : false,
 1.11212 +        $href = options.href ? options.href : null,
 1.11213 +        $parentStyleSheet = options.parentStyleSheet ? options.parentStyleSheet : null,
 1.11214 +        $title = options.title ? options.title : "",
 1.11215 +        $type = "text/css";
 1.11216 +
 1.11217 +    function parseStyleSheet(text){
 1.11218 +        //$debug("parsing css");
 1.11219 +        //this is pretty ugly, but text is the entire text of a stylesheet
 1.11220 +        var cssRules = [];
 1.11221 +        if (!text) {
 1.11222 +            text = '';
 1.11223 +        }
 1.11224 +        text = __trim__(text.replace(/\/\*(\r|\n|.)*\*\//g,""));
 1.11225 +        // TODO: @import
 1.11226 +        var blocks = text.split("}");
 1.11227 +        blocks.pop();
 1.11228 +        var i, j, len = blocks.length;
 1.11229 +        var definition_block, properties, selectors;
 1.11230 +        for (i=0; i<len; i++) {
 1.11231 +            definition_block = blocks[i].split("{");
 1.11232 +            if (definition_block.length === 2) {
 1.11233 +                selectors = definition_block[0].split(",");
 1.11234 +                for (j=0; j<selectors.length; j++) {
 1.11235 +                    cssRules.push(new CSSRule({
 1.11236 +                        selectorText : __trim__(selectors[j]),
 1.11237 +                        cssText      : definition_block[1]
 1.11238 +                    }));
 1.11239 +                }
 1.11240 +            }
 1.11241 +        }
 1.11242 +        return cssRules;
 1.11243 +    }
 1.11244 +
 1.11245 +    $cssRules = new CSSRuleList(parseStyleSheet(options.textContent));
 1.11246 +
 1.11247 +    return __extend__(this, {
 1.11248 +        get cssRules(){
 1.11249 +            return $cssRules;
 1.11250 +        },
 1.11251 +        get rule(){
 1.11252 +            return $cssRules;
 1.11253 +        },//IE - may be deprecated
 1.11254 +        get href(){
 1.11255 +            return $href;
 1.11256 +        },
 1.11257 +        get parentStyleSheet(){
 1.11258 +            return $parentStyleSheet;
 1.11259 +        },
 1.11260 +        get title(){
 1.11261 +            return $title;
 1.11262 +        },
 1.11263 +        get type(){
 1.11264 +            return $type;
 1.11265 +        },
 1.11266 +        addRule: function(selector, style, index){/*TODO*/},
 1.11267 +        deleteRule: function(index){/*TODO*/},
 1.11268 +        insertRule: function(rule, index){/*TODO*/},
 1.11269 +        //IE - may be deprecated
 1.11270 +        removeRule: function(index){
 1.11271 +            this.deleteRule(index);
 1.11272 +        }
 1.11273 +    });
 1.11274 +};
 1.11275 +
 1.11276 +StyleSheetList = function() {
 1.11277 +}
 1.11278 +StyleSheetList.prototype = new Array();
 1.11279 +__extend__(StyleSheetList.prototype, {
 1.11280 +    item : function(index) {
 1.11281 +        if ((index >= 0) && (index < this.length)) {
 1.11282 +            // bounds check
 1.11283 +            return this[index];
 1.11284 +        }
 1.11285 +        return null;
 1.11286 +    },
 1.11287 +    toString: function() {
 1.11288 +        return '[object StyleSheetList]';
 1.11289 +    }
 1.11290 +});
 1.11291 +/**
 1.11292 + * This extends HTMLElement to handle CSS-specific interfaces.
 1.11293 + *
 1.11294 + * More work / research would be needed to extend just (DOM) Element
 1.11295 + * for xml use and additional changes for just HTMLElement.
 1.11296 + */
 1.11297 +
 1.11298 +
 1.11299 +/**
 1.11300 + * Replace or add  the getter for 'style'
 1.11301 + *
 1.11302 + * This could be wrapped in a closure
 1.11303 + */
 1.11304 +var $css2properties = [{}];
 1.11305 +
 1.11306 +__extend__(HTMLElement.prototype, {
 1.11307 +    get style(){
 1.11308 +        if ( !this.css2uuid ) {
 1.11309 +            this.css2uuid = $css2properties.length;
 1.11310 +            $css2properties[this.css2uuid] = new CSS2Properties(this);
 1.11311 +        }
 1.11312 +        return $css2properties[this.css2uuid];
 1.11313 +    },
 1.11314 +});
 1.11315 +
 1.11316 +/**
 1.11317 + * Change for how 'setAttribute("style", ...)' works
 1.11318 + *
 1.11319 + * We are truly adding functionality to HtmlElement.setAttribute, not
 1.11320 + * replacing it.  So we need to save the old one first, call it, then
 1.11321 + * do our stuff.  If we need to do more hacks like this, HTMLElement
 1.11322 + * (or regular Element) needs to have a hooks array or dispatch table
 1.11323 + * for global changes.
 1.11324 + *
 1.11325 + * This could be wrapped in a closure if desired.
 1.11326 + */
 1.11327 +var updateCss2Props = function(elem, values) {
 1.11328 +    //console.log('__updateCss2Props__ %s %s', elem, values);
 1.11329 +    if ( !elem.css2uuid ) {
 1.11330 +        elem.css2uuid = $css2properties.length;
 1.11331 +        $css2properties[elem.css2uuid] = new CSS2Properties(elem);
 1.11332 +    }
 1.11333 +    __cssTextToStyles__($css2properties[elem.css2uuid], values);
 1.11334 +}
 1.11335 +
 1.11336 +var origSetAttribute =  HTMLElement.prototype.setAttribute;
 1.11337 +
 1.11338 +HTMLElement.prototype.setAttribute = function(name, value) {
 1.11339 +    //console.log("CSS set attribute: " + name + ", " + value);
 1.11340 +    origSetAttribute.apply(this, arguments);
 1.11341 +    if (name === "style") {
 1.11342 +        updateCss2Props(this, value);
 1.11343 +    }
 1.11344 +}
 1.11345 +
 1.11346 +/**
 1.11347 + * @author john resig & the envjs team
 1.11348 + * @uri http://www.envjs.com/
 1.11349 + * @copyright 2008-2010
 1.11350 + * @license MIT
 1.11351 + */
 1.11352 +//CLOSURE_END
 1.11353 +}());
 1.11354 +
 1.11355 +//these are both non-standard globals that
 1.11356 +//provide static namespaces and functions
 1.11357 +//to support the html 5 parser from nu.
 1.11358 +var XMLParser = {},
 1.11359 +    HTMLParser = {};
 1.11360 +
 1.11361 +    
 1.11362 +/*
 1.11363 + * Envjs parser.1.2.13 
 1.11364 + * Pure JavaScript Browser Environment
 1.11365 + * By John Resig <http://ejohn.org/> and the Envjs Team
 1.11366 + * Copyright 2008-2010 John Resig, under the MIT License
 1.11367 + */
 1.11368 +
 1.11369 +//CLOSURE_START
 1.11370 +(function(){
 1.11371 +
 1.11372 +
 1.11373 +
 1.11374 +
 1.11375 +
 1.11376 +/**
 1.11377 + * @author john resig
 1.11378 + */
 1.11379 +// Helper method for extending one object with another.
 1.11380 +function __extend__(a,b) {
 1.11381 +    for ( var i in b ) {
 1.11382 +        var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
 1.11383 +        if ( g || s ) {
 1.11384 +            if ( g ) { a.__defineGetter__(i, g); }
 1.11385 +            if ( s ) { a.__defineSetter__(i, s); }
 1.11386 +        } else {
 1.11387 +            a[i] = b[i];
 1.11388 +        }
 1.11389 +    } return a;
 1.11390 +}
 1.11391 +
 1.11392 +/**
 1.11393 + * @author john resig
 1.11394 + */
 1.11395 +//from jQuery
 1.11396 +function __setArray__( target, array ) {
 1.11397 +    // Resetting the length to 0, then using the native Array push
 1.11398 +    // is a super-fast way to populate an object with array-like properties
 1.11399 +    target.length = 0;
 1.11400 +    Array.prototype.push.apply( target, array );
 1.11401 +}
 1.11402 +var __defineParser__;
 1.11403 +(function () {var $gwt_version = "1.5.1";var $wnd = {};var $doc = {};var $moduleName, $moduleBase;var $stats = $wnd.__gwtStatsEvent ? function(a) {$wnd.__gwtStatsEvent(a)} : null;var _, N8000000000000000_longLit = [0, -9223372036854775808], P1000000_longLit = [16777216, 0], P7fffffffffffffff_longLit = [4294967295, 9223372032559808512];
 1.11404 +function equals_1(other){
 1.11405 +  return (this == null?null:this) === (other == null?null:other);
 1.11406 +}
 1.11407 +
 1.11408 +function getClass_13(){
 1.11409 +  return Ljava_lang_Object_2_classLit;
 1.11410 +}
 1.11411 +
 1.11412 +function hashCode_2(){
 1.11413 +  return this.$H || (this.$H = ++sNextHashId);
 1.11414 +}
 1.11415 +
 1.11416 +function toString_3(){
 1.11417 +  return (this.typeMarker$ == nullMethod || this.typeId$ == 2?this.getClass$():Lcom_google_gwt_core_client_JavaScriptObject_2_classLit).typeName + '@' + toPowerOfTwoString(this.typeMarker$ == nullMethod || this.typeId$ == 2?this.hashCode$():this.$H || (this.$H = ++sNextHashId), 4);
 1.11418 +}
 1.11419 +
 1.11420 +function Object_0(){
 1.11421 +}
 1.11422 +
 1.11423 +_ = Object_0.prototype = {};
 1.11424 +_.equals$ = equals_1;
 1.11425 +_.getClass$ = getClass_13;
 1.11426 +_.hashCode$ = hashCode_2;
 1.11427 +_.toString$ = toString_3;
 1.11428 +_.toString = function(){
 1.11429 +  return this.toString$();
 1.11430 +}
 1.11431 +;
 1.11432 +_.typeMarker$ = nullMethod;
 1.11433 +_.typeId$ = 1;
 1.11434 +function $toString_1(this$static){
 1.11435 +  var className, msg;
 1.11436 +  className = this$static.getClass$().typeName;
 1.11437 +  msg = this$static.getMessage();
 1.11438 +  if (msg != null) {
 1.11439 +    return className + ': ' + msg;
 1.11440 +  }
 1.11441 +   else {
 1.11442 +    return className;
 1.11443 +  }
 1.11444 +}
 1.11445 +
 1.11446 +function getClass_19(){
 1.11447 +  return Ljava_lang_Throwable_2_classLit;
 1.11448 +}
 1.11449 +
 1.11450 +function getMessage(){
 1.11451 +  return this.detailMessage;
 1.11452 +}
 1.11453 +
 1.11454 +function toString_7(){
 1.11455 +  return $toString_1(this);
 1.11456 +}
 1.11457 +
 1.11458 +function Throwable(){
 1.11459 +}
 1.11460 +
 1.11461 +_ = Throwable.prototype = new Object_0();
 1.11462 +_.getClass$ = getClass_19;
 1.11463 +_.getMessage = getMessage;
 1.11464 +_.toString$ = toString_7;
 1.11465 +_.typeId$ = 3;
 1.11466 +_.detailMessage = null;
 1.11467 +function $Exception(this$static, message){
 1.11468 +  this$static.detailMessage = message;
 1.11469 +  return this$static;
 1.11470 +}
 1.11471 +
 1.11472 +function getClass_9(){
 1.11473 +  return Ljava_lang_Exception_2_classLit;
 1.11474 +}
 1.11475 +
 1.11476 +function Exception(){
 1.11477 +}
 1.11478 +
 1.11479 +_ = Exception.prototype = new Throwable();
 1.11480 +_.getClass$ = getClass_9;
 1.11481 +_.typeId$ = 4;
 1.11482 +function $RuntimeException(this$static, message){
 1.11483 +  this$static.detailMessage = message;
 1.11484 +  return this$static;
 1.11485 +}
 1.11486 +
 1.11487 +function getClass_14(){
 1.11488 +  return Ljava_lang_RuntimeException_2_classLit;
 1.11489 +}
 1.11490 +
 1.11491 +function RuntimeException(){
 1.11492 +}
 1.11493 +
 1.11494 +_ = RuntimeException.prototype = new Exception();
 1.11495 +_.getClass$ = getClass_14;
 1.11496 +_.typeId$ = 5;
 1.11497 +function $JavaScriptException(this$static, e){
 1.11498 +  $Exception(this$static, '(' + getName(e) + '): ' + getDescription(e) + (e != null && (e.typeMarker$ != nullMethod && e.typeId$ != 2)?getProperties0(dynamicCastJso(e)):''));
 1.11499 +  getName(e);
 1.11500 +  getDescription(e);
 1.11501 +  getException(e);
 1.11502 +  return this$static;
 1.11503 +}
 1.11504 +
 1.11505 +function getClass_0(){
 1.11506 +  return Lcom_google_gwt_core_client_JavaScriptException_2_classLit;
 1.11507 +}
 1.11508 +
 1.11509 +function getDescription(e){
 1.11510 +  if (e != null && (e.typeMarker$ != nullMethod && e.typeId$ != 2)) {
 1.11511 +    return getDescription0(dynamicCastJso(e));
 1.11512 +  }
 1.11513 +   else {
 1.11514 +    return e + '';
 1.11515 +  }
 1.11516 +}
 1.11517 +
 1.11518 +function getDescription0(e){
 1.11519 +  return e == null?null:e.message;
 1.11520 +}
 1.11521 +
 1.11522 +function getException(e){
 1.11523 +  if (e != null && (e.typeMarker$ != nullMethod && e.typeId$ != 2)) {
 1.11524 +    return dynamicCastJso(e);
 1.11525 +  }
 1.11526 +   else {
 1.11527 +    return null;
 1.11528 +  }
 1.11529 +}
 1.11530 +
 1.11531 +function getName(e){
 1.11532 +  if (e == null) {
 1.11533 +    return 'null';
 1.11534 +  }
 1.11535 +   else if (e != null && (e.typeMarker$ != nullMethod && e.typeId$ != 2)) {
 1.11536 +    return getName0(dynamicCastJso(e));
 1.11537 +  }
 1.11538 +   else if (e != null && canCast(e.typeId$, 1)) {
 1.11539 +    return 'String';
 1.11540 +  }
 1.11541 +   else {
 1.11542 +    return (e.typeMarker$ == nullMethod || e.typeId$ == 2?e.getClass$():Lcom_google_gwt_core_client_JavaScriptObject_2_classLit).typeName;
 1.11543 +  }
 1.11544 +}
 1.11545 +
 1.11546 +function getName0(e){
 1.11547 +  return e == null?null:e.name;
 1.11548 +}
 1.11549 +
 1.11550 +function getProperties0(e){
 1.11551 +  var result = '';
 1.11552 +  for (prop in e) {
 1.11553 +    if (prop != 'name' && prop != 'message') {
 1.11554 +      result += '\n ' + prop + ': ' + e[prop];
 1.11555 +    }
 1.11556 +  }
 1.11557 +  return result;
 1.11558 +}
 1.11559 +
 1.11560 +function JavaScriptException(){
 1.11561 +}
 1.11562 +
 1.11563 +_ = JavaScriptException.prototype = new RuntimeException();
 1.11564 +_.getClass$ = getClass_0;
 1.11565 +_.typeId$ = 6;
 1.11566 +function createFunction(){
 1.11567 +  return function(){
 1.11568 +  }
 1.11569 +  ;
 1.11570 +}
 1.11571 +
 1.11572 +function equals__devirtual$(this$static, other){
 1.11573 +  return this$static.typeMarker$ == nullMethod || this$static.typeId$ == 2?this$static.equals$(other):(this$static == null?null:this$static) === (other == null?null:other);
 1.11574 +}
 1.11575 +
 1.11576 +function hashCode__devirtual$(this$static){
 1.11577 +  return this$static.typeMarker$ == nullMethod || this$static.typeId$ == 2?this$static.hashCode$():this$static.$H || (this$static.$H = ++sNextHashId);
 1.11578 +}
 1.11579 +
 1.11580 +var sNextHashId = 0;
 1.11581 +function createFromSeed(seedType, length){
 1.11582 +  var seedArray = [null, 0, false, [0, 0]];
 1.11583 +  var value = seedArray[seedType];
 1.11584 +  var array = new Array(length);
 1.11585 +  for (var i = 0; i < length; ++i) {
 1.11586 +    array[i] = value;
 1.11587 +  }
 1.11588 +  return array;
 1.11589 +}
 1.11590 +
 1.11591 +function getClass_2(){
 1.11592 +  return this.arrayClass$;
 1.11593 +}
 1.11594 +
 1.11595 +function initDim(arrayClass, typeId, queryId, length, seedType){
 1.11596 +  var result;
 1.11597 +  result = createFromSeed(seedType, length);
 1.11598 +  initValues(arrayClass, typeId, queryId, result);
 1.11599 +  return result;
 1.11600 +}
 1.11601 +
 1.11602 +function initValues(arrayClass, typeId, queryId, array){
 1.11603 +  if (!protoTypeArray_0) {
 1.11604 +    protoTypeArray_0 = new Array_0();
 1.11605 +  }
 1.11606 +  wrapArray(array, protoTypeArray_0);
 1.11607 +  array.arrayClass$ = arrayClass;
 1.11608 +  array.typeId$ = typeId;
 1.11609 +  array.queryId$ = queryId;
 1.11610 +  return array;
 1.11611 +}
 1.11612 +
 1.11613 +function setCheck(array, index, value){
 1.11614 +  if (value != null) {
 1.11615 +    if (array.queryId$ > 0 && !canCastUnsafe(value.typeId$, array.queryId$)) {
 1.11616 +      throw new ArrayStoreException();
 1.11617 +    }
 1.11618 +    if (array.queryId$ < 0 && (value.typeMarker$ == nullMethod || value.typeId$ == 2)) {
 1.11619 +      throw new ArrayStoreException();
 1.11620 +    }
 1.11621 +  }
 1.11622 +  return array[index] = value;
 1.11623 +}
 1.11624 +
 1.11625 +function wrapArray(array, protoTypeArray){
 1.11626 +  for (var i in protoTypeArray) {
 1.11627 +    var toCopy = protoTypeArray[i];
 1.11628 +    if (toCopy) {
 1.11629 +      array[i] = toCopy;
 1.11630 +    }
 1.11631 +  }
 1.11632 +  return array;
 1.11633 +}
 1.11634 +
 1.11635 +function Array_0(){
 1.11636 +}
 1.11637 +
 1.11638 +_ = Array_0.prototype = new Object_0();
 1.11639 +_.getClass$ = getClass_2;
 1.11640 +_.typeId$ = 0;
 1.11641 +_.arrayClass$ = null;
 1.11642 +_.length = 0;
 1.11643 +_.queryId$ = 0;
 1.11644 +var protoTypeArray_0 = null;
 1.11645 +function canCast(srcId, dstId){
 1.11646 +  return srcId && !!typeIdArray[srcId][dstId];
 1.11647 +}
 1.11648 +
 1.11649 +function canCastUnsafe(srcId, dstId){
 1.11650 +  return srcId && typeIdArray[srcId][dstId];
 1.11651 +}
 1.11652 +
 1.11653 +function dynamicCast(src, dstId){
 1.11654 +  if (src != null && !canCastUnsafe(src.typeId$, dstId)) {
 1.11655 +    throw new ClassCastException();
 1.11656 +  }
 1.11657 +  return src;
 1.11658 +}
 1.11659 +
 1.11660 +function dynamicCastJso(src){
 1.11661 +  if (src != null && (src.typeMarker$ == nullMethod || src.typeId$ == 2)) {
 1.11662 +    throw new ClassCastException();
 1.11663 +  }
 1.11664 +  return src;
 1.11665 +}
 1.11666 +
 1.11667 +function instanceOf(src, dstId){
 1.11668 +  return src != null && canCast(src.typeId$, dstId);
 1.11669 +}
 1.11670 +
 1.11671 +var typeIdArray = [{}, {}, {1:1, 6:1, 7:1, 8:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1, 19:1}, {4:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {6:1, 8:1}, {2:1, 6:1}, {2:1, 6:1}, {2:1, 6:1}, {7:1}, {7:1}, {2:1, 6:1}, {2:1, 6:1}, {18:1}, {14:1}, {14:1}, {14:1}, {15:1}, {15:1}, {6:1, 15:1}, {6:1, 16:1}, {6:1, 15:1}, {2:1, 6:1, 17:1}, {6:1, 8:1}, {6:1, 8:1}, {6:1, 8:1}, {20:1}, {3:1}, {9:1}, {10:1}, {11:1}, {21:1}, {2:1, 6:1, 22:1}, {2:1, 6:1, 22:1}, {12:1}, {13:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}, {5:1}];
 1.11672 +function caught(e){
 1.11673 +  if (e != null && canCast(e.typeId$, 2)) {
 1.11674 +    return e;
 1.11675 +  }
 1.11676 +  return $JavaScriptException(new JavaScriptException(), e);
 1.11677 +}
 1.11678 +
 1.11679 +function create(valueLow, valueHigh){
 1.11680 +  var diffHigh, diffLow;
 1.11681 +  valueHigh %= 1.8446744073709552E19;
 1.11682 +  valueLow %= 1.8446744073709552E19;
 1.11683 +  diffHigh = valueHigh % 4294967296;
 1.11684 +  diffLow = Math.floor(valueLow / 4294967296) * 4294967296;
 1.11685 +  valueHigh = valueHigh - diffHigh + diffLow;
 1.11686 +  valueLow = valueLow - diffLow + diffHigh;
 1.11687 +  while (valueLow < 0) {
 1.11688 +    valueLow += 4294967296;
 1.11689 +    valueHigh -= 4294967296;
 1.11690 +  }
 1.11691 +  while (valueLow > 4294967295) {
 1.11692 +    valueLow -= 4294967296;
 1.11693 +    valueHigh += 4294967296;
 1.11694 +  }
 1.11695 +  valueHigh = valueHigh % 1.8446744073709552E19;
 1.11696 +  while (valueHigh > 9223372032559808512) {
 1.11697 +    valueHigh -= 1.8446744073709552E19;
 1.11698 +  }
 1.11699 +  while (valueHigh < -9223372036854775808) {
 1.11700 +    valueHigh += 1.8446744073709552E19;
 1.11701 +  }
 1.11702 +  return [valueLow, valueHigh];
 1.11703 +}
 1.11704 +
 1.11705 +function fromDouble(value){
 1.11706 +  if (isNaN(value)) {
 1.11707 +    return $clinit_7() , ZERO;
 1.11708 +  }
 1.11709 +  if (value < -9223372036854775808) {
 1.11710 +    return $clinit_7() , MIN_VALUE;
 1.11711 +  }
 1.11712 +  if (value >= 9223372036854775807) {
 1.11713 +    return $clinit_7() , MAX_VALUE;
 1.11714 +  }
 1.11715 +  if (value > 0) {
 1.11716 +    return create(Math.floor(value), 0);
 1.11717 +  }
 1.11718 +   else {
 1.11719 +    return create(Math.ceil(value), 0);
 1.11720 +  }
 1.11721 +}
 1.11722 +
 1.11723 +function fromInt(value){
 1.11724 +  var rebase, result;
 1.11725 +  if (value > -129 && value < 128) {
 1.11726 +    rebase = value + 128;
 1.11727 +    result = ($clinit_6() , boxedValues)[rebase];
 1.11728 +    if (result == null) {
 1.11729 +      result = boxedValues[rebase] = internalFromInt(value);
 1.11730 +    }
 1.11731 +    return result;
 1.11732 +  }
 1.11733 +  return internalFromInt(value);
 1.11734 +}
 1.11735 +
 1.11736 +function internalFromInt(value){
 1.11737 +  if (value >= 0) {
 1.11738 +    return [value, 0];
 1.11739 +  }
 1.11740 +   else {
 1.11741 +    return [value + 4294967296, -4294967296];
 1.11742 +  }
 1.11743 +}
 1.11744 +
 1.11745 +function $clinit_6(){
 1.11746 +  $clinit_6 = nullMethod;
 1.11747 +  boxedValues = initDim(_3_3D_classLit, 53, 13, 256, 0);
 1.11748 +}
 1.11749 +
 1.11750 +var boxedValues;
 1.11751 +function $clinit_7(){
 1.11752 +  $clinit_7 = nullMethod;
 1.11753 +  Math.log(2);
 1.11754 +  MAX_VALUE = P7fffffffffffffff_longLit;
 1.11755 +  MIN_VALUE = N8000000000000000_longLit;
 1.11756 +  fromInt(-1);
 1.11757 +  fromInt(1);
 1.11758 +  fromInt(2);
 1.11759 +  ZERO = fromInt(0);
 1.11760 +}
 1.11761 +
 1.11762 +var MAX_VALUE, MIN_VALUE, ZERO;
 1.11763 +function $clinit_12(){
 1.11764 +  $clinit_12 = nullMethod;
 1.11765 +  timers = $ArrayList(new ArrayList());
 1.11766 +  addWindowCloseListener(new Timer$1());
 1.11767 +}
 1.11768 +
 1.11769 +function $cancel(this$static){
 1.11770 +  if (this$static.isRepeating) {
 1.11771 +    clearInterval(this$static.timerId);
 1.11772 +  }
 1.11773 +   else {
 1.11774 +    clearTimeout(this$static.timerId);
 1.11775 +  }
 1.11776 +  $remove_0(timers, this$static);
 1.11777 +}
 1.11778 +
 1.11779 +function $fireImpl(this$static){
 1.11780 +  if (!this$static.isRepeating) {
 1.11781 +    $remove_0(timers, this$static);
 1.11782 +  }
 1.11783 +  $run(this$static);
 1.11784 +}
 1.11785 +
 1.11786 +function $schedule(this$static, delayMillis){
 1.11787 +  if (delayMillis <= 0) {
 1.11788 +    throw $IllegalArgumentException(new IllegalArgumentException(), 'must be positive');
 1.11789 +  }
 1.11790 +  $cancel(this$static);
 1.11791 +  this$static.isRepeating = false;
 1.11792 +  this$static.timerId = createTimeout(this$static, delayMillis);
 1.11793 +  $add(timers, this$static);
 1.11794 +}
 1.11795 +
 1.11796 +function createTimeout(timer, delay){
 1.11797 +  return setTimeout(function(){
 1.11798 +    timer.fire();
 1.11799 +  }
 1.11800 +  , delay);
 1.11801 +}
 1.11802 +
 1.11803 +function fire(){
 1.11804 +  $fireImpl(this);
 1.11805 +}
 1.11806 +
 1.11807 +function getClass_4(){
 1.11808 +  return Lcom_google_gwt_user_client_Timer_2_classLit;
 1.11809 +}
 1.11810 +
 1.11811 +function Timer(){
 1.11812 +}
 1.11813 +
 1.11814 +_ = Timer.prototype = new Object_0();
 1.11815 +_.fire = fire;
 1.11816 +_.getClass$ = getClass_4;
 1.11817 +_.typeId$ = 0;
 1.11818 +_.isRepeating = false;
 1.11819 +_.timerId = 0;
 1.11820 +var timers;
 1.11821 +function $onWindowClosed(){
 1.11822 +  while (($clinit_12() , timers).size > 0) {
 1.11823 +    $cancel(dynamicCast($get_0(timers, 0), 3));
 1.11824 +  }
 1.11825 +}
 1.11826 +
 1.11827 +function getClass_3(){
 1.11828 +  return Lcom_google_gwt_user_client_Timer$1_2_classLit;
 1.11829 +}
 1.11830 +
 1.11831 +function Timer$1(){
 1.11832 +}
 1.11833 +
 1.11834 +_ = Timer$1.prototype = new Object_0();
 1.11835 +_.getClass$ = getClass_3;
 1.11836 +_.typeId$ = 7;
 1.11837 +function addWindowCloseListener(listener){
 1.11838 +  maybeInitializeHandlers();
 1.11839 +  if (!closingListeners) {
 1.11840 +    closingListeners = $ArrayList(new ArrayList());
 1.11841 +  }
 1.11842 +  $add(closingListeners, listener);
 1.11843 +}
 1.11844 +
 1.11845 +function fireClosedImpl(){
 1.11846 +  var listener$iterator;
 1.11847 +  if (closingListeners) {
 1.11848 +    for (listener$iterator = $AbstractList$IteratorImpl(new AbstractList$IteratorImpl(), closingListeners); listener$iterator.i < listener$iterator.this$0.size_0();) {
 1.11849 +      dynamicCast($next(listener$iterator), 4);
 1.11850 +      $onWindowClosed();
 1.11851 +    }
 1.11852 +  }
 1.11853 +}
 1.11854 +
 1.11855 +function fireClosingImpl(){
 1.11856 +  var listener$iterator, ret;
 1.11857 +  ret = null;
 1.11858 +  if (closingListeners) {
 1.11859 +    for (listener$iterator = $AbstractList$IteratorImpl(new AbstractList$IteratorImpl(), closingListeners); listener$iterator.i < listener$iterator.this$0.size_0();) {
 1.11860 +      dynamicCast($next(listener$iterator), 4);
 1.11861 +      ret = null;
 1.11862 +    }
 1.11863 +  }
 1.11864 +  return ret;
 1.11865 +}
 1.11866 +
 1.11867 +function __init__xxx__(){
 1.11868 +  __gwt_initHandlers(function(){
 1.11869 +  }
 1.11870 +  , function(){
 1.11871 +    return fireClosingImpl();
 1.11872 +  }
 1.11873 +  , function(){
 1.11874 +    fireClosedImpl();
 1.11875 +  }
 1.11876 +  );
 1.11877 +}
 1.11878 +
 1.11879 +function maybeInitializeHandlers(){
 1.11880 +  if (!handlersAreInitialized) {
 1.11881 +    // __init__xxx__();
 1.11882 +    handlersAreInitialized = true;
 1.11883 +  }
 1.11884 +}
 1.11885 +
 1.11886 +var closingListeners = null, handlersAreInitialized = false;
 1.11887 +function $ArrayStoreException(this$static, message){
 1.11888 +  this$static.detailMessage = message;
 1.11889 +  return this$static;
 1.11890 +}
 1.11891 +
 1.11892 +function getClass_5(){
 1.11893 +  return Ljava_lang_ArrayStoreException_2_classLit;
 1.11894 +}
 1.11895 +
 1.11896 +function ArrayStoreException(){
 1.11897 +}
 1.11898 +
 1.11899 +_ = ArrayStoreException.prototype = new RuntimeException();
 1.11900 +_.getClass$ = getClass_5;
 1.11901 +_.typeId$ = 9;
 1.11902 +function createForArray(packageName, className){
 1.11903 +  var clazz;
 1.11904 +  clazz = new Class();
 1.11905 +  clazz.typeName = packageName + className;
 1.11906 +  clazz.modifiers = 4;
 1.11907 +  return clazz;
 1.11908 +}
 1.11909 +
 1.11910 +function createForClass(packageName, className){
 1.11911 +  var clazz;
 1.11912 +  clazz = new Class();
 1.11913 +  clazz.typeName = packageName + className;
 1.11914 +  return clazz;
 1.11915 +}
 1.11916 +
 1.11917 +function createForEnum(packageName, className){
 1.11918 +  var clazz;
 1.11919 +  clazz = new Class();
 1.11920 +  clazz.typeName = packageName + className;
 1.11921 +  clazz.modifiers = 8;
 1.11922 +  return clazz;
 1.11923 +}
 1.11924 +
 1.11925 +function getClass_7(){
 1.11926 +  return Ljava_lang_Class_2_classLit;
 1.11927 +}
 1.11928 +
 1.11929 +function toString_1(){
 1.11930 +  return ((this.modifiers & 2) != 0?'interface ':(this.modifiers & 1) != 0?'':'class ') + this.typeName;
 1.11931 +}
 1.11932 +
 1.11933 +function Class(){
 1.11934 +}
 1.11935 +
 1.11936 +_ = Class.prototype = new Object_0();
 1.11937 +_.getClass$ = getClass_7;
 1.11938 +_.toString$ = toString_1;
 1.11939 +_.typeId$ = 0;
 1.11940 +_.modifiers = 0;
 1.11941 +_.typeName = null;
 1.11942 +function getClass_6(){
 1.11943 +  return Ljava_lang_ClassCastException_2_classLit;
 1.11944 +}
 1.11945 +
 1.11946 +function ClassCastException(){
 1.11947 +}
 1.11948 +
 1.11949 +_ = ClassCastException.prototype = new RuntimeException();
 1.11950 +_.getClass$ = getClass_6;
 1.11951 +_.typeId$ = 12;
 1.11952 +function compareTo(other){
 1.11953 +  return this.ordinal - other.ordinal;
 1.11954 +}
 1.11955 +
 1.11956 +function equals_0(other){
 1.11957 +  return (this == null?null:this) === (other == null?null:other);
 1.11958 +}
 1.11959 +
 1.11960 +function getClass_8(){
 1.11961 +  return Ljava_lang_Enum_2_classLit;
 1.11962 +}
 1.11963 +
 1.11964 +function hashCode_1(){
 1.11965 +  return this.$H || (this.$H = ++sNextHashId);
 1.11966 +}
 1.11967 +
 1.11968 +function toString_2(){
 1.11969 +  return this.name_0;
 1.11970 +}
 1.11971 +
 1.11972 +function Enum(){
 1.11973 +}
 1.11974 +
 1.11975 +_ = Enum.prototype = new Object_0();
 1.11976 +_.compareTo$ = compareTo;
 1.11977 +_.equals$ = equals_0;
 1.11978 +_.getClass$ = getClass_8;
 1.11979 +_.hashCode$ = hashCode_1;
 1.11980 +_.toString$ = toString_2;
 1.11981 +_.typeId$ = 13;
 1.11982 +_.name_0 = null;
 1.11983 +_.ordinal = 0;
 1.11984 +function $IllegalArgumentException(this$static, message){
 1.11985 +  this$static.detailMessage = message;
 1.11986 +  return this$static;
 1.11987 +}
 1.11988 +
 1.11989 +function getClass_10(){
 1.11990 +  return Ljava_lang_IllegalArgumentException_2_classLit;
 1.11991 +}
 1.11992 +
 1.11993 +function IllegalArgumentException(){
 1.11994 +}
 1.11995 +
 1.11996 +_ = IllegalArgumentException.prototype = new RuntimeException();
 1.11997 +_.getClass$ = getClass_10;
 1.11998 +_.typeId$ = 14;
 1.11999 +function $IndexOutOfBoundsException(this$static, message){
 1.12000 +  this$static.detailMessage = message;
 1.12001 +  return this$static;
 1.12002 +}
 1.12003 +
 1.12004 +function getClass_11(){
 1.12005 +  return Ljava_lang_IndexOutOfBoundsException_2_classLit;
 1.12006 +}
 1.12007 +
 1.12008 +function IndexOutOfBoundsException(){
 1.12009 +}
 1.12010 +
 1.12011 +_ = IndexOutOfBoundsException.prototype = new RuntimeException();
 1.12012 +_.getClass$ = getClass_11;
 1.12013 +_.typeId$ = 15;
 1.12014 +function toPowerOfTwoString(value, shift){
 1.12015 +  var bitMask, buf, bufSize, pos;
 1.12016 +  bufSize = ~~(32 / shift);
 1.12017 +  bitMask = (1 << shift) - 1;
 1.12018 +  buf = initDim(_3C_classLit, 42, -1, bufSize, 1);
 1.12019 +  pos = bufSize - 1;
 1.12020 +  if (value >= 0) {
 1.12021 +    while (value > bitMask) {
 1.12022 +      buf[pos--] = ($clinit_31() , digits)[value & bitMask];
 1.12023 +      value >>= shift;
 1.12024 +    }
 1.12025 +  }
 1.12026 +   else {
 1.12027 +    while (pos > 0) {
 1.12028 +      buf[pos--] = ($clinit_31() , digits)[value & bitMask];
 1.12029 +      value >>= shift;
 1.12030 +    }
 1.12031 +  }
 1.12032 +  buf[pos] = ($clinit_31() , digits)[value & bitMask];
 1.12033 +  return __valueOf(buf, pos, bufSize);
 1.12034 +}
 1.12035 +
 1.12036 +function getClass_12(){
 1.12037 +  return Ljava_lang_NullPointerException_2_classLit;
 1.12038 +}
 1.12039 +
 1.12040 +function NullPointerException(){
 1.12041 +}
 1.12042 +
 1.12043 +_ = NullPointerException.prototype = new RuntimeException();
 1.12044 +_.getClass$ = getClass_12;
 1.12045 +_.typeId$ = 16;
 1.12046 +function $clinit_31(){
 1.12047 +  $clinit_31 = nullMethod;
 1.12048 +  digits = initValues(_3C_classLit, 42, -1, [48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122]);
 1.12049 +}
 1.12050 +
 1.12051 +var digits;
 1.12052 +function $equals_0(this$static, other){
 1.12053 +  if (!(other != null && canCast(other.typeId$, 1))) {
 1.12054 +    return false;
 1.12055 +  }
 1.12056 +  return String(this$static) == other;
 1.12057 +}
 1.12058 +
 1.12059 +function $getChars_0(this$static, srcBegin, srcEnd, dst, dstBegin){
 1.12060 +  var srcIdx;
 1.12061 +  for (srcIdx = srcBegin; srcIdx < srcEnd; ++srcIdx) {
 1.12062 +    dst[dstBegin++] = this$static.charCodeAt(srcIdx);
 1.12063 +  }
 1.12064 +}
 1.12065 +
 1.12066 +function $toCharArray(this$static){
 1.12067 +  var charArr, n;
 1.12068 +  n = this$static.length;
 1.12069 +  charArr = initDim(_3C_classLit, 42, -1, n, 1);
 1.12070 +  $getChars_0(this$static, 0, n, charArr, 0);
 1.12071 +  return charArr;
 1.12072 +}
 1.12073 +
 1.12074 +function __checkBounds(legalCount, start, end){
 1.12075 +  if (start < 0) {
 1.12076 +    throw $StringIndexOutOfBoundsException(new StringIndexOutOfBoundsException(), start);
 1.12077 +  }
 1.12078 +  if (end < start) {
 1.12079 +    throw $StringIndexOutOfBoundsException(new StringIndexOutOfBoundsException(), end - start);
 1.12080 +  }
 1.12081 +  if (end > legalCount) {
 1.12082 +    throw $StringIndexOutOfBoundsException(new StringIndexOutOfBoundsException(), end);
 1.12083 +  }
 1.12084 +}
 1.12085 +
 1.12086 +function __valueOf(x, start, end){
 1.12087 +  x = x.slice(start, end);
 1.12088 +  return String.fromCharCode.apply(null, x);
 1.12089 +}
 1.12090 +
 1.12091 +function compareTo_1(thisStr, otherStr){
 1.12092 +  thisStr = String(thisStr);
 1.12093 +  if (thisStr == otherStr) {
 1.12094 +    return 0;
 1.12095 +  }
 1.12096 +  return thisStr < otherStr?-1:1;
 1.12097 +}
 1.12098 +
 1.12099 +function compareTo_0(other){
 1.12100 +  return compareTo_1(this, other);
 1.12101 +}
 1.12102 +
 1.12103 +function equals_2(other){
 1.12104 +  return $equals_0(this, other);
 1.12105 +}
 1.12106 +
 1.12107 +function getClass_18(){
 1.12108 +  return Ljava_lang_String_2_classLit;
 1.12109 +}
 1.12110 +
 1.12111 +function hashCode_3(){
 1.12112 +  return getHashCode_0(this);
 1.12113 +}
 1.12114 +
 1.12115 +function toString_6(){
 1.12116 +  return this;
 1.12117 +}
 1.12118 +
 1.12119 +function valueOf_1(x, offset, count){
 1.12120 +  var end;
 1.12121 +  end = offset + count;
 1.12122 +  __checkBounds(x.length, offset, end);
 1.12123 +  return __valueOf(x, offset, end);
 1.12124 +}
 1.12125 +
 1.12126 +_ = String.prototype;
 1.12127 +_.compareTo$ = compareTo_0;
 1.12128 +_.equals$ = equals_2;
 1.12129 +_.getClass$ = getClass_18;
 1.12130 +_.hashCode$ = hashCode_3;
 1.12131 +_.toString$ = toString_6;
 1.12132 +_.typeId$ = 2;
 1.12133 +function $clinit_35(){
 1.12134 +  $clinit_35 = nullMethod;
 1.12135 +  back = {};
 1.12136 +  front = {};
 1.12137 +}
 1.12138 +
 1.12139 +function compute(str){
 1.12140 +  var hashCode, i, inc, n;
 1.12141 +  n = str.length;
 1.12142 +  inc = n < 64?1:~~(n / 32);
 1.12143 +  hashCode = 0;
 1.12144 +  for (i = 0; i < n; i += inc) {
 1.12145 +    hashCode <<= 1;
 1.12146 +    hashCode += str.charCodeAt(i);
 1.12147 +  }
 1.12148 +  hashCode |= 0;
 1.12149 +  return hashCode;
 1.12150 +}
 1.12151 +
 1.12152 +function getHashCode_0(str){
 1.12153 +  $clinit_35();
 1.12154 +  var key = ':' + str;
 1.12155 +  var result = front[key];
 1.12156 +  if (result != null) {
 1.12157 +    return result;
 1.12158 +  }
 1.12159 +  result = back[key];
 1.12160 +  if (result == null) {
 1.12161 +    result = compute(str);
 1.12162 +  }
 1.12163 +  increment();
 1.12164 +  return front[key] = result;
 1.12165 +}
 1.12166 +
 1.12167 +function increment(){
 1.12168 +  if (count_0 == 256) {
 1.12169 +    back = front;
 1.12170 +    front = {};
 1.12171 +    count_0 = 0;
 1.12172 +  }
 1.12173 +  ++count_0;
 1.12174 +}
 1.12175 +
 1.12176 +var back, count_0 = 0, front;
 1.12177 +function $StringBuffer(this$static){
 1.12178 +  this$static.builder = $StringBuilder(new StringBuilder());
 1.12179 +  return this$static;
 1.12180 +}
 1.12181 +
 1.12182 +function $append(this$static, toAppend){
 1.12183 +  $append_0(this$static.builder, toAppend);
 1.12184 +  return this$static;
 1.12185 +}
 1.12186 +
 1.12187 +function getClass_15(){
 1.12188 +  return Ljava_lang_StringBuffer_2_classLit;
 1.12189 +}
 1.12190 +
 1.12191 +function toString_4(){
 1.12192 +  return $toString_0(this.builder);
 1.12193 +}
 1.12194 +
 1.12195 +function StringBuffer(){
 1.12196 +}
 1.12197 +
 1.12198 +_ = StringBuffer.prototype = new Object_0();
 1.12199 +_.getClass$ = getClass_15;
 1.12200 +_.toString$ = toString_4;
 1.12201 +_.typeId$ = 17;
 1.12202 +function $StringBuilder(this$static){
 1.12203 +  this$static.stringArray = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 0, 0);
 1.12204 +  return this$static;
 1.12205 +}
 1.12206 +
 1.12207 +function $append_0(this$static, toAppend){
 1.12208 +  var appendLength;
 1.12209 +  if (toAppend == null) {
 1.12210 +    toAppend = 'null';
 1.12211 +  }
 1.12212 +  appendLength = toAppend.length;
 1.12213 +  if (appendLength > 0) {
 1.12214 +    this$static.stringArray[this$static.arrayLen++] = toAppend;
 1.12215 +    this$static.stringLength += appendLength;
 1.12216 +    if (this$static.arrayLen > 1024) {
 1.12217 +      $toString_0(this$static);
 1.12218 +      this$static.stringArray.length = 1024;
 1.12219 +    }
 1.12220 +  }
 1.12221 +  return this$static;
 1.12222 +}
 1.12223 +
 1.12224 +function $getChars(this$static, srcStart, srcEnd, dst, dstStart){
 1.12225 +  var s;
 1.12226 +  __checkBounds(this$static.stringLength, srcStart, srcEnd);
 1.12227 +  __checkBounds(dst.length, dstStart, dstStart + (srcEnd - srcStart));
 1.12228 +  s = $toString_0(this$static);
 1.12229 +  while (srcStart < srcEnd) {
 1.12230 +    dst[dstStart++] = s.charCodeAt(srcStart++);
 1.12231 +  }
 1.12232 +}
 1.12233 +
 1.12234 +function $setLength(this$static, newLength){
 1.12235 +  var oldLength, s;
 1.12236 +  oldLength = this$static.stringLength;
 1.12237 +  if (newLength < oldLength) {
 1.12238 +    s = $toString_0(this$static);
 1.12239 +    this$static.stringArray = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [s.substr(0, newLength - 0), '', s.substr(oldLength, s.length - oldLength)]);
 1.12240 +    this$static.arrayLen = 3;
 1.12241 +    this$static.stringLength += ''.length - (oldLength - newLength);
 1.12242 +  }
 1.12243 +   else if (newLength > oldLength) {
 1.12244 +    $append_0(this$static, String.fromCharCode.apply(null, initDim(_3C_classLit, 42, -1, newLength - oldLength, 1)));
 1.12245 +  }
 1.12246 +}
 1.12247 +
 1.12248 +function $toString_0(this$static){
 1.12249 +  var s;
 1.12250 +  if (this$static.arrayLen != 1) {
 1.12251 +    this$static.stringArray.length = this$static.arrayLen;
 1.12252 +    s = this$static.stringArray.join('');
 1.12253 +    this$static.stringArray = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [s]);
 1.12254 +    this$static.arrayLen = 1;
 1.12255 +  }
 1.12256 +  return this$static.stringArray[0];
 1.12257 +}
 1.12258 +
 1.12259 +function getClass_16(){
 1.12260 +  return Ljava_lang_StringBuilder_2_classLit;
 1.12261 +}
 1.12262 +
 1.12263 +function toString_5(){
 1.12264 +  return $toString_0(this);
 1.12265 +}
 1.12266 +
 1.12267 +function StringBuilder(){
 1.12268 +}
 1.12269 +
 1.12270 +_ = StringBuilder.prototype = new Object_0();
 1.12271 +_.getClass$ = getClass_16;
 1.12272 +_.toString$ = toString_5;
 1.12273 +_.typeId$ = 18;
 1.12274 +_.arrayLen = 0;
 1.12275 +_.stringLength = 0;
 1.12276 +function $StringIndexOutOfBoundsException(this$static, index){
 1.12277 +  this$static.detailMessage = 'String index out of range: ' + index;
 1.12278 +  return this$static;
 1.12279 +}
 1.12280 +
 1.12281 +function getClass_17(){
 1.12282 +  return Ljava_lang_StringIndexOutOfBoundsException_2_classLit;
 1.12283 +}
 1.12284 +
 1.12285 +function StringIndexOutOfBoundsException(){
 1.12286 +}
 1.12287 +
 1.12288 +_ = StringIndexOutOfBoundsException.prototype = new IndexOutOfBoundsException();
 1.12289 +_.getClass$ = getClass_17;
 1.12290 +_.typeId$ = 19;
 1.12291 +function arraycopy(src, srcOfs, dest, destOfs, len){
 1.12292 +  var destArray, destEnd, destTypeName, destlen, srcArray, srcTypeName, srclen;
 1.12293 +  if (src == null || dest == null) {
 1.12294 +    throw new NullPointerException();
 1.12295 +  }
 1.12296 +  srcTypeName = (src.typeMarker$ == nullMethod || src.typeId$ == 2?src.getClass$():Lcom_google_gwt_core_client_JavaScriptObject_2_classLit).typeName;
 1.12297 +  destTypeName = (dest.typeMarker$ == nullMethod || dest.typeId$ == 2?dest.getClass$():Lcom_google_gwt_core_client_JavaScriptObject_2_classLit).typeName;
 1.12298 +  if (srcTypeName.charCodeAt(0) != 91 || destTypeName.charCodeAt(0) != 91) {
 1.12299 +    throw $ArrayStoreException(new ArrayStoreException(), 'Must be array types');
 1.12300 +  }
 1.12301 +  if (srcTypeName.charCodeAt(1) != destTypeName.charCodeAt(1)) {
 1.12302 +    throw $ArrayStoreException(new ArrayStoreException(), 'Array types must match');
 1.12303 +  }
 1.12304 +  srclen = src.length;
 1.12305 +  destlen = dest.length;
 1.12306 +  if (srcOfs < 0 || destOfs < 0 || len < 0 || srcOfs + len > srclen || destOfs + len > destlen) {
 1.12307 +    throw new IndexOutOfBoundsException();
 1.12308 +  }
 1.12309 +  if ((srcTypeName.charCodeAt(1) == 76 || srcTypeName.charCodeAt(1) == 91) && !$equals_0(srcTypeName, destTypeName)) {
 1.12310 +    srcArray = dynamicCast(src, 5);
 1.12311 +    destArray = dynamicCast(dest, 5);
 1.12312 +    if ((src == null?null:src) === (dest == null?null:dest) && srcOfs < destOfs) {
 1.12313 +      srcOfs += len;
 1.12314 +      for (destEnd = destOfs + len; destEnd-- > destOfs;) {
 1.12315 +        setCheck(destArray, destEnd, srcArray[--srcOfs]);
 1.12316 +      }
 1.12317 +    }
 1.12318 +     else {
 1.12319 +      for (destEnd = destOfs + len; destOfs < destEnd;) {
 1.12320 +        setCheck(destArray, destOfs++, srcArray[srcOfs++]);
 1.12321 +      }
 1.12322 +    }
 1.12323 +  }
 1.12324 +   else {
 1.12325 +    Array.prototype.splice.apply(dest, [destOfs, len].concat(src.slice(srcOfs, srcOfs + len)));
 1.12326 +  }
 1.12327 +}
 1.12328 +
 1.12329 +function $UnsupportedOperationException(this$static, message){
 1.12330 +  this$static.detailMessage = message;
 1.12331 +  return this$static;
 1.12332 +}
 1.12333 +
 1.12334 +function getClass_20(){
 1.12335 +  return Ljava_lang_UnsupportedOperationException_2_classLit;
 1.12336 +}
 1.12337 +
 1.12338 +function UnsupportedOperationException(){
 1.12339 +}
 1.12340 +
 1.12341 +_ = UnsupportedOperationException.prototype = new RuntimeException();
 1.12342 +_.getClass$ = getClass_20;
 1.12343 +_.typeId$ = 20;
 1.12344 +function $advanceToFind(iter, o){
 1.12345 +  var t;
 1.12346 +  while (iter.hasNext()) {
 1.12347 +    t = iter.next_0();
 1.12348 +    if (o == null?t == null:equals__devirtual$(o, t)) {
 1.12349 +      return iter;
 1.12350 +    }
 1.12351 +  }
 1.12352 +  return null;
 1.12353 +}
 1.12354 +
 1.12355 +function add(o){
 1.12356 +  throw $UnsupportedOperationException(new UnsupportedOperationException(), 'Add not supported on this collection');
 1.12357 +}
 1.12358 +
 1.12359 +function contains(o){
 1.12360 +  var iter;
 1.12361 +  iter = $advanceToFind(this.iterator(), o);
 1.12362 +  return !!iter;
 1.12363 +}
 1.12364 +
 1.12365 +function getClass_21(){
 1.12366 +  return Ljava_util_AbstractCollection_2_classLit;
 1.12367 +}
 1.12368 +
 1.12369 +function toString_8(){
 1.12370 +  var comma, iter, sb;
 1.12371 +  sb = $StringBuffer(new StringBuffer());
 1.12372 +  comma = null;
 1.12373 +  $append_0(sb.builder, '[');
 1.12374 +  iter = this.iterator();
 1.12375 +  while (iter.hasNext()) {
 1.12376 +    if (comma != null) {
 1.12377 +      $append_0(sb.builder, comma);
 1.12378 +    }
 1.12379 +     else {
 1.12380 +      comma = ', ';
 1.12381 +    }
 1.12382 +    $append(sb, '' + iter.next_0());
 1.12383 +  }
 1.12384 +  $append_0(sb.builder, ']');
 1.12385 +  return $toString_0(sb.builder);
 1.12386 +}
 1.12387 +
 1.12388 +function AbstractCollection(){
 1.12389 +}
 1.12390 +
 1.12391 +_ = AbstractCollection.prototype = new Object_0();
 1.12392 +_.add_1 = add;
 1.12393 +_.contains = contains;
 1.12394 +_.getClass$ = getClass_21;
 1.12395 +_.toString$ = toString_8;
 1.12396 +_.typeId$ = 0;
 1.12397 +function equals_5(obj){
 1.12398 +  var entry, entry$iterator, otherKey, otherMap, otherValue;
 1.12399 +  if ((obj == null?null:obj) === (this == null?null:this)) {
 1.12400 +    return true;
 1.12401 +  }
 1.12402 +  if (!(obj != null && canCast(obj.typeId$, 16))) {
 1.12403 +    return false;
 1.12404 +  }
 1.12405 +  otherMap = dynamicCast(obj, 16);
 1.12406 +  if (dynamicCast(this, 16).size != otherMap.size) {
 1.12407 +    return false;
 1.12408 +  }
 1.12409 +  for (entry$iterator = $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), $AbstractHashMap$EntrySet(new AbstractHashMap$EntrySet(), otherMap).this$0); $hasNext(entry$iterator.iter);) {
 1.12410 +    entry = dynamicCast($next(entry$iterator.iter), 14);
 1.12411 +    otherKey = entry.getKey();
 1.12412 +    otherValue = entry.getValue();
 1.12413 +    if (!(otherKey == null?dynamicCast(this, 16).nullSlotLive:otherKey != null?$hasStringValue(dynamicCast(this, 16), otherKey):$hasHashValue(dynamicCast(this, 16), otherKey, ~~getHashCode_0(otherKey)))) {
 1.12414 +      return false;
 1.12415 +    }
 1.12416 +    if (!equalsWithNullCheck(otherValue, otherKey == null?dynamicCast(this, 16).nullSlot:otherKey != null?dynamicCast(this, 16).stringMap[':' + otherKey]:$getHashValue(dynamicCast(this, 16), otherKey, ~~getHashCode_0(otherKey)))) {
 1.12417 +      return false;
 1.12418 +    }
 1.12419 +  }
 1.12420 +  return true;
 1.12421 +}
 1.12422 +
 1.12423 +function getClass_31(){
 1.12424 +  return Ljava_util_AbstractMap_2_classLit;
 1.12425 +}
 1.12426 +
 1.12427 +function hashCode_6(){
 1.12428 +  var entry, entry$iterator, hashCode;
 1.12429 +  hashCode = 0;
 1.12430 +  for (entry$iterator = $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), $AbstractHashMap$EntrySet(new AbstractHashMap$EntrySet(), dynamicCast(this, 16)).this$0); $hasNext(entry$iterator.iter);) {
 1.12431 +    entry = dynamicCast($next(entry$iterator.iter), 14);
 1.12432 +    hashCode += entry.hashCode$();
 1.12433 +    hashCode = ~~hashCode;
 1.12434 +  }
 1.12435 +  return hashCode;
 1.12436 +}
 1.12437 +
 1.12438 +function toString_10(){
 1.12439 +  var comma, entry, iter, s;
 1.12440 +  s = '{';
 1.12441 +  comma = false;
 1.12442 +  for (iter = $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), $AbstractHashMap$EntrySet(new AbstractHashMap$EntrySet(), dynamicCast(this, 16)).this$0); $hasNext(iter.iter);) {
 1.12443 +    entry = dynamicCast($next(iter.iter), 14);
 1.12444 +    if (comma) {
 1.12445 +      s += ', ';
 1.12446 +    }
 1.12447 +     else {
 1.12448 +      comma = true;
 1.12449 +    }
 1.12450 +    s += '' + entry.getKey();
 1.12451 +    s += '=';
 1.12452 +    s += '' + entry.getValue();
 1.12453 +  }
 1.12454 +  return s + '}';
 1.12455 +}
 1.12456 +
 1.12457 +function AbstractMap(){
 1.12458 +}
 1.12459 +
 1.12460 +_ = AbstractMap.prototype = new Object_0();
 1.12461 +_.equals$ = equals_5;
 1.12462 +_.getClass$ = getClass_31;
 1.12463 +_.hashCode$ = hashCode_6;
 1.12464 +_.toString$ = toString_10;
 1.12465 +_.typeId$ = 0;
 1.12466 +function $addAllHashEntries(this$static, dest){
 1.12467 +  var hashCodeMap = this$static.hashCodeMap;
 1.12468 +  for (var hashCode in hashCodeMap) {
 1.12469 +    if (hashCode == parseInt(hashCode)) {
 1.12470 +      var array = hashCodeMap[hashCode];
 1.12471 +      for (var i = 0, c = array.length; i < c; ++i) {
 1.12472 +        dest.add_1(array[i]);
 1.12473 +      }
 1.12474 +    }
 1.12475 +  }
 1.12476 +}
 1.12477 +
 1.12478 +function $addAllStringEntries(this$static, dest){
 1.12479 +  var stringMap = this$static.stringMap;
 1.12480 +  for (var key in stringMap) {
 1.12481 +    if (key.charCodeAt(0) == 58) {
 1.12482 +      var entry = new_$(this$static, key.substring(1));
 1.12483 +      dest.add_1(entry);
 1.12484 +    }
 1.12485 +  }
 1.12486 +}
 1.12487 +
 1.12488 +function $clearImpl(this$static){
 1.12489 +  this$static.hashCodeMap = [];
 1.12490 +  this$static.stringMap = {};
 1.12491 +  this$static.nullSlotLive = false;
 1.12492 +  this$static.nullSlot = null;
 1.12493 +  this$static.size = 0;
 1.12494 +}
 1.12495 +
 1.12496 +function $containsKey(this$static, key){
 1.12497 +  return key == null?this$static.nullSlotLive:key != null?':' + key in this$static.stringMap:$hasHashValue(this$static, key, ~~getHashCode_0(key));
 1.12498 +}
 1.12499 +
 1.12500 +function $get(this$static, key){
 1.12501 +  return key == null?this$static.nullSlot:key != null?this$static.stringMap[':' + key]:$getHashValue(this$static, key, ~~getHashCode_0(key));
 1.12502 +}
 1.12503 +
 1.12504 +function $getHashValue(this$static, key, hashCode){
 1.12505 +  var array = this$static.hashCodeMap[hashCode];
 1.12506 +  if (array) {
 1.12507 +    for (var i = 0, c = array.length; i < c; ++i) {
 1.12508 +      var entry = array[i];
 1.12509 +      var entryKey = entry.getKey();
 1.12510 +      if (this$static.equalsBridge(key, entryKey)) {
 1.12511 +        return entry.getValue();
 1.12512 +      }
 1.12513 +    }
 1.12514 +  }
 1.12515 +  return null;
 1.12516 +}
 1.12517 +
 1.12518 +function $hasHashValue(this$static, key, hashCode){
 1.12519 +  var array = this$static.hashCodeMap[hashCode];
 1.12520 +  if (array) {
 1.12521 +    for (var i = 0, c = array.length; i < c; ++i) {
 1.12522 +      var entry = array[i];
 1.12523 +      var entryKey = entry.getKey();
 1.12524 +      if (this$static.equalsBridge(key, entryKey)) {
 1.12525 +        return true;
 1.12526 +      }
 1.12527 +    }
 1.12528 +  }
 1.12529 +  return false;
 1.12530 +}
 1.12531 +
 1.12532 +function $hasStringValue(this$static, key){
 1.12533 +  return ':' + key in this$static.stringMap;
 1.12534 +}
 1.12535 +
 1.12536 +function equalsBridge(value1, value2){
 1.12537 +  return (value1 == null?null:value1) === (value2 == null?null:value2) || value1 != null && equals__devirtual$(value1, value2);
 1.12538 +}
 1.12539 +
 1.12540 +function getClass_26(){
 1.12541 +  return Ljava_util_AbstractHashMap_2_classLit;
 1.12542 +}
 1.12543 +
 1.12544 +function AbstractHashMap(){
 1.12545 +}
 1.12546 +
 1.12547 +_ = AbstractHashMap.prototype = new AbstractMap();
 1.12548 +_.equalsBridge = equalsBridge;
 1.12549 +_.getClass$ = getClass_26;
 1.12550 +_.typeId$ = 0;
 1.12551 +_.hashCodeMap = null;
 1.12552 +_.nullSlot = null;
 1.12553 +_.nullSlotLive = false;
 1.12554 +_.size = 0;
 1.12555 +_.stringMap = null;
 1.12556 +function equals_6(o){
 1.12557 +  var iter, other, otherItem;
 1.12558 +  if ((o == null?null:o) === (this == null?null:this)) {
 1.12559 +    return true;
 1.12560 +  }
 1.12561 +  if (!(o != null && canCast(o.typeId$, 18))) {
 1.12562 +    return false;
 1.12563 +  }
 1.12564 +  other = dynamicCast(o, 18);
 1.12565 +  if (other.this$0.size != this.size_0()) {
 1.12566 +    return false;
 1.12567 +  }
 1.12568 +  for (iter = $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), other.this$0); $hasNext(iter.iter);) {
 1.12569 +    otherItem = dynamicCast($next(iter.iter), 14);
 1.12570 +    if (!this.contains(otherItem)) {
 1.12571 +      return false;
 1.12572 +    }
 1.12573 +  }
 1.12574 +  return true;
 1.12575 +}
 1.12576 +
 1.12577 +function getClass_33(){
 1.12578 +  return Ljava_util_AbstractSet_2_classLit;
 1.12579 +}
 1.12580 +
 1.12581 +function hashCode_7(){
 1.12582 +  var hashCode, iter, next;
 1.12583 +  hashCode = 0;
 1.12584 +  for (iter = this.iterator(); iter.hasNext();) {
 1.12585 +    next = iter.next_0();
 1.12586 +    if (next != null) {
 1.12587 +      hashCode += hashCode__devirtual$(next);
 1.12588 +      hashCode = ~~hashCode;
 1.12589 +    }
 1.12590 +  }
 1.12591 +  return hashCode;
 1.12592 +}
 1.12593 +
 1.12594 +function AbstractSet(){
 1.12595 +}
 1.12596 +
 1.12597 +_ = AbstractSet.prototype = new AbstractCollection();
 1.12598 +_.equals$ = equals_6;
 1.12599 +_.getClass$ = getClass_33;
 1.12600 +_.hashCode$ = hashCode_7;
 1.12601 +_.typeId$ = 0;
 1.12602 +function $AbstractHashMap$EntrySet(this$static, this$0){
 1.12603 +  this$static.this$0 = this$0;
 1.12604 +  return this$static;
 1.12605 +}
 1.12606 +
 1.12607 +function contains_0(o){
 1.12608 +  var entry, key, value;
 1.12609 +  if (o != null && canCast(o.typeId$, 14)) {
 1.12610 +    entry = dynamicCast(o, 14);
 1.12611 +    key = entry.getKey();
 1.12612 +    if ($containsKey(this.this$0, key)) {
 1.12613 +      value = $get(this.this$0, key);
 1.12614 +      return $equals_1(entry.getValue(), value);
 1.12615 +    }
 1.12616 +  }
 1.12617 +  return false;
 1.12618 +}
 1.12619 +
 1.12620 +function getClass_23(){
 1.12621 +  return Ljava_util_AbstractHashMap$EntrySet_2_classLit;
 1.12622 +}
 1.12623 +
 1.12624 +function iterator(){
 1.12625 +  return $AbstractHashMap$EntrySetIterator(new AbstractHashMap$EntrySetIterator(), this.this$0);
 1.12626 +}
 1.12627 +
 1.12628 +function size_0(){
 1.12629 +  return this.this$0.size;
 1.12630 +}
 1.12631 +
 1.12632 +function AbstractHashMap$EntrySet(){
 1.12633 +}
 1.12634 +
 1.12635 +_ = AbstractHashMap$EntrySet.prototype = new AbstractSet();
 1.12636 +_.contains = contains_0;
 1.12637 +_.getClass$ = getClass_23;
 1.12638 +_.iterator = iterator;
 1.12639 +_.size_0 = size_0;
 1.12640 +_.typeId$ = 21;
 1.12641 +_.this$0 = null;
 1.12642 +function $AbstractHashMap$EntrySetIterator(this$static, this$0){
 1.12643 +  var list;
 1.12644 +  this$static.this$0 = this$0;
 1.12645 +  list = $ArrayList(new ArrayList());
 1.12646 +  if (this$static.this$0.nullSlotLive) {
 1.12647 +    $add(list, $AbstractHashMap$MapEntryNull(new AbstractHashMap$MapEntryNull(), this$static.this$0));
 1.12648 +  }
 1.12649 +  $addAllStringEntries(this$static.this$0, list);
 1.12650 +  $addAllHashEntries(this$static.this$0, list);
 1.12651 +  this$static.iter = $AbstractList$IteratorImpl(new AbstractList$IteratorImpl(), list);
 1.12652 +  return this$static;
 1.12653 +}
 1.12654 +
 1.12655 +function getClass_22(){
 1.12656 +  return Ljava_util_AbstractHashMap$EntrySetIterator_2_classLit;
 1.12657 +}
 1.12658 +
 1.12659 +function hasNext(){
 1.12660 +  return $hasNext(this.iter);
 1.12661 +}
 1.12662 +
 1.12663 +function next_0(){
 1.12664 +  return dynamicCast($next(this.iter), 14);
 1.12665 +}
 1.12666 +
 1.12667 +function AbstractHashMap$EntrySetIterator(){
 1.12668 +}
 1.12669 +
 1.12670 +_ = AbstractHashMap$EntrySetIterator.prototype = new Object_0();
 1.12671 +_.getClass$ = getClass_22;
 1.12672 +_.hasNext = hasNext;
 1.12673 +_.next_0 = next_0;
 1.12674 +_.typeId$ = 0;
 1.12675 +_.iter = null;
 1.12676 +_.this$0 = null;
 1.12677 +function equals_4(other){
 1.12678 +  var entry;
 1.12679 +  if (other != null && canCast(other.typeId$, 14)) {
 1.12680 +    entry = dynamicCast(other, 14);
 1.12681 +    if (equalsWithNullCheck(this.getKey(), entry.getKey()) && equalsWithNullCheck(this.getValue(), entry.getValue())) {
 1.12682 +      return true;
 1.12683 +    }
 1.12684 +  }
 1.12685 +  return false;
 1.12686 +}
 1.12687 +
 1.12688 +function getClass_30(){
 1.12689 +  return Ljava_util_AbstractMapEntry_2_classLit;
 1.12690 +}
 1.12691 +
 1.12692 +function hashCode_5(){
 1.12693 +  var keyHash, valueHash;
 1.12694 +  keyHash = 0;
 1.12695 +  valueHash = 0;
 1.12696 +  if (this.getKey() != null) {
 1.12697 +    keyHash = getHashCode_0(this.getKey());
 1.12698 +  }
 1.12699 +  if (this.getValue() != null) {
 1.12700 +    valueHash = hashCode__devirtual$(this.getValue());
 1.12701 +  }
 1.12702 +  return keyHash ^ valueHash;
 1.12703 +}
 1.12704 +
 1.12705 +function toString_9(){
 1.12706 +  return this.getKey() + '=' + this.getValue();
 1.12707 +}
 1.12708 +
 1.12709 +function AbstractMapEntry(){
 1.12710 +}
 1.12711 +
 1.12712 +_ = AbstractMapEntry.prototype = new Object_0();
 1.12713 +_.equals$ = equals_4;
 1.12714 +_.getClass$ = getClass_30;
 1.12715 +_.hashCode$ = hashCode_5;
 1.12716 +_.toString$ = toString_9;
 1.12717 +_.typeId$ = 22;
 1.12718 +function $AbstractHashMap$MapEntryNull(this$static, this$0){
 1.12719 +  this$static.this$0 = this$0;
 1.12720 +  return this$static;
 1.12721 +}
 1.12722 +
 1.12723 +function getClass_24(){
 1.12724 +  return Ljava_util_AbstractHashMap$MapEntryNull_2_classLit;
 1.12725 +}
 1.12726 +
 1.12727 +function getKey(){
 1.12728 +  return null;
 1.12729 +}
 1.12730 +
 1.12731 +function getValue(){
 1.12732 +  return this.this$0.nullSlot;
 1.12733 +}
 1.12734 +
 1.12735 +function AbstractHashMap$MapEntryNull(){
 1.12736 +}
 1.12737 +
 1.12738 +_ = AbstractHashMap$MapEntryNull.prototype = new AbstractMapEntry();
 1.12739 +_.getClass$ = getClass_24;
 1.12740 +_.getKey = getKey;
 1.12741 +_.getValue = getValue;
 1.12742 +_.typeId$ = 23;
 1.12743 +_.this$0 = null;
 1.12744 +function $AbstractHashMap$MapEntryString(this$static, key, this$0){
 1.12745 +  this$static.this$0 = this$0;
 1.12746 +  this$static.key = key;
 1.12747 +  return this$static;
 1.12748 +}
 1.12749 +
 1.12750 +function getClass_25(){
 1.12751 +  return Ljava_util_AbstractHashMap$MapEntryString_2_classLit;
 1.12752 +}
 1.12753 +
 1.12754 +function getKey_0(){
 1.12755 +  return this.key;
 1.12756 +}
 1.12757 +
 1.12758 +function getValue_0(){
 1.12759 +  return this.this$0.stringMap[':' + this.key];
 1.12760 +}
 1.12761 +
 1.12762 +function new_$(this$outer, key){
 1.12763 +  return $AbstractHashMap$MapEntryString(new AbstractHashMap$MapEntryString(), key, this$outer);
 1.12764 +}
 1.12765 +
 1.12766 +function AbstractHashMap$MapEntryString(){
 1.12767 +}
 1.12768 +
 1.12769 +_ = AbstractHashMap$MapEntryString.prototype = new AbstractMapEntry();
 1.12770 +_.getClass$ = getClass_25;
 1.12771 +_.getKey = getKey_0;
 1.12772 +_.getValue = getValue_0;
 1.12773 +_.typeId$ = 24;
 1.12774 +_.key = null;
 1.12775 +_.this$0 = null;
 1.12776 +function add_1(obj){
 1.12777 +  this.add_0(this.size_0(), obj);
 1.12778 +  return true;
 1.12779 +}
 1.12780 +
 1.12781 +function add_0(index, element){
 1.12782 +  throw $UnsupportedOperationException(new UnsupportedOperationException(), 'Add not supported on this list');
 1.12783 +}
 1.12784 +
 1.12785 +function checkIndex(index, size){
 1.12786 +  if (index < 0 || index >= size) {
 1.12787 +    indexOutOfBounds(index, size);
 1.12788 +  }
 1.12789 +}
 1.12790 +
 1.12791 +function equals_3(o){
 1.12792 +  var elem, elemOther, iter, iterOther, other;
 1.12793 +  if ((o == null?null:o) === (this == null?null:this)) {
 1.12794 +    return true;
 1.12795 +  }
 1.12796 +  if (!(o != null && canCast(o.typeId$, 15))) {
 1.12797 +    return false;
 1.12798 +  }
 1.12799 +  other = dynamicCast(o, 15);
 1.12800 +  if (this.size_0() != other.size_0()) {
 1.12801 +    return false;
 1.12802 +  }
 1.12803 +  iter = this.iterator();
 1.12804 +  iterOther = other.iterator();
 1.12805 +  while (iter.i < iter.this$0.size_0()) {
 1.12806 +    elem = $next(iter);
 1.12807 +    elemOther = $next(iterOther);
 1.12808 +    if (!(elem == null?elemOther == null:equals__devirtual$(elem, elemOther))) {
 1.12809 +      return false;
 1.12810 +    }
 1.12811 +  }
 1.12812 +  return true;
 1.12813 +}
 1.12814 +
 1.12815 +function getClass_29(){
 1.12816 +  return Ljava_util_AbstractList_2_classLit;
 1.12817 +}
 1.12818 +
 1.12819 +function hashCode_4(){
 1.12820 +  var iter, k, obj;
 1.12821 +  k = 1;
 1.12822 +  iter = this.iterator();
 1.12823 +  while (iter.i < iter.this$0.size_0()) {
 1.12824 +    obj = $next(iter);
 1.12825 +    k = 31 * k + (obj == null?0:hashCode__devirtual$(obj));
 1.12826 +    k = ~~k;
 1.12827 +  }
 1.12828 +  return k;
 1.12829 +}
 1.12830 +
 1.12831 +function indexOutOfBounds(index, size){
 1.12832 +  throw $IndexOutOfBoundsException(new IndexOutOfBoundsException(), 'Index: ' + index + ', Size: ' + size);
 1.12833 +}
 1.12834 +
 1.12835 +function iterator_0(){
 1.12836 +  return $AbstractList$IteratorImpl(new AbstractList$IteratorImpl(), this);
 1.12837 +}
 1.12838 +
 1.12839 +function AbstractList(){
 1.12840 +}
 1.12841 +
 1.12842 +_ = AbstractList.prototype = new AbstractCollection();
 1.12843 +_.add_1 = add_1;
 1.12844 +_.add_0 = add_0;
 1.12845 +_.equals$ = equals_3;
 1.12846 +_.getClass$ = getClass_29;
 1.12847 +_.hashCode$ = hashCode_4;
 1.12848 +_.iterator = iterator_0;
 1.12849 +_.typeId$ = 25;
 1.12850 +function $AbstractList$IteratorImpl(this$static, this$0){
 1.12851 +  this$static.this$0 = this$0;
 1.12852 +  return this$static;
 1.12853 +}
 1.12854 +
 1.12855 +function $hasNext(this$static){
 1.12856 +  return this$static.i < this$static.this$0.size_0();
 1.12857 +}
 1.12858 +
 1.12859 +function $next(this$static){
 1.12860 +  if (this$static.i >= this$static.this$0.size_0()) {
 1.12861 +    throw new NoSuchElementException();
 1.12862 +  }
 1.12863 +  return this$static.this$0.get(this$static.i++);
 1.12864 +}
 1.12865 +
 1.12866 +function getClass_27(){
 1.12867 +  return Ljava_util_AbstractList$IteratorImpl_2_classLit;
 1.12868 +}
 1.12869 +
 1.12870 +function hasNext_0(){
 1.12871 +  return this.i < this.this$0.size_0();
 1.12872 +}
 1.12873 +
 1.12874 +function next_1(){
 1.12875 +  return $next(this);
 1.12876 +}
 1.12877 +
 1.12878 +function AbstractList$IteratorImpl(){
 1.12879 +}
 1.12880 +
 1.12881 +_ = AbstractList$IteratorImpl.prototype = new Object_0();
 1.12882 +_.getClass$ = getClass_27;
 1.12883 +_.hasNext = hasNext_0;
 1.12884 +_.next_0 = next_1;
 1.12885 +_.typeId$ = 0;
 1.12886 +_.i = 0;
 1.12887 +_.this$0 = null;
 1.12888 +function $AbstractList$ListIteratorImpl(this$static, this$0){
 1.12889 +  this$static.this$0 = this$0;
 1.12890 +  return this$static;
 1.12891 +}
 1.12892 +
 1.12893 +function getClass_28(){
 1.12894 +  return Ljava_util_AbstractList$ListIteratorImpl_2_classLit;
 1.12895 +}
 1.12896 +
 1.12897 +function AbstractList$ListIteratorImpl(){
 1.12898 +}
 1.12899 +
 1.12900 +_ = AbstractList$ListIteratorImpl.prototype = new AbstractList$IteratorImpl();
 1.12901 +_.getClass$ = getClass_28;
 1.12902 +_.typeId$ = 0;
 1.12903 +function add_2(index, element){
 1.12904 +  var iter;
 1.12905 +  iter = $listIterator(this, index);
 1.12906 +  $addBefore(iter.this$0, element, iter.currentNode);
 1.12907 +  ++iter.currentIndex;
 1.12908 +  iter.lastNode = null;
 1.12909 +}
 1.12910 +
 1.12911 +function get(index){
 1.12912 +  var $e0, iter;
 1.12913 +  iter = $listIterator(this, index);
 1.12914 +  try {
 1.12915 +    return $next_0(iter);
 1.12916 +  }
 1.12917 +   catch ($e0) {
 1.12918 +    $e0 = caught($e0);
 1.12919 +    if (instanceOf($e0, 17)) {
 1.12920 +      throw $IndexOutOfBoundsException(new IndexOutOfBoundsException(), "Can't get element " + index);
 1.12921 +    }
 1.12922 +     else 
 1.12923 +      throw $e0;
 1.12924 +  }
 1.12925 +}
 1.12926 +
 1.12927 +function getClass_32(){
 1.12928 +  return Ljava_util_AbstractSequentialList_2_classLit;
 1.12929 +}
 1.12930 +
 1.12931 +function iterator_1(){
 1.12932 +  return $AbstractList$ListIteratorImpl(new AbstractList$ListIteratorImpl(), this);
 1.12933 +}
 1.12934 +
 1.12935 +function AbstractSequentialList(){
 1.12936 +}
 1.12937 +
 1.12938 +_ = AbstractSequentialList.prototype = new AbstractList();
 1.12939 +_.add_0 = add_2;
 1.12940 +_.get = get;
 1.12941 +_.getClass$ = getClass_32;
 1.12942 +_.iterator = iterator_1;
 1.12943 +_.typeId$ = 26;
 1.12944 +function $ArrayList(this$static){
 1.12945 +  this$static.array = initDim(_3Ljava_lang_Object_2_classLit, 47, 0, 0, 0);
 1.12946 +  this$static.size = 0;
 1.12947 +  return this$static;
 1.12948 +}
 1.12949 +
 1.12950 +function $add(this$static, o){
 1.12951 +  setCheck(this$static.array, this$static.size++, o);
 1.12952 +  return true;
 1.12953 +}
 1.12954 +
 1.12955 +function $get_0(this$static, index){
 1.12956 +  checkIndex(index, this$static.size);
 1.12957 +  return this$static.array[index];
 1.12958 +}
 1.12959 +
 1.12960 +function $indexOf_0(this$static, o, index){
 1.12961 +  for (; index < this$static.size; ++index) {
 1.12962 +    if (equalsWithNullCheck(o, this$static.array[index])) {
 1.12963 +      return index;
 1.12964 +    }
 1.12965 +  }
 1.12966 +  return -1;
 1.12967 +}
 1.12968 +
 1.12969 +function $remove_0(this$static, o){
 1.12970 +  var i, previous;
 1.12971 +  i = $indexOf_0(this$static, o, 0);
 1.12972 +  if (i == -1) {
 1.12973 +    return false;
 1.12974 +  }
 1.12975 +  previous = (checkIndex(i, this$static.size) , this$static.array[i]);
 1.12976 +  this$static.array.splice(i, 1);
 1.12977 +  --this$static.size;
 1.12978 +  return true;
 1.12979 +}
 1.12980 +
 1.12981 +function add_4(o){
 1.12982 +  return setCheck(this.array, this.size++, o) , true;
 1.12983 +}
 1.12984 +
 1.12985 +function add_3(index, o){
 1.12986 +  if (index < 0 || index > this.size) {
 1.12987 +    indexOutOfBounds(index, this.size);
 1.12988 +  }
 1.12989 +  this.array.splice(index, 0, o);
 1.12990 +  ++this.size;
 1.12991 +}
 1.12992 +
 1.12993 +function contains_1(o){
 1.12994 +  return $indexOf_0(this, o, 0) != -1;
 1.12995 +}
 1.12996 +
 1.12997 +function get_0(index){
 1.12998 +  return checkIndex(index, this.size) , this.array[index];
 1.12999 +}
 1.13000 +
 1.13001 +function getClass_34(){
 1.13002 +  return Ljava_util_ArrayList_2_classLit;
 1.13003 +}
 1.13004 +
 1.13005 +function size_1(){
 1.13006 +  return this.size;
 1.13007 +}
 1.13008 +
 1.13009 +function ArrayList(){
 1.13010 +}
 1.13011 +
 1.13012 +_ = ArrayList.prototype = new AbstractList();
 1.13013 +_.add_1 = add_4;
 1.13014 +_.add_0 = add_3;
 1.13015 +_.contains = contains_1;
 1.13016 +_.get = get_0;
 1.13017 +_.getClass$ = getClass_34;
 1.13018 +_.size_0 = size_1;
 1.13019 +_.typeId$ = 27;
 1.13020 +_.array = null;
 1.13021 +_.size = 0;
 1.13022 +function binarySearch(sortedArray, key){
 1.13023 +  var high, low, mid, midVal;
 1.13024 +  low = 0;
 1.13025 +  high = sortedArray.length - 1;
 1.13026 +  while (low <= high) {
 1.13027 +    mid = low + (high - low >> 1);
 1.13028 +    midVal = sortedArray[mid];
 1.13029 +    if (midVal < key) {
 1.13030 +      low = mid + 1;
 1.13031 +    }
 1.13032 +     else if (midVal > key) {
 1.13033 +      high = mid - 1;
 1.13034 +    }
 1.13035 +     else {
 1.13036 +      return mid;
 1.13037 +    }
 1.13038 +  }
 1.13039 +  return -low - 1;
 1.13040 +}
 1.13041 +
 1.13042 +function binarySearch_0(sortedArray, key, comparator){
 1.13043 +  var compareResult, high, low, mid, midVal;
 1.13044 +  if (!comparator) {
 1.13045 +    comparator = ($clinit_61() , NATURAL);
 1.13046 +  }
 1.13047 +  low = 0;
 1.13048 +  high = sortedArray.length - 1;
 1.13049 +  while (low <= high) {
 1.13050 +    mid = low + (high - low >> 1);
 1.13051 +    midVal = sortedArray[mid];
 1.13052 +    compareResult = midVal.compareTo$(key);
 1.13053 +    if (compareResult < 0) {
 1.13054 +      low = mid + 1;
 1.13055 +    }
 1.13056 +     else if (compareResult > 0) {
 1.13057 +      high = mid - 1;
 1.13058 +    }
 1.13059 +     else {
 1.13060 +      return mid;
 1.13061 +    }
 1.13062 +  }
 1.13063 +  return -low - 1;
 1.13064 +}
 1.13065 +
 1.13066 +function $clinit_61(){
 1.13067 +  $clinit_61 = nullMethod;
 1.13068 +  NATURAL = new Comparators$1();
 1.13069 +}
 1.13070 +
 1.13071 +var NATURAL;
 1.13072 +function getClass_35(){
 1.13073 +  return Ljava_util_Comparators$1_2_classLit;
 1.13074 +}
 1.13075 +
 1.13076 +function Comparators$1(){
 1.13077 +}
 1.13078 +
 1.13079 +_ = Comparators$1.prototype = new Object_0();
 1.13080 +_.getClass$ = getClass_35;
 1.13081 +_.typeId$ = 0;
 1.13082 +function $HashMap(this$static){
 1.13083 +  $clearImpl(this$static);
 1.13084 +  return this$static;
 1.13085 +}
 1.13086 +
 1.13087 +function $equals_1(value1, value2){
 1.13088 +  return (value1 == null?null:value1) === (value2 == null?null:value2) || value1 != null && equals__devirtual$(value1, value2);
 1.13089 +}
 1.13090 +
 1.13091 +function getClass_36(){
 1.13092 +  return Ljava_util_HashMap_2_classLit;
 1.13093 +}
 1.13094 +
 1.13095 +function HashMap(){
 1.13096 +}
 1.13097 +
 1.13098 +_ = HashMap.prototype = new AbstractHashMap();
 1.13099 +_.getClass$ = getClass_36;
 1.13100 +_.typeId$ = 28;
 1.13101 +function $LinkedList(this$static){
 1.13102 +  this$static.header = $LinkedList$Node(new LinkedList$Node());
 1.13103 +  this$static.size = 0;
 1.13104 +  return this$static;
 1.13105 +}
 1.13106 +
 1.13107 +function $addBefore(this$static, o, target){
 1.13108 +  $LinkedList$Node_0(new LinkedList$Node(), o, target);
 1.13109 +  ++this$static.size;
 1.13110 +}
 1.13111 +
 1.13112 +function $addLast(this$static, o){
 1.13113 +  $LinkedList$Node_0(new LinkedList$Node(), o, this$static.header);
 1.13114 +  ++this$static.size;
 1.13115 +}
 1.13116 +
 1.13117 +function $clear(this$static){
 1.13118 +  this$static.header = $LinkedList$Node(new LinkedList$Node());
 1.13119 +  this$static.size = 0;
 1.13120 +}
 1.13121 +
 1.13122 +function $getLast(this$static){
 1.13123 +  $throwEmptyException(this$static);
 1.13124 +  return this$static.header.prev.value;
 1.13125 +}
 1.13126 +
 1.13127 +function $listIterator(this$static, index){
 1.13128 +  var i, node;
 1.13129 +  if (index < 0 || index > this$static.size) {
 1.13130 +    indexOutOfBounds(index, this$static.size);
 1.13131 +  }
 1.13132 +  if (index >= this$static.size >> 1) {
 1.13133 +    node = this$static.header;
 1.13134 +    for (i = this$static.size; i > index; --i) {
 1.13135 +      node = node.prev;
 1.13136 +    }
 1.13137 +  }
 1.13138 +   else {
 1.13139 +    node = this$static.header.next;
 1.13140 +    for (i = 0; i < index; ++i) {
 1.13141 +      node = node.next;
 1.13142 +    }
 1.13143 +  }
 1.13144 +  return $LinkedList$ListIteratorImpl(new LinkedList$ListIteratorImpl(), index, node, this$static);
 1.13145 +}
 1.13146 +
 1.13147 +function $removeLast(this$static){
 1.13148 +  var node;
 1.13149 +  $throwEmptyException(this$static);
 1.13150 +  --this$static.size;
 1.13151 +  node = this$static.header.prev;
 1.13152 +  node.next.prev = node.prev;
 1.13153 +  node.prev.next = node.next;
 1.13154 +  node.next = node.prev = node;
 1.13155 +  return node.value;
 1.13156 +}
 1.13157 +
 1.13158 +function $throwEmptyException(this$static){
 1.13159 +  if (this$static.size == 0) {
 1.13160 +    throw new NoSuchElementException();
 1.13161 +  }
 1.13162 +}
 1.13163 +
 1.13164 +function add_5(o){
 1.13165 +  $LinkedList$Node_0(new LinkedList$Node(), o, this.header);
 1.13166 +  ++this.size;
 1.13167 +  return true;
 1.13168 +}
 1.13169 +
 1.13170 +function getClass_39(){
 1.13171 +  return Ljava_util_LinkedList_2_classLit;
 1.13172 +}
 1.13173 +
 1.13174 +function size_2(){
 1.13175 +  return this.size;
 1.13176 +}
 1.13177 +
 1.13178 +function LinkedList(){
 1.13179 +}
 1.13180 +
 1.13181 +_ = LinkedList.prototype = new AbstractSequentialList();
 1.13182 +_.add_1 = add_5;
 1.13183 +_.getClass$ = getClass_39;
 1.13184 +_.size_0 = size_2;
 1.13185 +_.typeId$ = 29;
 1.13186 +_.header = null;
 1.13187 +_.size = 0;
 1.13188 +function $LinkedList$ListIteratorImpl(this$static, index, startNode, this$0){
 1.13189 +  this$static.this$0 = this$0;
 1.13190 +  this$static.currentNode = startNode;
 1.13191 +  this$static.currentIndex = index;
 1.13192 +  return this$static;
 1.13193 +}
 1.13194 +
 1.13195 +function $next_0(this$static){
 1.13196 +  if (this$static.currentNode == this$static.this$0.header) {
 1.13197 +    throw new NoSuchElementException();
 1.13198 +  }
 1.13199 +  this$static.lastNode = this$static.currentNode;
 1.13200 +  this$static.currentNode = this$static.currentNode.next;
 1.13201 +  ++this$static.currentIndex;
 1.13202 +  return this$static.lastNode.value;
 1.13203 +}
 1.13204 +
 1.13205 +function getClass_37(){
 1.13206 +  return Ljava_util_LinkedList$ListIteratorImpl_2_classLit;
 1.13207 +}
 1.13208 +
 1.13209 +function hasNext_1(){
 1.13210 +  return this.currentNode != this.this$0.header;
 1.13211 +}
 1.13212 +
 1.13213 +function next_2(){
 1.13214 +  return $next_0(this);
 1.13215 +}
 1.13216 +
 1.13217 +function LinkedList$ListIteratorImpl(){
 1.13218 +}
 1.13219 +
 1.13220 +_ = LinkedList$ListIteratorImpl.prototype = new Object_0();
 1.13221 +_.getClass$ = getClass_37;
 1.13222 +_.hasNext = hasNext_1;
 1.13223 +_.next_0 = next_2;
 1.13224 +_.typeId$ = 0;
 1.13225 +_.currentIndex = 0;
 1.13226 +_.currentNode = null;
 1.13227 +_.lastNode = null;
 1.13228 +_.this$0 = null;
 1.13229 +function $LinkedList$Node(this$static){
 1.13230 +  this$static.next = this$static.prev = this$static;
 1.13231 +  return this$static;
 1.13232 +}
 1.13233 +
 1.13234 +function $LinkedList$Node_0(this$static, value, nextNode){
 1.13235 +  this$static.value = value;
 1.13236 +  this$static.next = nextNode;
 1.13237 +  this$static.prev = nextNode.prev;
 1.13238 +  nextNode.prev.next = this$static;
 1.13239 +  nextNode.prev = this$static;
 1.13240 +  return this$static;
 1.13241 +}
 1.13242 +
 1.13243 +function getClass_38(){
 1.13244 +  return Ljava_util_LinkedList$Node_2_classLit;
 1.13245 +}
 1.13246 +
 1.13247 +function LinkedList$Node(){
 1.13248 +}
 1.13249 +
 1.13250 +_ = LinkedList$Node.prototype = new Object_0();
 1.13251 +_.getClass$ = getClass_38;
 1.13252 +_.typeId$ = 0;
 1.13253 +_.next = null;
 1.13254 +_.prev = null;
 1.13255 +_.value = null;
 1.13256 +function getClass_40(){
 1.13257 +  return Ljava_util_NoSuchElementException_2_classLit;
 1.13258 +}
 1.13259 +
 1.13260 +function NoSuchElementException(){
 1.13261 +}
 1.13262 +
 1.13263 +_ = NoSuchElementException.prototype = new RuntimeException();
 1.13264 +_.getClass$ = getClass_40;
 1.13265 +_.typeId$ = 30;
 1.13266 +function equalsWithNullCheck(a, b){
 1.13267 +  return (a == null?null:a) === (b == null?null:b) || a != null && equals__devirtual$(a, b);
 1.13268 +}
 1.13269 +
 1.13270 +function $clinit_77(){
 1.13271 +  $clinit_77 = nullMethod;
 1.13272 +  HTML = $DoctypeExpectation(new DoctypeExpectation(), 'HTML', 0);
 1.13273 +  $DoctypeExpectation(new DoctypeExpectation(), 'HTML401_TRANSITIONAL', 1);
 1.13274 +  $DoctypeExpectation(new DoctypeExpectation(), 'HTML401_STRICT', 2);
 1.13275 +  $DoctypeExpectation(new DoctypeExpectation(), 'AUTO', 3);
 1.13276 +  $DoctypeExpectation(new DoctypeExpectation(), 'NO_DOCTYPE_ERRORS', 4);
 1.13277 +}
 1.13278 +
 1.13279 +function $DoctypeExpectation(this$static, enum$name, enum$ordinal){
 1.13280 +  $clinit_77();
 1.13281 +  this$static.name_0 = enum$name;
 1.13282 +  this$static.ordinal = enum$ordinal;
 1.13283 +  return this$static;
 1.13284 +}
 1.13285 +
 1.13286 +function getClass_41(){
 1.13287 +  return Lnu_validator_htmlparser_common_DoctypeExpectation_2_classLit;
 1.13288 +}
 1.13289 +
 1.13290 +function DoctypeExpectation(){
 1.13291 +}
 1.13292 +
 1.13293 +_ = DoctypeExpectation.prototype = new Enum();
 1.13294 +_.getClass$ = getClass_41;
 1.13295 +_.typeId$ = 31;
 1.13296 +var HTML;
 1.13297 +function $clinit_78(){
 1.13298 +  $clinit_78 = nullMethod;
 1.13299 +  STANDARDS_MODE = $DocumentMode(new DocumentMode(), 'STANDARDS_MODE', 0);
 1.13300 +  ALMOST_STANDARDS_MODE = $DocumentMode(new DocumentMode(), 'ALMOST_STANDARDS_MODE', 1);
 1.13301 +  QUIRKS_MODE = $DocumentMode(new DocumentMode(), 'QUIRKS_MODE', 2);
 1.13302 +}
 1.13303 +
 1.13304 +function $DocumentMode(this$static, enum$name, enum$ordinal){
 1.13305 +  $clinit_78();
 1.13306 +  this$static.name_0 = enum$name;
 1.13307 +  this$static.ordinal = enum$ordinal;
 1.13308 +  return this$static;
 1.13309 +}
 1.13310 +
 1.13311 +function getClass_42(){
 1.13312 +  return Lnu_validator_htmlparser_common_DocumentMode_2_classLit;
 1.13313 +}
 1.13314 +
 1.13315 +function DocumentMode(){
 1.13316 +}
 1.13317 +
 1.13318 +_ = DocumentMode.prototype = new Enum();
 1.13319 +_.getClass$ = getClass_42;
 1.13320 +_.typeId$ = 32;
 1.13321 +var ALMOST_STANDARDS_MODE, QUIRKS_MODE, STANDARDS_MODE;
 1.13322 +function $clinit_80(){
 1.13323 +  $clinit_80 = nullMethod;
 1.13324 +  ALLOW = $XmlViolationPolicy(new XmlViolationPolicy(), 'ALLOW', 0);
 1.13325 +  FATAL = $XmlViolationPolicy(new XmlViolationPolicy(), 'FATAL', 1);
 1.13326 +  ALTER_INFOSET = $XmlViolationPolicy(new XmlViolationPolicy(), 'ALTER_INFOSET', 2);
 1.13327 +}
 1.13328 +
 1.13329 +function $XmlViolationPolicy(this$static, enum$name, enum$ordinal){
 1.13330 +  $clinit_80();
 1.13331 +  this$static.name_0 = enum$name;
 1.13332 +  this$static.ordinal = enum$ordinal;
 1.13333 +  return this$static;
 1.13334 +}
 1.13335 +
 1.13336 +function getClass_43(){
 1.13337 +  return Lnu_validator_htmlparser_common_XmlViolationPolicy_2_classLit;
 1.13338 +}
 1.13339 +
 1.13340 +function XmlViolationPolicy(){
 1.13341 +}
 1.13342 +
 1.13343 +_ = XmlViolationPolicy.prototype = new Enum();
 1.13344 +_.getClass$ = getClass_43;
 1.13345 +_.typeId$ = 33;
 1.13346 +var ALLOW, ALTER_INFOSET, FATAL;
 1.13347 +function $clinit_98(){
 1.13348 +  $clinit_98 = nullMethod;
 1.13349 +  ISINDEX_PROMPT = $toCharArray('This is a searchable index. Insert your search keywords here: ');
 1.13350 +  HTML4_PUBLIC_IDS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['-//W3C//DTD HTML 4.0 Frameset//EN', '-//W3C//DTD HTML 4.0 Transitional//EN', '-//W3C//DTD HTML 4.0//EN', '-//W3C//DTD HTML 4.01 Frameset//EN', '-//W3C//DTD HTML 4.01 Transitional//EN', '-//W3C//DTD HTML 4.01//EN']);
 1.13351 +  QUIRKY_PUBLIC_IDS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['+//silmaril//dtd html pro v0r11 19970101//', '-//advasoft ltd//dtd html 3.0 aswedit + extensions//', '-//as//dtd html 3.0 aswedit + extensions//', '-//ietf//dtd html 2.0 level 1//', '-//ietf//dtd html 2.0 level 2//', '-//ietf//dtd html 2.0 strict level 1//', '-//ietf//dtd html 2.0 strict level 2//', '-//ietf//dtd html 2.0 strict//', '-//ietf//dtd html 2.0//', '-//ietf//dtd html 2.1e//', '-//ietf//dtd html 3.0//', '-//ietf//dtd html 3.2 final//', '-//ietf//dtd html 3.2//', '-//ietf//dtd html 3//', '-//ietf//dtd html level 0//', '-//ietf//dtd html level 1//', '-//ietf//dtd html level 2//', '-//ietf//dtd html level 3//', '-//ietf//dtd html strict level 0//', '-//ietf//dtd html strict level 1//', '-//ietf//dtd html strict level 2//', '-//ietf//dtd html strict level 3//', '-//ietf//dtd html strict//', '-//ietf//dtd html//', '-//metrius//dtd metrius presentational//', '-//microsoft//dtd internet explorer 2.0 html strict//', '-//microsoft//dtd internet explorer 2.0 html//', '-//microsoft//dtd internet explorer 2.0 tables//', '-//microsoft//dtd internet explorer 3.0 html strict//', '-//microsoft//dtd internet explorer 3.0 html//', '-//microsoft//dtd internet explorer 3.0 tables//', '-//netscape comm. corp.//dtd html//', '-//netscape comm. corp.//dtd strict html//', "-//o'reilly and associates//dtd html 2.0//", "-//o'reilly and associates//dtd html extended 1.0//", "-//o'reilly and associates//dtd html extended relaxed 1.0//", '-//softquad software//dtd hotmetal pro 6.0::19990601::extensions to html 4.0//', '-//softquad//dtd hotmetal pro 4.0::19971010::extensions to html 4.0//', '-//spyglass//dtd html 2.0 extended//', '-//sq//dtd html 2.0 hotmetal + extensions//', '-//sun microsystems corp.//dtd hotjava html//', '-//sun microsystems corp.//dtd hotjava strict html//', '-//w3c//dtd html 3 1995-03-24//', '-//w3c//dtd html 3.2 draft//', '-//w3c//dtd html 3.2 final//', '-//w3c//dtd html 3.2//', '-//w3c//dtd html 3.2s draft//', '-//w3c//dtd html 4.0 frameset//', '-//w3c//dtd html 4.0 transitional//', '-//w3c//dtd html experimental 19960712//', '-//w3c//dtd html experimental 970421//', '-//w3c//dtd w3 html//', '-//w3o//dtd w3 html 3.0//', '-//webtechs//dtd mozilla html 2.0//', '-//webtechs//dtd mozilla html//']);
 1.13352 +}
 1.13353 +
 1.13354 +function $accumulateCharacter(this$static, c){
 1.13355 +  var newBuf, newLen;
 1.13356 +  newLen = this$static.charBufferLen + 1;
 1.13357 +  if (newLen > this$static.charBuffer.length) {
 1.13358 +    newBuf = initDim(_3C_classLit, 42, -1, newLen, 1);
 1.13359 +    arraycopy(this$static.charBuffer, 0, newBuf, 0, this$static.charBufferLen);
 1.13360 +    this$static.charBuffer = newBuf;
 1.13361 +  }
 1.13362 +  this$static.charBuffer[this$static.charBufferLen] = c;
 1.13363 +  this$static.charBufferLen = newLen;
 1.13364 +}
 1.13365 +
 1.13366 +function $addAttributesToBody(this$static, attributes){
 1.13367 +  var body;
 1.13368 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.13369 +  if (this$static.currentPtr >= 1) {
 1.13370 +    body = this$static.stack[1];
 1.13371 +    if (body.group == 3) {
 1.13372 +      $addAttributesToElement(this$static, body.node, attributes);
 1.13373 +    }
 1.13374 +  }
 1.13375 +}
 1.13376 +
 1.13377 +function $adoptionAgencyEndTag(this$static, name){
 1.13378 +  var bookmark, clone, commonAncestor, formattingClone, formattingElt, formattingEltListPos, formattingEltStackPos, furthestBlock, furthestBlockPos, inScope, lastNode, listNode, newNode, node, nodeListPos, nodePos;
 1.13379 +  $flushCharacters(this$static);
 1.13380 +  for (;;) {
 1.13381 +    formattingEltListPos = this$static.listPtr;
 1.13382 +    while (formattingEltListPos > -1) {
 1.13383 +      listNode = this$static.listOfActiveFormattingElements[formattingEltListPos];
 1.13384 +      if (!listNode) {
 1.13385 +        formattingEltListPos = -1;
 1.13386 +        break;
 1.13387 +      }
 1.13388 +       else if (listNode.name_0 == name) {
 1.13389 +        break;
 1.13390 +      }
 1.13391 +      --formattingEltListPos;
 1.13392 +    }
 1.13393 +    if (formattingEltListPos == -1) {
 1.13394 +      return;
 1.13395 +    }
 1.13396 +    formattingElt = this$static.listOfActiveFormattingElements[formattingEltListPos];
 1.13397 +    formattingEltStackPos = this$static.currentPtr;
 1.13398 +    inScope = true;
 1.13399 +    while (formattingEltStackPos > -1) {
 1.13400 +      node = this$static.stack[formattingEltStackPos];
 1.13401 +      if (node == formattingElt) {
 1.13402 +        break;
 1.13403 +      }
 1.13404 +       else if (node.scoping) {
 1.13405 +        inScope = false;
 1.13406 +      }
 1.13407 +      --formattingEltStackPos;
 1.13408 +    }
 1.13409 +    if (formattingEltStackPos == -1) {
 1.13410 +      $removeFromListOfActiveFormattingElements(this$static, formattingEltListPos);
 1.13411 +      return;
 1.13412 +    }
 1.13413 +    if (!inScope) {
 1.13414 +      return;
 1.13415 +    }
 1.13416 +    furthestBlockPos = formattingEltStackPos + 1;
 1.13417 +    while (furthestBlockPos <= this$static.currentPtr) {
 1.13418 +      node = this$static.stack[furthestBlockPos];
 1.13419 +      if (node.scoping || node.special) {
 1.13420 +        break;
 1.13421 +      }
 1.13422 +      ++furthestBlockPos;
 1.13423 +    }
 1.13424 +    if (furthestBlockPos > this$static.currentPtr) {
 1.13425 +      while (this$static.currentPtr >= formattingEltStackPos) {
 1.13426 +        $pop(this$static);
 1.13427 +      }
 1.13428 +      $removeFromListOfActiveFormattingElements(this$static, formattingEltListPos);
 1.13429 +      return;
 1.13430 +    }
 1.13431 +    commonAncestor = this$static.stack[formattingEltStackPos - 1];
 1.13432 +    furthestBlock = this$static.stack[furthestBlockPos];
 1.13433 +    bookmark = formattingEltListPos;
 1.13434 +    nodePos = furthestBlockPos;
 1.13435 +    lastNode = furthestBlock;
 1.13436 +    for (;;) {
 1.13437 +      --nodePos;
 1.13438 +      node = this$static.stack[nodePos];
 1.13439 +      nodeListPos = $findInListOfActiveFormattingElements(this$static, node);
 1.13440 +      if (nodeListPos == -1) {
 1.13441 +        $removeFromStack(this$static, nodePos);
 1.13442 +        --furthestBlockPos;
 1.13443 +        continue;
 1.13444 +      }
 1.13445 +      if (nodePos == formattingEltStackPos) {
 1.13446 +        break;
 1.13447 +      }
 1.13448 +      if (nodePos == furthestBlockPos) {
 1.13449 +        bookmark = nodeListPos + 1;
 1.13450 +      }
 1.13451 +      clone = $createElement(this$static, 'http://www.w3.org/1999/xhtml', node.name_0, $cloneAttributes(node.attributes));
 1.13452 +      newNode = $StackNode(new StackNode(), node.group, node.ns, node.name_0, clone, node.scoping, node.special, node.fosterParenting, node.popName, node.attributes);
 1.13453 +      node.attributes = null;
 1.13454 +      this$static.stack[nodePos] = newNode;
 1.13455 +      ++newNode.refcount;
 1.13456 +      this$static.listOfActiveFormattingElements[nodeListPos] = newNode;
 1.13457 +      --node.refcount;
 1.13458 +      --node.refcount;
 1.13459 +      node = newNode;
 1.13460 +      $detachFromParent(this$static, lastNode.node);
 1.13461 +      $appendElement(this$static, lastNode.node, node.node);
 1.13462 +      lastNode = node;
 1.13463 +    }
 1.13464 +    if (commonAncestor.fosterParenting) {
 1.13465 +      $detachFromParent(this$static, lastNode.node);
 1.13466 +      $insertIntoFosterParent(this$static, lastNode.node);
 1.13467 +    }
 1.13468 +     else {
 1.13469 +      $detachFromParent(this$static, lastNode.node);
 1.13470 +      $appendElement(this$static, lastNode.node, commonAncestor.node);
 1.13471 +    }
 1.13472 +    clone = $createElement(this$static, 'http://www.w3.org/1999/xhtml', formattingElt.name_0, $cloneAttributes(formattingElt.attributes));
 1.13473 +    formattingClone = $StackNode(new StackNode(), formattingElt.group, formattingElt.ns, formattingElt.name_0, clone, formattingElt.scoping, formattingElt.special, formattingElt.fosterParenting, formattingElt.popName, formattingElt.attributes);
 1.13474 +    formattingElt.attributes = null;
 1.13475 +    $appendChildrenToNewParent(this$static, furthestBlock.node, clone);
 1.13476 +    $appendElement(this$static, clone, furthestBlock.node);
 1.13477 +    $removeFromListOfActiveFormattingElements(this$static, formattingEltListPos);
 1.13478 +    $insertIntoListOfActiveFormattingElements(this$static, formattingClone, bookmark);
 1.13479 +    $removeFromStack(this$static, formattingEltStackPos);
 1.13480 +    $insertIntoStack(this$static, formattingClone, furthestBlockPos);
 1.13481 +  }
 1.13482 +}
 1.13483 +
 1.13484 +function $append_1(this$static, node){
 1.13485 +  var newList;
 1.13486 +  ++this$static.listPtr;
 1.13487 +  if (this$static.listPtr == this$static.listOfActiveFormattingElements.length) {
 1.13488 +    newList = initDim(_3Lnu_validator_htmlparser_impl_StackNode_2_classLit, 51, 11, this$static.listOfActiveFormattingElements.length + 64, 0);
 1.13489 +    arraycopy(this$static.listOfActiveFormattingElements, 0, newList, 0, this$static.listOfActiveFormattingElements.length);
 1.13490 +    this$static.listOfActiveFormattingElements = newList;
 1.13491 +  }
 1.13492 +  this$static.listOfActiveFormattingElements[this$static.listPtr] = node;
 1.13493 +}
 1.13494 +
 1.13495 +function $appendHtmlElementToDocumentAndPush(this$static, attributes){
 1.13496 +  var elt, node;
 1.13497 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.13498 +  elt = $createHtmlElementSetAsRoot(this$static, attributes);
 1.13499 +  node = $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , HTML_0), elt);
 1.13500 +  $push_0(this$static, node);
 1.13501 +}
 1.13502 +
 1.13503 +function $appendToCurrentNodeAndPushElement(this$static, ns, elementName, attributes){
 1.13504 +  var elt, node;
 1.13505 +  $flushCharacters(this$static);
 1.13506 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.13507 +  elt = $createElement(this$static, ns, elementName.name_0, attributes);
 1.13508 +  $appendElement(this$static, elt, this$static.stack[this$static.currentPtr].node);
 1.13509 +  node = $StackNode_0(new StackNode(), ns, elementName, elt);
 1.13510 +  $push_0(this$static, node);
 1.13511 +}
 1.13512 +
 1.13513 +function $appendToCurrentNodeAndPushElementMayFoster(this$static, ns, elementName, attributes){
 1.13514 +  var current, elt, node, popName;
 1.13515 +  $flushCharacters(this$static);
 1.13516 +  popName = elementName.name_0;
 1.13517 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.13518 +  if (elementName.custom) {
 1.13519 +    popName = $checkPopName(this$static, popName);
 1.13520 +  }
 1.13521 +  elt = $createElement(this$static, ns, popName, attributes);
 1.13522 +  current = this$static.stack[this$static.currentPtr];
 1.13523 +  if (current.fosterParenting) {
 1.13524 +    $insertIntoFosterParent(this$static, elt);
 1.13525 +  }
 1.13526 +   else {
 1.13527 +    $appendElement(this$static, elt, current.node);
 1.13528 +  }
 1.13529 +  node = $StackNode_1(new StackNode(), ns, elementName, elt, popName);
 1.13530 +  $push_0(this$static, node);
 1.13531 +}
 1.13532 +
 1.13533 +function $appendToCurrentNodeAndPushElementMayFoster_0(this$static, ns, elementName, attributes){
 1.13534 +  var current, elt, node;
 1.13535 +  $flushCharacters(this$static);
 1.13536 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.13537 +  elt = $createElement_0(this$static, ns, elementName.name_0, attributes);
 1.13538 +  current = this$static.stack[this$static.currentPtr];
 1.13539 +  if (current.fosterParenting) {
 1.13540 +    $insertIntoFosterParent(this$static, elt);
 1.13541 +  }
 1.13542 +   else {
 1.13543 +    $appendElement(this$static, elt, current.node);
 1.13544 +  }
 1.13545 +  node = $StackNode_0(new StackNode(), ns, elementName, elt);
 1.13546 +  $push_0(this$static, node);
 1.13547 +}
 1.13548 +
 1.13549 +function $appendToCurrentNodeAndPushElementMayFosterCamelCase(this$static, ns, elementName, attributes){
 1.13550 +  var current, elt, node, popName;
 1.13551 +  $flushCharacters(this$static);
 1.13552 +  popName = elementName.camelCaseName;
 1.13553 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.13554 +  if (elementName.custom) {
 1.13555 +    popName = $checkPopName(this$static, popName);
 1.13556 +  }
 1.13557 +  elt = $createElement(this$static, ns, popName, attributes);
 1.13558 +  current = this$static.stack[this$static.currentPtr];
 1.13559 +  if (current.fosterParenting) {
 1.13560 +    $insertIntoFosterParent(this$static, elt);
 1.13561 +  }
 1.13562 +   else {
 1.13563 +    $appendElement(this$static, elt, current.node);
 1.13564 +  }
 1.13565 +  node = $StackNode_2(new StackNode(), ns, elementName, elt, popName, ($clinit_89() , FOREIGNOBJECT) == elementName);
 1.13566 +  $push_0(this$static, node);
 1.13567 +}
 1.13568 +
 1.13569 +function $appendToCurrentNodeAndPushElementMayFosterNoScoping(this$static, ns, elementName, attributes){
 1.13570 +  var current, elt, node, popName;
 1.13571 +  $flushCharacters(this$static);
 1.13572 +  popName = elementName.name_0;
 1.13573 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.13574 +  if (elementName.custom) {
 1.13575 +    popName = $checkPopName(this$static, popName);
 1.13576 +  }
 1.13577 +  elt = $createElement(this$static, ns, popName, attributes);
 1.13578 +  current = this$static.stack[this$static.currentPtr];
 1.13579 +  if (current.fosterParenting) {
 1.13580 +    $insertIntoFosterParent(this$static, elt);
 1.13581 +  }
 1.13582 +   else {
 1.13583 +    $appendElement(this$static, elt, current.node);
 1.13584 +  }
 1.13585 +  node = $StackNode_2(new StackNode(), ns, elementName, elt, popName, false);
 1.13586 +  $push_0(this$static, node);
 1.13587 +}
 1.13588 +
 1.13589 +function $appendToCurrentNodeAndPushFormElementMayFoster(this$static, attributes){
 1.13590 +  var current, elt, node;
 1.13591 +  $flushCharacters(this$static);
 1.13592 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.13593 +  elt = $createElement(this$static, 'http://www.w3.org/1999/xhtml', 'form', attributes);
 1.13594 +  this$static.formPointer = elt;
 1.13595 +  current = this$static.stack[this$static.currentPtr];
 1.13596 +  if (current.fosterParenting) {
 1.13597 +    $insertIntoFosterParent(this$static, elt);
 1.13598 +  }
 1.13599 +   else {
 1.13600 +    $appendElement(this$static, elt, current.node);
 1.13601 +  }
 1.13602 +  node = $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , FORM_0), elt);
 1.13603 +  $push_0(this$static, node);
 1.13604 +}
 1.13605 +
 1.13606 +function $appendToCurrentNodeAndPushFormattingElementMayFoster(this$static, ns, elementName, attributes){
 1.13607 +  var current, elt, node;
 1.13608 +  $flushCharacters(this$static);
 1.13609 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.13610 +  elt = $createElement(this$static, ns, elementName.name_0, attributes);
 1.13611 +  current = this$static.stack[this$static.currentPtr];
 1.13612 +  if (current.fosterParenting) {
 1.13613 +    $insertIntoFosterParent(this$static, elt);
 1.13614 +  }
 1.13615 +   else {
 1.13616 +    $appendElement(this$static, elt, current.node);
 1.13617 +  }
 1.13618 +  node = $StackNode_3(new StackNode(), ns, elementName, elt, $cloneAttributes(attributes));
 1.13619 +  $push_0(this$static, node);
 1.13620 +  $append_1(this$static, node);
 1.13621 +  ++node.refcount;
 1.13622 +}
 1.13623 +
 1.13624 +function $appendToCurrentNodeAndPushHeadElement(this$static, attributes){
 1.13625 +  var elt, node;
 1.13626 +  $flushCharacters(this$static);
 1.13627 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.13628 +  elt = $createElement(this$static, 'http://www.w3.org/1999/xhtml', 'head', attributes);
 1.13629 +  $appendElement(this$static, elt, this$static.stack[this$static.currentPtr].node);
 1.13630 +  this$static.headPointer = elt;
 1.13631 +  node = $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , HEAD), elt);
 1.13632 +  $push_0(this$static, node);
 1.13633 +}
 1.13634 +
 1.13635 +function $appendVoidElementToCurrentMayFoster(this$static, ns, name, attributes){
 1.13636 +  var current, elt;
 1.13637 +  $flushCharacters(this$static);
 1.13638 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.13639 +  elt = $createElement_0(this$static, ns, name, attributes);
 1.13640 +  current = this$static.stack[this$static.currentPtr];
 1.13641 +  if (current.fosterParenting) {
 1.13642 +    $insertIntoFosterParent(this$static, elt);
 1.13643 +  }
 1.13644 +   else {
 1.13645 +    $appendElement(this$static, elt, current.node);
 1.13646 +  }
 1.13647 +  $elementPopped(this$static, ns, name, elt);
 1.13648 +}
 1.13649 +
 1.13650 +function $appendVoidElementToCurrentMayFoster_0(this$static, ns, elementName, attributes){
 1.13651 +  var current, elt, popName;
 1.13652 +  $flushCharacters(this$static);
 1.13653 +  popName = elementName.name_0;
 1.13654 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.13655 +  if (elementName.custom) {
 1.13656 +    popName = $checkPopName(this$static, popName);
 1.13657 +  }
 1.13658 +  elt = $createElement(this$static, ns, popName, attributes);
 1.13659 +  current = this$static.stack[this$static.currentPtr];
 1.13660 +  if (current.fosterParenting) {
 1.13661 +    $insertIntoFosterParent(this$static, elt);
 1.13662 +  }
 1.13663 +   else {
 1.13664 +    $appendElement(this$static, elt, current.node);
 1.13665 +  }
 1.13666 +  $elementPopped(this$static, ns, popName, elt);
 1.13667 +}
 1.13668 +
 1.13669 +function $appendVoidElementToCurrentMayFosterCamelCase(this$static, ns, elementName, attributes){
 1.13670 +  var current, elt, popName;
 1.13671 +  $flushCharacters(this$static);
 1.13672 +  popName = elementName.camelCaseName;
 1.13673 +  $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.13674 +  if (elementName.custom) {
 1.13675 +    popName = $checkPopName(this$static, popName);
 1.13676 +  }
 1.13677 +  elt = $createElement(this$static, ns, popName, attributes);
 1.13678 +  current = this$static.stack[this$static.currentPtr];
 1.13679 +  if (current.fosterParenting) {
 1.13680 +    $insertIntoFosterParent(this$static, elt);
 1.13681 +  }
 1.13682 +   else {
 1.13683 +    $appendElement(this$static, elt, current.node);
 1.13684 +  }
 1.13685 +  $elementPopped(this$static, ns, popName, elt);
 1.13686 +}
 1.13687 +
 1.13688 +function $charBufferContainsNonWhitespace(this$static){
 1.13689 +  var i;
 1.13690 +  for (i = 0; i < this$static.charBufferLen; ++i) {
 1.13691 +    switch (this$static.charBuffer[i]) {
 1.13692 +      case 32:
 1.13693 +      case 9:
 1.13694 +      case 10:
 1.13695 +      case 12:
 1.13696 +        continue;
 1.13697 +      default:return true;
 1.13698 +    }
 1.13699 +  }
 1.13700 +  return false;
 1.13701 +}
 1.13702 +
 1.13703 +function $characters(this$static, buf, start, length){
 1.13704 +  var end, i;
 1.13705 +  if (this$static.needToDropLF) {
 1.13706 +    if (buf[start] == 10) {
 1.13707 +      ++start;
 1.13708 +      --length;
 1.13709 +      if (length == 0) {
 1.13710 +        return;
 1.13711 +      }
 1.13712 +    }
 1.13713 +    this$static.needToDropLF = false;
 1.13714 +  }
 1.13715 +  switch (this$static.mode) {
 1.13716 +    case 6:
 1.13717 +    case 12:
 1.13718 +    case 8:
 1.13719 +      $reconstructTheActiveFormattingElements(this$static);
 1.13720 +    case 20:
 1.13721 +      $accumulateCharacters(this$static, buf, start, length);
 1.13722 +      return;
 1.13723 +    default:end = start + length;
 1.13724 +      charactersloop: for (i = start; i < end; ++i) {
 1.13725 +        switch (buf[i]) {
 1.13726 +          case 32:
 1.13727 +          case 9:
 1.13728 +          case 10:
 1.13729 +          case 12:
 1.13730 +            switch (this$static.mode) {
 1.13731 +              case 0:
 1.13732 +              case 1:
 1.13733 +              case 2:
 1.13734 +                start = i + 1;
 1.13735 +                continue;
 1.13736 +              case 21:
 1.13737 +              case 3:
 1.13738 +              case 4:
 1.13739 +              case 5:
 1.13740 +              case 9:
 1.13741 +              case 16:
 1.13742 +              case 17:
 1.13743 +                continue;
 1.13744 +              case 6:
 1.13745 +              case 12:
 1.13746 +              case 8:
 1.13747 +                if (start < i) {
 1.13748 +                  $accumulateCharacters(this$static, buf, start, i - start);
 1.13749 +                  start = i;
 1.13750 +                }
 1.13751 +
 1.13752 +                $reconstructTheActiveFormattingElements(this$static);
 1.13753 +                break charactersloop;
 1.13754 +              case 7:
 1.13755 +              case 10:
 1.13756 +              case 11:
 1.13757 +                $reconstructTheActiveFormattingElements(this$static);
 1.13758 +                $accumulateCharacter(this$static, buf[i]);
 1.13759 +                start = i + 1;
 1.13760 +                continue;
 1.13761 +              case 15:
 1.13762 +                if (start < i) {
 1.13763 +                  $accumulateCharacters(this$static, buf, start, i - start);
 1.13764 +                  start = i;
 1.13765 +                }
 1.13766 +
 1.13767 +                $reconstructTheActiveFormattingElements(this$static);
 1.13768 +                continue;
 1.13769 +              case 18:
 1.13770 +              case 19:
 1.13771 +                if (start < i) {
 1.13772 +                  $accumulateCharacters(this$static, buf, start, i - start);
 1.13773 +                  start = i;
 1.13774 +                }
 1.13775 +
 1.13776 +                $reconstructTheActiveFormattingElements(this$static);
 1.13777 +                continue;
 1.13778 +            }
 1.13779 +
 1.13780 +          default:switch (this$static.mode) {
 1.13781 +              case 0:
 1.13782 +                $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
 1.13783 +                this$static.mode = 1;
 1.13784 +                --i;
 1.13785 +                continue;
 1.13786 +              case 1:
 1.13787 +                $appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
 1.13788 +                this$static.mode = 2;
 1.13789 +                --i;
 1.13790 +                continue;
 1.13791 +              case 2:
 1.13792 +                if (start < i) {
 1.13793 +                  $accumulateCharacters(this$static, buf, start, i - start);
 1.13794 +                  start = i;
 1.13795 +                }
 1.13796 +
 1.13797 +                $appendToCurrentNodeAndPushHeadElement(this$static, ($clinit_91() , EMPTY_ATTRIBUTES));
 1.13798 +                this$static.mode = 3;
 1.13799 +                --i;
 1.13800 +                continue;
 1.13801 +              case 3:
 1.13802 +                if (start < i) {
 1.13803 +                  $accumulateCharacters(this$static, buf, start, i - start);
 1.13804 +                  start = i;
 1.13805 +                }
 1.13806 +
 1.13807 +                $pop(this$static);
 1.13808 +                this$static.mode = 5;
 1.13809 +                --i;
 1.13810 +                continue;
 1.13811 +              case 4:
 1.13812 +                if (start < i) {
 1.13813 +                  $accumulateCharacters(this$static, buf, start, i - start);
 1.13814 +                  start = i;
 1.13815 +                }
 1.13816 +
 1.13817 +                $pop(this$static);
 1.13818 +                this$static.mode = 3;
 1.13819 +                --i;
 1.13820 +                continue;
 1.13821 +              case 5:
 1.13822 +                if (start < i) {
 1.13823 +                  $accumulateCharacters(this$static, buf, start, i - start);
 1.13824 +                  start = i;
 1.13825 +                }
 1.13826 +
 1.13827 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
 1.13828 +                this$static.mode = 21;
 1.13829 +                --i;
 1.13830 +                continue;
 1.13831 +              case 21:
 1.13832 +                this$static.mode = 6;
 1.13833 +                --i;
 1.13834 +                continue;
 1.13835 +              case 6:
 1.13836 +              case 12:
 1.13837 +              case 8:
 1.13838 +                if (start < i) {
 1.13839 +                  $accumulateCharacters(this$static, buf, start, i - start);
 1.13840 +                  start = i;
 1.13841 +                }
 1.13842 +
 1.13843 +                $reconstructTheActiveFormattingElements(this$static);
 1.13844 +                break charactersloop;
 1.13845 +              case 7:
 1.13846 +              case 10:
 1.13847 +              case 11:
 1.13848 +                $reconstructTheActiveFormattingElements(this$static);
 1.13849 +                $accumulateCharacter(this$static, buf[i]);
 1.13850 +                start = i + 1;
 1.13851 +                continue;
 1.13852 +              case 9:
 1.13853 +                if (start < i) {
 1.13854 +                  $accumulateCharacters(this$static, buf, start, i - start);
 1.13855 +                  start = i;
 1.13856 +                }
 1.13857 +
 1.13858 +                if (this$static.currentPtr == 0) {
 1.13859 +                  start = i + 1;
 1.13860 +                  continue;
 1.13861 +                }
 1.13862 +
 1.13863 +                $pop(this$static);
 1.13864 +                this$static.mode = 7;
 1.13865 +                --i;
 1.13866 +                continue;
 1.13867 +                break charactersloop;
 1.13868 +              case 15:
 1.13869 +                this$static.mode = 6;
 1.13870 +                --i;
 1.13871 +                continue;
 1.13872 +              case 16:
 1.13873 +                if (start < i) {
 1.13874 +                  $accumulateCharacters(this$static, buf, start, i - start);
 1.13875 +                  start = i;
 1.13876 +                }
 1.13877 +
 1.13878 +                start = i + 1;
 1.13879 +                continue;
 1.13880 +              case 17:
 1.13881 +                if (start < i) {
 1.13882 +                  $accumulateCharacters(this$static, buf, start, i - start);
 1.13883 +                  start = i;
 1.13884 +                }
 1.13885 +
 1.13886 +                start = i + 1;
 1.13887 +                continue;
 1.13888 +              case 18:
 1.13889 +                this$static.mode = 6;
 1.13890 +                --i;
 1.13891 +                continue;
 1.13892 +              case 19:
 1.13893 +                this$static.mode = 16;
 1.13894 +                --i;
 1.13895 +                continue;
 1.13896 +            }
 1.13897 +
 1.13898 +        }
 1.13899 +      }
 1.13900 +
 1.13901 +      if (start < end) {
 1.13902 +        $accumulateCharacters(this$static, buf, start, end - start);
 1.13903 +      }
 1.13904 +
 1.13905 +  }
 1.13906 +}
 1.13907 +
 1.13908 +function $checkMetaCharset(this$static, attributes){
 1.13909 +  var content, internalCharsetHtml5, internalCharsetLegacy;
 1.13910 +  content = $getValue_0(attributes, ($clinit_87() , CONTENT));
 1.13911 +  internalCharsetLegacy = null;
 1.13912 +  if (content != null) {
 1.13913 +    internalCharsetLegacy = extractCharsetFromContent(content);
 1.13914 +  }
 1.13915 +  if (internalCharsetLegacy == null) {
 1.13916 +    internalCharsetHtml5 = $getValue_0(attributes, CHARSET);
 1.13917 +    if (internalCharsetHtml5 != null) {
 1.13918 +      this$static.tokenizer.shouldSuspend = true;
 1.13919 +    }
 1.13920 +  }
 1.13921 +   else {
 1.13922 +    this$static.tokenizer.shouldSuspend = true;
 1.13923 +  }
 1.13924 +}
 1.13925 +
 1.13926 +function $checkPopName(this$static, name){
 1.13927 +  if (isNCName(name)) {
 1.13928 +    return name;
 1.13929 +  }
 1.13930 +   else {
 1.13931 +    switch (this$static.namePolicy.ordinal) {
 1.13932 +      case 0:
 1.13933 +        return name;
 1.13934 +      case 2:
 1.13935 +        return escapeName(name);
 1.13936 +      case 1:
 1.13937 +        $fatal_1(this$static, 'Element name \u201C' + name + '\u201D cannot be represented as XML 1.0.');
 1.13938 +    }
 1.13939 +  }
 1.13940 +  return null;
 1.13941 +}
 1.13942 +
 1.13943 +function $clearStackBackTo(this$static, eltPos){
 1.13944 +  while (this$static.currentPtr > eltPos) {
 1.13945 +    $pop(this$static);
 1.13946 +  }
 1.13947 +}
 1.13948 +
 1.13949 +function $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static){
 1.13950 +  while (this$static.listPtr > -1) {
 1.13951 +    if (!this$static.listOfActiveFormattingElements[this$static.listPtr]) {
 1.13952 +      --this$static.listPtr;
 1.13953 +      return;
 1.13954 +    }
 1.13955 +    --this$static.listOfActiveFormattingElements[this$static.listPtr].refcount;
 1.13956 +    --this$static.listPtr;
 1.13957 +  }
 1.13958 +}
 1.13959 +
 1.13960 +function $closeTheCell(this$static, eltPos){
 1.13961 +  $generateImpliedEndTags(this$static);
 1.13962 +  while (this$static.currentPtr >= eltPos) {
 1.13963 +    $pop(this$static);
 1.13964 +  }
 1.13965 +  $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
 1.13966 +  this$static.mode = 11;
 1.13967 +  return;
 1.13968 +}
 1.13969 +
 1.13970 +function $comment(this$static, buf, start, length){
 1.13971 +  var end, end_0, end_1;
 1.13972 +  this$static.needToDropLF = false;
 1.13973 +  if (!this$static.wantingComments) {
 1.13974 +    return;
 1.13975 +  }
 1.13976 +  commentloop: for (;;) {
 1.13977 +    switch (this$static.foreignFlag) {
 1.13978 +      case 0:
 1.13979 +        break commentloop;
 1.13980 +      default:switch (this$static.mode) {
 1.13981 +          case 0:
 1.13982 +          case 1:
 1.13983 +          case 18:
 1.13984 +          case 19:
 1.13985 +            $appendCommentToDocument(this$static, (end = start + length , __checkBounds(buf.length, start, end) , __valueOf(buf, start, end)));
 1.13986 +            return;
 1.13987 +          case 15:
 1.13988 +            $flushCharacters(this$static);
 1.13989 +            $appendComment(this$static, this$static.stack[0].node, (end_0 = start + length , __checkBounds(buf.length, start, end_0) , __valueOf(buf, start, end_0)));
 1.13990 +            return;
 1.13991 +          default:break commentloop;
 1.13992 +        }
 1.13993 +
 1.13994 +    }
 1.13995 +  }
 1.13996 +  $flushCharacters(this$static);
 1.13997 +  $appendComment(this$static, this$static.stack[this$static.currentPtr].node, (end_1 = start + length , __checkBounds(buf.length, start, end_1) , __valueOf(buf, start, end_1)));
 1.13998 +  return;
 1.13999 +}
 1.14000 +
 1.14001 +function $doctype(this$static, name, publicIdentifier, systemIdentifier, forceQuirks){
 1.14002 +  this$static.needToDropLF = false;
 1.14003 +  doctypeloop: for (;;) {
 1.14004 +    switch (this$static.foreignFlag) {
 1.14005 +      case 0:
 1.14006 +        break doctypeloop;
 1.14007 +      default:switch (this$static.mode) {
 1.14008 +          case 0:
 1.14009 +            switch (this$static.doctypeExpectation.ordinal) {
 1.14010 +              case 0:
 1.14011 +                if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
 1.14012 +                  $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
 1.14013 +                }
 1.14014 +                 else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
 1.14015 +                  $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
 1.14016 +                }
 1.14017 +                 else {
 1.14018 +                  if ($equals_0('-//W3C//DTD HTML 4.0//EN', publicIdentifier) && (systemIdentifier == null || $equals_0('http://www.w3.org/TR/REC-html40/strict.dtd', systemIdentifier)) || $equals_0('-//W3C//DTD HTML 4.01//EN', publicIdentifier) && (systemIdentifier == null || $equals_0('http://www.w3.org/TR/html4/strict.dtd', systemIdentifier)) || $equals_0('-//W3C//DTD XHTML 1.0 Strict//EN', publicIdentifier) && $equals_0('http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd', systemIdentifier) || $equals_0('-//W3C//DTD XHTML 1.1//EN', publicIdentifier) && $equals_0('http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd', systemIdentifier)) {
 1.14019 +                  }
 1.14020 +                   else 
 1.14021 +                    !((systemIdentifier == null || $equals_0('about:legacy-compat', systemIdentifier)) && publicIdentifier == null);
 1.14022 +                  $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
 1.14023 +                }
 1.14024 +
 1.14025 +                break;
 1.14026 +              case 2:
 1.14027 +                this$static.html4 = true;
 1.14028 +                this$static.tokenizer.html4 = true;
 1.14029 +                if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
 1.14030 +                  $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
 1.14031 +                }
 1.14032 +                 else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
 1.14033 +                  $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
 1.14034 +                }
 1.14035 +                 else {
 1.14036 +                  if ($equals_0('-//W3C//DTD HTML 4.01//EN', publicIdentifier)) {
 1.14037 +                    !$equals_0('http://www.w3.org/TR/html4/strict.dtd', systemIdentifier);
 1.14038 +                  }
 1.14039 +                   else {
 1.14040 +                  }
 1.14041 +                  $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
 1.14042 +                }
 1.14043 +
 1.14044 +                break;
 1.14045 +              case 1:
 1.14046 +                this$static.html4 = true;
 1.14047 +                this$static.tokenizer.html4 = true;
 1.14048 +                if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
 1.14049 +                  $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
 1.14050 +                }
 1.14051 +                 else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
 1.14052 +                  if ($equals_0('-//W3C//DTD HTML 4.01 Transitional//EN', publicIdentifier) && systemIdentifier != null) {
 1.14053 +                    !$equals_0('http://www.w3.org/TR/html4/loose.dtd', systemIdentifier);
 1.14054 +                  }
 1.14055 +                   else {
 1.14056 +                  }
 1.14057 +                  $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
 1.14058 +                }
 1.14059 +                 else {
 1.14060 +                  $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
 1.14061 +                }
 1.14062 +
 1.14063 +                break;
 1.14064 +              case 3:
 1.14065 +                this$static.html4 = $isHtml4Doctype(publicIdentifier);
 1.14066 +                if (this$static.html4) {
 1.14067 +                  this$static.tokenizer.html4 = true;
 1.14068 +                }
 1.14069 +
 1.14070 +                if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
 1.14071 +                  $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
 1.14072 +                }
 1.14073 +                 else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
 1.14074 +                  if ($equals_0('-//W3C//DTD HTML 4.01 Transitional//EN', publicIdentifier)) {
 1.14075 +                    !$equals_0('http://www.w3.org/TR/html4/loose.dtd', systemIdentifier);
 1.14076 +                  }
 1.14077 +                   else {
 1.14078 +                  }
 1.14079 +                  $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
 1.14080 +                }
 1.14081 +                 else {
 1.14082 +                  if ($equals_0('-//W3C//DTD HTML 4.01//EN', publicIdentifier)) {
 1.14083 +                    !$equals_0('http://www.w3.org/TR/html4/strict.dtd', systemIdentifier);
 1.14084 +                  }
 1.14085 +                   else {
 1.14086 +                  }
 1.14087 +                  $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
 1.14088 +                }
 1.14089 +
 1.14090 +                break;
 1.14091 +              case 4:
 1.14092 +                if ($isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks)) {
 1.14093 +                  $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
 1.14094 +                }
 1.14095 +                 else if ($isAlmostStandards(publicIdentifier, systemIdentifier)) {
 1.14096 +                  $documentModeInternal(this$static, ($clinit_78() , ALMOST_STANDARDS_MODE));
 1.14097 +                }
 1.14098 +                 else {
 1.14099 +                  $documentModeInternal(this$static, ($clinit_78() , STANDARDS_MODE));
 1.14100 +                }
 1.14101 +
 1.14102 +            }
 1.14103 +
 1.14104 +            this$static.mode = 1;
 1.14105 +            return;
 1.14106 +          default:break doctypeloop;
 1.14107 +        }
 1.14108 +
 1.14109 +    }
 1.14110 +  }
 1.14111 +  return;
 1.14112 +}
 1.14113 +
 1.14114 +function $documentModeInternal(this$static, m){
 1.14115 +  this$static.quirks = m == ($clinit_78() , QUIRKS_MODE);
 1.14116 +}
 1.14117 +
 1.14118 +function $endSelect(this$static){
 1.14119 +  var eltPos;
 1.14120 +  eltPos = $findLastInTableScope(this$static, 'select');
 1.14121 +  if (eltPos == 2147483647) {
 1.14122 +    return;
 1.14123 +  }
 1.14124 +  while (this$static.currentPtr >= eltPos) {
 1.14125 +    $pop(this$static);
 1.14126 +  }
 1.14127 +  $resetTheInsertionMode(this$static);
 1.14128 +}
 1.14129 +
 1.14130 +function $endTag(this$static, elementName){
 1.14131 +  var eltPos, group, name, node;
 1.14132 +  this$static.needToDropLF = false;
 1.14133 +  endtagloop: for (;;) {
 1.14134 +    group = elementName.group;
 1.14135 +    name = elementName.name_0;
 1.14136 +    switch (this$static.mode) {
 1.14137 +      case 11:
 1.14138 +        switch (group) {
 1.14139 +          case 37:
 1.14140 +            eltPos = $findLastOrRoot(this$static, 37);
 1.14141 +            if (eltPos == 0) {
 1.14142 +              break endtagloop;
 1.14143 +            }
 1.14144 +
 1.14145 +            $clearStackBackTo(this$static, eltPos);
 1.14146 +            $pop(this$static);
 1.14147 +            this$static.mode = 10;
 1.14148 +            break endtagloop;
 1.14149 +          case 34:
 1.14150 +            eltPos = $findLastOrRoot(this$static, 37);
 1.14151 +            if (eltPos == 0) {
 1.14152 +              break endtagloop;
 1.14153 +            }
 1.14154 +
 1.14155 +            $clearStackBackTo(this$static, eltPos);
 1.14156 +            $pop(this$static);
 1.14157 +            this$static.mode = 10;
 1.14158 +            continue;
 1.14159 +          case 39:
 1.14160 +            if ($findLastInTableScope(this$static, name) == 2147483647) {
 1.14161 +              break endtagloop;
 1.14162 +            }
 1.14163 +
 1.14164 +            eltPos = $findLastOrRoot(this$static, 37);
 1.14165 +            if (eltPos == 0) {
 1.14166 +              break endtagloop;
 1.14167 +            }
 1.14168 +
 1.14169 +            $clearStackBackTo(this$static, eltPos);
 1.14170 +            $pop(this$static);
 1.14171 +            this$static.mode = 10;
 1.14172 +            continue;
 1.14173 +            break endtagloop;
 1.14174 +        }
 1.14175 +
 1.14176 +      case 10:
 1.14177 +        switch (group) {
 1.14178 +          case 39:
 1.14179 +            eltPos = $findLastOrRoot_0(this$static, name);
 1.14180 +            if (eltPos == 0) {
 1.14181 +              break endtagloop;
 1.14182 +            }
 1.14183 +
 1.14184 +            $clearStackBackTo(this$static, eltPos);
 1.14185 +            $pop(this$static);
 1.14186 +            this$static.mode = 7;
 1.14187 +            break endtagloop;
 1.14188 +          case 34:
 1.14189 +            eltPos = $findLastInTableScopeOrRootTbodyTheadTfoot(this$static);
 1.14190 +            if (eltPos == 0) {
 1.14191 +              break endtagloop;
 1.14192 +            }
 1.14193 +
 1.14194 +            $clearStackBackTo(this$static, eltPos);
 1.14195 +            $pop(this$static);
 1.14196 +            this$static.mode = 7;
 1.14197 +            continue;
 1.14198 +            break endtagloop;
 1.14199 +        }
 1.14200 +
 1.14201 +      case 7:
 1.14202 +        switch (group) {
 1.14203 +          case 34:
 1.14204 +            eltPos = $findLast(this$static, 'table');
 1.14205 +            if (eltPos == 2147483647) {
 1.14206 +              break endtagloop;
 1.14207 +            }
 1.14208 +
 1.14209 +            while (this$static.currentPtr >= eltPos) {
 1.14210 +              $pop(this$static);
 1.14211 +            }
 1.14212 +
 1.14213 +            $resetTheInsertionMode(this$static);
 1.14214 +            break endtagloop;
 1.14215 +        }
 1.14216 +
 1.14217 +      case 8:
 1.14218 +        switch (group) {
 1.14219 +          case 6:
 1.14220 +            eltPos = $findLastInTableScope(this$static, 'caption');
 1.14221 +            if (eltPos == 2147483647) {
 1.14222 +              break endtagloop;
 1.14223 +            }
 1.14224 +
 1.14225 +            $generateImpliedEndTags(this$static);
 1.14226 +            while (this$static.currentPtr >= eltPos) {
 1.14227 +              $pop(this$static);
 1.14228 +            }
 1.14229 +
 1.14230 +            $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
 1.14231 +            this$static.mode = 7;
 1.14232 +            break endtagloop;
 1.14233 +          case 34:
 1.14234 +            eltPos = $findLastInTableScope(this$static, 'caption');
 1.14235 +            if (eltPos == 2147483647) {
 1.14236 +              break endtagloop;
 1.14237 +            }
 1.14238 +
 1.14239 +            $generateImpliedEndTags(this$static);
 1.14240 +            while (this$static.currentPtr >= eltPos) {
 1.14241 +              $pop(this$static);
 1.14242 +            }
 1.14243 +
 1.14244 +            $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
 1.14245 +            this$static.mode = 7;
 1.14246 +            continue;
 1.14247 +            break endtagloop;
 1.14248 +        }
 1.14249 +
 1.14250 +      case 12:
 1.14251 +        switch (group) {
 1.14252 +          case 40:
 1.14253 +            eltPos = $findLastInTableScope(this$static, name);
 1.14254 +            if (eltPos == 2147483647) {
 1.14255 +              break endtagloop;
 1.14256 +            }
 1.14257 +
 1.14258 +            $generateImpliedEndTags(this$static);
 1.14259 +            while (this$static.currentPtr >= eltPos) {
 1.14260 +              $pop(this$static);
 1.14261 +            }
 1.14262 +
 1.14263 +            $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
 1.14264 +            this$static.mode = 11;
 1.14265 +            break endtagloop;
 1.14266 +          case 34:
 1.14267 +          case 39:
 1.14268 +          case 37:
 1.14269 +            if ($findLastInTableScope(this$static, name) == 2147483647) {
 1.14270 +              break endtagloop;
 1.14271 +            }
 1.14272 +
 1.14273 +            $closeTheCell(this$static, $findLastInTableScopeTdTh(this$static));
 1.14274 +            continue;
 1.14275 +            break endtagloop;
 1.14276 +        }
 1.14277 +
 1.14278 +      case 21:
 1.14279 +      case 6:
 1.14280 +        switch (group) {
 1.14281 +          case 3:
 1.14282 +            if (!(this$static.currentPtr >= 1 && this$static.stack[1].group == 3)) {
 1.14283 +              break endtagloop;
 1.14284 +            }
 1.14285 +
 1.14286 +            this$static.mode = 15;
 1.14287 +            break endtagloop;
 1.14288 +          case 23:
 1.14289 +            if (!(this$static.currentPtr >= 1 && this$static.stack[1].group == 3)) {
 1.14290 +              break endtagloop;
 1.14291 +            }
 1.14292 +
 1.14293 +            this$static.mode = 15;
 1.14294 +            continue;
 1.14295 +          case 50:
 1.14296 +          case 46:
 1.14297 +          case 44:
 1.14298 +          case 61:
 1.14299 +          case 51:
 1.14300 +            eltPos = $findLastInScope(this$static, name);
 1.14301 +            if (eltPos == 2147483647) {
 1.14302 +            }
 1.14303 +             else {
 1.14304 +              $generateImpliedEndTags(this$static);
 1.14305 +              while (this$static.currentPtr >= eltPos) {
 1.14306 +                $pop(this$static);
 1.14307 +              }
 1.14308 +            }
 1.14309 +
 1.14310 +            break endtagloop;
 1.14311 +          case 9:
 1.14312 +            if (!this$static.formPointer) {
 1.14313 +              break endtagloop;
 1.14314 +            }
 1.14315 +
 1.14316 +            this$static.formPointer = null;
 1.14317 +            eltPos = $findLastInScope(this$static, name);
 1.14318 +            if (eltPos == 2147483647) {
 1.14319 +              break endtagloop;
 1.14320 +            }
 1.14321 +
 1.14322 +            $generateImpliedEndTags(this$static);
 1.14323 +            $removeFromStack(this$static, eltPos);
 1.14324 +            break endtagloop;
 1.14325 +          case 29:
 1.14326 +            eltPos = $findLastInScope(this$static, 'p');
 1.14327 +            if (eltPos == 2147483647) {
 1.14328 +              if (this$static.foreignFlag == 0) {
 1.14329 +                while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
 1.14330 +                  $pop(this$static);
 1.14331 +                }
 1.14332 +                this$static.foreignFlag = 1;
 1.14333 +              }
 1.14334 +              $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, ($clinit_91() , EMPTY_ATTRIBUTES));
 1.14335 +              break endtagloop;
 1.14336 +            }
 1.14337 +
 1.14338 +            $generateImpliedEndTagsExceptFor(this$static, 'p');
 1.14339 +            while (this$static.currentPtr >= eltPos) {
 1.14340 +              $pop(this$static);
 1.14341 +            }
 1.14342 +
 1.14343 +            break endtagloop;
 1.14344 +          case 41:
 1.14345 +          case 15:
 1.14346 +            eltPos = $findLastInScope(this$static, name);
 1.14347 +            if (eltPos == 2147483647) {
 1.14348 +            }
 1.14349 +             else {
 1.14350 +              $generateImpliedEndTagsExceptFor(this$static, name);
 1.14351 +              while (this$static.currentPtr >= eltPos) {
 1.14352 +                $pop(this$static);
 1.14353 +              }
 1.14354 +            }
 1.14355 +
 1.14356 +            break endtagloop;
 1.14357 +          case 42:
 1.14358 +            eltPos = $findLastInScopeHn(this$static);
 1.14359 +            if (eltPos == 2147483647) {
 1.14360 +            }
 1.14361 +             else {
 1.14362 +              $generateImpliedEndTags(this$static);
 1.14363 +              while (this$static.currentPtr >= eltPos) {
 1.14364 +                $pop(this$static);
 1.14365 +              }
 1.14366 +            }
 1.14367 +
 1.14368 +            break endtagloop;
 1.14369 +          case 1:
 1.14370 +          case 45:
 1.14371 +          case 64:
 1.14372 +          case 24:
 1.14373 +            $adoptionAgencyEndTag(this$static, name);
 1.14374 +            break endtagloop;
 1.14375 +          case 5:
 1.14376 +          case 63:
 1.14377 +          case 43:
 1.14378 +            eltPos = $findLastInScope(this$static, name);
 1.14379 +            if (eltPos == 2147483647) {
 1.14380 +            }
 1.14381 +             else {
 1.14382 +              $generateImpliedEndTags(this$static);
 1.14383 +              while (this$static.currentPtr >= eltPos) {
 1.14384 +                $pop(this$static);
 1.14385 +              }
 1.14386 +              $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
 1.14387 +            }
 1.14388 +
 1.14389 +            break endtagloop;
 1.14390 +          case 4:
 1.14391 +            if (this$static.foreignFlag == 0) {
 1.14392 +              while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
 1.14393 +                $pop(this$static);
 1.14394 +              }
 1.14395 +              this$static.foreignFlag = 1;
 1.14396 +            }
 1.14397 +
 1.14398 +            $reconstructTheActiveFormattingElements(this$static);
 1.14399 +            $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, ($clinit_91() , EMPTY_ATTRIBUTES));
 1.14400 +            break endtagloop;
 1.14401 +          case 49:
 1.14402 +          case 55:
 1.14403 +          case 48:
 1.14404 +          case 12:
 1.14405 +          case 13:
 1.14406 +          case 65:
 1.14407 +          case 22:
 1.14408 +          case 14:
 1.14409 +          case 47:
 1.14410 +          case 60:
 1.14411 +          case 25:
 1.14412 +          case 32:
 1.14413 +          case 34:
 1.14414 +          case 35:
 1.14415 +            break endtagloop;
 1.14416 +          case 26:
 1.14417 +          default:if (name == this$static.stack[this$static.currentPtr].name_0) {
 1.14418 +              $pop(this$static);
 1.14419 +              break endtagloop;
 1.14420 +            }
 1.14421 +
 1.14422 +            eltPos = this$static.currentPtr;
 1.14423 +            for (;;) {
 1.14424 +              node = this$static.stack[eltPos];
 1.14425 +              if (node.name_0 == name) {
 1.14426 +                $generateImpliedEndTags(this$static);
 1.14427 +                while (this$static.currentPtr >= eltPos) {
 1.14428 +                  $pop(this$static);
 1.14429 +                }
 1.14430 +                break endtagloop;
 1.14431 +              }
 1.14432 +               else if (node.scoping || node.special) {
 1.14433 +                break endtagloop;
 1.14434 +              }
 1.14435 +              --eltPos;
 1.14436 +            }
 1.14437 +
 1.14438 +        }
 1.14439 +
 1.14440 +      case 9:
 1.14441 +        switch (group) {
 1.14442 +          case 8:
 1.14443 +            if (this$static.currentPtr == 0) {
 1.14444 +              break endtagloop;
 1.14445 +            }
 1.14446 +
 1.14447 +            $pop(this$static);
 1.14448 +            this$static.mode = 7;
 1.14449 +            break endtagloop;
 1.14450 +          case 7:
 1.14451 +            break endtagloop;
 1.14452 +          default:if (this$static.currentPtr == 0) {
 1.14453 +              break endtagloop;
 1.14454 +            }
 1.14455 +
 1.14456 +            $pop(this$static);
 1.14457 +            this$static.mode = 7;
 1.14458 +            continue;
 1.14459 +        }
 1.14460 +
 1.14461 +      case 14:
 1.14462 +        switch (group) {
 1.14463 +          case 6:
 1.14464 +          case 34:
 1.14465 +          case 39:
 1.14466 +          case 37:
 1.14467 +          case 40:
 1.14468 +            if ($findLastInTableScope(this$static, name) != 2147483647) {
 1.14469 +              $endSelect(this$static);
 1.14470 +              continue;
 1.14471 +            }
 1.14472 +             else {
 1.14473 +              break endtagloop;
 1.14474 +            }
 1.14475 +
 1.14476 +        }
 1.14477 +
 1.14478 +      case 13:
 1.14479 +        switch (group) {
 1.14480 +          case 28:
 1.14481 +            if ('option' == this$static.stack[this$static.currentPtr].name_0) {
 1.14482 +              $pop(this$static);
 1.14483 +              break endtagloop;
 1.14484 +            }
 1.14485 +             else {
 1.14486 +              break endtagloop;
 1.14487 +            }
 1.14488 +
 1.14489 +          case 27:
 1.14490 +            if ('option' == this$static.stack[this$static.currentPtr].name_0 && 'optgroup' == this$static.stack[this$static.currentPtr - 1].name_0) {
 1.14491 +              $pop(this$static);
 1.14492 +            }
 1.14493 +
 1.14494 +            if ('optgroup' == this$static.stack[this$static.currentPtr].name_0) {
 1.14495 +              $pop(this$static);
 1.14496 +            }
 1.14497 +             else {
 1.14498 +            }
 1.14499 +
 1.14500 +            break endtagloop;
 1.14501 +          case 32:
 1.14502 +            $endSelect(this$static);
 1.14503 +            break endtagloop;
 1.14504 +          default:break endtagloop;
 1.14505 +        }
 1.14506 +
 1.14507 +      case 15:
 1.14508 +        switch (group) {
 1.14509 +          case 23:
 1.14510 +            if (this$static.fragment) {
 1.14511 +              break endtagloop;
 1.14512 +            }
 1.14513 +             else {
 1.14514 +              this$static.mode = 18;
 1.14515 +              break endtagloop;
 1.14516 +            }
 1.14517 +
 1.14518 +          default:this$static.mode = 6;
 1.14519 +            continue;
 1.14520 +        }
 1.14521 +
 1.14522 +      case 16:
 1.14523 +        switch (group) {
 1.14524 +          case 11:
 1.14525 +            if (this$static.currentPtr == 0) {
 1.14526 +              break endtagloop;
 1.14527 +            }
 1.14528 +
 1.14529 +            $pop(this$static);
 1.14530 +            if (!this$static.fragment && 'frameset' != this$static.stack[this$static.currentPtr].name_0) {
 1.14531 +              this$static.mode = 17;
 1.14532 +            }
 1.14533 +
 1.14534 +            break endtagloop;
 1.14535 +          default:break endtagloop;
 1.14536 +        }
 1.14537 +
 1.14538 +      case 17:
 1.14539 +        switch (group) {
 1.14540 +          case 23:
 1.14541 +            this$static.mode = 19;
 1.14542 +            break endtagloop;
 1.14543 +          default:break endtagloop;
 1.14544 +        }
 1.14545 +
 1.14546 +      case 0:
 1.14547 +        $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
 1.14548 +        this$static.mode = 1;
 1.14549 +        continue;
 1.14550 +      case 1:
 1.14551 +        $appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
 1.14552 +        this$static.mode = 2;
 1.14553 +        continue;
 1.14554 +      case 2:
 1.14555 +        switch (group) {
 1.14556 +          case 20:
 1.14557 +          case 4:
 1.14558 +          case 23:
 1.14559 +          case 3:
 1.14560 +            $appendToCurrentNodeAndPushHeadElement(this$static, ($clinit_91() , EMPTY_ATTRIBUTES));
 1.14561 +            this$static.mode = 3;
 1.14562 +            continue;
 1.14563 +          default:break endtagloop;
 1.14564 +        }
 1.14565 +
 1.14566 +      case 3:
 1.14567 +        switch (group) {
 1.14568 +          case 20:
 1.14569 +            $pop(this$static);
 1.14570 +            this$static.mode = 5;
 1.14571 +            break endtagloop;
 1.14572 +          case 4:
 1.14573 +          case 23:
 1.14574 +          case 3:
 1.14575 +            $pop(this$static);
 1.14576 +            this$static.mode = 5;
 1.14577 +            continue;
 1.14578 +          default:break endtagloop;
 1.14579 +        }
 1.14580 +
 1.14581 +      case 4:
 1.14582 +        switch (group) {
 1.14583 +          case 26:
 1.14584 +            $pop(this$static);
 1.14585 +            this$static.mode = 3;
 1.14586 +            break endtagloop;
 1.14587 +          case 4:
 1.14588 +            $pop(this$static);
 1.14589 +            this$static.mode = 3;
 1.14590 +            continue;
 1.14591 +          default:break endtagloop;
 1.14592 +        }
 1.14593 +
 1.14594 +      case 5:
 1.14595 +        switch (group) {
 1.14596 +          case 23:
 1.14597 +          case 3:
 1.14598 +          case 4:
 1.14599 +            $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
 1.14600 +            this$static.mode = 21;
 1.14601 +            continue;
 1.14602 +          default:break endtagloop;
 1.14603 +        }
 1.14604 +
 1.14605 +      case 18:
 1.14606 +        this$static.mode = 6;
 1.14607 +        continue;
 1.14608 +      case 19:
 1.14609 +        this$static.mode = 16;
 1.14610 +        continue;
 1.14611 +      case 20:
 1.14612 +        if (this$static.originalMode == 5) {
 1.14613 +          $pop(this$static);
 1.14614 +        }
 1.14615 +
 1.14616 +        $pop(this$static);
 1.14617 +        this$static.mode = this$static.originalMode;
 1.14618 +        break endtagloop;
 1.14619 +    }
 1.14620 +  }
 1.14621 +  if (this$static.foreignFlag == 0 && !$hasForeignInScope(this$static)) {
 1.14622 +    this$static.foreignFlag = 1;
 1.14623 +  }
 1.14624 +}
 1.14625 +
 1.14626 +function $endTokenization(this$static){
 1.14627 +  this$static.formPointer = null;
 1.14628 +  this$static.headPointer = null;
 1.14629 +  while (this$static.currentPtr > -1) {
 1.14630 +    --this$static.stack[this$static.currentPtr].refcount;
 1.14631 +    --this$static.currentPtr;
 1.14632 +  }
 1.14633 +  this$static.stack = null;
 1.14634 +  while (this$static.listPtr > -1) {
 1.14635 +    if (this$static.listOfActiveFormattingElements[this$static.listPtr]) {
 1.14636 +      --this$static.listOfActiveFormattingElements[this$static.listPtr].refcount;
 1.14637 +    }
 1.14638 +    --this$static.listPtr;
 1.14639 +  }
 1.14640 +  this$static.listOfActiveFormattingElements = null;
 1.14641 +  $clearImpl(this$static.idLocations);
 1.14642 +  this$static.charBuffer = null;
 1.14643 +}
 1.14644 +
 1.14645 +function $eof_0(this$static){
 1.14646 +  var group, i;
 1.14647 +  $flushCharacters(this$static);
 1.14648 +  switch (this$static.foreignFlag) {
 1.14649 +    case 0:
 1.14650 +      while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
 1.14651 +        $popOnEof(this$static);
 1.14652 +      }
 1.14653 +
 1.14654 +      this$static.foreignFlag = 1;
 1.14655 +  }
 1.14656 +  eofloop: for (;;) {
 1.14657 +    switch (this$static.mode) {
 1.14658 +      case 0:
 1.14659 +        $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
 1.14660 +        this$static.mode = 1;
 1.14661 +        continue;
 1.14662 +      case 1:
 1.14663 +        $appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
 1.14664 +        this$static.mode = 2;
 1.14665 +        continue;
 1.14666 +      case 2:
 1.14667 +        $appendToCurrentNodeAndPushHeadElement(this$static, ($clinit_91() , EMPTY_ATTRIBUTES));
 1.14668 +        this$static.mode = 3;
 1.14669 +        continue;
 1.14670 +      case 3:
 1.14671 +        while (this$static.currentPtr > 0) {
 1.14672 +          $popOnEof(this$static);
 1.14673 +        }
 1.14674 +
 1.14675 +        this$static.mode = 5;
 1.14676 +        continue;
 1.14677 +      case 4:
 1.14678 +        while (this$static.currentPtr > 1) {
 1.14679 +          $popOnEof(this$static);
 1.14680 +        }
 1.14681 +
 1.14682 +        this$static.mode = 3;
 1.14683 +        continue;
 1.14684 +      case 5:
 1.14685 +        $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
 1.14686 +        this$static.mode = 6;
 1.14687 +        continue;
 1.14688 +      case 9:
 1.14689 +        if (this$static.currentPtr == 0) {
 1.14690 +          break eofloop;
 1.14691 +        }
 1.14692 +         else {
 1.14693 +          $popOnEof(this$static);
 1.14694 +          this$static.mode = 7;
 1.14695 +          continue;
 1.14696 +        }
 1.14697 +
 1.14698 +      case 21:
 1.14699 +      case 8:
 1.14700 +      case 12:
 1.14701 +      case 6:
 1.14702 +        openelementloop: for (i = this$static.currentPtr; i >= 0; --i) {
 1.14703 +          group = this$static.stack[i].group;
 1.14704 +          switch (group) {
 1.14705 +            case 41:
 1.14706 +            case 15:
 1.14707 +            case 29:
 1.14708 +            case 39:
 1.14709 +            case 40:
 1.14710 +            case 3:
 1.14711 +            case 23:
 1.14712 +              break;
 1.14713 +            default:break openelementloop;
 1.14714 +          }
 1.14715 +        }
 1.14716 +
 1.14717 +        break eofloop;
 1.14718 +      case 20:
 1.14719 +        if (this$static.originalMode == 5) {
 1.14720 +          $popOnEof(this$static);
 1.14721 +        }
 1.14722 +
 1.14723 +        $popOnEof(this$static);
 1.14724 +        this$static.mode = this$static.originalMode;
 1.14725 +        continue;
 1.14726 +      case 10:
 1.14727 +      case 11:
 1.14728 +      case 7:
 1.14729 +      case 13:
 1.14730 +      case 14:
 1.14731 +      case 16:
 1.14732 +        break eofloop;
 1.14733 +      case 15:
 1.14734 +      case 17:
 1.14735 +      case 18:
 1.14736 +      case 19:
 1.14737 +      default:if (this$static.currentPtr == 0) {
 1.14738 +          fromDouble((new Date()).getTime());
 1.14739 +        }
 1.14740 +
 1.14741 +        break eofloop;
 1.14742 +    }
 1.14743 +  }
 1.14744 +  while (this$static.currentPtr > 0) {
 1.14745 +    $popOnEof(this$static);
 1.14746 +  }
 1.14747 +  if (!this$static.fragment) {
 1.14748 +    $popOnEof(this$static);
 1.14749 +  }
 1.14750 +}
 1.14751 +
 1.14752 +function $fatal_0(this$static, e){
 1.14753 +  var spe;
 1.14754 +  spe = $SAXParseException_0(new SAXParseException(), e.detailMessage, this$static.tokenizer, e);
 1.14755 +  throw spe;
 1.14756 +}
 1.14757 +
 1.14758 +function $fatal_1(this$static, s){
 1.14759 +  var spe;
 1.14760 +  spe = $SAXParseException(new SAXParseException(), s, this$static.tokenizer);
 1.14761 +  throw spe;
 1.14762 +}
 1.14763 +
 1.14764 +function $findInListOfActiveFormattingElements(this$static, node){
 1.14765 +  var i;
 1.14766 +  for (i = this$static.listPtr; i >= 0; --i) {
 1.14767 +    if (node == this$static.listOfActiveFormattingElements[i]) {
 1.14768 +      return i;
 1.14769 +    }
 1.14770 +  }
 1.14771 +  return -1;
 1.14772 +}
 1.14773 +
 1.14774 +function $findInListOfActiveFormattingElementsContainsBetweenEndAndLastMarker(this$static, name){
 1.14775 +  var i, node;
 1.14776 +  for (i = this$static.listPtr; i >= 0; --i) {
 1.14777 +    node = this$static.listOfActiveFormattingElements[i];
 1.14778 +    if (!node) {
 1.14779 +      return -1;
 1.14780 +    }
 1.14781 +     else if (node.name_0 == name) {
 1.14782 +      return i;
 1.14783 +    }
 1.14784 +  }
 1.14785 +  return -1;
 1.14786 +}
 1.14787 +
 1.14788 +function $findLast(this$static, name){
 1.14789 +  var i;
 1.14790 +  for (i = this$static.currentPtr; i > 0; --i) {
 1.14791 +    if (this$static.stack[i].name_0 == name) {
 1.14792 +      return i;
 1.14793 +    }
 1.14794 +  }
 1.14795 +  return 2147483647;
 1.14796 +}
 1.14797 +
 1.14798 +function $findLastInScope(this$static, name){
 1.14799 +  var i;
 1.14800 +  for (i = this$static.currentPtr; i > 0; --i) {
 1.14801 +    if (this$static.stack[i].name_0 == name) {
 1.14802 +      return i;
 1.14803 +    }
 1.14804 +     else if (this$static.stack[i].scoping) {
 1.14805 +      return 2147483647;
 1.14806 +    }
 1.14807 +  }
 1.14808 +  return 2147483647;
 1.14809 +}
 1.14810 +
 1.14811 +function $findLastInScopeHn(this$static){
 1.14812 +  var i;
 1.14813 +  for (i = this$static.currentPtr; i > 0; --i) {
 1.14814 +    if (this$static.stack[i].group == 42) {
 1.14815 +      return i;
 1.14816 +    }
 1.14817 +     else if (this$static.stack[i].scoping) {
 1.14818 +      return 2147483647;
 1.14819 +    }
 1.14820 +  }
 1.14821 +  return 2147483647;
 1.14822 +}
 1.14823 +
 1.14824 +function $findLastInTableScope(this$static, name){
 1.14825 +  var i;
 1.14826 +  for (i = this$static.currentPtr; i > 0; --i) {
 1.14827 +    if (this$static.stack[i].name_0 == name) {
 1.14828 +      return i;
 1.14829 +    }
 1.14830 +     else if (this$static.stack[i].name_0 == 'table') {
 1.14831 +      return 2147483647;
 1.14832 +    }
 1.14833 +  }
 1.14834 +  return 2147483647;
 1.14835 +}
 1.14836 +
 1.14837 +function $findLastInTableScopeOrRootTbodyTheadTfoot(this$static){
 1.14838 +  var i;
 1.14839 +  for (i = this$static.currentPtr; i > 0; --i) {
 1.14840 +    if (this$static.stack[i].group == 39) {
 1.14841 +      return i;
 1.14842 +    }
 1.14843 +  }
 1.14844 +  return 0;
 1.14845 +}
 1.14846 +
 1.14847 +function $findLastInTableScopeTdTh(this$static){
 1.14848 +  var i, name;
 1.14849 +  for (i = this$static.currentPtr; i > 0; --i) {
 1.14850 +    name = this$static.stack[i].name_0;
 1.14851 +    if ('td' == name || 'th' == name) {
 1.14852 +      return i;
 1.14853 +    }
 1.14854 +     else if (name == 'table') {
 1.14855 +      return 2147483647;
 1.14856 +    }
 1.14857 +  }
 1.14858 +  return 2147483647;
 1.14859 +}
 1.14860 +
 1.14861 +function $findLastOrRoot_0(this$static, name){
 1.14862 +  var i;
 1.14863 +  for (i = this$static.currentPtr; i > 0; --i) {
 1.14864 +    if (this$static.stack[i].name_0 == name) {
 1.14865 +      return i;
 1.14866 +    }
 1.14867 +  }
 1.14868 +  return 0;
 1.14869 +}
 1.14870 +
 1.14871 +function $findLastOrRoot(this$static, group){
 1.14872 +  var i;
 1.14873 +  for (i = this$static.currentPtr; i > 0; --i) {
 1.14874 +    if (this$static.stack[i].group == group) {
 1.14875 +      return i;
 1.14876 +    }
 1.14877 +  }
 1.14878 +  return 0;
 1.14879 +}
 1.14880 +
 1.14881 +function $flushCharacters(this$static){
 1.14882 +  var current, elt, eltPos, node;
 1.14883 +  if (this$static.charBufferLen > 0) {
 1.14884 +    current = this$static.stack[this$static.currentPtr];
 1.14885 +    if (current.fosterParenting && $charBufferContainsNonWhitespace(this$static)) {
 1.14886 +      eltPos = $findLastOrRoot(this$static, 34);
 1.14887 +      node = this$static.stack[eltPos];
 1.14888 +      elt = node.node;
 1.14889 +      if (eltPos == 0) {
 1.14890 +        $appendCharacters(this$static, elt, valueOf_1(this$static.charBuffer, 0, this$static.charBufferLen));
 1.14891 +        this$static.charBufferLen = 0;
 1.14892 +        return;
 1.14893 +      }
 1.14894 +      $insertFosterParentedCharacters_0(this$static, this$static.charBuffer, 0, this$static.charBufferLen, elt, this$static.stack[eltPos - 1].node);
 1.14895 +      this$static.charBufferLen = 0;
 1.14896 +      return;
 1.14897 +    }
 1.14898 +    $appendCharacters(this$static, this$static.stack[this$static.currentPtr].node, valueOf_1(this$static.charBuffer, 0, this$static.charBufferLen));
 1.14899 +    this$static.charBufferLen = 0;
 1.14900 +  }
 1.14901 +}
 1.14902 +
 1.14903 +function $generateImpliedEndTags(this$static){
 1.14904 +  for (;;) {
 1.14905 +    switch (this$static.stack[this$static.currentPtr].group) {
 1.14906 +      case 29:
 1.14907 +      case 15:
 1.14908 +      case 41:
 1.14909 +      case 28:
 1.14910 +      case 27:
 1.14911 +      case 53:
 1.14912 +        $pop(this$static);
 1.14913 +        continue;
 1.14914 +      default:return;
 1.14915 +    }
 1.14916 +  }
 1.14917 +}
 1.14918 +
 1.14919 +function $generateImpliedEndTagsExceptFor(this$static, name){
 1.14920 +  var node;
 1.14921 +  for (;;) {
 1.14922 +    node = this$static.stack[this$static.currentPtr];
 1.14923 +    switch (node.group) {
 1.14924 +      case 29:
 1.14925 +      case 15:
 1.14926 +      case 41:
 1.14927 +      case 28:
 1.14928 +      case 27:
 1.14929 +      case 53:
 1.14930 +        if (node.name_0 == name) {
 1.14931 +          return;
 1.14932 +        }
 1.14933 +
 1.14934 +        $pop(this$static);
 1.14935 +        continue;
 1.14936 +      default:return;
 1.14937 +    }
 1.14938 +  }
 1.14939 +}
 1.14940 +
 1.14941 +function $hasForeignInScope(this$static){
 1.14942 +  var i;
 1.14943 +  for (i = this$static.currentPtr; i > 0; --i) {
 1.14944 +    if (this$static.stack[i].ns != 'http://www.w3.org/1999/xhtml') {
 1.14945 +      return true;
 1.14946 +    }
 1.14947 +     else if (this$static.stack[i].scoping) {
 1.14948 +      return false;
 1.14949 +    }
 1.14950 +  }
 1.14951 +  return false;
 1.14952 +}
 1.14953 +
 1.14954 +function $implicitlyCloseP(this$static){
 1.14955 +  var eltPos;
 1.14956 +  eltPos = $findLastInScope(this$static, 'p');
 1.14957 +  if (eltPos == 2147483647) {
 1.14958 +    return;
 1.14959 +  }
 1.14960 +  $generateImpliedEndTagsExceptFor(this$static, 'p');
 1.14961 +  while (this$static.currentPtr >= eltPos) {
 1.14962 +    $pop(this$static);
 1.14963 +  }
 1.14964 +}
 1.14965 +
 1.14966 +function $insertIntoFosterParent(this$static, child){
 1.14967 +  var elt, eltPos, node;
 1.14968 +  eltPos = $findLastOrRoot(this$static, 34);
 1.14969 +  node = this$static.stack[eltPos];
 1.14970 +  elt = node.node;
 1.14971 +  if (eltPos == 0) {
 1.14972 +    $appendElement(this$static, child, elt);
 1.14973 +    return;
 1.14974 +  }
 1.14975 +  $insertFosterParentedChild(this$static, child, elt, this$static.stack[eltPos - 1].node);
 1.14976 +}
 1.14977 +
 1.14978 +function $insertIntoListOfActiveFormattingElements(this$static, formattingClone, bookmark){
 1.14979 +  ++formattingClone.refcount;
 1.14980 +  if (bookmark <= this$static.listPtr) {
 1.14981 +    arraycopy(this$static.listOfActiveFormattingElements, bookmark, this$static.listOfActiveFormattingElements, bookmark + 1, this$static.listPtr - bookmark + 1);
 1.14982 +  }
 1.14983 +  ++this$static.listPtr;
 1.14984 +  this$static.listOfActiveFormattingElements[bookmark] = formattingClone;
 1.14985 +}
 1.14986 +
 1.14987 +function $insertIntoStack(this$static, node, position){
 1.14988 +  if (position == this$static.currentPtr + 1) {
 1.14989 +    $flushCharacters(this$static);
 1.14990 +    $push_0(this$static, node);
 1.14991 +  }
 1.14992 +   else {
 1.14993 +    arraycopy(this$static.stack, position, this$static.stack, position + 1, this$static.currentPtr - position + 1);
 1.14994 +    ++this$static.currentPtr;
 1.14995 +    this$static.stack[position] = node;
 1.14996 +  }
 1.14997 +}
 1.14998 +
 1.14999 +function $isAlmostStandards(publicIdentifier, systemIdentifier){
 1.15000 +  if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd xhtml 1.0 transitional//en', publicIdentifier)) {
 1.15001 +    return true;
 1.15002 +  }
 1.15003 +  if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd xhtml 1.0 frameset//en', publicIdentifier)) {
 1.15004 +    return true;
 1.15005 +  }
 1.15006 +  if (systemIdentifier != null) {
 1.15007 +    if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd html 4.01 transitional//en', publicIdentifier)) {
 1.15008 +      return true;
 1.15009 +    }
 1.15010 +    if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd html 4.01 frameset//en', publicIdentifier)) {
 1.15011 +      return true;
 1.15012 +    }
 1.15013 +  }
 1.15014 +  return false;
 1.15015 +}
 1.15016 +
 1.15017 +function $isHtml4Doctype(publicIdentifier){
 1.15018 +  if (publicIdentifier != null && binarySearch_0(HTML4_PUBLIC_IDS, publicIdentifier, ($clinit_61() , NATURAL)) > -1) {
 1.15019 +    return true;
 1.15020 +  }
 1.15021 +  return false;
 1.15022 +}
 1.15023 +
 1.15024 +function $isInStack(this$static, node){
 1.15025 +  var i;
 1.15026 +  for (i = this$static.currentPtr; i >= 0; --i) {
 1.15027 +    if (this$static.stack[i] == node) {
 1.15028 +      return true;
 1.15029 +    }
 1.15030 +  }
 1.15031 +  return false;
 1.15032 +}
 1.15033 +
 1.15034 +function $isQuirky(name, publicIdentifier, systemIdentifier, forceQuirks){
 1.15035 +  var i;
 1.15036 +  if (forceQuirks) {
 1.15037 +    return true;
 1.15038 +  }
 1.15039 +  if (name != 'html') {
 1.15040 +    return true;
 1.15041 +  }
 1.15042 +  if (publicIdentifier != null) {
 1.15043 +    for (i = 0; i < QUIRKY_PUBLIC_IDS.length; ++i) {
 1.15044 +      if (lowerCaseLiteralIsPrefixOfIgnoreAsciiCaseString(QUIRKY_PUBLIC_IDS[i], publicIdentifier)) {
 1.15045 +        return true;
 1.15046 +      }
 1.15047 +    }
 1.15048 +    if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3o//dtd w3 html strict 3.0//en//', publicIdentifier) || lowerCaseLiteralEqualsIgnoreAsciiCaseString('-/w3c/dtd html 4.0 transitional/en', publicIdentifier) || lowerCaseLiteralEqualsIgnoreAsciiCaseString('html', publicIdentifier)) {
 1.15049 +      return true;
 1.15050 +    }
 1.15051 +  }
 1.15052 +  if (systemIdentifier == null) {
 1.15053 +    if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd html 4.01 transitional//en', publicIdentifier)) {
 1.15054 +      return true;
 1.15055 +    }
 1.15056 +     else if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('-//w3c//dtd html 4.01 frameset//en', publicIdentifier)) {
 1.15057 +      return true;
 1.15058 +    }
 1.15059 +  }
 1.15060 +   else if (lowerCaseLiteralEqualsIgnoreAsciiCaseString('http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd', systemIdentifier)) {
 1.15061 +    return true;
 1.15062 +  }
 1.15063 +  return false;
 1.15064 +}
 1.15065 +
 1.15066 +function $pop(this$static){
 1.15067 +  var node;
 1.15068 +  $flushCharacters(this$static);
 1.15069 +  node = this$static.stack[this$static.currentPtr];
 1.15070 +  --this$static.currentPtr;
 1.15071 +  $elementPopped(this$static, node.ns, node.popName, node.node);
 1.15072 +  --node.refcount;
 1.15073 +}
 1.15074 +
 1.15075 +function $popOnEof(this$static){
 1.15076 +  var node;
 1.15077 +  $flushCharacters(this$static);
 1.15078 +  node = this$static.stack[this$static.currentPtr];
 1.15079 +  --this$static.currentPtr;
 1.15080 +  $elementPopped(this$static, node.ns, node.popName, node.node);
 1.15081 +  --node.refcount;
 1.15082 +}
 1.15083 +
 1.15084 +function $push_0(this$static, node){
 1.15085 +  var newStack;
 1.15086 +  ++this$static.currentPtr;
 1.15087 +  if (this$static.currentPtr == this$static.stack.length) {
 1.15088 +    newStack = initDim(_3Lnu_validator_htmlparser_impl_StackNode_2_classLit, 51, 11, this$static.stack.length + 64, 0);
 1.15089 +    arraycopy(this$static.stack, 0, newStack, 0, this$static.stack.length);
 1.15090 +    this$static.stack = newStack;
 1.15091 +  }
 1.15092 +  this$static.stack[this$static.currentPtr] = node;
 1.15093 +}
 1.15094 +
 1.15095 +function $pushHeadPointerOntoStack(this$static){
 1.15096 +  $flushCharacters(this$static);
 1.15097 +  if (!this$static.headPointer) {
 1.15098 +    $push_0(this$static, this$static.stack[this$static.currentPtr]);
 1.15099 +  }
 1.15100 +   else {
 1.15101 +    $push_0(this$static, $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , HEAD), this$static.headPointer));
 1.15102 +  }
 1.15103 +}
 1.15104 +
 1.15105 +function $reconstructTheActiveFormattingElements(this$static){
 1.15106 +  var clone, currentNode, entry, entryClone, entryPos, mostRecent;
 1.15107 +  if (this$static.listPtr == -1) {
 1.15108 +    return;
 1.15109 +  }
 1.15110 +  mostRecent = this$static.listOfActiveFormattingElements[this$static.listPtr];
 1.15111 +  if (!mostRecent || $isInStack(this$static, mostRecent)) {
 1.15112 +    return;
 1.15113 +  }
 1.15114 +  entryPos = this$static.listPtr;
 1.15115 +  for (;;) {
 1.15116 +    --entryPos;
 1.15117 +    if (entryPos == -1) {
 1.15118 +      break;
 1.15119 +    }
 1.15120 +    if (!this$static.listOfActiveFormattingElements[entryPos]) {
 1.15121 +      break;
 1.15122 +    }
 1.15123 +    if ($isInStack(this$static, this$static.listOfActiveFormattingElements[entryPos])) {
 1.15124 +      break;
 1.15125 +    }
 1.15126 +  }
 1.15127 +  if (entryPos < this$static.listPtr) {
 1.15128 +    $flushCharacters(this$static);
 1.15129 +  }
 1.15130 +  while (entryPos < this$static.listPtr) {
 1.15131 +    ++entryPos;
 1.15132 +    entry = this$static.listOfActiveFormattingElements[entryPos];
 1.15133 +    clone = $createElement(this$static, 'http://www.w3.org/1999/xhtml', entry.name_0, $cloneAttributes(entry.attributes));
 1.15134 +    entryClone = $StackNode(new StackNode(), entry.group, entry.ns, entry.name_0, clone, entry.scoping, entry.special, entry.fosterParenting, entry.popName, entry.attributes);
 1.15135 +    entry.attributes = null;
 1.15136 +    currentNode = this$static.stack[this$static.currentPtr];
 1.15137 +    if (currentNode.fosterParenting) {
 1.15138 +      $insertIntoFosterParent(this$static, clone);
 1.15139 +    }
 1.15140 +     else {
 1.15141 +      $appendElement(this$static, clone, currentNode.node);
 1.15142 +    }
 1.15143 +    $push_0(this$static, entryClone);
 1.15144 +    this$static.listOfActiveFormattingElements[entryPos] = entryClone;
 1.15145 +    --entry.refcount;
 1.15146 +    ++entryClone.refcount;
 1.15147 +  }
 1.15148 +}
 1.15149 +
 1.15150 +function $removeFromListOfActiveFormattingElements(this$static, pos){
 1.15151 +  --this$static.listOfActiveFormattingElements[pos].refcount;
 1.15152 +  if (pos == this$static.listPtr) {
 1.15153 +    --this$static.listPtr;
 1.15154 +    return;
 1.15155 +  }
 1.15156 +  arraycopy(this$static.listOfActiveFormattingElements, pos + 1, this$static.listOfActiveFormattingElements, pos, this$static.listPtr - pos);
 1.15157 +  --this$static.listPtr;
 1.15158 +}
 1.15159 +
 1.15160 +function $removeFromStack(this$static, pos){
 1.15161 +  if (this$static.currentPtr == pos) {
 1.15162 +    $pop(this$static);
 1.15163 +  }
 1.15164 +   else {
 1.15165 +    --this$static.stack[pos].refcount;
 1.15166 +    arraycopy(this$static.stack, pos + 1, this$static.stack, pos, this$static.currentPtr - pos);
 1.15167 +    --this$static.currentPtr;
 1.15168 +  }
 1.15169 +}
 1.15170 +
 1.15171 +function $removeFromStack_0(this$static, node){
 1.15172 +  var pos;
 1.15173 +  if (this$static.stack[this$static.currentPtr] == node) {
 1.15174 +    $pop(this$static);
 1.15175 +  }
 1.15176 +   else {
 1.15177 +    pos = this$static.currentPtr - 1;
 1.15178 +    while (pos >= 0 && this$static.stack[pos] != node) {
 1.15179 +      --pos;
 1.15180 +    }
 1.15181 +    if (pos == -1) {
 1.15182 +      return;
 1.15183 +    }
 1.15184 +    --node.refcount;
 1.15185 +    arraycopy(this$static.stack, pos + 1, this$static.stack, pos, this$static.currentPtr - pos);
 1.15186 +    --this$static.currentPtr;
 1.15187 +  }
 1.15188 +}
 1.15189 +
 1.15190 +function $resetTheInsertionMode(this$static){
 1.15191 +  var i, name, node;
 1.15192 +  this$static.foreignFlag = 1;
 1.15193 +  for (i = this$static.currentPtr; i >= 0; --i) {
 1.15194 +    node = this$static.stack[i];
 1.15195 +    name = node.name_0;
 1.15196 +    if (i == 0) {
 1.15197 +      if (this$static.contextNamespace == 'http://www.w3.org/1999/xhtml' && (this$static.contextName == 'td' || this$static.contextName == 'th')) {
 1.15198 +        this$static.mode = 6;
 1.15199 +        return;
 1.15200 +      }
 1.15201 +       else {
 1.15202 +        name = this$static.contextName;
 1.15203 +      }
 1.15204 +    }
 1.15205 +    if ('select' == name) {
 1.15206 +      this$static.mode = 13;
 1.15207 +      return;
 1.15208 +    }
 1.15209 +     else if ('td' == name || 'th' == name) {
 1.15210 +      this$static.mode = 12;
 1.15211 +      return;
 1.15212 +    }
 1.15213 +     else if ('tr' == name) {
 1.15214 +      this$static.mode = 11;
 1.15215 +      return;
 1.15216 +    }
 1.15217 +     else if ('tbody' == name || 'thead' == name || 'tfoot' == name) {
 1.15218 +      this$static.mode = 10;
 1.15219 +      return;
 1.15220 +    }
 1.15221 +     else if ('caption' == name) {
 1.15222 +      this$static.mode = 8;
 1.15223 +      return;
 1.15224 +    }
 1.15225 +     else if ('colgroup' == name) {
 1.15226 +      this$static.mode = 9;
 1.15227 +      return;
 1.15228 +    }
 1.15229 +     else if ('table' == name) {
 1.15230 +      this$static.mode = 7;
 1.15231 +      return;
 1.15232 +    }
 1.15233 +     else if ('http://www.w3.org/1999/xhtml' != node.ns) {
 1.15234 +      this$static.foreignFlag = 0;
 1.15235 +      this$static.mode = 6;
 1.15236 +      return;
 1.15237 +    }
 1.15238 +     else if ('head' == name) {
 1.15239 +      this$static.mode = 6;
 1.15240 +      return;
 1.15241 +    }
 1.15242 +     else if ('body' == name) {
 1.15243 +      this$static.mode = 6;
 1.15244 +      return;
 1.15245 +    }
 1.15246 +     else if ('frameset' == name) {
 1.15247 +      this$static.mode = 16;
 1.15248 +      return;
 1.15249 +    }
 1.15250 +     else if ('html' == name) {
 1.15251 +      if (!this$static.headPointer) {
 1.15252 +        this$static.mode = 2;
 1.15253 +      }
 1.15254 +       else {
 1.15255 +        this$static.mode = 5;
 1.15256 +      }
 1.15257 +      return;
 1.15258 +    }
 1.15259 +     else if (i == 0) {
 1.15260 +      this$static.mode = 6;
 1.15261 +      return;
 1.15262 +    }
 1.15263 +  }
 1.15264 +}
 1.15265 +
 1.15266 +function $setFragmentContext(this$static, context){
 1.15267 +  this$static.contextName = context;
 1.15268 +  this$static.contextNamespace = 'http://www.w3.org/1999/xhtml';
 1.15269 +  this$static.fragment = false;
 1.15270 +  this$static.quirks = false;
 1.15271 +}
 1.15272 +
 1.15273 +function $startTag(this$static, elementName, attributes, selfClosing){
 1.15274 +  var actionIndex, activeA, activeAPos, attributeQName, currGroup, currNs, currentNode, eltPos, formAttrs, group, i, inputAttributes, name, needsPostProcessing, node, prompt, promptIndex, current, elt_53;
 1.15275 +  this$static.needToDropLF = false;
 1.15276 +  needsPostProcessing = false;
 1.15277 +  starttagloop: for (;;) {
 1.15278 +    group = elementName.group;
 1.15279 +    name = elementName.name_0;
 1.15280 +    switch (this$static.foreignFlag) {
 1.15281 +      case 0:
 1.15282 +        currentNode = this$static.stack[this$static.currentPtr];
 1.15283 +        currNs = currentNode.ns;
 1.15284 +        currGroup = currentNode.group;
 1.15285 +        if ('http://www.w3.org/1999/xhtml' == currNs || 'http://www.w3.org/1998/Math/MathML' == currNs && (56 != group && 57 == currGroup || 19 == group && 58 == currGroup) || 'http://www.w3.org/2000/svg' == currNs && (36 == currGroup || 59 == currGroup)) {
 1.15286 +          needsPostProcessing = true;
 1.15287 +        }
 1.15288 +         else {
 1.15289 +          switch (group) {
 1.15290 +            case 45:
 1.15291 +            case 50:
 1.15292 +            case 3:
 1.15293 +            case 4:
 1.15294 +            case 52:
 1.15295 +            case 41:
 1.15296 +            case 46:
 1.15297 +            case 48:
 1.15298 +            case 42:
 1.15299 +            case 20:
 1.15300 +            case 22:
 1.15301 +            case 15:
 1.15302 +            case 18:
 1.15303 +            case 24:
 1.15304 +            case 29:
 1.15305 +            case 44:
 1.15306 +            case 34:
 1.15307 +              while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
 1.15308 +                $pop(this$static);
 1.15309 +              }
 1.15310 +
 1.15311 +              this$static.foreignFlag = 1;
 1.15312 +              continue starttagloop;
 1.15313 +            case 64:
 1.15314 +              if ($contains(attributes, ($clinit_87() , COLOR)) || $contains(attributes, FACE) || $contains(attributes, SIZE)) {
 1.15315 +                while (this$static.stack[this$static.currentPtr].ns != 'http://www.w3.org/1999/xhtml') {
 1.15316 +                  $pop(this$static);
 1.15317 +                }
 1.15318 +                this$static.foreignFlag = 1;
 1.15319 +                continue starttagloop;
 1.15320 +              }
 1.15321 +
 1.15322 +            default:if ('http://www.w3.org/2000/svg' == currNs) {
 1.15323 +                attributes.mode = 2;
 1.15324 +                if (selfClosing) {
 1.15325 +                  $appendVoidElementToCurrentMayFosterCamelCase(this$static, currNs, elementName, attributes);
 1.15326 +                  selfClosing = false;
 1.15327 +                }
 1.15328 +                 else {
 1.15329 +                  $appendToCurrentNodeAndPushElementMayFosterCamelCase(this$static, currNs, elementName, attributes);
 1.15330 +                }
 1.15331 +                attributes = null;
 1.15332 +                break starttagloop;
 1.15333 +              }
 1.15334 +               else {
 1.15335 +                attributes.mode = 1;
 1.15336 +                if (selfClosing) {
 1.15337 +                  $appendVoidElementToCurrentMayFoster_0(this$static, currNs, elementName, attributes);
 1.15338 +                  selfClosing = false;
 1.15339 +                }
 1.15340 +                 else {
 1.15341 +                  $appendToCurrentNodeAndPushElementMayFosterNoScoping(this$static, currNs, elementName, attributes);
 1.15342 +                }
 1.15343 +                attributes = null;
 1.15344 +                break starttagloop;
 1.15345 +              }
 1.15346 +
 1.15347 +          }
 1.15348 +        }
 1.15349 +
 1.15350 +      default:switch (this$static.mode) {
 1.15351 +          case 10:
 1.15352 +            switch (group) {
 1.15353 +              case 37:
 1.15354 +                $clearStackBackTo(this$static, $findLastInTableScopeOrRootTbodyTheadTfoot(this$static));
 1.15355 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15356 +                this$static.mode = 11;
 1.15357 +                attributes = null;
 1.15358 +                break starttagloop;
 1.15359 +              case 40:
 1.15360 +                $clearStackBackTo(this$static, $findLastInTableScopeOrRootTbodyTheadTfoot(this$static));
 1.15361 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , TR), ($clinit_91() , EMPTY_ATTRIBUTES));
 1.15362 +                this$static.mode = 11;
 1.15363 +                continue;
 1.15364 +              case 6:
 1.15365 +              case 7:
 1.15366 +              case 8:
 1.15367 +              case 39:
 1.15368 +                eltPos = $findLastInTableScopeOrRootTbodyTheadTfoot(this$static);
 1.15369 +                if (eltPos == 0) {
 1.15370 +                  break starttagloop;
 1.15371 +                }
 1.15372 +                 else {
 1.15373 +                  $clearStackBackTo(this$static, eltPos);
 1.15374 +                  $pop(this$static);
 1.15375 +                  this$static.mode = 7;
 1.15376 +                  continue;
 1.15377 +                }
 1.15378 +
 1.15379 +            }
 1.15380 +
 1.15381 +          case 11:
 1.15382 +            switch (group) {
 1.15383 +              case 40:
 1.15384 +                $clearStackBackTo(this$static, $findLastOrRoot(this$static, 37));
 1.15385 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15386 +                this$static.mode = 12;
 1.15387 +                $append_1(this$static, null);
 1.15388 +                attributes = null;
 1.15389 +                break starttagloop;
 1.15390 +              case 6:
 1.15391 +              case 7:
 1.15392 +              case 8:
 1.15393 +              case 39:
 1.15394 +              case 37:
 1.15395 +                eltPos = $findLastOrRoot(this$static, 37);
 1.15396 +                if (eltPos == 0) {
 1.15397 +                  break starttagloop;
 1.15398 +                }
 1.15399 +
 1.15400 +                $clearStackBackTo(this$static, eltPos);
 1.15401 +                $pop(this$static);
 1.15402 +                this$static.mode = 10;
 1.15403 +                continue;
 1.15404 +            }
 1.15405 +
 1.15406 +          case 7:
 1.15407 +            intableloop: for (;;) {
 1.15408 +              switch (group) {
 1.15409 +                case 6:
 1.15410 +                  $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
 1.15411 +                  $append_1(this$static, null);
 1.15412 +                  $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15413 +                  this$static.mode = 8;
 1.15414 +                  attributes = null;
 1.15415 +                  break starttagloop;
 1.15416 +                case 8:
 1.15417 +                  $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
 1.15418 +                  $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15419 +                  this$static.mode = 9;
 1.15420 +                  attributes = null;
 1.15421 +                  break starttagloop;
 1.15422 +                case 7:
 1.15423 +                  $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
 1.15424 +                  $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , COLGROUP), ($clinit_91() , EMPTY_ATTRIBUTES));
 1.15425 +                  this$static.mode = 9;
 1.15426 +                  continue starttagloop;
 1.15427 +                case 39:
 1.15428 +                  $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
 1.15429 +                  $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15430 +                  this$static.mode = 10;
 1.15431 +                  attributes = null;
 1.15432 +                  break starttagloop;
 1.15433 +                case 37:
 1.15434 +                case 40:
 1.15435 +                  $clearStackBackTo(this$static, $findLastOrRoot(this$static, 34));
 1.15436 +                  $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , TBODY), ($clinit_91() , EMPTY_ATTRIBUTES));
 1.15437 +                  this$static.mode = 10;
 1.15438 +                  continue starttagloop;
 1.15439 +                case 34:
 1.15440 +                  eltPos = $findLastInTableScope(this$static, name);
 1.15441 +                  if (eltPos == 2147483647) {
 1.15442 +                    break starttagloop;
 1.15443 +                  }
 1.15444 +
 1.15445 +                  $generateImpliedEndTags(this$static);
 1.15446 +                  while (this$static.currentPtr >= eltPos) {
 1.15447 +                    $pop(this$static);
 1.15448 +                  }
 1.15449 +
 1.15450 +                  $resetTheInsertionMode(this$static);
 1.15451 +                  continue starttagloop;
 1.15452 +                case 31:
 1.15453 +                case 33:
 1.15454 +                  $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15455 +                  this$static.originalMode = this$static.mode;
 1.15456 +                  this$static.mode = 20;
 1.15457 +                  $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
 1.15458 +                  attributes = null;
 1.15459 +                  break starttagloop;
 1.15460 +                case 13:
 1.15461 +                  if (!lowerCaseLiteralEqualsIgnoreAsciiCaseString('hidden', $getValue_0(attributes, ($clinit_87() , TYPE)))) {
 1.15462 +                    break intableloop;
 1.15463 +                  }
 1.15464 +
 1.15465 +                  $flushCharacters(this$static);
 1.15466 +                  $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.15467 +                  elt_53 = $createElement_0(this$static, 'http://www.w3.org/1999/xhtml', name, attributes);
 1.15468 +                  current = this$static.stack[this$static.currentPtr];
 1.15469 +                  $appendElement(this$static, elt_53, current.node);
 1.15470 +                  $elementPopped(this$static, 'http://www.w3.org/1999/xhtml', name, elt_53);
 1.15471 +                  selfClosing = false;
 1.15472 +                  attributes = null;
 1.15473 +                  break starttagloop;
 1.15474 +                default:break intableloop;
 1.15475 +              }
 1.15476 +            }
 1.15477 +
 1.15478 +          case 8:
 1.15479 +            switch (group) {
 1.15480 +              case 6:
 1.15481 +              case 7:
 1.15482 +              case 8:
 1.15483 +              case 39:
 1.15484 +              case 37:
 1.15485 +              case 40:
 1.15486 +                eltPos = $findLastInTableScope(this$static, 'caption');
 1.15487 +                if (eltPos == 2147483647) {
 1.15488 +                  break starttagloop;
 1.15489 +                }
 1.15490 +
 1.15491 +                $generateImpliedEndTags(this$static);
 1.15492 +                while (this$static.currentPtr >= eltPos) {
 1.15493 +                  $pop(this$static);
 1.15494 +                }
 1.15495 +
 1.15496 +                $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
 1.15497 +                this$static.mode = 7;
 1.15498 +                continue;
 1.15499 +            }
 1.15500 +
 1.15501 +          case 12:
 1.15502 +            switch (group) {
 1.15503 +              case 6:
 1.15504 +              case 7:
 1.15505 +              case 8:
 1.15506 +              case 39:
 1.15507 +              case 37:
 1.15508 +              case 40:
 1.15509 +                eltPos = $findLastInTableScopeTdTh(this$static);
 1.15510 +                if (eltPos == 2147483647) {
 1.15511 +                  break starttagloop;
 1.15512 +                }
 1.15513 +                 else {
 1.15514 +                  $closeTheCell(this$static, eltPos);
 1.15515 +                  continue;
 1.15516 +                }
 1.15517 +
 1.15518 +            }
 1.15519 +
 1.15520 +          case 21:
 1.15521 +            switch (group) {
 1.15522 +              case 11:
 1.15523 +                if (this$static.mode == 21) {
 1.15524 +                  if (this$static.currentPtr == 0 || this$static.stack[1].group != 3) {
 1.15525 +                    break starttagloop;
 1.15526 +                  }
 1.15527 +                   else {
 1.15528 +                    $detachFromParent(this$static, this$static.stack[1].node);
 1.15529 +                    while (this$static.currentPtr > 0) {
 1.15530 +                      $pop(this$static);
 1.15531 +                    }
 1.15532 +                    $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15533 +                    this$static.mode = 16;
 1.15534 +                    attributes = null;
 1.15535 +                    break starttagloop;
 1.15536 +                  }
 1.15537 +                }
 1.15538 +                 else {
 1.15539 +                  break starttagloop;
 1.15540 +                }
 1.15541 +
 1.15542 +              case 44:
 1.15543 +              case 15:
 1.15544 +              case 41:
 1.15545 +              case 5:
 1.15546 +              case 43:
 1.15547 +              case 63:
 1.15548 +              case 34:
 1.15549 +              case 49:
 1.15550 +              case 4:
 1.15551 +              case 48:
 1.15552 +              case 13:
 1.15553 +              case 65:
 1.15554 +              case 22:
 1.15555 +              case 35:
 1.15556 +              case 38:
 1.15557 +              case 47:
 1.15558 +              case 32:
 1.15559 +                if (this$static.mode == 21) {
 1.15560 +                  this$static.mode = 6;
 1.15561 +                }
 1.15562 +
 1.15563 +            }
 1.15564 +
 1.15565 +          case 6:
 1.15566 +            inbodyloop: for (;;) {
 1.15567 +              switch (group) {
 1.15568 +                case 23:
 1.15569 +                  $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.15570 +                  $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
 1.15571 +                  attributes = null;
 1.15572 +                  break starttagloop;
 1.15573 +                case 2:
 1.15574 +                case 16:
 1.15575 +                case 18:
 1.15576 +                case 33:
 1.15577 +                case 31:
 1.15578 +                case 36:
 1.15579 +                case 54:
 1.15580 +                  break inbodyloop;
 1.15581 +                case 3:
 1.15582 +                  $addAttributesToBody(this$static, attributes);
 1.15583 +                  attributes = null;
 1.15584 +                  break starttagloop;
 1.15585 +                case 29:
 1.15586 +                case 50:
 1.15587 +                case 46:
 1.15588 +                case 51:
 1.15589 +                  $implicitlyCloseP(this$static);
 1.15590 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15591 +                  attributes = null;
 1.15592 +                  break starttagloop;
 1.15593 +                case 42:
 1.15594 +                  $implicitlyCloseP(this$static);
 1.15595 +                  if (this$static.stack[this$static.currentPtr].group == 42) {
 1.15596 +                    $pop(this$static);
 1.15597 +                  }
 1.15598 +
 1.15599 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15600 +                  attributes = null;
 1.15601 +                  break starttagloop;
 1.15602 +                case 61:
 1.15603 +                  $implicitlyCloseP(this$static);
 1.15604 +                  $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15605 +                  attributes = null;
 1.15606 +                  break starttagloop;
 1.15607 +                case 44:
 1.15608 +                  $implicitlyCloseP(this$static);
 1.15609 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15610 +                  this$static.needToDropLF = true;
 1.15611 +                  attributes = null;
 1.15612 +                  break starttagloop;
 1.15613 +                case 9:
 1.15614 +                  if (this$static.formPointer) {
 1.15615 +                    break starttagloop;
 1.15616 +                  }
 1.15617 +                   else {
 1.15618 +                    $implicitlyCloseP(this$static);
 1.15619 +                    $appendToCurrentNodeAndPushFormElementMayFoster(this$static, attributes);
 1.15620 +                    attributes = null;
 1.15621 +                    break starttagloop;
 1.15622 +                  }
 1.15623 +
 1.15624 +                case 15:
 1.15625 +                case 41:
 1.15626 +                  eltPos = this$static.currentPtr;
 1.15627 +                  for (;;) {
 1.15628 +                    node = this$static.stack[eltPos];
 1.15629 +                    if (node.group == group) {
 1.15630 +                      $generateImpliedEndTagsExceptFor(this$static, node.name_0);
 1.15631 +                      while (this$static.currentPtr >= eltPos) {
 1.15632 +                        $pop(this$static);
 1.15633 +                      }
 1.15634 +                      break;
 1.15635 +                    }
 1.15636 +                     else if (node.scoping || node.special && node.name_0 != 'p' && node.name_0 != 'address' && node.name_0 != 'div') {
 1.15637 +                      break;
 1.15638 +                    }
 1.15639 +                    --eltPos;
 1.15640 +                  }
 1.15641 +
 1.15642 +                  $implicitlyCloseP(this$static);
 1.15643 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15644 +                  attributes = null;
 1.15645 +                  break starttagloop;
 1.15646 +                case 30:
 1.15647 +                  $implicitlyCloseP(this$static);
 1.15648 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15649 +                  $setContentModelFlag_0(this$static.tokenizer, 3, elementName);
 1.15650 +                  attributes = null;
 1.15651 +                  break starttagloop;
 1.15652 +                case 1:
 1.15653 +                  activeAPos = $findInListOfActiveFormattingElementsContainsBetweenEndAndLastMarker(this$static, 'a');
 1.15654 +                  if (activeAPos != -1) {
 1.15655 +                    activeA = this$static.listOfActiveFormattingElements[activeAPos];
 1.15656 +                    ++activeA.refcount;
 1.15657 +                    $adoptionAgencyEndTag(this$static, 'a');
 1.15658 +                    $removeFromStack_0(this$static, activeA);
 1.15659 +                    activeAPos = $findInListOfActiveFormattingElements(this$static, activeA);
 1.15660 +                    if (activeAPos != -1) {
 1.15661 +                      $removeFromListOfActiveFormattingElements(this$static, activeAPos);
 1.15662 +                    }
 1.15663 +                    --activeA.refcount;
 1.15664 +                  }
 1.15665 +
 1.15666 +                  $reconstructTheActiveFormattingElements(this$static);
 1.15667 +                  $appendToCurrentNodeAndPushFormattingElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15668 +                  attributes = null;
 1.15669 +                  break starttagloop;
 1.15670 +                case 45:
 1.15671 +                case 64:
 1.15672 +                  $reconstructTheActiveFormattingElements(this$static);
 1.15673 +                  $appendToCurrentNodeAndPushFormattingElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15674 +                  attributes = null;
 1.15675 +                  break starttagloop;
 1.15676 +                case 24:
 1.15677 +                  $reconstructTheActiveFormattingElements(this$static);
 1.15678 +                  if (2147483647 != $findLastInScope(this$static, 'nobr')) {
 1.15679 +                    $adoptionAgencyEndTag(this$static, 'nobr');
 1.15680 +                  }
 1.15681 +
 1.15682 +                  $appendToCurrentNodeAndPushFormattingElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15683 +                  attributes = null;
 1.15684 +                  break starttagloop;
 1.15685 +                case 5:
 1.15686 +                  eltPos = $findLastInScope(this$static, name);
 1.15687 +                  if (eltPos != 2147483647) {
 1.15688 +                    $generateImpliedEndTags(this$static);
 1.15689 +                    while (this$static.currentPtr >= eltPos) {
 1.15690 +                      $pop(this$static);
 1.15691 +                    }
 1.15692 +                    $clearTheListOfActiveFormattingElementsUpToTheLastMarker(this$static);
 1.15693 +                    continue starttagloop;
 1.15694 +                  }
 1.15695 +                   else {
 1.15696 +                    $reconstructTheActiveFormattingElements(this$static);
 1.15697 +                    $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15698 +                    $append_1(this$static, null);
 1.15699 +                    attributes = null;
 1.15700 +                    break starttagloop;
 1.15701 +                  }
 1.15702 +
 1.15703 +                case 63:
 1.15704 +                  $reconstructTheActiveFormattingElements(this$static);
 1.15705 +                  $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15706 +                  $append_1(this$static, null);
 1.15707 +                  attributes = null;
 1.15708 +                  break starttagloop;
 1.15709 +                case 43:
 1.15710 +                  $reconstructTheActiveFormattingElements(this$static);
 1.15711 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15712 +                  $append_1(this$static, null);
 1.15713 +                  attributes = null;
 1.15714 +                  break starttagloop;
 1.15715 +                case 38:
 1.15716 +                  $reconstructTheActiveFormattingElements(this$static);
 1.15717 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15718 +                  this$static.originalMode = this$static.mode;
 1.15719 +                  this$static.mode = 20;
 1.15720 +                  $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
 1.15721 +                  attributes = null;
 1.15722 +                  break starttagloop;
 1.15723 +                case 34:
 1.15724 +                  if (!this$static.quirks) {
 1.15725 +                    $implicitlyCloseP(this$static);
 1.15726 +                  }
 1.15727 +
 1.15728 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15729 +                  this$static.mode = 7;
 1.15730 +                  attributes = null;
 1.15731 +                  break starttagloop;
 1.15732 +                case 4:
 1.15733 +                case 48:
 1.15734 +                case 49:
 1.15735 +                  $reconstructTheActiveFormattingElements(this$static);
 1.15736 +                case 55:
 1.15737 +                  $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15738 +                  selfClosing = false;
 1.15739 +                  attributes = null;
 1.15740 +                  break starttagloop;
 1.15741 +                case 22:
 1.15742 +                  $implicitlyCloseP(this$static);
 1.15743 +                  $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15744 +                  selfClosing = false;
 1.15745 +                  attributes = null;
 1.15746 +                  break starttagloop;
 1.15747 +                case 12:
 1.15748 +                  elementName = ($clinit_89() , IMG);
 1.15749 +                  continue starttagloop;
 1.15750 +                case 65:
 1.15751 +                case 13:
 1.15752 +                  $reconstructTheActiveFormattingElements(this$static);
 1.15753 +                  $appendVoidElementToCurrentMayFoster(this$static, 'http://www.w3.org/1999/xhtml', name, attributes);
 1.15754 +                  selfClosing = false;
 1.15755 +                  attributes = null;
 1.15756 +                  break starttagloop;
 1.15757 +                case 14:
 1.15758 +                  if (this$static.formPointer) {
 1.15759 +                    break starttagloop;
 1.15760 +                  }
 1.15761 +
 1.15762 +                  $implicitlyCloseP(this$static);
 1.15763 +                  formAttrs = $HtmlAttributes(new HtmlAttributes(), 0);
 1.15764 +                  actionIndex = $getIndex(attributes, ($clinit_87() , ACTION));
 1.15765 +                  if (actionIndex > -1) {
 1.15766 +                    $addAttribute(formAttrs, ACTION, $getValue(attributes, actionIndex), ($clinit_80() , ALLOW));
 1.15767 +                  }
 1.15768 +
 1.15769 +                  $appendToCurrentNodeAndPushFormElementMayFoster(this$static, formAttrs);
 1.15770 +                  $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , HR), ($clinit_91() , EMPTY_ATTRIBUTES));
 1.15771 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', P, EMPTY_ATTRIBUTES);
 1.15772 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', LABEL_0, EMPTY_ATTRIBUTES);
 1.15773 +                  promptIndex = $getIndex(attributes, PROMPT);
 1.15774 +                  if (promptIndex > -1) {
 1.15775 +                    prompt = $toCharArray($getValue(attributes, promptIndex));
 1.15776 +                    $appendCharacters(this$static, this$static.stack[this$static.currentPtr].node, valueOf_1(prompt, 0, prompt.length));
 1.15777 +                  }
 1.15778 +                   else {
 1.15779 +                    $appendCharacters(this$static, this$static.stack[this$static.currentPtr].node, valueOf_1(ISINDEX_PROMPT, 0, ISINDEX_PROMPT.length));
 1.15780 +                  }
 1.15781 +
 1.15782 +                  inputAttributes = $HtmlAttributes(new HtmlAttributes(), 0);
 1.15783 +                  $addAttribute(inputAttributes, NAME, 'isindex', ($clinit_80() , ALLOW));
 1.15784 +                  for (i = 0; i < attributes.length_0; ++i) {
 1.15785 +                    attributeQName = $getAttributeName(attributes, i);
 1.15786 +                    if (NAME == attributeQName || PROMPT == attributeQName) {
 1.15787 +                    }
 1.15788 +                     else if (ACTION != attributeQName) {
 1.15789 +                      $addAttribute(inputAttributes, attributeQName, $getValue(attributes, i), ALLOW);
 1.15790 +                    }
 1.15791 +                  }
 1.15792 +
 1.15793 +                  $clearWithoutReleasingContents(attributes);
 1.15794 +                  $appendVoidElementToCurrentMayFoster(this$static, 'http://www.w3.org/1999/xhtml', 'input', inputAttributes);
 1.15795 +                  $pop(this$static);
 1.15796 +                  $pop(this$static);
 1.15797 +                  $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', HR, EMPTY_ATTRIBUTES);
 1.15798 +                  $pop(this$static);
 1.15799 +                  selfClosing = false;
 1.15800 +                  attributes = null;
 1.15801 +                  break starttagloop;
 1.15802 +                case 35:
 1.15803 +                  $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15804 +                  $setContentModelFlag_0(this$static.tokenizer, 1, elementName);
 1.15805 +                  this$static.originalMode = this$static.mode;
 1.15806 +                  this$static.mode = 20;
 1.15807 +                  this$static.needToDropLF = true;
 1.15808 +                  attributes = null;
 1.15809 +                  break starttagloop;
 1.15810 +                case 26:
 1.15811 +                  {
 1.15812 +                    $reconstructTheActiveFormattingElements(this$static);
 1.15813 +                    $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15814 +                    attributes = null;
 1.15815 +                    break starttagloop;
 1.15816 +                  }
 1.15817 +
 1.15818 +                case 25:
 1.15819 +                case 47:
 1.15820 +                case 60:
 1.15821 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15822 +                  this$static.originalMode = this$static.mode;
 1.15823 +                  this$static.mode = 20;
 1.15824 +                  $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
 1.15825 +                  attributes = null;
 1.15826 +                  break starttagloop;
 1.15827 +                case 32:
 1.15828 +                  $reconstructTheActiveFormattingElements(this$static);
 1.15829 +                  $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15830 +                  switch (this$static.mode) {
 1.15831 +                    case 7:
 1.15832 +                    case 8:
 1.15833 +                    case 9:
 1.15834 +                    case 10:
 1.15835 +                    case 11:
 1.15836 +                    case 12:
 1.15837 +                      this$static.mode = 14;
 1.15838 +                      break;
 1.15839 +                    default:this$static.mode = 13;
 1.15840 +                  }
 1.15841 +
 1.15842 +                  attributes = null;
 1.15843 +                  break starttagloop;
 1.15844 +                case 27:
 1.15845 +                case 28:
 1.15846 +                  if ($findLastInScope(this$static, 'option') != 2147483647) {
 1.15847 +                    optionendtagloop: for (;;) {
 1.15848 +                      if ('option' == this$static.stack[this$static.currentPtr].name_0) {
 1.15849 +                        $pop(this$static);
 1.15850 +                        break optionendtagloop;
 1.15851 +                      }
 1.15852 +                      eltPos = this$static.currentPtr;
 1.15853 +                      for (;;) {
 1.15854 +                        if (this$static.stack[eltPos].name_0 == 'option') {
 1.15855 +                          $generateImpliedEndTags(this$static);
 1.15856 +                          while (this$static.currentPtr >= eltPos) {
 1.15857 +                            $pop(this$static);
 1.15858 +                          }
 1.15859 +                          break optionendtagloop;
 1.15860 +                        }
 1.15861 +                        --eltPos;
 1.15862 +                      }
 1.15863 +                    }
 1.15864 +                  }
 1.15865 +
 1.15866 +                  $reconstructTheActiveFormattingElements(this$static);
 1.15867 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15868 +                  attributes = null;
 1.15869 +                  break starttagloop;
 1.15870 +                case 53:
 1.15871 +                  eltPos = $findLastInScope(this$static, 'ruby');
 1.15872 +                  if (eltPos != 2147483647) {
 1.15873 +                    $generateImpliedEndTags(this$static);
 1.15874 +                  }
 1.15875 +
 1.15876 +                  if (eltPos != this$static.currentPtr) {
 1.15877 +                    while (this$static.currentPtr > eltPos) {
 1.15878 +                      $pop(this$static);
 1.15879 +                    }
 1.15880 +                  }
 1.15881 +
 1.15882 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15883 +                  attributes = null;
 1.15884 +                  break starttagloop;
 1.15885 +                case 17:
 1.15886 +                  $reconstructTheActiveFormattingElements(this$static);
 1.15887 +                  attributes.mode = 1;
 1.15888 +                  if (selfClosing) {
 1.15889 +                    $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1998/Math/MathML', elementName, attributes);
 1.15890 +                    selfClosing = false;
 1.15891 +                  }
 1.15892 +                   else {
 1.15893 +                    $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1998/Math/MathML', elementName, attributes);
 1.15894 +                    this$static.foreignFlag = 0;
 1.15895 +                  }
 1.15896 +
 1.15897 +                  attributes = null;
 1.15898 +                  break starttagloop;
 1.15899 +                case 19:
 1.15900 +                  $reconstructTheActiveFormattingElements(this$static);
 1.15901 +                  attributes.mode = 2;
 1.15902 +                  if (selfClosing) {
 1.15903 +                    $appendVoidElementToCurrentMayFosterCamelCase(this$static, 'http://www.w3.org/2000/svg', elementName, attributes);
 1.15904 +                    selfClosing = false;
 1.15905 +                  }
 1.15906 +                   else {
 1.15907 +                    $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/2000/svg', elementName, attributes);
 1.15908 +                    this$static.foreignFlag = 0;
 1.15909 +                  }
 1.15910 +
 1.15911 +                  attributes = null;
 1.15912 +                  break starttagloop;
 1.15913 +                case 6:
 1.15914 +                case 7:
 1.15915 +                case 8:
 1.15916 +                case 39:
 1.15917 +                case 37:
 1.15918 +                case 40:
 1.15919 +                case 10:
 1.15920 +                case 11:
 1.15921 +                case 20:
 1.15922 +                  break starttagloop;
 1.15923 +                case 62:
 1.15924 +                  $reconstructTheActiveFormattingElements(this$static);
 1.15925 +                  $appendToCurrentNodeAndPushElementMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15926 +                  attributes = null;
 1.15927 +                  break starttagloop;
 1.15928 +                default:$reconstructTheActiveFormattingElements(this$static);
 1.15929 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15930 +                  attributes = null;
 1.15931 +                  break starttagloop;
 1.15932 +              }
 1.15933 +            }
 1.15934 +
 1.15935 +          case 3:
 1.15936 +            inheadloop: for (;;) {
 1.15937 +              switch (group) {
 1.15938 +                case 23:
 1.15939 +                  $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.15940 +                  $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
 1.15941 +                  attributes = null;
 1.15942 +                  break starttagloop;
 1.15943 +                case 2:
 1.15944 +                case 54:
 1.15945 +                  $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15946 +                  selfClosing = false;
 1.15947 +                  attributes = null;
 1.15948 +                  break starttagloop;
 1.15949 +                case 18:
 1.15950 +                case 16:
 1.15951 +                  break inheadloop;
 1.15952 +                case 36:
 1.15953 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15954 +                  this$static.originalMode = this$static.mode;
 1.15955 +                  this$static.mode = 20;
 1.15956 +                  $setContentModelFlag_0(this$static.tokenizer, 1, elementName);
 1.15957 +                  attributes = null;
 1.15958 +                  break starttagloop;
 1.15959 +                case 26:
 1.15960 +                  {
 1.15961 +                    $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15962 +                    this$static.mode = 4;
 1.15963 +                  }
 1.15964 +
 1.15965 +                  attributes = null;
 1.15966 +                  break starttagloop;
 1.15967 +                case 31:
 1.15968 +                case 33:
 1.15969 +                case 25:
 1.15970 +                  $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15971 +                  this$static.originalMode = this$static.mode;
 1.15972 +                  this$static.mode = 20;
 1.15973 +                  $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
 1.15974 +                  attributes = null;
 1.15975 +                  break starttagloop;
 1.15976 +                case 20:
 1.15977 +                  break starttagloop;
 1.15978 +                default:$pop(this$static);
 1.15979 +                  this$static.mode = 5;
 1.15980 +                  continue starttagloop;
 1.15981 +              }
 1.15982 +            }
 1.15983 +
 1.15984 +          case 4:
 1.15985 +            switch (group) {
 1.15986 +              case 23:
 1.15987 +                $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.15988 +                $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
 1.15989 +                attributes = null;
 1.15990 +                break starttagloop;
 1.15991 +              case 16:
 1.15992 +                $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15993 +                selfClosing = false;
 1.15994 +                attributes = null;
 1.15995 +                break starttagloop;
 1.15996 +              case 18:
 1.15997 +                $checkMetaCharset(this$static, attributes);
 1.15998 +                $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.15999 +                selfClosing = false;
 1.16000 +                attributes = null;
 1.16001 +                break starttagloop;
 1.16002 +              case 33:
 1.16003 +              case 25:
 1.16004 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.16005 +                this$static.originalMode = this$static.mode;
 1.16006 +                this$static.mode = 20;
 1.16007 +                $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
 1.16008 +                attributes = null;
 1.16009 +                break starttagloop;
 1.16010 +              case 20:
 1.16011 +                break starttagloop;
 1.16012 +              case 26:
 1.16013 +                break starttagloop;
 1.16014 +              default:$pop(this$static);
 1.16015 +                this$static.mode = 3;
 1.16016 +                continue;
 1.16017 +            }
 1.16018 +
 1.16019 +          case 9:
 1.16020 +            switch (group) {
 1.16021 +              case 23:
 1.16022 +                $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.16023 +                $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
 1.16024 +                attributes = null;
 1.16025 +                break starttagloop;
 1.16026 +              case 7:
 1.16027 +                $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.16028 +                selfClosing = false;
 1.16029 +                attributes = null;
 1.16030 +                break starttagloop;
 1.16031 +              default:if (this$static.currentPtr == 0) {
 1.16032 +                  break starttagloop;
 1.16033 +                }
 1.16034 +
 1.16035 +                $pop(this$static);
 1.16036 +                this$static.mode = 7;
 1.16037 +                continue;
 1.16038 +            }
 1.16039 +
 1.16040 +          case 14:
 1.16041 +            switch (group) {
 1.16042 +              case 6:
 1.16043 +              case 39:
 1.16044 +              case 37:
 1.16045 +              case 40:
 1.16046 +              case 34:
 1.16047 +                $endSelect(this$static);
 1.16048 +                continue;
 1.16049 +            }
 1.16050 +
 1.16051 +          case 13:
 1.16052 +            switch (group) {
 1.16053 +              case 23:
 1.16054 +                $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.16055 +                $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
 1.16056 +                attributes = null;
 1.16057 +                break starttagloop;
 1.16058 +              case 28:
 1.16059 +                if ('option' == this$static.stack[this$static.currentPtr].name_0) {
 1.16060 +                  $pop(this$static);
 1.16061 +                }
 1.16062 +
 1.16063 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.16064 +                attributes = null;
 1.16065 +                break starttagloop;
 1.16066 +              case 27:
 1.16067 +                if ('option' == this$static.stack[this$static.currentPtr].name_0) {
 1.16068 +                  $pop(this$static);
 1.16069 +                }
 1.16070 +
 1.16071 +                if ('optgroup' == this$static.stack[this$static.currentPtr].name_0) {
 1.16072 +                  $pop(this$static);
 1.16073 +                }
 1.16074 +
 1.16075 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.16076 +                attributes = null;
 1.16077 +                break starttagloop;
 1.16078 +              case 32:
 1.16079 +                eltPos = $findLastInTableScope(this$static, name);
 1.16080 +                if (eltPos == 2147483647) {
 1.16081 +                  break starttagloop;
 1.16082 +                }
 1.16083 +                 else {
 1.16084 +                  while (this$static.currentPtr >= eltPos) {
 1.16085 +                    $pop(this$static);
 1.16086 +                  }
 1.16087 +                  $resetTheInsertionMode(this$static);
 1.16088 +                  break starttagloop;
 1.16089 +                }
 1.16090 +
 1.16091 +              case 13:
 1.16092 +              case 35:
 1.16093 +                $endSelect(this$static);
 1.16094 +                continue;
 1.16095 +              case 31:
 1.16096 +                $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.16097 +                this$static.originalMode = this$static.mode;
 1.16098 +                this$static.mode = 20;
 1.16099 +                $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
 1.16100 +                attributes = null;
 1.16101 +                break starttagloop;
 1.16102 +              default:break starttagloop;
 1.16103 +            }
 1.16104 +
 1.16105 +          case 15:
 1.16106 +            switch (group) {
 1.16107 +              case 23:
 1.16108 +                $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.16109 +                $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
 1.16110 +                attributes = null;
 1.16111 +                break starttagloop;
 1.16112 +              default:this$static.mode = 6;
 1.16113 +                continue;
 1.16114 +            }
 1.16115 +
 1.16116 +          case 16:
 1.16117 +            switch (group) {
 1.16118 +              case 11:
 1.16119 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.16120 +                attributes = null;
 1.16121 +                break starttagloop;
 1.16122 +              case 10:
 1.16123 +                $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.16124 +                selfClosing = false;
 1.16125 +                attributes = null;
 1.16126 +                break starttagloop;
 1.16127 +            }
 1.16128 +
 1.16129 +          case 17:
 1.16130 +            switch (group) {
 1.16131 +              case 23:
 1.16132 +                $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.16133 +                $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
 1.16134 +                attributes = null;
 1.16135 +                break starttagloop;
 1.16136 +              case 25:
 1.16137 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.16138 +                this$static.originalMode = this$static.mode;
 1.16139 +                this$static.mode = 20;
 1.16140 +                $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
 1.16141 +                attributes = null;
 1.16142 +                break starttagloop;
 1.16143 +              default:break starttagloop;
 1.16144 +            }
 1.16145 +
 1.16146 +          case 0:
 1.16147 +            $documentModeInternal(this$static, ($clinit_78() , QUIRKS_MODE));
 1.16148 +            this$static.mode = 1;
 1.16149 +            continue;
 1.16150 +          case 1:
 1.16151 +            switch (group) {
 1.16152 +              case 23:
 1.16153 +                if (attributes == ($clinit_91() , EMPTY_ATTRIBUTES)) {
 1.16154 +                  $appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
 1.16155 +                }
 1.16156 +                 else {
 1.16157 +                  $appendHtmlElementToDocumentAndPush(this$static, attributes);
 1.16158 +                }
 1.16159 +
 1.16160 +                this$static.mode = 2;
 1.16161 +                attributes = null;
 1.16162 +                break starttagloop;
 1.16163 +              default:$appendHtmlElementToDocumentAndPush(this$static, $emptyAttributes(this$static.tokenizer));
 1.16164 +                this$static.mode = 2;
 1.16165 +                continue;
 1.16166 +            }
 1.16167 +
 1.16168 +          case 2:
 1.16169 +            switch (group) {
 1.16170 +              case 23:
 1.16171 +                $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.16172 +                $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
 1.16173 +                attributes = null;
 1.16174 +                break starttagloop;
 1.16175 +              case 20:
 1.16176 +                $appendToCurrentNodeAndPushHeadElement(this$static, attributes);
 1.16177 +                this$static.mode = 3;
 1.16178 +                attributes = null;
 1.16179 +                break starttagloop;
 1.16180 +              default:$appendToCurrentNodeAndPushHeadElement(this$static, ($clinit_91() , EMPTY_ATTRIBUTES));
 1.16181 +                this$static.mode = 3;
 1.16182 +                continue;
 1.16183 +            }
 1.16184 +
 1.16185 +          case 5:
 1.16186 +            switch (group) {
 1.16187 +              case 23:
 1.16188 +                $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.16189 +                $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
 1.16190 +                attributes = null;
 1.16191 +                break starttagloop;
 1.16192 +              case 3:
 1.16193 +                if (attributes.length_0 == 0) {
 1.16194 +                  $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
 1.16195 +                }
 1.16196 +                 else {
 1.16197 +                  $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), attributes);
 1.16198 +                }
 1.16199 +
 1.16200 +                this$static.mode = 21;
 1.16201 +                attributes = null;
 1.16202 +                break starttagloop;
 1.16203 +              case 11:
 1.16204 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.16205 +                this$static.mode = 16;
 1.16206 +                attributes = null;
 1.16207 +                break starttagloop;
 1.16208 +              case 2:
 1.16209 +                $pushHeadPointerOntoStack(this$static);
 1.16210 +                $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.16211 +                selfClosing = false;
 1.16212 +                $pop(this$static);
 1.16213 +                attributes = null;
 1.16214 +                break starttagloop;
 1.16215 +              case 16:
 1.16216 +                $pushHeadPointerOntoStack(this$static);
 1.16217 +                $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.16218 +                selfClosing = false;
 1.16219 +                $pop(this$static);
 1.16220 +                attributes = null;
 1.16221 +                break starttagloop;
 1.16222 +              case 18:
 1.16223 +                $checkMetaCharset(this$static, attributes);
 1.16224 +                $pushHeadPointerOntoStack(this$static);
 1.16225 +                $appendVoidElementToCurrentMayFoster_0(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.16226 +                selfClosing = false;
 1.16227 +                $pop(this$static);
 1.16228 +                attributes = null;
 1.16229 +                break starttagloop;
 1.16230 +              case 31:
 1.16231 +                $pushHeadPointerOntoStack(this$static);
 1.16232 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.16233 +                this$static.originalMode = this$static.mode;
 1.16234 +                this$static.mode = 20;
 1.16235 +                $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
 1.16236 +                attributes = null;
 1.16237 +                break starttagloop;
 1.16238 +              case 33:
 1.16239 +              case 25:
 1.16240 +                $pushHeadPointerOntoStack(this$static);
 1.16241 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.16242 +                this$static.originalMode = this$static.mode;
 1.16243 +                this$static.mode = 20;
 1.16244 +                $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
 1.16245 +                attributes = null;
 1.16246 +                break starttagloop;
 1.16247 +              case 36:
 1.16248 +                $pushHeadPointerOntoStack(this$static);
 1.16249 +                $appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.16250 +                this$static.originalMode = this$static.mode;
 1.16251 +                this$static.mode = 20;
 1.16252 +                $setContentModelFlag_0(this$static.tokenizer, 1, elementName);
 1.16253 +                attributes = null;
 1.16254 +                break starttagloop;
 1.16255 +              case 20:
 1.16256 +                break starttagloop;
 1.16257 +              default:$appendToCurrentNodeAndPushElement(this$static, 'http://www.w3.org/1999/xhtml', ($clinit_89() , BODY), $emptyAttributes(this$static.tokenizer));
 1.16258 +                this$static.mode = 21;
 1.16259 +                continue;
 1.16260 +            }
 1.16261 +
 1.16262 +          case 18:
 1.16263 +            switch (group) {
 1.16264 +              case 23:
 1.16265 +                $processNonNcNames(attributes, this$static, this$static.namePolicy);
 1.16266 +                $addAttributesToElement(this$static, this$static.stack[0].node, attributes);
 1.16267 +                attributes = null;
 1.16268 +                break starttagloop;
 1.16269 +              default:this$static.mode = 6;
 1.16270 +                continue;
 1.16271 +            }
 1.16272 +
 1.16273 +          case 19:
 1.16274 +            switch (group) {
 1.16275 +              case 25:
 1.16276 +                $appendToCurrentNodeAndPushElementMayFoster(this$static, 'http://www.w3.org/1999/xhtml', elementName, attributes);
 1.16277 +                this$static.originalMode = this$static.mode;
 1.16278 +                this$static.mode = 20;
 1.16279 +                $setContentModelFlag_0(this$static.tokenizer, 2, elementName);
 1.16280 +                attributes = null;
 1.16281 +                break starttagloop;
 1.16282 +              default:break starttagloop;
 1.16283 +            }
 1.16284 +
 1.16285 +        }
 1.16286 +
 1.16287 +    }
 1.16288 +  }
 1.16289 +  if (needsPostProcessing && this$static.foreignFlag == 0 && !$hasForeignInScope(this$static)) {
 1.16290 +    this$static.foreignFlag = 1;
 1.16291 +  }
 1.16292 +  attributes != ($clinit_91() , EMPTY_ATTRIBUTES);
 1.16293 +}
 1.16294 +
 1.16295 +function $startTokenization(this$static, self){
 1.16296 +  var elt, node;
 1.16297 +  this$static.tokenizer = self;
 1.16298 +  this$static.stack = initDim(_3Lnu_validator_htmlparser_impl_StackNode_2_classLit, 51, 11, 64, 0);
 1.16299 +  this$static.listOfActiveFormattingElements = initDim(_3Lnu_validator_htmlparser_impl_StackNode_2_classLit, 51, 11, 64, 0);
 1.16300 +  this$static.needToDropLF = false;
 1.16301 +  this$static.originalMode = 0;
 1.16302 +  this$static.currentPtr = -1;
 1.16303 +  this$static.listPtr = -1;
 1.16304 +  this$static.formPointer = null;
 1.16305 +  this$static.headPointer = null;
 1.16306 +  this$static.html4 = false;
 1.16307 +  $clearImpl(this$static.idLocations);
 1.16308 +  this$static.wantingComments = this$static.wantingComments;
 1.16309 +  this$static.script = null;
 1.16310 +  this$static.placeholder = null;
 1.16311 +  this$static.readyToRun = false;
 1.16312 +  this$static.charBufferLen = 0;
 1.16313 +  this$static.charBuffer = initDim(_3C_classLit, 42, -1, 1024, 1);
 1.16314 +  if (this$static.fragment) {
 1.16315 +    elt = $createHtmlElementSetAsRoot(this$static, $emptyAttributes(this$static.tokenizer));
 1.16316 +    node = $StackNode_0(new StackNode(), 'http://www.w3.org/1999/xhtml', ($clinit_89() , HTML_0), elt);
 1.16317 +    ++this$static.currentPtr;
 1.16318 +    this$static.stack[this$static.currentPtr] = node;
 1.16319 +    $resetTheInsertionMode(this$static);
 1.16320 +    if ('title' == this$static.contextName || 'textarea' == this$static.contextName) {
 1.16321 +      $setContentModelFlag(this$static.tokenizer, 1);
 1.16322 +    }
 1.16323 +     else if ('style' == this$static.contextName || 'script' == this$static.contextName || 'xmp' == this$static.contextName || 'iframe' == this$static.contextName || 'noembed' == this$static.contextName || 'noframes' == this$static.contextName) {
 1.16324 +      $setContentModelFlag(this$static.tokenizer, 2);
 1.16325 +    }
 1.16326 +     else if ('plaintext' == this$static.contextName) {
 1.16327 +      $setContentModelFlag(this$static.tokenizer, 3);
 1.16328 +    }
 1.16329 +     else {
 1.16330 +      $setContentModelFlag(this$static.tokenizer, 0);
 1.16331 +    }
 1.16332 +    this$static.contextName = null;
 1.16333 +  }
 1.16334 +   else {
 1.16335 +    this$static.mode = 0;
 1.16336 +    this$static.foreignFlag = 1;
 1.16337 +  }
 1.16338 +}
 1.16339 +
 1.16340 +function extractCharsetFromContent(attributeValue){
 1.16341 +  var buffer, c, charset, charsetState, end, i, start;
 1.16342 +  charsetState = 0;
 1.16343 +  start = -1;
 1.16344 +  end = -1;
 1.16345 +  buffer = $toCharArray(attributeValue);
 1.16346 +  charsetloop: for (i = 0; i < buffer.length; ++i) {
 1.16347 +    c = buffer[i];
 1.16348 +    switch (charsetState) {
 1.16349 +      case 0:
 1.16350 +        switch (c) {
 1.16351 +          case 99:
 1.16352 +          case 67:
 1.16353 +            charsetState = 1;
 1.16354 +            continue;
 1.16355 +          default:continue;
 1.16356 +        }
 1.16357 +
 1.16358 +      case 1:
 1.16359 +        switch (c) {
 1.16360 +          case 104:
 1.16361 +          case 72:
 1.16362 +            charsetState = 2;
 1.16363 +            continue;
 1.16364 +          default:charsetState = 0;
 1.16365 +            continue;
 1.16366 +        }
 1.16367 +
 1.16368 +      case 2:
 1.16369 +        switch (c) {
 1.16370 +          case 97:
 1.16371 +          case 65:
 1.16372 +            charsetState = 3;
 1.16373 +            continue;
 1.16374 +          default:charsetState = 0;
 1.16375 +            continue;
 1.16376 +        }
 1.16377 +
 1.16378 +      case 3:
 1.16379 +        switch (c) {
 1.16380 +          case 114:
 1.16381 +          case 82:
 1.16382 +            charsetState = 4;
 1.16383 +            continue;
 1.16384 +          default:charsetState = 0;
 1.16385 +            continue;
 1.16386 +        }
 1.16387 +
 1.16388 +      case 4:
 1.16389 +        switch (c) {
 1.16390 +          case 115:
 1.16391 +          case 83:
 1.16392 +            charsetState = 5;
 1.16393 +            continue;
 1.16394 +          default:charsetState = 0;
 1.16395 +            continue;
 1.16396 +        }
 1.16397 +
 1.16398 +      case 5:
 1.16399 +        switch (c) {
 1.16400 +          case 101:
 1.16401 +          case 69:
 1.16402 +            charsetState = 6;
 1.16403 +            continue;
 1.16404 +          default:charsetState = 0;
 1.16405 +            continue;
 1.16406 +        }
 1.16407 +
 1.16408 +      case 6:
 1.16409 +        switch (c) {
 1.16410 +          case 116:
 1.16411 +          case 84:
 1.16412 +            charsetState = 7;
 1.16413 +            continue;
 1.16414 +          default:charsetState = 0;
 1.16415 +            continue;
 1.16416 +        }
 1.16417 +
 1.16418 +      case 7:
 1.16419 +        switch (c) {
 1.16420 +          case 9:
 1.16421 +          case 10:
 1.16422 +          case 12:
 1.16423 +          case 13:
 1.16424 +          case 32:
 1.16425 +            continue;
 1.16426 +          case 61:
 1.16427 +            charsetState = 8;
 1.16428 +            continue;
 1.16429 +          default:return null;
 1.16430 +        }
 1.16431 +
 1.16432 +      case 8:
 1.16433 +        switch (c) {
 1.16434 +          case 9:
 1.16435 +          case 10:
 1.16436 +          case 12:
 1.16437 +          case 13:
 1.16438 +          case 32:
 1.16439 +            continue;
 1.16440 +          case 39:
 1.16441 +            start = i + 1;
 1.16442 +            charsetState = 9;
 1.16443 +            continue;
 1.16444 +          case 34:
 1.16445 +            start = i + 1;
 1.16446 +            charsetState = 10;
 1.16447 +            continue;
 1.16448 +          default:start = i;
 1.16449 +            charsetState = 11;
 1.16450 +            continue;
 1.16451 +        }
 1.16452 +
 1.16453 +      case 9:
 1.16454 +        switch (c) {
 1.16455 +          case 39:
 1.16456 +            end = i;
 1.16457 +            break charsetloop;
 1.16458 +          default:continue;
 1.16459 +        }
 1.16460 +
 1.16461 +      case 10:
 1.16462 +        switch (c) {
 1.16463 +          case 34:
 1.16464 +            end = i;
 1.16465 +            break charsetloop;
 1.16466 +          default:continue;
 1.16467 +        }
 1.16468 +
 1.16469 +      case 11:
 1.16470 +        switch (c) {
 1.16471 +          case 9:
 1.16472 +          case 10:
 1.16473 +          case 12:
 1.16474 +          case 13:
 1.16475 +          case 32:
 1.16476 +          case 59:
 1.16477 +            end = i;
 1.16478 +            break charsetloop;
 1.16479 +          default:continue;
 1.16480 +        }
 1.16481 +
 1.16482 +    }
 1.16483 +  }
 1.16484 +  charset = null;
 1.16485 +  if (start != -1) {
 1.16486 +    if (end == -1) {
 1.16487 +      end = buffer.length;
 1.16488 +    }
 1.16489 +    charset = valueOf_1(buffer, start, end - start);
 1.16490 +  }
 1.16491 +  return charset;
 1.16492 +}
 1.16493 +
 1.16494 +function getClass_57(){
 1.16495 +  return Lnu_validator_htmlparser_impl_TreeBuilder_2_classLit;
 1.16496 +}
 1.16497 +
 1.16498 +function TreeBuilder(){
 1.16499 +}
 1.16500 +
 1.16501 +_ = TreeBuilder.prototype = new Object_0();
 1.16502 +_.getClass$ = getClass_57;
 1.16503 +_.typeId$ = 0;
 1.16504 +_.charBuffer = null;
 1.16505 +_.charBufferLen = 0;
 1.16506 +_.contextName = null;
 1.16507 +_.contextNamespace = null;
 1.16508 +_.currentPtr = -1;
 1.16509 +_.foreignFlag = 1;
 1.16510 +_.formPointer = null;
 1.16511 +_.fragment = false;
 1.16512 +_.headPointer = null;
 1.16513 +_.html4 = false;
 1.16514 +_.listOfActiveFormattingElements = null;
 1.16515 +_.listPtr = -1;
 1.16516 +_.mode = 0;
 1.16517 +_.needToDropLF = false;
 1.16518 +_.originalMode = 0;
 1.16519 +_.quirks = false;
 1.16520 +_.stack = null;
 1.16521 +_.tokenizer = null;
 1.16522 +_.wantingComments = false;
 1.16523 +var HTML4_PUBLIC_IDS, ISINDEX_PROMPT, QUIRKY_PUBLIC_IDS;
 1.16524 +function $clinit_88(){
 1.16525 +  $clinit_88 = nullMethod;
 1.16526 +  $clinit_98();
 1.16527 +}
 1.16528 +
 1.16529 +function $accumulateCharacters(this$static, buf, start, length){
 1.16530 +  var newBuf, newLen;
 1.16531 +  newLen = this$static.charBufferLen + length;
 1.16532 +  if (newLen > this$static.charBuffer.length) {
 1.16533 +    newBuf = initDim(_3C_classLit, 42, -1, newLen, 1);
 1.16534 +    arraycopy(this$static.charBuffer, 0, newBuf, 0, this$static.charBufferLen);
 1.16535 +    this$static.charBuffer = newBuf;
 1.16536 +  }
 1.16537 +  arraycopy(buf, start, this$static.charBuffer, this$static.charBufferLen, length);
 1.16538 +  this$static.charBufferLen = newLen;
 1.16539 +}
 1.16540 +
 1.16541 +function $insertFosterParentedCharacters_0(this$static, buf, start, length, table, stackParent){
 1.16542 +  var end;
 1.16543 +  $insertFosterParentedCharacters(this$static, (end = start + length , __checkBounds(buf.length, start, end) , __valueOf(buf, start, end)), table, stackParent);
 1.16544 +}
 1.16545 +
 1.16546 +function getClass_50(){
 1.16547 +  return Lnu_validator_htmlparser_impl_CoalescingTreeBuilder_2_classLit;
 1.16548 +}
 1.16549 +
 1.16550 +function CoalescingTreeBuilder(){
 1.16551 +}
 1.16552 +
 1.16553 +_ = CoalescingTreeBuilder.prototype = new TreeBuilder();
 1.16554 +_.getClass$ = getClass_50;
 1.16555 +_.typeId$ = 0;
 1.16556 +function $clinit_82(){
 1.16557 +  $clinit_82 = nullMethod;
 1.16558 +  $clinit_88();
 1.16559 +}
 1.16560 +
 1.16561 +function $BrowserTreeBuilder(this$static, document_0){
 1.16562 +  $clinit_82();
 1.16563 +  this$static.doctypeExpectation = ($clinit_77() , HTML);
 1.16564 +  this$static.namePolicy = ($clinit_80() , ALTER_INFOSET);
 1.16565 +  this$static.idLocations = $HashMap(new HashMap());
 1.16566 +  this$static.fragment = false;
 1.16567 +  this$static.scriptStack = $LinkedList(new LinkedList());
 1.16568 +  this$static.document_0 = document_0;
 1.16569 +  installExplorerCreateElementNS(document_0);
 1.16570 +  return this$static;
 1.16571 +}
 1.16572 +
 1.16573 +function $addAttributesToElement(this$static, element, attributes){
 1.16574 +  var $e0, e, i, localName, uri;
 1.16575 +  try {
 1.16576 +    for (i = 0; i < attributes.length_0; ++i) {
 1.16577 +      localName = $getLocalName(attributes, i);
 1.16578 +      uri = $getURI(attributes, i);
 1.16579 +      if (!element.hasAttributeNS(uri, localName)) {
 1.16580 +        element.setAttributeNS(uri, localName, $getValue(attributes, i));
 1.16581 +      }
 1.16582 +    }
 1.16583 +  }
 1.16584 +   catch ($e0) {
 1.16585 +    $e0 = caught($e0);
 1.16586 +    if (instanceOf($e0, 19)) {
 1.16587 +      e = $e0;
 1.16588 +      $fatal_0(this$static, e);
 1.16589 +    }
 1.16590 +     else 
 1.16591 +      throw $e0;
 1.16592 +  }
 1.16593 +}
 1.16594 +
 1.16595 +function $appendCharacters(this$static, parent, text){
 1.16596 +  var $e0, e;
 1.16597 +  try {
 1.16598 +    if (parent == this$static.placeholder) {
 1.16599 +      this$static.script.appendChild(this$static.document_0.createTextNode(text));
 1.16600 +    }
 1.16601 +    parent.appendChild(this$static.document_0.createTextNode(text));
 1.16602 +  }
 1.16603 +   catch ($e0) {
 1.16604 +    $e0 = caught($e0);
 1.16605 +    if (instanceOf($e0, 19)) {
 1.16606 +      e = $e0;
 1.16607 +      $fatal_0(this$static, e);
 1.16608 +    }
 1.16609 +     else 
 1.16610 +      throw $e0;
 1.16611 +  }
 1.16612 +}
 1.16613 +
 1.16614 +function $appendChildrenToNewParent(this$static, oldParent, newParent){
 1.16615 +  var $e0, e;
 1.16616 +  try {
 1.16617 +    while (oldParent.hasChildNodes()) {
 1.16618 +      newParent.appendChild(oldParent.firstChild);
 1.16619 +    }
 1.16620 +  }
 1.16621 +   catch ($e0) {
 1.16622 +    $e0 = caught($e0);
 1.16623 +    if (instanceOf($e0, 19)) {
 1.16624 +      e = $e0;
 1.16625 +      $fatal_0(this$static, e);
 1.16626 +    }
 1.16627 +     else 
 1.16628 +      throw $e0;
 1.16629 +  }
 1.16630 +}
 1.16631 +
 1.16632 +function $appendComment(this$static, parent, comment){
 1.16633 +  var $e0, e;
 1.16634 +  try {
 1.16635 +    if (parent == this$static.placeholder) {
 1.16636 +      this$static.script.appendChild(this$static.document_0.createComment(comment));
 1.16637 +    }
 1.16638 +    parent.appendChild(this$static.document_0.createComment(comment));
 1.16639 +  }
 1.16640 +   catch ($e0) {
 1.16641 +    $e0 = caught($e0);
 1.16642 +    if (instanceOf($e0, 19)) {
 1.16643 +      e = $e0;
 1.16644 +      $fatal_0(this$static, e);
 1.16645 +    }
 1.16646 +     else 
 1.16647 +      throw $e0;
 1.16648 +  }
 1.16649 +}
 1.16650 +
 1.16651 +function $appendCommentToDocument(this$static, comment){
 1.16652 +  var $e0, e;
 1.16653 +  try {
 1.16654 +    this$static.document_0.appendChild(this$static.document_0.createComment(comment));
 1.16655 +  }
 1.16656 +   catch ($e0) {
 1.16657 +    $e0 = caught($e0);
 1.16658 +    if (instanceOf($e0, 19)) {
 1.16659 +      e = $e0;
 1.16660 +      $fatal_0(this$static, e);
 1.16661 +    }
 1.16662 +     else 
 1.16663 +      throw $e0;
 1.16664 +  }
 1.16665 +}
 1.16666 +
 1.16667 +function $appendElement(this$static, child, newParent){
 1.16668 +  var $e0, e;
 1.16669 +  try {
 1.16670 +    if (newParent == this$static.placeholder) {
 1.16671 +      this$static.script.appendChild(child.cloneNode(true));
 1.16672 +    }
 1.16673 +    newParent.appendChild(child);
 1.16674 +  }
 1.16675 +   catch ($e0) {
 1.16676 +    $e0 = caught($e0);
 1.16677 +    if (instanceOf($e0, 19)) {
 1.16678 +      e = $e0;
 1.16679 +      $fatal_0(this$static, e);
 1.16680 +    }
 1.16681 +     else 
 1.16682 +      throw $e0;
 1.16683 +  }
 1.16684 +}
 1.16685 +
 1.16686 +function $createElement(this$static, ns, name, attributes){
 1.16687 +  var $e0, e, i, rv;
 1.16688 +  try {
 1.16689 +    rv = this$static.document_0.createElementNS(ns, name);
 1.16690 +    for (i = 0; i < attributes.length_0; ++i) {
 1.16691 +      rv.setAttributeNS($getURI(attributes, i), $getLocalName(attributes, i), $getValue(attributes, i));
 1.16692 +    }
 1.16693 +    if ('script' == name) {
 1.16694 +      if (this$static.placeholder) {
 1.16695 +        $addLast(this$static.scriptStack, $BrowserTreeBuilder$ScriptHolder(new BrowserTreeBuilder$ScriptHolder(), this$static.script, this$static.placeholder));
 1.16696 +      }
 1.16697 +      this$static.script = rv;
 1.16698 +      this$static.placeholder = this$static.document_0.createElementNS('http://n.validator.nu/placeholder/', 'script');
 1.16699 +      rv = this$static.placeholder;
 1.16700 +      for (i = 0; i < attributes.length_0; ++i) {
 1.16701 +        rv.setAttributeNS($getURI(attributes, i), $getLocalName(attributes, i), $getValue(attributes, i));
 1.16702 +      }
 1.16703 +    }
 1.16704 +    return rv;
 1.16705 +  }
 1.16706 +   catch ($e0) {
 1.16707 +    $e0 = caught($e0);
 1.16708 +    if (instanceOf($e0, 19)) {
 1.16709 +      e = $e0;
 1.16710 +      $fatal_0(this$static, e);
 1.16711 +      throw $RuntimeException(new RuntimeException(), 'Unreachable');
 1.16712 +    }
 1.16713 +     else 
 1.16714 +      throw $e0;
 1.16715 +  }
 1.16716 +}
 1.16717 +
 1.16718 +function $createElement_0(this$static, ns, name, attributes){
 1.16719 +  var $e0, e, rv;
 1.16720 +  try {
 1.16721 +    rv = $createElement(this$static, ns, name, attributes);
 1.16722 +    return rv;
 1.16723 +  }
 1.16724 +   catch ($e0) {
 1.16725 +    $e0 = caught($e0);
 1.16726 +    if (instanceOf($e0, 19)) {
 1.16727 +      e = $e0;
 1.16728 +      $fatal_0(this$static, e);
 1.16729 +      return null;
 1.16730 +    }
 1.16731 +     else 
 1.16732 +      throw $e0;
 1.16733 +  }
 1.16734 +}
 1.16735 +
 1.16736 +function $createHtmlElementSetAsRoot(this$static, attributes){
 1.16737 +  var $e0, e, i, rv;
 1.16738 +  try {
 1.16739 +    rv = this$static.document_0.createElementNS('http://www.w3.org/1999/xhtml', 'html');
 1.16740 +    for (i = 0; i < attributes.length_0; ++i) {
 1.16741 +      rv.setAttributeNS($getURI(attributes, i), $getLocalName(attributes, i), $getValue(attributes, i));
 1.16742 +    }
 1.16743 +    this$static.document_0.appendChild(rv);
 1.16744 +    return rv;
 1.16745 +  }
 1.16746 +   catch ($e0) {
 1.16747 +    $e0 = caught($e0);
 1.16748 +    if (instanceOf($e0, 19)) {
 1.16749 +      e = $e0;
 1.16750 +      $fatal_0(this$static, e);
 1.16751 +      throw $RuntimeException(new RuntimeException(), 'Unreachable');
 1.16752 +    }
 1.16753 +     else 
 1.16754 +      throw $e0;
 1.16755 +  }
 1.16756 +}
 1.16757 +
 1.16758 +function $detachFromParent(this$static, element){
 1.16759 +  var $e0, e, parent;
 1.16760 +  try {
 1.16761 +    parent = element.parentNode;
 1.16762 +    if (parent) {
 1.16763 +      parent.removeChild(element);
 1.16764 +    }
 1.16765 +  }
 1.16766 +   catch ($e0) {
 1.16767 +    $e0 = caught($e0);
 1.16768 +    if (instanceOf($e0, 19)) {
 1.16769 +      e = $e0;
 1.16770 +      $fatal_0(this$static, e);
 1.16771 +    }
 1.16772 +     else 
 1.16773 +      throw $e0;
 1.16774 +  }
 1.16775 +}
 1.16776 +
 1.16777 +function $elementPopped(this$static, ns, name, node){
 1.16778 +  if (node == this$static.placeholder) {
 1.16779 +    this$static.readyToRun = true;
 1.16780 +    this$static.tokenizer.shouldSuspend = true;
 1.16781 +  }
 1.16782 +  __elementPopped__(ns, name, node);
 1.16783 +}
 1.16784 +
 1.16785 +function $getDocument(this$static){
 1.16786 +  var rv;
 1.16787 +  rv = this$static.document_0;
 1.16788 +  this$static.document_0 = null;
 1.16789 +  return rv;
 1.16790 +}
 1.16791 +
 1.16792 +function $insertFosterParentedCharacters(this$static, text, table, stackParent){
 1.16793 +  var $e0, child, e, parent;
 1.16794 +  try {
 1.16795 +    child = this$static.document_0.createTextNode(text);
 1.16796 +    parent = table.parentNode;
 1.16797 +    if (!!parent && parent.nodeType == 1) {
 1.16798 +      parent.insertBefore(child, table);
 1.16799 +    }
 1.16800 +     else {
 1.16801 +      stackParent.appendChild(child);
 1.16802 +    }
 1.16803 +  }
 1.16804 +   catch ($e0) {
 1.16805 +    $e0 = caught($e0);
 1.16806 +    if (instanceOf($e0, 19)) {
 1.16807 +      e = $e0;
 1.16808 +      $fatal_0(this$static, e);
 1.16809 +    }
 1.16810 +     else 
 1.16811 +      throw $e0;
 1.16812 +  }
 1.16813 +}
 1.16814 +
 1.16815 +function $insertFosterParentedChild(this$static, child, table, stackParent){
 1.16816 +  var $e0, e, parent;
 1.16817 +  parent = table.parentNode;
 1.16818 +  try {
 1.16819 +    if (!!parent && parent.nodeType == 1) {
 1.16820 +      parent.insertBefore(child, table);
 1.16821 +    }
 1.16822 +     else {
 1.16823 +      stackParent.appendChild(child);
 1.16824 +    }
 1.16825 +  }
 1.16826 +   catch ($e0) {
 1.16827 +    $e0 = caught($e0);
 1.16828 +    if (instanceOf($e0, 19)) {
 1.16829 +      e = $e0;
 1.16830 +      $fatal_0(this$static, e);
 1.16831 +    }
 1.16832 +     else 
 1.16833 +      throw $e0;
 1.16834 +  }
 1.16835 +}
 1.16836 +
 1.16837 +function $maybeRunScript(this$static){
 1.16838 +  var scriptHolder;
 1.16839 +  if (this$static.readyToRun) {
 1.16840 +    this$static.readyToRun = false;
 1.16841 +    replace_0(this$static.placeholder, this$static.script);
 1.16842 +    if (this$static.scriptStack.size == 0) {
 1.16843 +      this$static.script = null;
 1.16844 +      this$static.placeholder = null;
 1.16845 +    }
 1.16846 +     else {
 1.16847 +      scriptHolder = dynamicCast($removeLast(this$static.scriptStack), 20);
 1.16848 +      this$static.script = scriptHolder.script;
 1.16849 +      this$static.placeholder = scriptHolder.placeholder;
 1.16850 +    }
 1.16851 +  }
 1.16852 +}
 1.16853 +
 1.16854 +function getClass_45(){
 1.16855 +  return Lnu_validator_htmlparser_gwt_BrowserTreeBuilder_2_classLit;
 1.16856 +}
 1.16857 +
 1.16858 +function installExplorerCreateElementNS(doc){
 1.16859 +  if (!doc.createElementNS) {
 1.16860 +    doc.createElementNS = function(uri, local){
 1.16861 +      if ('http://www.w3.org/1999/xhtml' == uri) {
 1.16862 +        return doc.createElement(local);
 1.16863 +      }
 1.16864 +       else if ('http://www.w3.org/1998/Math/MathML' == uri) {
 1.16865 +        if (!doc.mathplayerinitialized) {
 1.16866 +          var obj = document.createElement('object');
 1.16867 +          obj.setAttribute('id', 'mathplayer');
 1.16868 +          obj.setAttribute('classid', 'clsid:32F66A20-7614-11D4-BD11-00104BD3F987');
 1.16869 +          document.getElementsByTagName('head')[0].appendChild(obj);
 1.16870 +          document.namespaces.add('m', 'http://www.w3.org/1998/Math/MathML', '#mathplayer');
 1.16871 +          doc.mathplayerinitialized = true;
 1.16872 +        }
 1.16873 +        return doc.createElement('m:' + local);
 1.16874 +      }
 1.16875 +       else if ('http://www.w3.org/2000/svg' == uri) {
 1.16876 +        if (!doc.renesisinitialized) {
 1.16877 +          var obj = document.createElement('object');
 1.16878 +          obj.setAttribute('id', 'renesis');
 1.16879 +          obj.setAttribute('classid', 'clsid:AC159093-1683-4BA2-9DCF-0C350141D7F2');
 1.16880 +          document.getElementsByTagName('head')[0].appendChild(obj);
 1.16881 +          document.namespaces.add('s', 'http://www.w3.org/2000/svg', '#renesis');
 1.16882 +          doc.renesisinitialized = true;
 1.16883 +        }
 1.16884 +        return doc.createElement('s:' + local);
 1.16885 +      }
 1.16886 +       else {
 1.16887 +      }
 1.16888 +    }
 1.16889 +    ;
 1.16890 +  }
 1.16891 +}
 1.16892 +
 1.16893 +function replace_0(oldNode, newNode){
 1.16894 +  oldNode.parentNode.replaceChild(newNode, oldNode);
 1.16895 +  __elementPopped__('', newNode.nodeName, newNode);
 1.16896 +}
 1.16897 +
 1.16898 +function BrowserTreeBuilder(){
 1.16899 +}
 1.16900 +
 1.16901 +_ = BrowserTreeBuilder.prototype = new CoalescingTreeBuilder();
 1.16902 +_.getClass$ = getClass_45;
 1.16903 +_.typeId$ = 0;
 1.16904 +_.document_0 = null;
 1.16905 +_.placeholder = null;
 1.16906 +_.readyToRun = false;
 1.16907 +_.script = null;
 1.16908 +function $BrowserTreeBuilder$ScriptHolder(this$static, script, placeholder){
 1.16909 +  this$static.script = script;
 1.16910 +  this$static.placeholder = placeholder;
 1.16911 +  return this$static;
 1.16912 +}
 1.16913 +
 1.16914 +function getClass_44(){
 1.16915 +  return Lnu_validator_htmlparser_gwt_BrowserTreeBuilder$ScriptHolder_2_classLit;
 1.16916 +}
 1.16917 +
 1.16918 +function BrowserTreeBuilder$ScriptHolder(){
 1.16919 +}
 1.16920 +
 1.16921 +_ = BrowserTreeBuilder$ScriptHolder.prototype = new Object_0();
 1.16922 +_.getClass$ = getClass_44;
 1.16923 +_.typeId$ = 34;
 1.16924 +_.placeholder = null;
 1.16925 +_.script = null;
 1.16926 +function $HtmlParser(this$static, document_0){
 1.16927 +  this$static.documentWriteBuffer = $StringBuilder(new StringBuilder());
 1.16928 +  this$static.bufferStack = $LinkedList(new LinkedList());
 1.16929 +  this$static.domTreeBuilder = $BrowserTreeBuilder(new BrowserTreeBuilder(), document_0);
 1.16930 +  this$static.tokenizer = $ErrorReportingTokenizer(new ErrorReportingTokenizer(), this$static.domTreeBuilder);
 1.16931 +  this$static.domTreeBuilder.namePolicy = ($clinit_80() , ALTER_INFOSET);
 1.16932 +  this$static.tokenizer.commentPolicy = ALTER_INFOSET;
 1.16933 +  this$static.tokenizer.contentNonXmlCharPolicy = ALTER_INFOSET;
 1.16934 +  this$static.tokenizer.contentSpacePolicy = ALTER_INFOSET;
 1.16935 +  this$static.tokenizer.namePolicy = ALTER_INFOSET;
 1.16936 +  $setXmlnsPolicy(this$static.tokenizer, ALTER_INFOSET);
 1.16937 +  return this$static;
 1.16938 +}
 1.16939 +
 1.16940 +function $parse(this$static, source, useSetTimeouts, callback){
 1.16941 +  this$static.parseEndListener = callback;
 1.16942 +  $setFragmentContext(this$static.domTreeBuilder, null);
 1.16943 +  this$static.lastWasCR = false;
 1.16944 +  this$static.ending = false;
 1.16945 +  $setLength(this$static.documentWriteBuffer, 0);
 1.16946 +  this$static.streamLength = source.length;
 1.16947 +  this$static.stream = $UTF16Buffer(new UTF16Buffer(), $toCharArray(source), 0, this$static.streamLength < 512?this$static.streamLength:512);
 1.16948 +  $clear(this$static.bufferStack);
 1.16949 +  $addLast(this$static.bufferStack, this$static.stream);
 1.16950 +  $setFragmentContext(this$static.domTreeBuilder, null);
 1.16951 +  $start_0(this$static.tokenizer);
 1.16952 +  $pump(this$static, useSetTimeouts);
 1.16953 +}
 1.16954 +
 1.16955 +function $pump(this$static, useSetTimeouts){
 1.16956 +  var $e0, buffer, docWriteLen, newBuf, newEnd, timer;
 1.16957 +  if (this$static.ending) {
 1.16958 +    $end(this$static.tokenizer);
 1.16959 +    $getDocument(this$static.domTreeBuilder);
 1.16960 +    this$static.parseEndListener.callback();
 1.16961 +    return;
 1.16962 +  }
 1.16963 +  docWriteLen = this$static.documentWriteBuffer.stringLength;
 1.16964 +  if (docWriteLen > 0) {
 1.16965 +    newBuf = initDim(_3C_classLit, 42, -1, docWriteLen, 1);
 1.16966 +    $getChars(this$static.documentWriteBuffer, 0, docWriteLen, newBuf, 0);
 1.16967 +    $addLast(this$static.bufferStack, $UTF16Buffer(new UTF16Buffer(), newBuf, 0, docWriteLen));
 1.16968 +    $setLength(this$static.documentWriteBuffer, 0);
 1.16969 +  }
 1.16970 +  for (;;) {
 1.16971 +    buffer = dynamicCast($getLast(this$static.bufferStack), 21);
 1.16972 +    if (buffer.start >= buffer.end) {
 1.16973 +      if (buffer == this$static.stream) {
 1.16974 +        if (buffer.end == this$static.streamLength) {
 1.16975 +          $eof(this$static.tokenizer);
 1.16976 +          this$static.ending = true;
 1.16977 +          break;
 1.16978 +        }
 1.16979 +         else {
 1.16980 +          newEnd = buffer.start + 512;
 1.16981 +          buffer.end = newEnd < this$static.streamLength?newEnd:this$static.streamLength;
 1.16982 +          continue;
 1.16983 +        }
 1.16984 +      }
 1.16985 +       else {
 1.16986 +        dynamicCast($removeLast(this$static.bufferStack), 21);
 1.16987 +        continue;
 1.16988 +      }
 1.16989 +    }
 1.16990 +    $adjust(buffer, this$static.lastWasCR);
 1.16991 +    this$static.lastWasCR = false;
 1.16992 +    if (buffer.start < buffer.end) {
 1.16993 +      this$static.lastWasCR = $tokenizeBuffer(this$static.tokenizer, buffer);
 1.16994 +      $maybeRunScript(this$static.domTreeBuilder);
 1.16995 +      break;
 1.16996 +    }
 1.16997 +     else {
 1.16998 +      continue;
 1.16999 +    }
 1.17000 +  }
 1.17001 +  if (useSetTimeouts) {
 1.17002 +    timer = $HtmlParser$1(new HtmlParser$1(), this$static);
 1.17003 +    $schedule(timer, 1);
 1.17004 +  }
 1.17005 +   else {
 1.17006 +    try {
 1.17007 +      $pump(this$static, false);
 1.17008 +    }
 1.17009 +     catch ($e0) {
 1.17010 +      $e0 = caught($e0);
 1.17011 +      if (instanceOf($e0, 22)) {
 1.17012 +        this$static.ending = true;
 1.17013 +      }
 1.17014 +       else 
 1.17015 +        throw $e0;
 1.17016 +    }
 1.17017 +  }
 1.17018 +}
 1.17019 +
 1.17020 +function documentWrite(text){
 1.17021 +  var buffer;
 1.17022 +  buffer = $UTF16Buffer(new UTF16Buffer(), $toCharArray(text), 0, text.length);
 1.17023 +  while (buffer.start < buffer.end) {
 1.17024 +    $adjust(buffer, this.lastWasCR);
 1.17025 +    this.lastWasCR = false;
 1.17026 +    if (buffer.start < buffer.end) {
 1.17027 +      this.lastWasCR = $tokenizeBuffer(this.tokenizer, buffer);
 1.17028 +      $maybeRunScript(this.domTreeBuilder);
 1.17029 +    }
 1.17030 +  }
 1.17031 +}
 1.17032 +
 1.17033 +function getClass_47(){
 1.17034 +  return Lnu_validator_htmlparser_gwt_HtmlParser_2_classLit;
 1.17035 +}
 1.17036 +
 1.17037 +function HtmlParser(){
 1.17038 +}
 1.17039 +
 1.17040 +_ = HtmlParser.prototype = new Object_0();
 1.17041 +_.documentWrite = documentWrite;
 1.17042 +_.getClass$ = getClass_47;
 1.17043 +_.typeId$ = 0;
 1.17044 +_.domTreeBuilder = null;
 1.17045 +_.ending = false;
 1.17046 +_.lastWasCR = false;
 1.17047 +_.parseEndListener = null;
 1.17048 +_.stream = null;
 1.17049 +_.streamLength = 0;
 1.17050 +_.tokenizer = null;
 1.17051 +function $clinit_83(){
 1.17052 +  $clinit_83 = nullMethod;
 1.17053 +  $clinit_12();
 1.17054 +}
 1.17055 +
 1.17056 +function $HtmlParser$1(this$static, this$0){
 1.17057 +  $clinit_83();
 1.17058 +  this$static.this$0 = this$0;
 1.17059 +  return this$static;
 1.17060 +}
 1.17061 +
 1.17062 +function $run(this$static){
 1.17063 +  var $e0;
 1.17064 +  // try {
 1.17065 +    $pump(this$static.this$0, true);
 1.17066 +  /*}
 1.17067 +   catch ($e0) {
 1.17068 +    $e0 = caught($e0);
 1.17069 +    if (instanceOf($e0, 22)) {
 1.17070 +      this$static.this$0.ending = true;
 1.17071 +    }
 1.17072 +     else 
 1.17073 +      throw $e0;
 1.17074 +  } */
 1.17075 +}
 1.17076 +
 1.17077 +function getClass_46(){
 1.17078 +  return Lnu_validator_htmlparser_gwt_HtmlParser$1_2_classLit;
 1.17079 +}
 1.17080 +
 1.17081 +function HtmlParser$1(){
 1.17082 +}
 1.17083 +
 1.17084 +_ = HtmlParser$1.prototype = new Timer();
 1.17085 +_.getClass$ = getClass_46;
 1.17086 +_.typeId$ = 35;
 1.17087 +_.this$0 = null;
 1.17088 +function installDocWrite(doc, parser){
 1.17089 +  doc.write = function(){
 1.17090 +    if (arguments.length == 0) {
 1.17091 +      return;
 1.17092 +    }
 1.17093 +    var text = arguments[0];
 1.17094 +    for (var i = 1; i < arguments.length; i++) {
 1.17095 +      text += arguments[i];
 1.17096 +    }
 1.17097 +    parser.documentWrite(text);
 1.17098 +  }
 1.17099 +  ;
 1.17100 +  doc.writeln = function(){
 1.17101 +    if (arguments.length == 0) {
 1.17102 +      parser.documentWrite('\n');
 1.17103 +      return;
 1.17104 +    }
 1.17105 +    var text = arguments[0];
 1.17106 +    for (var i = 1; i < arguments.length; i++) {
 1.17107 +      text += arguments[i];
 1.17108 +    }
 1.17109 +    text += '\n';
 1.17110 +    parser.documentWrite(text);
 1.17111 +  }
 1.17112 +  ;
 1.17113 +}
 1.17114 +
 1.17115 +function parseHtmlDocument(source, document_0, useSetTimeouts, readyCallback, errorHandler){
 1.17116 +  var parser;
 1.17117 +  if (!readyCallback) {
 1.17118 +    readyCallback = createFunction();
 1.17119 +  }
 1.17120 +  zapChildren(document_0);
 1.17121 +  parser = $HtmlParser(new HtmlParser(), document_0);
 1.17122 +  installDocWrite(document_0, parser);
 1.17123 +  $parse(parser, source, useSetTimeouts, $ParseEndListener(new ParseEndListener(), readyCallback));
 1.17124 +}
 1.17125 +
 1.17126 +function zapChildren(node){
 1.17127 +  while (node.hasChildNodes()) {
 1.17128 +    node.removeChild(node.lastChild);
 1.17129 +  }
 1.17130 +}
 1.17131 +
 1.17132 +function $ParseEndListener(this$static, callback){
 1.17133 +  this$static.callback = callback;
 1.17134 +  return this$static;
 1.17135 +}
 1.17136 +
 1.17137 +function getClass_48(){
 1.17138 +  return Lnu_validator_htmlparser_gwt_ParseEndListener_2_classLit;
 1.17139 +}
 1.17140 +
 1.17141 +function ParseEndListener(){
 1.17142 +}
 1.17143 +
 1.17144 +_ = ParseEndListener.prototype = new Object_0();
 1.17145 +_.getClass$ = getClass_48;
 1.17146 +_.typeId$ = 0;
 1.17147 +_.callback = null;
 1.17148 +function $clinit_87(){
 1.17149 +  var arr_32;
 1.17150 +  $clinit_87 = nullMethod;
 1.17151 +  ALL_NO_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', '', '', '']);
 1.17152 +  XMLNS_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', 'http://www.w3.org/2000/xmlns/', 'http://www.w3.org/2000/xmlns/', '']);
 1.17153 +  XML_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', 'http://www.w3.org/XML/1998/namespace', 'http://www.w3.org/XML/1998/namespace', '']);
 1.17154 +  XLINK_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', 'http://www.w3.org/1999/xlink', 'http://www.w3.org/1999/xlink', '']);
 1.17155 +  LANG_NS = initValues(_3Ljava_lang_String_2_classLit, 48, 1, ['', '', '', 'http://www.w3.org/XML/1998/namespace']);
 1.17156 +  ALL_NO_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, null, null, null]);
 1.17157 +  XMLNS_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, 'xmlns', 'xmlns', null]);
 1.17158 +  XLINK_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, 'xlink', 'xlink', null]);
 1.17159 +  XML_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, 'xml', 'xml', null]);
 1.17160 +  LANG_PREFIX = initValues(_3Ljava_lang_String_2_classLit, 48, 1, [null, null, null, 'xml']);
 1.17161 +  ALL_NCNAME = initValues(_3Z_classLit, 0, -1, [true, true, true, true]);
 1.17162 +  ALL_NO_NCNAME = initValues(_3Z_classLit, 0, -1, [false, false, false, false]);
 1.17163 +  D = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('d'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17164 +  K = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17165 +  R = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('r'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17166 +  X = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('x'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17167 +  Y = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('y'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17168 +  Z = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('z'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17169 +  BY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('by'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17170 +  CX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cx'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17171 +  CY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cy'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17172 +  DX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dx'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17173 +  DY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dy'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17174 +  G2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('g2'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17175 +  G1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('g1'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17176 +  FX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fx'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17177 +  FY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fy'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17178 +  K4 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k4'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17179 +  K2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k2'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17180 +  K3 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k3'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17181 +  K1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('k1'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17182 +  ID = $AttributeName_0(new AttributeName(), ALL_NO_NS, SAME_LOCAL('id'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17183 +  IN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('in'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17184 +  U2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('u2'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17185 +  U1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('u1'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17186 +  RT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rt'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17187 +  RX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rx'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17188 +  RY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ry'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17189 +  TO = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('to'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17190 +  Y2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('y2'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17191 +  Y1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('y1'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17192 +  X1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('x1'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17193 +  X2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('x2'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17194 +  ALT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alt'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17195 +  DIR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dir'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17196 +  DUR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dur'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17197 +  END = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('end'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17198 +  FOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('for'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17199 +  IN2 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('in2'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17200 +  MAX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('max'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17201 +  MIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('min'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17202 +  LOW = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('low'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17203 +  REL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rel'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17204 +  REV = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rev'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17205 +  SRC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('src'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17206 +  AXIS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('axis'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17207 +  ABBR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('abbr'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17208 +  BBOX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('bbox'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17209 +  CITE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cite'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17210 +  CODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('code'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17211 +  BIAS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('bias'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17212 +  COLS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cols'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17213 +  CLIP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('clip'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17214 +  CHAR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('char'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17215 +  BASE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('base'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17216 +  EDGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('edge'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17217 +  DATA = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('data'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17218 +  FILL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fill'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17219 +  FROM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('from'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17220 +  FORM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('form'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17221 +  FACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('face'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17222 +  HIGH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('high'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17223 +  HREF = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('href'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17224 +  OPEN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('open'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17225 +  ICON = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('icon'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17226 +  NAME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('name'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17227 +  MODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mode'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17228 +  MASK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mask'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17229 +  LINK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('link'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17230 +  LANG = $AttributeName(new AttributeName(), LANG_NS, SAME_LOCAL('lang'), LANG_PREFIX, ALL_NCNAME, false);
 1.17231 +  LIST = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('list'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17232 +  TYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('type'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17233 +  WHEN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('when'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17234 +  WRAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('wrap'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17235 +  TEXT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('text'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17236 +  PATH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('path'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17237 +  PING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ping'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17238 +  REFX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('refx', 'refX'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17239 +  REFY = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('refy', 'refY'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17240 +  SIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('size'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17241 +  SEED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('seed'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17242 +  ROWS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rows'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17243 +  SPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('span'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17244 +  STEP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('step'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17245 +  ROLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('role'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17246 +  XREF = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('xref'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17247 +  ASYNC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('async'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17248 +  ALINK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alink'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17249 +  ALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('align'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17250 +  CLOSE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('close'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17251 +  COLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17252 +  CLASS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('class'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17253 +  CLEAR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('clear'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17254 +  BEGIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('begin'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17255 +  DEPTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('depth'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17256 +  DEFER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('defer'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17257 +  FENCE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fence'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17258 +  FRAME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('frame'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17259 +  ISMAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ismap'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17260 +  ONEND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onend'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17261 +  INDEX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('index'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17262 +  ORDER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('order'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17263 +  OTHER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('other'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17264 +  ONCUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncut'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17265 +  NARGS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('nargs'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17266 +  MEDIA = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('media'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17267 +  LABEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('label'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17268 +  LOCAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('local'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17269 +  WIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('width'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17270 +  TITLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('title'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17271 +  VLINK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vlink'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17272 +  VALUE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('value'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17273 +  SLOPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('slope'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17274 +  SHAPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('shape'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17275 +  SCOPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scope'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17276 +  SCALE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scale'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17277 +  SPEED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('speed'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17278 +  STYLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('style'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17279 +  RULES = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rules'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17280 +  STEMH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stemh'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17281 +  STEMV = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stemv'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17282 +  START = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('start'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17283 +  XMLNS = $AttributeName(new AttributeName(), XMLNS_NS, SAME_LOCAL('xmlns'), ALL_NO_PREFIX, initValues(_3Z_classLit, 0, -1, [false, false, false, false]), true);
 1.17284 +  ACCEPT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accept'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17285 +  ACCENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accent'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17286 +  ASCENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ascent'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17287 +  ACTIVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('active'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17288 +  ALTIMG = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('altimg'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17289 +  ACTION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('action'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17290 +  BORDER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('border'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17291 +  CURSOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cursor'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17292 +  COORDS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('coords'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17293 +  FILTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('filter'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17294 +  FORMAT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('format'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17295 +  HIDDEN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hidden'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17296 +  HSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17297 +  HEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('height'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17298 +  ONMOVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmove'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17299 +  ONLOAD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onload'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17300 +  ONDRAG = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondrag'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17301 +  ORIGIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('origin'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17302 +  ONZOOM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onzoom'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17303 +  ONHELP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onhelp'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17304 +  ONSTOP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onstop'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17305 +  ONDROP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondrop'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17306 +  ONBLUR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onblur'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17307 +  OBJECT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('object'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17308 +  OFFSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('offset'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17309 +  ORIENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('orient'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17310 +  ONCOPY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncopy'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17311 +  NOWRAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('nowrap'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17312 +  NOHREF = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('nohref'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17313 +  MACROS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('macros'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17314 +  METHOD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('method'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17315 +  LOWSRC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('lowsrc'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17316 +  LSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('lspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17317 +  LQUOTE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('lquote'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17318 +  USEMAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('usemap'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17319 +  WIDTHS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('widths'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17320 +  TARGET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('target'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17321 +  VALUES = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('values'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17322 +  VALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('valign'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17323 +  VSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17324 +  POSTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('poster'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17325 +  POINTS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('points'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17326 +  PROMPT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('prompt'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17327 +  SCOPED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scoped'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17328 +  STRING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('string'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17329 +  SCHEME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scheme'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17330 +  STROKE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17331 +  RADIUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('radius'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17332 +  RESULT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('result'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17333 +  REPEAT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17334 +  RSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17335 +  ROTATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rotate'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17336 +  RQUOTE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rquote'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17337 +  ALTTEXT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alttext'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17338 +  ARCHIVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('archive'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17339 +  AZIMUTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('azimuth'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17340 +  CLOSURE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('closure'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17341 +  CHECKED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('checked'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17342 +  CLASSID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('classid'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17343 +  CHAROFF = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('charoff'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17344 +  BGCOLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('bgcolor'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17345 +  COLSPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('colspan'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17346 +  CHARSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('charset'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17347 +  COMPACT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('compact'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17348 +  CONTENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('content'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17349 +  ENCTYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('enctype'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17350 +  DATASRC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('datasrc'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17351 +  DATAFLD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('datafld'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17352 +  DECLARE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('declare'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17353 +  DISPLAY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('display'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17354 +  DIVISOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('divisor'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17355 +  DEFAULT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('default'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17356 +  DESCENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('descent'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17357 +  KERNING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('kerning'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17358 +  HANGING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hanging'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17359 +  HEADERS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('headers'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17360 +  ONPASTE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onpaste'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17361 +  ONCLICK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onclick'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17362 +  OPTIMUM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('optimum'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17363 +  ONBEGIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbegin'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17364 +  ONKEYUP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onkeyup'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17365 +  ONFOCUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfocus'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17366 +  ONERROR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onerror'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17367 +  ONINPUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oninput'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17368 +  ONABORT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onabort'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17369 +  ONSTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onstart'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17370 +  ONRESET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onreset'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17371 +  OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17372 +  NOSHADE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('noshade'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17373 +  MINSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('minsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17374 +  MAXSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('maxsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17375 +  LOOPEND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('loopend'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17376 +  LARGEOP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('largeop'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17377 +  UNICODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('unicode'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17378 +  TARGETX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('targetx', 'targetX'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17379 +  TARGETY = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('targety', 'targetY'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17380 +  VIEWBOX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('viewbox', 'viewBox'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17381 +  VERSION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('version'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17382 +  PATTERN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('pattern'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17383 +  PROFILE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('profile'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17384 +  SPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('spacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17385 +  RESTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('restart'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17386 +  ROWSPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rowspan'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17387 +  SANDBOX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('sandbox'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17388 +  SUMMARY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('summary'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17389 +  STANDBY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('standby'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17390 +  REPLACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('replace'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17391 +  AUTOPLAY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('autoplay'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17392 +  ADDITIVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('additive'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17393 +  CALCMODE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('calcmode', 'calcMode'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17394 +  CODETYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('codetype'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17395 +  CODEBASE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('codebase'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17396 +  CONTROLS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('controls'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17397 +  BEVELLED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('bevelled'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17398 +  BASELINE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('baseline'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17399 +  EXPONENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('exponent'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17400 +  EDGEMODE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('edgemode', 'edgeMode'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17401 +  ENCODING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('encoding'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17402 +  GLYPHREF = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('glyphref', 'glyphRef'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17403 +  DATETIME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('datetime'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17404 +  DISABLED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('disabled'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17405 +  FONTSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fontsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17406 +  KEYTIMES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('keytimes', 'keyTimes'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17407 +  PANOSE_1 = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('panose-1'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17408 +  HREFLANG = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hreflang'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17409 +  ONRESIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onresize'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17410 +  ONCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onchange'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17411 +  ONBOUNCE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbounce'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17412 +  ONUNLOAD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onunload'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17413 +  ONFINISH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfinish'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17414 +  ONSCROLL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onscroll'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17415 +  OPERATOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('operator'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17416 +  OVERFLOW = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('overflow'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17417 +  ONSUBMIT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onsubmit'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17418 +  ONREPEAT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrepeat'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17419 +  ONSELECT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onselect'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17420 +  NOTATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('notation'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17421 +  NORESIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('noresize'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17422 +  MANIFEST = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('manifest'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17423 +  MATHSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17424 +  MULTIPLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('multiple'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17425 +  LONGDESC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('longdesc'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17426 +  LANGUAGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('language'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17427 +  TEMPLATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('template'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17428 +  TABINDEX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('tabindex'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17429 +  READONLY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('readonly'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17430 +  SELECTED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('selected'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17431 +  ROWLINES = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rowlines'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17432 +  SEAMLESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('seamless'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17433 +  ROWALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rowalign'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17434 +  STRETCHY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stretchy'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17435 +  REQUIRED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('required'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17436 +  XML_BASE = $AttributeName(new AttributeName(), XML_NS, COLONIFIED_LOCAL('xml:base', 'base'), XML_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
 1.17437 +  XML_LANG = $AttributeName(new AttributeName(), XML_NS, COLONIFIED_LOCAL('xml:lang', 'lang'), XML_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
 1.17438 +  X_HEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('x-height'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17439 +  ARIA_OWNS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-owns'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17440 +  AUTOFOCUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('autofocus'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17441 +  ARIA_SORT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-sort'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17442 +  ACCESSKEY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accesskey'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17443 +  ARIA_BUSY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-busy'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17444 +  ARIA_GRAB = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-grab'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17445 +  AMPLITUDE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('amplitude'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17446 +  ARIA_LIVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-live'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17447 +  CLIP_RULE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('clip-rule'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17448 +  CLIP_PATH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('clip-path'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17449 +  EQUALROWS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('equalrows'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17450 +  ELEVATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('elevation'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17451 +  DIRECTION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('direction'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17452 +  DRAGGABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('draggable'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17453 +  FILTERRES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('filterres', 'filterRes'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17454 +  FILL_RULE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fill-rule'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17455 +  FONTSTYLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fontstyle'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17456 +  FONT_SIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-size'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17457 +  KEYPOINTS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('keypoints', 'keyPoints'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17458 +  HIDEFOCUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('hidefocus'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17459 +  ONMESSAGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmessage'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17460 +  INTERCEPT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('intercept'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17461 +  ONDRAGEND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragend'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17462 +  ONMOVEEND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmoveend'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17463 +  ONINVALID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oninvalid'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17464 +  ONKEYDOWN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onkeydown'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17465 +  ONFOCUSIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfocusin'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17466 +  ONMOUSEUP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseup'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17467 +  INPUTMODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('inputmode'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17468 +  ONROWEXIT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrowexit'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17469 +  MATHCOLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathcolor'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17470 +  MASKUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('maskunits', 'maskUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17471 +  MAXLENGTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('maxlength'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17472 +  LINEBREAK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('linebreak'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17473 +  LOOPSTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('loopstart'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17474 +  TRANSFORM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('transform'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17475 +  V_HANGING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('v-hanging'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17476 +  VALUETYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('valuetype'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17477 +  POINTSATZ = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('pointsatz', 'pointsAtZ'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17478 +  POINTSATX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('pointsatx', 'pointsAtX'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17479 +  POINTSATY = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('pointsaty', 'pointsAtY'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17480 +  PLAYCOUNT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('playcount'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17481 +  SYMMETRIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('symmetric'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17482 +  SCROLLING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scrolling'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17483 +  REPEATDUR = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('repeatdur', 'repeatDur'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17484 +  SELECTION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('selection'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17485 +  SEPARATOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('separator'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17486 +  XML_SPACE = $AttributeName(new AttributeName(), XML_NS, COLONIFIED_LOCAL('xml:space', 'space'), XML_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
 1.17487 +  AUTOSUBMIT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('autosubmit'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17488 +  ALPHABETIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alphabetic'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17489 +  ACTIONTYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('actiontype'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17490 +  ACCUMULATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accumulate'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17491 +  ARIA_LEVEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-level'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17492 +  COLUMNSPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnspan'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17493 +  CAP_HEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cap-height'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17494 +  BACKGROUND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('background'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17495 +  GLYPH_NAME = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('glyph-name'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17496 +  GROUPALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('groupalign'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17497 +  FONTFAMILY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fontfamily'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17498 +  FONTWEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fontweight'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17499 +  FONT_STYLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-style'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17500 +  KEYSPLINES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('keysplines', 'keySplines'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17501 +  HTTP_EQUIV = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('http-equiv'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17502 +  ONACTIVATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onactivate'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17503 +  OCCURRENCE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('occurrence'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17504 +  IRRELEVANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('irrelevant'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17505 +  ONDBLCLICK = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondblclick'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17506 +  ONDRAGDROP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragdrop'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17507 +  ONKEYPRESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onkeypress'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17508 +  ONROWENTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrowenter'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17509 +  ONDRAGOVER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragover'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17510 +  ONFOCUSOUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfocusout'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17511 +  ONMOUSEOUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseout'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17512 +  NUMOCTAVES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('numoctaves', 'numOctaves'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17513 +  MARKER_MID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marker-mid'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17514 +  MARKER_END = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marker-end'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17515 +  TEXTLENGTH = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('textlength', 'textLength'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17516 +  VISIBILITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('visibility'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17517 +  VIEWTARGET = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('viewtarget', 'viewTarget'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17518 +  VERT_ADV_Y = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vert-adv-y'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17519 +  PATHLENGTH = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('pathlength', 'pathLength'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17520 +  REPEAT_MAX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat-max'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17521 +  RADIOGROUP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('radiogroup'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17522 +  STOP_COLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stop-color'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17523 +  SEPARATORS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('separators'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17524 +  REPEAT_MIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat-min'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17525 +  ROWSPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rowspacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17526 +  ZOOMANDPAN = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('zoomandpan', 'zoomAndPan'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17527 +  XLINK_TYPE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:type', 'type'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
 1.17528 +  XLINK_ROLE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:role', 'role'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
 1.17529 +  XLINK_HREF = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:href', 'href'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
 1.17530 +  XLINK_SHOW = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:show', 'show'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
 1.17531 +  ACCENTUNDER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accentunder'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17532 +  ARIA_SECRET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-secret'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17533 +  ARIA_ATOMIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-atomic'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17534 +  ARIA_HIDDEN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-hidden'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17535 +  ARIA_FLOWTO = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-flowto'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17536 +  ARABIC_FORM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('arabic-form'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17537 +  CELLPADDING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cellpadding'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17538 +  CELLSPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('cellspacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17539 +  COLUMNWIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnwidth'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17540 +  COLUMNALIGN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnalign'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17541 +  COLUMNLINES = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnlines'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17542 +  CONTEXTMENU = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('contextmenu'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17543 +  BASEPROFILE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('baseprofile', 'baseProfile'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17544 +  FONT_FAMILY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-family'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17545 +  FRAMEBORDER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('frameborder'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17546 +  FILTERUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('filterunits', 'filterUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17547 +  FLOOD_COLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('flood-color'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17548 +  FONT_WEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-weight'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17549 +  HORIZ_ADV_X = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('horiz-adv-x'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17550 +  ONDRAGLEAVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragleave'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17551 +  ONMOUSEMOVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmousemove'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17552 +  ORIENTATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('orientation'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17553 +  ONMOUSEDOWN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmousedown'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17554 +  ONMOUSEOVER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseover'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17555 +  ONDRAGENTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragenter'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17556 +  IDEOGRAPHIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ideographic'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17557 +  ONBEFORECUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforecut'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17558 +  ONFORMINPUT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onforminput'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17559 +  ONDRAGSTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondragstart'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17560 +  ONMOVESTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmovestart'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17561 +  MARKERUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('markerunits', 'markerUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17562 +  MATHVARIANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathvariant'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17563 +  MARGINWIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marginwidth'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17564 +  MARKERWIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('markerwidth', 'markerWidth'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17565 +  TEXT_ANCHOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('text-anchor'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17566 +  TABLEVALUES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('tablevalues', 'tableValues'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17567 +  SCRIPTLEVEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scriptlevel'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17568 +  REPEATCOUNT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('repeatcount', 'repeatCount'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17569 +  STITCHTILES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('stitchtiles', 'stitchTiles'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17570 +  STARTOFFSET = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('startoffset', 'startOffset'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17571 +  SCROLLDELAY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scrolldelay'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17572 +  XMLNS_XLINK = $AttributeName(new AttributeName(), XMLNS_NS, COLONIFIED_LOCAL('xmlns:xlink', 'xlink'), XMLNS_PREFIX, initValues(_3Z_classLit, 0, -1, [false, false, false, false]), true);
 1.17573 +  XLINK_TITLE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:title', 'title'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
 1.17574 +  ARIA_INVALID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-invalid'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17575 +  ARIA_PRESSED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-pressed'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17576 +  ARIA_CHECKED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-checked'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17577 +  AUTOCOMPLETE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('autocomplete'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17578 +  ARIA_SETSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-setsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17579 +  ARIA_CHANNEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-channel'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17580 +  EQUALCOLUMNS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('equalcolumns'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17581 +  DISPLAYSTYLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('displaystyle'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17582 +  DATAFORMATAS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dataformatas'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17583 +  FILL_OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('fill-opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17584 +  FONT_VARIANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-variant'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17585 +  FONT_STRETCH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-stretch'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17586 +  FRAMESPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('framespacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17587 +  KERNELMATRIX = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('kernelmatrix', 'kernelMatrix'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17588 +  ONDEACTIVATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondeactivate'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17589 +  ONROWSDELETE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrowsdelete'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17590 +  ONMOUSELEAVE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseleave'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17591 +  ONFORMCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onformchange'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17592 +  ONCELLCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncellchange'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17593 +  ONMOUSEWHEEL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmousewheel'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17594 +  ONMOUSEENTER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onmouseenter'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17595 +  ONAFTERPRINT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onafterprint'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17596 +  ONBEFORECOPY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforecopy'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17597 +  MARGINHEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marginheight'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17598 +  MARKERHEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('markerheight', 'markerHeight'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17599 +  MARKER_START = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('marker-start'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17600 +  MATHEMATICAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathematical'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17601 +  LENGTHADJUST = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('lengthadjust', 'lengthAdjust'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17602 +  UNSELECTABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('unselectable'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17603 +  UNICODE_BIDI = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('unicode-bidi'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17604 +  UNITS_PER_EM = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('units-per-em'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17605 +  WORD_SPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('word-spacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17606 +  WRITING_MODE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('writing-mode'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17607 +  V_ALPHABETIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('v-alphabetic'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17608 +  PATTERNUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('patternunits', 'patternUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17609 +  SPREADMETHOD = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('spreadmethod', 'spreadMethod'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17610 +  SURFACESCALE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('surfacescale', 'surfaceScale'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17611 +  STROKE_WIDTH = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-width'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17612 +  REPEAT_START = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat-start'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17613 +  STDDEVIATION = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('stddeviation', 'stdDeviation'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17614 +  STOP_OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stop-opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17615 +  ARIA_CONTROLS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-controls'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17616 +  ARIA_HASPOPUP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-haspopup'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17617 +  ACCENT_HEIGHT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accent-height'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17618 +  ARIA_VALUENOW = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-valuenow'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17619 +  ARIA_RELEVANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-relevant'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17620 +  ARIA_POSINSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-posinset'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17621 +  ARIA_VALUEMAX = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-valuemax'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17622 +  ARIA_READONLY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-readonly'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17623 +  ARIA_SELECTED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-selected'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17624 +  ARIA_REQUIRED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-required'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17625 +  ARIA_EXPANDED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-expanded'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17626 +  ARIA_DISABLED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-disabled'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17627 +  ATTRIBUTETYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('attributetype', 'attributeType'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17628 +  ATTRIBUTENAME = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('attributename', 'attributeName'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17629 +  ARIA_DATATYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-datatype'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17630 +  ARIA_VALUEMIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-valuemin'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17631 +  BASEFREQUENCY = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('basefrequency', 'baseFrequency'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17632 +  COLUMNSPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('columnspacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17633 +  COLOR_PROFILE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color-profile'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17634 +  CLIPPATHUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('clippathunits', 'clipPathUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17635 +  DEFINITIONURL = $AttributeName(new AttributeName(), ALL_NO_NS, (arr_32 = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0) , arr_32[0] = 'definitionurl' , arr_32[1] = 'definitionURL' , arr_32[2] = 'definitionurl' , arr_32[3] = 'definitionurl' , arr_32), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17636 +  GRADIENTUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('gradientunits', 'gradientUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17637 +  FLOOD_OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('flood-opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17638 +  ONAFTERUPDATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onafterupdate'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17639 +  ONERRORUPDATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onerrorupdate'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17640 +  ONBEFOREPASTE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforepaste'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17641 +  ONLOSECAPTURE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onlosecapture'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17642 +  ONCONTEXTMENU = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncontextmenu'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17643 +  ONSELECTSTART = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onselectstart'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17644 +  ONBEFOREPRINT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeprint'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17645 +  MOVABLELIMITS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('movablelimits'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17646 +  LINETHICKNESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('linethickness'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17647 +  UNICODE_RANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('unicode-range'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17648 +  THINMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('thinmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17649 +  VERT_ORIGIN_X = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vert-origin-x'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17650 +  VERT_ORIGIN_Y = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('vert-origin-y'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17651 +  V_IDEOGRAPHIC = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('v-ideographic'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17652 +  PRESERVEALPHA = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('preservealpha', 'preserveAlpha'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17653 +  SCRIPTMINSIZE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scriptminsize'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17654 +  SPECIFICATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('specification'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17655 +  XLINK_ACTUATE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:actuate', 'actuate'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
 1.17656 +  XLINK_ARCROLE = $AttributeName(new AttributeName(), XLINK_NS, COLONIFIED_LOCAL('xlink:arcrole', 'arcrole'), XLINK_PREFIX, initValues(_3Z_classLit, 0, -1, [false, true, true, false]), false);
 1.17657 +  ACCEPT_CHARSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('accept-charset'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17658 +  ALIGNMENTSCOPE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alignmentscope'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17659 +  ARIA_MULTILINE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-multiline'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17660 +  BASELINE_SHIFT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('baseline-shift'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17661 +  HORIZ_ORIGIN_X = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('horiz-origin-x'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17662 +  HORIZ_ORIGIN_Y = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('horiz-origin-y'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17663 +  ONBEFOREUPDATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeupdate'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17664 +  ONFILTERCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onfilterchange'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17665 +  ONROWSINSERTED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onrowsinserted'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17666 +  ONBEFOREUNLOAD = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeunload'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17667 +  MATHBACKGROUND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mathbackground'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17668 +  LETTER_SPACING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('letter-spacing'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17669 +  LIGHTING_COLOR = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('lighting-color'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17670 +  THICKMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('thickmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17671 +  TEXT_RENDERING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('text-rendering'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17672 +  V_MATHEMATICAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('v-mathematical'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17673 +  POINTER_EVENTS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('pointer-events'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17674 +  PRIMITIVEUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('primitiveunits', 'primitiveUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17675 +  SYSTEMLANGUAGE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('systemlanguage', 'systemLanguage'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17676 +  STROKE_LINECAP = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-linecap'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17677 +  SUBSCRIPTSHIFT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('subscriptshift'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17678 +  STROKE_OPACITY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-opacity'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17679 +  ARIA_DROPEFFECT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-dropeffect'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17680 +  ARIA_LABELLEDBY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-labelledby'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17681 +  ARIA_TEMPLATEID = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-templateid'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17682 +  COLOR_RENDERING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color-rendering'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17683 +  CONTENTEDITABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('contenteditable'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17684 +  DIFFUSECONSTANT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('diffuseconstant', 'diffuseConstant'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17685 +  ONDATAAVAILABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondataavailable'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17686 +  ONCONTROLSELECT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('oncontrolselect'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17687 +  IMAGE_RENDERING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('image-rendering'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17688 +  MEDIUMMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('mediummathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17689 +  TEXT_DECORATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('text-decoration'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17690 +  SHAPE_RENDERING = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('shape-rendering'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17691 +  STROKE_LINEJOIN = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-linejoin'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17692 +  REPEAT_TEMPLATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('repeat-template'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17693 +  ARIA_DESCRIBEDBY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-describedby'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17694 +  CONTENTSTYLETYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('contentstyletype', 'contentStyleType'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17695 +  FONT_SIZE_ADJUST = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('font-size-adjust'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17696 +  KERNELUNITLENGTH = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('kernelunitlength', 'kernelUnitLength'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17697 +  ONBEFOREACTIVATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeactivate'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17698 +  ONPROPERTYCHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onpropertychange'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17699 +  ONDATASETCHANGED = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondatasetchanged'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17700 +  MASKCONTENTUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('maskcontentunits', 'maskContentUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17701 +  PATTERNTRANSFORM = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('patterntransform', 'patternTransform'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17702 +  REQUIREDFEATURES = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('requiredfeatures', 'requiredFeatures'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17703 +  RENDERING_INTENT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('rendering-intent'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17704 +  SPECULAREXPONENT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('specularexponent', 'specularExponent'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17705 +  SPECULARCONSTANT = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('specularconstant', 'specularConstant'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17706 +  SUPERSCRIPTSHIFT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('superscriptshift'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17707 +  STROKE_DASHARRAY = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-dasharray'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17708 +  XCHANNELSELECTOR = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('xchannelselector', 'xChannelSelector'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17709 +  YCHANNELSELECTOR = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('ychannelselector', 'yChannelSelector'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17710 +  ARIA_AUTOCOMPLETE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-autocomplete'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17711 +  CONTENTSCRIPTTYPE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('contentscripttype', 'contentScriptType'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17712 +  ENABLE_BACKGROUND = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('enable-background'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17713 +  DOMINANT_BASELINE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('dominant-baseline'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17714 +  GRADIENTTRANSFORM = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('gradienttransform', 'gradientTransform'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17715 +  ONBEFORDEACTIVATE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbefordeactivate'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17716 +  ONDATASETCOMPLETE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('ondatasetcomplete'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17717 +  OVERLINE_POSITION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('overline-position'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17718 +  ONBEFOREEDITFOCUS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onbeforeeditfocus'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17719 +  LIMITINGCONEANGLE = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('limitingconeangle', 'limitingConeAngle'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17720 +  VERYTHINMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('verythinmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17721 +  STROKE_DASHOFFSET = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-dashoffset'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17722 +  STROKE_MITERLIMIT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('stroke-miterlimit'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17723 +  ALIGNMENT_BASELINE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('alignment-baseline'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17724 +  ONREADYSTATECHANGE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('onreadystatechange'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17725 +  OVERLINE_THICKNESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('overline-thickness'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17726 +  UNDERLINE_POSITION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('underline-position'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17727 +  VERYTHICKMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('verythickmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17728 +  REQUIREDEXTENSIONS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('requiredextensions', 'requiredExtensions'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17729 +  COLOR_INTERPOLATION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color-interpolation'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17730 +  UNDERLINE_THICKNESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('underline-thickness'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17731 +  PRESERVEASPECTRATIO = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('preserveaspectratio', 'preserveAspectRatio'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17732 +  PATTERNCONTENTUNITS = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('patterncontentunits', 'patternContentUnits'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17733 +  ARIA_MULTISELECTABLE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-multiselectable'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17734 +  SCRIPTSIZEMULTIPLIER = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('scriptsizemultiplier'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17735 +  ARIA_ACTIVEDESCENDANT = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('aria-activedescendant'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17736 +  VERYVERYTHINMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('veryverythinmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17737 +  VERYVERYTHICKMATHSPACE = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('veryverythickmathspace'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17738 +  STRIKETHROUGH_POSITION = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('strikethrough-position'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17739 +  STRIKETHROUGH_THICKNESS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('strikethrough-thickness'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17740 +  EXTERNALRESOURCESREQUIRED = $AttributeName(new AttributeName(), ALL_NO_NS, SVG_DIFFERENT('externalresourcesrequired', 'externalResourcesRequired'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17741 +  GLYPH_ORIENTATION_VERTICAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('glyph-orientation-vertical'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17742 +  COLOR_INTERPOLATION_FILTERS = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('color-interpolation-filters'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17743 +  GLYPH_ORIENTATION_HORIZONTAL = $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL('glyph-orientation-horizontal'), ALL_NO_PREFIX, ALL_NCNAME, false);
 1.17744 +  ATTRIBUTE_NAMES = initValues(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, [D, K, R, X, Y, Z, BY, CX, CY, DX, DY, G2, G1, FX, FY, K4, K2, K3, K1, ID, IN, U2, U1, RT, RX, RY, TO, Y2, Y1, X1, X2, ALT, DIR, DUR, END, FOR, IN2, MAX, MIN, LOW, REL, REV, SRC, AXIS, ABBR, BBOX, CITE, CODE, BIAS, COLS, CLIP, CHAR, BASE, EDGE, DATA, FILL, FROM, FORM, FACE, HIGH, HREF, OPEN, ICON, NAME, MODE, MASK, LINK, LANG, LIST, TYPE, WHEN, WRAP, TEXT, PATH, PING, REFX, REFY, SIZE, SEED, ROWS, SPAN, STEP, ROLE, XREF, ASYNC, ALINK, ALIGN, CLOSE, COLOR, CLASS, CLEAR, BEGIN, DEPTH, DEFER, FENCE, FRAME, ISMAP, ONEND, INDEX, ORDER, OTHER, ONCUT, NARGS, MEDIA, LABEL, LOCAL, WIDTH, TITLE, VLINK, VALUE, SLOPE, SHAPE, SCOPE, SCALE, SPEED, STYLE, RULES, STEMH, STEMV, START, XMLNS, ACCEPT, ACCENT, ASCENT, ACTIVE, ALTIMG, ACTION, BORDER, CURSOR, COORDS, FILTER, FORMAT, HIDDEN, HSPACE, HEIGHT, ONMOVE, ONLOAD, ONDRAG, ORIGIN, ONZOOM, ONHELP, ONSTOP, ONDROP, ONBLUR, OBJECT, OFFSET, ORIENT, ONCOPY, NOWRAP, NOHREF, MACROS, METHOD, LOWSRC, LSPACE, LQUOTE, USEMAP, WIDTHS, TARGET, VALUES, VALIGN, VSPACE, POSTER, POINTS, PROMPT, SCOPED, STRING, SCHEME, STROKE, RADIUS, RESULT, REPEAT, RSPACE, ROTATE, RQUOTE, ALTTEXT, ARCHIVE, AZIMUTH, CLOSURE, CHECKED, CLASSID, CHAROFF, BGCOLOR, COLSPAN, CHARSET, COMPACT, CONTENT, ENCTYPE, DATASRC, DATAFLD, DECLARE, DISPLAY, DIVISOR, DEFAULT, DESCENT, KERNING, HANGING, HEADERS, ONPASTE, ONCLICK, OPTIMUM, ONBEGIN, ONKEYUP, ONFOCUS, ONERROR, ONINPUT, ONABORT, ONSTART, ONRESET, OPACITY, NOSHADE, MINSIZE, MAXSIZE, LOOPEND, LARGEOP, UNICODE, TARGETX, TARGETY, VIEWBOX, VERSION, PATTERN, PROFILE, SPACING, RESTART, ROWSPAN, SANDBOX, SUMMARY, STANDBY, REPLACE, AUTOPLAY, ADDITIVE, CALCMODE, CODETYPE, CODEBASE, CONTROLS, BEVELLED, BASELINE, EXPONENT, EDGEMODE, ENCODING, GLYPHREF, DATETIME, DISABLED, FONTSIZE, KEYTIMES, PANOSE_1, HREFLANG, ONRESIZE, ONCHANGE, ONBOUNCE, ONUNLOAD, ONFINISH, ONSCROLL, OPERATOR, OVERFLOW, ONSUBMIT, ONREPEAT, ONSELECT, NOTATION, NORESIZE, MANIFEST, MATHSIZE, MULTIPLE, LONGDESC, LANGUAGE, TEMPLATE, TABINDEX, READONLY, SELECTED, ROWLINES, SEAMLESS, ROWALIGN, STRETCHY, REQUIRED, XML_BASE, XML_LANG, X_HEIGHT, ARIA_OWNS, AUTOFOCUS, ARIA_SORT, ACCESSKEY, ARIA_BUSY, ARIA_GRAB, AMPLITUDE, ARIA_LIVE, CLIP_RULE, CLIP_PATH, EQUALROWS, ELEVATION, DIRECTION, DRAGGABLE, FILTERRES, FILL_RULE, FONTSTYLE, FONT_SIZE, KEYPOINTS, HIDEFOCUS, ONMESSAGE, INTERCEPT, ONDRAGEND, ONMOVEEND, ONINVALID, ONKEYDOWN, ONFOCUSIN, ONMOUSEUP, INPUTMODE, ONROWEXIT, MATHCOLOR, MASKUNITS, MAXLENGTH, LINEBREAK, LOOPSTART, TRANSFORM, V_HANGING, VALUETYPE, POINTSATZ, POINTSATX, POINTSATY, PLAYCOUNT, SYMMETRIC, SCROLLING, REPEATDUR, SELECTION, SEPARATOR, XML_SPACE, AUTOSUBMIT, ALPHABETIC, ACTIONTYPE, ACCUMULATE, ARIA_LEVEL, COLUMNSPAN, CAP_HEIGHT, BACKGROUND, GLYPH_NAME, GROUPALIGN, FONTFAMILY, FONTWEIGHT, FONT_STYLE, KEYSPLINES, HTTP_EQUIV, ONACTIVATE, OCCURRENCE, IRRELEVANT, ONDBLCLICK, ONDRAGDROP, ONKEYPRESS, ONROWENTER, ONDRAGOVER, ONFOCUSOUT, ONMOUSEOUT, NUMOCTAVES, MARKER_MID, MARKER_END, TEXTLENGTH, VISIBILITY, VIEWTARGET, VERT_ADV_Y, PATHLENGTH, REPEAT_MAX, RADIOGROUP, STOP_COLOR, SEPARATORS, REPEAT_MIN, ROWSPACING, ZOOMANDPAN, XLINK_TYPE, XLINK_ROLE, XLINK_HREF, XLINK_SHOW, ACCENTUNDER, ARIA_SECRET, ARIA_ATOMIC, ARIA_HIDDEN, ARIA_FLOWTO, ARABIC_FORM, CELLPADDING, CELLSPACING, COLUMNWIDTH, COLUMNALIGN, COLUMNLINES, CONTEXTMENU, BASEPROFILE, FONT_FAMILY, FRAMEBORDER, FILTERUNITS, FLOOD_COLOR, FONT_WEIGHT, HORIZ_ADV_X, ONDRAGLEAVE, ONMOUSEMOVE, ORIENTATION, ONMOUSEDOWN, ONMOUSEOVER, ONDRAGENTER, IDEOGRAPHIC, ONBEFORECUT, ONFORMINPUT, ONDRAGSTART, ONMOVESTART, MARKERUNITS, MATHVARIANT, MARGINWIDTH, MARKERWIDTH, TEXT_ANCHOR, TABLEVALUES, SCRIPTLEVEL, REPEATCOUNT, STITCHTILES, STARTOFFSET, SCROLLDELAY, XMLNS_XLINK, XLINK_TITLE, ARIA_INVALID, ARIA_PRESSED, ARIA_CHECKED, AUTOCOMPLETE, ARIA_SETSIZE, ARIA_CHANNEL, EQUALCOLUMNS, DISPLAYSTYLE, DATAFORMATAS, FILL_OPACITY, FONT_VARIANT, FONT_STRETCH, FRAMESPACING, KERNELMATRIX, ONDEACTIVATE, ONROWSDELETE, ONMOUSELEAVE, ONFORMCHANGE, ONCELLCHANGE, ONMOUSEWHEEL, ONMOUSEENTER, ONAFTERPRINT, ONBEFORECOPY, MARGINHEIGHT, MARKERHEIGHT, MARKER_START, MATHEMATICAL, LENGTHADJUST, UNSELECTABLE, UNICODE_BIDI, UNITS_PER_EM, WORD_SPACING, WRITING_MODE, V_ALPHABETIC, PATTERNUNITS, SPREADMETHOD, SURFACESCALE, STROKE_WIDTH, REPEAT_START, STDDEVIATION, STOP_OPACITY, ARIA_CONTROLS, ARIA_HASPOPUP, ACCENT_HEIGHT, ARIA_VALUENOW, ARIA_RELEVANT, ARIA_POSINSET, ARIA_VALUEMAX, ARIA_READONLY, ARIA_SELECTED, ARIA_REQUIRED, ARIA_EXPANDED, ARIA_DISABLED, ATTRIBUTETYPE, ATTRIBUTENAME, ARIA_DATATYPE, ARIA_VALUEMIN, BASEFREQUENCY, COLUMNSPACING, COLOR_PROFILE, CLIPPATHUNITS, DEFINITIONURL, GRADIENTUNITS, FLOOD_OPACITY, ONAFTERUPDATE, ONERRORUPDATE, ONBEFOREPASTE, ONLOSECAPTURE, ONCONTEXTMENU, ONSELECTSTART, ONBEFOREPRINT, MOVABLELIMITS, LINETHICKNESS, UNICODE_RANGE, THINMATHSPACE, VERT_ORIGIN_X, VERT_ORIGIN_Y, V_IDEOGRAPHIC, PRESERVEALPHA, SCRIPTMINSIZE, SPECIFICATION, XLINK_ACTUATE, XLINK_ARCROLE, ACCEPT_CHARSET, ALIGNMENTSCOPE, ARIA_MULTILINE, BASELINE_SHIFT, HORIZ_ORIGIN_X, HORIZ_ORIGIN_Y, ONBEFOREUPDATE, ONFILTERCHANGE, ONROWSINSERTED, ONBEFOREUNLOAD, MATHBACKGROUND, LETTER_SPACING, LIGHTING_COLOR, THICKMATHSPACE, TEXT_RENDERING, V_MATHEMATICAL, POINTER_EVENTS, PRIMITIVEUNITS, SYSTEMLANGUAGE, STROKE_LINECAP, SUBSCRIPTSHIFT, STROKE_OPACITY, ARIA_DROPEFFECT, ARIA_LABELLEDBY, ARIA_TEMPLATEID, COLOR_RENDERING, CONTENTEDITABLE, DIFFUSECONSTANT, ONDATAAVAILABLE, ONCONTROLSELECT, IMAGE_RENDERING, MEDIUMMATHSPACE, TEXT_DECORATION, SHAPE_RENDERING, STROKE_LINEJOIN, REPEAT_TEMPLATE, ARIA_DESCRIBEDBY, CONTENTSTYLETYPE, FONT_SIZE_ADJUST, KERNELUNITLENGTH, ONBEFOREACTIVATE, ONPROPERTYCHANGE, ONDATASETCHANGED, MASKCONTENTUNITS, PATTERNTRANSFORM, REQUIREDFEATURES, RENDERING_INTENT, SPECULAREXPONENT, SPECULARCONSTANT, SUPERSCRIPTSHIFT, STROKE_DASHARRAY, XCHANNELSELECTOR, YCHANNELSELECTOR, ARIA_AUTOCOMPLETE, CONTENTSCRIPTTYPE, ENABLE_BACKGROUND, DOMINANT_BASELINE, GRADIENTTRANSFORM, ONBEFORDEACTIVATE, ONDATASETCOMPLETE, OVERLINE_POSITION, ONBEFOREEDITFOCUS, LIMITINGCONEANGLE, VERYTHINMATHSPACE, STROKE_DASHOFFSET, STROKE_MITERLIMIT, ALIGNMENT_BASELINE, ONREADYSTATECHANGE, OVERLINE_THICKNESS, UNDERLINE_POSITION, VERYTHICKMATHSPACE, REQUIREDEXTENSIONS, COLOR_INTERPOLATION, UNDERLINE_THICKNESS, PRESERVEASPECTRATIO, PATTERNCONTENTUNITS, ARIA_MULTISELECTABLE, SCRIPTSIZEMULTIPLIER, ARIA_ACTIVEDESCENDANT, VERYVERYTHINMATHSPACE, VERYVERYTHICKMATHSPACE, STRIKETHROUGH_POSITION, STRIKETHROUGH_THICKNESS, EXTERNALRESOURCESREQUIRED, GLYPH_ORIENTATION_VERTICAL, COLOR_INTERPOLATION_FILTERS, GLYPH_ORIENTATION_HORIZONTAL]);
 1.17745 +  ATTRIBUTE_HASHES = initValues(_3I_classLit, 0, -1, [1153, 1383, 1601, 1793, 1827, 1857, 68600, 69146, 69177, 70237, 70270, 71572, 71669, 72415, 72444, 74846, 74904, 74943, 75001, 75276, 75590, 84742, 84839, 85575, 85963, 85992, 87204, 88074, 88171, 89130, 89163, 3207892, 3283895, 3284791, 3338752, 3358197, 3369562, 3539124, 3562402, 3574260, 3670335, 3696933, 3721879, 135280021, 135346322, 136317019, 136475749, 136548517, 136652214, 136884919, 136902418, 136942992, 137292068, 139120259, 139785574, 142250603, 142314056, 142331176, 142519584, 144752417, 145106895, 146147200, 146765926, 148805544, 149655723, 149809441, 150018784, 150445028, 150923321, 152528754, 152536216, 152647366, 152962785, 155219321, 155654904, 157317483, 157350248, 157437941, 157447478, 157604838, 157685404, 157894402, 158315188, 166078431, 169409980, 169700259, 169856932, 170007032, 170409695, 170466488, 170513710, 170608367, 173028944, 173896963, 176090625, 176129212, 179390001, 179489057, 179627464, 179840468, 179849042, 180004216, 181779081, 183027151, 183645319, 183698797, 185922012, 185997252, 188312483, 188675799, 190977533, 190992569, 191006194, 191033518, 191038774, 191096249, 191166163, 191194426, 191522106, 191568039, 200104642, 202506661, 202537381, 202602917, 203070590, 203120766, 203389054, 203690071, 203971238, 203986524, 209040857, 209125756, 212055489, 212322418, 212746849, 213002877, 213055164, 213088023, 213259873, 213273386, 213435118, 213437318, 213438231, 213493071, 213532268, 213542834, 213584431, 213659891, 215285828, 215880731, 216112976, 216684637, 217369699, 217565298, 217576549, 218186795, 219743185, 220082234, 221623802, 221986406, 222283890, 223089542, 223138630, 223311265, 224547358, 224587256, 224589550, 224655650, 224785518, 224810917, 224813302, 225429618, 225432950, 225440869, 236107233, 236709921, 236838947, 237117095, 237143271, 237172455, 237209953, 237354143, 237372743, 237668065, 237703073, 237714273, 239743521, 240512803, 240522627, 240560417, 240656513, 241015715, 241062755, 241065383, 243523041, 245865199, 246261793, 246556195, 246774817, 246923491, 246928419, 246981667, 247014847, 247058369, 247112833, 247118177, 247119137, 247128739, 247316903, 249533729, 250235623, 250269543, 251083937, 251402351, 252339047, 253260911, 253293679, 254844367, 255547879, 256077281, 256345377, 258124199, 258354465, 258605063, 258744193, 258845603, 258856961, 258926689, 269869248, 270174334, 270709417, 270778994, 270781796, 271102503, 271478858, 271490090, 272870654, 273335275, 273369140, 273924313, 274108530, 274116736, 276818662, 277476156, 279156579, 279349675, 280108533, 280128712, 280132869, 280162403, 280280292, 280413430, 280506130, 280677397, 280678580, 280686710, 280689066, 282736758, 283110901, 283275116, 283823226, 283890012, 284479340, 284606461, 286700477, 286798916, 291557706, 291665349, 291804100, 292138018, 292166446, 292418738, 292451039, 300298041, 300374839, 300597935, 303073389, 303083839, 303266673, 303354997, 303430688, 303576261, 303724281, 303819694, 304242723, 304382625, 306247792, 307227811, 307468786, 307724489, 309671175, 310252031, 310358241, 310373094, 311015256, 313357609, 313683893, 313701861, 313706996, 313707317, 313710350, 314027746, 314038181, 314091299, 314205627, 314233813, 316741830, 316797986, 317486755, 317794164, 318721061, 320076137, 322657125, 322887778, 323506876, 323572412, 323605180, 323938869, 325060058, 325320188, 325398738, 325541490, 325671619, 333868843, 336806130, 337212108, 337282686, 337285434, 337585223, 338036037, 338298087, 338566051, 340943551, 341190970, 342995704, 343352124, 343912673, 344585053, 346977248, 347218098, 347262163, 347278576, 347438191, 347655959, 347684788, 347726430, 347727772, 347776035, 347776629, 349500753, 350880161, 350887073, 353384123, 355496998, 355906922, 355979793, 356545959, 358637867, 358905016, 359164318, 359247286, 359350571, 359579447, 365560330, 367399355, 367420285, 367510727, 368013212, 370234760, 370353345, 370710317, 371074566, 371122285, 371194213, 371448425, 371448430, 371545055, 371596922, 371758751, 371964792, 372151328, 376550136, 376710172, 376795771, 376826271, 376906556, 380514830, 380774774, 380775037, 381030322, 381136500, 381281631, 381282269, 381285504, 381330595, 381331422, 381335911, 381336484, 383907298, 383917408, 384595009, 384595013, 387799894, 387823201, 392581647, 392584937, 392742684, 392906485, 393003349, 400644707, 400973830, 404428547, 404432113, 404432865, 404469244, 404478897, 404694860, 406887479, 408294949, 408789955, 410022510, 410467324, 410586448, 410945965, 411845275, 414327152, 414327932, 414329781, 414346257, 414346439, 414639928, 414835998, 414894517, 414986533, 417465377, 417465381, 417492216, 418259232, 419310946, 420103495, 420242342, 420380455, 420658662, 420717432, 423183880, 424539259, 425929170, 425972964, 426050649, 426126450, 426142833, 426607922, 437289840, 437347469, 437412335, 437423943, 437455540, 437462252, 437597991, 437617485, 437986305, 437986507, 437986828, 437987072, 438015591, 438034813, 438038966, 438179623, 438347971, 438483573, 438547062, 438895551, 441592676, 442032555, 443548979, 447881379, 447881655, 447881895, 447887844, 448416189, 448445746, 448449012, 450942191, 452816744, 453668677, 454434495, 456610076, 456642844, 456738709, 457544600, 459451897, 459680944, 468058810, 468083581, 470964084, 471470955, 471567278, 472267822, 481177859, 481210627, 481435874, 481455115, 481485378, 481490218, 485105638, 486005878, 486383494, 487988916, 488103783, 490661867, 491574090, 491578272, 493041952, 493441205, 493582844, 493716979, 504577572, 504740359, 505091638, 505592418, 505656212, 509516275, 514998531, 515571132, 515594682, 518712698, 521362273, 526592419, 526807354, 527348842, 538294791, 539214049, 544689535, 545535009, 548544752, 548563346, 548595116, 551679010, 558034099, 560329411, 560356209, 560671018, 560671152, 560692590, 560845442, 569212097, 569474241, 572252718, 572768481, 575326764, 576174758, 576190819, 582099184, 582099438, 582372519, 582558889, 586552164, 591325418, 594231990, 594243961, 605711268, 615672071, 616086845, 621792370, 624879850, 627432831, 640040548, 654392808, 658675477, 659420283, 672891587, 694768102, 705890982, 725543146, 759097578, 761686526, 795383908, 843809551, 878105336, 908643300, 945213471]);
 1.17746 +}
 1.17747 +
 1.17748 +function $AttributeName_0(this$static, uri, local, prefix, ncname, xmlns){
 1.17749 +  $clinit_87();
 1.17750 +  this$static.uri = uri;
 1.17751 +  this$static.local = local;
 1.17752 +  COMPUTE_QNAME(local, prefix);
 1.17753 +  this$static.ncname = ncname;
 1.17754 +  this$static.xmlns = xmlns;
 1.17755 +  return this$static;
 1.17756 +}
 1.17757 +
 1.17758 +function $AttributeName(this$static, uri, local, prefix, ncname, xmlns){
 1.17759 +  $clinit_87();
 1.17760 +  this$static.uri = uri;
 1.17761 +  this$static.local = local;
 1.17762 +  COMPUTE_QNAME(local, prefix);
 1.17763 +  this$static.ncname = ncname;
 1.17764 +  this$static.xmlns = xmlns;
 1.17765 +  return this$static;
 1.17766 +}
 1.17767 +
 1.17768 +function $isBoolean(this$static){
 1.17769 +  return this$static == ACTIVE || this$static == ASYNC || this$static == AUTOFOCUS || this$static == AUTOSUBMIT || this$static == CHECKED || this$static == COMPACT || this$static == DECLARE || this$static == DEFAULT || this$static == DEFER || this$static == DISABLED || this$static == ISMAP || this$static == MULTIPLE || this$static == NOHREF || this$static == NORESIZE || this$static == NOSHADE || this$static == NOWRAP || this$static == READONLY || this$static == REQUIRED || this$static == SELECTED;
 1.17770 +}
 1.17771 +
 1.17772 +function $isCaseFolded(this$static){
 1.17773 +  return this$static == ACTIVE || this$static == ALIGN || this$static == ASYNC || this$static == AUTOCOMPLETE || this$static == AUTOFOCUS || this$static == AUTOSUBMIT || this$static == CHECKED || this$static == CLEAR || this$static == COMPACT || this$static == DATAFORMATAS || this$static == DECLARE || this$static == DEFAULT || this$static == DEFER || this$static == DIR || this$static == DISABLED || this$static == ENCTYPE || this$static == FRAME || this$static == ISMAP || this$static == METHOD || this$static == MULTIPLE || this$static == NOHREF || this$static == NORESIZE || this$static == NOSHADE || this$static == NOWRAP || this$static == READONLY || this$static == REPLACE || this$static == REQUIRED || this$static == RULES || this$static == SCOPE || this$static == SCROLLING || this$static == SELECTED || this$static == SHAPE || this$static == STEP || this$static == TYPE || this$static == VALIGN || this$static == VALUETYPE;
 1.17774 +}
 1.17775 +
 1.17776 +function COLONIFIED_LOCAL(name, suffix){
 1.17777 +  var arr;
 1.17778 +  arr = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0);
 1.17779 +  arr[0] = name;
 1.17780 +  arr[1] = suffix;
 1.17781 +  arr[2] = suffix;
 1.17782 +  arr[3] = name;
 1.17783 +  return arr;
 1.17784 +}
 1.17785 +
 1.17786 +function COMPUTE_QNAME(local, prefix){
 1.17787 +  var arr, i;
 1.17788 +  arr = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0);
 1.17789 +  for (i = 0; i < arr.length; ++i) {
 1.17790 +    if (prefix[i] == null) {
 1.17791 +      arr[i] = local[i];
 1.17792 +    }
 1.17793 +     else {
 1.17794 +      arr[i] = String(prefix[i] + ':' + local[i]);
 1.17795 +    }
 1.17796 +  }
 1.17797 +  return arr;
 1.17798 +}
 1.17799 +
 1.17800 +function SAME_LOCAL(name){
 1.17801 +  var arr;
 1.17802 +  arr = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0);
 1.17803 +  arr[0] = name;
 1.17804 +  arr[1] = name;
 1.17805 +  arr[2] = name;
 1.17806 +  arr[3] = name;
 1.17807 +  return arr;
 1.17808 +}
 1.17809 +
 1.17810 +function SVG_DIFFERENT(name, camel){
 1.17811 +  var arr;
 1.17812 +  arr = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 4, 0);
 1.17813 +  arr[0] = name;
 1.17814 +  arr[1] = name;
 1.17815 +  arr[2] = camel;
 1.17816 +  arr[3] = name;
 1.17817 +  return arr;
 1.17818 +}
 1.17819 +
 1.17820 +function bufToHash(buf, len){
 1.17821 +  var hash, hash2, i, j;
 1.17822 +  hash2 = 0;
 1.17823 +  hash = len;
 1.17824 +  hash <<= 5;
 1.17825 +  hash += buf[0] - 96;
 1.17826 +  j = len;
 1.17827 +  for (i = 0; i < 4 && j > 0; ++i) {
 1.17828 +    --j;
 1.17829 +    hash <<= 5;
 1.17830 +    hash += buf[j] - 96;
 1.17831 +    hash2 <<= 6;
 1.17832 +    hash2 += buf[i] - 95;
 1.17833 +  }
 1.17834 +  return hash ^ hash2;
 1.17835 +}
 1.17836 +
 1.17837 +function createAttributeName(name, checkNcName){
 1.17838 +  var ncName, xmlns;
 1.17839 +  ncName = true;
 1.17840 +  xmlns = name.indexOf('xmlns:') == 0;
 1.17841 +  if (checkNcName) {
 1.17842 +    if (xmlns) {
 1.17843 +      ncName = false;
 1.17844 +    }
 1.17845 +     else {
 1.17846 +      ncName = isNCName(name);
 1.17847 +    }
 1.17848 +  }
 1.17849 +  return $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL(name), ALL_NO_PREFIX, ncName?ALL_NCNAME:ALL_NO_NCNAME, xmlns);
 1.17850 +}
 1.17851 +
 1.17852 +function getClass_49(){
 1.17853 +  return Lnu_validator_htmlparser_impl_AttributeName_2_classLit;
 1.17854 +}
 1.17855 +
 1.17856 +function nameByBuffer(buf, offset, length, checkNcName){
 1.17857 +  var end, end_0;
 1.17858 +  $clinit_87();
 1.17859 +  var attributeName, hash, index, name;
 1.17860 +  hash = bufToHash(buf, length);
 1.17861 +  index = binarySearch(ATTRIBUTE_HASHES, hash);
 1.17862 +  if (index < 0) {
 1.17863 +    return createAttributeName(String((end = offset + length , __checkBounds(buf.length, offset, end) , __valueOf(buf, offset, end))), checkNcName);
 1.17864 +  }
 1.17865 +   else {
 1.17866 +    attributeName = ATTRIBUTE_NAMES[index];
 1.17867 +    name = attributeName.local[0];
 1.17868 +    if (!localEqualsBuffer(name, buf, offset, length)) {
 1.17869 +      return createAttributeName(String((end_0 = offset + length , __checkBounds(buf.length, offset, end_0) , __valueOf(buf, offset, end_0))), checkNcName);
 1.17870 +    }
 1.17871 +    return attributeName;
 1.17872 +  }
 1.17873 +}
 1.17874 +
 1.17875 +function AttributeName(){
 1.17876 +}
 1.17877 +
 1.17878 +_ = AttributeName.prototype = new Object_0();
 1.17879 +_.getClass$ = getClass_49;
 1.17880 +_.typeId$ = 36;
 1.17881 +_.local = null;
 1.17882 +_.ncname = null;
 1.17883 +_.uri = null;
 1.17884 +_.xmlns = false;
 1.17885 +var ABBR, ACCENT, ACCENTUNDER, ACCENT_HEIGHT, ACCEPT, ACCEPT_CHARSET, ACCESSKEY, ACCUMULATE, ACTION, ACTIONTYPE, ACTIVE, ADDITIVE, ALIGN, ALIGNMENTSCOPE, ALIGNMENT_BASELINE, ALINK, ALL_NCNAME, ALL_NO_NCNAME, ALL_NO_NS, ALL_NO_PREFIX, ALPHABETIC, ALT, ALTIMG, ALTTEXT, AMPLITUDE, ARABIC_FORM, ARCHIVE, ARIA_ACTIVEDESCENDANT, ARIA_ATOMIC, ARIA_AUTOCOMPLETE, ARIA_BUSY, ARIA_CHANNEL, ARIA_CHECKED, ARIA_CONTROLS, ARIA_DATATYPE, ARIA_DESCRIBEDBY, ARIA_DISABLED, ARIA_DROPEFFECT, ARIA_EXPANDED, ARIA_FLOWTO, ARIA_GRAB, ARIA_HASPOPUP, ARIA_HIDDEN, ARIA_INVALID, ARIA_LABELLEDBY, ARIA_LEVEL, ARIA_LIVE, ARIA_MULTILINE, ARIA_MULTISELECTABLE, ARIA_OWNS, ARIA_POSINSET, ARIA_PRESSED, ARIA_READONLY, ARIA_RELEVANT, ARIA_REQUIRED, ARIA_SECRET, ARIA_SELECTED, ARIA_SETSIZE, ARIA_SORT, ARIA_TEMPLATEID, ARIA_VALUEMAX, ARIA_VALUEMIN, ARIA_VALUENOW, ASCENT, ASYNC, ATTRIBUTENAME, ATTRIBUTETYPE, ATTRIBUTE_HASHES, ATTRIBUTE_NAMES, AUTOCOMPLETE, AUTOFOCUS, AUTOPLAY, AUTOSUBMIT, AXIS, AZIMUTH, BACKGROUND, BASE, BASEFREQUENCY, BASELINE, BASELINE_SHIFT, BASEPROFILE, BBOX, BEGIN, BEVELLED, BGCOLOR, BIAS, BORDER, BY, CALCMODE, CAP_HEIGHT, CELLPADDING, CELLSPACING, CHAR, CHAROFF, CHARSET, CHECKED, CITE, CLASS, CLASSID, CLEAR, CLIP, CLIPPATHUNITS, CLIP_PATH, CLIP_RULE, CLOSE, CLOSURE, CODE, CODEBASE, CODETYPE, COLOR, COLOR_INTERPOLATION, COLOR_INTERPOLATION_FILTERS, COLOR_PROFILE, COLOR_RENDERING, COLS, COLSPAN, COLUMNALIGN, COLUMNLINES, COLUMNSPACING, COLUMNSPAN, COLUMNWIDTH, COMPACT, CONTENT, CONTENTEDITABLE, CONTENTSCRIPTTYPE, CONTENTSTYLETYPE, CONTEXTMENU, CONTROLS, COORDS, CURSOR, CX, CY, D, DATA, DATAFLD, DATAFORMATAS, DATASRC, DATETIME, DECLARE, DEFAULT, DEFER, DEFINITIONURL, DEPTH, DESCENT, DIFFUSECONSTANT, DIR, DIRECTION, DISABLED, DISPLAY, DISPLAYSTYLE, DIVISOR, DOMINANT_BASELINE, DRAGGABLE, DUR, DX, DY, EDGE, EDGEMODE, ELEVATION, ENABLE_BACKGROUND, ENCODING, ENCTYPE, END, EQUALCOLUMNS, EQUALROWS, EXPONENT, EXTERNALRESOURCESREQUIRED, FACE, FENCE, FILL, FILL_OPACITY, FILL_RULE, FILTER, FILTERRES, FILTERUNITS, FLOOD_COLOR, FLOOD_OPACITY, FONTFAMILY, FONTSIZE, FONTSTYLE, FONTWEIGHT, FONT_FAMILY, FONT_SIZE, FONT_SIZE_ADJUST, FONT_STRETCH, FONT_STYLE, FONT_VARIANT, FONT_WEIGHT, FOR, FORM, FORMAT, FRAME, FRAMEBORDER, FRAMESPACING, FROM, FX, FY, G1, G2, GLYPHREF, GLYPH_NAME, GLYPH_ORIENTATION_HORIZONTAL, GLYPH_ORIENTATION_VERTICAL, GRADIENTTRANSFORM, GRADIENTUNITS, GROUPALIGN, HANGING, HEADERS, HEIGHT, HIDDEN, HIDEFOCUS, HIGH, HORIZ_ADV_X, HORIZ_ORIGIN_X, HORIZ_ORIGIN_Y, HREF, HREFLANG, HSPACE, HTTP_EQUIV, ICON, ID, IDEOGRAPHIC, IMAGE_RENDERING, IN, IN2, INDEX, INPUTMODE, INTERCEPT, IRRELEVANT, ISMAP, K, K1, K2, K3, K4, KERNELMATRIX, KERNELUNITLENGTH, KERNING, KEYPOINTS, KEYSPLINES, KEYTIMES, LABEL, LANG, LANGUAGE, LANG_NS, LANG_PREFIX, LARGEOP, LENGTHADJUST, LETTER_SPACING, LIGHTING_COLOR, LIMITINGCONEANGLE, LINEBREAK, LINETHICKNESS, LINK, LIST, LOCAL, LONGDESC, LOOPEND, LOOPSTART, LOW, LOWSRC, LQUOTE, LSPACE, MACROS, MANIFEST, MARGINHEIGHT, MARGINWIDTH, MARKERHEIGHT, MARKERUNITS, MARKERWIDTH, MARKER_END, MARKER_MID, MARKER_START, MASK, MASKCONTENTUNITS, MASKUNITS, MATHBACKGROUND, MATHCOLOR, MATHEMATICAL, MATHSIZE, MATHVARIANT, MAX, MAXLENGTH, MAXSIZE, MEDIA, MEDIUMMATHSPACE, METHOD, MIN, MINSIZE, MODE, MOVABLELIMITS, MULTIPLE, NAME, NARGS, NOHREF, NORESIZE, NOSHADE, NOTATION, NOWRAP, NUMOCTAVES, OBJECT, OCCURRENCE, OFFSET, ONABORT, ONACTIVATE, ONAFTERPRINT, ONAFTERUPDATE, ONBEFORDEACTIVATE, ONBEFOREACTIVATE, ONBEFORECOPY, ONBEFORECUT, ONBEFOREEDITFOCUS, ONBEFOREPASTE, ONBEFOREPRINT, ONBEFOREUNLOAD, ONBEFOREUPDATE, ONBEGIN, ONBLUR, ONBOUNCE, ONCELLCHANGE, ONCHANGE, ONCLICK, ONCONTEXTMENU, ONCONTROLSELECT, ONCOPY, ONCUT, ONDATAAVAILABLE, ONDATASETCHANGED, ONDATASETCOMPLETE, ONDBLCLICK, ONDEACTIVATE, ONDRAG, ONDRAGDROP, ONDRAGEND, ONDRAGENTER, ONDRAGLEAVE, ONDRAGOVER, ONDRAGSTART, ONDROP, ONEND, ONERROR, ONERRORUPDATE, ONFILTERCHANGE, ONFINISH, ONFOCUS, ONFOCUSIN, ONFOCUSOUT, ONFORMCHANGE, ONFORMINPUT, ONHELP, ONINPUT, ONINVALID, ONKEYDOWN, ONKEYPRESS, ONKEYUP, ONLOAD, ONLOSECAPTURE, ONMESSAGE, ONMOUSEDOWN, ONMOUSEENTER, ONMOUSELEAVE, ONMOUSEMOVE, ONMOUSEOUT, ONMOUSEOVER, ONMOUSEUP, ONMOUSEWHEEL, ONMOVE, ONMOVEEND, ONMOVESTART, ONPASTE, ONPROPERTYCHANGE, ONREADYSTATECHANGE, ONREPEAT, ONRESET, ONRESIZE, ONROWENTER, ONROWEXIT, ONROWSDELETE, ONROWSINSERTED, ONSCROLL, ONSELECT, ONSELECTSTART, ONSTART, ONSTOP, ONSUBMIT, ONUNLOAD, ONZOOM, OPACITY, OPEN, OPERATOR, OPTIMUM, ORDER, ORIENT, ORIENTATION, ORIGIN, OTHER, OVERFLOW, OVERLINE_POSITION, OVERLINE_THICKNESS, PANOSE_1, PATH, PATHLENGTH, PATTERN, PATTERNCONTENTUNITS, PATTERNTRANSFORM, PATTERNUNITS, PING, PLAYCOUNT, POINTER_EVENTS, POINTS, POINTSATX, POINTSATY, POINTSATZ, POSTER, PRESERVEALPHA, PRESERVEASPECTRATIO, PRIMITIVEUNITS, PROFILE, PROMPT, R, RADIOGROUP, RADIUS, READONLY, REFX, REFY, REL, RENDERING_INTENT, REPEAT, REPEATCOUNT, REPEATDUR, REPEAT_MAX, REPEAT_MIN, REPEAT_START, REPEAT_TEMPLATE, REPLACE, REQUIRED, REQUIREDEXTENSIONS, REQUIREDFEATURES, RESTART, RESULT, REV, ROLE, ROTATE, ROWALIGN, ROWLINES, ROWS, ROWSPACING, ROWSPAN, RQUOTE, RSPACE, RT, RULES, RX, RY, SANDBOX, SCALE, SCHEME, SCOPE, SCOPED, SCRIPTLEVEL, SCRIPTMINSIZE, SCRIPTSIZEMULTIPLIER, SCROLLDELAY, SCROLLING, SEAMLESS, SEED, SELECTED, SELECTION, SEPARATOR, SEPARATORS, SHAPE, SHAPE_RENDERING, SIZE, SLOPE, SPACING, SPAN, SPECIFICATION, SPECULARCONSTANT, SPECULAREXPONENT, SPEED, SPREADMETHOD, SRC, STANDBY, START, STARTOFFSET, STDDEVIATION, STEMH, STEMV, STEP, STITCHTILES, STOP_COLOR, STOP_OPACITY, STRETCHY, STRIKETHROUGH_POSITION, STRIKETHROUGH_THICKNESS, STRING, STROKE, STROKE_DASHARRAY, STROKE_DASHOFFSET, STROKE_LINECAP, STROKE_LINEJOIN, STROKE_MITERLIMIT, STROKE_OPACITY, STROKE_WIDTH, STYLE, SUBSCRIPTSHIFT, SUMMARY, SUPERSCRIPTSHIFT, SURFACESCALE, SYMMETRIC, SYSTEMLANGUAGE, TABINDEX, TABLEVALUES, TARGET, TARGETX, TARGETY, TEMPLATE, TEXT, TEXTLENGTH, TEXT_ANCHOR, TEXT_DECORATION, TEXT_RENDERING, THICKMATHSPACE, THINMATHSPACE, TITLE, TO, TRANSFORM, TYPE, U1, U2, UNDERLINE_POSITION, UNDERLINE_THICKNESS, UNICODE, UNICODE_BIDI, UNICODE_RANGE, UNITS_PER_EM, UNSELECTABLE, USEMAP, VALIGN, VALUE, VALUES, VALUETYPE, VERSION, VERT_ADV_Y, VERT_ORIGIN_X, VERT_ORIGIN_Y, VERYTHICKMATHSPACE, VERYTHINMATHSPACE, VERYVERYTHICKMATHSPACE, VERYVERYTHINMATHSPACE, VIEWBOX, VIEWTARGET, VISIBILITY, VLINK, VSPACE, V_ALPHABETIC, V_HANGING, V_IDEOGRAPHIC, V_MATHEMATICAL, WHEN, WIDTH, WIDTHS, WORD_SPACING, WRAP, WRITING_MODE, X, X1, X2, XCHANNELSELECTOR, XLINK_ACTUATE, XLINK_ARCROLE, XLINK_HREF, XLINK_NS, XLINK_PREFIX, XLINK_ROLE, XLINK_SHOW, XLINK_TITLE, XLINK_TYPE, XMLNS, XMLNS_NS, XMLNS_PREFIX, XMLNS_XLINK, XML_BASE, XML_LANG, XML_NS, XML_PREFIX, XML_SPACE, XREF, X_HEIGHT, Y, Y1, Y2, YCHANNELSELECTOR, Z, ZOOMANDPAN;
 1.17886 +function $clinit_89(){
 1.17887 +  $clinit_89 = nullMethod;
 1.17888 +  $ElementName(new ElementName(), null);
 1.17889 +  A = $ElementName_0(new ElementName(), 'a', 'a', 1, false, false, false);
 1.17890 +  B = $ElementName_0(new ElementName(), 'b', 'b', 45, false, false, false);
 1.17891 +  G = $ElementName_0(new ElementName(), 'g', 'g', 0, false, false, false);
 1.17892 +  I = $ElementName_0(new ElementName(), 'i', 'i', 45, false, false, false);
 1.17893 +  P = $ElementName_0(new ElementName(), 'p', 'p', 29, true, false, false);
 1.17894 +  Q = $ElementName_0(new ElementName(), 'q', 'q', 0, false, false, false);
 1.17895 +  S = $ElementName_0(new ElementName(), 's', 's', 45, false, false, false);
 1.17896 +  U = $ElementName_0(new ElementName(), 'u', 'u', 45, false, false, false);
 1.17897 +  BR = $ElementName_0(new ElementName(), 'br', 'br', 4, true, false, false);
 1.17898 +  CI = $ElementName_0(new ElementName(), 'ci', 'ci', 0, false, false, false);
 1.17899 +  CN = $ElementName_0(new ElementName(), 'cn', 'cn', 0, false, false, false);
 1.17900 +  DD = $ElementName_0(new ElementName(), 'dd', 'dd', 41, true, false, false);
 1.17901 +  DL = $ElementName_0(new ElementName(), 'dl', 'dl', 46, true, false, false);
 1.17902 +  DT = $ElementName_0(new ElementName(), 'dt', 'dt', 41, true, false, false);
 1.17903 +  EM = $ElementName_0(new ElementName(), 'em', 'em', 45, false, false, false);
 1.17904 +  EQ = $ElementName_0(new ElementName(), 'eq', 'eq', 0, false, false, false);
 1.17905 +  FN = $ElementName_0(new ElementName(), 'fn', 'fn', 0, false, false, false);
 1.17906 +  H1 = $ElementName_0(new ElementName(), 'h1', 'h1', 42, true, false, false);
 1.17907 +  H2 = $ElementName_0(new ElementName(), 'h2', 'h2', 42, true, false, false);
 1.17908 +  H3 = $ElementName_0(new ElementName(), 'h3', 'h3', 42, true, false, false);
 1.17909 +  H4 = $ElementName_0(new ElementName(), 'h4', 'h4', 42, true, false, false);
 1.17910 +  H5 = $ElementName_0(new ElementName(), 'h5', 'h5', 42, true, false, false);
 1.17911 +  H6 = $ElementName_0(new ElementName(), 'h6', 'h6', 42, true, false, false);
 1.17912 +  GT = $ElementName_0(new ElementName(), 'gt', 'gt', 0, false, false, false);
 1.17913 +  HR = $ElementName_0(new ElementName(), 'hr', 'hr', 22, true, false, false);
 1.17914 +  IN_0 = $ElementName_0(new ElementName(), 'in', 'in', 0, false, false, false);
 1.17915 +  LI = $ElementName_0(new ElementName(), 'li', 'li', 15, true, false, false);
 1.17916 +  LN = $ElementName_0(new ElementName(), 'ln', 'ln', 0, false, false, false);
 1.17917 +  LT = $ElementName_0(new ElementName(), 'lt', 'lt', 0, false, false, false);
 1.17918 +  MI = $ElementName_0(new ElementName(), 'mi', 'mi', 57, false, false, false);
 1.17919 +  MN = $ElementName_0(new ElementName(), 'mn', 'mn', 57, false, false, false);
 1.17920 +  MO = $ElementName_0(new ElementName(), 'mo', 'mo', 57, false, false, false);
 1.17921 +  MS = $ElementName_0(new ElementName(), 'ms', 'ms', 57, false, false, false);
 1.17922 +  OL = $ElementName_0(new ElementName(), 'ol', 'ol', 46, true, false, false);
 1.17923 +  OR = $ElementName_0(new ElementName(), 'or', 'or', 0, false, false, false);
 1.17924 +  PI = $ElementName_0(new ElementName(), 'pi', 'pi', 0, false, false, false);
 1.17925 +  RP = $ElementName_0(new ElementName(), 'rp', 'rp', 53, false, false, false);
 1.17926 +  RT_0 = $ElementName_0(new ElementName(), 'rt', 'rt', 53, false, false, false);
 1.17927 +  TD = $ElementName_0(new ElementName(), 'td', 'td', 40, false, true, false);
 1.17928 +  TH = $ElementName_0(new ElementName(), 'th', 'th', 40, false, true, false);
 1.17929 +  TR = $ElementName_0(new ElementName(), 'tr', 'tr', 37, true, false, true);
 1.17930 +  TT = $ElementName_0(new ElementName(), 'tt', 'tt', 45, false, false, false);
 1.17931 +  UL = $ElementName_0(new ElementName(), 'ul', 'ul', 46, true, false, false);
 1.17932 +  AND = $ElementName_0(new ElementName(), 'and', 'and', 0, false, false, false);
 1.17933 +  ARG = $ElementName_0(new ElementName(), 'arg', 'arg', 0, false, false, false);
 1.17934 +  ABS = $ElementName_0(new ElementName(), 'abs', 'abs', 0, false, false, false);
 1.17935 +  BIG = $ElementName_0(new ElementName(), 'big', 'big', 45, false, false, false);
 1.17936 +  BDO = $ElementName_0(new ElementName(), 'bdo', 'bdo', 0, false, false, false);
 1.17937 +  CSC = $ElementName_0(new ElementName(), 'csc', 'csc', 0, false, false, false);
 1.17938 +  COL = $ElementName_0(new ElementName(), 'col', 'col', 7, true, false, false);
 1.17939 +  COS = $ElementName_0(new ElementName(), 'cos', 'cos', 0, false, false, false);
 1.17940 +  COT = $ElementName_0(new ElementName(), 'cot', 'cot', 0, false, false, false);
 1.17941 +  DEL = $ElementName_0(new ElementName(), 'del', 'del', 0, false, false, false);
 1.17942 +  DFN = $ElementName_0(new ElementName(), 'dfn', 'dfn', 0, false, false, false);
 1.17943 +  DIR_0 = $ElementName_0(new ElementName(), 'dir', 'dir', 51, true, false, false);
 1.17944 +  DIV = $ElementName_0(new ElementName(), 'div', 'div', 50, true, false, false);
 1.17945 +  EXP = $ElementName_0(new ElementName(), 'exp', 'exp', 0, false, false, false);
 1.17946 +  GCD = $ElementName_0(new ElementName(), 'gcd', 'gcd', 0, false, false, false);
 1.17947 +  GEQ = $ElementName_0(new ElementName(), 'geq', 'geq', 0, false, false, false);
 1.17948 +  IMG = $ElementName_0(new ElementName(), 'img', 'img', 48, true, false, false);
 1.17949 +  INS = $ElementName_0(new ElementName(), 'ins', 'ins', 0, false, false, false);
 1.17950 +  INT = $ElementName_0(new ElementName(), 'int', 'int', 0, false, false, false);
 1.17951 +  KBD = $ElementName_0(new ElementName(), 'kbd', 'kbd', 0, false, false, false);
 1.17952 +  LOG = $ElementName_0(new ElementName(), 'log', 'log', 0, false, false, false);
 1.17953 +  LCM = $ElementName_0(new ElementName(), 'lcm', 'lcm', 0, false, false, false);
 1.17954 +  LEQ = $ElementName_0(new ElementName(), 'leq', 'leq', 0, false, false, false);
 1.17955 +  MTD = $ElementName_0(new ElementName(), 'mtd', 'mtd', 0, false, false, false);
 1.17956 +  MIN_0 = $ElementName_0(new ElementName(), 'min', 'min', 0, false, false, false);
 1.17957 +  MAP = $ElementName_0(new ElementName(), 'map', 'map', 0, false, false, false);
 1.17958 +  MTR = $ElementName_0(new ElementName(), 'mtr', 'mtr', 0, false, false, false);
 1.17959 +  MAX_0 = $ElementName_0(new ElementName(), 'max', 'max', 0, false, false, false);
 1.17960 +  NEQ = $ElementName_0(new ElementName(), 'neq', 'neq', 0, false, false, false);
 1.17961 +  NOT = $ElementName_0(new ElementName(), 'not', 'not', 0, false, false, false);
 1.17962 +  NAV = $ElementName_0(new ElementName(), 'nav', 'nav', 51, true, false, false);
 1.17963 +  PRE = $ElementName_0(new ElementName(), 'pre', 'pre', 44, true, false, false);
 1.17964 +  REM = $ElementName_0(new ElementName(), 'rem', 'rem', 0, false, false, false);
 1.17965 +  SUB = $ElementName_0(new ElementName(), 'sub', 'sub', 52, false, false, false);
 1.17966 +  SEC = $ElementName_0(new ElementName(), 'sec', 'sec', 0, false, false, false);
 1.17967 +  SVG = $ElementName_0(new ElementName(), 'svg', 'svg', 19, false, false, false);
 1.17968 +  SUM = $ElementName_0(new ElementName(), 'sum', 'sum', 0, false, false, false);
 1.17969 +  SIN = $ElementName_0(new ElementName(), 'sin', 'sin', 0, false, false, false);
 1.17970 +  SEP = $ElementName_0(new ElementName(), 'sep', 'sep', 0, false, false, false);
 1.17971 +  SUP = $ElementName_0(new ElementName(), 'sup', 'sup', 52, false, false, false);
 1.17972 +  SET = $ElementName_0(new ElementName(), 'set', 'set', 0, false, false, false);
 1.17973 +  TAN = $ElementName_0(new ElementName(), 'tan', 'tan', 0, false, false, false);
 1.17974 +  USE = $ElementName_0(new ElementName(), 'use', 'use', 0, false, false, false);
 1.17975 +  VAR = $ElementName_0(new ElementName(), 'var', 'var', 52, false, false, false);
 1.17976 +  WBR = $ElementName_0(new ElementName(), 'wbr', 'wbr', 49, true, false, false);
 1.17977 +  XMP = $ElementName_0(new ElementName(), 'xmp', 'xmp', 38, false, false, false);
 1.17978 +  XOR = $ElementName_0(new ElementName(), 'xor', 'xor', 0, false, false, false);
 1.17979 +  AREA = $ElementName_0(new ElementName(), 'area', 'area', 49, true, false, false);
 1.17980 +  ABBR_0 = $ElementName_0(new ElementName(), 'abbr', 'abbr', 0, false, false, false);
 1.17981 +  BASE_0 = $ElementName_0(new ElementName(), 'base', 'base', 2, true, false, false);
 1.17982 +  BVAR = $ElementName_0(new ElementName(), 'bvar', 'bvar', 0, false, false, false);
 1.17983 +  BODY = $ElementName_0(new ElementName(), 'body', 'body', 3, true, false, false);
 1.17984 +  CARD = $ElementName_0(new ElementName(), 'card', 'card', 0, false, false, false);
 1.17985 +  CODE_0 = $ElementName_0(new ElementName(), 'code', 'code', 45, false, false, false);
 1.17986 +  CITE_0 = $ElementName_0(new ElementName(), 'cite', 'cite', 0, false, false, false);
 1.17987 +  CSCH = $ElementName_0(new ElementName(), 'csch', 'csch', 0, false, false, false);
 1.17988 +  COSH = $ElementName_0(new ElementName(), 'cosh', 'cosh', 0, false, false, false);
 1.17989 +  COTH = $ElementName_0(new ElementName(), 'coth', 'coth', 0, false, false, false);
 1.17990 +  CURL = $ElementName_0(new ElementName(), 'curl', 'curl', 0, false, false, false);
 1.17991 +  DESC = $ElementName_0(new ElementName(), 'desc', 'desc', 59, false, false, false);
 1.17992 +  DIFF = $ElementName_0(new ElementName(), 'diff', 'diff', 0, false, false, false);
 1.17993 +  DEFS = $ElementName_0(new ElementName(), 'defs', 'defs', 0, false, false, false);
 1.17994 +  FORM_0 = $ElementName_0(new ElementName(), 'form', 'form', 9, true, false, false);
 1.17995 +  FONT = $ElementName_0(new ElementName(), 'font', 'font', 64, false, false, false);
 1.17996 +  GRAD = $ElementName_0(new ElementName(), 'grad', 'grad', 0, false, false, false);
 1.17997 +  HEAD = $ElementName_0(new ElementName(), 'head', 'head', 20, true, false, false);
 1.17998 +  HTML_0 = $ElementName_0(new ElementName(), 'html', 'html', 23, false, true, false);
 1.17999 +  LINE = $ElementName_0(new ElementName(), 'line', 'line', 0, false, false, false);
 1.18000 +  LINK_0 = $ElementName_0(new ElementName(), 'link', 'link', 16, true, false, false);
 1.18001 +  LIST_0 = $ElementName_0(new ElementName(), 'list', 'list', 0, false, false, false);
 1.18002 +  META = $ElementName_0(new ElementName(), 'meta', 'meta', 18, true, false, false);
 1.18003 +  MSUB = $ElementName_0(new ElementName(), 'msub', 'msub', 0, false, false, false);
 1.18004 +  MODE_0 = $ElementName_0(new ElementName(), 'mode', 'mode', 0, false, false, false);
 1.18005 +  MATH = $ElementName_0(new ElementName(), 'math', 'math', 17, false, false, false);
 1.18006 +  MARK = $ElementName_0(new ElementName(), 'mark', 'mark', 0, false, false, false);
 1.18007 +  MASK_0 = $ElementName_0(new ElementName(), 'mask', 'mask', 0, false, false, false);
 1.18008 +  MEAN = $ElementName_0(new ElementName(), 'mean', 'mean', 0, false, false, false);
 1.18009 +  MSUP = $ElementName_0(new ElementName(), 'msup', 'msup', 0, false, false, false);
 1.18010 +  MENU = $ElementName_0(new ElementName(), 'menu', 'menu', 50, true, false, false);
 1.18011 +  MROW = $ElementName_0(new ElementName(), 'mrow', 'mrow', 0, false, false, false);
 1.18012 +  NONE = $ElementName_0(new ElementName(), 'none', 'none', 0, false, false, false);
 1.18013 +  NOBR = $ElementName_0(new ElementName(), 'nobr', 'nobr', 24, false, false, false);
 1.18014 +  NEST = $ElementName_0(new ElementName(), 'nest', 'nest', 0, false, false, false);
 1.18015 +  PATH_0 = $ElementName_0(new ElementName(), 'path', 'path', 0, false, false, false);
 1.18016 +  PLUS = $ElementName_0(new ElementName(), 'plus', 'plus', 0, false, false, false);
 1.18017 +  RULE = $ElementName_0(new ElementName(), 'rule', 'rule', 0, false, false, false);
 1.18018 +  REAL = $ElementName_0(new ElementName(), 'real', 'real', 0, false, false, false);
 1.18019 +  RELN = $ElementName_0(new ElementName(), 'reln', 'reln', 0, false, false, false);
 1.18020 +  RECT = $ElementName_0(new ElementName(), 'rect', 'rect', 0, false, false, false);
 1.18021 +  ROOT = $ElementName_0(new ElementName(), 'root', 'root', 0, false, false, false);
 1.18022 +  RUBY = $ElementName_0(new ElementName(), 'ruby', 'ruby', 52, false, false, false);
 1.18023 +  SECH = $ElementName_0(new ElementName(), 'sech', 'sech', 0, false, false, false);
 1.18024 +  SINH = $ElementName_0(new ElementName(), 'sinh', 'sinh', 0, false, false, false);
 1.18025 +  SPAN_0 = $ElementName_0(new ElementName(), 'span', 'span', 52, false, false, false);
 1.18026 +  SAMP = $ElementName_0(new ElementName(), 'samp', 'samp', 0, false, false, false);
 1.18027 +  STOP = $ElementName_0(new ElementName(), 'stop', 'stop', 0, false, false, false);
 1.18028 +  SDEV = $ElementName_0(new ElementName(), 'sdev', 'sdev', 0, false, false, false);
 1.18029 +  TIME = $ElementName_0(new ElementName(), 'time', 'time', 0, false, false, false);
 1.18030 +  TRUE = $ElementName_0(new ElementName(), 'true', 'true', 0, false, false, false);
 1.18031 +  TREF = $ElementName_0(new ElementName(), 'tref', 'tref', 0, false, false, false);
 1.18032 +  TANH = $ElementName_0(new ElementName(), 'tanh', 'tanh', 0, false, false, false);
 1.18033 +  TEXT_0 = $ElementName_0(new ElementName(), 'text', 'text', 0, false, false, false);
 1.18034 +  VIEW = $ElementName_0(new ElementName(), 'view', 'view', 0, false, false, false);
 1.18035 +  ASIDE = $ElementName_0(new ElementName(), 'aside', 'aside', 51, true, false, false);
 1.18036 +  AUDIO = $ElementName_0(new ElementName(), 'audio', 'audio', 0, false, false, false);
 1.18037 +  APPLY = $ElementName_0(new ElementName(), 'apply', 'apply', 0, false, false, false);
 1.18038 +  EMBED = $ElementName_0(new ElementName(), 'embed', 'embed', 48, true, false, false);
 1.18039 +  FRAME_0 = $ElementName_0(new ElementName(), 'frame', 'frame', 10, true, false, false);
 1.18040 +  FALSE = $ElementName_0(new ElementName(), 'false', 'false', 0, false, false, false);
 1.18041 +  FLOOR = $ElementName_0(new ElementName(), 'floor', 'floor', 0, false, false, false);
 1.18042 +  GLYPH = $ElementName_0(new ElementName(), 'glyph', 'glyph', 0, false, false, false);
 1.18043 +  HKERN = $ElementName_0(new ElementName(), 'hkern', 'hkern', 0, false, false, false);
 1.18044 +  IMAGE = $ElementName_0(new ElementName(), 'image', 'image', 12, true, false, false);
 1.18045 +  IDENT = $ElementName_0(new ElementName(), 'ident', 'ident', 0, false, false, false);
 1.18046 +  INPUT = $ElementName_0(new ElementName(), 'input', 'input', 13, true, false, false);
 1.18047 +  LABEL_0 = $ElementName_0(new ElementName(), 'label', 'label', 62, false, false, false);
 1.18048 +  LIMIT = $ElementName_0(new ElementName(), 'limit', 'limit', 0, false, false, false);
 1.18049 +  MFRAC = $ElementName_0(new ElementName(), 'mfrac', 'mfrac', 0, false, false, false);
 1.18050 +  MPATH = $ElementName_0(new ElementName(), 'mpath', 'mpath', 0, false, false, false);
 1.18051 +  METER = $ElementName_0(new ElementName(), 'meter', 'meter', 0, false, false, false);
 1.18052 +  MOVER = $ElementName_0(new ElementName(), 'mover', 'mover', 0, false, false, false);
 1.18053 +  MINUS = $ElementName_0(new ElementName(), 'minus', 'minus', 0, false, false, false);
 1.18054 +  MROOT = $ElementName_0(new ElementName(), 'mroot', 'mroot', 0, false, false, false);
 1.18055 +  MSQRT = $ElementName_0(new ElementName(), 'msqrt', 'msqrt', 0, false, false, false);
 1.18056 +  MTEXT = $ElementName_0(new ElementName(), 'mtext', 'mtext', 57, false, false, false);
 1.18057 +  NOTIN = $ElementName_0(new ElementName(), 'notin', 'notin', 0, false, false, false);
 1.18058 +  PIECE = $ElementName_0(new ElementName(), 'piece', 'piece', 0, false, false, false);
 1.18059 +  PARAM = $ElementName_0(new ElementName(), 'param', 'param', 55, true, false, false);
 1.18060 +  POWER = $ElementName_0(new ElementName(), 'power', 'power', 0, false, false, false);
 1.18061 +  REALS = $ElementName_0(new ElementName(), 'reals', 'reals', 0, false, false, false);
 1.18062 +  STYLE_0 = $ElementName_0(new ElementName(), 'style', 'style', 33, true, false, false);
 1.18063 +  SMALL = $ElementName_0(new ElementName(), 'small', 'small', 45, false, false, false);
 1.18064 +  THEAD = $ElementName_0(new ElementName(), 'thead', 'thead', 39, true, false, true);
 1.18065 +  TABLE = $ElementName_0(new ElementName(), 'table', 'table', 34, false, true, true);
 1.18066 +  TITLE_0 = $ElementName_0(new ElementName(), 'title', 'title', 36, true, false, false);
 1.18067 +  TSPAN = $ElementName_0(new ElementName(), 'tspan', 'tspan', 0, false, false, false);
 1.18068 +  TIMES = $ElementName_0(new ElementName(), 'times', 'times', 0, false, false, false);
 1.18069 +  TFOOT = $ElementName_0(new ElementName(), 'tfoot', 'tfoot', 39, true, false, true);
 1.18070 +  TBODY = $ElementName_0(new ElementName(), 'tbody', 'tbody', 39, true, false, true);
 1.18071 +  UNION = $ElementName_0(new ElementName(), 'union', 'union', 0, false, false, false);
 1.18072 +  VKERN = $ElementName_0(new ElementName(), 'vkern', 'vkern', 0, false, false, false);
 1.18073 +  VIDEO = $ElementName_0(new ElementName(), 'video', 'video', 0, false, false, false);
 1.18074 +  ARCSEC = $ElementName_0(new ElementName(), 'arcsec', 'arcsec', 0, false, false, false);
 1.18075 +  ARCCSC = $ElementName_0(new ElementName(), 'arccsc', 'arccsc', 0, false, false, false);
 1.18076 +  ARCTAN = $ElementName_0(new ElementName(), 'arctan', 'arctan', 0, false, false, false);
 1.18077 +  ARCSIN = $ElementName_0(new ElementName(), 'arcsin', 'arcsin', 0, false, false, false);
 1.18078 +  ARCCOS = $ElementName_0(new ElementName(), 'arccos', 'arccos', 0, false, false, false);
 1.18079 +  APPLET = $ElementName_0(new ElementName(), 'applet', 'applet', 43, false, true, false);
 1.18080 +  ARCCOT = $ElementName_0(new ElementName(), 'arccot', 'arccot', 0, false, false, false);
 1.18081 +  APPROX = $ElementName_0(new ElementName(), 'approx', 'approx', 0, false, false, false);
 1.18082 +  BUTTON = $ElementName_0(new ElementName(), 'button', 'button', 5, false, true, false);
 1.18083 +  CIRCLE = $ElementName_0(new ElementName(), 'circle', 'circle', 0, false, false, false);
 1.18084 +  CENTER = $ElementName_0(new ElementName(), 'center', 'center', 50, true, false, false);
 1.18085 +  CURSOR_0 = $ElementName_0(new ElementName(), 'cursor', 'cursor', 0, false, false, false);
 1.18086 +  CANVAS = $ElementName_0(new ElementName(), 'canvas', 'canvas', 0, false, false, false);
 1.18087 +  DIVIDE = $ElementName_0(new ElementName(), 'divide', 'divide', 0, false, false, false);
 1.18088 +  DEGREE = $ElementName_0(new ElementName(), 'degree', 'degree', 0, false, false, false);
 1.18089 +  DIALOG = $ElementName_0(new ElementName(), 'dialog', 'dialog', 51, true, false, false);
 1.18090 +  DOMAIN = $ElementName_0(new ElementName(), 'domain', 'domain', 0, false, false, false);
 1.18091 +  EXISTS = $ElementName_0(new ElementName(), 'exists', 'exists', 0, false, false, false);
 1.18092 +  FETILE = $ElementName_0(new ElementName(), 'fetile', 'feTile', 0, false, false, false);
 1.18093 +  FIGURE = $ElementName_0(new ElementName(), 'figure', 'figure', 51, true, false, false);
 1.18094 +  FORALL = $ElementName_0(new ElementName(), 'forall', 'forall', 0, false, false, false);
 1.18095 +  FILTER_0 = $ElementName_0(new ElementName(), 'filter', 'filter', 0, false, false, false);
 1.18096 +  FOOTER = $ElementName_0(new ElementName(), 'footer', 'footer', 51, true, false, false);
 1.18097 +  HEADER = $ElementName_0(new ElementName(), 'header', 'header', 51, true, false, false);
 1.18098 +  IFRAME = $ElementName_0(new ElementName(), 'iframe', 'iframe', 47, true, false, false);
 1.18099 +  KEYGEN = $ElementName_0(new ElementName(), 'keygen', 'keygen', 65, true, false, false);
 1.18100 +  LAMBDA = $ElementName_0(new ElementName(), 'lambda', 'lambda', 0, false, false, false);
 1.18101 +  LEGEND = $ElementName_0(new ElementName(), 'legend', 'legend', 0, false, false, false);
 1.18102 +  MSPACE = $ElementName_0(new ElementName(), 'mspace', 'mspace', 0, false, false, false);
 1.18103 +  MTABLE = $ElementName_0(new ElementName(), 'mtable', 'mtable', 0, false, false, false);
 1.18104 +  MSTYLE = $ElementName_0(new ElementName(), 'mstyle', 'mstyle', 0, false, false, false);
 1.18105 +  MGLYPH = $ElementName_0(new ElementName(), 'mglyph', 'mglyph', 56, false, false, false);
 1.18106 +  MEDIAN = $ElementName_0(new ElementName(), 'median', 'median', 0, false, false, false);
 1.18107 +  MUNDER = $ElementName_0(new ElementName(), 'munder', 'munder', 0, false, false, false);
 1.18108 +  MARKER = $ElementName_0(new ElementName(), 'marker', 'marker', 0, false, false, false);
 1.18109 +  MERROR = $ElementName_0(new ElementName(), 'merror', 'merror', 0, false, false, false);
 1.18110 +  MOMENT = $ElementName_0(new ElementName(), 'moment', 'moment', 0, false, false, false);
 1.18111 +  MATRIX = $ElementName_0(new ElementName(), 'matrix', 'matrix', 0, false, false, false);
 1.18112 +  OPTION = $ElementName_0(new ElementName(), 'option', 'option', 28, true, false, false);
 1.18113 +  OBJECT_0 = $ElementName_0(new ElementName(), 'object', 'object', 63, false, true, false);
 1.18114 +  OUTPUT = $ElementName_0(new ElementName(), 'output', 'output', 62, false, false, false);
 1.18115 +  PRIMES = $ElementName_0(new ElementName(), 'primes', 'primes', 0, false, false, false);
 1.18116 +  SOURCE = $ElementName_0(new ElementName(), 'source', 'source', 55, false, false, false);
 1.18117 +  STRIKE = $ElementName_0(new ElementName(), 'strike', 'strike', 45, false, false, false);
 1.18118 +  STRONG = $ElementName_0(new ElementName(), 'strong', 'strong', 45, false, false, false);
 1.18119 +  SWITCH = $ElementName_0(new ElementName(), 'switch', 'switch', 0, false, false, false);
 1.18120 +  SYMBOL = $ElementName_0(new ElementName(), 'symbol', 'symbol', 0, false, false, false);
 1.18121 +  SPACER = $ElementName_0(new ElementName(), 'spacer', 'spacer', 49, true, false, false);
 1.18122 +  SELECT = $ElementName_0(new ElementName(), 'select', 'select', 32, true, false, false);
 1.18123 +  SUBSET = $ElementName_0(new ElementName(), 'subset', 'subset', 0, false, false, false);
 1.18124 +  SCRIPT = $ElementName_0(new ElementName(), 'script', 'script', 31, true, false, false);
 1.18125 +  TBREAK = $ElementName_0(new ElementName(), 'tbreak', 'tbreak', 0, false, false, false);
 1.18126 +  VECTOR = $ElementName_0(new ElementName(), 'vector', 'vector', 0, false, false, false);
 1.18127 +  ARTICLE = $ElementName_0(new ElementName(), 'article', 'article', 51, true, false, false);
 1.18128 +  ANIMATE = $ElementName_0(new ElementName(), 'animate', 'animate', 0, false, false, false);
 1.18129 +  ARCSECH = $ElementName_0(new ElementName(), 'arcsech', 'arcsech', 0, false, false, false);
 1.18130 +  ARCCSCH = $ElementName_0(new ElementName(), 'arccsch', 'arccsch', 0, false, false, false);
 1.18131 +  ARCTANH = $ElementName_0(new ElementName(), 'arctanh', 'arctanh', 0, false, false, false);
 1.18132 +  ARCSINH = $ElementName_0(new ElementName(), 'arcsinh', 'arcsinh', 0, false, false, false);
 1.18133 +  ARCCOSH = $ElementName_0(new ElementName(), 'arccosh', 'arccosh', 0, false, false, false);
 1.18134 +  ARCCOTH = $ElementName_0(new ElementName(), 'arccoth', 'arccoth', 0, false, false, false);
 1.18135 +  ACRONYM = $ElementName_0(new ElementName(), 'acronym', 'acronym', 0, false, false, false);
 1.18136 +  ADDRESS = $ElementName_0(new ElementName(), 'address', 'address', 51, true, false, false);
 1.18137 +  BGSOUND = $ElementName_0(new ElementName(), 'bgsound', 'bgsound', 49, true, false, false);
 1.18138 +  COMMAND = $ElementName_0(new ElementName(), 'command', 'command', 54, true, false, false);
 1.18139 +  COMPOSE = $ElementName_0(new ElementName(), 'compose', 'compose', 0, false, false, false);
 1.18140 +  CEILING = $ElementName_0(new ElementName(), 'ceiling', 'ceiling', 0, false, false, false);
 1.18141 +  CSYMBOL = $ElementName_0(new ElementName(), 'csymbol', 'csymbol', 0, false, false, false);
 1.18142 +  CAPTION = $ElementName_0(new ElementName(), 'caption', 'caption', 6, false, true, false);
 1.18143 +  DISCARD = $ElementName_0(new ElementName(), 'discard', 'discard', 0, false, false, false);
 1.18144 +  DECLARE_0 = $ElementName_0(new ElementName(), 'declare', 'declare', 0, false, false, false);
 1.18145 +  DETAILS = $ElementName_0(new ElementName(), 'details', 'details', 51, true, false, false);
 1.18146 +  ELLIPSE = $ElementName_0(new ElementName(), 'ellipse', 'ellipse', 0, false, false, false);
 1.18147 +  FEFUNCA = $ElementName_0(new ElementName(), 'fefunca', 'feFuncA', 0, false, false, false);
 1.18148 +  FEFUNCB = $ElementName_0(new ElementName(), 'fefuncb', 'feFuncB', 0, false, false, false);
 1.18149 +  FEBLEND = $ElementName_0(new ElementName(), 'feblend', 'feBlend', 0, false, false, false);
 1.18150 +  FEFLOOD = $ElementName_0(new ElementName(), 'feflood', 'feFlood', 0, false, false, false);
 1.18151 +  FEIMAGE = $ElementName_0(new ElementName(), 'feimage', 'feImage', 0, false, false, false);
 1.18152 +  FEMERGE = $ElementName_0(new ElementName(), 'femerge', 'feMerge', 0, false, false, false);
 1.18153 +  FEFUNCG = $ElementName_0(new ElementName(), 'fefuncg', 'feFuncG', 0, false, false, false);
 1.18154 +  FEFUNCR = $ElementName_0(new ElementName(), 'fefuncr', 'feFuncR', 0, false, false, false);
 1.18155 +  HANDLER = $ElementName_0(new ElementName(), 'handler', 'handler', 0, false, false, false);
 1.18156 +  INVERSE = $ElementName_0(new ElementName(), 'inverse', 'inverse', 0, false, false, false);
 1.18157 +  IMPLIES = $ElementName_0(new ElementName(), 'implies', 'implies', 0, false, false, false);
 1.18158 +  ISINDEX = $ElementName_0(new ElementName(), 'isindex', 'isindex', 14, true, false, false);
 1.18159 +  LOGBASE = $ElementName_0(new ElementName(), 'logbase', 'logbase', 0, false, false, false);
 1.18160 +  LISTING = $ElementName_0(new ElementName(), 'listing', 'listing', 44, true, false, false);
 1.18161 +  MFENCED = $ElementName_0(new ElementName(), 'mfenced', 'mfenced', 0, false, false, false);
 1.18162 +  MPADDED = $ElementName_0(new ElementName(), 'mpadded', 'mpadded', 0, false, false, false);
 1.18163 +  MARQUEE = $ElementName_0(new ElementName(), 'marquee', 'marquee', 43, false, true, false);
 1.18164 +  MACTION = $ElementName_0(new ElementName(), 'maction', 'maction', 0, false, false, false);
 1.18165 +  MSUBSUP = $ElementName_0(new ElementName(), 'msubsup', 'msubsup', 0, false, false, false);
 1.18166 +  NOEMBED = $ElementName_0(new ElementName(), 'noembed', 'noembed', 60, true, false, false);
 1.18167 +  POLYGON = $ElementName_0(new ElementName(), 'polygon', 'polygon', 0, false, false, false);
 1.18168 +  PATTERN_0 = $ElementName_0(new ElementName(), 'pattern', 'pattern', 0, false, false, false);
 1.18169 +  PRODUCT = $ElementName_0(new ElementName(), 'product', 'product', 0, false, false, false);
 1.18170 +  SETDIFF = $ElementName_0(new ElementName(), 'setdiff', 'setdiff', 0, false, false, false);
 1.18171 +  SECTION = $ElementName_0(new ElementName(), 'section', 'section', 51, true, false, false);
 1.18172 +  TENDSTO = $ElementName_0(new ElementName(), 'tendsto', 'tendsto', 0, false, false, false);
 1.18173 +  UPLIMIT = $ElementName_0(new ElementName(), 'uplimit', 'uplimit', 0, false, false, false);
 1.18174 +  ALTGLYPH = $ElementName_0(new ElementName(), 'altglyph', 'altGlyph', 0, false, false, false);
 1.18175 +  BASEFONT = $ElementName_0(new ElementName(), 'basefont', 'basefont', 49, true, false, false);
 1.18176 +  CLIPPATH = $ElementName_0(new ElementName(), 'clippath', 'clipPath', 0, false, false, false);
 1.18177 +  CODOMAIN = $ElementName_0(new ElementName(), 'codomain', 'codomain', 0, false, false, false);
 1.18178 +  COLGROUP = $ElementName_0(new ElementName(), 'colgroup', 'colgroup', 8, true, false, false);
 1.18179 +  DATAGRID = $ElementName_0(new ElementName(), 'datagrid', 'datagrid', 51, true, false, false);
 1.18180 +  EMPTYSET = $ElementName_0(new ElementName(), 'emptyset', 'emptyset', 0, false, false, false);
 1.18181 +  FACTOROF = $ElementName_0(new ElementName(), 'factorof', 'factorof', 0, false, false, false);
 1.18182 +  FIELDSET = $ElementName_0(new ElementName(), 'fieldset', 'fieldset', 61, true, false, false);
 1.18183 +  FRAMESET = $ElementName_0(new ElementName(), 'frameset', 'frameset', 11, true, false, false);
 1.18184 +  FEOFFSET = $ElementName_0(new ElementName(), 'feoffset', 'feOffset', 0, false, false, false);
 1.18185 +  GLYPHREF_0 = $ElementName_0(new ElementName(), 'glyphref', 'glyphRef', 0, false, false, false);
 1.18186 +  INTERVAL = $ElementName_0(new ElementName(), 'interval', 'interval', 0, false, false, false);
 1.18187 +  INTEGERS = $ElementName_0(new ElementName(), 'integers', 'integers', 0, false, false, false);
 1.18188 +  INFINITY = $ElementName_0(new ElementName(), 'infinity', 'infinity', 0, false, false, false);
 1.18189 +  LISTENER = $ElementName_0(new ElementName(), 'listener', 'listener', 0, false, false, false);
 1.18190 +  LOWLIMIT = $ElementName_0(new ElementName(), 'lowlimit', 'lowlimit', 0, false, false, false);
 1.18191 +  METADATA = $ElementName_0(new ElementName(), 'metadata', 'metadata', 0, false, false, false);
 1.18192 +  MENCLOSE = $ElementName_0(new ElementName(), 'menclose', 'menclose', 0, false, false, false);
 1.18193 +  MPHANTOM = $ElementName_0(new ElementName(), 'mphantom', 'mphantom', 0, false, false, false);
 1.18194 +  NOFRAMES = $ElementName_0(new ElementName(), 'noframes', 'noframes', 25, true, false, false);
 1.18195 +  NOSCRIPT = $ElementName_0(new ElementName(), 'noscript', 'noscript', 26, true, false, false);
 1.18196 +  OPTGROUP = $ElementName_0(new ElementName(), 'optgroup', 'optgroup', 27, true, false, false);
 1.18197 +  POLYLINE = $ElementName_0(new ElementName(), 'polyline', 'polyline', 0, false, false, false);
 1.18198 +  PREFETCH = $ElementName_0(new ElementName(), 'prefetch', 'prefetch', 0, false, false, false);
 1.18199 +  PROGRESS = $ElementName_0(new ElementName(), 'progress', 'progress', 0, false, false, false);
 1.18200 +  PRSUBSET = $ElementName_0(new ElementName(), 'prsubset', 'prsubset', 0, false, false, false);
 1.18201 +  QUOTIENT = $ElementName_0(new ElementName(), 'quotient', 'quotient', 0, false, false, false);
 1.18202 +  SELECTOR = $ElementName_0(new ElementName(), 'selector', 'selector', 0, false, false, false);
 1.18203 +  TEXTAREA = $ElementName_0(new ElementName(), 'textarea', 'textarea', 35, true, false, false);
 1.18204 +  TEXTPATH = $ElementName_0(new ElementName(), 'textpath', 'textPath', 0, false, false, false);
 1.18205 +  VARIANCE = $ElementName_0(new ElementName(), 'variance', 'variance', 0, false, false, false);
 1.18206 +  ANIMATION = $ElementName_0(new ElementName(), 'animation', 'animation', 0, false, false, false);
 1.18207 +  CONJUGATE = $ElementName_0(new ElementName(), 'conjugate', 'conjugate', 0, false, false, false);
 1.18208 +  CONDITION = $ElementName_0(new ElementName(), 'condition', 'condition', 0, false, false, false);
 1.18209 +  COMPLEXES = $ElementName_0(new ElementName(), 'complexes', 'complexes', 0, false, false, false);
 1.18210 +  FONT_FACE = $ElementName_0(new ElementName(), 'font-face', 'font-face', 0, false, false, false);
 1.18211 +  FACTORIAL = $ElementName_0(new ElementName(), 'factorial', 'factorial', 0, false, false, false);
 1.18212 +  INTERSECT = $ElementName_0(new ElementName(), 'intersect', 'intersect', 0, false, false, false);
 1.18213 +  IMAGINARY = $ElementName_0(new ElementName(), 'imaginary', 'imaginary', 0, false, false, false);
 1.18214 +  LAPLACIAN = $ElementName_0(new ElementName(), 'laplacian', 'laplacian', 0, false, false, false);
 1.18215 +  MATRIXROW = $ElementName_0(new ElementName(), 'matrixrow', 'matrixrow', 0, false, false, false);
 1.18216 +  NOTSUBSET = $ElementName_0(new ElementName(), 'notsubset', 'notsubset', 0, false, false, false);
 1.18217 +  OTHERWISE = $ElementName_0(new ElementName(), 'otherwise', 'otherwise', 0, false, false, false);
 1.18218 +  PIECEWISE = $ElementName_0(new ElementName(), 'piecewise', 'piecewise', 0, false, false, false);
 1.18219 +  PLAINTEXT = $ElementName_0(new ElementName(), 'plaintext', 'plaintext', 30, true, false, false);
 1.18220 +  RATIONALS = $ElementName_0(new ElementName(), 'rationals', 'rationals', 0, false, false, false);
 1.18221 +  SEMANTICS = $ElementName_0(new ElementName(), 'semantics', 'semantics', 0, false, false, false);
 1.18222 +  TRANSPOSE = $ElementName_0(new ElementName(), 'transpose', 'transpose', 0, false, false, false);
 1.18223 +  ANNOTATION = $ElementName_0(new ElementName(), 'annotation', 'annotation', 0, false, false, false);
 1.18224 +  BLOCKQUOTE = $ElementName_0(new ElementName(), 'blockquote', 'blockquote', 50, true, false, false);
 1.18225 +  DIVERGENCE = $ElementName_0(new ElementName(), 'divergence', 'divergence', 0, false, false, false);
 1.18226 +  EULERGAMMA = $ElementName_0(new ElementName(), 'eulergamma', 'eulergamma', 0, false, false, false);
 1.18227 +  EQUIVALENT = $ElementName_0(new ElementName(), 'equivalent', 'equivalent', 0, false, false, false);
 1.18228 +  IMAGINARYI = $ElementName_0(new ElementName(), 'imaginaryi', 'imaginaryi', 0, false, false, false);
 1.18229 +  MALIGNMARK = $ElementName_0(new ElementName(), 'malignmark', 'malignmark', 56, false, false, false);
 1.18230 +  MUNDEROVER = $ElementName_0(new ElementName(), 'munderover', 'munderover', 0, false, false, false);
 1.18231 +  MLABELEDTR = $ElementName_0(new ElementName(), 'mlabeledtr', 'mlabeledtr', 0, false, false, false);
 1.18232 +  NOTANUMBER = $ElementName_0(new ElementName(), 'notanumber', 'notanumber', 0, false, false, false);
 1.18233 +  SOLIDCOLOR = $ElementName_0(new ElementName(), 'solidcolor', 'solidcolor', 0, false, false, false);
 1.18234 +  ALTGLYPHDEF = $ElementName_0(new ElementName(), 'altglyphdef', 'altGlyphDef', 0, false, false, false);
 1.18235 +  DETERMINANT = $ElementName_0(new ElementName(), 'determinant', 'determinant', 0, false, false, false);
 1.18236 +  EVENTSOURCE = $ElementName_0(new ElementName(), 'eventsource', 'eventsource', 54, true, false, false);
 1.18237 +  FEMERGENODE = $ElementName_0(new ElementName(), 'femergenode', 'feMergeNode', 0, false, false, false);
 1.18238 +  FECOMPOSITE = $ElementName_0(new ElementName(), 'fecomposite', 'feComposite', 0, false, false, false);
 1.18239 +  FESPOTLIGHT = $ElementName_0(new ElementName(), 'fespotlight', 'feSpotLight', 0, false, false, false);
 1.18240 +  MALIGNGROUP = $ElementName_0(new ElementName(), 'maligngroup', 'maligngroup', 0, false, false, false);
 1.18241 +  MPRESCRIPTS = $ElementName_0(new ElementName(), 'mprescripts', 'mprescripts', 0, false, false, false);
 1.18242 +  MOMENTABOUT = $ElementName_0(new ElementName(), 'momentabout', 'momentabout', 0, false, false, false);
 1.18243 +  NOTPRSUBSET = $ElementName_0(new ElementName(), 'notprsubset', 'notprsubset', 0, false, false, false);
 1.18244 +  PARTIALDIFF = $ElementName_0(new ElementName(), 'partialdiff', 'partialdiff', 0, false, false, false);
 1.18245 +  ALTGLYPHITEM = $ElementName_0(new ElementName(), 'altglyphitem', 'altGlyphItem', 0, false, false, false);
 1.18246 +  ANIMATECOLOR = $ElementName_0(new ElementName(), 'animatecolor', 'animateColor', 0, false, false, false);
 1.18247 +  DATATEMPLATE = $ElementName_0(new ElementName(), 'datatemplate', 'datatemplate', 0, false, false, false);
 1.18248 +  EXPONENTIALE = $ElementName_0(new ElementName(), 'exponentiale', 'exponentiale', 0, false, false, false);
 1.18249 +  FETURBULENCE = $ElementName_0(new ElementName(), 'feturbulence', 'feTurbulence', 0, false, false, false);
 1.18250 +  FEPOINTLIGHT = $ElementName_0(new ElementName(), 'fepointlight', 'fePointLight', 0, false, false, false);
 1.18251 +  FEMORPHOLOGY = $ElementName_0(new ElementName(), 'femorphology', 'feMorphology', 0, false, false, false);
 1.18252 +  OUTERPRODUCT = $ElementName_0(new ElementName(), 'outerproduct', 'outerproduct', 0, false, false, false);
 1.18253 +  ANIMATEMOTION = $ElementName_0(new ElementName(), 'animatemotion', 'animateMotion', 0, false, false, false);
 1.18254 +  COLOR_PROFILE_0 = $ElementName_0(new ElementName(), 'color-profile', 'color-profile', 0, false, false, false);
 1.18255 +  FONT_FACE_SRC = $ElementName_0(new ElementName(), 'font-face-src', 'font-face-src', 0, false, false, false);
 1.18256 +  FONT_FACE_URI = $ElementName_0(new ElementName(), 'font-face-uri', 'font-face-uri', 0, false, false, false);
 1.18257 +  FOREIGNOBJECT = $ElementName_0(new ElementName(), 'foreignobject', 'foreignObject', 59, false, false, false);
 1.18258 +  FECOLORMATRIX = $ElementName_0(new ElementName(), 'fecolormatrix', 'feColorMatrix', 0, false, false, false);
 1.18259 +  MISSING_GLYPH = $ElementName_0(new ElementName(), 'missing-glyph', 'missing-glyph', 0, false, false, false);
 1.18260 +  MMULTISCRIPTS = $ElementName_0(new ElementName(), 'mmultiscripts', 'mmultiscripts', 0, false, false, false);
 1.18261 +  SCALARPRODUCT = $ElementName_0(new ElementName(), 'scalarproduct', 'scalarproduct', 0, false, false, false);
 1.18262 +  VECTORPRODUCT = $ElementName_0(new ElementName(), 'vectorproduct', 'vectorproduct', 0, false, false, false);
 1.18263 +  ANNOTATION_XML = $ElementName_0(new ElementName(), 'annotation-xml', 'annotation-xml', 58, false, false, false);
 1.18264 +  DEFINITION_SRC = $ElementName_0(new ElementName(), 'definition-src', 'definition-src', 0, false, false, false);
 1.18265 +  FONT_FACE_NAME = $ElementName_0(new ElementName(), 'font-face-name', 'font-face-name', 0, false, false, false);
 1.18266 +  FEGAUSSIANBLUR = $ElementName_0(new ElementName(), 'fegaussianblur', 'feGaussianBlur', 0, false, false, false);
 1.18267 +  FEDISTANTLIGHT = $ElementName_0(new ElementName(), 'fedistantlight', 'feDistantLight', 0, false, false, false);
 1.18268 +  LINEARGRADIENT = $ElementName_0(new ElementName(), 'lineargradient', 'linearGradient', 0, false, false, false);
 1.18269 +  NATURALNUMBERS = $ElementName_0(new ElementName(), 'naturalnumbers', 'naturalnumbers', 0, false, false, false);
 1.18270 +  RADIALGRADIENT = $ElementName_0(new ElementName(), 'radialgradient', 'radialGradient', 0, false, false, false);
 1.18271 +  ANIMATETRANSFORM = $ElementName_0(new ElementName(), 'animatetransform', 'animateTransform', 0, false, false, false);
 1.18272 +  CARTESIANPRODUCT = $ElementName_0(new ElementName(), 'cartesianproduct', 'cartesianproduct', 0, false, false, false);
 1.18273 +  FONT_FACE_FORMAT = $ElementName_0(new ElementName(), 'font-face-format', 'font-face-format', 0, false, false, false);
 1.18274 +  FECONVOLVEMATRIX = $ElementName_0(new ElementName(), 'feconvolvematrix', 'feConvolveMatrix', 0, false, false, false);
 1.18275 +  FEDIFFUSELIGHTING = $ElementName_0(new ElementName(), 'fediffuselighting', 'feDiffuseLighting', 0, false, false, false);
 1.18276 +  FEDISPLACEMENTMAP = $ElementName_0(new ElementName(), 'fedisplacementmap', 'feDisplacementMap', 0, false, false, false);
 1.18277 +  FESPECULARLIGHTING = $ElementName_0(new ElementName(), 'fespecularlighting', 'feSpecularLighting', 0, false, false, false);
 1.18278 +  DOMAINOFAPPLICATION = $ElementName_0(new ElementName(), 'domainofapplication', 'domainofapplication', 0, false, false, false);
 1.18279 +  FECOMPONENTTRANSFER = $ElementName_0(new ElementName(), 'fecomponenttransfer', 'feComponentTransfer', 0, false, false, false);
 1.18280 +  ELEMENT_NAMES = initValues(_3Lnu_validator_htmlparser_impl_ElementName_2_classLit, 50, 10, [A, B, G, I, P, Q, S, U, BR, CI, CN, DD, DL, DT, EM, EQ, FN, H1, H2, H3, H4, H5, H6, GT, HR, IN_0, LI, LN, LT, MI, MN, MO, MS, OL, OR, PI, RP, RT_0, TD, TH, TR, TT, UL, AND, ARG, ABS, BIG, BDO, CSC, COL, COS, COT, DEL, DFN, DIR_0, DIV, EXP, GCD, GEQ, IMG, INS, INT, KBD, LOG, LCM, LEQ, MTD, MIN_0, MAP, MTR, MAX_0, NEQ, NOT, NAV, PRE, REM, SUB, SEC, SVG, SUM, SIN, SEP, SUP, SET, TAN, USE, VAR, WBR, XMP, XOR, AREA, ABBR_0, BASE_0, BVAR, BODY, CARD, CODE_0, CITE_0, CSCH, COSH, COTH, CURL, DESC, DIFF, DEFS, FORM_0, FONT, GRAD, HEAD, HTML_0, LINE, LINK_0, LIST_0, META, MSUB, MODE_0, MATH, MARK, MASK_0, MEAN, MSUP, MENU, MROW, NONE, NOBR, NEST, PATH_0, PLUS, RULE, REAL, RELN, RECT, ROOT, RUBY, SECH, SINH, SPAN_0, SAMP, STOP, SDEV, TIME, TRUE, TREF, TANH, TEXT_0, VIEW, ASIDE, AUDIO, APPLY, EMBED, FRAME_0, FALSE, FLOOR, GLYPH, HKERN, IMAGE, IDENT, INPUT, LABEL_0, LIMIT, MFRAC, MPATH, METER, MOVER, MINUS, MROOT, MSQRT, MTEXT, NOTIN, PIECE, PARAM, POWER, REALS, STYLE_0, SMALL, THEAD, TABLE, TITLE_0, TSPAN, TIMES, TFOOT, TBODY, UNION, VKERN, VIDEO, ARCSEC, ARCCSC, ARCTAN, ARCSIN, ARCCOS, APPLET, ARCCOT, APPROX, BUTTON, CIRCLE, CENTER, CURSOR_0, CANVAS, DIVIDE, DEGREE, DIALOG, DOMAIN, EXISTS, FETILE, FIGURE, FORALL, FILTER_0, FOOTER, HEADER, IFRAME, KEYGEN, LAMBDA, LEGEND, MSPACE, MTABLE, MSTYLE, MGLYPH, MEDIAN, MUNDER, MARKER, MERROR, MOMENT, MATRIX, OPTION, OBJECT_0, OUTPUT, PRIMES, SOURCE, STRIKE, STRONG, SWITCH, SYMBOL, SPACER, SELECT, SUBSET, SCRIPT, TBREAK, VECTOR, ARTICLE, ANIMATE, ARCSECH, ARCCSCH, ARCTANH, ARCSINH, ARCCOSH, ARCCOTH, ACRONYM, ADDRESS, BGSOUND, COMMAND, COMPOSE, CEILING, CSYMBOL, CAPTION, DISCARD, DECLARE_0, DETAILS, ELLIPSE, FEFUNCA, FEFUNCB, FEBLEND, FEFLOOD, FEIMAGE, FEMERGE, FEFUNCG, FEFUNCR, HANDLER, INVERSE, IMPLIES, ISINDEX, LOGBASE, LISTING, MFENCED, MPADDED, MARQUEE, MACTION, MSUBSUP, NOEMBED, POLYGON, PATTERN_0, PRODUCT, SETDIFF, SECTION, TENDSTO, UPLIMIT, ALTGLYPH, BASEFONT, CLIPPATH, CODOMAIN, COLGROUP, DATAGRID, EMPTYSET, FACTOROF, FIELDSET, FRAMESET, FEOFFSET, GLYPHREF_0, INTERVAL, INTEGERS, INFINITY, LISTENER, LOWLIMIT, METADATA, MENCLOSE, MPHANTOM, NOFRAMES, NOSCRIPT, OPTGROUP, POLYLINE, PREFETCH, PROGRESS, PRSUBSET, QUOTIENT, SELECTOR, TEXTAREA, TEXTPATH, VARIANCE, ANIMATION, CONJUGATE, CONDITION, COMPLEXES, FONT_FACE, FACTORIAL, INTERSECT, IMAGINARY, LAPLACIAN, MATRIXROW, NOTSUBSET, OTHERWISE, PIECEWISE, PLAINTEXT, RATIONALS, SEMANTICS, TRANSPOSE, ANNOTATION, BLOCKQUOTE, DIVERGENCE, EULERGAMMA, EQUIVALENT, IMAGINARYI, MALIGNMARK, MUNDEROVER, MLABELEDTR, NOTANUMBER, SOLIDCOLOR, ALTGLYPHDEF, DETERMINANT, EVENTSOURCE, FEMERGENODE, FECOMPOSITE, FESPOTLIGHT, MALIGNGROUP, MPRESCRIPTS, MOMENTABOUT, NOTPRSUBSET, PARTIALDIFF, ALTGLYPHITEM, ANIMATECOLOR, DATATEMPLATE, EXPONENTIALE, FETURBULENCE, FEPOINTLIGHT, FEMORPHOLOGY, OUTERPRODUCT, ANIMATEMOTION, COLOR_PROFILE_0, FONT_FACE_SRC, FONT_FACE_URI, FOREIGNOBJECT, FECOLORMATRIX, MISSING_GLYPH, MMULTISCRIPTS, SCALARPRODUCT, VECTORPRODUCT, ANNOTATION_XML, DEFINITION_SRC, FONT_FACE_NAME, FEGAUSSIANBLUR, FEDISTANTLIGHT, LINEARGRADIENT, NATURALNUMBERS, RADIALGRADIENT, ANIMATETRANSFORM, CARTESIANPRODUCT, FONT_FACE_FORMAT, FECONVOLVEMATRIX, FEDIFFUSELIGHTING, FEDISPLACEMENTMAP, FESPECULARLIGHTING, DOMAINOFAPPLICATION, FECOMPONENTTRANSFER]);
 1.18281 +  ELEMENT_HASHES = initValues(_3I_classLit, 0, -1, [1057, 1090, 1255, 1321, 1552, 1585, 1651, 1717, 68162, 68899, 69059, 69764, 70020, 70276, 71077, 71205, 72134, 72232, 72264, 72296, 72328, 72360, 72392, 73351, 74312, 75209, 78124, 78284, 78476, 79149, 79309, 79341, 79469, 81295, 81487, 82224, 84498, 84626, 86164, 86292, 86612, 86676, 87445, 3183041, 3186241, 3198017, 3218722, 3226754, 3247715, 3256803, 3263971, 3264995, 3289252, 3291332, 3295524, 3299620, 3326725, 3379303, 3392679, 3448233, 3460553, 3461577, 3510347, 3546604, 3552364, 3556524, 3576461, 3586349, 3588141, 3590797, 3596333, 3622062, 3625454, 3627054, 3675728, 3749042, 3771059, 3771571, 3776211, 3782323, 3782963, 3784883, 3785395, 3788979, 3815476, 3839605, 3885110, 3917911, 3948984, 3951096, 135304769, 135858241, 136498210, 136906434, 137138658, 137512995, 137531875, 137548067, 137629283, 137645539, 137646563, 137775779, 138529956, 138615076, 139040932, 140954086, 141179366, 141690439, 142738600, 143013512, 146979116, 147175724, 147475756, 147902637, 147936877, 148017645, 148131885, 148228141, 148229165, 148309165, 148395629, 148551853, 148618829, 149076462, 149490158, 149572782, 151277616, 151639440, 153268914, 153486514, 153563314, 153750706, 153763314, 153914034, 154406067, 154417459, 154600979, 154678323, 154680979, 154866835, 155366708, 155375188, 155391572, 155465780, 155869364, 158045494, 168988979, 169321621, 169652752, 173151309, 174240818, 174247297, 174669292, 175391532, 176638123, 177380397, 177879204, 177886734, 180753473, 181020073, 181503558, 181686320, 181999237, 181999311, 182048201, 182074866, 182078003, 182083764, 182920847, 184716457, 184976961, 185145071, 187281445, 187872052, 188100653, 188875944, 188919873, 188920457, 189203987, 189371817, 189414886, 189567458, 190266670, 191318187, 191337609, 202479203, 202493027, 202835587, 202843747, 203013219, 203036048, 203045987, 203177552, 203898516, 204648562, 205067918, 205078130, 205096654, 205689142, 205690439, 205766017, 205988909, 207213161, 207794484, 207800999, 208023602, 208213644, 208213647, 210310273, 210940978, 213325049, 213946445, 214055079, 215125040, 215134273, 215135028, 215237420, 215418148, 215553166, 215553394, 215563858, 215627949, 215754324, 217529652, 217713834, 217732628, 218731945, 221417045, 221424946, 221493746, 221515401, 221658189, 221844577, 221908140, 221910626, 221921586, 222659762, 225001091, 236105833, 236113965, 236194995, 236195427, 236206132, 236206387, 236211683, 236212707, 236381647, 236571826, 237124271, 238172205, 238210544, 238270764, 238435405, 238501172, 239224867, 239257644, 239710497, 240307721, 241208789, 241241557, 241318060, 241319404, 241343533, 241344069, 241405397, 241765845, 243864964, 244502085, 244946220, 245109902, 247647266, 247707956, 248648814, 248648836, 248682161, 248986932, 249058914, 249697357, 252132601, 252135604, 252317348, 255007012, 255278388, 256365156, 257566121, 269763372, 271202790, 271863856, 272049197, 272127474, 272770631, 274339449, 274939471, 275388004, 275388005, 275388006, 275977800, 278267602, 278513831, 278712622, 281613765, 281683369, 282120228, 282250732, 282508942, 283743649, 283787570, 284710386, 285391148, 285478533, 285854898, 285873762, 286931113, 288964227, 289445441, 289689648, 291671489, 303512884, 305319975, 305610036, 305764101, 308448294, 308675890, 312085683, 312264750, 315032867, 316391000, 317331042, 317902135, 318950711, 319447220, 321499182, 322538804, 323145200, 337067316, 337826293, 339905989, 340833697, 341457068, 345302593, 349554733, 349771471, 349786245, 350819405, 356072847, 370349192, 373962798, 374509141, 375558638, 375574835, 376053993, 383276530, 383373833, 383407586, 384439906, 386079012, 404133513, 404307343, 407031852, 408072233, 409112005, 409608425, 409771500, 419040932, 437730612, 439529766, 442616365, 442813037, 443157674, 443295316, 450118444, 450482697, 456789668, 459935396, 471217869, 474073645, 476230702, 476665218, 476717289, 483014825, 485083298, 489306281, 538364390, 540675748, 543819186, 543958612, 576960820, 577242548, 610515252, 642202932, 644420819]);
 1.18282 +}
 1.18283 +
 1.18284 +function $ElementName_0(this$static, name, camelCaseName, group, special, scoping, fosterParenting){
 1.18285 +  $clinit_89();
 1.18286 +  this$static.name_0 = name;
 1.18287 +  this$static.camelCaseName = camelCaseName;
 1.18288 +  this$static.group = group;
 1.18289 +  this$static.special = special;
 1.18290 +  this$static.scoping = scoping;
 1.18291 +  this$static.fosterParenting = fosterParenting;
 1.18292 +  this$static.custom = false;
 1.18293 +  return this$static;
 1.18294 +}
 1.18295 +
 1.18296 +function $ElementName(this$static, name){
 1.18297 +  $clinit_89();
 1.18298 +  this$static.name_0 = name;
 1.18299 +  this$static.camelCaseName = name;
 1.18300 +  this$static.group = 0;
 1.18301 +  this$static.special = false;
 1.18302 +  this$static.scoping = false;
 1.18303 +  this$static.fosterParenting = false;
 1.18304 +  this$static.custom = true;
 1.18305 +  return this$static;
 1.18306 +}
 1.18307 +
 1.18308 +function bufToHash_0(buf, len){
 1.18309 +  var hash, i, j;
 1.18310 +  hash = len;
 1.18311 +  hash <<= 5;
 1.18312 +  hash += buf[0] - 96;
 1.18313 +  j = len;
 1.18314 +  for (i = 0; i < 4 && j > 0; ++i) {
 1.18315 +    --j;
 1.18316 +    hash <<= 5;
 1.18317 +    hash += buf[j] - 96;
 1.18318 +  }
 1.18319 +  return hash;
 1.18320 +}
 1.18321 +
 1.18322 +function elementNameByBuffer(buf, offset, length){
 1.18323 +  var end, end_0;
 1.18324 +  $clinit_89();
 1.18325 +  var elementName, hash, index, name;
 1.18326 +  hash = bufToHash_0(buf, length);
 1.18327 +  index = binarySearch(ELEMENT_HASHES, hash);
 1.18328 +  if (index < 0) {
 1.18329 +    return $ElementName(new ElementName(), String((end = offset + length , __checkBounds(buf.length, offset, end) , __valueOf(buf, offset, end))));
 1.18330 +  }
 1.18331 +   else {
 1.18332 +    elementName = ELEMENT_NAMES[index];
 1.18333 +    name = elementName.name_0;
 1.18334 +    if (!localEqualsBuffer(name, buf, offset, length)) {
 1.18335 +      return $ElementName(new ElementName(), String((end_0 = offset + length , __checkBounds(buf.length, offset, end_0) , __valueOf(buf, offset, end_0))));
 1.18336 +    }
 1.18337 +    return elementName;
 1.18338 +  }
 1.18339 +}
 1.18340 +
 1.18341 +function getClass_51(){
 1.18342 +  return Lnu_validator_htmlparser_impl_ElementName_2_classLit;
 1.18343 +}
 1.18344 +
 1.18345 +function ElementName(){
 1.18346 +}
 1.18347 +
 1.18348 +_ = ElementName.prototype = new Object_0();
 1.18349 +_.getClass$ = getClass_51;
 1.18350 +_.typeId$ = 37;
 1.18351 +_.camelCaseName = null;
 1.18352 +_.custom = false;
 1.18353 +_.fosterParenting = false;
 1.18354 +_.group = 0;
 1.18355 +_.name_0 = null;
 1.18356 +_.scoping = false;
 1.18357 +_.special = false;
 1.18358 +var A, ABBR_0, ABS, ACRONYM, ADDRESS, ALTGLYPH, ALTGLYPHDEF, ALTGLYPHITEM, AND, ANIMATE, ANIMATECOLOR, ANIMATEMOTION, ANIMATETRANSFORM, ANIMATION, ANNOTATION, ANNOTATION_XML, APPLET, APPLY, APPROX, ARCCOS, ARCCOSH, ARCCOT, ARCCOTH, ARCCSC, ARCCSCH, ARCSEC, ARCSECH, ARCSIN, ARCSINH, ARCTAN, ARCTANH, AREA, ARG, ARTICLE, ASIDE, AUDIO, B, BASE_0, BASEFONT, BDO, BGSOUND, BIG, BLOCKQUOTE, BODY, BR, BUTTON, BVAR, CANVAS, CAPTION, CARD, CARTESIANPRODUCT, CEILING, CENTER, CI, CIRCLE, CITE_0, CLIPPATH, CN, CODE_0, CODOMAIN, COL, COLGROUP, COLOR_PROFILE_0, COMMAND, COMPLEXES, COMPOSE, CONDITION, CONJUGATE, COS, COSH, COT, COTH, CSC, CSCH, CSYMBOL, CURL, CURSOR_0, DATAGRID, DATATEMPLATE, DD, DECLARE_0, DEFINITION_SRC, DEFS, DEGREE, DEL, DESC, DETAILS, DETERMINANT, DFN, DIALOG, DIFF, DIR_0, DISCARD, DIV, DIVERGENCE, DIVIDE, DL, DOMAIN, DOMAINOFAPPLICATION, DT, ELEMENT_HASHES, ELEMENT_NAMES, ELLIPSE, EM, EMBED, EMPTYSET, EQ, EQUIVALENT, EULERGAMMA, EVENTSOURCE, EXISTS, EXP, EXPONENTIALE, FACTORIAL, FACTOROF, FALSE, FEBLEND, FECOLORMATRIX, FECOMPONENTTRANSFER, FECOMPOSITE, FECONVOLVEMATRIX, FEDIFFUSELIGHTING, FEDISPLACEMENTMAP, FEDISTANTLIGHT, FEFLOOD, FEFUNCA, FEFUNCB, FEFUNCG, FEFUNCR, FEGAUSSIANBLUR, FEIMAGE, FEMERGE, FEMERGENODE, FEMORPHOLOGY, FEOFFSET, FEPOINTLIGHT, FESPECULARLIGHTING, FESPOTLIGHT, FETILE, FETURBULENCE, FIELDSET, FIGURE, FILTER_0, FLOOR, FN, FONT, FONT_FACE, FONT_FACE_FORMAT, FONT_FACE_NAME, FONT_FACE_SRC, FONT_FACE_URI, FOOTER, FORALL, FOREIGNOBJECT, FORM_0, FRAME_0, FRAMESET, G, GCD, GEQ, GLYPH, GLYPHREF_0, GRAD, GT, H1, H2, H3, H4, H5, H6, HANDLER, HEAD, HEADER, HKERN, HR, HTML_0, I, IDENT, IFRAME, IMAGE, IMAGINARY, IMAGINARYI, IMG, IMPLIES, IN_0, INFINITY, INPUT, INS, INT, INTEGERS, INTERSECT, INTERVAL, INVERSE, ISINDEX, KBD, KEYGEN, LABEL_0, LAMBDA, LAPLACIAN, LCM, LEGEND, LEQ, LI, LIMIT, LINE, LINEARGRADIENT, LINK_0, LIST_0, LISTENER, LISTING, LN, LOG, LOGBASE, LOWLIMIT, LT, MACTION, MALIGNGROUP, MALIGNMARK, MAP, MARK, MARKER, MARQUEE, MASK_0, MATH, MATRIX, MATRIXROW, MAX_0, MEAN, MEDIAN, MENCLOSE, MENU, MERROR, META, METADATA, METER, MFENCED, MFRAC, MGLYPH, MI, MIN_0, MINUS, MISSING_GLYPH, MLABELEDTR, MMULTISCRIPTS, MN, MO, MODE_0, MOMENT, MOMENTABOUT, MOVER, MPADDED, MPATH, MPHANTOM, MPRESCRIPTS, MROOT, MROW, MS, MSPACE, MSQRT, MSTYLE, MSUB, MSUBSUP, MSUP, MTABLE, MTD, MTEXT, MTR, MUNDER, MUNDEROVER, NATURALNUMBERS, NAV, NEQ, NEST, NOBR, NOEMBED, NOFRAMES, NONE, NOSCRIPT, NOT, NOTANUMBER, NOTIN, NOTPRSUBSET, NOTSUBSET, OBJECT_0, OL, OPTGROUP, OPTION, OR, OTHERWISE, OUTERPRODUCT, OUTPUT, P, PARAM, PARTIALDIFF, PATH_0, PATTERN_0, PI, PIECE, PIECEWISE, PLAINTEXT, PLUS, POLYGON, POLYLINE, POWER, PRE, PREFETCH, PRIMES, PRODUCT, PROGRESS, PRSUBSET, Q, QUOTIENT, RADIALGRADIENT, RATIONALS, REAL, REALS, RECT, RELN, REM, ROOT, RP, RT_0, RUBY, RULE, S, SAMP, SCALARPRODUCT, SCRIPT, SDEV, SEC, SECH, SECTION, SELECT, SELECTOR, SEMANTICS, SEP, SET, SETDIFF, SIN, SINH, SMALL, SOLIDCOLOR, SOURCE, SPACER, SPAN_0, STOP, STRIKE, STRONG, STYLE_0, SUB, SUBSET, SUM, SUP, SVG, SWITCH, SYMBOL, TABLE, TAN, TANH, TBODY, TBREAK, TD, TENDSTO, TEXT_0, TEXTAREA, TEXTPATH, TFOOT, TH, THEAD, TIME, TIMES, TITLE_0, TR, TRANSPOSE, TREF, TRUE, TSPAN, TT, U, UL, UNION, UPLIMIT, USE, VAR, VARIANCE, VECTOR, VECTORPRODUCT, VIDEO, VIEW, VKERN, WBR, XMP, XOR;
 1.18359 +function $clinit_97(){
 1.18360 +  $clinit_97 = nullMethod;
 1.18361 +  LT_GT = initValues(_3C_classLit, 42, -1, [60, 62]);
 1.18362 +  LT_SOLIDUS = initValues(_3C_classLit, 42, -1, [60, 47]);
 1.18363 +  RSQB_RSQB = initValues(_3C_classLit, 42, -1, [93, 93]);
 1.18364 +  REPLACEMENT_CHARACTER = initValues(_3C_classLit, 42, -1, [65533]);
 1.18365 +  SPACE = initValues(_3C_classLit, 42, -1, [32]);
 1.18366 +  LF = initValues(_3C_classLit, 42, -1, [10]);
 1.18367 +  CDATA_LSQB = $toCharArray('CDATA[');
 1.18368 +  OCTYPE = $toCharArray('octype');
 1.18369 +  UBLIC = $toCharArray('ublic');
 1.18370 +  YSTEM = $toCharArray('ystem');
 1.18371 +  TITLE_ARR = initValues(_3C_classLit, 42, -1, [116, 105, 116, 108, 101]);
 1.18372 +  SCRIPT_ARR = initValues(_3C_classLit, 42, -1, [115, 99, 114, 105, 112, 116]);
 1.18373 +  STYLE_ARR = initValues(_3C_classLit, 42, -1, [115, 116, 121, 108, 101]);
 1.18374 +  PLAINTEXT_ARR = initValues(_3C_classLit, 42, -1, [112, 108, 97, 105, 110, 116, 101, 120, 116]);
 1.18375 +  XMP_ARR = initValues(_3C_classLit, 42, -1, [120, 109, 112]);
 1.18376 +  TEXTAREA_ARR = initValues(_3C_classLit, 42, -1, [116, 101, 120, 116, 97, 114, 101, 97]);
 1.18377 +  IFRAME_ARR = initValues(_3C_classLit, 42, -1, [105, 102, 114, 97, 109, 101]);
 1.18378 +  NOEMBED_ARR = initValues(_3C_classLit, 42, -1, [110, 111, 101, 109, 98, 101, 100]);
 1.18379 +  NOSCRIPT_ARR = initValues(_3C_classLit, 42, -1, [110, 111, 115, 99, 114, 105, 112, 116]);
 1.18380 +  NOFRAMES_ARR = initValues(_3C_classLit, 42, -1, [110, 111, 102, 114, 97, 109, 101, 115]);
 1.18381 +}
 1.18382 +
 1.18383 +function $addAttributeWithValue(this$static){
 1.18384 +  var value;
 1.18385 +  this$static.metaBoundaryPassed && ($clinit_89() , META) == this$static.tagName && ($clinit_87() , CHARSET) == this$static.attributeName;
 1.18386 +  if (this$static.attributeName) {
 1.18387 +    value = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
 1.18388 +    if (!this$static.endTag && this$static.html4 && this$static.html4ModeCompatibleWithXhtml1Schemata && $isCaseFolded(this$static.attributeName)) {
 1.18389 +      value = newAsciiLowerCaseStringFromString(value);
 1.18390 +    }
 1.18391 +    $addAttribute(this$static.attributes, this$static.attributeName, value, this$static.xmlnsPolicy);
 1.18392 +  }
 1.18393 +}
 1.18394 +
 1.18395 +function $addAttributeWithoutValue(this$static){
 1.18396 +  this$static.metaBoundaryPassed && ($clinit_87() , CHARSET) == this$static.attributeName && ($clinit_89() , META) == this$static.tagName;
 1.18397 +  if (this$static.attributeName) {
 1.18398 +    if (this$static.html4) {
 1.18399 +      if ($isBoolean(this$static.attributeName)) {
 1.18400 +        if (this$static.html4ModeCompatibleWithXhtml1Schemata) {
 1.18401 +          $addAttribute(this$static.attributes, this$static.attributeName, this$static.attributeName.local[0], this$static.xmlnsPolicy);
 1.18402 +        }
 1.18403 +         else {
 1.18404 +          $addAttribute(this$static.attributes, this$static.attributeName, '', this$static.xmlnsPolicy);
 1.18405 +        }
 1.18406 +      }
 1.18407 +       else {
 1.18408 +        $addAttribute(this$static.attributes, this$static.attributeName, '', this$static.xmlnsPolicy);
 1.18409 +      }
 1.18410 +    }
 1.18411 +     else {
 1.18412 +      if (($clinit_87() , SRC) == this$static.attributeName || HREF == this$static.attributeName) {
 1.18413 +        'Attribute \u201C' + this$static.attributeName.local[0] + '\u201D without an explicit value seen. The attribute may be dropped by IE7.';
 1.18414 +      }
 1.18415 +      $addAttribute(this$static.attributes, this$static.attributeName, '', this$static.xmlnsPolicy);
 1.18416 +    }
 1.18417 +  }
 1.18418 +}
 1.18419 +
 1.18420 +function $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, c){
 1.18421 +  switch (this$static.commentPolicy.ordinal) {
 1.18422 +    case 2:
 1.18423 +      --this$static.longStrBufLen;
 1.18424 +      $appendLongStrBuf(this$static, 32);
 1.18425 +      $appendLongStrBuf(this$static, 45);
 1.18426 +    case 0:
 1.18427 +      $appendLongStrBuf(this$static, c);
 1.18428 +      break;
 1.18429 +    case 1:
 1.18430 +      $fatal(this$static, 'The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment.');
 1.18431 +  }
 1.18432 +}
 1.18433 +
 1.18434 +function $appendLongStrBuf(this$static, c){
 1.18435 +  var newBuf;
 1.18436 +  if (this$static.longStrBufLen == this$static.longStrBuf.length) {
 1.18437 +    newBuf = initDim(_3C_classLit, 42, -1, this$static.longStrBufLen + (this$static.longStrBufLen >> 1), 1);
 1.18438 +    arraycopy(this$static.longStrBuf, 0, newBuf, 0, this$static.longStrBuf.length);
 1.18439 +    this$static.longStrBuf = newBuf;
 1.18440 +  }
 1.18441 +  this$static.longStrBuf[this$static.longStrBufLen++] = c;
 1.18442 +}
 1.18443 +
 1.18444 +function $appendLongStrBuf_0(this$static, buffer, offset, length){
 1.18445 +  var newBuf, reqLen;
 1.18446 +  reqLen = this$static.longStrBufLen + length;
 1.18447 +  if (this$static.longStrBuf.length < reqLen) {
 1.18448 +    newBuf = initDim(_3C_classLit, 42, -1, reqLen + (reqLen >> 1), 1);
 1.18449 +    arraycopy(this$static.longStrBuf, 0, newBuf, 0, this$static.longStrBuf.length);
 1.18450 +    this$static.longStrBuf = newBuf;
 1.18451 +  }
 1.18452 +  arraycopy(buffer, offset, this$static.longStrBuf, this$static.longStrBufLen, length);
 1.18453 +  this$static.longStrBufLen = reqLen;
 1.18454 +}
 1.18455 +
 1.18456 +function $appendSecondHyphenToBogusComment(this$static){
 1.18457 +  switch (this$static.commentPolicy.ordinal) {
 1.18458 +    case 2:
 1.18459 +      $appendLongStrBuf(this$static, 32);
 1.18460 +    case 0:
 1.18461 +      $appendLongStrBuf(this$static, 45);
 1.18462 +      break;
 1.18463 +    case 1:
 1.18464 +      $fatal(this$static, 'The document is not mappable to XML 1.0 due to two consecutive hyphens in a comment.');
 1.18465 +  }
 1.18466 +}
 1.18467 +
 1.18468 +function $appendStrBuf(this$static, c){
 1.18469 +  var newBuf;
 1.18470 +  if (this$static.strBufLen == this$static.strBuf.length) {
 1.18471 +    newBuf = initDim(_3C_classLit, 42, -1, this$static.strBuf.length + 1024, 1);
 1.18472 +    arraycopy(this$static.strBuf, 0, newBuf, 0, this$static.strBuf.length);
 1.18473 +    this$static.strBuf = newBuf;
 1.18474 +  }
 1.18475 +  this$static.strBuf[this$static.strBufLen++] = c;
 1.18476 +}
 1.18477 +
 1.18478 +function $attributeNameComplete(this$static){
 1.18479 +  this$static.attributeName = nameByBuffer(this$static.strBuf, 0, this$static.strBufLen, this$static.namePolicy != ($clinit_80() , ALLOW));
 1.18480 +  if (!this$static.attributes) {
 1.18481 +    this$static.attributes = $HtmlAttributes(new HtmlAttributes(), this$static.mappingLangToXmlLang);
 1.18482 +  }
 1.18483 +  if ($contains(this$static.attributes, this$static.attributeName)) {
 1.18484 +    'Duplicate attribute \u201C' + this$static.attributeName.local[0] + '\u201D.';
 1.18485 +    this$static.attributeName = null;
 1.18486 +  }
 1.18487 +}
 1.18488 +
 1.18489 +function $contentModelElementToArray(this$static){
 1.18490 +  switch (this$static.contentModelElement.group) {
 1.18491 +    case 36:
 1.18492 +      this$static.contentModelElementNameAsArray = TITLE_ARR;
 1.18493 +      return;
 1.18494 +    case 31:
 1.18495 +      this$static.contentModelElementNameAsArray = SCRIPT_ARR;
 1.18496 +      return;
 1.18497 +    case 33:
 1.18498 +      this$static.contentModelElementNameAsArray = STYLE_ARR;
 1.18499 +      return;
 1.18500 +    case 30:
 1.18501 +      this$static.contentModelElementNameAsArray = PLAINTEXT_ARR;
 1.18502 +      return;
 1.18503 +    case 38:
 1.18504 +      this$static.contentModelElementNameAsArray = XMP_ARR;
 1.18505 +      return;
 1.18506 +    case 35:
 1.18507 +      this$static.contentModelElementNameAsArray = TEXTAREA_ARR;
 1.18508 +      return;
 1.18509 +    case 47:
 1.18510 +      this$static.contentModelElementNameAsArray = IFRAME_ARR;
 1.18511 +      return;
 1.18512 +    case 60:
 1.18513 +      this$static.contentModelElementNameAsArray = NOEMBED_ARR;
 1.18514 +      return;
 1.18515 +    case 26:
 1.18516 +      this$static.contentModelElementNameAsArray = NOSCRIPT_ARR;
 1.18517 +      return;
 1.18518 +    case 25:
 1.18519 +      this$static.contentModelElementNameAsArray = NOFRAMES_ARR;
 1.18520 +      return;
 1.18521 +    default:return;
 1.18522 +  }
 1.18523 +}
 1.18524 +
 1.18525 +function $emitCarriageReturn(this$static, buf, pos){
 1.18526 +  this$static.nextCharOnNewLine = true;
 1.18527 +  this$static.lastCR = true;
 1.18528 +  $flushChars(this$static, buf, pos);
 1.18529 +  $characters(this$static.tokenHandler, LF, 0, 1);
 1.18530 +  this$static.cstart = 2147483647;
 1.18531 +}
 1.18532 +
 1.18533 +function $emitComment(this$static, provisionalHyphens, pos){
 1.18534 +  if (this$static.wantsComments) {
 1.18535 +    $comment(this$static.tokenHandler, this$static.longStrBuf, 0, this$static.longStrBufLen - provisionalHyphens);
 1.18536 +  }
 1.18537 +  this$static.cstart = pos + 1;
 1.18538 +}
 1.18539 +
 1.18540 +function $emitCurrentTagToken(this$static, selfClosing, pos){
 1.18541 +  var attrs;
 1.18542 +  this$static.cstart = pos + 1;
 1.18543 +  this$static.stateSave = 0;
 1.18544 +  attrs = !this$static.attributes?($clinit_91() , EMPTY_ATTRIBUTES):this$static.attributes;
 1.18545 +  if (this$static.endTag) {
 1.18546 +    $endTag(this$static.tokenHandler, this$static.tagName);
 1.18547 +  }
 1.18548 +   else {
 1.18549 +    $startTag(this$static.tokenHandler, this$static.tagName, attrs, selfClosing);
 1.18550 +  }
 1.18551 +  $resetAttributes(this$static);
 1.18552 +  return this$static.stateSave;
 1.18553 +}
 1.18554 +
 1.18555 +function $emitOrAppend(this$static, val, returnState){
 1.18556 +  if ((returnState & -2) != 0) {
 1.18557 +    $appendLongStrBuf_0(this$static, val, 0, val.length);
 1.18558 +  }
 1.18559 +   else {
 1.18560 +    $characters(this$static.tokenHandler, val, 0, val.length);
 1.18561 +  }
 1.18562 +}
 1.18563 +
 1.18564 +function $emitOrAppendOne(this$static, val, returnState){
 1.18565 +  if ((returnState & -2) != 0) {
 1.18566 +    $appendLongStrBuf(this$static, val[0]);
 1.18567 +  }
 1.18568 +   else {
 1.18569 +    $characters(this$static.tokenHandler, val, 0, 1);
 1.18570 +  }
 1.18571 +}
 1.18572 +
 1.18573 +function $emitOrAppendStrBuf(this$static, returnState){
 1.18574 +  if ((returnState & -2) != 0) {
 1.18575 +    $appendLongStrBuf_0(this$static, this$static.strBuf, 0, this$static.strBufLen);
 1.18576 +  }
 1.18577 +   else {
 1.18578 +    $emitStrBuf(this$static);
 1.18579 +  }
 1.18580 +}
 1.18581 +
 1.18582 +function $emitReplacementCharacter(this$static, buf, pos){
 1.18583 +  this$static.nextCharOnNewLine = true;
 1.18584 +  this$static.lastCR = true;
 1.18585 +  $flushChars(this$static, buf, pos);
 1.18586 +  $characters(this$static.tokenHandler, REPLACEMENT_CHARACTER, 0, 1);
 1.18587 +  this$static.cstart = 2147483647;
 1.18588 +}
 1.18589 +
 1.18590 +function $emitStrBuf(this$static){
 1.18591 +  if (this$static.strBufLen > 0) {
 1.18592 +    $characters(this$static.tokenHandler, this$static.strBuf, 0, this$static.strBufLen);
 1.18593 +  }
 1.18594 +}
 1.18595 +
 1.18596 +function $emptyAttributes(this$static){
 1.18597 +  if (this$static.newAttributesEachTime) {
 1.18598 +    return $HtmlAttributes(new HtmlAttributes(), this$static.mappingLangToXmlLang);
 1.18599 +  }
 1.18600 +   else {
 1.18601 +    return $clinit_91() , EMPTY_ATTRIBUTES;
 1.18602 +  }
 1.18603 +}
 1.18604 +
 1.18605 +function $end(this$static){
 1.18606 +  this$static.strBuf = null;
 1.18607 +  this$static.longStrBuf = null;
 1.18608 +  this$static.systemIdentifier = null;
 1.18609 +  this$static.publicIdentifier = null;
 1.18610 +  this$static.doctypeName = null;
 1.18611 +  this$static.tagName = null;
 1.18612 +  this$static.attributeName = null;
 1.18613 +  $endTokenization(this$static.tokenHandler);
 1.18614 +  if (this$static.attributes) {
 1.18615 +    $clear_0(this$static.attributes, this$static.mappingLangToXmlLang);
 1.18616 +    this$static.attributes = null;
 1.18617 +  }
 1.18618 +}
 1.18619 +
 1.18620 +function $eof(this$static){
 1.18621 +  var candidateArr, ch, i, returnState, state, val;
 1.18622 +  state = this$static.stateSave;
 1.18623 +  returnState = this$static.returnStateSave;
 1.18624 +  eofloop: for (;;) {
 1.18625 +    switch (state) {
 1.18626 +      case 53:
 1.18627 +        $characters(this$static.tokenHandler, LT_GT, 0, 1);
 1.18628 +        break eofloop;
 1.18629 +      case 4:
 1.18630 +        $characters(this$static.tokenHandler, LT_GT, 0, 1);
 1.18631 +        break eofloop;
 1.18632 +      case 37:
 1.18633 +        if (this$static.index < this$static.contentModelElementNameAsArray.length) {
 1.18634 +          break eofloop;
 1.18635 +        }
 1.18636 +         else {
 1.18637 +          break eofloop;
 1.18638 +        }
 1.18639 +
 1.18640 +      case 5:
 1.18641 +        $characters(this$static.tokenHandler, LT_SOLIDUS, 0, 2);
 1.18642 +        break eofloop;
 1.18643 +      case 6:
 1.18644 +        break eofloop;
 1.18645 +      case 7:
 1.18646 +      case 14:
 1.18647 +      case 48:
 1.18648 +        break eofloop;
 1.18649 +      case 8:
 1.18650 +        break eofloop;
 1.18651 +      case 9:
 1.18652 +      case 10:
 1.18653 +        break eofloop;
 1.18654 +      case 11:
 1.18655 +      case 12:
 1.18656 +      case 13:
 1.18657 +        break eofloop;
 1.18658 +      case 15:
 1.18659 +        $emitComment(this$static, 0, 0);
 1.18660 +        break eofloop;
 1.18661 +      case 59:
 1.18662 +        $maybeAppendSpaceToBogusComment(this$static);
 1.18663 +        $emitComment(this$static, 0, 0);
 1.18664 +        break eofloop;
 1.18665 +      case 16:
 1.18666 +        this$static.longStrBufLen = 0;
 1.18667 +        $emitComment(this$static, 0, 0);
 1.18668 +        break eofloop;
 1.18669 +      case 38:
 1.18670 +        $emitComment(this$static, 0, 0);
 1.18671 +        break eofloop;
 1.18672 +      case 39:
 1.18673 +        if (this$static.index < 6) {
 1.18674 +          $emitComment(this$static, 0, 0);
 1.18675 +        }
 1.18676 +         else {
 1.18677 +          this$static.doctypeName = '';
 1.18678 +          this$static.publicIdentifier = null;
 1.18679 +          this$static.systemIdentifier = null;
 1.18680 +          this$static.forceQuirks = true;
 1.18681 +          this$static.cstart = 1;
 1.18682 +          $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.18683 +          break eofloop;
 1.18684 +        }
 1.18685 +
 1.18686 +        break eofloop;
 1.18687 +      case 30:
 1.18688 +      case 32:
 1.18689 +      case 35:
 1.18690 +        $emitComment(this$static, 0, 0);
 1.18691 +        break eofloop;
 1.18692 +      case 34:
 1.18693 +        $emitComment(this$static, 2, 0);
 1.18694 +        break eofloop;
 1.18695 +      case 33:
 1.18696 +      case 31:
 1.18697 +        $emitComment(this$static, 1, 0);
 1.18698 +        break eofloop;
 1.18699 +      case 36:
 1.18700 +        $emitComment(this$static, 3, 0);
 1.18701 +        break eofloop;
 1.18702 +      case 17:
 1.18703 +      case 18:
 1.18704 +        this$static.forceQuirks = true;
 1.18705 +        this$static.cstart = 1;
 1.18706 +        $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.18707 +        break eofloop;
 1.18708 +      case 19:
 1.18709 +        this$static.doctypeName = String(valueOf_1(this$static.strBuf, 0, this$static.strBufLen));
 1.18710 +        this$static.forceQuirks = true;
 1.18711 +        this$static.cstart = 1;
 1.18712 +        $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.18713 +        break eofloop;
 1.18714 +      case 40:
 1.18715 +      case 41:
 1.18716 +      case 20:
 1.18717 +      case 21:
 1.18718 +        this$static.forceQuirks = true;
 1.18719 +        this$static.cstart = 1;
 1.18720 +        $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.18721 +        break eofloop;
 1.18722 +      case 22:
 1.18723 +      case 23:
 1.18724 +        this$static.forceQuirks = true;
 1.18725 +        this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
 1.18726 +        this$static.cstart = 1;
 1.18727 +        $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.18728 +        break eofloop;
 1.18729 +      case 24:
 1.18730 +      case 25:
 1.18731 +        this$static.forceQuirks = true;
 1.18732 +        this$static.cstart = 1;
 1.18733 +        $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.18734 +        break eofloop;
 1.18735 +      case 26:
 1.18736 +      case 27:
 1.18737 +        this$static.forceQuirks = true;
 1.18738 +        this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
 1.18739 +        this$static.cstart = 1;
 1.18740 +        $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.18741 +        break eofloop;
 1.18742 +      case 28:
 1.18743 +        this$static.forceQuirks = true;
 1.18744 +        this$static.cstart = 1;
 1.18745 +        $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.18746 +        break eofloop;
 1.18747 +      case 29:
 1.18748 +        this$static.cstart = 1;
 1.18749 +        $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.18750 +        break eofloop;
 1.18751 +      case 42:
 1.18752 +        $emitOrAppendStrBuf(this$static, returnState);
 1.18753 +        state = returnState;
 1.18754 +        continue;
 1.18755 +      case 44:
 1.18756 +        outer: for (;;) {
 1.18757 +          ++this$static.entCol;
 1.18758 +          hiloop: for (;;) {
 1.18759 +            if (this$static.hi == -1) {
 1.18760 +              break hiloop;
 1.18761 +            }
 1.18762 +            if (this$static.entCol == ($clinit_94() , NAMES)[this$static.hi].length) {
 1.18763 +              break hiloop;
 1.18764 +            }
 1.18765 +            if (this$static.entCol > NAMES[this$static.hi].length) {
 1.18766 +              break outer;
 1.18767 +            }
 1.18768 +             else if (0 < NAMES[this$static.hi][this$static.entCol]) {
 1.18769 +              --this$static.hi;
 1.18770 +            }
 1.18771 +             else {
 1.18772 +              break hiloop;
 1.18773 +            }
 1.18774 +          }
 1.18775 +          loloop: for (;;) {
 1.18776 +            if (this$static.hi < this$static.lo) {
 1.18777 +              break outer;
 1.18778 +            }
 1.18779 +            if (this$static.entCol == ($clinit_94() , NAMES)[this$static.lo].length) {
 1.18780 +              this$static.candidate = this$static.lo;
 1.18781 +              this$static.strBufMark = this$static.strBufLen;
 1.18782 +              ++this$static.lo;
 1.18783 +            }
 1.18784 +             else if (this$static.entCol > NAMES[this$static.lo].length) {
 1.18785 +              break outer;
 1.18786 +            }
 1.18787 +             else if (0 > NAMES[this$static.lo][this$static.entCol]) {
 1.18788 +              ++this$static.lo;
 1.18789 +            }
 1.18790 +             else {
 1.18791 +              break loloop;
 1.18792 +            }
 1.18793 +          }
 1.18794 +          if (this$static.hi < this$static.lo) {
 1.18795 +            break outer;
 1.18796 +          }
 1.18797 +          continue;
 1.18798 +        }
 1.18799 +
 1.18800 +        if (this$static.candidate == -1) {
 1.18801 +          $emitOrAppendStrBuf(this$static, returnState);
 1.18802 +          state = returnState;
 1.18803 +          continue eofloop;
 1.18804 +        }
 1.18805 +         else {
 1.18806 +          candidateArr = ($clinit_94() , NAMES)[this$static.candidate];
 1.18807 +          if (candidateArr[candidateArr.length - 1] != 59) {
 1.18808 +            if ((returnState & -2) != 0) {
 1.18809 +              if (this$static.strBufMark == this$static.strBufLen) {
 1.18810 +                ch = 0;
 1.18811 +              }
 1.18812 +               else {
 1.18813 +                ch = this$static.strBuf[this$static.strBufMark];
 1.18814 +              }
 1.18815 +              if (ch >= 48 && ch <= 57 || ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122) {
 1.18816 +                $appendLongStrBuf_0(this$static, this$static.strBuf, 0, this$static.strBufLen);
 1.18817 +                state = returnState;
 1.18818 +                continue eofloop;
 1.18819 +              }
 1.18820 +            }
 1.18821 +          }
 1.18822 +          val = VALUES_0[this$static.candidate];
 1.18823 +          $emitOrAppend(this$static, val, returnState);
 1.18824 +          if (this$static.strBufMark < this$static.strBufLen) {
 1.18825 +            if ((returnState & -2) != 0) {
 1.18826 +              for (i = this$static.strBufMark; i < this$static.strBufLen; ++i) {
 1.18827 +                $appendLongStrBuf(this$static, this$static.strBuf[i]);
 1.18828 +              }
 1.18829 +            }
 1.18830 +             else {
 1.18831 +              $characters(this$static.tokenHandler, this$static.strBuf, this$static.strBufMark, this$static.strBufLen - this$static.strBufMark);
 1.18832 +            }
 1.18833 +          }
 1.18834 +          state = returnState;
 1.18835 +          continue eofloop;
 1.18836 +        }
 1.18837 +
 1.18838 +      case 43:
 1.18839 +      case 46:
 1.18840 +      case 45:
 1.18841 +        if (this$static.seenDigits) {
 1.18842 +        }
 1.18843 +         else {
 1.18844 +          'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
 1.18845 +          $emitOrAppendStrBuf(this$static, returnState);
 1.18846 +          state = returnState;
 1.18847 +          continue;
 1.18848 +        }
 1.18849 +
 1.18850 +        $handleNcrValue(this$static, returnState);
 1.18851 +        state = returnState;
 1.18852 +        continue;
 1.18853 +      case 0:
 1.18854 +      default:break eofloop;
 1.18855 +    }
 1.18856 +  }
 1.18857 +  $eof_0(this$static.tokenHandler);
 1.18858 +  return;
 1.18859 +}
 1.18860 +
 1.18861 +function $fatal(this$static, message){
 1.18862 +  var spe;
 1.18863 +  spe = $SAXParseException(new SAXParseException(), message, this$static);
 1.18864 +  throw spe;
 1.18865 +}
 1.18866 +
 1.18867 +function $handleNcrValue(this$static, returnState){
 1.18868 +  var ch, val;
 1.18869 +  if (this$static.value >= 128 && this$static.value <= 159) {
 1.18870 +    val = ($clinit_94() , WINDOWS_1252)[this$static.value - 128];
 1.18871 +    $emitOrAppendOne(this$static, val, returnState);
 1.18872 +  }
 1.18873 +   else if (this$static.value == 13) {
 1.18874 +    $emitOrAppendOne(this$static, LF, returnState);
 1.18875 +  }
 1.18876 +   else if (this$static.value == 12 && this$static.contentSpacePolicy != ($clinit_80() , ALLOW)) {
 1.18877 +    if (this$static.contentSpacePolicy == ($clinit_80() , ALTER_INFOSET)) {
 1.18878 +      $emitOrAppendOne(this$static, SPACE, returnState);
 1.18879 +    }
 1.18880 +     else if (this$static.contentSpacePolicy == FATAL) {
 1.18881 +      $fatal(this$static, 'A character reference expanded to a form feed which is not legal XML 1.0 white space.');
 1.18882 +    }
 1.18883 +  }
 1.18884 +   else if (this$static.value >= 0 && this$static.value <= 8 || this$static.value == 11 || this$static.value >= 14 && this$static.value <= 31 || this$static.value == 127) {
 1.18885 +    'Character reference expands to a control character (' + $toUPlusString(this$static.value & 65535) + ').';
 1.18886 +    $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
 1.18887 +  }
 1.18888 +   else if ((this$static.value & 63488) == 55296) {
 1.18889 +    $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
 1.18890 +  }
 1.18891 +   else if ((this$static.value & 65534) == 65534) {
 1.18892 +    $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
 1.18893 +  }
 1.18894 +   else if (this$static.value >= 64976 && this$static.value <= 65007) {
 1.18895 +    $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
 1.18896 +  }
 1.18897 +   else if (this$static.value <= 65535) {
 1.18898 +    ch = this$static.value & 65535;
 1.18899 +    this$static.bmpChar[0] = ch;
 1.18900 +    $emitOrAppendOne(this$static, this$static.bmpChar, returnState);
 1.18901 +  }
 1.18902 +   else if (this$static.value <= 1114111) {
 1.18903 +    this$static.astralChar[0] = 55232 + (this$static.value >> 10) & 65535;
 1.18904 +    this$static.astralChar[1] = 56320 + (this$static.value & 1023) & 65535;
 1.18905 +    $emitOrAppend(this$static, this$static.astralChar, returnState);
 1.18906 +  }
 1.18907 +   else {
 1.18908 +    $emitOrAppendOne(this$static, REPLACEMENT_CHARACTER, returnState);
 1.18909 +  }
 1.18910 +}
 1.18911 +
 1.18912 +function $maybeAppendSpaceToBogusComment(this$static){
 1.18913 +  switch (this$static.commentPolicy.ordinal) {
 1.18914 +    case 2:
 1.18915 +      $appendLongStrBuf(this$static, 32);
 1.18916 +      break;
 1.18917 +    case 1:
 1.18918 +      $fatal(this$static, 'The document is not mappable to XML 1.0 due to a trailing hyphen in a comment.');
 1.18919 +  }
 1.18920 +}
 1.18921 +
 1.18922 +function $resetAttributes(this$static){
 1.18923 +  if (this$static.newAttributesEachTime) {
 1.18924 +    this$static.attributes = null;
 1.18925 +  }
 1.18926 +   else {
 1.18927 +    $clear_0(this$static.attributes, this$static.mappingLangToXmlLang);
 1.18928 +  }
 1.18929 +}
 1.18930 +
 1.18931 +function $setContentModelFlag(this$static, contentModelFlag){
 1.18932 +  var asArray;
 1.18933 +  this$static.stateSave = contentModelFlag;
 1.18934 +  if (contentModelFlag == 0) {
 1.18935 +    return;
 1.18936 +  }
 1.18937 +  asArray = null.nullMethod();
 1.18938 +  this$static.contentModelElement = elementNameByBuffer(asArray, 0, null.nullField);
 1.18939 +  $contentModelElementToArray(this$static);
 1.18940 +}
 1.18941 +
 1.18942 +function $setContentModelFlag_0(this$static, contentModelFlag, contentModelElement){
 1.18943 +  this$static.stateSave = contentModelFlag;
 1.18944 +  this$static.contentModelElement = contentModelElement;
 1.18945 +  $contentModelElementToArray(this$static);
 1.18946 +}
 1.18947 +
 1.18948 +function $setXmlnsPolicy(this$static, xmlnsPolicy){
 1.18949 +  if (xmlnsPolicy == ($clinit_80() , FATAL)) {
 1.18950 +    throw $IllegalArgumentException(new IllegalArgumentException(), "Can't use FATAL here.");
 1.18951 +  }
 1.18952 +  this$static.xmlnsPolicy = xmlnsPolicy;
 1.18953 +}
 1.18954 +
 1.18955 +function $start_0(this$static){
 1.18956 +  this$static.confident = false;
 1.18957 +  this$static.strBuf = initDim(_3C_classLit, 42, -1, 64, 1);
 1.18958 +  this$static.strBufLen = 0;
 1.18959 +  this$static.longStrBuf = initDim(_3C_classLit, 42, -1, 1024, 1);
 1.18960 +  this$static.longStrBufLen = 0;
 1.18961 +  this$static.stateSave = 0;
 1.18962 +  this$static.lastCR = false;
 1.18963 +  this$static.html4 = false;
 1.18964 +  this$static.metaBoundaryPassed = false;
 1.18965 +  $startTokenization(this$static.tokenHandler, this$static);
 1.18966 +  this$static.wantsComments = this$static.tokenHandler.wantingComments;
 1.18967 +  this$static.index = 0;
 1.18968 +  this$static.forceQuirks = false;
 1.18969 +  this$static.additional = 0;
 1.18970 +  this$static.entCol = -1;
 1.18971 +  this$static.lo = 0;
 1.18972 +  this$static.hi = ($clinit_94() , NAMES).length - 1;
 1.18973 +  this$static.candidate = -1;
 1.18974 +  this$static.strBufMark = 0;
 1.18975 +  this$static.prevValue = -1;
 1.18976 +  this$static.value = 0;
 1.18977 +  this$static.seenDigits = false;
 1.18978 +  this$static.shouldSuspend = false;
 1.18979 +  if (this$static.newAttributesEachTime) {
 1.18980 +    this$static.attributes = null;
 1.18981 +  }
 1.18982 +   else {
 1.18983 +    this$static.attributes = $HtmlAttributes(new HtmlAttributes(), this$static.mappingLangToXmlLang);
 1.18984 +  }
 1.18985 +  this$static.alreadyComplainedAboutNonAscii = false;
 1.18986 +  this$static.line = this$static.linePrev = 0;
 1.18987 +  this$static.col = this$static.colPrev = 1;
 1.18988 +  this$static.nextCharOnNewLine = true;
 1.18989 +  this$static.prev = 0;
 1.18990 +  this$static.alreadyWarnedAboutPrivateUseCharacters = false;
 1.18991 +}
 1.18992 +
 1.18993 +function $stateLoop(this$static, state, c, pos, buf, reconsume, returnState, endPos){
 1.18994 +  var candidateArr, ch, e, folded, i, val;
 1.18995 +  stateloop: for (;;) {
 1.18996 +    switch (state) {
 1.18997 +      case 0:
 1.18998 +        dataloop: for (;;) {
 1.18999 +          if (reconsume) {
 1.19000 +            reconsume = false;
 1.19001 +          }
 1.19002 +           else {
 1.19003 +            if (++pos == endPos) {
 1.19004 +              break stateloop;
 1.19005 +            }
 1.19006 +            c = $checkChar(this$static, buf, pos);
 1.19007 +          }
 1.19008 +          switch (c) {
 1.19009 +            case 38:
 1.19010 +              $flushChars(this$static, buf, pos);
 1.19011 +              this$static.strBuf[0] = c;
 1.19012 +              this$static.strBufLen = 1;
 1.19013 +              this$static.additional = 0;
 1.19014 +              $LocatorImpl(new LocatorImpl(), this$static);
 1.19015 +              returnState = state;
 1.19016 +              state = 42;
 1.19017 +              continue stateloop;
 1.19018 +            case 60:
 1.19019 +              $flushChars(this$static, buf, pos);
 1.19020 +              state = 4;
 1.19021 +              break dataloop;
 1.19022 +            case 0:
 1.19023 +              $emitReplacementCharacter(this$static, buf, pos);
 1.19024 +              continue;
 1.19025 +            case 13:
 1.19026 +              $emitCarriageReturn(this$static, buf, pos);
 1.19027 +              break stateloop;
 1.19028 +            case 10:
 1.19029 +              this$static.nextCharOnNewLine = true;
 1.19030 +            default:continue;
 1.19031 +          }
 1.19032 +        }
 1.19033 +
 1.19034 +      case 4:
 1.19035 +        tagopenloop: for (;;) {
 1.19036 +          if (++pos == endPos) {
 1.19037 +            break stateloop;
 1.19038 +          }
 1.19039 +          c = $checkChar(this$static, buf, pos);
 1.19040 +          if (c >= 65 && c <= 90) {
 1.19041 +            this$static.endTag = false;
 1.19042 +            this$static.strBuf[0] = c + 32 & 65535;
 1.19043 +            this$static.strBufLen = 1;
 1.19044 +            state = 6;
 1.19045 +            break tagopenloop;
 1.19046 +          }
 1.19047 +           else if (c >= 97 && c <= 122) {
 1.19048 +            this$static.endTag = false;
 1.19049 +            this$static.strBuf[0] = c;
 1.19050 +            this$static.strBufLen = 1;
 1.19051 +            state = 6;
 1.19052 +            break tagopenloop;
 1.19053 +          }
 1.19054 +          switch (c) {
 1.19055 +            case 33:
 1.19056 +              state = 16;
 1.19057 +              continue stateloop;
 1.19058 +            case 47:
 1.19059 +              state = 5;
 1.19060 +              continue stateloop;
 1.19061 +            case 63:
 1.19062 +              this$static.longStrBuf[0] = c;
 1.19063 +              this$static.longStrBufLen = 1;
 1.19064 +              state = 15;
 1.19065 +              continue stateloop;
 1.19066 +            case 62:
 1.19067 +              $characters(this$static.tokenHandler, LT_GT, 0, 2);
 1.19068 +              this$static.cstart = pos + 1;
 1.19069 +              state = 0;
 1.19070 +              continue stateloop;
 1.19071 +            default:$characters(this$static.tokenHandler, LT_GT, 0, 1);
 1.19072 +              this$static.cstart = pos;
 1.19073 +              state = 0;
 1.19074 +              reconsume = true;
 1.19075 +              continue stateloop;
 1.19076 +          }
 1.19077 +        }
 1.19078 +
 1.19079 +      case 6:
 1.19080 +        tagnameloop: for (;;) {
 1.19081 +          if (++pos == endPos) {
 1.19082 +            break stateloop;
 1.19083 +          }
 1.19084 +          c = $checkChar(this$static, buf, pos);
 1.19085 +          switch (c) {
 1.19086 +            case 13:
 1.19087 +              this$static.nextCharOnNewLine = true;
 1.19088 +              this$static.lastCR = true;
 1.19089 +              this$static.tagName = elementNameByBuffer(this$static.strBuf, 0, this$static.strBufLen);
 1.19090 +              state = 7;
 1.19091 +              break stateloop;
 1.19092 +            case 10:
 1.19093 +              this$static.nextCharOnNewLine = true;
 1.19094 +            case 32:
 1.19095 +            case 9:
 1.19096 +            case 12:
 1.19097 +              this$static.tagName = elementNameByBuffer(this$static.strBuf, 0, this$static.strBufLen);
 1.19098 +              state = 7;
 1.19099 +              break tagnameloop;
 1.19100 +            case 47:
 1.19101 +              this$static.tagName = elementNameByBuffer(this$static.strBuf, 0, this$static.strBufLen);
 1.19102 +              state = 48;
 1.19103 +              continue stateloop;
 1.19104 +            case 62:
 1.19105 +              this$static.tagName = elementNameByBuffer(this$static.strBuf, 0, this$static.strBufLen);
 1.19106 +              state = $emitCurrentTagToken(this$static, false, pos);
 1.19107 +              if (this$static.shouldSuspend) {
 1.19108 +                break stateloop;
 1.19109 +              }
 1.19110 +
 1.19111 +              continue stateloop;
 1.19112 +            case 0:
 1.19113 +              c = 65533;
 1.19114 +            default:if (c >= 65 && c <= 90) {
 1.19115 +                c += 32;
 1.19116 +              }
 1.19117 +
 1.19118 +              $appendStrBuf(this$static, c);
 1.19119 +              continue;
 1.19120 +          }
 1.19121 +        }
 1.19122 +
 1.19123 +      case 7:
 1.19124 +        beforeattributenameloop: for (;;) {
 1.19125 +          if (reconsume) {
 1.19126 +            reconsume = false;
 1.19127 +          }
 1.19128 +           else {
 1.19129 +            if (++pos == endPos) {
 1.19130 +              break stateloop;
 1.19131 +            }
 1.19132 +            c = $checkChar(this$static, buf, pos);
 1.19133 +          }
 1.19134 +          switch (c) {
 1.19135 +            case 13:
 1.19136 +              this$static.nextCharOnNewLine = true;
 1.19137 +              this$static.lastCR = true;
 1.19138 +              break stateloop;
 1.19139 +            case 10:
 1.19140 +              this$static.nextCharOnNewLine = true;
 1.19141 +            case 32:
 1.19142 +            case 9:
 1.19143 +            case 12:
 1.19144 +              continue;
 1.19145 +            case 47:
 1.19146 +              state = 48;
 1.19147 +              continue stateloop;
 1.19148 +            case 62:
 1.19149 +              state = $emitCurrentTagToken(this$static, false, pos);
 1.19150 +              if (this$static.shouldSuspend) {
 1.19151 +                break stateloop;
 1.19152 +              }
 1.19153 +
 1.19154 +              continue stateloop;
 1.19155 +            case 0:
 1.19156 +              c = 65533;
 1.19157 +            case 34:
 1.19158 +            case 39:
 1.19159 +            case 60:
 1.19160 +            case 61:
 1.19161 +            default:if (c >= 65 && c <= 90) {
 1.19162 +                c += 32;
 1.19163 +              }
 1.19164 +
 1.19165 +              this$static.strBuf[0] = c;
 1.19166 +              this$static.strBufLen = 1;
 1.19167 +              state = 8;
 1.19168 +              break beforeattributenameloop;
 1.19169 +          }
 1.19170 +        }
 1.19171 +
 1.19172 +      case 8:
 1.19173 +        attributenameloop: for (;;) {
 1.19174 +          if (++pos == endPos) {
 1.19175 +            break stateloop;
 1.19176 +          }
 1.19177 +          c = $checkChar(this$static, buf, pos);
 1.19178 +          switch (c) {
 1.19179 +            case 13:
 1.19180 +              this$static.nextCharOnNewLine = true;
 1.19181 +              this$static.lastCR = true;
 1.19182 +              $attributeNameComplete(this$static);
 1.19183 +              state = 9;
 1.19184 +              break stateloop;
 1.19185 +            case 10:
 1.19186 +              this$static.nextCharOnNewLine = true;
 1.19187 +            case 32:
 1.19188 +            case 9:
 1.19189 +            case 12:
 1.19190 +              $attributeNameComplete(this$static);
 1.19191 +              state = 9;
 1.19192 +              continue stateloop;
 1.19193 +            case 47:
 1.19194 +              $attributeNameComplete(this$static);
 1.19195 +              $addAttributeWithoutValue(this$static);
 1.19196 +              state = 48;
 1.19197 +              continue stateloop;
 1.19198 +            case 61:
 1.19199 +              $attributeNameComplete(this$static);
 1.19200 +              state = 10;
 1.19201 +              break attributenameloop;
 1.19202 +            case 62:
 1.19203 +              $attributeNameComplete(this$static);
 1.19204 +              $addAttributeWithoutValue(this$static);
 1.19205 +              state = $emitCurrentTagToken(this$static, false, pos);
 1.19206 +              if (this$static.shouldSuspend) {
 1.19207 +                break stateloop;
 1.19208 +              }
 1.19209 +
 1.19210 +              continue stateloop;
 1.19211 +            case 0:
 1.19212 +              c = 65533;
 1.19213 +            case 34:
 1.19214 +            case 39:
 1.19215 +            case 60:
 1.19216 +            default:if (c >= 65 && c <= 90) {
 1.19217 +                c += 32;
 1.19218 +              }
 1.19219 +
 1.19220 +              $appendStrBuf(this$static, c);
 1.19221 +              continue;
 1.19222 +          }
 1.19223 +        }
 1.19224 +
 1.19225 +      case 10:
 1.19226 +        beforeattributevalueloop: for (;;) {
 1.19227 +          if (++pos == endPos) {
 1.19228 +            break stateloop;
 1.19229 +          }
 1.19230 +          c = $checkChar(this$static, buf, pos);
 1.19231 +          switch (c) {
 1.19232 +            case 13:
 1.19233 +              this$static.nextCharOnNewLine = true;
 1.19234 +              this$static.lastCR = true;
 1.19235 +              break stateloop;
 1.19236 +            case 10:
 1.19237 +              this$static.nextCharOnNewLine = true;
 1.19238 +            case 32:
 1.19239 +            case 9:
 1.19240 +            case 12:
 1.19241 +              continue;
 1.19242 +            case 34:
 1.19243 +              this$static.longStrBufLen = 0;
 1.19244 +              state = 11;
 1.19245 +              break beforeattributevalueloop;
 1.19246 +            case 38:
 1.19247 +              this$static.longStrBufLen = 0;
 1.19248 +              state = 13;
 1.19249 +              reconsume = true;
 1.19250 +              continue stateloop;
 1.19251 +            case 39:
 1.19252 +              this$static.longStrBufLen = 0;
 1.19253 +              state = 12;
 1.19254 +              continue stateloop;
 1.19255 +            case 62:
 1.19256 +              $addAttributeWithoutValue(this$static);
 1.19257 +              state = $emitCurrentTagToken(this$static, false, pos);
 1.19258 +              if (this$static.shouldSuspend) {
 1.19259 +                break stateloop;
 1.19260 +              }
 1.19261 +
 1.19262 +              continue stateloop;
 1.19263 +            case 0:
 1.19264 +              c = 65533;
 1.19265 +            case 60:
 1.19266 +            case 61:
 1.19267 +              $errLtOrEqualsInUnquotedAttributeOrNull(c);
 1.19268 +            default:this$static.longStrBuf[0] = c;
 1.19269 +              this$static.longStrBufLen = 1;
 1.19270 +              state = 13;
 1.19271 +              continue stateloop;
 1.19272 +          }
 1.19273 +        }
 1.19274 +
 1.19275 +      case 11:
 1.19276 +        attributevaluedoublequotedloop: for (;;) {
 1.19277 +          if (reconsume) {
 1.19278 +            reconsume = false;
 1.19279 +          }
 1.19280 +           else {
 1.19281 +            if (++pos == endPos) {
 1.19282 +              break stateloop;
 1.19283 +            }
 1.19284 +            c = $checkChar(this$static, buf, pos);
 1.19285 +          }
 1.19286 +          switch (c) {
 1.19287 +            case 34:
 1.19288 +              $addAttributeWithValue(this$static);
 1.19289 +              state = 14;
 1.19290 +              break attributevaluedoublequotedloop;
 1.19291 +            case 38:
 1.19292 +              this$static.strBuf[0] = c;
 1.19293 +              this$static.strBufLen = 1;
 1.19294 +              this$static.additional = 34;
 1.19295 +              $LocatorImpl(new LocatorImpl(), this$static);
 1.19296 +              returnState = state;
 1.19297 +              state = 42;
 1.19298 +              continue stateloop;
 1.19299 +            case 13:
 1.19300 +              this$static.nextCharOnNewLine = true;
 1.19301 +              this$static.lastCR = true;
 1.19302 +              $appendLongStrBuf(this$static, 10);
 1.19303 +              break stateloop;
 1.19304 +            case 10:
 1.19305 +              this$static.nextCharOnNewLine = true;
 1.19306 +              $appendLongStrBuf(this$static, 10);
 1.19307 +              continue;
 1.19308 +            case 0:
 1.19309 +              c = 65533;
 1.19310 +            default:$appendLongStrBuf(this$static, c);
 1.19311 +              continue;
 1.19312 +          }
 1.19313 +        }
 1.19314 +
 1.19315 +      case 14:
 1.19316 +        afterattributevaluequotedloop: for (;;) {
 1.19317 +          if (++pos == endPos) {
 1.19318 +            break stateloop;
 1.19319 +          }
 1.19320 +          c = $checkChar(this$static, buf, pos);
 1.19321 +          switch (c) {
 1.19322 +            case 13:
 1.19323 +              this$static.nextCharOnNewLine = true;
 1.19324 +              this$static.lastCR = true;
 1.19325 +              state = 7;
 1.19326 +              break stateloop;
 1.19327 +            case 10:
 1.19328 +              this$static.nextCharOnNewLine = true;
 1.19329 +            case 32:
 1.19330 +            case 9:
 1.19331 +            case 12:
 1.19332 +              state = 7;
 1.19333 +              continue stateloop;
 1.19334 +            case 47:
 1.19335 +              state = 48;
 1.19336 +              break afterattributevaluequotedloop;
 1.19337 +            case 62:
 1.19338 +              state = $emitCurrentTagToken(this$static, false, pos);
 1.19339 +              if (this$static.shouldSuspend) {
 1.19340 +                break stateloop;
 1.19341 +              }
 1.19342 +
 1.19343 +              continue stateloop;
 1.19344 +            default:state = 7;
 1.19345 +              reconsume = true;
 1.19346 +              continue stateloop;
 1.19347 +          }
 1.19348 +        }
 1.19349 +
 1.19350 +      case 48:
 1.19351 +        if (++pos == endPos) {
 1.19352 +          break stateloop;
 1.19353 +        }
 1.19354 +
 1.19355 +        c = $checkChar(this$static, buf, pos);
 1.19356 +        switch (c) {
 1.19357 +          case 62:
 1.19358 +            state = $emitCurrentTagToken(this$static, true, pos);
 1.19359 +            if (this$static.shouldSuspend) {
 1.19360 +              break stateloop;
 1.19361 +            }
 1.19362 +
 1.19363 +            continue stateloop;
 1.19364 +          default:state = 7;
 1.19365 +            reconsume = true;
 1.19366 +            continue stateloop;
 1.19367 +        }
 1.19368 +
 1.19369 +      case 13:
 1.19370 +        for (;;) {
 1.19371 +          if (reconsume) {
 1.19372 +            reconsume = false;
 1.19373 +          }
 1.19374 +           else {
 1.19375 +            if (++pos == endPos) {
 1.19376 +              break stateloop;
 1.19377 +            }
 1.19378 +            c = $checkChar(this$static, buf, pos);
 1.19379 +          }
 1.19380 +          switch (c) {
 1.19381 +            case 13:
 1.19382 +              this$static.nextCharOnNewLine = true;
 1.19383 +              this$static.lastCR = true;
 1.19384 +              $addAttributeWithValue(this$static);
 1.19385 +              state = 7;
 1.19386 +              break stateloop;
 1.19387 +            case 10:
 1.19388 +              this$static.nextCharOnNewLine = true;
 1.19389 +            case 32:
 1.19390 +            case 9:
 1.19391 +            case 12:
 1.19392 +              $addAttributeWithValue(this$static);
 1.19393 +              state = 7;
 1.19394 +              continue stateloop;
 1.19395 +            case 38:
 1.19396 +              this$static.strBuf[0] = c;
 1.19397 +              this$static.strBufLen = 1;
 1.19398 +              this$static.additional = 62;
 1.19399 +              $LocatorImpl(new LocatorImpl(), this$static);
 1.19400 +              returnState = state;
 1.19401 +              state = 42;
 1.19402 +              continue stateloop;
 1.19403 +            case 62:
 1.19404 +              $addAttributeWithValue(this$static);
 1.19405 +              state = $emitCurrentTagToken(this$static, false, pos);
 1.19406 +              if (this$static.shouldSuspend) {
 1.19407 +                break stateloop;
 1.19408 +              }
 1.19409 +
 1.19410 +              continue stateloop;
 1.19411 +            case 0:
 1.19412 +              c = 65533;
 1.19413 +            case 60:
 1.19414 +            case 34:
 1.19415 +            case 39:
 1.19416 +            case 61:
 1.19417 +            default:$appendLongStrBuf(this$static, c);
 1.19418 +              continue;
 1.19419 +          }
 1.19420 +        }
 1.19421 +
 1.19422 +      case 9:
 1.19423 +        for (;;) {
 1.19424 +          if (++pos == endPos) {
 1.19425 +            break stateloop;
 1.19426 +          }
 1.19427 +          c = $checkChar(this$static, buf, pos);
 1.19428 +          switch (c) {
 1.19429 +            case 13:
 1.19430 +              this$static.nextCharOnNewLine = true;
 1.19431 +              this$static.lastCR = true;
 1.19432 +              break stateloop;
 1.19433 +            case 10:
 1.19434 +              this$static.nextCharOnNewLine = true;
 1.19435 +            case 32:
 1.19436 +            case 9:
 1.19437 +            case 12:
 1.19438 +              continue;
 1.19439 +            case 47:
 1.19440 +              $addAttributeWithoutValue(this$static);
 1.19441 +              state = 48;
 1.19442 +              continue stateloop;
 1.19443 +            case 61:
 1.19444 +              state = 10;
 1.19445 +              continue stateloop;
 1.19446 +            case 62:
 1.19447 +              $addAttributeWithoutValue(this$static);
 1.19448 +              state = $emitCurrentTagToken(this$static, false, pos);
 1.19449 +              if (this$static.shouldSuspend) {
 1.19450 +                break stateloop;
 1.19451 +              }
 1.19452 +
 1.19453 +              continue stateloop;
 1.19454 +            case 0:
 1.19455 +              c = 65533;
 1.19456 +            case 34:
 1.19457 +            case 39:
 1.19458 +            case 60:
 1.19459 +            default:$addAttributeWithoutValue(this$static);
 1.19460 +              if (c >= 65 && c <= 90) {
 1.19461 +                c += 32;
 1.19462 +              }
 1.19463 +
 1.19464 +              this$static.strBuf[0] = c;
 1.19465 +              this$static.strBufLen = 1;
 1.19466 +              state = 8;
 1.19467 +              continue stateloop;
 1.19468 +          }
 1.19469 +        }
 1.19470 +
 1.19471 +      case 15:
 1.19472 +        boguscommentloop: for (;;) {
 1.19473 +          if (reconsume) {
 1.19474 +            reconsume = false;
 1.19475 +          }
 1.19476 +           else {
 1.19477 +            if (++pos == endPos) {
 1.19478 +              break stateloop;
 1.19479 +            }
 1.19480 +            c = $checkChar(this$static, buf, pos);
 1.19481 +          }
 1.19482 +          switch (c) {
 1.19483 +            case 62:
 1.19484 +              $emitComment(this$static, 0, pos);
 1.19485 +              state = 0;
 1.19486 +              continue stateloop;
 1.19487 +            case 45:
 1.19488 +              $appendLongStrBuf(this$static, c);
 1.19489 +              state = 59;
 1.19490 +              break boguscommentloop;
 1.19491 +            case 13:
 1.19492 +              this$static.nextCharOnNewLine = true;
 1.19493 +              this$static.lastCR = true;
 1.19494 +              $appendLongStrBuf(this$static, 10);
 1.19495 +              break stateloop;
 1.19496 +            case 10:
 1.19497 +              this$static.nextCharOnNewLine = true;
 1.19498 +              $appendLongStrBuf(this$static, 10);
 1.19499 +              continue;
 1.19500 +            case 0:
 1.19501 +              c = 65533;
 1.19502 +            default:$appendLongStrBuf(this$static, c);
 1.19503 +              continue;
 1.19504 +          }
 1.19505 +        }
 1.19506 +
 1.19507 +      case 59:
 1.19508 +        boguscommenthyphenloop: for (;;) {
 1.19509 +          if (++pos == endPos) {
 1.19510 +            break stateloop;
 1.19511 +          }
 1.19512 +          c = $checkChar(this$static, buf, pos);
 1.19513 +          switch (c) {
 1.19514 +            case 62:
 1.19515 +              $maybeAppendSpaceToBogusComment(this$static);
 1.19516 +              $emitComment(this$static, 0, pos);
 1.19517 +              state = 0;
 1.19518 +              continue stateloop;
 1.19519 +            case 45:
 1.19520 +              $appendSecondHyphenToBogusComment(this$static);
 1.19521 +              continue boguscommenthyphenloop;
 1.19522 +            case 13:
 1.19523 +              this$static.nextCharOnNewLine = true;
 1.19524 +              this$static.lastCR = true;
 1.19525 +              $appendLongStrBuf(this$static, 10);
 1.19526 +              state = 15;
 1.19527 +              break stateloop;
 1.19528 +            case 10:
 1.19529 +              this$static.nextCharOnNewLine = true;
 1.19530 +              $appendLongStrBuf(this$static, 10);
 1.19531 +              state = 15;
 1.19532 +              continue stateloop;
 1.19533 +            case 0:
 1.19534 +              c = 65533;
 1.19535 +            default:$appendLongStrBuf(this$static, c);
 1.19536 +              state = 15;
 1.19537 +              continue stateloop;
 1.19538 +          }
 1.19539 +        }
 1.19540 +
 1.19541 +      case 16:
 1.19542 +        markupdeclarationopenloop: for (;;) {
 1.19543 +          if (++pos == endPos) {
 1.19544 +            break stateloop;
 1.19545 +          }
 1.19546 +          c = $checkChar(this$static, buf, pos);
 1.19547 +          switch (c) {
 1.19548 +            case 45:
 1.19549 +              this$static.longStrBuf[0] = c;
 1.19550 +              this$static.longStrBufLen = 1;
 1.19551 +              state = 38;
 1.19552 +              break markupdeclarationopenloop;
 1.19553 +            case 100:
 1.19554 +            case 68:
 1.19555 +              this$static.longStrBuf[0] = c;
 1.19556 +              this$static.longStrBufLen = 1;
 1.19557 +              this$static.index = 0;
 1.19558 +              state = 39;
 1.19559 +              continue stateloop;
 1.19560 +            case 91:
 1.19561 +              if (this$static.tokenHandler.foreignFlag == 0) {
 1.19562 +                this$static.longStrBuf[0] = c;
 1.19563 +                this$static.longStrBufLen = 1;
 1.19564 +                this$static.index = 0;
 1.19565 +                state = 49;
 1.19566 +                continue stateloop;
 1.19567 +              }
 1.19568 +               else {
 1.19569 +              }
 1.19570 +
 1.19571 +            default:this$static.longStrBufLen = 0;
 1.19572 +              state = 15;
 1.19573 +              reconsume = true;
 1.19574 +              continue stateloop;
 1.19575 +          }
 1.19576 +        }
 1.19577 +
 1.19578 +      case 38:
 1.19579 +        markupdeclarationhyphenloop: for (;;) {
 1.19580 +          if (++pos == endPos) {
 1.19581 +            break stateloop;
 1.19582 +          }
 1.19583 +          c = $checkChar(this$static, buf, pos);
 1.19584 +          switch (c) {
 1.19585 +            case 0:
 1.19586 +              break stateloop;
 1.19587 +            case 45:
 1.19588 +              this$static.longStrBufLen = 0;
 1.19589 +              state = 30;
 1.19590 +              break markupdeclarationhyphenloop;
 1.19591 +            default:state = 15;
 1.19592 +              reconsume = true;
 1.19593 +              continue stateloop;
 1.19594 +          }
 1.19595 +        }
 1.19596 +
 1.19597 +      case 30:
 1.19598 +        commentstartloop: for (;;) {
 1.19599 +          if (++pos == endPos) {
 1.19600 +            break stateloop;
 1.19601 +          }
 1.19602 +          c = $checkChar(this$static, buf, pos);
 1.19603 +          switch (c) {
 1.19604 +            case 45:
 1.19605 +              $appendLongStrBuf(this$static, c);
 1.19606 +              state = 31;
 1.19607 +              continue stateloop;
 1.19608 +            case 62:
 1.19609 +              $emitComment(this$static, 0, pos);
 1.19610 +              state = 0;
 1.19611 +              continue stateloop;
 1.19612 +            case 13:
 1.19613 +              this$static.nextCharOnNewLine = true;
 1.19614 +              this$static.lastCR = true;
 1.19615 +              $appendLongStrBuf(this$static, 10);
 1.19616 +              state = 32;
 1.19617 +              break stateloop;
 1.19618 +            case 10:
 1.19619 +              this$static.nextCharOnNewLine = true;
 1.19620 +              $appendLongStrBuf(this$static, 10);
 1.19621 +              state = 32;
 1.19622 +              break commentstartloop;
 1.19623 +            case 0:
 1.19624 +              c = 65533;
 1.19625 +            default:$appendLongStrBuf(this$static, c);
 1.19626 +              state = 32;
 1.19627 +              break commentstartloop;
 1.19628 +          }
 1.19629 +        }
 1.19630 +
 1.19631 +      case 32:
 1.19632 +        commentloop: for (;;) {
 1.19633 +          if (++pos == endPos) {
 1.19634 +            break stateloop;
 1.19635 +          }
 1.19636 +          c = $checkChar(this$static, buf, pos);
 1.19637 +          switch (c) {
 1.19638 +            case 45:
 1.19639 +              $appendLongStrBuf(this$static, c);
 1.19640 +              state = 33;
 1.19641 +              break commentloop;
 1.19642 +            case 13:
 1.19643 +              this$static.nextCharOnNewLine = true;
 1.19644 +              this$static.lastCR = true;
 1.19645 +              $appendLongStrBuf(this$static, 10);
 1.19646 +              break stateloop;
 1.19647 +            case 10:
 1.19648 +              this$static.nextCharOnNewLine = true;
 1.19649 +              $appendLongStrBuf(this$static, 10);
 1.19650 +              continue;
 1.19651 +            case 0:
 1.19652 +              c = 65533;
 1.19653 +            default:$appendLongStrBuf(this$static, c);
 1.19654 +              continue;
 1.19655 +          }
 1.19656 +        }
 1.19657 +
 1.19658 +      case 33:
 1.19659 +        commentenddashloop: for (;;) {
 1.19660 +          if (++pos == endPos) {
 1.19661 +            break stateloop;
 1.19662 +          }
 1.19663 +          c = $checkChar(this$static, buf, pos);
 1.19664 +          switch (c) {
 1.19665 +            case 45:
 1.19666 +              $appendLongStrBuf(this$static, c);
 1.19667 +              state = 34;
 1.19668 +              break commentenddashloop;
 1.19669 +            case 13:
 1.19670 +              this$static.nextCharOnNewLine = true;
 1.19671 +              this$static.lastCR = true;
 1.19672 +              $appendLongStrBuf(this$static, 10);
 1.19673 +              state = 32;
 1.19674 +              break stateloop;
 1.19675 +            case 10:
 1.19676 +              this$static.nextCharOnNewLine = true;
 1.19677 +              $appendLongStrBuf(this$static, 10);
 1.19678 +              state = 32;
 1.19679 +              continue stateloop;
 1.19680 +            case 0:
 1.19681 +              c = 65533;
 1.19682 +            default:$appendLongStrBuf(this$static, c);
 1.19683 +              state = 32;
 1.19684 +              continue stateloop;
 1.19685 +          }
 1.19686 +        }
 1.19687 +
 1.19688 +      case 34:
 1.19689 +        commentendloop: for (;;) {
 1.19690 +          if (++pos == endPos) {
 1.19691 +            break stateloop;
 1.19692 +          }
 1.19693 +          c = $checkChar(this$static, buf, pos);
 1.19694 +          switch (c) {
 1.19695 +            case 62:
 1.19696 +              $emitComment(this$static, 2, pos);
 1.19697 +              state = 0;
 1.19698 +              continue stateloop;
 1.19699 +            case 45:
 1.19700 +              $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, c);
 1.19701 +              continue;
 1.19702 +            case 32:
 1.19703 +            case 9:
 1.19704 +            case 12:
 1.19705 +              $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, c);
 1.19706 +              state = 35;
 1.19707 +              break commentendloop;
 1.19708 +            case 13:
 1.19709 +              this$static.nextCharOnNewLine = true;
 1.19710 +              this$static.lastCR = true;
 1.19711 +              $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, 10);
 1.19712 +              state = 35;
 1.19713 +              break stateloop;
 1.19714 +            case 10:
 1.19715 +              this$static.nextCharOnNewLine = true;
 1.19716 +              $adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, 10);
 1.19717 +              state = 35;
 1.19718 +              break commentendloop;
 1.19719 +            case 33:
 1.19720 +              $appendLongStrBuf(this$static, c);
 1.19721 +              state = 36;
 1.19722 +              continue stateloop;
 1.19723 +            case 0:
 1.19724 +              c = 65533;
 1.19725 +            default:$adjustDoubleHyphenAndAppendToLongStrBufAndErr(this$static, c);
 1.19726 +              state = 32;
 1.19727 +              continue stateloop;
 1.19728 +          }
 1.19729 +        }
 1.19730 +
 1.19731 +      case 35:
 1.19732 +        for (;;) {
 1.19733 +          if (++pos == endPos) {
 1.19734 +            break stateloop;
 1.19735 +          }
 1.19736 +          c = $checkChar(this$static, buf, pos);
 1.19737 +          switch (c) {
 1.19738 +            case 62:
 1.19739 +              $emitComment(this$static, 0, pos);
 1.19740 +              state = 0;
 1.19741 +              continue stateloop;
 1.19742 +            case 45:
 1.19743 +              $appendLongStrBuf(this$static, c);
 1.19744 +              state = 33;
 1.19745 +              continue stateloop;
 1.19746 +            case 32:
 1.19747 +            case 9:
 1.19748 +            case 12:
 1.19749 +              $appendLongStrBuf(this$static, c);
 1.19750 +              continue;
 1.19751 +            case 13:
 1.19752 +              this$static.nextCharOnNewLine = true;
 1.19753 +              this$static.lastCR = true;
 1.19754 +              $appendLongStrBuf(this$static, 10);
 1.19755 +              break stateloop;
 1.19756 +            case 10:
 1.19757 +              this$static.nextCharOnNewLine = true;
 1.19758 +              $appendLongStrBuf(this$static, 10);
 1.19759 +              continue;
 1.19760 +            case 0:
 1.19761 +              c = 65533;
 1.19762 +            default:$appendLongStrBuf(this$static, c);
 1.19763 +              state = 32;
 1.19764 +              continue stateloop;
 1.19765 +          }
 1.19766 +        }
 1.19767 +
 1.19768 +      case 36:
 1.19769 +        for (;;) {
 1.19770 +          if (++pos == endPos) {
 1.19771 +            break stateloop;
 1.19772 +          }
 1.19773 +          c = $checkChar(this$static, buf, pos);
 1.19774 +          switch (c) {
 1.19775 +            case 62:
 1.19776 +              $emitComment(this$static, 3, pos);
 1.19777 +              state = 0;
 1.19778 +              continue stateloop;
 1.19779 +            case 45:
 1.19780 +              $appendLongStrBuf(this$static, c);
 1.19781 +              state = 33;
 1.19782 +              continue stateloop;
 1.19783 +            case 13:
 1.19784 +              this$static.nextCharOnNewLine = true;
 1.19785 +              this$static.lastCR = true;
 1.19786 +              $appendLongStrBuf(this$static, 10);
 1.19787 +              break stateloop;
 1.19788 +            case 10:
 1.19789 +              this$static.nextCharOnNewLine = true;
 1.19790 +              $appendLongStrBuf(this$static, 10);
 1.19791 +              continue;
 1.19792 +            case 0:
 1.19793 +              c = 65533;
 1.19794 +            default:$appendLongStrBuf(this$static, c);
 1.19795 +              state = 32;
 1.19796 +              continue stateloop;
 1.19797 +          }
 1.19798 +        }
 1.19799 +
 1.19800 +      case 31:
 1.19801 +        if (++pos == endPos) {
 1.19802 +          break stateloop;
 1.19803 +        }
 1.19804 +
 1.19805 +        c = $checkChar(this$static, buf, pos);
 1.19806 +        switch (c) {
 1.19807 +          case 45:
 1.19808 +            $appendLongStrBuf(this$static, c);
 1.19809 +            state = 34;
 1.19810 +            continue stateloop;
 1.19811 +          case 62:
 1.19812 +            $emitComment(this$static, 1, pos);
 1.19813 +            state = 0;
 1.19814 +            continue stateloop;
 1.19815 +          case 13:
 1.19816 +            this$static.nextCharOnNewLine = true;
 1.19817 +            this$static.lastCR = true;
 1.19818 +            $appendLongStrBuf(this$static, 10);
 1.19819 +            state = 32;
 1.19820 +            break stateloop;
 1.19821 +          case 10:
 1.19822 +            this$static.nextCharOnNewLine = true;
 1.19823 +            $appendLongStrBuf(this$static, 10);
 1.19824 +            state = 32;
 1.19825 +            continue stateloop;
 1.19826 +          case 0:
 1.19827 +            c = 65533;
 1.19828 +          default:$appendLongStrBuf(this$static, c);
 1.19829 +            state = 32;
 1.19830 +            continue stateloop;
 1.19831 +        }
 1.19832 +
 1.19833 +      case 39:
 1.19834 +        markupdeclarationdoctypeloop: for (;;) {
 1.19835 +          if (++pos == endPos) {
 1.19836 +            break stateloop;
 1.19837 +          }
 1.19838 +          c = $checkChar(this$static, buf, pos);
 1.19839 +          if (this$static.index < 6) {
 1.19840 +            folded = c;
 1.19841 +            if (c >= 65 && c <= 90) {
 1.19842 +              folded += 32;
 1.19843 +            }
 1.19844 +            if (folded == OCTYPE[this$static.index]) {
 1.19845 +              $appendLongStrBuf(this$static, c);
 1.19846 +            }
 1.19847 +             else {
 1.19848 +              state = 15;
 1.19849 +              reconsume = true;
 1.19850 +              continue stateloop;
 1.19851 +            }
 1.19852 +            ++this$static.index;
 1.19853 +            continue;
 1.19854 +          }
 1.19855 +           else {
 1.19856 +            state = 17;
 1.19857 +            reconsume = true;
 1.19858 +            break markupdeclarationdoctypeloop;
 1.19859 +          }
 1.19860 +        }
 1.19861 +
 1.19862 +      case 17:
 1.19863 +        doctypeloop: for (;;) {
 1.19864 +          if (reconsume) {
 1.19865 +            reconsume = false;
 1.19866 +          }
 1.19867 +           else {
 1.19868 +            if (++pos == endPos) {
 1.19869 +              break stateloop;
 1.19870 +            }
 1.19871 +            c = $checkChar(this$static, buf, pos);
 1.19872 +          }
 1.19873 +          this$static.doctypeName = '';
 1.19874 +          this$static.systemIdentifier = null;
 1.19875 +          this$static.publicIdentifier = null;
 1.19876 +          this$static.forceQuirks = false;
 1.19877 +          switch (c) {
 1.19878 +            case 13:
 1.19879 +              this$static.nextCharOnNewLine = true;
 1.19880 +              this$static.lastCR = true;
 1.19881 +              state = 18;
 1.19882 +              break stateloop;
 1.19883 +            case 10:
 1.19884 +              this$static.nextCharOnNewLine = true;
 1.19885 +            case 32:
 1.19886 +            case 9:
 1.19887 +            case 12:
 1.19888 +              state = 18;
 1.19889 +              break doctypeloop;
 1.19890 +            default:state = 18;
 1.19891 +              reconsume = true;
 1.19892 +              break doctypeloop;
 1.19893 +          }
 1.19894 +        }
 1.19895 +
 1.19896 +      case 18:
 1.19897 +        beforedoctypenameloop: for (;;) {
 1.19898 +          if (reconsume) {
 1.19899 +            reconsume = false;
 1.19900 +          }
 1.19901 +           else {
 1.19902 +            if (++pos == endPos) {
 1.19903 +              break stateloop;
 1.19904 +            }
 1.19905 +            c = $checkChar(this$static, buf, pos);
 1.19906 +          }
 1.19907 +          switch (c) {
 1.19908 +            case 13:
 1.19909 +              this$static.nextCharOnNewLine = true;
 1.19910 +              this$static.lastCR = true;
 1.19911 +              break stateloop;
 1.19912 +            case 10:
 1.19913 +              this$static.nextCharOnNewLine = true;
 1.19914 +            case 32:
 1.19915 +            case 9:
 1.19916 +            case 12:
 1.19917 +              continue;
 1.19918 +            case 62:
 1.19919 +              this$static.forceQuirks = true;
 1.19920 +              this$static.cstart = pos + 1;
 1.19921 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.19922 +              state = 0;
 1.19923 +              continue stateloop;
 1.19924 +            case 0:
 1.19925 +              c = 65533;
 1.19926 +            default:if (c >= 65 && c <= 90) {
 1.19927 +                c += 32;
 1.19928 +              }
 1.19929 +
 1.19930 +              this$static.strBuf[0] = c;
 1.19931 +              this$static.strBufLen = 1;
 1.19932 +              state = 19;
 1.19933 +              break beforedoctypenameloop;
 1.19934 +          }
 1.19935 +        }
 1.19936 +
 1.19937 +      case 19:
 1.19938 +        doctypenameloop: for (;;) {
 1.19939 +          if (++pos == endPos) {
 1.19940 +            break stateloop;
 1.19941 +          }
 1.19942 +          c = $checkChar(this$static, buf, pos);
 1.19943 +          switch (c) {
 1.19944 +            case 13:
 1.19945 +              this$static.nextCharOnNewLine = true;
 1.19946 +              this$static.lastCR = true;
 1.19947 +              this$static.doctypeName = String(valueOf_1(this$static.strBuf, 0, this$static.strBufLen));
 1.19948 +              state = 20;
 1.19949 +              break stateloop;
 1.19950 +            case 10:
 1.19951 +              this$static.nextCharOnNewLine = true;
 1.19952 +            case 32:
 1.19953 +            case 9:
 1.19954 +            case 12:
 1.19955 +              this$static.doctypeName = String(valueOf_1(this$static.strBuf, 0, this$static.strBufLen));
 1.19956 +              state = 20;
 1.19957 +              break doctypenameloop;
 1.19958 +            case 62:
 1.19959 +              this$static.doctypeName = String(valueOf_1(this$static.strBuf, 0, this$static.strBufLen));
 1.19960 +              this$static.cstart = pos + 1;
 1.19961 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.19962 +              state = 0;
 1.19963 +              continue stateloop;
 1.19964 +            case 0:
 1.19965 +              c = 65533;
 1.19966 +            default:if (c >= 65 && c <= 90) {
 1.19967 +                c += 32;
 1.19968 +              }
 1.19969 +
 1.19970 +              $appendStrBuf(this$static, c);
 1.19971 +              continue;
 1.19972 +          }
 1.19973 +        }
 1.19974 +
 1.19975 +      case 20:
 1.19976 +        afterdoctypenameloop: for (;;) {
 1.19977 +          if (++pos == endPos) {
 1.19978 +            break stateloop;
 1.19979 +          }
 1.19980 +          c = $checkChar(this$static, buf, pos);
 1.19981 +          switch (c) {
 1.19982 +            case 13:
 1.19983 +              this$static.nextCharOnNewLine = true;
 1.19984 +              this$static.lastCR = true;
 1.19985 +              break stateloop;
 1.19986 +            case 10:
 1.19987 +              this$static.nextCharOnNewLine = true;
 1.19988 +            case 32:
 1.19989 +            case 9:
 1.19990 +            case 12:
 1.19991 +              continue;
 1.19992 +            case 62:
 1.19993 +              this$static.cstart = pos + 1;
 1.19994 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.19995 +              state = 0;
 1.19996 +              continue stateloop;
 1.19997 +            case 112:
 1.19998 +            case 80:
 1.19999 +              this$static.index = 0;
 1.20000 +              state = 40;
 1.20001 +              break afterdoctypenameloop;
 1.20002 +            case 115:
 1.20003 +            case 83:
 1.20004 +              this$static.index = 0;
 1.20005 +              state = 41;
 1.20006 +              continue stateloop;
 1.20007 +            default:this$static.forceQuirks = true;
 1.20008 +              state = 29;
 1.20009 +              continue stateloop;
 1.20010 +          }
 1.20011 +        }
 1.20012 +
 1.20013 +      case 40:
 1.20014 +        doctypeublicloop: for (;;) {
 1.20015 +          if (++pos == endPos) {
 1.20016 +            break stateloop;
 1.20017 +          }
 1.20018 +          c = $checkChar(this$static, buf, pos);
 1.20019 +          if (this$static.index < 5) {
 1.20020 +            folded = c;
 1.20021 +            if (c >= 65 && c <= 90) {
 1.20022 +              folded += 32;
 1.20023 +            }
 1.20024 +            if (folded != UBLIC[this$static.index]) {
 1.20025 +              this$static.forceQuirks = true;
 1.20026 +              state = 29;
 1.20027 +              reconsume = true;
 1.20028 +              continue stateloop;
 1.20029 +            }
 1.20030 +            ++this$static.index;
 1.20031 +            continue;
 1.20032 +          }
 1.20033 +           else {
 1.20034 +            state = 21;
 1.20035 +            reconsume = true;
 1.20036 +            break doctypeublicloop;
 1.20037 +          }
 1.20038 +        }
 1.20039 +
 1.20040 +      case 21:
 1.20041 +        beforedoctypepublicidentifierloop: for (;;) {
 1.20042 +          if (reconsume) {
 1.20043 +            reconsume = false;
 1.20044 +          }
 1.20045 +           else {
 1.20046 +            if (++pos == endPos) {
 1.20047 +              break stateloop;
 1.20048 +            }
 1.20049 +            c = $checkChar(this$static, buf, pos);
 1.20050 +          }
 1.20051 +          switch (c) {
 1.20052 +            case 13:
 1.20053 +              this$static.nextCharOnNewLine = true;
 1.20054 +              this$static.lastCR = true;
 1.20055 +              break stateloop;
 1.20056 +            case 10:
 1.20057 +              this$static.nextCharOnNewLine = true;
 1.20058 +            case 32:
 1.20059 +            case 9:
 1.20060 +            case 12:
 1.20061 +              continue;
 1.20062 +            case 34:
 1.20063 +              this$static.longStrBufLen = 0;
 1.20064 +              state = 22;
 1.20065 +              break beforedoctypepublicidentifierloop;
 1.20066 +            case 39:
 1.20067 +              this$static.longStrBufLen = 0;
 1.20068 +              state = 23;
 1.20069 +              continue stateloop;
 1.20070 +            case 62:
 1.20071 +              this$static.forceQuirks = true;
 1.20072 +              this$static.cstart = pos + 1;
 1.20073 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.20074 +              state = 0;
 1.20075 +              continue stateloop;
 1.20076 +            default:this$static.forceQuirks = true;
 1.20077 +              state = 29;
 1.20078 +              continue stateloop;
 1.20079 +          }
 1.20080 +        }
 1.20081 +
 1.20082 +      case 22:
 1.20083 +        doctypepublicidentifierdoublequotedloop: for (;;) {
 1.20084 +          if (++pos == endPos) {
 1.20085 +            break stateloop;
 1.20086 +          }
 1.20087 +          c = $checkChar(this$static, buf, pos);
 1.20088 +          switch (c) {
 1.20089 +            case 34:
 1.20090 +              this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
 1.20091 +              state = 24;
 1.20092 +              break doctypepublicidentifierdoublequotedloop;
 1.20093 +            case 62:
 1.20094 +              this$static.forceQuirks = true;
 1.20095 +              this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
 1.20096 +              this$static.cstart = pos + 1;
 1.20097 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.20098 +              state = 0;
 1.20099 +              continue stateloop;
 1.20100 +            case 13:
 1.20101 +              this$static.nextCharOnNewLine = true;
 1.20102 +              this$static.lastCR = true;
 1.20103 +              $appendLongStrBuf(this$static, 10);
 1.20104 +              break stateloop;
 1.20105 +            case 10:
 1.20106 +              this$static.nextCharOnNewLine = true;
 1.20107 +              $appendLongStrBuf(this$static, 10);
 1.20108 +              continue;
 1.20109 +            case 0:
 1.20110 +              c = 65533;
 1.20111 +            default:$appendLongStrBuf(this$static, c);
 1.20112 +              continue;
 1.20113 +          }
 1.20114 +        }
 1.20115 +
 1.20116 +      case 24:
 1.20117 +        afterdoctypepublicidentifierloop: for (;;) {
 1.20118 +          if (++pos == endPos) {
 1.20119 +            break stateloop;
 1.20120 +          }
 1.20121 +          c = $checkChar(this$static, buf, pos);
 1.20122 +          switch (c) {
 1.20123 +            case 13:
 1.20124 +              this$static.nextCharOnNewLine = true;
 1.20125 +              this$static.lastCR = true;
 1.20126 +              break stateloop;
 1.20127 +            case 10:
 1.20128 +              this$static.nextCharOnNewLine = true;
 1.20129 +            case 32:
 1.20130 +            case 9:
 1.20131 +            case 12:
 1.20132 +              continue;
 1.20133 +            case 34:
 1.20134 +              this$static.longStrBufLen = 0;
 1.20135 +              state = 26;
 1.20136 +              break afterdoctypepublicidentifierloop;
 1.20137 +            case 39:
 1.20138 +              this$static.longStrBufLen = 0;
 1.20139 +              state = 27;
 1.20140 +              continue stateloop;
 1.20141 +            case 62:
 1.20142 +              this$static.cstart = pos + 1;
 1.20143 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.20144 +              state = 0;
 1.20145 +              continue stateloop;
 1.20146 +            default:this$static.forceQuirks = true;
 1.20147 +              state = 29;
 1.20148 +              continue stateloop;
 1.20149 +          }
 1.20150 +        }
 1.20151 +
 1.20152 +      case 26:
 1.20153 +        doctypesystemidentifierdoublequotedloop: for (;;) {
 1.20154 +          if (++pos == endPos) {
 1.20155 +            break stateloop;
 1.20156 +          }
 1.20157 +          c = $checkChar(this$static, buf, pos);
 1.20158 +          switch (c) {
 1.20159 +            case 34:
 1.20160 +              this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
 1.20161 +              state = 28;
 1.20162 +              continue stateloop;
 1.20163 +            case 62:
 1.20164 +              this$static.forceQuirks = true;
 1.20165 +              this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
 1.20166 +              this$static.cstart = pos + 1;
 1.20167 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.20168 +              state = 0;
 1.20169 +              continue stateloop;
 1.20170 +            case 13:
 1.20171 +              this$static.nextCharOnNewLine = true;
 1.20172 +              this$static.lastCR = true;
 1.20173 +              $appendLongStrBuf(this$static, 10);
 1.20174 +              break stateloop;
 1.20175 +            case 10:
 1.20176 +              this$static.nextCharOnNewLine = true;
 1.20177 +              $appendLongStrBuf(this$static, 10);
 1.20178 +              continue;
 1.20179 +            case 0:
 1.20180 +              c = 65533;
 1.20181 +            default:$appendLongStrBuf(this$static, c);
 1.20182 +              continue;
 1.20183 +          }
 1.20184 +        }
 1.20185 +
 1.20186 +      case 28:
 1.20187 +        afterdoctypesystemidentifierloop: for (;;) {
 1.20188 +          if (++pos == endPos) {
 1.20189 +            break stateloop;
 1.20190 +          }
 1.20191 +          c = $checkChar(this$static, buf, pos);
 1.20192 +          switch (c) {
 1.20193 +            case 13:
 1.20194 +              this$static.nextCharOnNewLine = true;
 1.20195 +              this$static.lastCR = true;
 1.20196 +              break stateloop;
 1.20197 +            case 10:
 1.20198 +              this$static.nextCharOnNewLine = true;
 1.20199 +            case 32:
 1.20200 +            case 9:
 1.20201 +            case 12:
 1.20202 +              continue;
 1.20203 +            case 62:
 1.20204 +              this$static.cstart = pos + 1;
 1.20205 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.20206 +              state = 0;
 1.20207 +              continue stateloop;
 1.20208 +            default:this$static.forceQuirks = false;
 1.20209 +              state = 29;
 1.20210 +              break afterdoctypesystemidentifierloop;
 1.20211 +          }
 1.20212 +        }
 1.20213 +
 1.20214 +      case 29:
 1.20215 +        for (;;) {
 1.20216 +          if (reconsume) {
 1.20217 +            reconsume = false;
 1.20218 +          }
 1.20219 +           else {
 1.20220 +            if (++pos == endPos) {
 1.20221 +              break stateloop;
 1.20222 +            }
 1.20223 +            c = $checkChar(this$static, buf, pos);
 1.20224 +          }
 1.20225 +          switch (c) {
 1.20226 +            case 62:
 1.20227 +              this$static.cstart = pos + 1;
 1.20228 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.20229 +              state = 0;
 1.20230 +              continue stateloop;
 1.20231 +            case 13:
 1.20232 +              this$static.nextCharOnNewLine = true;
 1.20233 +              this$static.lastCR = true;
 1.20234 +              break stateloop;
 1.20235 +            case 10:
 1.20236 +              this$static.nextCharOnNewLine = true;
 1.20237 +            default:continue;
 1.20238 +          }
 1.20239 +        }
 1.20240 +
 1.20241 +      case 41:
 1.20242 +        doctypeystemloop: for (;;) {
 1.20243 +          if (++pos == endPos) {
 1.20244 +            break stateloop;
 1.20245 +          }
 1.20246 +          c = $checkChar(this$static, buf, pos);
 1.20247 +          if (this$static.index < 5) {
 1.20248 +            folded = c;
 1.20249 +            if (c >= 65 && c <= 90) {
 1.20250 +              folded += 32;
 1.20251 +            }
 1.20252 +            if (folded != YSTEM[this$static.index]) {
 1.20253 +              this$static.forceQuirks = true;
 1.20254 +              state = 29;
 1.20255 +              reconsume = true;
 1.20256 +              continue stateloop;
 1.20257 +            }
 1.20258 +            ++this$static.index;
 1.20259 +            continue stateloop;
 1.20260 +          }
 1.20261 +           else {
 1.20262 +            state = 25;
 1.20263 +            reconsume = true;
 1.20264 +            break doctypeystemloop;
 1.20265 +          }
 1.20266 +        }
 1.20267 +
 1.20268 +      case 25:
 1.20269 +        beforedoctypesystemidentifierloop: for (;;) {
 1.20270 +          if (reconsume) {
 1.20271 +            reconsume = false;
 1.20272 +          }
 1.20273 +           else {
 1.20274 +            if (++pos == endPos) {
 1.20275 +              break stateloop;
 1.20276 +            }
 1.20277 +            c = $checkChar(this$static, buf, pos);
 1.20278 +          }
 1.20279 +          switch (c) {
 1.20280 +            case 13:
 1.20281 +              this$static.nextCharOnNewLine = true;
 1.20282 +              this$static.lastCR = true;
 1.20283 +              break stateloop;
 1.20284 +            case 10:
 1.20285 +              this$static.nextCharOnNewLine = true;
 1.20286 +            case 32:
 1.20287 +            case 9:
 1.20288 +            case 12:
 1.20289 +              continue;
 1.20290 +            case 34:
 1.20291 +              this$static.longStrBufLen = 0;
 1.20292 +              state = 26;
 1.20293 +              continue stateloop;
 1.20294 +            case 39:
 1.20295 +              this$static.longStrBufLen = 0;
 1.20296 +              state = 27;
 1.20297 +              break beforedoctypesystemidentifierloop;
 1.20298 +            case 62:
 1.20299 +              this$static.forceQuirks = true;
 1.20300 +              this$static.cstart = pos + 1;
 1.20301 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.20302 +              state = 0;
 1.20303 +              continue stateloop;
 1.20304 +            default:this$static.forceQuirks = true;
 1.20305 +              state = 29;
 1.20306 +              continue stateloop;
 1.20307 +          }
 1.20308 +        }
 1.20309 +
 1.20310 +      case 27:
 1.20311 +        for (;;) {
 1.20312 +          if (++pos == endPos) {
 1.20313 +            break stateloop;
 1.20314 +          }
 1.20315 +          c = $checkChar(this$static, buf, pos);
 1.20316 +          switch (c) {
 1.20317 +            case 39:
 1.20318 +              this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
 1.20319 +              state = 28;
 1.20320 +              continue stateloop;
 1.20321 +            case 62:
 1.20322 +              this$static.forceQuirks = true;
 1.20323 +              this$static.systemIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
 1.20324 +              this$static.cstart = pos + 1;
 1.20325 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.20326 +              state = 0;
 1.20327 +              continue stateloop;
 1.20328 +            case 13:
 1.20329 +              this$static.nextCharOnNewLine = true;
 1.20330 +              this$static.lastCR = true;
 1.20331 +              $appendLongStrBuf(this$static, 10);
 1.20332 +              break stateloop;
 1.20333 +            case 10:
 1.20334 +              this$static.nextCharOnNewLine = true;
 1.20335 +              $appendLongStrBuf(this$static, 10);
 1.20336 +              continue;
 1.20337 +            case 0:
 1.20338 +              c = 65533;
 1.20339 +            default:$appendLongStrBuf(this$static, c);
 1.20340 +              continue;
 1.20341 +          }
 1.20342 +        }
 1.20343 +
 1.20344 +      case 23:
 1.20345 +        for (;;) {
 1.20346 +          if (++pos == endPos) {
 1.20347 +            break stateloop;
 1.20348 +          }
 1.20349 +          c = $checkChar(this$static, buf, pos);
 1.20350 +          switch (c) {
 1.20351 +            case 39:
 1.20352 +              this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
 1.20353 +              state = 24;
 1.20354 +              continue stateloop;
 1.20355 +            case 62:
 1.20356 +              this$static.forceQuirks = true;
 1.20357 +              this$static.publicIdentifier = valueOf_1(this$static.longStrBuf, 0, this$static.longStrBufLen);
 1.20358 +              this$static.cstart = pos + 1;
 1.20359 +              $doctype(this$static.tokenHandler, this$static.doctypeName, this$static.publicIdentifier, this$static.systemIdentifier, this$static.forceQuirks);
 1.20360 +              state = 0;
 1.20361 +              continue stateloop;
 1.20362 +            case 13:
 1.20363 +              this$static.nextCharOnNewLine = true;
 1.20364 +              this$static.lastCR = true;
 1.20365 +              $appendLongStrBuf(this$static, 10);
 1.20366 +              break stateloop;
 1.20367 +            case 10:
 1.20368 +              this$static.nextCharOnNewLine = true;
 1.20369 +              $appendLongStrBuf(this$static, 10);
 1.20370 +              continue;
 1.20371 +            case 0:
 1.20372 +              c = 65533;
 1.20373 +            default:$appendLongStrBuf(this$static, c);
 1.20374 +              continue;
 1.20375 +          }
 1.20376 +        }
 1.20377 +
 1.20378 +      case 49:
 1.20379 +        for (;;) {
 1.20380 +          if (++pos == endPos) {
 1.20381 +            break stateloop;
 1.20382 +          }
 1.20383 +          c = $checkChar(this$static, buf, pos);
 1.20384 +          if (this$static.index < 6) {
 1.20385 +            if (c == CDATA_LSQB[this$static.index]) {
 1.20386 +              $appendLongStrBuf(this$static, c);
 1.20387 +            }
 1.20388 +             else {
 1.20389 +              state = 15;
 1.20390 +              reconsume = true;
 1.20391 +              continue stateloop;
 1.20392 +            }
 1.20393 +            ++this$static.index;
 1.20394 +            continue;
 1.20395 +          }
 1.20396 +           else {
 1.20397 +            this$static.cstart = pos;
 1.20398 +            state = 50;
 1.20399 +            reconsume = true;
 1.20400 +            break;
 1.20401 +          }
 1.20402 +        }
 1.20403 +
 1.20404 +      case 50:
 1.20405 +        cdatasectionloop: for (;;) {
 1.20406 +          if (reconsume) {
 1.20407 +            reconsume = false;
 1.20408 +          }
 1.20409 +           else {
 1.20410 +            if (++pos == endPos) {
 1.20411 +              break stateloop;
 1.20412 +            }
 1.20413 +            c = $checkChar(this$static, buf, pos);
 1.20414 +          }
 1.20415 +          switch (c) {
 1.20416 +            case 93:
 1.20417 +              $flushChars(this$static, buf, pos);
 1.20418 +              state = 51;
 1.20419 +              break cdatasectionloop;
 1.20420 +            case 0:
 1.20421 +              $emitReplacementCharacter(this$static, buf, pos);
 1.20422 +              continue;
 1.20423 +            case 13:
 1.20424 +              $emitCarriageReturn(this$static, buf, pos);
 1.20425 +              break stateloop;
 1.20426 +            case 10:
 1.20427 +              this$static.nextCharOnNewLine = true;
 1.20428 +            default:continue;
 1.20429 +          }
 1.20430 +        }
 1.20431 +
 1.20432 +      case 51:
 1.20433 +        cdatarsqb: for (;;) {
 1.20434 +          if (++pos == endPos) {
 1.20435 +            break stateloop;
 1.20436 +          }
 1.20437 +          c = $checkChar(this$static, buf, pos);
 1.20438 +          switch (c) {
 1.20439 +            case 93:
 1.20440 +              state = 52;
 1.20441 +              break cdatarsqb;
 1.20442 +            default:$characters(this$static.tokenHandler, RSQB_RSQB, 0, 1);
 1.20443 +              this$static.cstart = pos;
 1.20444 +              state = 50;
 1.20445 +              reconsume = true;
 1.20446 +              continue stateloop;
 1.20447 +          }
 1.20448 +        }
 1.20449 +
 1.20450 +      case 52:
 1.20451 +        if (++pos == endPos) {
 1.20452 +          break stateloop;
 1.20453 +        }
 1.20454 +
 1.20455 +        c = $checkChar(this$static, buf, pos);
 1.20456 +        switch (c) {
 1.20457 +          case 62:
 1.20458 +            this$static.cstart = pos + 1;
 1.20459 +            state = 0;
 1.20460 +            continue stateloop;
 1.20461 +          default:$characters(this$static.tokenHandler, RSQB_RSQB, 0, 2);
 1.20462 +            this$static.cstart = pos;
 1.20463 +            state = 50;
 1.20464 +            reconsume = true;
 1.20465 +            continue stateloop;
 1.20466 +        }
 1.20467 +
 1.20468 +      case 12:
 1.20469 +        attributevaluesinglequotedloop: for (;;) {
 1.20470 +          if (reconsume) {
 1.20471 +            reconsume = false;
 1.20472 +          }
 1.20473 +           else {
 1.20474 +            if (++pos == endPos) {
 1.20475 +              break stateloop;
 1.20476 +            }
 1.20477 +            c = $checkChar(this$static, buf, pos);
 1.20478 +          }
 1.20479 +          switch (c) {
 1.20480 +            case 39:
 1.20481 +              $addAttributeWithValue(this$static);
 1.20482 +              state = 14;
 1.20483 +              continue stateloop;
 1.20484 +            case 38:
 1.20485 +              this$static.strBuf[0] = c;
 1.20486 +              this$static.strBufLen = 1;
 1.20487 +              this$static.additional = 39;
 1.20488 +              $LocatorImpl(new LocatorImpl(), this$static);
 1.20489 +              returnState = state;
 1.20490 +              state = 42;
 1.20491 +              break attributevaluesinglequotedloop;
 1.20492 +            case 13:
 1.20493 +              this$static.nextCharOnNewLine = true;
 1.20494 +              this$static.lastCR = true;
 1.20495 +              $appendLongStrBuf(this$static, 10);
 1.20496 +              break stateloop;
 1.20497 +            case 10:
 1.20498 +              this$static.nextCharOnNewLine = true;
 1.20499 +              $appendLongStrBuf(this$static, 10);
 1.20500 +              continue;
 1.20501 +            case 0:
 1.20502 +              c = 65533;
 1.20503 +            default:$appendLongStrBuf(this$static, c);
 1.20504 +              continue;
 1.20505 +          }
 1.20506 +        }
 1.20507 +
 1.20508 +      case 42:
 1.20509 +        if (++pos == endPos) {
 1.20510 +          break stateloop;
 1.20511 +        }
 1.20512 +
 1.20513 +        c = $checkChar(this$static, buf, pos);
 1.20514 +        if (c == 0) {
 1.20515 +          break stateloop;
 1.20516 +        }
 1.20517 +
 1.20518 +        switch (c) {
 1.20519 +          case 32:
 1.20520 +          case 9:
 1.20521 +          case 10:
 1.20522 +          case 13:
 1.20523 +          case 12:
 1.20524 +          case 60:
 1.20525 +          case 38:
 1.20526 +            $emitOrAppendStrBuf(this$static, returnState);
 1.20527 +            if ((returnState & -2) == 0) {
 1.20528 +              this$static.cstart = pos;
 1.20529 +            }
 1.20530 +
 1.20531 +            state = returnState;
 1.20532 +            reconsume = true;
 1.20533 +            continue stateloop;
 1.20534 +          case 35:
 1.20535 +            $appendStrBuf(this$static, 35);
 1.20536 +            state = 43;
 1.20537 +            continue stateloop;
 1.20538 +          default:if (c == this$static.additional) {
 1.20539 +              $emitOrAppendStrBuf(this$static, returnState);
 1.20540 +              state = returnState;
 1.20541 +              reconsume = true;
 1.20542 +              continue stateloop;
 1.20543 +            }
 1.20544 +
 1.20545 +            this$static.entCol = -1;
 1.20546 +            this$static.lo = 0;
 1.20547 +            this$static.hi = ($clinit_94() , NAMES).length - 1;
 1.20548 +            this$static.candidate = -1;
 1.20549 +            this$static.strBufMark = 0;
 1.20550 +            state = 44;
 1.20551 +            reconsume = true;
 1.20552 +        }
 1.20553 +
 1.20554 +      case 44:
 1.20555 +        outer: for (;;) {
 1.20556 +          if (reconsume) {
 1.20557 +            reconsume = false;
 1.20558 +          }
 1.20559 +           else {
 1.20560 +            if (++pos == endPos) {
 1.20561 +              break stateloop;
 1.20562 +            }
 1.20563 +            c = $checkChar(this$static, buf, pos);
 1.20564 +          }
 1.20565 +          if (c == 0) {
 1.20566 +            break stateloop;
 1.20567 +          }
 1.20568 +          ++this$static.entCol;
 1.20569 +          hiloop: for (;;) {
 1.20570 +            if (this$static.hi == -1) {
 1.20571 +              break hiloop;
 1.20572 +            }
 1.20573 +            if (this$static.entCol == ($clinit_94() , NAMES)[this$static.hi].length) {
 1.20574 +              break hiloop;
 1.20575 +            }
 1.20576 +            if (this$static.entCol > NAMES[this$static.hi].length) {
 1.20577 +              break outer;
 1.20578 +            }
 1.20579 +             else if (c < NAMES[this$static.hi][this$static.entCol]) {
 1.20580 +              --this$static.hi;
 1.20581 +            }
 1.20582 +             else {
 1.20583 +              break hiloop;
 1.20584 +            }
 1.20585 +          }
 1.20586 +          loloop: for (;;) {
 1.20587 +            if (this$static.hi < this$static.lo) {
 1.20588 +              break outer;
 1.20589 +            }
 1.20590 +            if (this$static.entCol == ($clinit_94() , NAMES)[this$static.lo].length) {
 1.20591 +              this$static.candidate = this$static.lo;
 1.20592 +              this$static.strBufMark = this$static.strBufLen;
 1.20593 +              ++this$static.lo;
 1.20594 +            }
 1.20595 +             else if (this$static.entCol > NAMES[this$static.lo].length) {
 1.20596 +              break outer;
 1.20597 +            }
 1.20598 +             else if (c > NAMES[this$static.lo][this$static.entCol]) {
 1.20599 +              ++this$static.lo;
 1.20600 +            }
 1.20601 +             else {
 1.20602 +              break loloop;
 1.20603 +            }
 1.20604 +          }
 1.20605 +          if (this$static.hi < this$static.lo) {
 1.20606 +            break outer;
 1.20607 +          }
 1.20608 +          $appendStrBuf(this$static, c);
 1.20609 +          continue;
 1.20610 +        }
 1.20611 +
 1.20612 +        if (this$static.candidate == -1) {
 1.20613 +          $emitOrAppendStrBuf(this$static, returnState);
 1.20614 +          if ((returnState & -2) == 0) {
 1.20615 +            this$static.cstart = pos;
 1.20616 +          }
 1.20617 +          state = returnState;
 1.20618 +          reconsume = true;
 1.20619 +          continue stateloop;
 1.20620 +        }
 1.20621 +         else {
 1.20622 +          candidateArr = ($clinit_94() , NAMES)[this$static.candidate];
 1.20623 +          if (candidateArr[candidateArr.length - 1] != 59) {
 1.20624 +            if ((returnState & -2) != 0) {
 1.20625 +              if (this$static.strBufMark == this$static.strBufLen) {
 1.20626 +                ch = c;
 1.20627 +              }
 1.20628 +               else {
 1.20629 +                ch = this$static.strBuf[this$static.strBufMark];
 1.20630 +              }
 1.20631 +              if (ch >= 48 && ch <= 57 || ch >= 65 && ch <= 90 || ch >= 97 && ch <= 122) {
 1.20632 +                $appendLongStrBuf_0(this$static, this$static.strBuf, 0, this$static.strBufLen);
 1.20633 +                state = returnState;
 1.20634 +                reconsume = true;
 1.20635 +                continue stateloop;
 1.20636 +              }
 1.20637 +            }
 1.20638 +          }
 1.20639 +          val = VALUES_0[this$static.candidate];
 1.20640 +          $emitOrAppend(this$static, val, returnState);
 1.20641 +          if (this$static.strBufMark < this$static.strBufLen) {
 1.20642 +            if ((returnState & -2) != 0) {
 1.20643 +              for (i = this$static.strBufMark; i < this$static.strBufLen; ++i) {
 1.20644 +                $appendLongStrBuf(this$static, this$static.strBuf[i]);
 1.20645 +              }
 1.20646 +            }
 1.20647 +             else {
 1.20648 +              $characters(this$static.tokenHandler, this$static.strBuf, this$static.strBufMark, this$static.strBufLen - this$static.strBufMark);
 1.20649 +            }
 1.20650 +          }
 1.20651 +          if ((returnState & -2) == 0) {
 1.20652 +            this$static.cstart = pos;
 1.20653 +          }
 1.20654 +          state = returnState;
 1.20655 +          reconsume = true;
 1.20656 +          continue stateloop;
 1.20657 +        }
 1.20658 +
 1.20659 +      case 43:
 1.20660 +        if (++pos == endPos) {
 1.20661 +          break stateloop;
 1.20662 +        }
 1.20663 +
 1.20664 +        c = $checkChar(this$static, buf, pos);
 1.20665 +        this$static.prevValue = -1;
 1.20666 +        this$static.value = 0;
 1.20667 +        this$static.seenDigits = false;
 1.20668 +        switch (c) {
 1.20669 +          case 120:
 1.20670 +          case 88:
 1.20671 +            $appendStrBuf(this$static, c);
 1.20672 +            state = 45;
 1.20673 +            continue stateloop;
 1.20674 +          default:state = 46;
 1.20675 +            reconsume = true;
 1.20676 +        }
 1.20677 +
 1.20678 +      case 46:
 1.20679 +        decimalloop: for (;;) {
 1.20680 +          if (reconsume) {
 1.20681 +            reconsume = false;
 1.20682 +          }
 1.20683 +           else {
 1.20684 +            if (++pos == endPos) {
 1.20685 +              break stateloop;
 1.20686 +            }
 1.20687 +            c = $checkChar(this$static, buf, pos);
 1.20688 +          }
 1.20689 +          if (this$static.value < this$static.prevValue) {
 1.20690 +            this$static.value = 1114112;
 1.20691 +          }
 1.20692 +          this$static.prevValue = this$static.value;
 1.20693 +          if (c >= 48 && c <= 57) {
 1.20694 +            this$static.seenDigits = true;
 1.20695 +            this$static.value *= 10;
 1.20696 +            this$static.value += c - 48;
 1.20697 +            continue;
 1.20698 +          }
 1.20699 +           else if (c == 59) {
 1.20700 +            if (this$static.seenDigits) {
 1.20701 +              if ((returnState & -2) == 0) {
 1.20702 +                this$static.cstart = pos + 1;
 1.20703 +              }
 1.20704 +              state = 47;
 1.20705 +              break decimalloop;
 1.20706 +            }
 1.20707 +             else {
 1.20708 +              'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
 1.20709 +              $appendStrBuf(this$static, 59);
 1.20710 +              $emitOrAppendStrBuf(this$static, returnState);
 1.20711 +              if ((returnState & -2) == 0) {
 1.20712 +                this$static.cstart = pos + 1;
 1.20713 +              }
 1.20714 +              state = returnState;
 1.20715 +              continue stateloop;
 1.20716 +            }
 1.20717 +          }
 1.20718 +           else {
 1.20719 +            if (this$static.seenDigits) {
 1.20720 +              if ((returnState & -2) == 0) {
 1.20721 +                this$static.cstart = pos;
 1.20722 +              }
 1.20723 +              state = 47;
 1.20724 +              reconsume = true;
 1.20725 +              break decimalloop;
 1.20726 +            }
 1.20727 +             else {
 1.20728 +              'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
 1.20729 +              $emitOrAppendStrBuf(this$static, returnState);
 1.20730 +              if ((returnState & -2) == 0) {
 1.20731 +                this$static.cstart = pos;
 1.20732 +              }
 1.20733 +              state = returnState;
 1.20734 +              reconsume = true;
 1.20735 +              continue stateloop;
 1.20736 +            }
 1.20737 +          }
 1.20738 +        }
 1.20739 +
 1.20740 +      case 47:
 1.20741 +        $handleNcrValue(this$static, returnState);
 1.20742 +        state = returnState;
 1.20743 +        continue stateloop;
 1.20744 +      case 45:
 1.20745 +        for (;;) {
 1.20746 +          if (++pos == endPos) {
 1.20747 +            break stateloop;
 1.20748 +          }
 1.20749 +          c = $checkChar(this$static, buf, pos);
 1.20750 +          if (this$static.value < this$static.prevValue) {
 1.20751 +            this$static.value = 1114112;
 1.20752 +          }
 1.20753 +          this$static.prevValue = this$static.value;
 1.20754 +          if (c >= 48 && c <= 57) {
 1.20755 +            this$static.seenDigits = true;
 1.20756 +            this$static.value *= 16;
 1.20757 +            this$static.value += c - 48;
 1.20758 +            continue;
 1.20759 +          }
 1.20760 +           else if (c >= 65 && c <= 70) {
 1.20761 +            this$static.seenDigits = true;
 1.20762 +            this$static.value *= 16;
 1.20763 +            this$static.value += c - 65 + 10;
 1.20764 +            continue;
 1.20765 +          }
 1.20766 +           else if (c >= 97 && c <= 102) {
 1.20767 +            this$static.seenDigits = true;
 1.20768 +            this$static.value *= 16;
 1.20769 +            this$static.value += c - 97 + 10;
 1.20770 +            continue;
 1.20771 +          }
 1.20772 +           else if (c == 59) {
 1.20773 +            if (this$static.seenDigits) {
 1.20774 +              if ((returnState & -2) == 0) {
 1.20775 +                this$static.cstart = pos + 1;
 1.20776 +              }
 1.20777 +              state = 47;
 1.20778 +              continue stateloop;
 1.20779 +            }
 1.20780 +             else {
 1.20781 +              'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
 1.20782 +              $appendStrBuf(this$static, 59);
 1.20783 +              $emitOrAppendStrBuf(this$static, returnState);
 1.20784 +              if ((returnState & -2) == 0) {
 1.20785 +                this$static.cstart = pos + 1;
 1.20786 +              }
 1.20787 +              state = returnState;
 1.20788 +              continue stateloop;
 1.20789 +            }
 1.20790 +          }
 1.20791 +           else {
 1.20792 +            if (this$static.seenDigits) {
 1.20793 +              if ((returnState & -2) == 0) {
 1.20794 +                this$static.cstart = pos;
 1.20795 +              }
 1.20796 +              state = 47;
 1.20797 +              reconsume = true;
 1.20798 +              continue stateloop;
 1.20799 +            }
 1.20800 +             else {
 1.20801 +              'No digits after \u201C' + valueOf_1(this$static.strBuf, 0, this$static.strBufLen) + '\u201D.';
 1.20802 +              $emitOrAppendStrBuf(this$static, returnState);
 1.20803 +              if ((returnState & -2) == 0) {
 1.20804 +                this$static.cstart = pos;
 1.20805 +              }
 1.20806 +              state = returnState;
 1.20807 +              reconsume = true;
 1.20808 +              continue stateloop;
 1.20809 +            }
 1.20810 +          }
 1.20811 +        }
 1.20812 +
 1.20813 +      case 3:
 1.20814 +        plaintextloop: for (;;) {
 1.20815 +          if (reconsume) {
 1.20816 +            reconsume = false;
 1.20817 +          }
 1.20818 +           else {
 1.20819 +            if (++pos == endPos) {
 1.20820 +              break stateloop;
 1.20821 +            }
 1.20822 +            c = $checkChar(this$static, buf, pos);
 1.20823 +          }
 1.20824 +          switch (c) {
 1.20825 +            case 0:
 1.20826 +              $emitReplacementCharacter(this$static, buf, pos);
 1.20827 +              continue;
 1.20828 +            case 13:
 1.20829 +              $emitCarriageReturn(this$static, buf, pos);
 1.20830 +              break stateloop;
 1.20831 +            case 10:
 1.20832 +              this$static.nextCharOnNewLine = true;
 1.20833 +            default:continue;
 1.20834 +          }
 1.20835 +        }
 1.20836 +
 1.20837 +      case 2:
 1.20838 +        cdataloop: for (;;) {
 1.20839 +          if (reconsume) {
 1.20840 +            reconsume = false;
 1.20841 +          }
 1.20842 +           else {
 1.20843 +            if (++pos == endPos) {
 1.20844 +              break stateloop;
 1.20845 +            }
 1.20846 +            c = $checkChar(this$static, buf, pos);
 1.20847 +          }
 1.20848 +          switch (c) {
 1.20849 +            case 60:
 1.20850 +              $flushChars(this$static, buf, pos);
 1.20851 +              returnState = state;
 1.20852 +              state = 53;
 1.20853 +              break cdataloop;
 1.20854 +            case 0:
 1.20855 +              $emitReplacementCharacter(this$static, buf, pos);
 1.20856 +              continue;
 1.20857 +            case 13:
 1.20858 +              $emitCarriageReturn(this$static, buf, pos);
 1.20859 +              break stateloop;
 1.20860 +            case 10:
 1.20861 +              this$static.nextCharOnNewLine = true;
 1.20862 +            default:continue;
 1.20863 +          }
 1.20864 +        }
 1.20865 +
 1.20866 +      case 53:
 1.20867 +        tagopennonpcdataloop: for (;;) {
 1.20868 +          if (++pos == endPos) {
 1.20869 +            break stateloop;
 1.20870 +          }
 1.20871 +          c = $checkChar(this$static, buf, pos);
 1.20872 +          switch (c) {
 1.20873 +            case 33:
 1.20874 +              $characters(this$static.tokenHandler, LT_GT, 0, 1);
 1.20875 +              this$static.cstart = pos;
 1.20876 +              state = 54;
 1.20877 +              break tagopennonpcdataloop;
 1.20878 +            case 47:
 1.20879 +              if (this$static.contentModelElement) {
 1.20880 +                this$static.index = 0;
 1.20881 +                this$static.strBufLen = 0;
 1.20882 +                state = 37;
 1.20883 +                continue stateloop;
 1.20884 +              }
 1.20885 +
 1.20886 +            default:$characters(this$static.tokenHandler, LT_GT, 0, 1);
 1.20887 +              this$static.cstart = pos;
 1.20888 +              state = returnState;
 1.20889 +              reconsume = true;
 1.20890 +              continue stateloop;
 1.20891 +          }
 1.20892 +        }
 1.20893 +
 1.20894 +      case 54:
 1.20895 +        escapeexclamationloop: for (;;) {
 1.20896 +          if (++pos == endPos) {
 1.20897 +            break stateloop;
 1.20898 +          }
 1.20899 +          c = $checkChar(this$static, buf, pos);
 1.20900 +          switch (c) {
 1.20901 +            case 45:
 1.20902 +              state = 55;
 1.20903 +              break escapeexclamationloop;
 1.20904 +            default:state = returnState;
 1.20905 +              reconsume = true;
 1.20906 +              continue stateloop;
 1.20907 +          }
 1.20908 +        }
 1.20909 +
 1.20910 +      case 55:
 1.20911 +        escapeexclamationhyphenloop: for (;;) {
 1.20912 +          if (++pos == endPos) {
 1.20913 +            break stateloop;
 1.20914 +          }
 1.20915 +          c = $checkChar(this$static, buf, pos);
 1.20916 +          switch (c) {
 1.20917 +            case 45:
 1.20918 +              state = 58;
 1.20919 +              break escapeexclamationhyphenloop;
 1.20920 +            default:state = returnState;
 1.20921 +              reconsume = true;
 1.20922 +              continue stateloop;
 1.20923 +          }
 1.20924 +        }
 1.20925 +
 1.20926 +      case 58:
 1.20927 +        escapehyphenhyphenloop: for (;;) {
 1.20928 +          if (++pos == endPos) {
 1.20929 +            break stateloop;
 1.20930 +          }
 1.20931 +          c = $checkChar(this$static, buf, pos);
 1.20932 +          switch (c) {
 1.20933 +            case 45:
 1.20934 +              continue;
 1.20935 +            case 62:
 1.20936 +              state = returnState;
 1.20937 +              continue stateloop;
 1.20938 +            case 0:
 1.20939 +              $emitReplacementCharacter(this$static, buf, pos);
 1.20940 +              state = 56;
 1.20941 +              break escapehyphenhyphenloop;
 1.20942 +            case 13:
 1.20943 +              $emitCarriageReturn(this$static, buf, pos);
 1.20944 +              state = 56;
 1.20945 +              break stateloop;
 1.20946 +            case 10:
 1.20947 +              this$static.nextCharOnNewLine = true;
 1.20948 +            default:state = 56;
 1.20949 +              break escapehyphenhyphenloop;
 1.20950 +          }
 1.20951 +        }
 1.20952 +
 1.20953 +      case 56:
 1.20954 +        escapeloop: for (;;) {
 1.20955 +          if (++pos == endPos) {
 1.20956 +            break stateloop;
 1.20957 +          }
 1.20958 +          c = $checkChar(this$static, buf, pos);
 1.20959 +          switch (c) {
 1.20960 +            case 45:
 1.20961 +              state = 57;
 1.20962 +              break escapeloop;
 1.20963 +            case 0:
 1.20964 +              $emitReplacementCharacter(this$static, buf, pos);
 1.20965 +              continue;
 1.20966 +            case 13:
 1.20967 +              $emitCarriageReturn(this$static, buf, pos);
 1.20968 +              break stateloop;
 1.20969 +            case 10:
 1.20970 +              this$static.nextCharOnNewLine = true;
 1.20971 +            default:continue;
 1.20972 +          }
 1.20973 +        }
 1.20974 +
 1.20975 +      case 57:
 1.20976 +        escapehyphenloop: for (;;) {
 1.20977 +          if (++pos == endPos) {
 1.20978 +            break stateloop;
 1.20979 +          }
 1.20980 +          c = $checkChar(this$static, buf, pos);
 1.20981 +          switch (c) {
 1.20982 +            case 45:
 1.20983 +              state = 58;
 1.20984 +              continue stateloop;
 1.20985 +            case 0:
 1.20986 +              $emitReplacementCharacter(this$static, buf, pos);
 1.20987 +              state = 56;
 1.20988 +              continue stateloop;
 1.20989 +            case 13:
 1.20990 +              $emitCarriageReturn(this$static, buf, pos);
 1.20991 +              state = 56;
 1.20992 +              continue stateloop;
 1.20993 +            case 10:
 1.20994 +              this$static.nextCharOnNewLine = true;
 1.20995 +            default:state = 56;
 1.20996 +              continue stateloop;
 1.20997 +          }
 1.20998 +        }
 1.20999 +
 1.21000 +      case 37:
 1.21001 +        for (;;) {
 1.21002 +          if (++pos == endPos) {
 1.21003 +            break stateloop;
 1.21004 +          }
 1.21005 +          c = $checkChar(this$static, buf, pos);
 1.21006 +          if (this$static.index < this$static.contentModelElementNameAsArray.length) {
 1.21007 +            e = this$static.contentModelElementNameAsArray[this$static.index];
 1.21008 +            folded = c;
 1.21009 +            if (c >= 65 && c <= 90) {
 1.21010 +              folded += 32;
 1.21011 +            }
 1.21012 +            if (folded != e) {
 1.21013 +              this$static.html4 && (this$static.index > 0 || folded >= 97 && folded <= 122) && ($clinit_89() , IFRAME) != this$static.contentModelElement;
 1.21014 +              $characters(this$static.tokenHandler, LT_SOLIDUS, 0, 2);
 1.21015 +              $emitStrBuf(this$static);
 1.21016 +              this$static.cstart = pos;
 1.21017 +              state = returnState;
 1.21018 +              reconsume = true;
 1.21019 +              continue stateloop;
 1.21020 +            }
 1.21021 +            $appendStrBuf(this$static, c);
 1.21022 +            ++this$static.index;
 1.21023 +            continue;
 1.21024 +          }
 1.21025 +           else {
 1.21026 +            this$static.endTag = true;
 1.21027 +            this$static.tagName = this$static.contentModelElement;
 1.21028 +            switch (c) {
 1.21029 +              case 13:
 1.21030 +                this$static.nextCharOnNewLine = true;
 1.21031 +                this$static.lastCR = true;
 1.21032 +                state = 7;
 1.21033 +                break stateloop;
 1.21034 +              case 10:
 1.21035 +                this$static.nextCharOnNewLine = true;
 1.21036 +              case 32:
 1.21037 +              case 9:
 1.21038 +              case 12:
 1.21039 +                state = 7;
 1.21040 +                continue stateloop;
 1.21041 +              case 62:
 1.21042 +                state = $emitCurrentTagToken(this$static, false, pos);
 1.21043 +                if (this$static.shouldSuspend) {
 1.21044 +                  break stateloop;
 1.21045 +                }
 1.21046 +
 1.21047 +                continue stateloop;
 1.21048 +              case 47:
 1.21049 +                state = 48;
 1.21050 +                continue stateloop;
 1.21051 +              default:$characters(this$static.tokenHandler, LT_SOLIDUS, 0, 2);
 1.21052 +                $emitStrBuf(this$static);
 1.21053 +                if (c == 0) {
 1.21054 +                  $emitReplacementCharacter(this$static, buf, pos);
 1.21055 +                }
 1.21056 +                 else {
 1.21057 +                  this$static.cstart = pos;
 1.21058 +                }
 1.21059 +
 1.21060 +                state = returnState;
 1.21061 +                continue stateloop;
 1.21062 +            }
 1.21063 +          }
 1.21064 +        }
 1.21065 +
 1.21066 +      case 5:
 1.21067 +        if (++pos == endPos) {
 1.21068 +          break stateloop;
 1.21069 +        }
 1.21070 +
 1.21071 +        c = $checkChar(this$static, buf, pos);
 1.21072 +        switch (c) {
 1.21073 +          case 62:
 1.21074 +            this$static.cstart = pos + 1;
 1.21075 +            state = 0;
 1.21076 +            continue stateloop;
 1.21077 +          case 13:
 1.21078 +            this$static.nextCharOnNewLine = true;
 1.21079 +            this$static.lastCR = true;
 1.21080 +            this$static.longStrBuf[0] = 10;
 1.21081 +            this$static.longStrBufLen = 1;
 1.21082 +            state = 15;
 1.21083 +            break stateloop;
 1.21084 +          case 10:
 1.21085 +            this$static.nextCharOnNewLine = true;
 1.21086 +            this$static.longStrBuf[0] = 10;
 1.21087 +            this$static.longStrBufLen = 1;
 1.21088 +            state = 15;
 1.21089 +            continue stateloop;
 1.21090 +          case 0:
 1.21091 +            c = 65533;
 1.21092 +          default:if (c >= 65 && c <= 90) {
 1.21093 +              c += 32;
 1.21094 +            }
 1.21095 +
 1.21096 +            if (c >= 97 && c <= 122) {
 1.21097 +              this$static.endTag = true;
 1.21098 +              this$static.strBuf[0] = c;
 1.21099 +              this$static.strBufLen = 1;
 1.21100 +              state = 6;
 1.21101 +              continue stateloop;
 1.21102 +            }
 1.21103 +             else {
 1.21104 +              this$static.longStrBuf[0] = c;
 1.21105 +              this$static.longStrBufLen = 1;
 1.21106 +              state = 15;
 1.21107 +              continue stateloop;
 1.21108 +            }
 1.21109 +
 1.21110 +        }
 1.21111 +
 1.21112 +      case 1:
 1.21113 +        rcdataloop: for (;;) {
 1.21114 +          if (reconsume) {
 1.21115 +            reconsume = false;
 1.21116 +          }
 1.21117 +           else {
 1.21118 +            if (++pos == endPos) {
 1.21119 +              break stateloop;
 1.21120 +            }
 1.21121 +            c = $checkChar(this$static, buf, pos);
 1.21122 +          }
 1.21123 +          switch (c) {
 1.21124 +            case 38:
 1.21125 +              $flushChars(this$static, buf, pos);
 1.21126 +              this$static.strBuf[0] = c;
 1.21127 +              this$static.strBufLen = 1;
 1.21128 +              this$static.additional = 0;
 1.21129 +              returnState = state;
 1.21130 +              state = 42;
 1.21131 +              continue stateloop;
 1.21132 +            case 60:
 1.21133 +              $flushChars(this$static, buf, pos);
 1.21134 +              returnState = state;
 1.21135 +              state = 53;
 1.21136 +              continue stateloop;
 1.21137 +            case 0:
 1.21138 +              $emitReplacementCharacter(this$static, buf, pos);
 1.21139 +              continue;
 1.21140 +            case 13:
 1.21141 +              $emitCarriageReturn(this$static, buf, pos);
 1.21142 +              break stateloop;
 1.21143 +            case 10:
 1.21144 +              this$static.nextCharOnNewLine = true;
 1.21145 +            default:continue;
 1.21146 +          }
 1.21147 +        }
 1.21148 +
 1.21149 +    }
 1.21150 +  }
 1.21151 +  $flushChars(this$static, buf, pos);
 1.21152 +  this$static.stateSave = state;
 1.21153 +  this$static.returnStateSave = returnState;
 1.21154 +  return pos;
 1.21155 +}
 1.21156 +
 1.21157 +function $tokenizeBuffer(this$static, buffer){
 1.21158 +  var pos, returnState, start, state;
 1.21159 +  state = this$static.stateSave;
 1.21160 +  returnState = this$static.returnStateSave;
 1.21161 +  this$static.shouldSuspend = false;
 1.21162 +  this$static.lastCR = false;
 1.21163 +  start = buffer.start;
 1.21164 +  pos = start - 1;
 1.21165 +  switch (state) {
 1.21166 +    case 0:
 1.21167 +    case 1:
 1.21168 +    case 2:
 1.21169 +    case 3:
 1.21170 +    case 50:
 1.21171 +    case 56:
 1.21172 +    case 54:
 1.21173 +    case 55:
 1.21174 +    case 57:
 1.21175 +    case 58:
 1.21176 +      this$static.cstart = start;
 1.21177 +      break;
 1.21178 +    default:this$static.cstart = 2147483647;
 1.21179 +  }
 1.21180 +  pos = $stateLoop(this$static, state, 0, pos, buffer.buffer, false, returnState, buffer.end);
 1.21181 +  if (pos == buffer.end) {
 1.21182 +    buffer.start = pos;
 1.21183 +  }
 1.21184 +   else {
 1.21185 +    buffer.start = pos + 1;
 1.21186 +  }
 1.21187 +  return this$static.lastCR;
 1.21188 +}
 1.21189 +
 1.21190 +function getClass_56(){
 1.21191 +  return Lnu_validator_htmlparser_impl_Tokenizer_2_classLit;
 1.21192 +}
 1.21193 +
 1.21194 +function newAsciiLowerCaseStringFromString(str){
 1.21195 +  var buf, c, i;
 1.21196 +  if (str == null) {
 1.21197 +    return null;
 1.21198 +  }
 1.21199 +  buf = initDim(_3C_classLit, 42, -1, str.length, 1);
 1.21200 +  for (i = 0; i < str.length; ++i) {
 1.21201 +    c = str.charCodeAt(i);
 1.21202 +    if (c >= 65 && c <= 90) {
 1.21203 +      c += 32;
 1.21204 +    }
 1.21205 +    buf[i] = c;
 1.21206 +  }
 1.21207 +  return String.fromCharCode.apply(null, buf);
 1.21208 +}
 1.21209 +
 1.21210 +function Tokenizer(){
 1.21211 +}
 1.21212 +
 1.21213 +_ = Tokenizer.prototype = new Object_0();
 1.21214 +_.getClass$ = getClass_56;
 1.21215 +_.typeId$ = 0;
 1.21216 +_.additional = 0;
 1.21217 +_.astralChar = null;
 1.21218 +_.attributeName = null;
 1.21219 +_.attributes = null;
 1.21220 +_.bmpChar = null;
 1.21221 +_.candidate = 0;
 1.21222 +_.confident = false;
 1.21223 +_.contentModelElement = null;
 1.21224 +_.contentModelElementNameAsArray = null;
 1.21225 +_.cstart = 0;
 1.21226 +_.doctypeName = null;
 1.21227 +_.endTag = false;
 1.21228 +_.entCol = 0;
 1.21229 +_.forceQuirks = false;
 1.21230 +_.hi = 0;
 1.21231 +_.html4 = false;
 1.21232 +_.html4ModeCompatibleWithXhtml1Schemata = false;
 1.21233 +_.index = 0;
 1.21234 +_.lastCR = false;
 1.21235 +_.lo = 0;
 1.21236 +_.longStrBuf = null;
 1.21237 +_.longStrBufLen = 0;
 1.21238 +_.mappingLangToXmlLang = 0;
 1.21239 +_.metaBoundaryPassed = false;
 1.21240 +_.newAttributesEachTime = false;
 1.21241 +_.prevValue = 0;
 1.21242 +_.publicIdentifier = null;
 1.21243 +_.returnStateSave = 0;
 1.21244 +_.seenDigits = false;
 1.21245 +_.shouldSuspend = false;
 1.21246 +_.stateSave = 0;
 1.21247 +_.strBuf = null;
 1.21248 +_.strBufLen = 0;
 1.21249 +_.strBufMark = 0;
 1.21250 +_.systemIdentifier = null;
 1.21251 +_.tagName = null;
 1.21252 +_.tokenHandler = null;
 1.21253 +_.value = 0;
 1.21254 +_.wantsComments = false;
 1.21255 +var CDATA_LSQB, IFRAME_ARR, LF, LT_GT, LT_SOLIDUS, NOEMBED_ARR, NOFRAMES_ARR, NOSCRIPT_ARR, OCTYPE, PLAINTEXT_ARR, REPLACEMENT_CHARACTER, RSQB_RSQB, SCRIPT_ARR, SPACE, STYLE_ARR, TEXTAREA_ARR, TITLE_ARR, UBLIC, XMP_ARR, YSTEM;
 1.21256 +function $clinit_90(){
 1.21257 +  $clinit_90 = nullMethod;
 1.21258 +  $clinit_97();
 1.21259 +}
 1.21260 +
 1.21261 +function $ErrorReportingTokenizer(this$static, tokenHandler){
 1.21262 +  $clinit_90();
 1.21263 +  this$static.contentSpacePolicy = ($clinit_80() , ALTER_INFOSET);
 1.21264 +  this$static.commentPolicy = ALTER_INFOSET;
 1.21265 +  this$static.xmlnsPolicy = ALTER_INFOSET;
 1.21266 +  this$static.namePolicy = ALTER_INFOSET;
 1.21267 +  this$static.tokenHandler = tokenHandler;
 1.21268 +  this$static.newAttributesEachTime = false;
 1.21269 +  this$static.bmpChar = initDim(_3C_classLit, 42, -1, 1, 1);
 1.21270 +  this$static.astralChar = initDim(_3C_classLit, 42, -1, 2, 1);
 1.21271 +  this$static.contentNonXmlCharPolicy = ALTER_INFOSET;
 1.21272 +  return this$static;
 1.21273 +}
 1.21274 +
 1.21275 +function $checkChar(this$static, buf, pos){
 1.21276 +  var c, intVal;
 1.21277 +  this$static.linePrev = this$static.line;
 1.21278 +  this$static.colPrev = this$static.col;
 1.21279 +  if (this$static.nextCharOnNewLine) {
 1.21280 +    ++this$static.line;
 1.21281 +    this$static.col = 1;
 1.21282 +    this$static.nextCharOnNewLine = false;
 1.21283 +  }
 1.21284 +   else {
 1.21285 +    ++this$static.col;
 1.21286 +  }
 1.21287 +  c = buf[pos];
 1.21288 +  if (!this$static.confident && !this$static.alreadyComplainedAboutNonAscii && c > 127) {
 1.21289 +    this$static.alreadyComplainedAboutNonAscii = true;
 1.21290 +  }
 1.21291 +  switch (c) {
 1.21292 +    case 0:
 1.21293 +    case 9:
 1.21294 +    case 13:
 1.21295 +    case 10:
 1.21296 +      break;
 1.21297 +    case 12:
 1.21298 +      if (this$static.contentNonXmlCharPolicy == ($clinit_80() , FATAL)) {
 1.21299 +        $fatal(this$static, 'This document is not mappable to XML 1.0 without data loss due to ' + $toUPlusString(c) + ' which is not a legal XML 1.0 character.');
 1.21300 +      }
 1.21301 +       else {
 1.21302 +        if (this$static.contentNonXmlCharPolicy == ALTER_INFOSET) {
 1.21303 +          c = buf[pos] = 32;
 1.21304 +        }
 1.21305 +        'This document is not mappable to XML 1.0 without data loss due to ' + $toUPlusString(c) + ' which is not a legal XML 1.0 character.';
 1.21306 +      }
 1.21307 +
 1.21308 +      break;
 1.21309 +    default:if ((c & 64512) == 56320) {
 1.21310 +        if ((this$static.prev & 64512) == 55296) {
 1.21311 +          intVal = (this$static.prev << 10) + c + -56613888;
 1.21312 +          if (intVal >= 983040 && intVal <= 1048573 || intVal >= 1048576 && intVal <= 1114109) {
 1.21313 +            $warnAboutPrivateUseChar(this$static);
 1.21314 +          }
 1.21315 +        }
 1.21316 +      }
 1.21317 +       else if (c < 32 || (c & 65534) == 65534) {
 1.21318 +        switch (this$static.contentNonXmlCharPolicy.ordinal) {
 1.21319 +          case 1:
 1.21320 +            $fatal(this$static, 'Forbidden code point ' + $toUPlusString(c) + '.');
 1.21321 +            break;
 1.21322 +          case 2:
 1.21323 +            c = buf[pos] = 65533;
 1.21324 +          case 0:
 1.21325 +            'Forbidden code point ' + $toUPlusString(c) + '.';
 1.21326 +        }
 1.21327 +      }
 1.21328 +       else if (c >= 127 && c <= 159 || c >= 64976 && c <= 64991) {
 1.21329 +        'Forbidden code point ' + $toUPlusString(c) + '.';
 1.21330 +      }
 1.21331 +       else if (c >= 57344 && c <= 63743) {
 1.21332 +        $warnAboutPrivateUseChar(this$static);
 1.21333 +      }
 1.21334 +
 1.21335 +  }
 1.21336 +  this$static.prev = c;
 1.21337 +  return c;
 1.21338 +}
 1.21339 +
 1.21340 +function $errLtOrEqualsInUnquotedAttributeOrNull(c){
 1.21341 +  switch (c) {
 1.21342 +    case 61:
 1.21343 +      return;
 1.21344 +    case 60:
 1.21345 +      return;
 1.21346 +  }
 1.21347 +}
 1.21348 +
 1.21349 +function $flushChars(this$static, buf, pos){
 1.21350 +  var currCol, currLine;
 1.21351 +  if (pos > this$static.cstart) {
 1.21352 +    currLine = this$static.line;
 1.21353 +    currCol = this$static.col;
 1.21354 +    this$static.line = this$static.linePrev;
 1.21355 +    this$static.col = this$static.colPrev;
 1.21356 +    $characters(this$static.tokenHandler, buf, this$static.cstart, pos - this$static.cstart);
 1.21357 +    this$static.line = currLine;
 1.21358 +    this$static.col = currCol;
 1.21359 +  }
 1.21360 +  this$static.cstart = 2147483647;
 1.21361 +}
 1.21362 +
 1.21363 +function $getColumnNumber(this$static){
 1.21364 +  if (this$static.col > 0) {
 1.21365 +    return this$static.col;
 1.21366 +  }
 1.21367 +   else {
 1.21368 +    return -1;
 1.21369 +  }
 1.21370 +}
 1.21371 +
 1.21372 +function $getLineNumber(this$static){
 1.21373 +  if (this$static.line > 0) {
 1.21374 +    return this$static.line;
 1.21375 +  }
 1.21376 +   else {
 1.21377 +    return -1;
 1.21378 +  }
 1.21379 +}
 1.21380 +
 1.21381 +function $toUPlusString(c){
 1.21382 +  var hexString;
 1.21383 +  hexString = toPowerOfTwoString(c, 4);
 1.21384 +  switch (hexString.length) {
 1.21385 +    case 1:
 1.21386 +      return 'U+000' + hexString;
 1.21387 +    case 2:
 1.21388 +      return 'U+00' + hexString;
 1.21389 +    case 3:
 1.21390 +      return 'U+0' + hexString;
 1.21391 +    case 4:
 1.21392 +      return 'U+' + hexString;
 1.21393 +    default:throw $RuntimeException(new RuntimeException(), 'Unreachable.');
 1.21394 +  }
 1.21395 +}
 1.21396 +
 1.21397 +function $warnAboutPrivateUseChar(this$static){
 1.21398 +  if (!this$static.alreadyWarnedAboutPrivateUseCharacters) {
 1.21399 +    this$static.alreadyWarnedAboutPrivateUseCharacters = true;
 1.21400 +  }
 1.21401 +}
 1.21402 +
 1.21403 +function getClass_52(){
 1.21404 +  return Lnu_validator_htmlparser_impl_ErrorReportingTokenizer_2_classLit;
 1.21405 +}
 1.21406 +
 1.21407 +function ErrorReportingTokenizer(){
 1.21408 +}
 1.21409 +
 1.21410 +_ = ErrorReportingTokenizer.prototype = new Tokenizer();
 1.21411 +_.getClass$ = getClass_52;
 1.21412 +_.typeId$ = 0;
 1.21413 +_.alreadyComplainedAboutNonAscii = false;
 1.21414 +_.alreadyWarnedAboutPrivateUseCharacters = false;
 1.21415 +_.col = 0;
 1.21416 +_.colPrev = 0;
 1.21417 +_.line = 0;
 1.21418 +_.linePrev = 0;
 1.21419 +_.nextCharOnNewLine = false;
 1.21420 +_.prev = 0;
 1.21421 +function $clinit_91(){
 1.21422 +  $clinit_91 = nullMethod;
 1.21423 +  EMPTY_ATTRIBUTENAMES = initDim(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, 0, 0);
 1.21424 +  EMPTY_STRINGS = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 0, 0);
 1.21425 +  EMPTY_ATTRIBUTES = $HtmlAttributes(new HtmlAttributes(), 0);
 1.21426 +}
 1.21427 +
 1.21428 +function $HtmlAttributes(this$static, mode){
 1.21429 +  $clinit_91();
 1.21430 +  this$static.mode = mode;
 1.21431 +  this$static.length_0 = 0;
 1.21432 +  this$static.names = initDim(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, 5, 0);
 1.21433 +  this$static.values = initDim(_3Ljava_lang_String_2_classLit, 48, 1, 5, 0);
 1.21434 +  this$static.xmlnsLength = 0;
 1.21435 +  this$static.xmlnsNames = EMPTY_ATTRIBUTENAMES;
 1.21436 +  this$static.xmlnsValues = EMPTY_STRINGS;
 1.21437 +  return this$static;
 1.21438 +}
 1.21439 +
 1.21440 +function $addAttribute(this$static, name, value, xmlnsPolicy){
 1.21441 +  var newLen, newNames, newValues;
 1.21442 +  name == ($clinit_87() , ID);
 1.21443 +  if (name.xmlns) {
 1.21444 +    if (this$static.xmlnsNames.length == this$static.xmlnsLength) {
 1.21445 +      newLen = this$static.xmlnsLength == 0?2:this$static.xmlnsLength << 1;
 1.21446 +      newNames = initDim(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, newLen, 0);
 1.21447 +      arraycopy(this$static.xmlnsNames, 0, newNames, 0, this$static.xmlnsNames.length);
 1.21448 +      this$static.xmlnsNames = newNames;
 1.21449 +      newValues = initDim(_3Ljava_lang_String_2_classLit, 48, 1, newLen, 0);
 1.21450 +      arraycopy(this$static.xmlnsValues, 0, newValues, 0, this$static.xmlnsValues.length);
 1.21451 +      this$static.xmlnsValues = newValues;
 1.21452 +    }
 1.21453 +    this$static.xmlnsNames[this$static.xmlnsLength] = name;
 1.21454 +    this$static.xmlnsValues[this$static.xmlnsLength] = value;
 1.21455 +    ++this$static.xmlnsLength;
 1.21456 +    switch (xmlnsPolicy.ordinal) {
 1.21457 +      case 1:
 1.21458 +        throw $SAXException(new SAXException(), 'Saw an xmlns attribute.');
 1.21459 +      case 2:
 1.21460 +        return;
 1.21461 +    }
 1.21462 +  }
 1.21463 +  if (this$static.names.length == this$static.length_0) {
 1.21464 +    newLen = this$static.length_0 << 1;
 1.21465 +    newNames = initDim(_3Lnu_validator_htmlparser_impl_AttributeName_2_classLit, 49, 9, newLen, 0);
 1.21466 +    arraycopy(this$static.names, 0, newNames, 0, this$static.names.length);
 1.21467 +    this$static.names = newNames;
 1.21468 +    newValues = initDim(_3Ljava_lang_String_2_classLit, 48, 1, newLen, 0);
 1.21469 +    arraycopy(this$static.values, 0, newValues, 0, this$static.values.length);
 1.21470 +    this$static.values = newValues;
 1.21471 +  }
 1.21472 +  this$static.names[this$static.length_0] = name;
 1.21473 +  this$static.values[this$static.length_0] = value;
 1.21474 +  ++this$static.length_0;
 1.21475 +}
 1.21476 +
 1.21477 +function $clear_0(this$static, m){
 1.21478 +  var i;
 1.21479 +  for (i = 0; i < this$static.length_0; ++i) {
 1.21480 +    setCheck(this$static.names, i, null);
 1.21481 +    setCheck(this$static.values, i, null);
 1.21482 +  }
 1.21483 +  this$static.length_0 = 0;
 1.21484 +  this$static.mode = m;
 1.21485 +  for (i = 0; i < this$static.xmlnsLength; ++i) {
 1.21486 +    setCheck(this$static.xmlnsNames, i, null);
 1.21487 +    setCheck(this$static.xmlnsValues, i, null);
 1.21488 +  }
 1.21489 +  this$static.xmlnsLength = 0;
 1.21490 +}
 1.21491 +
 1.21492 +function $clearWithoutReleasingContents(this$static){
 1.21493 +  var i;
 1.21494 +  for (i = 0; i < this$static.length_0; ++i) {
 1.21495 +    setCheck(this$static.names, i, null);
 1.21496 +    setCheck(this$static.values, i, null);
 1.21497 +  }
 1.21498 +  this$static.length_0 = 0;
 1.21499 +}
 1.21500 +
 1.21501 +function $cloneAttributes(this$static){
 1.21502 +  var clone, i;
 1.21503 +  clone = $HtmlAttributes(new HtmlAttributes(), 0);
 1.21504 +  for (i = 0; i < this$static.length_0; ++i) {
 1.21505 +    $addAttribute(clone, this$static.names[i], this$static.values[i], ($clinit_80() , ALLOW));
 1.21506 +  }
 1.21507 +  for (i = 0; i < this$static.xmlnsLength; ++i) {
 1.21508 +    $addAttribute(clone, this$static.xmlnsNames[i], this$static.xmlnsValues[i], ($clinit_80() , ALLOW));
 1.21509 +  }
 1.21510 +  return clone;
 1.21511 +}
 1.21512 +
 1.21513 +function $contains(this$static, name){
 1.21514 +  var i;
 1.21515 +  for (i = 0; i < this$static.length_0; ++i) {
 1.21516 +    if (name.local[0] == this$static.names[i].local[0]) {
 1.21517 +      return true;
 1.21518 +    }
 1.21519 +  }
 1.21520 +  for (i = 0; i < this$static.xmlnsLength; ++i) {
 1.21521 +    if (name.local[0] == this$static.xmlnsNames[i].local[0]) {
 1.21522 +      return true;
 1.21523 +    }
 1.21524 +  }
 1.21525 +  return false;
 1.21526 +}
 1.21527 +
 1.21528 +function $getAttributeName(this$static, index){
 1.21529 +  if (index < this$static.length_0 && index >= 0) {
 1.21530 +    return this$static.names[index];
 1.21531 +  }
 1.21532 +   else {
 1.21533 +    return null;
 1.21534 +  }
 1.21535 +}
 1.21536 +
 1.21537 +function $getIndex(this$static, name){
 1.21538 +  var i;
 1.21539 +  for (i = 0; i < this$static.length_0; ++i) {
 1.21540 +    if (this$static.names[i] == name) {
 1.21541 +      return i;
 1.21542 +    }
 1.21543 +  }
 1.21544 +  return -1;
 1.21545 +}
 1.21546 +
 1.21547 +function $getLocalName(this$static, index){
 1.21548 +  if (index < this$static.length_0 && index >= 0) {
 1.21549 +    return this$static.names[index].local[this$static.mode];
 1.21550 +  }
 1.21551 +   else {
 1.21552 +    return null;
 1.21553 +  }
 1.21554 +}
 1.21555 +
 1.21556 +function $getURI(this$static, index){
 1.21557 +  if (index < this$static.length_0 && index >= 0) {
 1.21558 +    return this$static.names[index].uri[this$static.mode];
 1.21559 +  }
 1.21560 +   else {
 1.21561 +    return null;
 1.21562 +  }
 1.21563 +}
 1.21564 +
 1.21565 +function $getValue(this$static, index){
 1.21566 +  if (index < this$static.length_0 && index >= 0) {
 1.21567 +    return this$static.values[index];
 1.21568 +  }
 1.21569 +   else {
 1.21570 +    return null;
 1.21571 +  }
 1.21572 +}
 1.21573 +
 1.21574 +function $getValue_0(this$static, name){
 1.21575 +  var index;
 1.21576 +  index = $getIndex(this$static, name);
 1.21577 +  if (index == -1) {
 1.21578 +    return null;
 1.21579 +  }
 1.21580 +   else {
 1.21581 +    return $getValue(this$static, index);
 1.21582 +  }
 1.21583 +}
 1.21584 +
 1.21585 +function $processNonNcNames(this$static, treeBuilder, namePolicy){
 1.21586 +  var attName, i, name;
 1.21587 +  for (i = 0; i < this$static.length_0; ++i) {
 1.21588 +    attName = this$static.names[i];
 1.21589 +    if (!attName.ncname[this$static.mode]) {
 1.21590 +      name = attName.local[this$static.mode];
 1.21591 +      switch (namePolicy.ordinal) {
 1.21592 +        case 2:
 1.21593 +          this$static.names[i] = ($clinit_87() , $AttributeName(new AttributeName(), ALL_NO_NS, SAME_LOCAL(escapeName(name)), ALL_NO_PREFIX, ALL_NCNAME, false));
 1.21594 +        case 0:
 1.21595 +          attName != ($clinit_87() , XML_LANG);
 1.21596 +          break;
 1.21597 +        case 1:
 1.21598 +          $fatal_1(treeBuilder, 'Attribute \u201C' + name + '\u201D is not serializable as XML 1.0.');
 1.21599 +      }
 1.21600 +    }
 1.21601 +  }
 1.21602 +}
 1.21603 +
 1.21604 +function getClass_53(){
 1.21605 +  return Lnu_validator_htmlparser_impl_HtmlAttributes_2_classLit;
 1.21606 +}
 1.21607 +
 1.21608 +function HtmlAttributes(){
 1.21609 +}
 1.21610 +
 1.21611 +_ = HtmlAttributes.prototype = new Object_0();
 1.21612 +_.getClass$ = getClass_53;
 1.21613 +_.typeId$ = 0;
 1.21614 +_.length_0 = 0;
 1.21615 +_.mode = 0;
 1.21616 +_.names = null;
 1.21617 +_.values = null;
 1.21618 +_.xmlnsLength = 0;
 1.21619 +_.xmlnsNames = null;
 1.21620 +_.xmlnsValues = null;
 1.21621 +var EMPTY_ATTRIBUTENAMES, EMPTY_ATTRIBUTES, EMPTY_STRINGS;
 1.21622 +function $LocatorImpl(this$static, locator){
 1.21623 +  $getColumnNumber(locator);
 1.21624 +  $getLineNumber(locator);
 1.21625 +  return this$static;
 1.21626 +}
 1.21627 +
 1.21628 +function getClass_54(){
 1.21629 +  return Lnu_validator_htmlparser_impl_LocatorImpl_2_classLit;
 1.21630 +}
 1.21631 +
 1.21632 +function LocatorImpl(){
 1.21633 +}
 1.21634 +
 1.21635 +_ = LocatorImpl.prototype = new Object_0();
 1.21636 +_.getClass$ = getClass_54;
 1.21637 +_.typeId$ = 0;
 1.21638 +function $clinit_93(){
 1.21639 +  $clinit_93 = nullMethod;
 1.21640 +  HEX_TABLE = $toCharArray('0123456789ABCDEF');
 1.21641 +}
 1.21642 +
 1.21643 +function appendUHexTo(sb, c){
 1.21644 +  var i;
 1.21645 +  $append_0(sb, 'U');
 1.21646 +  for (i = 0; i < 6; ++i) {
 1.21647 +    $append_0(sb, String.fromCharCode(HEX_TABLE[(c & 15728640) >> 20]));
 1.21648 +    c <<= 4;
 1.21649 +  }
 1.21650 +}
 1.21651 +
 1.21652 +function escapeName(str){
 1.21653 +  $clinit_93();
 1.21654 +  var c, i, next, sb;
 1.21655 +  sb = $StringBuilder(new StringBuilder());
 1.21656 +  for (i = 0; i < str.length; ++i) {
 1.21657 +    c = str.charCodeAt(i);
 1.21658 +    if ((c & 64512) == 55296) {
 1.21659 +      next = str.charCodeAt(++i);
 1.21660 +      appendUHexTo(sb, (c << 10) + next + -56613888);
 1.21661 +    }
 1.21662 +     else if (i == 0 && !(c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 255 || c >= 256 && c <= 305 || c >= 308 && c <= 318 || c >= 321 && c <= 328 || c >= 330 && c <= 382 || c >= 384 && c <= 451 || c >= 461 && c <= 496 || c >= 500 && c <= 501 || c >= 506 && c <= 535 || c >= 592 && c <= 680 || c >= 699 && c <= 705 || c == 902 || c >= 904 && c <= 906 || c == 908 || c >= 910 && c <= 929 || c >= 931 && c <= 974 || c >= 976 && c <= 982 || c == 986 || c == 988 || c == 990 || c == 992 || c >= 994 && c <= 1011 || c >= 1025 && c <= 1036 || c >= 1038 && c <= 1103 || c >= 1105 && c <= 1116 || c >= 1118 && c <= 1153 || c >= 1168 && c <= 1220 || c >= 1223 && c <= 1224 || c >= 1227 && c <= 1228 || c >= 1232 && c <= 1259 || c >= 1262 && c <= 1269 || c >= 1272 && c <= 1273 || c >= 1329 && c <= 1366 || c == 1369 || c >= 1377 && c <= 1414 || c >= 1488 && c <= 1514 || c >= 1520 && c <= 1522 || c >= 1569 && c <= 1594 || c >= 1601 && c <= 1610 || c >= 1649 && c <= 1719 || c >= 1722 && c <= 1726 || c >= 1728 && c <= 1742 || c >= 1744 && c <= 1747 || c == 1749 || c >= 1765 && c <= 1766 || c >= 2309 && c <= 2361 || c == 2365 || c >= 2392 && c <= 2401 || c >= 2437 && c <= 2444 || c >= 2447 && c <= 2448 || c >= 2451 && c <= 2472 || c >= 2474 && c <= 2480 || c == 2482 || c >= 2486 && c <= 2489 || c >= 2524 && c <= 2525 || c >= 2527 && c <= 2529 || c >= 2544 && c <= 2545 || c >= 2565 && c <= 2570 || c >= 2575 && c <= 2576 || c >= 2579 && c <= 2600 || c >= 2602 && c <= 2608 || c >= 2610 && c <= 2611 || c >= 2613 && c <= 2614 || c >= 2616 && c <= 2617 || c >= 2649 && c <= 2652 || c == 2654 || c >= 2674 && c <= 2676 || c >= 2693 && c <= 2699 || c == 2701 || c >= 2703 && c <= 2705 || c >= 2707 && c <= 2728 || c >= 2730 && c <= 2736 || c >= 2738 && c <= 2739 || c >= 2741 && c <= 2745 || c == 2749 || c == 2784 || c >= 2821 && c <= 2828 || c >= 2831 && c <= 2832 || c >= 2835 && c <= 2856 || c >= 2858 && c <= 2864 || c >= 2866 && c <= 2867 || c >= 2870 && c <= 2873 || c == 2877 || c >= 2908 && c <= 2909 || c >= 2911 && c <= 2913 || c >= 2949 && c <= 2954 || c >= 2958 && c <= 2960 || c >= 2962 && c <= 2965 || c >= 2969 && c <= 2970 || c == 2972 || c >= 2974 && c <= 2975 || c >= 2979 && c <= 2980 || c >= 2984 && c <= 2986 || c >= 2990 && c <= 2997 || c >= 2999 && c <= 3001 || c >= 3077 && c <= 3084 || c >= 3086 && c <= 3088 || c >= 3090 && c <= 3112 || c >= 3114 && c <= 3123 || c >= 3125 && c <= 3129 || c >= 3168 && c <= 3169 || c >= 3205 && c <= 3212 || c >= 3214 && c <= 3216 || c >= 3218 && c <= 3240 || c >= 3242 && c <= 3251 || c >= 3253 && c <= 3257 || c == 3294 || c >= 3296 && c <= 3297 || c >= 3333 && c <= 3340 || c >= 3342 && c <= 3344 || c >= 3346 && c <= 3368 || c >= 3370 && c <= 3385 || c >= 3424 && c <= 3425 || c >= 3585 && c <= 3630 || c == 3632 || c >= 3634 && c <= 3635 || c >= 3648 && c <= 3653 || c >= 3713 && c <= 3714 || c == 3716 || c >= 3719 && c <= 3720 || c == 3722 || c == 3725 || c >= 3732 && c <= 3735 || c >= 3737 && c <= 3743 || c >= 3745 && c <= 3747 || c == 3749 || c == 3751 || c >= 3754 && c <= 3755 || c >= 3757 && c <= 3758 || c == 3760 || c >= 3762 && c <= 3763 || c == 3773 || c >= 3776 && c <= 3780 || c >= 3904 && c <= 3911 || c >= 3913 && c <= 3945 || c >= 4256 && c <= 4293 || c >= 4304 && c <= 4342 || c == 4352 || c >= 4354 && c <= 4355 || c >= 4357 && c <= 4359 || c == 4361 || c >= 4363 && c <= 4364 || c >= 4366 && c <= 4370 || c == 4412 || c == 4414 || c == 4416 || c == 4428 || c == 4430 || c == 4432 || c >= 4436 && c <= 4437 || c == 4441 || c >= 4447 && c <= 4449 || c == 4451 || c == 4453 || c == 4455 || c == 4457 || c >= 4461 && c <= 4462 || c >= 4466 && c <= 4467 || c == 4469 || c == 4510 || c == 4520 || c == 4523 || c >= 4526 && c <= 4527 || c >= 4535 && c <= 4536 || c == 4538 || c >= 4540 && c <= 4546 || c == 4587 || c == 4592 || c == 4601 || c >= 7680 && c <= 7835 || c >= 7840 && c <= 7929 || c >= 7936 && c <= 7957 || c >= 7960 && c <= 7965 || c >= 7968 && c <= 8005 || c >= 8008 && c <= 8013 || c >= 8016 && c <= 8023 || c == 8025 || c == 8027 || c == 8029 || c >= 8031 && c <= 8061 || c >= 8064 && c <= 8116 || c >= 8118 && c <= 8124 || c == 8126 || c >= 8130 && c <= 8132 || c >= 8134 && c <= 8140 || c >= 8144 && c <= 8147 || c >= 8150 && c <= 8155 || c >= 8160 && c <= 8172 || c >= 8178 && c <= 8180 || c >= 8182 && c <= 8188 || c == 8486 || c >= 8490 && c <= 8491 || c == 8494 || c >= 8576 && c <= 8578 || c >= 12353 && c <= 12436 || c >= 12449 && c <= 12538 || c >= 12549 && c <= 12588 || c >= 44032 && c <= 55203 || c >= 19968 && c <= 40869 || c == 12295 || c >= 12321 && c <= 12329 || c == 95)) {
 1.21663 +      appendUHexTo(sb, c);
 1.21664 +    }
 1.21665 +     else if (i != 0 && !(c >= 48 && c <= 57 || c >= 1632 && c <= 1641 || c >= 1776 && c <= 1785 || c >= 2406 && c <= 2415 || c >= 2534 && c <= 2543 || c >= 2662 && c <= 2671 || c >= 2790 && c <= 2799 || c >= 2918 && c <= 2927 || c >= 3047 && c <= 3055 || c >= 3174 && c <= 3183 || c >= 3302 && c <= 3311 || c >= 3430 && c <= 3439 || c >= 3664 && c <= 3673 || c >= 3792 && c <= 3801 || c >= 3872 && c <= 3881 || c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 255 || c >= 256 && c <= 305 || c >= 308 && c <= 318 || c >= 321 && c <= 328 || c >= 330 && c <= 382 || c >= 384 && c <= 451 || c >= 461 && c <= 496 || c >= 500 && c <= 501 || c >= 506 && c <= 535 || c >= 592 && c <= 680 || c >= 699 && c <= 705 || c == 902 || c >= 904 && c <= 906 || c == 908 || c >= 910 && c <= 929 || c >= 931 && c <= 974 || c >= 976 && c <= 982 || c == 986 || c == 988 || c == 990 || c == 992 || c >= 994 && c <= 1011 || c >= 1025 && c <= 1036 || c >= 1038 && c <= 1103 || c >= 1105 && c <= 1116 || c >= 1118 && c <= 1153 || c >= 1168 && c <= 1220 || c >= 1223 && c <= 1224 || c >= 1227 && c <= 1228 || c >= 1232 && c <= 1259 || c >= 1262 && c <= 1269 || c >= 1272 && c <= 1273 || c >= 1329 && c <= 1366 || c == 1369 || c >= 1377 && c <= 1414 || c >= 1488 && c <= 1514 || c >= 1520 && c <= 1522 || c >= 1569 && c <= 1594 || c >= 1601 && c <= 1610 || c >= 1649 && c <= 1719 || c >= 1722 && c <= 1726 || c >= 1728 && c <= 1742 || c >= 1744 && c <= 1747 || c == 1749 || c >= 1765 && c <= 1766 || c >= 2309 && c <= 2361 || c == 2365 || c >= 2392 && c <= 2401 || c >= 2437 && c <= 2444 || c >= 2447 && c <= 2448 || c >= 2451 && c <= 2472 || c >= 2474 && c <= 2480 || c == 2482 || c >= 2486 && c <= 2489 || c >= 2524 && c <= 2525 || c >= 2527 && c <= 2529 || c >= 2544 && c <= 2545 || c >= 2565 && c <= 2570 || c >= 2575 && c <= 2576 || c >= 2579 && c <= 2600 || c >= 2602 && c <= 2608 || c >= 2610 && c <= 2611 || c >= 2613 && c <= 2614 || c >= 2616 && c <= 2617 || c >= 2649 && c <= 2652 || c == 2654 || c >= 2674 && c <= 2676 || c >= 2693 && c <= 2699 || c == 2701 || c >= 2703 && c <= 2705 || c >= 2707 && c <= 2728 || c >= 2730 && c <= 2736 || c >= 2738 && c <= 2739 || c >= 2741 && c <= 2745 || c == 2749 || c == 2784 || c >= 2821 && c <= 2828 || c >= 2831 && c <= 2832 || c >= 2835 && c <= 2856 || c >= 2858 && c <= 2864 || c >= 2866 && c <= 2867 || c >= 2870 && c <= 2873 || c == 2877 || c >= 2908 && c <= 2909 || c >= 2911 && c <= 2913 || c >= 2949 && c <= 2954 || c >= 2958 && c <= 2960 || c >= 2962 && c <= 2965 || c >= 2969 && c <= 2970 || c == 2972 || c >= 2974 && c <= 2975 || c >= 2979 && c <= 2980 || c >= 2984 && c <= 2986 || c >= 2990 && c <= 2997 || c >= 2999 && c <= 3001 || c >= 3077 && c <= 3084 || c >= 3086 && c <= 3088 || c >= 3090 && c <= 3112 || c >= 3114 && c <= 3123 || c >= 3125 && c <= 3129 || c >= 3168 && c <= 3169 || c >= 3205 && c <= 3212 || c >= 3214 && c <= 3216 || c >= 3218 && c <= 3240 || c >= 3242 && c <= 3251 || c >= 3253 && c <= 3257 || c == 3294 || c >= 3296 && c <= 3297 || c >= 3333 && c <= 3340 || c >= 3342 && c <= 3344 || c >= 3346 && c <= 3368 || c >= 3370 && c <= 3385 || c >= 3424 && c <= 3425 || c >= 3585 && c <= 3630 || c == 3632 || c >= 3634 && c <= 3635 || c >= 3648 && c <= 3653 || c >= 3713 && c <= 3714 || c == 3716 || c >= 3719 && c <= 3720 || c == 3722 || c == 3725 || c >= 3732 && c <= 3735 || c >= 3737 && c <= 3743 || c >= 3745 && c <= 3747 || c == 3749 || c == 3751 || c >= 3754 && c <= 3755 || c >= 3757 && c <= 3758 || c == 3760 || c >= 3762 && c <= 3763 || c == 3773 || c >= 3776 && c <= 3780 || c >= 3904 && c <= 3911 || c >= 3913 && c <= 3945 || c >= 4256 && c <= 4293 || c >= 4304 && c <= 4342 || c == 4352 || c >= 4354 && c <= 4355 || c >= 4357 && c <= 4359 || c == 4361 || c >= 4363 && c <= 4364 || c >= 4366 && c <= 4370 || c == 4412 || c == 4414 || c == 4416 || c == 4428 || c == 4430 || c == 4432 || c >= 4436 && c <= 4437 || c == 4441 || c >= 4447 && c <= 4449 || c == 4451 || c == 4453 || c == 4455 || c == 4457 || c >= 4461 && c <= 4462 || c >= 4466 && c <= 4467 || c == 4469 || c == 4510 || c == 4520 || c == 4523 || c >= 4526 && c <= 4527 || c >= 4535 && c <= 4536 || c == 4538 || c >= 4540 && c <= 4546 || c == 4587 || c == 4592 || c == 4601 || c >= 7680 && c <= 7835 || c >= 7840 && c <= 7929 || c >= 7936 && c <= 7957 || c >= 7960 && c <= 7965 || c >= 7968 && c <= 8005 || c >= 8008 && c <= 8013 || c >= 8016 && c <= 8023 || c == 8025 || c == 8027 || c == 8029 || c >= 8031 && c <= 8061 || c >= 8064 && c <= 8116 || c >= 8118 && c <= 8124 || c == 8126 || c >= 8130 && c <= 8132 || c >= 8134 && c <= 8140 || c >= 8144 && c <= 8147 || c >= 8150 && c <= 8155 || c >= 8160 && c <= 8172 || c >= 8178 && c <= 8180 || c >= 8182 && c <= 8188 || c == 8486 || c >= 8490 && c <= 8491 || c == 8494 || c >= 8576 && c <= 8578 || c >= 12353 && c <= 12436 || c >= 12449 && c <= 12538 || c >= 12549 && c <= 12588 || c >= 44032 && c <= 55203 || c >= 19968 && c <= 40869 || c == 12295 || c >= 12321 && c <= 12329 || c == 95 || c == 46 || c == 45 || c >= 768 && c <= 837 || c >= 864 && c <= 865 || c >= 1155 && c <= 1158 || c >= 1425 && c <= 1441 || c >= 1443 && c <= 1465 || c >= 1467 && c <= 1469 || c == 1471 || c >= 1473 && c <= 1474 || c == 1476 || c >= 1611 && c <= 1618 || c == 1648 || c >= 1750 && c <= 1756 || c >= 1757 && c <= 1759 || c >= 1760 && c <= 1764 || c >= 1767 && c <= 1768 || c >= 1770 && c <= 1773 || c >= 2305 && c <= 2307 || c == 2364 || c >= 2366 && c <= 2380 || c == 2381 || c >= 2385 && c <= 2388 || c >= 2402 && c <= 2403 || c >= 2433 && c <= 2435 || c == 2492 || c == 2494 || c == 2495 || c >= 2496 && c <= 2500 || c >= 2503 && c <= 2504 || c >= 2507 && c <= 2509 || c == 2519 || c >= 2530 && c <= 2531 || c == 2562 || c == 2620 || c == 2622 || c == 2623 || c >= 2624 && c <= 2626 || c >= 2631 && c <= 2632 || c >= 2635 && c <= 2637 || c >= 2672 && c <= 2673 || c >= 2689 && c <= 2691 || c == 2748 || c >= 2750 && c <= 2757 || c >= 2759 && c <= 2761 || c >= 2763 && c <= 2765 || c >= 2817 && c <= 2819 || c == 2876 || c >= 2878 && c <= 2883 || c >= 2887 && c <= 2888 || c >= 2891 && c <= 2893 || c >= 2902 && c <= 2903 || c >= 2946 && c <= 2947 || c >= 3006 && c <= 3010 || c >= 3014 && c <= 3016 || c >= 3018 && c <= 3021 || c == 3031 || c >= 3073 && c <= 3075 || c >= 3134 && c <= 3140 || c >= 3142 && c <= 3144 || c >= 3146 && c <= 3149 || c >= 3157 && c <= 3158 || c >= 3202 && c <= 3203 || c >= 3262 && c <= 3268 || c >= 3270 && c <= 3272 || c >= 3274 && c <= 3277 || c >= 3285 && c <= 3286 || c >= 3330 && c <= 3331 || c >= 3390 && c <= 3395 || c >= 3398 && c <= 3400 || c >= 3402 && c <= 3405 || c == 3415 || c == 3633 || c >= 3636 && c <= 3642 || c >= 3655 && c <= 3662 || c == 3761 || c >= 3764 && c <= 3769 || c >= 3771 && c <= 3772 || c >= 3784 && c <= 3789 || c >= 3864 && c <= 3865 || c == 3893 || c == 3895 || c == 3897 || c == 3902 || c == 3903 || c >= 3953 && c <= 3972 || c >= 3974 && c <= 3979 || c >= 3984 && c <= 3989 || c == 3991 || c >= 3993 && c <= 4013 || c >= 4017 && c <= 4023 || c == 4025 || c >= 8400 && c <= 8412 || c == 8417 || c >= 12330 && c <= 12335 || c == 12441 || c == 12442 || c == 183 || c == 720 || c == 721 || c == 903 || c == 1600 || c == 3654 || c == 3782 || c == 12293 || c >= 12337 && c <= 12341 || c >= 12445 && c <= 12446 || c >= 12540 && c <= 12542)) {
 1.21666 +      appendUHexTo(sb, c);
 1.21667 +    }
 1.21668 +     else {
 1.21669 +      $append_0(sb, String.fromCharCode(c));
 1.21670 +    }
 1.21671 +  }
 1.21672 +  return String($toString_0(sb));
 1.21673 +}
 1.21674 +
 1.21675 +function isNCName(str){
 1.21676 +  $clinit_93();
 1.21677 +  var i, len;
 1.21678 +  if (str == null) {
 1.21679 +    return false;
 1.21680 +  }
 1.21681 +   else {
 1.21682 +    len = str.length;
 1.21683 +    switch (len) {
 1.21684 +      case 0:
 1.21685 +        return false;
 1.21686 +      case 1:
 1.21687 +        return isNCNameStart(str.charCodeAt(0));
 1.21688 +      default:if (!isNCNameStart(str.charCodeAt(0))) {
 1.21689 +          return false;
 1.21690 +        }
 1.21691 +
 1.21692 +        for (i = 1; i < len; ++i) {
 1.21693 +          if (!isNCNameTrail(str.charCodeAt(i))) {
 1.21694 +            return false;
 1.21695 +          }
 1.21696 +        }
 1.21697 +
 1.21698 +    }
 1.21699 +    return true;
 1.21700 +  }
 1.21701 +}
 1.21702 +
 1.21703 +function isNCNameStart(c){
 1.21704 +  return c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 255 || c >= 256 && c <= 305 || c >= 308 && c <= 318 || c >= 321 && c <= 328 || c >= 330 && c <= 382 || c >= 384 && c <= 451 || c >= 461 && c <= 496 || c >= 500 && c <= 501 || c >= 506 && c <= 535 || c >= 592 && c <= 680 || c >= 699 && c <= 705 || c == 902 || c >= 904 && c <= 906 || c == 908 || c >= 910 && c <= 929 || c >= 931 && c <= 974 || c >= 976 && c <= 982 || c == 986 || c == 988 || c == 990 || c == 992 || c >= 994 && c <= 1011 || c >= 1025 && c <= 1036 || c >= 1038 && c <= 1103 || c >= 1105 && c <= 1116 || c >= 1118 && c <= 1153 || c >= 1168 && c <= 1220 || c >= 1223 && c <= 1224 || c >= 1227 && c <= 1228 || c >= 1232 && c <= 1259 || c >= 1262 && c <= 1269 || c >= 1272 && c <= 1273 || c >= 1329 && c <= 1366 || c == 1369 || c >= 1377 && c <= 1414 || c >= 1488 && c <= 1514 || c >= 1520 && c <= 1522 || c >= 1569 && c <= 1594 || c >= 1601 && c <= 1610 || c >= 1649 && c <= 1719 || c >= 1722 && c <= 1726 || c >= 1728 && c <= 1742 || c >= 1744 && c <= 1747 || c == 1749 || c >= 1765 && c <= 1766 || c >= 2309 && c <= 2361 || c == 2365 || c >= 2392 && c <= 2401 || c >= 2437 && c <= 2444 || c >= 2447 && c <= 2448 || c >= 2451 && c <= 2472 || c >= 2474 && c <= 2480 || c == 2482 || c >= 2486 && c <= 2489 || c >= 2524 && c <= 2525 || c >= 2527 && c <= 2529 || c >= 2544 && c <= 2545 || c >= 2565 && c <= 2570 || c >= 2575 && c <= 2576 || c >= 2579 && c <= 2600 || c >= 2602 && c <= 2608 || c >= 2610 && c <= 2611 || c >= 2613 && c <= 2614 || c >= 2616 && c <= 2617 || c >= 2649 && c <= 2652 || c == 2654 || c >= 2674 && c <= 2676 || c >= 2693 && c <= 2699 || c == 2701 || c >= 2703 && c <= 2705 || c >= 2707 && c <= 2728 || c >= 2730 && c <= 2736 || c >= 2738 && c <= 2739 || c >= 2741 && c <= 2745 || c == 2749 || c == 2784 || c >= 2821 && c <= 2828 || c >= 2831 && c <= 2832 || c >= 2835 && c <= 2856 || c >= 2858 && c <= 2864 || c >= 2866 && c <= 2867 || c >= 2870 && c <= 2873 || c == 2877 || c >= 2908 && c <= 2909 || c >= 2911 && c <= 2913 || c >= 2949 && c <= 2954 || c >= 2958 && c <= 2960 || c >= 2962 && c <= 2965 || c >= 2969 && c <= 2970 || c == 2972 || c >= 2974 && c <= 2975 || c >= 2979 && c <= 2980 || c >= 2984 && c <= 2986 || c >= 2990 && c <= 2997 || c >= 2999 && c <= 3001 || c >= 3077 && c <= 3084 || c >= 3086 && c <= 3088 || c >= 3090 && c <= 3112 || c >= 3114 && c <= 3123 || c >= 3125 && c <= 3129 || c >= 3168 && c <= 3169 || c >= 3205 && c <= 3212 || c >= 3214 && c <= 3216 || c >= 3218 && c <= 3240 || c >= 3242 && c <= 3251 || c >= 3253 && c <= 3257 || c == 3294 || c >= 3296 && c <= 3297 || c >= 3333 && c <= 3340 || c >= 3342 && c <= 3344 || c >= 3346 && c <= 3368 || c >= 3370 && c <= 3385 || c >= 3424 && c <= 3425 || c >= 3585 && c <= 3630 || c == 3632 || c >= 3634 && c <= 3635 || c >= 3648 && c <= 3653 || c >= 3713 && c <= 3714 || c == 3716 || c >= 3719 && c <= 3720 || c == 3722 || c == 3725 || c >= 3732 && c <= 3735 || c >= 3737 && c <= 3743 || c >= 3745 && c <= 3747 || c == 3749 || c == 3751 || c >= 3754 && c <= 3755 || c >= 3757 && c <= 3758 || c == 3760 || c >= 3762 && c <= 3763 || c == 3773 || c >= 3776 && c <= 3780 || c >= 3904 && c <= 3911 || c >= 3913 && c <= 3945 || c >= 4256 && c <= 4293 || c >= 4304 && c <= 4342 || c == 4352 || c >= 4354 && c <= 4355 || c >= 4357 && c <= 4359 || c == 4361 || c >= 4363 && c <= 4364 || c >= 4366 && c <= 4370 || c == 4412 || c == 4414 || c == 4416 || c == 4428 || c == 4430 || c == 4432 || c >= 4436 && c <= 4437 || c == 4441 || c >= 4447 && c <= 4449 || c == 4451 || c == 4453 || c == 4455 || c == 4457 || c >= 4461 && c <= 4462 || c >= 4466 && c <= 4467 || c == 4469 || c == 4510 || c == 4520 || c == 4523 || c >= 4526 && c <= 4527 || c >= 4535 && c <= 4536 || c == 4538 || c >= 4540 && c <= 4546 || c == 4587 || c == 4592 || c == 4601 || c >= 7680 && c <= 7835 || c >= 7840 && c <= 7929 || c >= 7936 && c <= 7957 || c >= 7960 && c <= 7965 || c >= 7968 && c <= 8005 || c >= 8008 && c <= 8013 || c >= 8016 && c <= 8023 || c == 8025 || c == 8027 || c == 8029 || c >= 8031 && c <= 8061 || c >= 8064 && c <= 8116 || c >= 8118 && c <= 8124 || c == 8126 || c >= 8130 && c <= 8132 || c >= 8134 && c <= 8140 || c >= 8144 && c <= 8147 || c >= 8150 && c <= 8155 || c >= 8160 && c <= 8172 || c >= 8178 && c <= 8180 || c >= 8182 && c <= 8188 || c == 8486 || c >= 8490 && c <= 8491 || c == 8494 || c >= 8576 && c <= 8578 || c >= 12353 && c <= 12436 || c >= 12449 && c <= 12538 || c >= 12549 && c <= 12588 || c >= 44032 && c <= 55203 || c >= 19968 && c <= 40869 || c == 12295 || c >= 12321 && c <= 12329 || c == 95;
 1.21705 +}
 1.21706 +
 1.21707 +function isNCNameTrail(c){
 1.21708 +  return c >= 48 && c <= 57 || c >= 1632 && c <= 1641 || c >= 1776 && c <= 1785 || c >= 2406 && c <= 2415 || c >= 2534 && c <= 2543 || c >= 2662 && c <= 2671 || c >= 2790 && c <= 2799 || c >= 2918 && c <= 2927 || c >= 3047 && c <= 3055 || c >= 3174 && c <= 3183 || c >= 3302 && c <= 3311 || c >= 3430 && c <= 3439 || c >= 3664 && c <= 3673 || c >= 3792 && c <= 3801 || c >= 3872 && c <= 3881 || c >= 65 && c <= 90 || c >= 97 && c <= 122 || c >= 192 && c <= 214 || c >= 216 && c <= 246 || c >= 248 && c <= 255 || c >= 256 && c <= 305 || c >= 308 && c <= 318 || c >= 321 && c <= 328 || c >= 330 && c <= 382 || c >= 384 && c <= 451 || c >= 461 && c <= 496 || c >= 500 && c <= 501 || c >= 506 && c <= 535 || c >= 592 && c <= 680 || c >= 699 && c <= 705 || c == 902 || c >= 904 && c <= 906 || c == 908 || c >= 910 && c <= 929 || c >= 931 && c <= 974 || c >= 976 && c <= 982 || c == 986 || c == 988 || c == 990 || c == 992 || c >= 994 && c <= 1011 || c >= 1025 && c <= 1036 || c >= 1038 && c <= 1103 || c >= 1105 && c <= 1116 || c >= 1118 && c <= 1153 || c >= 1168 && c <= 1220 || c >= 1223 && c <= 1224 || c >= 1227 && c <= 1228 || c >= 1232 && c <= 1259 || c >= 1262 && c <= 1269 || c >= 1272 && c <= 1273 || c >= 1329 && c <= 1366 || c == 1369 || c >= 1377 && c <= 1414 || c >= 1488 && c <= 1514 || c >= 1520 && c <= 1522 || c >= 1569 && c <= 1594 || c >= 1601 && c <= 1610 || c >= 1649 && c <= 1719 || c >= 1722 && c <= 1726 || c >= 1728 && c <= 1742 || c >= 1744 && c <= 1747 || c == 1749 || c >= 1765 && c <= 1766 || c >= 2309 && c <= 2361 || c == 2365 || c >= 2392 && c <= 2401 || c >= 2437 && c <= 2444 || c >= 2447 && c <= 2448 || c >= 2451 && c <= 2472 || c >= 2474 && c <= 2480 || c == 2482 || c >= 2486 && c <= 2489 || c >= 2524 && c <= 2525 || c >= 2527 && c <= 2529 || c >= 2544 && c <= 2545 || c >= 2565 && c <= 2570 || c >= 2575 && c <= 2576 || c >= 2579 && c <= 2600 || c >= 2602 && c <= 2608 || c >= 2610 && c <= 2611 || c >= 2613 && c <= 2614 || c >= 2616 && c <= 2617 || c >= 2649 && c <= 2652 || c == 2654 || c >= 2674 && c <= 2676 || c >= 2693 && c <= 2699 || c == 2701 || c >= 2703 && c <= 2705 || c >= 2707 && c <= 2728 || c >= 2730 && c <= 2736 || c >= 2738 && c <= 2739 || c >= 2741 && c <= 2745 || c == 2749 || c == 2784 || c >= 2821 && c <= 2828 || c >= 2831 && c <= 2832 || c >= 2835 && c <= 2856 || c >= 2858 && c <= 2864 || c >= 2866 && c <= 2867 || c >= 2870 && c <= 2873 || c == 2877 || c >= 2908 && c <= 2909 || c >= 2911 && c <= 2913 || c >= 2949 && c <= 2954 || c >= 2958 && c <= 2960 || c >= 2962 && c <= 2965 || c >= 2969 && c <= 2970 || c == 2972 || c >= 2974 && c <= 2975 || c >= 2979 && c <= 2980 || c >= 2984 && c <= 2986 || c >= 2990 && c <= 2997 || c >= 2999 && c <= 3001 || c >= 3077 && c <= 3084 || c >= 3086 && c <= 3088 || c >= 3090 && c <= 3112 || c >= 3114 && c <= 3123 || c >= 3125 && c <= 3129 || c >= 3168 && c <= 3169 || c >= 3205 && c <= 3212 || c >= 3214 && c <= 3216 || c >= 3218 && c <= 3240 || c >= 3242 && c <= 3251 || c >= 3253 && c <= 3257 || c == 3294 || c >= 3296 && c <= 3297 || c >= 3333 && c <= 3340 || c >= 3342 && c <= 3344 || c >= 3346 && c <= 3368 || c >= 3370 && c <= 3385 || c >= 3424 && c <= 3425 || c >= 3585 && c <= 3630 || c == 3632 || c >= 3634 && c <= 3635 || c >= 3648 && c <= 3653 || c >= 3713 && c <= 3714 || c == 3716 || c >= 3719 && c <= 3720 || c == 3722 || c == 3725 || c >= 3732 && c <= 3735 || c >= 3737 && c <= 3743 || c >= 3745 && c <= 3747 || c == 3749 || c == 3751 || c >= 3754 && c <= 3755 || c >= 3757 && c <= 3758 || c == 3760 || c >= 3762 && c <= 3763 || c == 3773 || c >= 3776 && c <= 3780 || c >= 3904 && c <= 3911 || c >= 3913 && c <= 3945 || c >= 4256 && c <= 4293 || c >= 4304 && c <= 4342 || c == 4352 || c >= 4354 && c <= 4355 || c >= 4357 && c <= 4359 || c == 4361 || c >= 4363 && c <= 4364 || c >= 4366 && c <= 4370 || c == 4412 || c == 4414 || c == 4416 || c == 4428 || c == 4430 || c == 4432 || c >= 4436 && c <= 4437 || c == 4441 || c >= 4447 && c <= 4449 || c == 4451 || c == 4453 || c == 4455 || c == 4457 || c >= 4461 && c <= 4462 || c >= 4466 && c <= 4467 || c == 4469 || c == 4510 || c == 4520 || c == 4523 || c >= 4526 && c <= 4527 || c >= 4535 && c <= 4536 || c == 4538 || c >= 4540 && c <= 4546 || c == 4587 || c == 4592 || c == 4601 || c >= 7680 && c <= 7835 || c >= 7840 && c <= 7929 || c >= 7936 && c <= 7957 || c >= 7960 && c <= 7965 || c >= 7968 && c <= 8005 || c >= 8008 && c <= 8013 || c >= 8016 && c <= 8023 || c == 8025 || c == 8027 || c == 8029 || c >= 8031 && c <= 8061 || c >= 8064 && c <= 8116 || c >= 8118 && c <= 8124 || c == 8126 || c >= 8130 && c <= 8132 || c >= 8134 && c <= 8140 || c >= 8144 && c <= 8147 || c >= 8150 && c <= 8155 || c >= 8160 && c <= 8172 || c >= 8178 && c <= 8180 || c >= 8182 && c <= 8188 || c == 8486 || c >= 8490 && c <= 8491 || c == 8494 || c >= 8576 && c <= 8578 || c >= 12353 && c <= 12436 || c >= 12449 && c <= 12538 || c >= 12549 && c <= 12588 || c >= 44032 && c <= 55203 || c >= 19968 && c <= 40869 || c == 12295 || c >= 12321 && c <= 12329 || c == 95 || c == 46 || c == 45 || c >= 768 && c <= 837 || c >= 864 && c <= 865 || c >= 1155 && c <= 1158 || c >= 1425 && c <= 1441 || c >= 1443 && c <= 1465 || c >= 1467 && c <= 1469 || c == 1471 || c >= 1473 && c <= 1474 || c == 1476 || c >= 1611 && c <= 1618 || c == 1648 || c >= 1750 && c <= 1756 || c >= 1757 && c <= 1759 || c >= 1760 && c <= 1764 || c >= 1767 && c <= 1768 || c >= 1770 && c <= 1773 || c >= 2305 && c <= 2307 || c == 2364 || c >= 2366 && c <= 2380 || c == 2381 || c >= 2385 && c <= 2388 || c >= 2402 && c <= 2403 || c >= 2433 && c <= 2435 || c == 2492 || c == 2494 || c == 2495 || c >= 2496 && c <= 2500 || c >= 2503 && c <= 2504 || c >= 2507 && c <= 2509 || c == 2519 || c >= 2530 && c <= 2531 || c == 2562 || c == 2620 || c == 2622 || c == 2623 || c >= 2624 && c <= 2626 || c >= 2631 && c <= 2632 || c >= 2635 && c <= 2637 || c >= 2672 && c <= 2673 || c >= 2689 && c <= 2691 || c == 2748 || c >= 2750 && c <= 2757 || c >= 2759 && c <= 2761 || c >= 2763 && c <= 2765 || c >= 2817 && c <= 2819 || c == 2876 || c >= 2878 && c <= 2883 || c >= 2887 && c <= 2888 || c >= 2891 && c <= 2893 || c >= 2902 && c <= 2903 || c >= 2946 && c <= 2947 || c >= 3006 && c <= 3010 || c >= 3014 && c <= 3016 || c >= 3018 && c <= 3021 || c == 3031 || c >= 3073 && c <= 3075 || c >= 3134 && c <= 3140 || c >= 3142 && c <= 3144 || c >= 3146 && c <= 3149 || c >= 3157 && c <= 3158 || c >= 3202 && c <= 3203 || c >= 3262 && c <= 3268 || c >= 3270 && c <= 3272 || c >= 3274 && c <= 3277 || c >= 3285 && c <= 3286 || c >= 3330 && c <= 3331 || c >= 3390 && c <= 3395 || c >= 3398 && c <= 3400 || c >= 3402 && c <= 3405 || c == 3415 || c == 3633 || c >= 3636 && c <= 3642 || c >= 3655 && c <= 3662 || c == 3761 || c >= 3764 && c <= 3769 || c >= 3771 && c <= 3772 || c >= 3784 && c <= 3789 || c >= 3864 && c <= 3865 || c == 3893 || c == 3895 || c == 3897 || c == 3902 || c == 3903 || c >= 3953 && c <= 3972 || c >= 3974 && c <= 3979 || c >= 3984 && c <= 3989 || c == 3991 || c >= 3993 && c <= 4013 || c >= 4017 && c <= 4023 || c == 4025 || c >= 8400 && c <= 8412 || c == 8417 || c >= 12330 && c <= 12335 || c == 12441 || c == 12442 || c == 183 || c == 720 || c == 721 || c == 903 || c == 1600 || c == 3654 || c == 3782 || c == 12293 || c >= 12337 && c <= 12341 || c >= 12445 && c <= 12446 || c >= 12540 && c <= 12542;
 1.21709 +}
 1.21710 +
 1.21711 +var HEX_TABLE;
 1.21712 +function $clinit_94(){
 1.21713 +  $clinit_94 = nullMethod;
 1.21714 +  NAMES = initValues(_3_3C_classLit, 52, 12, [$toCharArray('AElig'), $toCharArray('AElig;'), $toCharArray('AMP'), $toCharArray('AMP;'), $toCharArray('Aacute'), $toCharArray('Aacute;'), $toCharArray('Abreve;'), $toCharArray('Acirc'), $toCharArray('Acirc;'), $toCharArray('Acy;'), $toCharArray('Afr;'), $toCharArray('Agrave'), $toCharArray('Agrave;'), $toCharArray('Alpha;'), $toCharArray('Amacr;'), $toCharArray('And;'), $toCharArray('Aogon;'), $toCharArray('Aopf;'), $toCharArray('ApplyFunction;'), $toCharArray('Aring'), $toCharArray('Aring;'), $toCharArray('Ascr;'), $toCharArray('Assign;'), $toCharArray('Atilde'), $toCharArray('Atilde;'), $toCharArray('Auml'), $toCharArray('Auml;'), $toCharArray('Backslash;'), $toCharArray('Barv;'), $toCharArray('Barwed;'), $toCharArray('Bcy;'), $toCharArray('Because;'), $toCharArray('Bernoullis;'), $toCharArray('Beta;'), $toCharArray('Bfr;'), $toCharArray('Bopf;'), $toCharArray('Breve;'), $toCharArray('Bscr;'), $toCharArray('Bumpeq;'), $toCharArray('CHcy;'), $toCharArray('COPY'), $toCharArray('COPY;'), $toCharArray('Cacute;'), $toCharArray('Cap;'), $toCharArray('CapitalDifferentialD;'), $toCharArray('Cayleys;'), $toCharArray('Ccaron;'), $toCharArray('Ccedil'), $toCharArray('Ccedil;'), $toCharArray('Ccirc;'), $toCharArray('Cconint;'), $toCharArray('Cdot;'), $toCharArray('Cedilla;'), $toCharArray('CenterDot;'), $toCharArray('Cfr;'), $toCharArray('Chi;'), $toCharArray('CircleDot;'), $toCharArray('CircleMinus;'), $toCharArray('CirclePlus;'), $toCharArray('CircleTimes;'), $toCharArray('ClockwiseContourIntegral;'), $toCharArray('CloseCurlyDoubleQuote;'), $toCharArray('CloseCurlyQuote;'), $toCharArray('Colon;'), $toCharArray('Colone;'), $toCharArray('Congruent;'), $toCharArray('Conint;'), $toCharArray('ContourIntegral;'), $toCharArray('Copf;'), $toCharArray('Coproduct;'), $toCharArray('CounterClockwiseContourIntegral;'), $toCharArray('Cross;'), $toCharArray('Cscr;'), $toCharArray('Cup;'), $toCharArray('CupCap;'), $toCharArray('DD;'), $toCharArray('DDotrahd;'), $toCharArray('DJcy;'), $toCharArray('DScy;'), $toCharArray('DZcy;'), $toCharArray('Dagger;'), $toCharArray('Darr;'), $toCharArray('Dashv;'), $toCharArray('Dcaron;'), $toCharArray('Dcy;'), $toCharArray('Del;'), $toCharArray('Delta;'), $toCharArray('Dfr;'), $toCharArray('DiacriticalAcute;'), $toCharArray('DiacriticalDot;'), $toCharArray('DiacriticalDoubleAcute;'), $toCharArray('DiacriticalGrave;'), $toCharArray('DiacriticalTilde;'), $toCharArray('Diamond;'), $toCharArray('DifferentialD;'), $toCharArray('Dopf;'), $toCharArray('Dot;'), $toCharArray('DotDot;'), $toCharArray('DotEqual;'), $toCharArray('DoubleContourIntegral;'), $toCharArray('DoubleDot;'), $toCharArray('DoubleDownArrow;'), $toCharArray('DoubleLeftArrow;'), $toCharArray('DoubleLeftRightArrow;'), $toCharArray('DoubleLeftTee;'), $toCharArray('DoubleLongLeftArrow;'), $toCharArray('DoubleLongLeftRightArrow;'), $toCharArray('DoubleLongRightArrow;'), $toCharArray('DoubleRightArrow;'), $toCharArray('DoubleRightTee;'), $toCharArray('DoubleUpArrow;'), $toCharArray('DoubleUpDownArrow;'), $toCharArray('DoubleVerticalBar;'), $toCharArray('DownArrow;'), $toCharArray('DownArrowBar;'), $toCharArray('DownArrowUpArrow;'), $toCharArray('DownBreve;'), $toCharArray('DownLeftRightVector;'), $toCharArray('DownLeftTeeVector;'), $toCharArray('DownLeftVector;'), $toCharArray('DownLeftVectorBar;'), $toCharArray('DownRightTeeVector;'), $toCharArray('DownRightVector;'), $toCharArray('DownRightVectorBar;'), $toCharArray('DownTee;'), $toCharArray('DownTeeArrow;'), $toCharArray('Downarrow;'), $toCharArray('Dscr;'), $toCharArray('Dstrok;'), $toCharArray('ENG;'), $toCharArray('ETH'), $toCharArray('ETH;'), $toCharArray('Eacute'), $toCharArray('Eacute;'), $toCharArray('Ecaron;'), $toCharArray('Ecirc'), $toCharArray('Ecirc;'), $toCharArray('Ecy;'), $toCharArray('Edot;'), $toCharArray('Efr;'), $toCharArray('Egrave'), $toCharArray('Egrave;'), $toCharArray('Element;'), $toCharArray('Emacr;'), $toCharArray('EmptySmallSquare;'), $toCharArray('EmptyVerySmallSquare;'), $toCharArray('Eogon;'), $toCharArray('Eopf;'), $toCharArray('Epsilon;'), $toCharArray('Equal;'), $toCharArray('EqualTilde;'), $toCharArray('Equilibrium;'), $toCharArray('Escr;'), $toCharArray('Esim;'), $toCharArray('Eta;'), $toCharArray('Euml'), $toCharArray('Euml;'), $toCharArray('Exists;'), $toCharArray('ExponentialE;'), $toCharArray('Fcy;'), $toCharArray('Ffr;'), $toCharArray('FilledSmallSquare;'), $toCharArray('FilledVerySmallSquare;'), $toCharArray('Fopf;'), $toCharArray('ForAll;'), $toCharArray('Fouriertrf;'), $toCharArray('Fscr;'), $toCharArray('GJcy;'), $toCharArray('GT'), $toCharArray('GT;'), $toCharArray('Gamma;'), $toCharArray('Gammad;'), $toCharArray('Gbreve;'), $toCharArray('Gcedil;'), $toCharArray('Gcirc;'), $toCharArray('Gcy;'), $toCharArray('Gdot;'), $toCharArray('Gfr;'), $toCharArray('Gg;'), $toCharArray('Gopf;'), $toCharArray('GreaterEqual;'), $toCharArray('GreaterEqualLess;'), $toCharArray('GreaterFullEqual;'), $toCharArray('GreaterGreater;'), $toCharArray('GreaterLess;'), $toCharArray('GreaterSlantEqual;'), $toCharArray('GreaterTilde;'), $toCharArray('Gscr;'), $toCharArray('Gt;'), $toCharArray('HARDcy;'), $toCharArray('Hacek;'), $toCharArray('Hat;'), $toCharArray('Hcirc;'), $toCharArray('Hfr;'), $toCharArray('HilbertSpace;'), $toCharArray('Hopf;'), $toCharArray('HorizontalLine;'), $toCharArray('Hscr;'), $toCharArray('Hstrok;'), $toCharArray('HumpDownHump;'), $toCharArray('HumpEqual;'), $toCharArray('IEcy;'), $toCharArray('IJlig;'), $toCharArray('IOcy;'), $toCharArray('Iacute'), $toCharArray('Iacute;'), $toCharArray('Icirc'), $toCharArray('Icirc;'), $toCharArray('Icy;'), $toCharArray('Idot;'), $toCharArray('Ifr;'), $toCharArray('Igrave'), $toCharArray('Igrave;'), $toCharArray('Im;'), $toCharArray('Imacr;'), $toCharArray('ImaginaryI;'), $toCharArray('Implies;'), $toCharArray('Int;'), $toCharArray('Integral;'), $toCharArray('Intersection;'), $toCharArray('InvisibleComma;'), $toCharArray('InvisibleTimes;'), $toCharArray('Iogon;'), $toCharArray('Iopf;'), $toCharArray('Iota;'), $toCharArray('Iscr;'), $toCharArray('Itilde;'), $toCharArray('Iukcy;'), $toCharArray('Iuml'), $toCharArray('Iuml;'), $toCharArray('Jcirc;'), $toCharArray('Jcy;'), $toCharArray('Jfr;'), $toCharArray('Jopf;'), $toCharArray('Jscr;'), $toCharArray('Jsercy;'), $toCharArray('Jukcy;'), $toCharArray('KHcy;'), $toCharArray('KJcy;'), $toCharArray('Kappa;'), $toCharArray('Kcedil;'), $toCharArray('Kcy;'), $toCharArray('Kfr;'), $toCharArray('Kopf;'), $toCharArray('Kscr;'), $toCharArray('LJcy;'), $toCharArray('LT'), $toCharArray('LT;'), $toCharArray('Lacute;'), $toCharArray('Lambda;'), $toCharArray('Lang;'), $toCharArray('Laplacetrf;'), $toCharArray('Larr;'), $toCharArray('Lcaron;'), $toCharArray('Lcedil;'), $toCharArray('Lcy;'), $toCharArray('LeftAngleBracket;'), $toCharArray('LeftArrow;'), $toCharArray('LeftArrowBar;'), $toCharArray('LeftArrowRightArrow;'), $toCharArray('LeftCeiling;'), $toCharArray('LeftDoubleBracket;'), $toCharArray('LeftDownTeeVector;'), $toCharArray('LeftDownVector;'), $toCharArray('LeftDownVectorBar;'), $toCharArray('LeftFloor;'), $toCharArray('LeftRightArrow;'), $toCharArray('LeftRightVector;'), $toCharArray('LeftTee;'), $toCharArray('LeftTeeArrow;'), $toCharArray('LeftTeeVector;'), $toCharArray('LeftTriangle;'), $toCharArray('LeftTriangleBar;'), $toCharArray('LeftTriangleEqual;'), $toCharArray('LeftUpDownVector;'), $toCharArray('LeftUpTeeVector;'), $toCharArray('LeftUpVector;'), $toCharArray('LeftUpVectorBar;'), $toCharArray('LeftVector;'), $toCharArray('LeftVectorBar;'), $toCharArray('Leftarrow;'), $toCharArray('Leftrightarrow;'), $toCharArray('LessEqualGreater;'), $toCharArray('LessFullEqual;'), $toCharArray('LessGreater;'), $toCharArray('LessLess;'), $toCharArray('LessSlantEqual;'), $toCharArray('LessTilde;'), $toCharArray('Lfr;'), $toCharArray('Ll;'), $toCharArray('Lleftarrow;'), $toCharArray('Lmidot;'), $toCharArray('LongLeftArrow;'), $toCharArray('LongLeftRightArrow;'), $toCharArray('LongRightArrow;'), $toCharArray('Longleftarrow;'), $toCharArray('Longleftrightarrow;'), $toCharArray('Longrightarrow;'), $toCharArray('Lopf;'), $toCharArray('LowerLeftArrow;'), $toCharArray('LowerRightArrow;'), $toCharArray('Lscr;'), $toCharArray('Lsh;'), $toCharArray('Lstrok;'), $toCharArray('Lt;'), $toCharArray('Map;'), $toCharArray('Mcy;'), $toCharArray('MediumSpace;'), $toCharArray('Mellintrf;'), $toCharArray('Mfr;'), $toCharArray('MinusPlus;'), $toCharArray('Mopf;'), $toCharArray('Mscr;'), $toCharArray('Mu;'), $toCharArray('NJcy;'), $toCharArray('Nacute;'), $toCharArray('Ncaron;'), $toCharArray('Ncedil;'), $toCharArray('Ncy;'), $toCharArray('NegativeMediumSpace;'), $toCharArray('NegativeThickSpace;'), $toCharArray('NegativeThinSpace;'), $toCharArray('NegativeVeryThinSpace;'), $toCharArray('NestedGreaterGreater;'), $toCharArray('NestedLessLess;'), $toCharArray('NewLine;'), $toCharArray('Nfr;'), $toCharArray('NoBreak;'), $toCharArray('NonBreakingSpace;'), $toCharArray('Nopf;'), $toCharArray('Not;'), $toCharArray('NotCongruent;'), $toCharArray('NotCupCap;'), $toCharArray('NotDoubleVerticalBar;'), $toCharArray('NotElement;'), $toCharArray('NotEqual;'), $toCharArray('NotExists;'), $toCharArray('NotGreater;'), $toCharArray('NotGreaterEqual;'), $toCharArray('NotGreaterLess;'), $toCharArray('NotGreaterTilde;'), $toCharArray('NotLeftTriangle;'), $toCharArray('NotLeftTriangleEqual;'), $toCharArray('NotLess;'), $toCharArray('NotLessEqual;'), $toCharArray('NotLessGreater;'), $toCharArray('NotLessTilde;'), $toCharArray('NotPrecedes;'), $toCharArray('NotPrecedesSlantEqual;'), $toCharArray('NotReverseElement;'), $toCharArray('NotRightTriangle;'), $toCharArray('NotRightTriangleEqual;'), $toCharArray('NotSquareSubsetEqual;'), $toCharArray('NotSquareSupersetEqual;'), $toCharArray('NotSubsetEqual;'), $toCharArray('NotSucceeds;'), $toCharArray('NotSucceedsSlantEqual;'), $toCharArray('NotSupersetEqual;'), $toCharArray('NotTilde;'), $toCharArray('NotTildeEqual;'), $toCharArray('NotTildeFullEqual;'), $toCharArray('NotTildeTilde;'), $toCharArray('NotVerticalBar;'), $toCharArray('Nscr;'), $toCharArray('Ntilde'), $toCharArray('Ntilde;'), $toCharArray('Nu;'), $toCharArray('OElig;'), $toCharArray('Oacute'), $toCharArray('Oacute;'), $toCharArray('Ocirc'), $toCharArray('Ocirc;'), $toCharArray('Ocy;'), $toCharArray('Odblac;'), $toCharArray('Ofr;'), $toCharArray('Ograve'), $toCharArray('Ograve;'), $toCharArray('Omacr;'), $toCharArray('Omega;'), $toCharArray('Omicron;'), $toCharArray('Oopf;'), $toCharArray('OpenCurlyDoubleQuote;'), $toCharArray('OpenCurlyQuote;'), $toCharArray('Or;'), $toCharArray('Oscr;'), $toCharArray('Oslash'), $toCharArray('Oslash;'), $toCharArray('Otilde'), $toCharArray('Otilde;'), $toCharArray('Otimes;'), $toCharArray('Ouml'), $toCharArray('Ouml;'), $toCharArray('OverBar;'), $toCharArray('OverBrace;'), $toCharArray('OverBracket;'), $toCharArray('OverParenthesis;'), $toCharArray('PartialD;'), $toCharArray('Pcy;'), $toCharArray('Pfr;'), $toCharArray('Phi;'), $toCharArray('Pi;'), $toCharArray('PlusMinus;'), $toCharArray('Poincareplane;'), $toCharArray('Popf;'), $toCharArray('Pr;'), $toCharArray('Precedes;'), $toCharArray('PrecedesEqual;'), $toCharArray('PrecedesSlantEqual;'), $toCharArray('PrecedesTilde;'), $toCharArray('Prime;'), $toCharArray('Product;'), $toCharArray('Proportion;'), $toCharArray('Proportional;'), $toCharArray('Pscr;'), $toCharArray('Psi;'), $toCharArray('QUOT'), $toCharArray('QUOT;'), $toCharArray('Qfr;'), $toCharArray('Qopf;'), $toCharArray('Qscr;'), $toCharArray('RBarr;'), $toCharArray('REG'), $toCharArray('REG;'), $toCharArray('Racute;'), $toCharArray('Rang;'), $toCharArray('Rarr;'), $toCharArray('Rarrtl;'), $toCharArray('Rcaron;'), $toCharArray('Rcedil;'), $toCharArray('Rcy;'), $toCharArray('Re;'), $toCharArray('ReverseElement;'), $toCharArray('ReverseEquilibrium;'), $toCharArray('ReverseUpEquilibrium;'), $toCharArray('Rfr;'), $toCharArray('Rho;'), $toCharArray('RightAngleBracket;'), $toCharArray('RightArrow;'), $toCharArray('RightArrowBar;'), $toCharArray('RightArrowLeftArrow;'), $toCharArray('RightCeiling;'), $toCharArray('RightDoubleBracket;'), $toCharArray('RightDownTeeVector;'), $toCharArray('RightDownVector;'), $toCharArray('RightDownVectorBar;'), $toCharArray('RightFloor;'), $toCharArray('RightTee;'), $toCharArray('RightTeeArrow;'), $toCharArray('RightTeeVector;'), $toCharArray('RightTriangle;'), $toCharArray('RightTriangleBar;'), $toCharArray('RightTriangleEqual;'), $toCharArray('RightUpDownVector;'), $toCharArray('RightUpTeeVector;'), $toCharArray('RightUpVector;'), $toCharArray('RightUpVectorBar;'), $toCharArray('RightVector;'), $toCharArray('RightVectorBar;'), $toCharArray('Rightarrow;'), $toCharArray('Ropf;'), $toCharArray('RoundImplies;'), $toCharArray('Rrightarrow;'), $toCharArray('Rscr;'), $toCharArray('Rsh;'), $toCharArray('RuleDelayed;'), $toCharArray('SHCHcy;'), $toCharArray('SHcy;'), $toCharArray('SOFTcy;'), $toCharArray('Sacute;'), $toCharArray('Sc;'), $toCharArray('Scaron;'), $toCharArray('Scedil;'), $toCharArray('Scirc;'), $toCharArray('Scy;'), $toCharArray('Sfr;'), $toCharArray('ShortDownArrow;'), $toCharArray('ShortLeftArrow;'), $toCharArray('ShortRightArrow;'), $toCharArray('ShortUpArrow;'), $toCharArray('Sigma;'), $toCharArray('SmallCircle;'), $toCharArray('Sopf;'), $toCharArray('Sqrt;'), $toCharArray('Square;'), $toCharArray('SquareIntersection;'), $toCharArray('SquareSubset;'), $toCharArray('SquareSubsetEqual;'), $toCharArray('SquareSuperset;'), $toCharArray('SquareSupersetEqual;'), $toCharArray('SquareUnion;'), $toCharArray('Sscr;'), $toCharArray('Star;'), $toCharArray('Sub;'), $toCharArray('Subset;'), $toCharArray('SubsetEqual;'), $toCharArray('Succeeds;'), $toCharArray('SucceedsEqual;'), $toCharArray('SucceedsSlantEqual;'), $toCharArray('SucceedsTilde;'), $toCharArray('SuchThat;'), $toCharArray('Sum;'), $toCharArray('Sup;'), $toCharArray('Superset;'), $toCharArray('SupersetEqual;'), $toCharArray('Supset;'), $toCharArray('THORN'), $toCharArray('THORN;'), $toCharArray('TRADE;'), $toCharArray('TSHcy;'), $toCharArray('TScy;'), $toCharArray('Tab;'), $toCharArray('Tau;'), $toCharArray('Tcaron;'), $toCharArray('Tcedil;'), $toCharArray('Tcy;'), $toCharArray('Tfr;'), $toCharArray('Therefore;'), $toCharArray('Theta;'), $toCharArray('ThinSpace;'), $toCharArray('Tilde;'), $toCharArray('TildeEqual;'), $toCharArray('TildeFullEqual;'), $toCharArray('TildeTilde;'), $toCharArray('Topf;'), $toCharArray('TripleDot;'), $toCharArray('Tscr;'), $toCharArray('Tstrok;'), $toCharArray('Uacute'), $toCharArray('Uacute;'), $toCharArray('Uarr;'), $toCharArray('Uarrocir;'), $toCharArray('Ubrcy;'), $toCharArray('Ubreve;'), $toCharArray('Ucirc'), $toCharArray('Ucirc;'), $toCharArray('Ucy;'), $toCharArray('Udblac;'), $toCharArray('Ufr;'), $toCharArray('Ugrave'), $toCharArray('Ugrave;'), $toCharArray('Umacr;'), $toCharArray('UnderBar;'), $toCharArray('UnderBrace;'), $toCharArray('UnderBracket;'), $toCharArray('UnderParenthesis;'), $toCharArray('Union;'), $toCharArray('UnionPlus;'), $toCharArray('Uogon;'), $toCharArray('Uopf;'), $toCharArray('UpArrow;'), $toCharArray('UpArrowBar;'), $toCharArray('UpArrowDownArrow;'), $toCharArray('UpDownArrow;'), $toCharArray('UpEquilibrium;'), $toCharArray('UpTee;'), $toCharArray('UpTeeArrow;'), $toCharArray('Uparrow;'), $toCharArray('Updownarrow;'), $toCharArray('UpperLeftArrow;'), $toCharArray('UpperRightArrow;'), $toCharArray('Upsi;'), $toCharArray('Upsilon;'), $toCharArray('Uring;'), $toCharArray('Uscr;'), $toCharArray('Utilde;'), $toCharArray('Uuml'), $toCharArray('Uuml;'), $toCharArray('VDash;'), $toCharArray('Vbar;'), $toCharArray('Vcy;'), $toCharArray('Vdash;'), $toCharArray('Vdashl;'), $toCharArray('Vee;'), $toCharArray('Verbar;'), $toCharArray('Vert;'), $toCharArray('VerticalBar;'), $toCharArray('VerticalLine;'), $toCharArray('VerticalSeparator;'), $toCharArray('VerticalTilde;'), $toCharArray('VeryThinSpace;'), $toCharArray('Vfr;'), $toCharArray('Vopf;'), $toCharArray('Vscr;'), $toCharArray('Vvdash;'), $toCharArray('Wcirc;'), $toCharArray('Wedge;'), $toCharArray('Wfr;'), $toCharArray('Wopf;'), $toCharArray('Wscr;'), $toCharArray('Xfr;'), $toCharArray('Xi;'), $toCharArray('Xopf;'), $toCharArray('Xscr;'), $toCharArray('YAcy;'), $toCharArray('YIcy;'), $toCharArray('YUcy;'), $toCharArray('Yacute'), $toCharArray('Yacute;'), $toCharArray('Ycirc;'), $toCharArray('Ycy;'), $toCharArray('Yfr;'), $toCharArray('Yopf;'), $toCharArray('Yscr;'), $toCharArray('Yuml;'), $toCharArray('ZHcy;'), $toCharArray('Zacute;'), $toCharArray('Zcaron;'), $toCharArray('Zcy;'), $toCharArray('Zdot;'), $toCharArray('ZeroWidthSpace;'), $toCharArray('Zeta;'), $toCharArray('Zfr;'), $toCharArray('Zopf;'), $toCharArray('Zscr;'), $toCharArray('aacute'), $toCharArray('aacute;'), $toCharArray('abreve;'), $toCharArray('ac;'), $toCharArray('acd;'), $toCharArray('acirc'), $toCharArray('acirc;'), $toCharArray('acute'), $toCharArray('acute;'), $toCharArray('acy;'), $toCharArray('aelig'), $toCharArray('aelig;'), $toCharArray('af;'), $toCharArray('afr;'), $toCharArray('agrave'), $toCharArray('agrave;'), $toCharArray('alefsym;'), $toCharArray('aleph;'), $toCharArray('alpha;'), $toCharArray('amacr;'), $toCharArray('amalg;'), $toCharArray('amp'), $toCharArray('amp;'), $toCharArray('and;'), $toCharArray('andand;'), $toCharArray('andd;'), $toCharArray('andslope;'), $toCharArray('andv;'), $toCharArray('ang;'), $toCharArray('ange;'), $toCharArray('angle;'), $toCharArray('angmsd;'), $toCharArray('angmsdaa;'), $toCharArray('angmsdab;'), $toCharArray('angmsdac;'), $toCharArray('angmsdad;'), $toCharArray('angmsdae;'), $toCharArray('angmsdaf;'), $toCharArray('angmsdag;'), $toCharArray('angmsdah;'), $toCharArray('angrt;'), $toCharArray('angrtvb;'), $toCharArray('angrtvbd;'), $toCharArray('angsph;'), $toCharArray('angst;'), $toCharArray('angzarr;'), $toCharArray('aogon;'), $toCharArray('aopf;'), $toCharArray('ap;'), $toCharArray('apE;'), $toCharArray('apacir;'), $toCharArray('ape;'), $toCharArray('apid;'), $toCharArray('apos;'), $toCharArray('approx;'), $toCharArray('approxeq;'), $toCharArray('aring'), $toCharArray('aring;'), $toCharArray('ascr;'), $toCharArray('ast;'), $toCharArray('asymp;'), $toCharArray('asympeq;'), $toCharArray('atilde'), $toCharArray('atilde;'), $toCharArray('auml'), $toCharArray('auml;'), $toCharArray('awconint;'), $toCharArray('awint;'), $toCharArray('bNot;'), $toCharArray('backcong;'), $toCharArray('backepsilon;'), $toCharArray('backprime;'), $toCharArray('backsim;'), $toCharArray('backsimeq;'), $toCharArray('barvee;'), $toCharArray('barwed;'), $toCharArray('barwedge;'), $toCharArray('bbrk;'), $toCharArray('bbrktbrk;'), $toCharArray('bcong;'), $toCharArray('bcy;'), $toCharArray('bdquo;'), $toCharArray('becaus;'), $toCharArray('because;'), $toCharArray('bemptyv;'), $toCharArray('bepsi;'), $toCharArray('bernou;'), $toCharArray('beta;'), $toCharArray('beth;'), $toCharArray('between;'), $toCharArray('bfr;'), $toCharArray('bigcap;'), $toCharArray('bigcirc;'), $toCharArray('bigcup;'), $toCharArray('bigodot;'), $toCharArray('bigoplus;'), $toCharArray('bigotimes;'), $toCharArray('bigsqcup;'), $toCharArray('bigstar;'), $toCharArray('bigtriangledown;'), $toCharArray('bigtriangleup;'), $toCharArray('biguplus;'), $toCharArray('bigvee;'), $toCharArray('bigwedge;'), $toCharArray('bkarow;'), $toCharArray('blacklozenge;'), $toCharArray('blacksquare;'), $toCharArray('blacktriangle;'), $toCharArray('blacktriangledown;'), $toCharArray('blacktriangleleft;'), $toCharArray('blacktriangleright;'), $toCharArray('blank;'), $toCharArray('blk12;'), $toCharArray('blk14;'), $toCharArray('blk34;'), $toCharArray('block;'), $toCharArray('bnot;'), $toCharArray('bopf;'), $toCharArray('bot;'), $toCharArray('bottom;'), $toCharArray('bowtie;'), $toCharArray('boxDL;'), $toCharArray('boxDR;'), $toCharArray('boxDl;'), $toCharArray('boxDr;'), $toCharArray('boxH;'), $toCharArray('boxHD;'), $toCharArray('boxHU;'), $toCharArray('boxHd;'), $toCharArray('boxHu;'), $toCharArray('boxUL;'), $toCharArray('boxUR;'), $toCharArray('boxUl;'), $toCharArray('boxUr;'), $toCharArray('boxV;'), $toCharArray('boxVH;'), $toCharArray('boxVL;'), $toCharArray('boxVR;'), $toCharArray('boxVh;'), $toCharArray('boxVl;'), $toCharArray('boxVr;'), $toCharArray('boxbox;'), $toCharArray('boxdL;'), $toCharArray('boxdR;'), $toCharArray('boxdl;'), $toCharArray('boxdr;'), $toCharArray('boxh;'), $toCharArray('boxhD;'), $toCharArray('boxhU;'), $toCharArray('boxhd;'), $toCharArray('boxhu;'), $toCharArray('boxminus;'), $toCharArray('boxplus;'), $toCharArray('boxtimes;'), $toCharArray('boxuL;'), $toCharArray('boxuR;'), $toCharArray('boxul;'), $toCharArray('boxur;'), $toCharArray('boxv;'), $toCharArray('boxvH;'), $toCharArray('boxvL;'), $toCharArray('boxvR;'), $toCharArray('boxvh;'), $toCharArray('boxvl;'), $toCharArray('boxvr;'), $toCharArray('bprime;'), $toCharArray('breve;'), $toCharArray('brvbar'), $toCharArray('brvbar;'), $toCharArray('bscr;'), $toCharArray('bsemi;'), $toCharArray('bsim;'), $toCharArray('bsime;'), $toCharArray('bsol;'), $toCharArray('bsolb;'), $toCharArray('bull;'), $toCharArray('bullet;'), $toCharArray('bump;'), $toCharArray('bumpE;'), $toCharArray('bumpe;'), $toCharArray('bumpeq;'), $toCharArray('cacute;'), $toCharArray('cap;'), $toCharArray('capand;'), $toCharArray('capbrcup;'), $toCharArray('capcap;'), $toCharArray('capcup;'), $toCharArray('capdot;'), $toCharArray('caret;'), $toCharArray('caron;'), $toCharArray('ccaps;'), $toCharArray('ccaron;'), $toCharArray('ccedil'), $toCharArray('ccedil;'), $toCharArray('ccirc;'), $toCharArray('ccups;'), $toCharArray('ccupssm;'), $toCharArray('cdot;'), $toCharArray('cedil'), $toCharArray('cedil;'), $toCharArray('cemptyv;'), $toCharArray('cent'), $toCharArray('cent;'), $toCharArray('centerdot;'), $toCharArray('cfr;'), $toCharArray('chcy;'), $toCharArray('check;'), $toCharArray('checkmark;'), $toCharArray('chi;'), $toCharArray('cir;'), $toCharArray('cirE;'), $toCharArray('circ;'), $toCharArray('circeq;'), $toCharArray('circlearrowleft;'), $toCharArray('circlearrowright;'), $toCharArray('circledR;'), $toCharArray('circledS;'), $toCharArray('circledast;'), $toCharArray('circledcirc;'), $toCharArray('circleddash;'), $toCharArray('cire;'), $toCharArray('cirfnint;'), $toCharArray('cirmid;'), $toCharArray('cirscir;'), $toCharArray('clubs;'), $toCharArray('clubsuit;'), $toCharArray('colon;'), $toCharArray('colone;'), $toCharArray('coloneq;'), $toCharArray('comma;'), $toCharArray('commat;'), $toCharArray('comp;'), $toCharArray('compfn;'), $toCharArray('complement;'), $toCharArray('complexes;'), $toCharArray('cong;'), $toCharArray('congdot;'), $toCharArray('conint;'), $toCharArray('copf;'), $toCharArray('coprod;'), $toCharArray('copy'), $toCharArray('copy;'), $toCharArray('copysr;'), $toCharArray('crarr;'), $toCharArray('cross;'), $toCharArray('cscr;'), $toCharArray('csub;'), $toCharArray('csube;'), $toCharArray('csup;'), $toCharArray('csupe;'), $toCharArray('ctdot;'), $toCharArray('cudarrl;'), $toCharArray('cudarrr;'), $toCharArray('cuepr;'), $toCharArray('cuesc;'), $toCharArray('cularr;'), $toCharArray('cularrp;'), $toCharArray('cup;'), $toCharArray('cupbrcap;'), $toCharArray('cupcap;'), $toCharArray('cupcup;'), $toCharArray('cupdot;'), $toCharArray('cupor;'), $toCharArray('curarr;'), $toCharArray('curarrm;'), $toCharArray('curlyeqprec;'), $toCharArray('curlyeqsucc;'), $toCharArray('curlyvee;'), $toCharArray('curlywedge;'), $toCharArray('curren'), $toCharArray('curren;'), $toCharArray('curvearrowleft;'), $toCharArray('curvearrowright;'), $toCharArray('cuvee;'), $toCharArray('cuwed;'), $toCharArray('cwconint;'), $toCharArray('cwint;'), $toCharArray('cylcty;'), $toCharArray('dArr;'), $toCharArray('dHar;'), $toCharArray('dagger;'), $toCharArray('daleth;'), $toCharArray('darr;'), $toCharArray('dash;'), $toCharArray('dashv;'), $toCharArray('dbkarow;'), $toCharArray('dblac;'), $toCharArray('dcaron;'), $toCharArray('dcy;'), $toCharArray('dd;'), $toCharArray('ddagger;'), $toCharArray('ddarr;'), $toCharArray('ddotseq;'), $toCharArray('deg'), $toCharArray('deg;'), $toCharArray('delta;'), $toCharArray('demptyv;'), $toCharArray('dfisht;'), $toCharArray('dfr;'), $toCharArray('dharl;'), $toCharArray('dharr;'), $toCharArray('diam;'), $toCharArray('diamond;'), $toCharArray('diamondsuit;'), $toCharArray('diams;'), $toCharArray('die;'), $toCharArray('digamma;'), $toCharArray('disin;'), $toCharArray('div;'), $toCharArray('divide'), $toCharArray('divide;'), $toCharArray('divideontimes;'), $toCharArray('divonx;'), $toCharArray('djcy;'), $toCharArray('dlcorn;'), $toCharArray('dlcrop;'), $toCharArray('dollar;'), $toCharArray('dopf;'), $toCharArray('dot;'), $toCharArray('doteq;'), $toCharArray('doteqdot;'), $toCharArray('dotminus;'), $toCharArray('dotplus;'), $toCharArray('dotsquare;'), $toCharArray('doublebarwedge;'), $toCharArray('downarrow;'), $toCharArray('downdownarrows;'), $toCharArray('downharpoonleft;'), $toCharArray('downharpoonright;'), $toCharArray('drbkarow;'), $toCharArray('drcorn;'), $toCharArray('drcrop;'), $toCharArray('dscr;'), $toCharArray('dscy;'), $toCharArray('dsol;'), $toCharArray('dstrok;'), $toCharArray('dtdot;'), $toCharArray('dtri;'), $toCharArray('dtrif;'), $toCharArray('duarr;'), $toCharArray('duhar;'), $toCharArray('dwangle;'), $toCharArray('dzcy;'), $toCharArray('dzigrarr;'), $toCharArray('eDDot;'), $toCharArray('eDot;'), $toCharArray('eacute'), $toCharArray('eacute;'), $toCharArray('easter;'), $toCharArray('ecaron;'), $toCharArray('ecir;'), $toCharArray('ecirc'), $toCharArray('ecirc;'), $toCharArray('ecolon;'), $toCharArray('ecy;'), $toCharArray('edot;'), $toCharArray('ee;'), $toCharArray('efDot;'), $toCharArray('efr;'), $toCharArray('eg;'), $toCharArray('egrave'), $toCharArray('egrave;'), $toCharArray('egs;'), $toCharArray('egsdot;'), $toCharArray('el;'), $toCharArray('elinters;'), $toCharArray('ell;'), $toCharArray('els;'), $toCharArray('elsdot;'), $toCharArray('emacr;'), $toCharArray('empty;'), $toCharArray('emptyset;'), $toCharArray('emptyv;'), $toCharArray('emsp13;'), $toCharArray('emsp14;'), $toCharArray('emsp;'), $toCharArray('eng;'), $toCharArray('ensp;'), $toCharArray('eogon;'), $toCharArray('eopf;'), $toCharArray('epar;'), $toCharArray('eparsl;'), $toCharArray('eplus;'), $toCharArray('epsi;'), $toCharArray('epsilon;'), $toCharArray('epsiv;'), $toCharArray('eqcirc;'), $toCharArray('eqcolon;'), $toCharArray('eqsim;'), $toCharArray('eqslantgtr;'), $toCharArray('eqslantless;'), $toCharArray('equals;'), $toCharArray('equest;'), $toCharArray('equiv;'), $toCharArray('equivDD;'), $toCharArray('eqvparsl;'), $toCharArray('erDot;'), $toCharArray('erarr;'), $toCharArray('escr;'), $toCharArray('esdot;'), $toCharArray('esim;'), $toCharArray('eta;'), $toCharArray('eth'), $toCharArray('eth;'), $toCharArray('euml'), $toCharArray('euml;'), $toCharArray('euro;'), $toCharArray('excl;'), $toCharArray('exist;'), $toCharArray('expectation;'), $toCharArray('exponentiale;'), $toCharArray('fallingdotseq;'), $toCharArray('fcy;'), $toCharArray('female;'), $toCharArray('ffilig;'), $toCharArray('fflig;'), $toCharArray('ffllig;'), $toCharArray('ffr;'), $toCharArray('filig;'), $toCharArray('flat;'), $toCharArray('fllig;'), $toCharArray('fltns;'), $toCharArray('fnof;'), $toCharArray('fopf;'), $toCharArray('forall;'), $toCharArray('fork;'), $toCharArray('forkv;'), $toCharArray('fpartint;'), $toCharArray('frac12'), $toCharArray('frac12;'), $toCharArray('frac13;'), $toCharArray('frac14'), $toCharArray('frac14;'), $toCharArray('frac15;'), $toCharArray('frac16;'), $toCharArray('frac18;'), $toCharArray('frac23;'), $toCharArray('frac25;'), $toCharArray('frac34'), $toCharArray('frac34;'), $toCharArray('frac35;'), $toCharArray('frac38;'), $toCharArray('frac45;'), $toCharArray('frac56;'), $toCharArray('frac58;'), $toCharArray('frac78;'), $toCharArray('frasl;'), $toCharArray('frown;'), $toCharArray('fscr;'), $toCharArray('gE;'), $toCharArray('gEl;'), $toCharArray('gacute;'), $toCharArray('gamma;'), $toCharArray('gammad;'), $toCharArray('gap;'), $toCharArray('gbreve;'), $toCharArray('gcirc;'), $toCharArray('gcy;'), $toCharArray('gdot;'), $toCharArray('ge;'), $toCharArray('gel;'), $toCharArray('geq;'), $toCharArray('geqq;'), $toCharArray('geqslant;'), $toCharArray('ges;'), $toCharArray('gescc;'), $toCharArray('gesdot;'), $toCharArray('gesdoto;'), $toCharArray('gesdotol;'), $toCharArray('gesles;'), $toCharArray('gfr;'), $toCharArray('gg;'), $toCharArray('ggg;'), $toCharArray('gimel;'), $toCharArray('gjcy;'), $toCharArray('gl;'), $toCharArray('glE;'), $toCharArray('gla;'), $toCharArray('glj;'), $toCharArray('gnE;'), $toCharArray('gnap;'), $toCharArray('gnapprox;'), $toCharArray('gne;'), $toCharArray('gneq;'), $toCharArray('gneqq;'), $toCharArray('gnsim;'), $toCharArray('gopf;'), $toCharArray('grave;'), $toCharArray('gscr;'), $toCharArray('gsim;'), $toCharArray('gsime;'), $toCharArray('gsiml;'), $toCharArray('gt'), $toCharArray('gt;'), $toCharArray('gtcc;'), $toCharArray('gtcir;'), $toCharArray('gtdot;'), $toCharArray('gtlPar;'), $toCharArray('gtquest;'), $toCharArray('gtrapprox;'), $toCharArray('gtrarr;'), $toCharArray('gtrdot;'), $toCharArray('gtreqless;'), $toCharArray('gtreqqless;'), $toCharArray('gtrless;'), $toCharArray('gtrsim;'), $toCharArray('hArr;'), $toCharArray('hairsp;'), $toCharArray('half;'), $toCharArray('hamilt;'), $toCharArray('hardcy;'), $toCharArray('harr;'), $toCharArray('harrcir;'), $toCharArray('harrw;'), $toCharArray('hbar;'), $toCharArray('hcirc;'), $toCharArray('hearts;'), $toCharArray('heartsuit;'), $toCharArray('hellip;'), $toCharArray('hercon;'), $toCharArray('hfr;'), $toCharArray('hksearow;'), $toCharArray('hkswarow;'), $toCharArray('hoarr;'), $toCharArray('homtht;'), $toCharArray('hookleftarrow;'), $toCharArray('hookrightarrow;'), $toCharArray('hopf;'), $toCharArray('horbar;'), $toCharArray('hscr;'), $toCharArray('hslash;'), $toCharArray('hstrok;'), $toCharArray('hybull;'), $toCharArray('hyphen;'), $toCharArray('iacute'), $toCharArray('iacute;'), $toCharArray('ic;'), $toCharArray('icirc'), $toCharArray('icirc;'), $toCharArray('icy;'), $toCharArray('iecy;'), $toCharArray('iexcl'), $toCharArray('iexcl;'), $toCharArray('iff;'), $toCharArray('ifr;'), $toCharArray('igrave'), $toCharArray('igrave;'), $toCharArray('ii;'), $toCharArray('iiiint;'), $toCharArray('iiint;'), $toCharArray('iinfin;'), $toCharArray('iiota;'), $toCharArray('ijlig;'), $toCharArray('imacr;'), $toCharArray('image;'), $toCharArray('imagline;'), $toCharArray('imagpart;'), $toCharArray('imath;'), $toCharArray('imof;'), $toCharArray('imped;'), $toCharArray('in;'), $toCharArray('incare;'), $toCharArray('infin;'), $toCharArray('infintie;'), $toCharArray('inodot;'), $toCharArray('int;'), $toCharArray('intcal;'), $toCharArray('integers;'), $toCharArray('intercal;'), $toCharArray('intlarhk;'), $toCharArray('intprod;'), $toCharArray('iocy;'), $toCharArray('iogon;'), $toCharArray('iopf;'), $toCharArray('iota;'), $toCharArray('iprod;'), $toCharArray('iquest'), $toCharArray('iquest;'), $toCharArray('iscr;'), $toCharArray('isin;'), $toCharArray('isinE;'), $toCharArray('isindot;'), $toCharArray('isins;'), $toCharArray('isinsv;'), $toCharArray('isinv;'), $toCharArray('it;'), $toCharArray('itilde;'), $toCharArray('iukcy;'), $toCharArray('iuml'), $toCharArray('iuml;'), $toCharArray('jcirc;'), $toCharArray('jcy;'), $toCharArray('jfr;'), $toCharArray('jmath;'), $toCharArray('jopf;'), $toCharArray('jscr;'), $toCharArray('jsercy;'), $toCharArray('jukcy;'), $toCharArray('kappa;'), $toCharArray('kappav;'), $toCharArray('kcedil;'), $toCharArray('kcy;'), $toCharArray('kfr;'), $toCharArray('kgreen;'), $toCharArray('khcy;'), $toCharArray('kjcy;'), $toCharArray('kopf;'), $toCharArray('kscr;'), $toCharArray('lAarr;'), $toCharArray('lArr;'), $toCharArray('lAtail;'), $toCharArray('lBarr;'), $toCharArray('lE;'), $toCharArray('lEg;'), $toCharArray('lHar;'), $toCharArray('lacute;'), $toCharArray('laemptyv;'), $toCharArray('lagran;'), $toCharArray('lambda;'), $toCharArray('lang;'), $toCharArray('langd;'), $toCharArray('langle;'), $toCharArray('lap;'), $toCharArray('laquo'), $toCharArray('laquo;'), $toCharArray('larr;'), $toCharArray('larrb;'), $toCharArray('larrbfs;'), $toCharArray('larrfs;'), $toCharArray('larrhk;'), $toCharArray('larrlp;'), $toCharArray('larrpl;'), $toCharArray('larrsim;'), $toCharArray('larrtl;'), $toCharArray('lat;'), $toCharArray('latail;'), $toCharArray('late;'), $toCharArray('lbarr;'), $toCharArray('lbbrk;'), $toCharArray('lbrace;'), $toCharArray('lbrack;'), $toCharArray('lbrke;'), $toCharArray('lbrksld;'), $toCharArray('lbrkslu;'), $toCharArray('lcaron;'), $toCharArray('lcedil;'), $toCharArray('lceil;'), $toCharArray('lcub;'), $toCharArray('lcy;'), $toCharArray('ldca;'), $toCharArray('ldquo;'), $toCharArray('ldquor;'), $toCharArray('ldrdhar;'), $toCharArray('ldrushar;'), $toCharArray('ldsh;'), $toCharArray('le;'), $toCharArray('leftarrow;'), $toCharArray('leftarrowtail;'), $toCharArray('leftharpoondown;'), $toCharArray('leftharpoonup;'), $toCharArray('leftleftarrows;'), $toCharArray('leftrightarrow;'), $toCharArray('leftrightarrows;'), $toCharArray('leftrightharpoons;'), $toCharArray('leftrightsquigarrow;'), $toCharArray('leftthreetimes;'), $toCharArray('leg;'), $toCharArray('leq;'), $toCharArray('leqq;'), $toCharArray('leqslant;'), $toCharArray('les;'), $toCharArray('lescc;'), $toCharArray('lesdot;'), $toCharArray('lesdoto;'), $toCharArray('lesdotor;'), $toCharArray('lesges;'), $toCharArray('lessapprox;'), $toCharArray('lessdot;'), $toCharArray('lesseqgtr;'), $toCharArray('lesseqqgtr;'), $toCharArray('lessgtr;'), $toCharArray('lesssim;'), $toCharArray('lfisht;'), $toCharArray('lfloor;'), $toCharArray('lfr;'), $toCharArray('lg;'), $toCharArray('lgE;'), $toCharArray('lhard;'), $toCharArray('lharu;'), $toCharArray('lharul;'), $toCharArray('lhblk;'), $toCharArray('ljcy;'), $toCharArray('ll;'), $toCharArray('llarr;'), $toCharArray('llcorner;'), $toCharArray('llhard;'), $toCharArray('lltri;'), $toCharArray('lmidot;'), $toCharArray('lmoust;'), $toCharArray('lmoustache;'), $toCharArray('lnE;'), $toCharArray('lnap;'), $toCharArray('lnapprox;'), $toCharArray('lne;'), $toCharArray('lneq;'), $toCharArray('lneqq;'), $toCharArray('lnsim;'), $toCharArray('loang;'), $toCharArray('loarr;'), $toCharArray('lobrk;'), $toCharArray('longleftarrow;'), $toCharArray('longleftrightarrow;'), $toCharArray('longmapsto;'), $toCharArray('longrightarrow;'), $toCharArray('looparrowleft;'), $toCharArray('looparrowright;'), $toCharArray('lopar;'), $toCharArray('lopf;'), $toCharArray('loplus;'), $toCharArray('lotimes;'), $toCharArray('lowast;'), $toCharArray('lowbar;'), $toCharArray('loz;'), $toCharArray('lozenge;'), $toCharArray('lozf;'), $toCharArray('lpar;'), $toCharArray('lparlt;'), $toCharArray('lrarr;'), $toCharArray('lrcorner;'), $toCharArray('lrhar;'), $toCharArray('lrhard;'), $toCharArray('lrm;'), $toCharArray('lrtri;'), $toCharArray('lsaquo;'), $toCharArray('lscr;'), $toCharArray('lsh;'), $toCharArray('lsim;'), $toCharArray('lsime;'), $toCharArray('lsimg;'), $toCharArray('lsqb;'), $toCharArray('lsquo;'), $toCharArray('lsquor;'), $toCharArray('lstrok;'), $toCharArray('lt'), $toCharArray('lt;'), $toCharArray('ltcc;'), $toCharArray('ltcir;'), $toCharArray('ltdot;'), $toCharArray('lthree;'), $toCharArray('ltimes;'), $toCharArray('ltlarr;'), $toCharArray('ltquest;'), $toCharArray('ltrPar;'), $toCharArray('ltri;'), $toCharArray('ltrie;'), $toCharArray('ltrif;'), $toCharArray('lurdshar;'), $toCharArray('luruhar;'), $toCharArray('mDDot;'), $toCharArray('macr'), $toCharArray('macr;'), $toCharArray('male;'), $toCharArray('malt;'), $toCharArray('maltese;'), $toCharArray('map;'), $toCharArray('mapsto;'), $toCharArray('mapstodown;'), $toCharArray('mapstoleft;'), $toCharArray('mapstoup;'), $toCharArray('marker;'), $toCharArray('mcomma;'), $toCharArray('mcy;'), $toCharArray('mdash;'), $toCharArray('measuredangle;'), $toCharArray('mfr;'), $toCharArray('mho;'), $toCharArray('micro'), $toCharArray('micro;'), $toCharArray('mid;'), $toCharArray('midast;'), $toCharArray('midcir;'), $toCharArray('middot'), $toCharArray('middot;'), $toCharArray('minus;'), $toCharArray('minusb;'), $toCharArray('minusd;'), $toCharArray('minusdu;'), $toCharArray('mlcp;'), $toCharArray('mldr;'), $toCharArray('mnplus;'), $toCharArray('models;'), $toCharArray('mopf;'), $toCharArray('mp;'), $toCharArray('mscr;'), $toCharArray('mstpos;'), $toCharArray('mu;'), $toCharArray('multimap;'), $toCharArray('mumap;'), $toCharArray('nLeftarrow;'), $toCharArray('nLeftrightarrow;'), $toCharArray('nRightarrow;'), $toCharArray('nVDash;'), $toCharArray('nVdash;'), $toCharArray('nabla;'), $toCharArray('nacute;'), $toCharArray('nap;'), $toCharArray('napos;'), $toCharArray('napprox;'), $toCharArray('natur;'), $toCharArray('natural;'), $toCharArray('naturals;'), $toCharArray('nbsp'), $toCharArray('nbsp;'), $toCharArray('ncap;'), $toCharArray('ncaron;'), $toCharArray('ncedil;'), $toCharArray('ncong;'), $toCharArray('ncup;'), $toCharArray('ncy;'), $toCharArray('ndash;'), $toCharArray('ne;'), $toCharArray('neArr;'), $toCharArray('nearhk;'), $toCharArray('nearr;'), $toCharArray('nearrow;'), $toCharArray('nequiv;'), $toCharArray('nesear;'), $toCharArray('nexist;'), $toCharArray('nexists;'), $toCharArray('nfr;'), $toCharArray('nge;'), $toCharArray('ngeq;'), $toCharArray('ngsim;'), $toCharArray('ngt;'), $toCharArray('ngtr;'), $toCharArray('nhArr;'), $toCharArray('nharr;'), $toCharArray('nhpar;'), $toCharArray('ni;'), $toCharArray('nis;'), $toCharArray('nisd;'), $toCharArray('niv;'), $toCharArray('njcy;'), $toCharArray('nlArr;'), $toCharArray('nlarr;'), $toCharArray('nldr;'), $toCharArray('nle;'), $toCharArray('nleftarrow;'), $toCharArray('nleftrightarrow;'), $toCharArray('nleq;'), $toCharArray('nless;'), $toCharArray('nlsim;'), $toCharArray('nlt;'), $toCharArray('nltri;'), $toCharArray('nltrie;'), $toCharArray('nmid;'), $toCharArray('nopf;'), $toCharArray('not'), $toCharArray('not;'), $toCharArray('notin;'), $toCharArray('notinva;'), $toCharArray('notinvb;'), $toCharArray('notinvc;'), $toCharArray('notni;'), $toCharArray('notniva;'), $toCharArray('notnivb;'), $toCharArray('notnivc;'), $toCharArray('npar;'), $toCharArray('nparallel;'), $toCharArray('npolint;'), $toCharArray('npr;'), $toCharArray('nprcue;'), $toCharArray('nprec;'), $toCharArray('nrArr;'), $toCharArray('nrarr;'), $toCharArray('nrightarrow;'), $toCharArray('nrtri;'), $toCharArray('nrtrie;'), $toCharArray('nsc;'), $toCharArray('nsccue;'), $toCharArray('nscr;'), $toCharArray('nshortmid;'), $toCharArray('nshortparallel;'), $toCharArray('nsim;'), $toCharArray('nsime;'), $toCharArray('nsimeq;'), $toCharArray('nsmid;'), $toCharArray('nspar;'), $toCharArray('nsqsube;'), $toCharArray('nsqsupe;'), $toCharArray('nsub;'), $toCharArray('nsube;'), $toCharArray('nsubseteq;'), $toCharArray('nsucc;'), $toCharArray('nsup;'), $toCharArray('nsupe;'), $toCharArray('nsupseteq;'), $toCharArray('ntgl;'), $toCharArray('ntilde'), $toCharArray('ntilde;'), $toCharArray('ntlg;'), $toCharArray('ntriangleleft;'), $toCharArray('ntrianglelefteq;'), $toCharArray('ntriangleright;'), $toCharArray('ntrianglerighteq;'), $toCharArray('nu;'), $toCharArray('num;'), $toCharArray('numero;'), $toCharArray('numsp;'), $toCharArray('nvDash;'), $toCharArray('nvHarr;'), $toCharArray('nvdash;'), $toCharArray('nvinfin;'), $toCharArray('nvlArr;'), $toCharArray('nvrArr;'), $toCharArray('nwArr;'), $toCharArray('nwarhk;'), $toCharArray('nwarr;'), $toCharArray('nwarrow;'), $toCharArray('nwnear;'), $toCharArray('oS;'), $toCharArray('oacute'), $toCharArray('oacute;'), $toCharArray('oast;'), $toCharArray('ocir;'), $toCharArray('ocirc'), $toCharArray('ocirc;'), $toCharArray('ocy;'), $toCharArray('odash;'), $toCharArray('odblac;'), $toCharArray('odiv;'), $toCharArray('odot;'), $toCharArray('odsold;'), $toCharArray('oelig;'), $toCharArray('ofcir;'), $toCharArray('ofr;'), $toCharArray('ogon;'), $toCharArray('ograve'), $toCharArray('ograve;'), $toCharArray('ogt;'), $toCharArray('ohbar;'), $toCharArray('ohm;'), $toCharArray('oint;'), $toCharArray('olarr;'), $toCharArray('olcir;'), $toCharArray('olcross;'), $toCharArray('oline;'), $toCharArray('olt;'), $toCharArray('omacr;'), $toCharArray('omega;'), $toCharArray('omicron;'), $toCharArray('omid;'), $toCharArray('ominus;'), $toCharArray('oopf;'), $toCharArray('opar;'), $toCharArray('operp;'), $toCharArray('oplus;'), $toCharArray('or;'), $toCharArray('orarr;'), $toCharArray('ord;'), $toCharArray('order;'), $toCharArray('orderof;'), $toCharArray('ordf'), $toCharArray('ordf;'), $toCharArray('ordm'), $toCharArray('ordm;'), $toCharArray('origof;'), $toCharArray('oror;'), $toCharArray('orslope;'), $toCharArray('orv;'), $toCharArray('oscr;'), $toCharArray('oslash'), $toCharArray('oslash;'), $toCharArray('osol;'), $toCharArray('otilde'), $toCharArray('otilde;'), $toCharArray('otimes;'), $toCharArray('otimesas;'), $toCharArray('ouml'), $toCharArray('ouml;'), $toCharArray('ovbar;'), $toCharArray('par;'), $toCharArray('para'), $toCharArray('para;'), $toCharArray('parallel;'), $toCharArray('parsim;'), $toCharArray('parsl;'), $toCharArray('part;'), $toCharArray('pcy;'), $toCharArray('percnt;'), $toCharArray('period;'), $toCharArray('permil;'), $toCharArray('perp;'), $toCharArray('pertenk;'), $toCharArray('pfr;'), $toCharArray('phi;'), $toCharArray('phiv;'), $toCharArray('phmmat;'), $toCharArray('phone;'), $toCharArray('pi;'), $toCharArray('pitchfork;'), $toCharArray('piv;'), $toCharArray('planck;'), $toCharArray('planckh;'), $toCharArray('plankv;'), $toCharArray('plus;'), $toCharArray('plusacir;'), $toCharArray('plusb;'), $toCharArray('pluscir;'), $toCharArray('plusdo;'), $toCharArray('plusdu;'), $toCharArray('pluse;'), $toCharArray('plusmn'), $toCharArray('plusmn;'), $toCharArray('plussim;'), $toCharArray('plustwo;'), $toCharArray('pm;'), $toCharArray('pointint;'), $toCharArray('popf;'), $toCharArray('pound'), $toCharArray('pound;'), $toCharArray('pr;'), $toCharArray('prE;'), $toCharArray('prap;'), $toCharArray('prcue;'), $toCharArray('pre;'), $toCharArray('prec;'), $toCharArray('precapprox;'), $toCharArray('preccurlyeq;'), $toCharArray('preceq;'), $toCharArray('precnapprox;'), $toCharArray('precneqq;'), $toCharArray('precnsim;'), $toCharArray('precsim;'), $toCharArray('prime;'), $toCharArray('primes;'), $toCharArray('prnE;'), $toCharArray('prnap;'), $toCharArray('prnsim;'), $toCharArray('prod;'), $toCharArray('profalar;'), $toCharArray('profline;'), $toCharArray('profsurf;'), $toCharArray('prop;'), $toCharArray('propto;'), $toCharArray('prsim;'), $toCharArray('prurel;'), $toCharArray('pscr;'), $toCharArray('psi;'), $toCharArray('puncsp;'), $toCharArray('qfr;'), $toCharArray('qint;'), $toCharArray('qopf;'), $toCharArray('qprime;'), $toCharArray('qscr;'), $toCharArray('quaternions;'), $toCharArray('quatint;'), $toCharArray('quest;'), $toCharArray('questeq;'), $toCharArray('quot'), $toCharArray('quot;'), $toCharArray('rAarr;'), $toCharArray('rArr;'), $toCharArray('rAtail;'), $toCharArray('rBarr;'), $toCharArray('rHar;'), $toCharArray('race;'), $toCharArray('racute;'), $toCharArray('radic;'), $toCharArray('raemptyv;'), $toCharArray('rang;'), $toCharArray('rangd;'), $toCharArray('range;'), $toCharArray('rangle;'), $toCharArray('raquo'), $toCharArray('raquo;'), $toCharArray('rarr;'), $toCharArray('rarrap;'), $toCharArray('rarrb;'), $toCharArray('rarrbfs;'), $toCharArray('rarrc;'), $toCharArray('rarrfs;'), $toCharArray('rarrhk;'), $toCharArray('rarrlp;'), $toCharArray('rarrpl;'), $toCharArray('rarrsim;'), $toCharArray('rarrtl;'), $toCharArray('rarrw;'), $toCharArray('ratail;'), $toCharArray('ratio;'), $toCharArray('rationals;'), $toCharArray('rbarr;'), $toCharArray('rbbrk;'), $toCharArray('rbrace;'), $toCharArray('rbrack;'), $toCharArray('rbrke;'), $toCharArray('rbrksld;'), $toCharArray('rbrkslu;'), $toCharArray('rcaron;'), $toCharArray('rcedil;'), $toCharArray('rceil;'), $toCharArray('rcub;'), $toCharArray('rcy;'), $toCharArray('rdca;'), $toCharArray('rdldhar;'), $toCharArray('rdquo;'), $toCharArray('rdquor;'), $toCharArray('rdsh;'), $toCharArray('real;'), $toCharArray('realine;'), $toCharArray('realpart;'), $toCharArray('reals;'), $toCharArray('rect;'), $toCharArray('reg'), $toCharArray('reg;'), $toCharArray('rfisht;'), $toCharArray('rfloor;'), $toCharArray('rfr;'), $toCharArray('rhard;'), $toCharArray('rharu;'), $toCharArray('rharul;'), $toCharArray('rho;'), $toCharArray('rhov;'), $toCharArray('rightarrow;'), $toCharArray('rightarrowtail;'), $toCharArray('rightharpoondown;'), $toCharArray('rightharpoonup;'), $toCharArray('rightleftarrows;'), $toCharArray('rightleftharpoons;'), $toCharArray('rightrightarrows;'), $toCharArray('rightsquigarrow;'), $toCharArray('rightthreetimes;'), $toCharArray('ring;'), $toCharArray('risingdotseq;'), $toCharArray('rlarr;'), $toCharArray('rlhar;'), $toCharArray('rlm;'), $toCharArray('rmoust;'), $toCharArray('rmoustache;'), $toCharArray('rnmid;'), $toCharArray('roang;'), $toCharArray('roarr;'), $toCharArray('robrk;'), $toCharArray('ropar;'), $toCharArray('ropf;'), $toCharArray('roplus;'), $toCharArray('rotimes;'), $toCharArray('rpar;'), $toCharArray('rpargt;'), $toCharArray('rppolint;'), $toCharArray('rrarr;'), $toCharArray('rsaquo;'), $toCharArray('rscr;'), $toCharArray('rsh;'), $toCharArray('rsqb;'), $toCharArray('rsquo;'), $toCharArray('rsquor;'), $toCharArray('rthree;'), $toCharArray('rtimes;'), $toCharArray('rtri;'), $toCharArray('rtrie;'), $toCharArray('rtrif;'), $toCharArray('rtriltri;'), $toCharArray('ruluhar;'), $toCharArray('rx;'), $toCharArray('sacute;'), $toCharArray('sbquo;'), $toCharArray('sc;'), $toCharArray('scE;'), $toCharArray('scap;'), $toCharArray('scaron;'), $toCharArray('sccue;'), $toCharArray('sce;'), $toCharArray('scedil;'), $toCharArray('scirc;'), $toCharArray('scnE;'), $toCharArray('scnap;'), $toCharArray('scnsim;'), $toCharArray('scpolint;'), $toCharArray('scsim;'), $toCharArray('scy;'), $toCharArray('sdot;'), $toCharArray('sdotb;'), $toCharArray('sdote;'), $toCharArray('seArr;'), $toCharArray('searhk;'), $toCharArray('searr;'), $toCharArray('searrow;'), $toCharArray('sect'), $toCharArray('sect;'), $toCharArray('semi;'), $toCharArray('seswar;'), $toCharArray('setminus;'), $toCharArray('setmn;'), $toCharArray('sext;'), $toCharArray('sfr;'), $toCharArray('sfrown;'), $toCharArray('sharp;'), $toCharArray('shchcy;'), $toCharArray('shcy;'), $toCharArray('shortmid;'), $toCharArray('shortparallel;'), $toCharArray('shy'), $toCharArray('shy;'), $toCharArray('sigma;'), $toCharArray('sigmaf;'), $toCharArray('sigmav;'), $toCharArray('sim;'), $toCharArray('simdot;'), $toCharArray('sime;'), $toCharArray('simeq;'), $toCharArray('simg;'), $toCharArray('simgE;'), $toCharArray('siml;'), $toCharArray('simlE;'), $toCharArray('simne;'), $toCharArray('simplus;'), $toCharArray('simrarr;'), $toCharArray('slarr;'), $toCharArray('smallsetminus;'), $toCharArray('smashp;'), $toCharArray('smeparsl;'), $toCharArray('smid;'), $toCharArray('smile;'), $toCharArray('smt;'), $toCharArray('smte;'), $toCharArray('softcy;'), $toCharArray('sol;'), $toCharArray('solb;'), $toCharArray('solbar;'), $toCharArray('sopf;'), $toCharArray('spades;'), $toCharArray('spadesuit;'), $toCharArray('spar;'), $toCharArray('sqcap;'), $toCharArray('sqcup;'), $toCharArray('sqsub;'), $toCharArray('sqsube;'), $toCharArray('sqsubset;'), $toCharArray('sqsubseteq;'), $toCharArray('sqsup;'), $toCharArray('sqsupe;'), $toCharArray('sqsupset;'), $toCharArray('sqsupseteq;'), $toCharArray('squ;'), $toCharArray('square;'), $toCharArray('squarf;'), $toCharArray('squf;'), $toCharArray('srarr;'), $toCharArray('sscr;'), $toCharArray('ssetmn;'), $toCharArray('ssmile;'), $toCharArray('sstarf;'), $toCharArray('star;'), $toCharArray('starf;'), $toCharArray('straightepsilon;'), $toCharArray('straightphi;'), $toCharArray('strns;'), $toCharArray('sub;'), $toCharArray('subE;'), $toCharArray('subdot;'), $toCharArray('sube;'), $toCharArray('subedot;'), $toCharArray('submult;'), $toCharArray('subnE;'), $toCharArray('subne;'), $toCharArray('subplus;'), $toCharArray('subrarr;'), $toCharArray('subset;'), $toCharArray('subseteq;'), $toCharArray('subseteqq;'), $toCharArray('subsetneq;'), $toCharArray('subsetneqq;'), $toCharArray('subsim;'), $toCharArray('subsub;'), $toCharArray('subsup;'), $toCharArray('succ;'), $toCharArray('succapprox;'), $toCharArray('succcurlyeq;'), $toCharArray('succeq;'), $toCharArray('succnapprox;'), $toCharArray('succneqq;'), $toCharArray('succnsim;'), $toCharArray('succsim;'), $toCharArray('sum;'), $toCharArray('sung;'), $toCharArray('sup1'), $toCharArray('sup1;'), $toCharArray('sup2'), $toCharArray('sup2;'), $toCharArray('sup3'), $toCharArray('sup3;'), $toCharArray('sup;'), $toCharArray('supE;'), $toCharArray('supdot;'), $toCharArray('supdsub;'), $toCharArray('supe;'), $toCharArray('supedot;'), $toCharArray('suphsub;'), $toCharArray('suplarr;'), $toCharArray('supmult;'), $toCharArray('supnE;'), $toCharArray('supne;'), $toCharArray('supplus;'), $toCharArray('supset;'), $toCharArray('supseteq;'), $toCharArray('supseteqq;'), $toCharArray('supsetneq;'), $toCharArray('supsetneqq;'), $toCharArray('supsim;'), $toCharArray('supsub;'), $toCharArray('supsup;'), $toCharArray('swArr;'), $toCharArray('swarhk;'), $toCharArray('swarr;'), $toCharArray('swarrow;'), $toCharArray('swnwar;'), $toCharArray('szlig'), $toCharArray('szlig;'), $toCharArray('target;'), $toCharArray('tau;'), $toCharArray('tbrk;'), $toCharArray('tcaron;'), $toCharArray('tcedil;'), $toCharArray('tcy;'), $toCharArray('tdot;'), $toCharArray('telrec;'), $toCharArray('tfr;'), $toCharArray('there4;'), $toCharArray('therefore;'), $toCharArray('theta;'), $toCharArray('thetasym;'), $toCharArray('thetav;'), $toCharArray('thickapprox;'), $toCharArray('thicksim;'), $toCharArray('thinsp;'), $toCharArray('thkap;'), $toCharArray('thksim;'), $toCharArray('thorn'), $toCharArray('thorn;'), $toCharArray('tilde;'), $toCharArray('times'), $toCharArray('times;'), $toCharArray('timesb;'), $toCharArray('timesbar;'), $toCharArray('timesd;'), $toCharArray('tint;'), $toCharArray('toea;'), $toCharArray('top;'), $toCharArray('topbot;'), $toCharArray('topcir;'), $toCharArray('topf;'), $toCharArray('topfork;'), $toCharArray('tosa;'), $toCharArray('tprime;'), $toCharArray('trade;'), $toCharArray('triangle;'), $toCharArray('triangledown;'), $toCharArray('triangleleft;'), $toCharArray('trianglelefteq;'), $toCharArray('triangleq;'), $toCharArray('triangleright;'), $toCharArray('trianglerighteq;'), $toCharArray('tridot;'), $toCharArray('trie;'), $toCharArray('triminus;'), $toCharArray('triplus;'), $toCharArray('trisb;'), $toCharArray('tritime;'), $toCharArray('trpezium;'), $toCharArray('tscr;'), $toCharArray('tscy;'), $toCharArray('tshcy;'), $toCharArray('tstrok;'), $toCharArray('twixt;'), $toCharArray('twoheadleftarrow;'), $toCharArray('twoheadrightarrow;'), $toCharArray('uArr;'), $toCharArray('uHar;'), $toCharArray('uacute'), $toCharArray('uacute;'), $toCharArray('uarr;'), $toCharArray('ubrcy;'), $toCharArray('ubreve;'), $toCharArray('ucirc'), $toCharArray('ucirc;'), $toCharArray('ucy;'), $toCharArray('udarr;'), $toCharArray('udblac;'), $toCharArray('udhar;'), $toCharArray('ufisht;'), $toCharArray('ufr;'), $toCharArray('ugrave'), $toCharArray('ugrave;'), $toCharArray('uharl;'), $toCharArray('uharr;'), $toCharArray('uhblk;'), $toCharArray('ulcorn;'), $toCharArray('ulcorner;'), $toCharArray('ulcrop;'), $toCharArray('ultri;'), $toCharArray('umacr;'), $toCharArray('uml'), $toCharArray('uml;'), $toCharArray('uogon;'), $toCharArray('uopf;'), $toCharArray('uparrow;'), $toCharArray('updownarrow;'), $toCharArray('upharpoonleft;'), $toCharArray('upharpoonright;'), $toCharArray('uplus;'), $toCharArray('upsi;'), $toCharArray('upsih;'), $toCharArray('upsilon;'), $toCharArray('upuparrows;'), $toCharArray('urcorn;'), $toCharArray('urcorner;'), $toCharArray('urcrop;'), $toCharArray('uring;'), $toCharArray('urtri;'), $toCharArray('uscr;'), $toCharArray('utdot;'), $toCharArray('utilde;'), $toCharArray('utri;'), $toCharArray('utrif;'), $toCharArray('uuarr;'), $toCharArray('uuml'), $toCharArray('uuml;'), $toCharArray('uwangle;'), $toCharArray('vArr;'), $toCharArray('vBar;'), $toCharArray('vBarv;'), $toCharArray('vDash;'), $toCharArray('vangrt;'), $toCharArray('varepsilon;'), $toCharArray('varkappa;'), $toCharArray('varnothing;'), $toCharArray('varphi;'), $toCharArray('varpi;'), $toCharArray('varpropto;'), $toCharArray('varr;'), $toCharArray('varrho;'), $toCharArray('varsigma;'), $toCharArray('vartheta;'), $toCharArray('vartriangleleft;'), $toCharArray('vartriangleright;'), $toCharArray('vcy;'), $toCharArray('vdash;'), $toCharArray('vee;'), $toCharArray('veebar;'), $toCharArray('veeeq;'), $toCharArray('vellip;'), $toCharArray('verbar;'), $toCharArray('vert;'), $toCharArray('vfr;'), $toCharArray('vltri;'), $toCharArray('vopf;'), $toCharArray('vprop;'), $toCharArray('vrtri;'), $toCharArray('vscr;'), $toCharArray('vzigzag;'), $toCharArray('wcirc;'), $toCharArray('wedbar;'), $toCharArray('wedge;'), $toCharArray('wedgeq;'), $toCharArray('weierp;'), $toCharArray('wfr;'), $toCharArray('wopf;'), $toCharArray('wp;'), $toCharArray('wr;'), $toCharArray('wreath;'), $toCharArray('wscr;'), $toCharArray('xcap;'), $toCharArray('xcirc;'), $toCharArray('xcup;'), $toCharArray('xdtri;'), $toCharArray('xfr;'), $toCharArray('xhArr;'), $toCharArray('xharr;'), $toCharArray('xi;'), $toCharArray('xlArr;'), $toCharArray('xlarr;'), $toCharArray('xmap;'), $toCharArray('xnis;'), $toCharArray('xodot;'), $toCharArray('xopf;'), $toCharArray('xoplus;'), $toCharArray('xotime;'), $toCharArray('xrArr;'), $toCharArray('xrarr;'), $toCharArray('xscr;'), $toCharArray('xsqcup;'), $toCharArray('xuplus;'), $toCharArray('xutri;'), $toCharArray('xvee;'), $toCharArray('xwedge;'), $toCharArray('yacute'), $toCharArray('yacute;'), $toCharArray('yacy;'), $toCharArray('ycirc;'), $toCharArray('ycy;'), $toCharArray('yen'), $toCharArray('yen;'), $toCharArray('yfr;'), $toCharArray('yicy;'), $toCharArray('yopf;'), $toCharArray('yscr;'), $toCharArray('yucy;'), $toCharArray('yuml'), $toCharArray('yuml;'), $toCharArray('zacute;'), $toCharArray('zcaron;'), $toCharArray('zcy;'), $toCharArray('zdot;'), $toCharArray('zeetrf;'), $toCharArray('zeta;'), $toCharArray('zfr;'), $toCharArray('zhcy;'), $toCharArray('zigrarr;'), $toCharArray('zopf;'), $toCharArray('zscr;'), $toCharArray('zwj;'), $toCharArray('zwnj;')]);
 1.21715 +  VALUES_0 = initValues(_3_3C_classLit, 52, 12, [initValues(_3C_classLit, 42, -1, [198]), initValues(_3C_classLit, 42, -1, [198]), initValues(_3C_classLit, 42, -1, [38]), initValues(_3C_classLit, 42, -1, [38]), initValues(_3C_classLit, 42, -1, [193]), initValues(_3C_classLit, 42, -1, [193]), initValues(_3C_classLit, 42, -1, [258]), initValues(_3C_classLit, 42, -1, [194]), initValues(_3C_classLit, 42, -1, [194]), initValues(_3C_classLit, 42, -1, [1040]), initValues(_3C_classLit, 42, -1, [55349, 56580]), initValues(_3C_classLit, 42, -1, [192]), initValues(_3C_classLit, 42, -1, [192]), initValues(_3C_classLit, 42, -1, [913]), initValues(_3C_classLit, 42, -1, [256]), initValues(_3C_classLit, 42, -1, [10835]), initValues(_3C_classLit, 42, -1, [260]), initValues(_3C_classLit, 42, -1, [55349, 56632]), initValues(_3C_classLit, 42, -1, [8289]), initValues(_3C_classLit, 42, -1, [197]), initValues(_3C_classLit, 42, -1, [197]), initValues(_3C_classLit, 42, -1, [55349, 56476]), initValues(_3C_classLit, 42, -1, [8788]), initValues(_3C_classLit, 42, -1, [195]), initValues(_3C_classLit, 42, -1, [195]), initValues(_3C_classLit, 42, -1, [196]), initValues(_3C_classLit, 42, -1, [196]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [10983]), initValues(_3C_classLit, 42, -1, [8966]), initValues(_3C_classLit, 42, -1, [1041]), initValues(_3C_classLit, 42, -1, [8757]), initValues(_3C_classLit, 42, -1, [8492]), initValues(_3C_classLit, 42, -1, [914]), initValues(_3C_classLit, 42, -1, [55349, 56581]), initValues(_3C_classLit, 42, -1, [55349, 56633]), initValues(_3C_classLit, 42, -1, [728]), initValues(_3C_classLit, 42, -1, [8492]), initValues(_3C_classLit, 42, -1, [8782]), initValues(_3C_classLit, 42, -1, [1063]), initValues(_3C_classLit, 42, -1, [169]), initValues(_3C_classLit, 42, -1, [169]), initValues(_3C_classLit, 42, -1, [262]), initValues(_3C_classLit, 42, -1, [8914]), initValues(_3C_classLit, 42, -1, [8517]), initValues(_3C_classLit, 42, -1, [8493]), initValues(_3C_classLit, 42, -1, [268]), initValues(_3C_classLit, 42, -1, [199]), initValues(_3C_classLit, 42, -1, [199]), initValues(_3C_classLit, 42, -1, [264]), initValues(_3C_classLit, 42, -1, [8752]), initValues(_3C_classLit, 42, -1, [266]), initValues(_3C_classLit, 42, -1, [184]), initValues(_3C_classLit, 42, -1, [183]), initValues(_3C_classLit, 42, -1, [8493]), initValues(_3C_classLit, 42, -1, [935]), initValues(_3C_classLit, 42, -1, [8857]), initValues(_3C_classLit, 42, -1, [8854]), initValues(_3C_classLit, 42, -1, [8853]), initValues(_3C_classLit, 42, -1, [8855]), initValues(_3C_classLit, 42, -1, [8754]), initValues(_3C_classLit, 42, -1, [8221]), initValues(_3C_classLit, 42, -1, [8217]), initValues(_3C_classLit, 42, -1, [8759]), initValues(_3C_classLit, 42, -1, [10868]), initValues(_3C_classLit, 42, -1, [8801]), initValues(_3C_classLit, 42, -1, [8751]), initValues(_3C_classLit, 42, -1, [8750]), initValues(_3C_classLit, 42, -1, [8450]), initValues(_3C_classLit, 42, -1, [8720]), initValues(_3C_classLit, 42, -1, [8755]), initValues(_3C_classLit, 42, -1, [10799]), initValues(_3C_classLit, 42, -1, [55349, 56478]), initValues(_3C_classLit, 42, -1, [8915]), initValues(_3C_classLit, 42, -1, [8781]), initValues(_3C_classLit, 42, -1, [8517]), initValues(_3C_classLit, 42, -1, [10513]), initValues(_3C_classLit, 42, -1, [1026]), initValues(_3C_classLit, 42, -1, [1029]), initValues(_3C_classLit, 42, -1, [1039]), initValues(_3C_classLit, 42, -1, [8225]), initValues(_3C_classLit, 42, -1, [8609]), initValues(_3C_classLit, 42, -1, [10980]), initValues(_3C_classLit, 42, -1, [270]), initValues(_3C_classLit, 42, -1, [1044]), initValues(_3C_classLit, 42, -1, [8711]), initValues(_3C_classLit, 42, -1, [916]), initValues(_3C_classLit, 42, -1, [55349, 56583]), initValues(_3C_classLit, 42, -1, [180]), initValues(_3C_classLit, 42, -1, [729]), initValues(_3C_classLit, 42, -1, [733]), initValues(_3C_classLit, 42, -1, [96]), initValues(_3C_classLit, 42, -1, [732]), initValues(_3C_classLit, 42, -1, [8900]), initValues(_3C_classLit, 42, -1, [8518]), initValues(_3C_classLit, 42, -1, [55349, 56635]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [8412]), initValues(_3C_classLit, 42, -1, [8784]), initValues(_3C_classLit, 42, -1, [8751]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [8659]), initValues(_3C_classLit, 42, -1, [8656]), initValues(_3C_classLit, 42, -1, [8660]), initValues(_3C_classLit, 42, -1, [10980]), initValues(_3C_classLit, 42, -1, [10232]), initValues(_3C_classLit, 42, -1, [10234]), initValues(_3C_classLit, 42, -1, [10233]), initValues(_3C_classLit, 42, -1, [8658]), initValues(_3C_classLit, 42, -1, [8872]), initValues(_3C_classLit, 42, -1, [8657]), initValues(_3C_classLit, 42, -1, [8661]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [8595]), initValues(_3C_classLit, 42, -1, [10515]), initValues(_3C_classLit, 42, -1, [8693]), initValues(_3C_classLit, 42, -1, [785]), initValues(_3C_classLit, 42, -1, [10576]), initValues(_3C_classLit, 42, -1, [10590]), initValues(_3C_classLit, 42, -1, [8637]), initValues(_3C_classLit, 42, -1, [10582]), initValues(_3C_classLit, 42, -1, [10591]), initValues(_3C_classLit, 42, -1, [8641]), initValues(_3C_classLit, 42, -1, [10583]), initValues(_3C_classLit, 42, -1, [8868]), initValues(_3C_classLit, 42, -1, [8615]), initValues(_3C_classLit, 42, -1, [8659]), initValues(_3C_classLit, 42, -1, [55349, 56479]), initValues(_3C_classLit, 42, -1, [272]), initValues(_3C_classLit, 42, -1, [330]), initValues(_3C_classLit, 42, -1, [208]), initValues(_3C_classLit, 42, -1, [208]), initValues(_3C_classLit, 42, -1, [201]), initValues(_3C_classLit, 42, -1, [201]), initValues(_3C_classLit, 42, -1, [282]), initValues(_3C_classLit, 42, -1, [202]), initValues(_3C_classLit, 42, -1, [202]), initValues(_3C_classLit, 42, -1, [1069]), initValues(_3C_classLit, 42, -1, [278]), initValues(_3C_classLit, 42, -1, [55349, 56584]), initValues(_3C_classLit, 42, -1, [200]), initValues(_3C_classLit, 42, -1, [200]), initValues(_3C_classLit, 42, -1, [8712]), initValues(_3C_classLit, 42, -1, [274]), initValues(_3C_classLit, 42, -1, [9723]), initValues(_3C_classLit, 42, -1, [9643]), initValues(_3C_classLit, 42, -1, [280]), initValues(_3C_classLit, 42, -1, [55349, 56636]), initValues(_3C_classLit, 42, -1, [917]), initValues(_3C_classLit, 42, -1, [10869]), initValues(_3C_classLit, 42, -1, [8770]), initValues(_3C_classLit, 42, -1, [8652]), initValues(_3C_classLit, 42, -1, [8496]), initValues(_3C_classLit, 42, -1, [10867]), initValues(_3C_classLit, 42, -1, [919]), initValues(_3C_classLit, 42, -1, [203]), initValues(_3C_classLit, 42, -1, [203]), initValues(_3C_classLit, 42, -1, [8707]), initValues(_3C_classLit, 42, -1, [8519]), initValues(_3C_classLit, 42, -1, [1060]), initValues(_3C_classLit, 42, -1, [55349, 56585]), initValues(_3C_classLit, 42, -1, [9724]), initValues(_3C_classLit, 42, -1, [9642]), initValues(_3C_classLit, 42, -1, [55349, 56637]), initValues(_3C_classLit, 42, -1, [8704]), initValues(_3C_classLit, 42, -1, [8497]), initValues(_3C_classLit, 42, -1, [8497]), initValues(_3C_classLit, 42, -1, [1027]), initValues(_3C_classLit, 42, -1, [62]), initValues(_3C_classLit, 42, -1, [62]), initValues(_3C_classLit, 42, -1, [915]), initValues(_3C_classLit, 42, -1, [988]), initValues(_3C_classLit, 42, -1, [286]), initValues(_3C_classLit, 42, -1, [290]), initValues(_3C_classLit, 42, -1, [284]), initValues(_3C_classLit, 42, -1, [1043]), initValues(_3C_classLit, 42, -1, [288]), initValues(_3C_classLit, 42, -1, [55349, 56586]), initValues(_3C_classLit, 42, -1, [8921]), initValues(_3C_classLit, 42, -1, [55349, 56638]), initValues(_3C_classLit, 42, -1, [8805]), initValues(_3C_classLit, 42, -1, [8923]), initValues(_3C_classLit, 42, -1, [8807]), initValues(_3C_classLit, 42, -1, [10914]), initValues(_3C_classLit, 42, -1, [8823]), initValues(_3C_classLit, 42, -1, [10878]), initValues(_3C_classLit, 42, -1, [8819]), initValues(_3C_classLit, 42, -1, [55349, 56482]), initValues(_3C_classLit, 42, -1, [8811]), initValues(_3C_classLit, 42, -1, [1066]), initValues(_3C_classLit, 42, -1, [711]), initValues(_3C_classLit, 42, -1, [94]), initValues(_3C_classLit, 42, -1, [292]), initValues(_3C_classLit, 42, -1, [8460]), initValues(_3C_classLit, 42, -1, [8459]), initValues(_3C_classLit, 42, -1, [8461]), initValues(_3C_classLit, 42, -1, [9472]), initValues(_3C_classLit, 42, -1, [8459]), initValues(_3C_classLit, 42, -1, [294]), initValues(_3C_classLit, 42, -1, [8782]), initValues(_3C_classLit, 42, -1, [8783]), initValues(_3C_classLit, 42, -1, [1045]), initValues(_3C_classLit, 42, -1, [306]), initValues(_3C_classLit, 42, -1, [1025]), initValues(_3C_classLit, 42, -1, [205]), initValues(_3C_classLit, 42, -1, [205]), initValues(_3C_classLit, 42, -1, [206]), initValues(_3C_classLit, 42, -1, [206]), initValues(_3C_classLit, 42, -1, [1048]), initValues(_3C_classLit, 42, -1, [304]), initValues(_3C_classLit, 42, -1, [8465]), initValues(_3C_classLit, 42, -1, [204]), initValues(_3C_classLit, 42, -1, [204]), initValues(_3C_classLit, 42, -1, [8465]), initValues(_3C_classLit, 42, -1, [298]), initValues(_3C_classLit, 42, -1, [8520]), initValues(_3C_classLit, 42, -1, [8658]), initValues(_3C_classLit, 42, -1, [8748]), initValues(_3C_classLit, 42, -1, [8747]), initValues(_3C_classLit, 42, -1, [8898]), initValues(_3C_classLit, 42, -1, [8291]), initValues(_3C_classLit, 42, -1, [8290]), initValues(_3C_classLit, 42, -1, [302]), initValues(_3C_classLit, 42, -1, [55349, 56640]), initValues(_3C_classLit, 42, -1, [921]), initValues(_3C_classLit, 42, -1, [8464]), initValues(_3C_classLit, 42, -1, [296]), initValues(_3C_classLit, 42, -1, [1030]), initValues(_3C_classLit, 42, -1, [207]), initValues(_3C_classLit, 42, -1, [207]), initValues(_3C_classLit, 42, -1, [308]), initValues(_3C_classLit, 42, -1, [1049]), initValues(_3C_classLit, 42, -1, [55349, 56589]), initValues(_3C_classLit, 42, -1, [55349, 56641]), initValues(_3C_classLit, 42, -1, [55349, 56485]), initValues(_3C_classLit, 42, -1, [1032]), initValues(_3C_classLit, 42, -1, [1028]), initValues(_3C_classLit, 42, -1, [1061]), initValues(_3C_classLit, 42, -1, [1036]), initValues(_3C_classLit, 42, -1, [922]), initValues(_3C_classLit, 42, -1, [310]), initValues(_3C_classLit, 42, -1, [1050]), initValues(_3C_classLit, 42, -1, [55349, 56590]), initValues(_3C_classLit, 42, -1, [55349, 56642]), initValues(_3C_classLit, 42, -1, [55349, 56486]), initValues(_3C_classLit, 42, -1, [1033]), initValues(_3C_classLit, 42, -1, [60]), initValues(_3C_classLit, 42, -1, [60]), initValues(_3C_classLit, 42, -1, [313]), initValues(_3C_classLit, 42, -1, [923]), initValues(_3C_classLit, 42, -1, [10218]), initValues(_3C_classLit, 42, -1, [8466]), initValues(_3C_classLit, 42, -1, [8606]), initValues(_3C_classLit, 42, -1, [317]), initValues(_3C_classLit, 42, -1, [315]), initValues(_3C_classLit, 42, -1, [1051]), initValues(_3C_classLit, 42, -1, [10216]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8676]), initValues(_3C_classLit, 42, -1, [8646]), initValues(_3C_classLit, 42, -1, [8968]), initValues(_3C_classLit, 42, -1, [10214]), initValues(_3C_classLit, 42, -1, [10593]), initValues(_3C_classLit, 42, -1, [8643]), initValues(_3C_classLit, 42, -1, [10585]), initValues(_3C_classLit, 42, -1, [8970]), initValues(_3C_classLit, 42, -1, [8596]), initValues(_3C_classLit, 42, -1, [10574]), initValues(_3C_classLit, 42, -1, [8867]), initValues(_3C_classLit, 42, -1, [8612]), initValues(_3C_classLit, 42, -1, [10586]), initValues(_3C_classLit, 42, -1, [8882]), initValues(_3C_classLit, 42, -1, [10703]), initValues(_3C_classLit, 42, -1, [8884]), initValues(_3C_classLit, 42, -1, [10577]), initValues(_3C_classLit, 42, -1, [10592]), initValues(_3C_classLit, 42, -1, [8639]), initValues(_3C_classLit, 42, -1, [10584]), initValues(_3C_classLit, 42, -1, [8636]), initValues(_3C_classLit, 42, -1, [10578]), initValues(_3C_classLit, 42, -1, [8656]), initValues(_3C_classLit, 42, -1, [8660]), initValues(_3C_classLit, 42, -1, [8922]), initValues(_3C_classLit, 42, -1, [8806]), initValues(_3C_classLit, 42, -1, [8822]), initValues(_3C_classLit, 42, -1, [10913]), initValues(_3C_classLit, 42, -1, [10877]), initValues(_3C_classLit, 42, -1, [8818]), initValues(_3C_classLit, 42, -1, [55349, 56591]), initValues(_3C_classLit, 42, -1, [8920]), initValues(_3C_classLit, 42, -1, [8666]), initValues(_3C_classLit, 42, -1, [319]), initValues(_3C_classLit, 42, -1, [10229]), initValues(_3C_classLit, 42, -1, [10231]), initValues(_3C_classLit, 42, -1, [10230]), initValues(_3C_classLit, 42, -1, [10232]), initValues(_3C_classLit, 42, -1, [10234]), initValues(_3C_classLit, 42, -1, [10233]), initValues(_3C_classLit, 42, -1, [55349, 56643]), initValues(_3C_classLit, 42, -1, [8601]), initValues(_3C_classLit, 42, -1, [8600]), initValues(_3C_classLit, 42, -1, [8466]), initValues(_3C_classLit, 42, -1, [8624]), initValues(_3C_classLit, 42, -1, [321]), initValues(_3C_classLit, 42, -1, [8810]), initValues(_3C_classLit, 42, -1, [10501]), initValues(_3C_classLit, 42, -1, [1052]), initValues(_3C_classLit, 42, -1, [8287]), initValues(_3C_classLit, 42, -1, [8499]), initValues(_3C_classLit, 42, -1, [55349, 56592]), initValues(_3C_classLit, 42, -1, [8723]), initValues(_3C_classLit, 42, -1, [55349, 56644]), initValues(_3C_classLit, 42, -1, [8499]), initValues(_3C_classLit, 42, -1, [924]), initValues(_3C_classLit, 42, -1, [1034]), initValues(_3C_classLit, 42, -1, [323]), initValues(_3C_classLit, 42, -1, [327]), initValues(_3C_classLit, 42, -1, [325]), initValues(_3C_classLit, 42, -1, [1053]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [8811]), initValues(_3C_classLit, 42, -1, [8810]), initValues(_3C_classLit, 42, -1, [10]), initValues(_3C_classLit, 42, -1, [55349, 56593]), initValues(_3C_classLit, 42, -1, [8288]), initValues(_3C_classLit, 42, -1, [160]), initValues(_3C_classLit, 42, -1, [8469]), initValues(_3C_classLit, 42, -1, [10988]), initValues(_3C_classLit, 42, -1, [8802]), initValues(_3C_classLit, 42, -1, [8813]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [8713]), initValues(_3C_classLit, 42, -1, [8800]), initValues(_3C_classLit, 42, -1, [8708]), initValues(_3C_classLit, 42, -1, [8815]), initValues(_3C_classLit, 42, -1, [8817]), initValues(_3C_classLit, 42, -1, [8825]), initValues(_3C_classLit, 42, -1, [8821]), initValues(_3C_classLit, 42, -1, [8938]), initValues(_3C_classLit, 42, -1, [8940]), initValues(_3C_classLit, 42, -1, [8814]), initValues(_3C_classLit, 42, -1, [8816]), initValues(_3C_classLit, 42, -1, [8824]), initValues(_3C_classLit, 42, -1, [8820]), initValues(_3C_classLit, 42, -1, [8832]), initValues(_3C_classLit, 42, -1, [8928]), initValues(_3C_classLit, 42, -1, [8716]), initValues(_3C_classLit, 42, -1, [8939]), initValues(_3C_classLit, 42, -1, [8941]), initValues(_3C_classLit, 42, -1, [8930]), initValues(_3C_classLit, 42, -1, [8931]), initValues(_3C_classLit, 42, -1, [8840]), initValues(_3C_classLit, 42, -1, [8833]), initValues(_3C_classLit, 42, -1, [8929]), initValues(_3C_classLit, 42, -1, [8841]), initValues(_3C_classLit, 42, -1, [8769]), initValues(_3C_classLit, 42, -1, [8772]), initValues(_3C_classLit, 42, -1, [8775]), initValues(_3C_classLit, 42, -1, [8777]), initValues(_3C_classLit, 42, -1, [8740]), initValues(_3C_classLit, 42, -1, [55349, 56489]), initValues(_3C_classLit, 42, -1, [209]), initValues(_3C_classLit, 42, -1, [209]), initValues(_3C_classLit, 42, -1, [925]), initValues(_3C_classLit, 42, -1, [338]), initValues(_3C_classLit, 42, -1, [211]), initValues(_3C_classLit, 42, -1, [211]), initValues(_3C_classLit, 42, -1, [212]), initValues(_3C_classLit, 42, -1, [212]), initValues(_3C_classLit, 42, -1, [1054]), initValues(_3C_classLit, 42, -1, [336]), initValues(_3C_classLit, 42, -1, [55349, 56594]), initValues(_3C_classLit, 42, -1, [210]), initValues(_3C_classLit, 42, -1, [210]), initValues(_3C_classLit, 42, -1, [332]), initValues(_3C_classLit, 42, -1, [937]), initValues(_3C_classLit, 42, -1, [927]), initValues(_3C_classLit, 42, -1, [55349, 56646]), initValues(_3C_classLit, 42, -1, [8220]), initValues(_3C_classLit, 42, -1, [8216]), initValues(_3C_classLit, 42, -1, [10836]), initValues(_3C_classLit, 42, -1, [55349, 56490]), initValues(_3C_classLit, 42, -1, [216]), initValues(_3C_classLit, 42, -1, [216]), initValues(_3C_classLit, 42, -1, [213]), initValues(_3C_classLit, 42, -1, [213]), initValues(_3C_classLit, 42, -1, [10807]), initValues(_3C_classLit, 42, -1, [214]), initValues(_3C_classLit, 42, -1, [214]), initValues(_3C_classLit, 42, -1, [175]), initValues(_3C_classLit, 42, -1, [9182]), initValues(_3C_classLit, 42, -1, [9140]), initValues(_3C_classLit, 42, -1, [9180]), initValues(_3C_classLit, 42, -1, [8706]), initValues(_3C_classLit, 42, -1, [1055]), initValues(_3C_classLit, 42, -1, [55349, 56595]), initValues(_3C_classLit, 42, -1, [934]), initValues(_3C_classLit, 42, -1, [928]), initValues(_3C_classLit, 42, -1, [177]), initValues(_3C_classLit, 42, -1, [8460]), initValues(_3C_classLit, 42, -1, [8473]), initValues(_3C_classLit, 42, -1, [10939]), initValues(_3C_classLit, 42, -1, [8826]), initValues(_3C_classLit, 42, -1, [10927]), initValues(_3C_classLit, 42, -1, [8828]), initValues(_3C_classLit, 42, -1, [8830]), initValues(_3C_classLit, 42, -1, [8243]), initValues(_3C_classLit, 42, -1, [8719]), initValues(_3C_classLit, 42, -1, [8759]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [55349, 56491]), initValues(_3C_classLit, 42, -1, [936]), initValues(_3C_classLit, 42, -1, [34]), initValues(_3C_classLit, 42, -1, [34]), initValues(_3C_classLit, 42, -1, [55349, 56596]), initValues(_3C_classLit, 42, -1, [8474]), initValues(_3C_classLit, 42, -1, [55349, 56492]), initValues(_3C_classLit, 42, -1, [10512]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [340]), initValues(_3C_classLit, 42, -1, [10219]), initValues(_3C_classLit, 42, -1, [8608]), initValues(_3C_classLit, 42, -1, [10518]), initValues(_3C_classLit, 42, -1, [344]), initValues(_3C_classLit, 42, -1, [342]), initValues(_3C_classLit, 42, -1, [1056]), initValues(_3C_classLit, 42, -1, [8476]), initValues(_3C_classLit, 42, -1, [8715]), initValues(_3C_classLit, 42, -1, [8651]), initValues(_3C_classLit, 42, -1, [10607]), initValues(_3C_classLit, 42, -1, [8476]), initValues(_3C_classLit, 42, -1, [929]), initValues(_3C_classLit, 42, -1, [10217]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [8677]), initValues(_3C_classLit, 42, -1, [8644]), initValues(_3C_classLit, 42, -1, [8969]), initValues(_3C_classLit, 42, -1, [10215]), initValues(_3C_classLit, 42, -1, [10589]), initValues(_3C_classLit, 42, -1, [8642]), initValues(_3C_classLit, 42, -1, [10581]), initValues(_3C_classLit, 42, -1, [8971]), initValues(_3C_classLit, 42, -1, [8866]), initValues(_3C_classLit, 42, -1, [8614]), initValues(_3C_classLit, 42, -1, [10587]), initValues(_3C_classLit, 42, -1, [8883]), initValues(_3C_classLit, 42, -1, [10704]), initValues(_3C_classLit, 42, -1, [8885]), initValues(_3C_classLit, 42, -1, [10575]), initValues(_3C_classLit, 42, -1, [10588]), initValues(_3C_classLit, 42, -1, [8638]), initValues(_3C_classLit, 42, -1, [10580]), initValues(_3C_classLit, 42, -1, [8640]), initValues(_3C_classLit, 42, -1, [10579]), initValues(_3C_classLit, 42, -1, [8658]), initValues(_3C_classLit, 42, -1, [8477]), initValues(_3C_classLit, 42, -1, [10608]), initValues(_3C_classLit, 42, -1, [8667]), initValues(_3C_classLit, 42, -1, [8475]), initValues(_3C_classLit, 42, -1, [8625]), initValues(_3C_classLit, 42, -1, [10740]), initValues(_3C_classLit, 42, -1, [1065]), initValues(_3C_classLit, 42, -1, [1064]), initValues(_3C_classLit, 42, -1, [1068]), initValues(_3C_classLit, 42, -1, [346]), initValues(_3C_classLit, 42, -1, [10940]), initValues(_3C_classLit, 42, -1, [352]), initValues(_3C_classLit, 42, -1, [350]), initValues(_3C_classLit, 42, -1, [348]), initValues(_3C_classLit, 42, -1, [1057]), initValues(_3C_classLit, 42, -1, [55349, 56598]), initValues(_3C_classLit, 42, -1, [8595]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [8593]), initValues(_3C_classLit, 42, -1, [931]), initValues(_3C_classLit, 42, -1, [8728]), initValues(_3C_classLit, 42, -1, [55349, 56650]), initValues(_3C_classLit, 42, -1, [8730]), initValues(_3C_classLit, 42, -1, [9633]), initValues(_3C_classLit, 42, -1, [8851]), initValues(_3C_classLit, 42, -1, [8847]), initValues(_3C_classLit, 42, -1, [8849]), initValues(_3C_classLit, 42, -1, [8848]), initValues(_3C_classLit, 42, -1, [8850]), initValues(_3C_classLit, 42, -1, [8852]), initValues(_3C_classLit, 42, -1, [55349, 56494]), initValues(_3C_classLit, 42, -1, [8902]), initValues(_3C_classLit, 42, -1, [8912]), initValues(_3C_classLit, 42, -1, [8912]), initValues(_3C_classLit, 42, -1, [8838]), initValues(_3C_classLit, 42, -1, [8827]), initValues(_3C_classLit, 42, -1, [10928]), initValues(_3C_classLit, 42, -1, [8829]), initValues(_3C_classLit, 42, -1, [8831]), initValues(_3C_classLit, 42, -1, [8715]), initValues(_3C_classLit, 42, -1, [8721]), initValues(_3C_classLit, 42, -1, [8913]), initValues(_3C_classLit, 42, -1, [8835]), initValues(_3C_classLit, 42, -1, [8839]), initValues(_3C_classLit, 42, -1, [8913]), initValues(_3C_classLit, 42, -1, [222]), initValues(_3C_classLit, 42, -1, [222]), initValues(_3C_classLit, 42, -1, [8482]), initValues(_3C_classLit, 42, -1, [1035]), initValues(_3C_classLit, 42, -1, [1062]), initValues(_3C_classLit, 42, -1, [9]), initValues(_3C_classLit, 42, -1, [932]), initValues(_3C_classLit, 42, -1, [356]), initValues(_3C_classLit, 42, -1, [354]), initValues(_3C_classLit, 42, -1, [1058]), initValues(_3C_classLit, 42, -1, [55349, 56599]), initValues(_3C_classLit, 42, -1, [8756]), initValues(_3C_classLit, 42, -1, [920]), initValues(_3C_classLit, 42, -1, [8201]), initValues(_3C_classLit, 42, -1, [8764]), initValues(_3C_classLit, 42, -1, [8771]), initValues(_3C_classLit, 42, -1, [8773]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [55349, 56651]), initValues(_3C_classLit, 42, -1, [8411]), initValues(_3C_classLit, 42, -1, [55349, 56495]), initValues(_3C_classLit, 42, -1, [358]), initValues(_3C_classLit, 42, -1, [218]), initValues(_3C_classLit, 42, -1, [218]), initValues(_3C_classLit, 42, -1, [8607]), initValues(_3C_classLit, 42, -1, [10569]), initValues(_3C_classLit, 42, -1, [1038]), initValues(_3C_classLit, 42, -1, [364]), initValues(_3C_classLit, 42, -1, [219]), initValues(_3C_classLit, 42, -1, [219]), initValues(_3C_classLit, 42, -1, [1059]), initValues(_3C_classLit, 42, -1, [368]), initValues(_3C_classLit, 42, -1, [55349, 56600]), initValues(_3C_classLit, 42, -1, [217]), initValues(_3C_classLit, 42, -1, [217]), initValues(_3C_classLit, 42, -1, [362]), initValues(_3C_classLit, 42, -1, [818]), initValues(_3C_classLit, 42, -1, [9183]), initValues(_3C_classLit, 42, -1, [9141]), initValues(_3C_classLit, 42, -1, [9181]), initValues(_3C_classLit, 42, -1, [8899]), initValues(_3C_classLit, 42, -1, [8846]), initValues(_3C_classLit, 42, -1, [370]), initValues(_3C_classLit, 42, -1, [55349, 56652]), initValues(_3C_classLit, 42, -1, [8593]), initValues(_3C_classLit, 42, -1, [10514]), initValues(_3C_classLit, 42, -1, [8645]), initValues(_3C_classLit, 42, -1, [8597]), initValues(_3C_classLit, 42, -1, [10606]), initValues(_3C_classLit, 42, -1, [8869]), initValues(_3C_classLit, 42, -1, [8613]), initValues(_3C_classLit, 42, -1, [8657]), initValues(_3C_classLit, 42, -1, [8661]), initValues(_3C_classLit, 42, -1, [8598]), initValues(_3C_classLit, 42, -1, [8599]), initValues(_3C_classLit, 42, -1, [978]), initValues(_3C_classLit, 42, -1, [933]), initValues(_3C_classLit, 42, -1, [366]), initValues(_3C_classLit, 42, -1, [55349, 56496]), initValues(_3C_classLit, 42, -1, [360]), initValues(_3C_classLit, 42, -1, [220]), initValues(_3C_classLit, 42, -1, [220]), initValues(_3C_classLit, 42, -1, [8875]), initValues(_3C_classLit, 42, -1, [10987]), initValues(_3C_classLit, 42, -1, [1042]), initValues(_3C_classLit, 42, -1, [8873]), initValues(_3C_classLit, 42, -1, [10982]), initValues(_3C_classLit, 42, -1, [8897]), initValues(_3C_classLit, 42, -1, [8214]), initValues(_3C_classLit, 42, -1, [8214]), initValues(_3C_classLit, 42, -1, [8739]), initValues(_3C_classLit, 42, -1, [124]), initValues(_3C_classLit, 42, -1, [10072]), initValues(_3C_classLit, 42, -1, [8768]), initValues(_3C_classLit, 42, -1, [8202]), initValues(_3C_classLit, 42, -1, [55349, 56601]), initValues(_3C_classLit, 42, -1, [55349, 56653]), initValues(_3C_classLit, 42, -1, [55349, 56497]), initValues(_3C_classLit, 42, -1, [8874]), initValues(_3C_classLit, 42, -1, [372]), initValues(_3C_classLit, 42, -1, [8896]), initValues(_3C_classLit, 42, -1, [55349, 56602]), initValues(_3C_classLit, 42, -1, [55349, 56654]), initValues(_3C_classLit, 42, -1, [55349, 56498]), initValues(_3C_classLit, 42, -1, [55349, 56603]), initValues(_3C_classLit, 42, -1, [926]), initValues(_3C_classLit, 42, -1, [55349, 56655]), initValues(_3C_classLit, 42, -1, [55349, 56499]), initValues(_3C_classLit, 42, -1, [1071]), initValues(_3C_classLit, 42, -1, [1031]), initValues(_3C_classLit, 42, -1, [1070]), initValues(_3C_classLit, 42, -1, [221]), initValues(_3C_classLit, 42, -1, [221]), initValues(_3C_classLit, 42, -1, [374]), initValues(_3C_classLit, 42, -1, [1067]), initValues(_3C_classLit, 42, -1, [55349, 56604]), initValues(_3C_classLit, 42, -1, [55349, 56656]), initValues(_3C_classLit, 42, -1, [55349, 56500]), initValues(_3C_classLit, 42, -1, [376]), initValues(_3C_classLit, 42, -1, [1046]), initValues(_3C_classLit, 42, -1, [377]), initValues(_3C_classLit, 42, -1, [381]), initValues(_3C_classLit, 42, -1, [1047]), initValues(_3C_classLit, 42, -1, [379]), initValues(_3C_classLit, 42, -1, [8203]), initValues(_3C_classLit, 42, -1, [918]), initValues(_3C_classLit, 42, -1, [8488]), initValues(_3C_classLit, 42, -1, [8484]), initValues(_3C_classLit, 42, -1, [55349, 56501]), initValues(_3C_classLit, 42, -1, [225]), initValues(_3C_classLit, 42, -1, [225]), initValues(_3C_classLit, 42, -1, [259]), initValues(_3C_classLit, 42, -1, [8766]), initValues(_3C_classLit, 42, -1, [8767]), initValues(_3C_classLit, 42, -1, [226]), initValues(_3C_classLit, 42, -1, [226]), initValues(_3C_classLit, 42, -1, [180]), initValues(_3C_classLit, 42, -1, [180]), initValues(_3C_classLit, 42, -1, [1072]), initValues(_3C_classLit, 42, -1, [230]), initValues(_3C_classLit, 42, -1, [230]), initValues(_3C_classLit, 42, -1, [8289]), initValues(_3C_classLit, 42, -1, [55349, 56606]), initValues(_3C_classLit, 42, -1, [224]), initValues(_3C_classLit, 42, -1, [224]), initValues(_3C_classLit, 42, -1, [8501]), initValues(_3C_classLit, 42, -1, [8501]), initValues(_3C_classLit, 42, -1, [945]), initValues(_3C_classLit, 42, -1, [257]), initValues(_3C_classLit, 42, -1, [10815]), initValues(_3C_classLit, 42, -1, [38]), initValues(_3C_classLit, 42, -1, [38]), initValues(_3C_classLit, 42, -1, [8743]), initValues(_3C_classLit, 42, -1, [10837]), initValues(_3C_classLit, 42, -1, [10844]), initValues(_3C_classLit, 42, -1, [10840]), initValues(_3C_classLit, 42, -1, [10842]), initValues(_3C_classLit, 42, -1, [8736]), initValues(_3C_classLit, 42, -1, [10660]), initValues(_3C_classLit, 42, -1, [8736]), initValues(_3C_classLit, 42, -1, [8737]), initValues(_3C_classLit, 42, -1, [10664]), initValues(_3C_classLit, 42, -1, [10665]), initValues(_3C_classLit, 42, -1, [10666]), initValues(_3C_classLit, 42, -1, [10667]), initValues(_3C_classLit, 42, -1, [10668]), initValues(_3C_classLit, 42, -1, [10669]), initValues(_3C_classLit, 42, -1, [10670]), initValues(_3C_classLit, 42, -1, [10671]), initValues(_3C_classLit, 42, -1, [8735]), initValues(_3C_classLit, 42, -1, [8894]), initValues(_3C_classLit, 42, -1, [10653]), initValues(_3C_classLit, 42, -1, [8738]), initValues(_3C_classLit, 42, -1, [8491]), initValues(_3C_classLit, 42, -1, [9084]), initValues(_3C_classLit, 42, -1, [261]), initValues(_3C_classLit, 42, -1, [55349, 56658]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [10864]), initValues(_3C_classLit, 42, -1, [10863]), initValues(_3C_classLit, 42, -1, [8778]), initValues(_3C_classLit, 42, -1, [8779]), initValues(_3C_classLit, 42, -1, [39]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [8778]), initValues(_3C_classLit, 42, -1, [229]), initValues(_3C_classLit, 42, -1, [229]), initValues(_3C_classLit, 42, -1, [55349, 56502]), initValues(_3C_classLit, 42, -1, [42]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [8781]), initValues(_3C_classLit, 42, -1, [227]), initValues(_3C_classLit, 42, -1, [227]), initValues(_3C_classLit, 42, -1, [228]), initValues(_3C_classLit, 42, -1, [228]), initValues(_3C_classLit, 42, -1, [8755]), initValues(_3C_classLit, 42, -1, [10769]), initValues(_3C_classLit, 42, -1, [10989]), initValues(_3C_classLit, 42, -1, [8780]), initValues(_3C_classLit, 42, -1, [1014]), initValues(_3C_classLit, 42, -1, [8245]), initValues(_3C_classLit, 42, -1, [8765]), initValues(_3C_classLit, 42, -1, [8909]), initValues(_3C_classLit, 42, -1, [8893]), initValues(_3C_classLit, 42, -1, [8965]), initValues(_3C_classLit, 42, -1, [8965]), initValues(_3C_classLit, 42, -1, [9141]), initValues(_3C_classLit, 42, -1, [9142]), initValues(_3C_classLit, 42, -1, [8780]), initValues(_3C_classLit, 42, -1, [1073]), initValues(_3C_classLit, 42, -1, [8222]), initValues(_3C_classLit, 42, -1, [8757]), initValues(_3C_classLit, 42, -1, [8757]), initValues(_3C_classLit, 42, -1, [10672]), initValues(_3C_classLit, 42, -1, [1014]), initValues(_3C_classLit, 42, -1, [8492]), initValues(_3C_classLit, 42, -1, [946]), initValues(_3C_classLit, 42, -1, [8502]), initValues(_3C_classLit, 42, -1, [8812]), initValues(_3C_classLit, 42, -1, [55349, 56607]), initValues(_3C_classLit, 42, -1, [8898]), initValues(_3C_classLit, 42, -1, [9711]), initValues(_3C_classLit, 42, -1, [8899]), initValues(_3C_classLit, 42, -1, [10752]), initValues(_3C_classLit, 42, -1, [10753]), initValues(_3C_classLit, 42, -1, [10754]), initValues(_3C_classLit, 42, -1, [10758]), initValues(_3C_classLit, 42, -1, [9733]), initValues(_3C_classLit, 42, -1, [9661]), initValues(_3C_classLit, 42, -1, [9651]), initValues(_3C_classLit, 42, -1, [10756]), initValues(_3C_classLit, 42, -1, [8897]), initValues(_3C_classLit, 42, -1, [8896]), initValues(_3C_classLit, 42, -1, [10509]), initValues(_3C_classLit, 42, -1, [10731]), initValues(_3C_classLit, 42, -1, [9642]), initValues(_3C_classLit, 42, -1, [9652]), initValues(_3C_classLit, 42, -1, [9662]), initValues(_3C_classLit, 42, -1, [9666]), initValues(_3C_classLit, 42, -1, [9656]), initValues(_3C_classLit, 42, -1, [9251]), initValues(_3C_classLit, 42, -1, [9618]), initValues(_3C_classLit, 42, -1, [9617]), initValues(_3C_classLit, 42, -1, [9619]), initValues(_3C_classLit, 42, -1, [9608]), initValues(_3C_classLit, 42, -1, [8976]), initValues(_3C_classLit, 42, -1, [55349, 56659]), initValues(_3C_classLit, 42, -1, [8869]), initValues(_3C_classLit, 42, -1, [8869]), initValues(_3C_classLit, 42, -1, [8904]), initValues(_3C_classLit, 42, -1, [9559]), initValues(_3C_classLit, 42, -1, [9556]), initValues(_3C_classLit, 42, -1, [9558]), initValues(_3C_classLit, 42, -1, [9555]), initValues(_3C_classLit, 42, -1, [9552]), initValues(_3C_classLit, 42, -1, [9574]), initValues(_3C_classLit, 42, -1, [9577]), initValues(_3C_classLit, 42, -1, [9572]), initValues(_3C_classLit, 42, -1, [9575]), initValues(_3C_classLit, 42, -1, [9565]), initValues(_3C_classLit, 42, -1, [9562]), initValues(_3C_classLit, 42, -1, [9564]), initValues(_3C_classLit, 42, -1, [9561]), initValues(_3C_classLit, 42, -1, [9553]), initValues(_3C_classLit, 42, -1, [9580]), initValues(_3C_classLit, 42, -1, [9571]), initValues(_3C_classLit, 42, -1, [9568]), initValues(_3C_classLit, 42, -1, [9579]), initValues(_3C_classLit, 42, -1, [9570]), initValues(_3C_classLit, 42, -1, [9567]), initValues(_3C_classLit, 42, -1, [10697]), initValues(_3C_classLit, 42, -1, [9557]), initValues(_3C_classLit, 42, -1, [9554]), initValues(_3C_classLit, 42, -1, [9488]), initValues(_3C_classLit, 42, -1, [9484]), initValues(_3C_classLit, 42, -1, [9472]), initValues(_3C_classLit, 42, -1, [9573]), initValues(_3C_classLit, 42, -1, [9576]), initValues(_3C_classLit, 42, -1, [9516]), initValues(_3C_classLit, 42, -1, [9524]), initValues(_3C_classLit, 42, -1, [8863]), initValues(_3C_classLit, 42, -1, [8862]), initValues(_3C_classLit, 42, -1, [8864]), initValues(_3C_classLit, 42, -1, [9563]), initValues(_3C_classLit, 42, -1, [9560]), initValues(_3C_classLit, 42, -1, [9496]), initValues(_3C_classLit, 42, -1, [9492]), initValues(_3C_classLit, 42, -1, [9474]), initValues(_3C_classLit, 42, -1, [9578]), initValues(_3C_classLit, 42, -1, [9569]), initValues(_3C_classLit, 42, -1, [9566]), initValues(_3C_classLit, 42, -1, [9532]), initValues(_3C_classLit, 42, -1, [9508]), initValues(_3C_classLit, 42, -1, [9500]), initValues(_3C_classLit, 42, -1, [8245]), initValues(_3C_classLit, 42, -1, [728]), initValues(_3C_classLit, 42, -1, [166]), initValues(_3C_classLit, 42, -1, [166]), initValues(_3C_classLit, 42, -1, [55349, 56503]), initValues(_3C_classLit, 42, -1, [8271]), initValues(_3C_classLit, 42, -1, [8765]), initValues(_3C_classLit, 42, -1, [8909]), initValues(_3C_classLit, 42, -1, [92]), initValues(_3C_classLit, 42, -1, [10693]), initValues(_3C_classLit, 42, -1, [8226]), initValues(_3C_classLit, 42, -1, [8226]), initValues(_3C_classLit, 42, -1, [8782]), initValues(_3C_classLit, 42, -1, [10926]), initValues(_3C_classLit, 42, -1, [8783]), initValues(_3C_classLit, 42, -1, [8783]), initValues(_3C_classLit, 42, -1, [263]), initValues(_3C_classLit, 42, -1, [8745]), initValues(_3C_classLit, 42, -1, [10820]), initValues(_3C_classLit, 42, -1, [10825]), initValues(_3C_classLit, 42, -1, [10827]), initValues(_3C_classLit, 42, -1, [10823]), initValues(_3C_classLit, 42, -1, [10816]), initValues(_3C_classLit, 42, -1, [8257]), initValues(_3C_classLit, 42, -1, [711]), initValues(_3C_classLit, 42, -1, [10829]), initValues(_3C_classLit, 42, -1, [269]), initValues(_3C_classLit, 42, -1, [231]), initValues(_3C_classLit, 42, -1, [231]), initValues(_3C_classLit, 42, -1, [265]), initValues(_3C_classLit, 42, -1, [10828]), initValues(_3C_classLit, 42, -1, [10832]), initValues(_3C_classLit, 42, -1, [267]), initValues(_3C_classLit, 42, -1, [184]), initValues(_3C_classLit, 42, -1, [184]), initValues(_3C_classLit, 42, -1, [10674]), initValues(_3C_classLit, 42, -1, [162]), initValues(_3C_classLit, 42, -1, [162]), initValues(_3C_classLit, 42, -1, [183]), initValues(_3C_classLit, 42, -1, [55349, 56608]), initValues(_3C_classLit, 42, -1, [1095]), initValues(_3C_classLit, 42, -1, [10003]), initValues(_3C_classLit, 42, -1, [10003]), initValues(_3C_classLit, 42, -1, [967]), initValues(_3C_classLit, 42, -1, [9675]), initValues(_3C_classLit, 42, -1, [10691]), initValues(_3C_classLit, 42, -1, [710]), initValues(_3C_classLit, 42, -1, [8791]), initValues(_3C_classLit, 42, -1, [8634]), initValues(_3C_classLit, 42, -1, [8635]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [9416]), initValues(_3C_classLit, 42, -1, [8859]), initValues(_3C_classLit, 42, -1, [8858]), initValues(_3C_classLit, 42, -1, [8861]), initValues(_3C_classLit, 42, -1, [8791]), initValues(_3C_classLit, 42, -1, [10768]), initValues(_3C_classLit, 42, -1, [10991]), initValues(_3C_classLit, 42, -1, [10690]), initValues(_3C_classLit, 42, -1, [9827]), initValues(_3C_classLit, 42, -1, [9827]), initValues(_3C_classLit, 42, -1, [58]), initValues(_3C_classLit, 42, -1, [8788]), initValues(_3C_classLit, 42, -1, [8788]), initValues(_3C_classLit, 42, -1, [44]), initValues(_3C_classLit, 42, -1, [64]), initValues(_3C_classLit, 42, -1, [8705]), initValues(_3C_classLit, 42, -1, [8728]), initValues(_3C_classLit, 42, -1, [8705]), initValues(_3C_classLit, 42, -1, [8450]), initValues(_3C_classLit, 42, -1, [8773]), initValues(_3C_classLit, 42, -1, [10861]), initValues(_3C_classLit, 42, -1, [8750]), initValues(_3C_classLit, 42, -1, [55349, 56660]), initValues(_3C_classLit, 42, -1, [8720]), initValues(_3C_classLit, 42, -1, [169]), initValues(_3C_classLit, 42, -1, [169]), initValues(_3C_classLit, 42, -1, [8471]), initValues(_3C_classLit, 42, -1, [8629]), initValues(_3C_classLit, 42, -1, [10007]), initValues(_3C_classLit, 42, -1, [55349, 56504]), initValues(_3C_classLit, 42, -1, [10959]), initValues(_3C_classLit, 42, -1, [10961]), initValues(_3C_classLit, 42, -1, [10960]), initValues(_3C_classLit, 42, -1, [10962]), initValues(_3C_classLit, 42, -1, [8943]), initValues(_3C_classLit, 42, -1, [10552]), initValues(_3C_classLit, 42, -1, [10549]), initValues(_3C_classLit, 42, -1, [8926]), initValues(_3C_classLit, 42, -1, [8927]), initValues(_3C_classLit, 42, -1, [8630]), initValues(_3C_classLit, 42, -1, [10557]), initValues(_3C_classLit, 42, -1, [8746]), initValues(_3C_classLit, 42, -1, [10824]), initValues(_3C_classLit, 42, -1, [10822]), initValues(_3C_classLit, 42, -1, [10826]), initValues(_3C_classLit, 42, -1, [8845]), initValues(_3C_classLit, 42, -1, [10821]), initValues(_3C_classLit, 42, -1, [8631]), initValues(_3C_classLit, 42, -1, [10556]), initValues(_3C_classLit, 42, -1, [8926]), initValues(_3C_classLit, 42, -1, [8927]), initValues(_3C_classLit, 42, -1, [8910]), initValues(_3C_classLit, 42, -1, [8911]), initValues(_3C_classLit, 42, -1, [164]), initValues(_3C_classLit, 42, -1, [164]), initValues(_3C_classLit, 42, -1, [8630]), initValues(_3C_classLit, 42, -1, [8631]), initValues(_3C_classLit, 42, -1, [8910]), initValues(_3C_classLit, 42, -1, [8911]), initValues(_3C_classLit, 42, -1, [8754]), initValues(_3C_classLit, 42, -1, [8753]), initValues(_3C_classLit, 42, -1, [9005]), initValues(_3C_classLit, 42, -1, [8659]), initValues(_3C_classLit, 42, -1, [10597]), initValues(_3C_classLit, 42, -1, [8224]), initValues(_3C_classLit, 42, -1, [8504]), initValues(_3C_classLit, 42, -1, [8595]), initValues(_3C_classLit, 42, -1, [8208]), initValues(_3C_classLit, 42, -1, [8867]), initValues(_3C_classLit, 42, -1, [10511]), initValues(_3C_classLit, 42, -1, [733]), initValues(_3C_classLit, 42, -1, [271]), initValues(_3C_classLit, 42, -1, [1076]), initValues(_3C_classLit, 42, -1, [8518]), initValues(_3C_classLit, 42, -1, [8225]), initValues(_3C_classLit, 42, -1, [8650]), initValues(_3C_classLit, 42, -1, [10871]), initValues(_3C_classLit, 42, -1, [176]), initValues(_3C_classLit, 42, -1, [176]), initValues(_3C_classLit, 42, -1, [948]), initValues(_3C_classLit, 42, -1, [10673]), initValues(_3C_classLit, 42, -1, [10623]), initValues(_3C_classLit, 42, -1, [55349, 56609]), initValues(_3C_classLit, 42, -1, [8643]), initValues(_3C_classLit, 42, -1, [8642]), initValues(_3C_classLit, 42, -1, [8900]), initValues(_3C_classLit, 42, -1, [8900]), initValues(_3C_classLit, 42, -1, [9830]), initValues(_3C_classLit, 42, -1, [9830]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [989]), initValues(_3C_classLit, 42, -1, [8946]), initValues(_3C_classLit, 42, -1, [247]), initValues(_3C_classLit, 42, -1, [247]), initValues(_3C_classLit, 42, -1, [247]), initValues(_3C_classLit, 42, -1, [8903]), initValues(_3C_classLit, 42, -1, [8903]), initValues(_3C_classLit, 42, -1, [1106]), initValues(_3C_classLit, 42, -1, [8990]), initValues(_3C_classLit, 42, -1, [8973]), initValues(_3C_classLit, 42, -1, [36]), initValues(_3C_classLit, 42, -1, [55349, 56661]), initValues(_3C_classLit, 42, -1, [729]), initValues(_3C_classLit, 42, -1, [8784]), initValues(_3C_classLit, 42, -1, [8785]), initValues(_3C_classLit, 42, -1, [8760]), initValues(_3C_classLit, 42, -1, [8724]), initValues(_3C_classLit, 42, -1, [8865]), initValues(_3C_classLit, 42, -1, [8966]), initValues(_3C_classLit, 42, -1, [8595]), initValues(_3C_classLit, 42, -1, [8650]), initValues(_3C_classLit, 42, -1, [8643]), initValues(_3C_classLit, 42, -1, [8642]), initValues(_3C_classLit, 42, -1, [10512]), initValues(_3C_classLit, 42, -1, [8991]), initValues(_3C_classLit, 42, -1, [8972]), initValues(_3C_classLit, 42, -1, [55349, 56505]), initValues(_3C_classLit, 42, -1, [1109]), initValues(_3C_classLit, 42, -1, [10742]), initValues(_3C_classLit, 42, -1, [273]), initValues(_3C_classLit, 42, -1, [8945]), initValues(_3C_classLit, 42, -1, [9663]), initValues(_3C_classLit, 42, -1, [9662]), initValues(_3C_classLit, 42, -1, [8693]), initValues(_3C_classLit, 42, -1, [10607]), initValues(_3C_classLit, 42, -1, [10662]), initValues(_3C_classLit, 42, -1, [1119]), initValues(_3C_classLit, 42, -1, [10239]), initValues(_3C_classLit, 42, -1, [10871]), initValues(_3C_classLit, 42, -1, [8785]), initValues(_3C_classLit, 42, -1, [233]), initValues(_3C_classLit, 42, -1, [233]), initValues(_3C_classLit, 42, -1, [10862]), initValues(_3C_classLit, 42, -1, [283]), initValues(_3C_classLit, 42, -1, [8790]), initValues(_3C_classLit, 42, -1, [234]), initValues(_3C_classLit, 42, -1, [234]), initValues(_3C_classLit, 42, -1, [8789]), initValues(_3C_classLit, 42, -1, [1101]), initValues(_3C_classLit, 42, -1, [279]), initValues(_3C_classLit, 42, -1, [8519]), initValues(_3C_classLit, 42, -1, [8786]), initValues(_3C_classLit, 42, -1, [55349, 56610]), initValues(_3C_classLit, 42, -1, [10906]), initValues(_3C_classLit, 42, -1, [232]), initValues(_3C_classLit, 42, -1, [232]), initValues(_3C_classLit, 42, -1, [10902]), initValues(_3C_classLit, 42, -1, [10904]), initValues(_3C_classLit, 42, -1, [10905]), initValues(_3C_classLit, 42, -1, [9191]), initValues(_3C_classLit, 42, -1, [8467]), initValues(_3C_classLit, 42, -1, [10901]), initValues(_3C_classLit, 42, -1, [10903]), initValues(_3C_classLit, 42, -1, [275]), initValues(_3C_classLit, 42, -1, [8709]), initValues(_3C_classLit, 42, -1, [8709]), initValues(_3C_classLit, 42, -1, [8709]), initValues(_3C_classLit, 42, -1, [8196]), initValues(_3C_classLit, 42, -1, [8197]), initValues(_3C_classLit, 42, -1, [8195]), initValues(_3C_classLit, 42, -1, [331]), initValues(_3C_classLit, 42, -1, [8194]), initValues(_3C_classLit, 42, -1, [281]), initValues(_3C_classLit, 42, -1, [55349, 56662]), initValues(_3C_classLit, 42, -1, [8917]), initValues(_3C_classLit, 42, -1, [10723]), initValues(_3C_classLit, 42, -1, [10865]), initValues(_3C_classLit, 42, -1, [1013]), initValues(_3C_classLit, 42, -1, [949]), initValues(_3C_classLit, 42, -1, [949]), initValues(_3C_classLit, 42, -1, [8790]), initValues(_3C_classLit, 42, -1, [8789]), initValues(_3C_classLit, 42, -1, [8770]), initValues(_3C_classLit, 42, -1, [10902]), initValues(_3C_classLit, 42, -1, [10901]), initValues(_3C_classLit, 42, -1, [61]), initValues(_3C_classLit, 42, -1, [8799]), initValues(_3C_classLit, 42, -1, [8801]), initValues(_3C_classLit, 42, -1, [10872]), initValues(_3C_classLit, 42, -1, [10725]), initValues(_3C_classLit, 42, -1, [8787]), initValues(_3C_classLit, 42, -1, [10609]), initValues(_3C_classLit, 42, -1, [8495]), initValues(_3C_classLit, 42, -1, [8784]), initValues(_3C_classLit, 42, -1, [8770]), initValues(_3C_classLit, 42, -1, [951]), initValues(_3C_classLit, 42, -1, [240]), initValues(_3C_classLit, 42, -1, [240]), initValues(_3C_classLit, 42, -1, [235]), initValues(_3C_classLit, 42, -1, [235]), initValues(_3C_classLit, 42, -1, [8364]), initValues(_3C_classLit, 42, -1, [33]), initValues(_3C_classLit, 42, -1, [8707]), initValues(_3C_classLit, 42, -1, [8496]), initValues(_3C_classLit, 42, -1, [8519]), initValues(_3C_classLit, 42, -1, [8786]), initValues(_3C_classLit, 42, -1, [1092]), initValues(_3C_classLit, 42, -1, [9792]), initValues(_3C_classLit, 42, -1, [64259]), initValues(_3C_classLit, 42, -1, [64256]), initValues(_3C_classLit, 42, -1, [64260]), initValues(_3C_classLit, 42, -1, [55349, 56611]), initValues(_3C_classLit, 42, -1, [64257]), initValues(_3C_classLit, 42, -1, [9837]), initValues(_3C_classLit, 42, -1, [64258]), initValues(_3C_classLit, 42, -1, [9649]), initValues(_3C_classLit, 42, -1, [402]), initValues(_3C_classLit, 42, -1, [55349, 56663]), initValues(_3C_classLit, 42, -1, [8704]), initValues(_3C_classLit, 42, -1, [8916]), initValues(_3C_classLit, 42, -1, [10969]), initValues(_3C_classLit, 42, -1, [10765]), initValues(_3C_classLit, 42, -1, [189]), initValues(_3C_classLit, 42, -1, [189]), initValues(_3C_classLit, 42, -1, [8531]), initValues(_3C_classLit, 42, -1, [188]), initValues(_3C_classLit, 42, -1, [188]), initValues(_3C_classLit, 42, -1, [8533]), initValues(_3C_classLit, 42, -1, [8537]), initValues(_3C_classLit, 42, -1, [8539]), initValues(_3C_classLit, 42, -1, [8532]), initValues(_3C_classLit, 42, -1, [8534]), initValues(_3C_classLit, 42, -1, [190]), initValues(_3C_classLit, 42, -1, [190]), initValues(_3C_classLit, 42, -1, [8535]), initValues(_3C_classLit, 42, -1, [8540]), initValues(_3C_classLit, 42, -1, [8536]), initValues(_3C_classLit, 42, -1, [8538]), initValues(_3C_classLit, 42, -1, [8541]), initValues(_3C_classLit, 42, -1, [8542]), initValues(_3C_classLit, 42, -1, [8260]), initValues(_3C_classLit, 42, -1, [8994]), initValues(_3C_classLit, 42, -1, [55349, 56507]), initValues(_3C_classLit, 42, -1, [8807]), initValues(_3C_classLit, 42, -1, [10892]), initValues(_3C_classLit, 42, -1, [501]), initValues(_3C_classLit, 42, -1, [947]), initValues(_3C_classLit, 42, -1, [989]), initValues(_3C_classLit, 42, -1, [10886]), initValues(_3C_classLit, 42, -1, [287]), initValues(_3C_classLit, 42, -1, [285]), initValues(_3C_classLit, 42, -1, [1075]), initValues(_3C_classLit, 42, -1, [289]), initValues(_3C_classLit, 42, -1, [8805]), initValues(_3C_classLit, 42, -1, [8923]), initValues(_3C_classLit, 42, -1, [8805]), initValues(_3C_classLit, 42, -1, [8807]), initValues(_3C_classLit, 42, -1, [10878]), initValues(_3C_classLit, 42, -1, [10878]), initValues(_3C_classLit, 42, -1, [10921]), initValues(_3C_classLit, 42, -1, [10880]), initValues(_3C_classLit, 42, -1, [10882]), initValues(_3C_classLit, 42, -1, [10884]), initValues(_3C_classLit, 42, -1, [10900]), initValues(_3C_classLit, 42, -1, [55349, 56612]), initValues(_3C_classLit, 42, -1, [8811]), initValues(_3C_classLit, 42, -1, [8921]), initValues(_3C_classLit, 42, -1, [8503]), initValues(_3C_classLit, 42, -1, [1107]), initValues(_3C_classLit, 42, -1, [8823]), initValues(_3C_classLit, 42, -1, [10898]), initValues(_3C_classLit, 42, -1, [10917]), initValues(_3C_classLit, 42, -1, [10916]), initValues(_3C_classLit, 42, -1, [8809]), initValues(_3C_classLit, 42, -1, [10890]), initValues(_3C_classLit, 42, -1, [10890]), initValues(_3C_classLit, 42, -1, [10888]), initValues(_3C_classLit, 42, -1, [10888]), initValues(_3C_classLit, 42, -1, [8809]), initValues(_3C_classLit, 42, -1, [8935]), initValues(_3C_classLit, 42, -1, [55349, 56664]), initValues(_3C_classLit, 42, -1, [96]), initValues(_3C_classLit, 42, -1, [8458]), initValues(_3C_classLit, 42, -1, [8819]), initValues(_3C_classLit, 42, -1, [10894]), initValues(_3C_classLit, 42, -1, [10896]), initValues(_3C_classLit, 42, -1, [62]), initValues(_3C_classLit, 42, -1, [62]), initValues(_3C_classLit, 42, -1, [10919]), initValues(_3C_classLit, 42, -1, [10874]), initValues(_3C_classLit, 42, -1, [8919]), initValues(_3C_classLit, 42, -1, [10645]), initValues(_3C_classLit, 42, -1, [10876]), initValues(_3C_classLit, 42, -1, [10886]), initValues(_3C_classLit, 42, -1, [10616]), initValues(_3C_classLit, 42, -1, [8919]), initValues(_3C_classLit, 42, -1, [8923]), initValues(_3C_classLit, 42, -1, [10892]), initValues(_3C_classLit, 42, -1, [8823]), initValues(_3C_classLit, 42, -1, [8819]), initValues(_3C_classLit, 42, -1, [8660]), initValues(_3C_classLit, 42, -1, [8202]), initValues(_3C_classLit, 42, -1, [189]), initValues(_3C_classLit, 42, -1, [8459]), initValues(_3C_classLit, 42, -1, [1098]), initValues(_3C_classLit, 42, -1, [8596]), initValues(_3C_classLit, 42, -1, [10568]), initValues(_3C_classLit, 42, -1, [8621]), initValues(_3C_classLit, 42, -1, [8463]), initValues(_3C_classLit, 42, -1, [293]), initValues(_3C_classLit, 42, -1, [9829]), initValues(_3C_classLit, 42, -1, [9829]), initValues(_3C_classLit, 42, -1, [8230]), initValues(_3C_classLit, 42, -1, [8889]), initValues(_3C_classLit, 42, -1, [55349, 56613]), initValues(_3C_classLit, 42, -1, [10533]), initValues(_3C_classLit, 42, -1, [10534]), initValues(_3C_classLit, 42, -1, [8703]), initValues(_3C_classLit, 42, -1, [8763]), initValues(_3C_classLit, 42, -1, [8617]), initValues(_3C_classLit, 42, -1, [8618]), initValues(_3C_classLit, 42, -1, [55349, 56665]), initValues(_3C_classLit, 42, -1, [8213]), initValues(_3C_classLit, 42, -1, [55349, 56509]), initValues(_3C_classLit, 42, -1, [8463]), initValues(_3C_classLit, 42, -1, [295]), initValues(_3C_classLit, 42, -1, [8259]), initValues(_3C_classLit, 42, -1, [8208]), initValues(_3C_classLit, 42, -1, [237]), initValues(_3C_classLit, 42, -1, [237]), initValues(_3C_classLit, 42, -1, [8291]), initValues(_3C_classLit, 42, -1, [238]), initValues(_3C_classLit, 42, -1, [238]), initValues(_3C_classLit, 42, -1, [1080]), initValues(_3C_classLit, 42, -1, [1077]), initValues(_3C_classLit, 42, -1, [161]), initValues(_3C_classLit, 42, -1, [161]), initValues(_3C_classLit, 42, -1, [8660]), initValues(_3C_classLit, 42, -1, [55349, 56614]), initValues(_3C_classLit, 42, -1, [236]), initValues(_3C_classLit, 42, -1, [236]), initValues(_3C_classLit, 42, -1, [8520]), initValues(_3C_classLit, 42, -1, [10764]), initValues(_3C_classLit, 42, -1, [8749]), initValues(_3C_classLit, 42, -1, [10716]), initValues(_3C_classLit, 42, -1, [8489]), initValues(_3C_classLit, 42, -1, [307]), initValues(_3C_classLit, 42, -1, [299]), initValues(_3C_classLit, 42, -1, [8465]), initValues(_3C_classLit, 42, -1, [8464]), initValues(_3C_classLit, 42, -1, [8465]), initValues(_3C_classLit, 42, -1, [305]), initValues(_3C_classLit, 42, -1, [8887]), initValues(_3C_classLit, 42, -1, [437]), initValues(_3C_classLit, 42, -1, [8712]), initValues(_3C_classLit, 42, -1, [8453]), initValues(_3C_classLit, 42, -1, [8734]), initValues(_3C_classLit, 42, -1, [10717]), initValues(_3C_classLit, 42, -1, [305]), initValues(_3C_classLit, 42, -1, [8747]), initValues(_3C_classLit, 42, -1, [8890]), initValues(_3C_classLit, 42, -1, [8484]), initValues(_3C_classLit, 42, -1, [8890]), initValues(_3C_classLit, 42, -1, [10775]), initValues(_3C_classLit, 42, -1, [10812]), initValues(_3C_classLit, 42, -1, [1105]), initValues(_3C_classLit, 42, -1, [303]), initValues(_3C_classLit, 42, -1, [55349, 56666]), initValues(_3C_classLit, 42, -1, [953]), initValues(_3C_classLit, 42, -1, [10812]), initValues(_3C_classLit, 42, -1, [191]), initValues(_3C_classLit, 42, -1, [191]), initValues(_3C_classLit, 42, -1, [55349, 56510]), initValues(_3C_classLit, 42, -1, [8712]), initValues(_3C_classLit, 42, -1, [8953]), initValues(_3C_classLit, 42, -1, [8949]), initValues(_3C_classLit, 42, -1, [8948]), initValues(_3C_classLit, 42, -1, [8947]), initValues(_3C_classLit, 42, -1, [8712]), initValues(_3C_classLit, 42, -1, [8290]), initValues(_3C_classLit, 42, -1, [297]), initValues(_3C_classLit, 42, -1, [1110]), initValues(_3C_classLit, 42, -1, [239]), initValues(_3C_classLit, 42, -1, [239]), initValues(_3C_classLit, 42, -1, [309]), initValues(_3C_classLit, 42, -1, [1081]), initValues(_3C_classLit, 42, -1, [55349, 56615]), initValues(_3C_classLit, 42, -1, [567]), initValues(_3C_classLit, 42, -1, [55349, 56667]), initValues(_3C_classLit, 42, -1, [55349, 56511]), initValues(_3C_classLit, 42, -1, [1112]), initValues(_3C_classLit, 42, -1, [1108]), initValues(_3C_classLit, 42, -1, [954]), initValues(_3C_classLit, 42, -1, [1008]), initValues(_3C_classLit, 42, -1, [311]), initValues(_3C_classLit, 42, -1, [1082]), initValues(_3C_classLit, 42, -1, [55349, 56616]), initValues(_3C_classLit, 42, -1, [312]), initValues(_3C_classLit, 42, -1, [1093]), initValues(_3C_classLit, 42, -1, [1116]), initValues(_3C_classLit, 42, -1, [55349, 56668]), initValues(_3C_classLit, 42, -1, [55349, 56512]), initValues(_3C_classLit, 42, -1, [8666]), initValues(_3C_classLit, 42, -1, [8656]), initValues(_3C_classLit, 42, -1, [10523]), initValues(_3C_classLit, 42, -1, [10510]), initValues(_3C_classLit, 42, -1, [8806]), initValues(_3C_classLit, 42, -1, [10891]), initValues(_3C_classLit, 42, -1, [10594]), initValues(_3C_classLit, 42, -1, [314]), initValues(_3C_classLit, 42, -1, [10676]), initValues(_3C_classLit, 42, -1, [8466]), initValues(_3C_classLit, 42, -1, [955]), initValues(_3C_classLit, 42, -1, [10216]), initValues(_3C_classLit, 42, -1, [10641]), initValues(_3C_classLit, 42, -1, [10216]), initValues(_3C_classLit, 42, -1, [10885]), initValues(_3C_classLit, 42, -1, [171]), initValues(_3C_classLit, 42, -1, [171]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8676]), initValues(_3C_classLit, 42, -1, [10527]), initValues(_3C_classLit, 42, -1, [10525]), initValues(_3C_classLit, 42, -1, [8617]), initValues(_3C_classLit, 42, -1, [8619]), initValues(_3C_classLit, 42, -1, [10553]), initValues(_3C_classLit, 42, -1, [10611]), initValues(_3C_classLit, 42, -1, [8610]), initValues(_3C_classLit, 42, -1, [10923]), initValues(_3C_classLit, 42, -1, [10521]), initValues(_3C_classLit, 42, -1, [10925]), initValues(_3C_classLit, 42, -1, [10508]), initValues(_3C_classLit, 42, -1, [10098]), initValues(_3C_classLit, 42, -1, [123]), initValues(_3C_classLit, 42, -1, [91]), initValues(_3C_classLit, 42, -1, [10635]), initValues(_3C_classLit, 42, -1, [10639]), initValues(_3C_classLit, 42, -1, [10637]), initValues(_3C_classLit, 42, -1, [318]), initValues(_3C_classLit, 42, -1, [316]), initValues(_3C_classLit, 42, -1, [8968]), initValues(_3C_classLit, 42, -1, [123]), initValues(_3C_classLit, 42, -1, [1083]), initValues(_3C_classLit, 42, -1, [10550]), initValues(_3C_classLit, 42, -1, [8220]), initValues(_3C_classLit, 42, -1, [8222]), initValues(_3C_classLit, 42, -1, [10599]), initValues(_3C_classLit, 42, -1, [10571]), initValues(_3C_classLit, 42, -1, [8626]), initValues(_3C_classLit, 42, -1, [8804]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8610]), initValues(_3C_classLit, 42, -1, [8637]), initValues(_3C_classLit, 42, -1, [8636]), initValues(_3C_classLit, 42, -1, [8647]), initValues(_3C_classLit, 42, -1, [8596]), initValues(_3C_classLit, 42, -1, [8646]), initValues(_3C_classLit, 42, -1, [8651]), initValues(_3C_classLit, 42, -1, [8621]), initValues(_3C_classLit, 42, -1, [8907]), initValues(_3C_classLit, 42, -1, [8922]), initValues(_3C_classLit, 42, -1, [8804]), initValues(_3C_classLit, 42, -1, [8806]), initValues(_3C_classLit, 42, -1, [10877]), initValues(_3C_classLit, 42, -1, [10877]), initValues(_3C_classLit, 42, -1, [10920]), initValues(_3C_classLit, 42, -1, [10879]), initValues(_3C_classLit, 42, -1, [10881]), initValues(_3C_classLit, 42, -1, [10883]), initValues(_3C_classLit, 42, -1, [10899]), initValues(_3C_classLit, 42, -1, [10885]), initValues(_3C_classLit, 42, -1, [8918]), initValues(_3C_classLit, 42, -1, [8922]), initValues(_3C_classLit, 42, -1, [10891]), initValues(_3C_classLit, 42, -1, [8822]), initValues(_3C_classLit, 42, -1, [8818]), initValues(_3C_classLit, 42, -1, [10620]), initValues(_3C_classLit, 42, -1, [8970]), initValues(_3C_classLit, 42, -1, [55349, 56617]), initValues(_3C_classLit, 42, -1, [8822]), initValues(_3C_classLit, 42, -1, [10897]), initValues(_3C_classLit, 42, -1, [8637]), initValues(_3C_classLit, 42, -1, [8636]), initValues(_3C_classLit, 42, -1, [10602]), initValues(_3C_classLit, 42, -1, [9604]), initValues(_3C_classLit, 42, -1, [1113]), initValues(_3C_classLit, 42, -1, [8810]), initValues(_3C_classLit, 42, -1, [8647]), initValues(_3C_classLit, 42, -1, [8990]), initValues(_3C_classLit, 42, -1, [10603]), initValues(_3C_classLit, 42, -1, [9722]), initValues(_3C_classLit, 42, -1, [320]), initValues(_3C_classLit, 42, -1, [9136]), initValues(_3C_classLit, 42, -1, [9136]), initValues(_3C_classLit, 42, -1, [8808]), initValues(_3C_classLit, 42, -1, [10889]), initValues(_3C_classLit, 42, -1, [10889]), initValues(_3C_classLit, 42, -1, [10887]), initValues(_3C_classLit, 42, -1, [10887]), initValues(_3C_classLit, 42, -1, [8808]), initValues(_3C_classLit, 42, -1, [8934]), initValues(_3C_classLit, 42, -1, [10220]), initValues(_3C_classLit, 42, -1, [8701]), initValues(_3C_classLit, 42, -1, [10214]), initValues(_3C_classLit, 42, -1, [10229]), initValues(_3C_classLit, 42, -1, [10231]), initValues(_3C_classLit, 42, -1, [10236]), initValues(_3C_classLit, 42, -1, [10230]), initValues(_3C_classLit, 42, -1, [8619]), initValues(_3C_classLit, 42, -1, [8620]), initValues(_3C_classLit, 42, -1, [10629]), initValues(_3C_classLit, 42, -1, [55349, 56669]), initValues(_3C_classLit, 42, -1, [10797]), initValues(_3C_classLit, 42, -1, [10804]), initValues(_3C_classLit, 42, -1, [8727]), initValues(_3C_classLit, 42, -1, [95]), initValues(_3C_classLit, 42, -1, [9674]), initValues(_3C_classLit, 42, -1, [9674]), initValues(_3C_classLit, 42, -1, [10731]), initValues(_3C_classLit, 42, -1, [40]), initValues(_3C_classLit, 42, -1, [10643]), initValues(_3C_classLit, 42, -1, [8646]), initValues(_3C_classLit, 42, -1, [8991]), initValues(_3C_classLit, 42, -1, [8651]), initValues(_3C_classLit, 42, -1, [10605]), initValues(_3C_classLit, 42, -1, [8206]), initValues(_3C_classLit, 42, -1, [8895]), initValues(_3C_classLit, 42, -1, [8249]), initValues(_3C_classLit, 42, -1, [55349, 56513]), initValues(_3C_classLit, 42, -1, [8624]), initValues(_3C_classLit, 42, -1, [8818]), initValues(_3C_classLit, 42, -1, [10893]), initValues(_3C_classLit, 42, -1, [10895]), initValues(_3C_classLit, 42, -1, [91]), initValues(_3C_classLit, 42, -1, [8216]), initValues(_3C_classLit, 42, -1, [8218]), initValues(_3C_classLit, 42, -1, [322]), initValues(_3C_classLit, 42, -1, [60]), initValues(_3C_classLit, 42, -1, [60]), initValues(_3C_classLit, 42, -1, [10918]), initValues(_3C_classLit, 42, -1, [10873]), initValues(_3C_classLit, 42, -1, [8918]), initValues(_3C_classLit, 42, -1, [8907]), initValues(_3C_classLit, 42, -1, [8905]), initValues(_3C_classLit, 42, -1, [10614]), initValues(_3C_classLit, 42, -1, [10875]), initValues(_3C_classLit, 42, -1, [10646]), initValues(_3C_classLit, 42, -1, [9667]), initValues(_3C_classLit, 42, -1, [8884]), initValues(_3C_classLit, 42, -1, [9666]), initValues(_3C_classLit, 42, -1, [10570]), initValues(_3C_classLit, 42, -1, [10598]), initValues(_3C_classLit, 42, -1, [8762]), initValues(_3C_classLit, 42, -1, [175]), initValues(_3C_classLit, 42, -1, [175]), initValues(_3C_classLit, 42, -1, [9794]), initValues(_3C_classLit, 42, -1, [10016]), initValues(_3C_classLit, 42, -1, [10016]), initValues(_3C_classLit, 42, -1, [8614]), initValues(_3C_classLit, 42, -1, [8614]), initValues(_3C_classLit, 42, -1, [8615]), initValues(_3C_classLit, 42, -1, [8612]), initValues(_3C_classLit, 42, -1, [8613]), initValues(_3C_classLit, 42, -1, [9646]), initValues(_3C_classLit, 42, -1, [10793]), initValues(_3C_classLit, 42, -1, [1084]), initValues(_3C_classLit, 42, -1, [8212]), initValues(_3C_classLit, 42, -1, [8737]), initValues(_3C_classLit, 42, -1, [55349, 56618]), initValues(_3C_classLit, 42, -1, [8487]), initValues(_3C_classLit, 42, -1, [181]), initValues(_3C_classLit, 42, -1, [181]), initValues(_3C_classLit, 42, -1, [8739]), initValues(_3C_classLit, 42, -1, [42]), initValues(_3C_classLit, 42, -1, [10992]), initValues(_3C_classLit, 42, -1, [183]), initValues(_3C_classLit, 42, -1, [183]), initValues(_3C_classLit, 42, -1, [8722]), initValues(_3C_classLit, 42, -1, [8863]), initValues(_3C_classLit, 42, -1, [8760]), initValues(_3C_classLit, 42, -1, [10794]), initValues(_3C_classLit, 42, -1, [10971]), initValues(_3C_classLit, 42, -1, [8230]), initValues(_3C_classLit, 42, -1, [8723]), initValues(_3C_classLit, 42, -1, [8871]), initValues(_3C_classLit, 42, -1, [55349, 56670]), initValues(_3C_classLit, 42, -1, [8723]), initValues(_3C_classLit, 42, -1, [55349, 56514]), initValues(_3C_classLit, 42, -1, [8766]), initValues(_3C_classLit, 42, -1, [956]), initValues(_3C_classLit, 42, -1, [8888]), initValues(_3C_classLit, 42, -1, [8888]), initValues(_3C_classLit, 42, -1, [8653]), initValues(_3C_classLit, 42, -1, [8654]), initValues(_3C_classLit, 42, -1, [8655]), initValues(_3C_classLit, 42, -1, [8879]), initValues(_3C_classLit, 42, -1, [8878]), initValues(_3C_classLit, 42, -1, [8711]), initValues(_3C_classLit, 42, -1, [324]), initValues(_3C_classLit, 42, -1, [8777]), initValues(_3C_classLit, 42, -1, [329]), initValues(_3C_classLit, 42, -1, [8777]), initValues(_3C_classLit, 42, -1, [9838]), initValues(_3C_classLit, 42, -1, [9838]), initValues(_3C_classLit, 42, -1, [8469]), initValues(_3C_classLit, 42, -1, [160]), initValues(_3C_classLit, 42, -1, [160]), initValues(_3C_classLit, 42, -1, [10819]), initValues(_3C_classLit, 42, -1, [328]), initValues(_3C_classLit, 42, -1, [326]), initValues(_3C_classLit, 42, -1, [8775]), initValues(_3C_classLit, 42, -1, [10818]), initValues(_3C_classLit, 42, -1, [1085]), initValues(_3C_classLit, 42, -1, [8211]), initValues(_3C_classLit, 42, -1, [8800]), initValues(_3C_classLit, 42, -1, [8663]), initValues(_3C_classLit, 42, -1, [10532]), initValues(_3C_classLit, 42, -1, [8599]), initValues(_3C_classLit, 42, -1, [8599]), initValues(_3C_classLit, 42, -1, [8802]), initValues(_3C_classLit, 42, -1, [10536]), initValues(_3C_classLit, 42, -1, [8708]), initValues(_3C_classLit, 42, -1, [8708]), initValues(_3C_classLit, 42, -1, [55349, 56619]), initValues(_3C_classLit, 42, -1, [8817]), initValues(_3C_classLit, 42, -1, [8817]), initValues(_3C_classLit, 42, -1, [8821]), initValues(_3C_classLit, 42, -1, [8815]), initValues(_3C_classLit, 42, -1, [8815]), initValues(_3C_classLit, 42, -1, [8654]), initValues(_3C_classLit, 42, -1, [8622]), initValues(_3C_classLit, 42, -1, [10994]), initValues(_3C_classLit, 42, -1, [8715]), initValues(_3C_classLit, 42, -1, [8956]), initValues(_3C_classLit, 42, -1, [8954]), initValues(_3C_classLit, 42, -1, [8715]), initValues(_3C_classLit, 42, -1, [1114]), initValues(_3C_classLit, 42, -1, [8653]), initValues(_3C_classLit, 42, -1, [8602]), initValues(_3C_classLit, 42, -1, [8229]), initValues(_3C_classLit, 42, -1, [8816]), initValues(_3C_classLit, 42, -1, [8602]), initValues(_3C_classLit, 42, -1, [8622]), initValues(_3C_classLit, 42, -1, [8816]), initValues(_3C_classLit, 42, -1, [8814]), initValues(_3C_classLit, 42, -1, [8820]), initValues(_3C_classLit, 42, -1, [8814]), initValues(_3C_classLit, 42, -1, [8938]), initValues(_3C_classLit, 42, -1, [8940]), initValues(_3C_classLit, 42, -1, [8740]), initValues(_3C_classLit, 42, -1, [55349, 56671]), initValues(_3C_classLit, 42, -1, [172]), initValues(_3C_classLit, 42, -1, [172]), initValues(_3C_classLit, 42, -1, [8713]), initValues(_3C_classLit, 42, -1, [8713]), initValues(_3C_classLit, 42, -1, [8951]), initValues(_3C_classLit, 42, -1, [8950]), initValues(_3C_classLit, 42, -1, [8716]), initValues(_3C_classLit, 42, -1, [8716]), initValues(_3C_classLit, 42, -1, [8958]), initValues(_3C_classLit, 42, -1, [8957]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [10772]), initValues(_3C_classLit, 42, -1, [8832]), initValues(_3C_classLit, 42, -1, [8928]), initValues(_3C_classLit, 42, -1, [8832]), initValues(_3C_classLit, 42, -1, [8655]), initValues(_3C_classLit, 42, -1, [8603]), initValues(_3C_classLit, 42, -1, [8603]), initValues(_3C_classLit, 42, -1, [8939]), initValues(_3C_classLit, 42, -1, [8941]), initValues(_3C_classLit, 42, -1, [8833]), initValues(_3C_classLit, 42, -1, [8929]), initValues(_3C_classLit, 42, -1, [55349, 56515]), initValues(_3C_classLit, 42, -1, [8740]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [8769]), initValues(_3C_classLit, 42, -1, [8772]), initValues(_3C_classLit, 42, -1, [8772]), initValues(_3C_classLit, 42, -1, [8740]), initValues(_3C_classLit, 42, -1, [8742]), initValues(_3C_classLit, 42, -1, [8930]), initValues(_3C_classLit, 42, -1, [8931]), initValues(_3C_classLit, 42, -1, [8836]), initValues(_3C_classLit, 42, -1, [8840]), initValues(_3C_classLit, 42, -1, [8840]), initValues(_3C_classLit, 42, -1, [8833]), initValues(_3C_classLit, 42, -1, [8837]), initValues(_3C_classLit, 42, -1, [8841]), initValues(_3C_classLit, 42, -1, [8841]), initValues(_3C_classLit, 42, -1, [8825]), initValues(_3C_classLit, 42, -1, [241]), initValues(_3C_classLit, 42, -1, [241]), initValues(_3C_classLit, 42, -1, [8824]), initValues(_3C_classLit, 42, -1, [8938]), initValues(_3C_classLit, 42, -1, [8940]), initValues(_3C_classLit, 42, -1, [8939]), initValues(_3C_classLit, 42, -1, [8941]), initValues(_3C_classLit, 42, -1, [957]), initValues(_3C_classLit, 42, -1, [35]), initValues(_3C_classLit, 42, -1, [8470]), initValues(_3C_classLit, 42, -1, [8199]), initValues(_3C_classLit, 42, -1, [8877]), initValues(_3C_classLit, 42, -1, [10500]), initValues(_3C_classLit, 42, -1, [8876]), initValues(_3C_classLit, 42, -1, [10718]), initValues(_3C_classLit, 42, -1, [10498]), initValues(_3C_classLit, 42, -1, [10499]), initValues(_3C_classLit, 42, -1, [8662]), initValues(_3C_classLit, 42, -1, [10531]), initValues(_3C_classLit, 42, -1, [8598]), initValues(_3C_classLit, 42, -1, [8598]), initValues(_3C_classLit, 42, -1, [10535]), initValues(_3C_classLit, 42, -1, [9416]), initValues(_3C_classLit, 42, -1, [243]), initValues(_3C_classLit, 42, -1, [243]), initValues(_3C_classLit, 42, -1, [8859]), initValues(_3C_classLit, 42, -1, [8858]), initValues(_3C_classLit, 42, -1, [244]), initValues(_3C_classLit, 42, -1, [244]), initValues(_3C_classLit, 42, -1, [1086]), initValues(_3C_classLit, 42, -1, [8861]), initValues(_3C_classLit, 42, -1, [337]), initValues(_3C_classLit, 42, -1, [10808]), initValues(_3C_classLit, 42, -1, [8857]), initValues(_3C_classLit, 42, -1, [10684]), initValues(_3C_classLit, 42, -1, [339]), initValues(_3C_classLit, 42, -1, [10687]), initValues(_3C_classLit, 42, -1, [55349, 56620]), initValues(_3C_classLit, 42, -1, [731]), initValues(_3C_classLit, 42, -1, [242]), initValues(_3C_classLit, 42, -1, [242]), initValues(_3C_classLit, 42, -1, [10689]), initValues(_3C_classLit, 42, -1, [10677]), initValues(_3C_classLit, 42, -1, [8486]), initValues(_3C_classLit, 42, -1, [8750]), initValues(_3C_classLit, 42, -1, [8634]), initValues(_3C_classLit, 42, -1, [10686]), initValues(_3C_classLit, 42, -1, [10683]), initValues(_3C_classLit, 42, -1, [8254]), initValues(_3C_classLit, 42, -1, [10688]), initValues(_3C_classLit, 42, -1, [333]), initValues(_3C_classLit, 42, -1, [969]), initValues(_3C_classLit, 42, -1, [959]), initValues(_3C_classLit, 42, -1, [10678]), initValues(_3C_classLit, 42, -1, [8854]), initValues(_3C_classLit, 42, -1, [55349, 56672]), initValues(_3C_classLit, 42, -1, [10679]), initValues(_3C_classLit, 42, -1, [10681]), initValues(_3C_classLit, 42, -1, [8853]), initValues(_3C_classLit, 42, -1, [8744]), initValues(_3C_classLit, 42, -1, [8635]), initValues(_3C_classLit, 42, -1, [10845]), initValues(_3C_classLit, 42, -1, [8500]), initValues(_3C_classLit, 42, -1, [8500]), initValues(_3C_classLit, 42, -1, [170]), initValues(_3C_classLit, 42, -1, [170]), initValues(_3C_classLit, 42, -1, [186]), initValues(_3C_classLit, 42, -1, [186]), initValues(_3C_classLit, 42, -1, [8886]), initValues(_3C_classLit, 42, -1, [10838]), initValues(_3C_classLit, 42, -1, [10839]), initValues(_3C_classLit, 42, -1, [10843]), initValues(_3C_classLit, 42, -1, [8500]), initValues(_3C_classLit, 42, -1, [248]), initValues(_3C_classLit, 42, -1, [248]), initValues(_3C_classLit, 42, -1, [8856]), initValues(_3C_classLit, 42, -1, [245]), initValues(_3C_classLit, 42, -1, [245]), initValues(_3C_classLit, 42, -1, [8855]), initValues(_3C_classLit, 42, -1, [10806]), initValues(_3C_classLit, 42, -1, [246]), initValues(_3C_classLit, 42, -1, [246]), initValues(_3C_classLit, 42, -1, [9021]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [182]), initValues(_3C_classLit, 42, -1, [182]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [10995]), initValues(_3C_classLit, 42, -1, [11005]), initValues(_3C_classLit, 42, -1, [8706]), initValues(_3C_classLit, 42, -1, [1087]), initValues(_3C_classLit, 42, -1, [37]), initValues(_3C_classLit, 42, -1, [46]), initValues(_3C_classLit, 42, -1, [8240]), initValues(_3C_classLit, 42, -1, [8869]), initValues(_3C_classLit, 42, -1, [8241]), initValues(_3C_classLit, 42, -1, [55349, 56621]), initValues(_3C_classLit, 42, -1, [966]), initValues(_3C_classLit, 42, -1, [966]), initValues(_3C_classLit, 42, -1, [8499]), initValues(_3C_classLit, 42, -1, [9742]), initValues(_3C_classLit, 42, -1, [960]), initValues(_3C_classLit, 42, -1, [8916]), initValues(_3C_classLit, 42, -1, [982]), initValues(_3C_classLit, 42, -1, [8463]), initValues(_3C_classLit, 42, -1, [8462]), initValues(_3C_classLit, 42, -1, [8463]), initValues(_3C_classLit, 42, -1, [43]), initValues(_3C_classLit, 42, -1, [10787]), initValues(_3C_classLit, 42, -1, [8862]), initValues(_3C_classLit, 42, -1, [10786]), initValues(_3C_classLit, 42, -1, [8724]), initValues(_3C_classLit, 42, -1, [10789]), initValues(_3C_classLit, 42, -1, [10866]), initValues(_3C_classLit, 42, -1, [177]), initValues(_3C_classLit, 42, -1, [177]), initValues(_3C_classLit, 42, -1, [10790]), initValues(_3C_classLit, 42, -1, [10791]), initValues(_3C_classLit, 42, -1, [177]), initValues(_3C_classLit, 42, -1, [10773]), initValues(_3C_classLit, 42, -1, [55349, 56673]), initValues(_3C_classLit, 42, -1, [163]), initValues(_3C_classLit, 42, -1, [163]), initValues(_3C_classLit, 42, -1, [8826]), initValues(_3C_classLit, 42, -1, [10931]), initValues(_3C_classLit, 42, -1, [10935]), initValues(_3C_classLit, 42, -1, [8828]), initValues(_3C_classLit, 42, -1, [10927]), initValues(_3C_classLit, 42, -1, [8826]), initValues(_3C_classLit, 42, -1, [10935]), initValues(_3C_classLit, 42, -1, [8828]), initValues(_3C_classLit, 42, -1, [10927]), initValues(_3C_classLit, 42, -1, [10937]), initValues(_3C_classLit, 42, -1, [10933]), initValues(_3C_classLit, 42, -1, [8936]), initValues(_3C_classLit, 42, -1, [8830]), initValues(_3C_classLit, 42, -1, [8242]), initValues(_3C_classLit, 42, -1, [8473]), initValues(_3C_classLit, 42, -1, [10933]), initValues(_3C_classLit, 42, -1, [10937]), initValues(_3C_classLit, 42, -1, [8936]), initValues(_3C_classLit, 42, -1, [8719]), initValues(_3C_classLit, 42, -1, [9006]), initValues(_3C_classLit, 42, -1, [8978]), initValues(_3C_classLit, 42, -1, [8979]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [8830]), initValues(_3C_classLit, 42, -1, [8880]), initValues(_3C_classLit, 42, -1, [55349, 56517]), initValues(_3C_classLit, 42, -1, [968]), initValues(_3C_classLit, 42, -1, [8200]), initValues(_3C_classLit, 42, -1, [55349, 56622]), initValues(_3C_classLit, 42, -1, [10764]), initValues(_3C_classLit, 42, -1, [55349, 56674]), initValues(_3C_classLit, 42, -1, [8279]), initValues(_3C_classLit, 42, -1, [55349, 56518]), initValues(_3C_classLit, 42, -1, [8461]), initValues(_3C_classLit, 42, -1, [10774]), initValues(_3C_classLit, 42, -1, [63]), initValues(_3C_classLit, 42, -1, [8799]), initValues(_3C_classLit, 42, -1, [34]), initValues(_3C_classLit, 42, -1, [34]), initValues(_3C_classLit, 42, -1, [8667]), initValues(_3C_classLit, 42, -1, [8658]), initValues(_3C_classLit, 42, -1, [10524]), initValues(_3C_classLit, 42, -1, [10511]), initValues(_3C_classLit, 42, -1, [10596]), initValues(_3C_classLit, 42, -1, [10714]), initValues(_3C_classLit, 42, -1, [341]), initValues(_3C_classLit, 42, -1, [8730]), initValues(_3C_classLit, 42, -1, [10675]), initValues(_3C_classLit, 42, -1, [10217]), initValues(_3C_classLit, 42, -1, [10642]), initValues(_3C_classLit, 42, -1, [10661]), initValues(_3C_classLit, 42, -1, [10217]), initValues(_3C_classLit, 42, -1, [187]), initValues(_3C_classLit, 42, -1, [187]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [10613]), initValues(_3C_classLit, 42, -1, [8677]), initValues(_3C_classLit, 42, -1, [10528]), initValues(_3C_classLit, 42, -1, [10547]), initValues(_3C_classLit, 42, -1, [10526]), initValues(_3C_classLit, 42, -1, [8618]), initValues(_3C_classLit, 42, -1, [8620]), initValues(_3C_classLit, 42, -1, [10565]), initValues(_3C_classLit, 42, -1, [10612]), initValues(_3C_classLit, 42, -1, [8611]), initValues(_3C_classLit, 42, -1, [8605]), initValues(_3C_classLit, 42, -1, [10522]), initValues(_3C_classLit, 42, -1, [8758]), initValues(_3C_classLit, 42, -1, [8474]), initValues(_3C_classLit, 42, -1, [10509]), initValues(_3C_classLit, 42, -1, [10099]), initValues(_3C_classLit, 42, -1, [125]), initValues(_3C_classLit, 42, -1, [93]), initValues(_3C_classLit, 42, -1, [10636]), initValues(_3C_classLit, 42, -1, [10638]), initValues(_3C_classLit, 42, -1, [10640]), initValues(_3C_classLit, 42, -1, [345]), initValues(_3C_classLit, 42, -1, [343]), initValues(_3C_classLit, 42, -1, [8969]), initValues(_3C_classLit, 42, -1, [125]), initValues(_3C_classLit, 42, -1, [1088]), initValues(_3C_classLit, 42, -1, [10551]), initValues(_3C_classLit, 42, -1, [10601]), initValues(_3C_classLit, 42, -1, [8221]), initValues(_3C_classLit, 42, -1, [8221]), initValues(_3C_classLit, 42, -1, [8627]), initValues(_3C_classLit, 42, -1, [8476]), initValues(_3C_classLit, 42, -1, [8475]), initValues(_3C_classLit, 42, -1, [8476]), initValues(_3C_classLit, 42, -1, [8477]), initValues(_3C_classLit, 42, -1, [9645]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [174]), initValues(_3C_classLit, 42, -1, [10621]), initValues(_3C_classLit, 42, -1, [8971]), initValues(_3C_classLit, 42, -1, [55349, 56623]), initValues(_3C_classLit, 42, -1, [8641]), initValues(_3C_classLit, 42, -1, [8640]), initValues(_3C_classLit, 42, -1, [10604]), initValues(_3C_classLit, 42, -1, [961]), initValues(_3C_classLit, 42, -1, [1009]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [8611]), initValues(_3C_classLit, 42, -1, [8641]), initValues(_3C_classLit, 42, -1, [8640]), initValues(_3C_classLit, 42, -1, [8644]), initValues(_3C_classLit, 42, -1, [8652]), initValues(_3C_classLit, 42, -1, [8649]), initValues(_3C_classLit, 42, -1, [8605]), initValues(_3C_classLit, 42, -1, [8908]), initValues(_3C_classLit, 42, -1, [730]), initValues(_3C_classLit, 42, -1, [8787]), initValues(_3C_classLit, 42, -1, [8644]), initValues(_3C_classLit, 42, -1, [8652]), initValues(_3C_classLit, 42, -1, [8207]), initValues(_3C_classLit, 42, -1, [9137]), initValues(_3C_classLit, 42, -1, [9137]), initValues(_3C_classLit, 42, -1, [10990]), initValues(_3C_classLit, 42, -1, [10221]), initValues(_3C_classLit, 42, -1, [8702]), initValues(_3C_classLit, 42, -1, [10215]), initValues(_3C_classLit, 42, -1, [10630]), initValues(_3C_classLit, 42, -1, [55349, 56675]), initValues(_3C_classLit, 42, -1, [10798]), initValues(_3C_classLit, 42, -1, [10805]), initValues(_3C_classLit, 42, -1, [41]), initValues(_3C_classLit, 42, -1, [10644]), initValues(_3C_classLit, 42, -1, [10770]), initValues(_3C_classLit, 42, -1, [8649]), initValues(_3C_classLit, 42, -1, [8250]), initValues(_3C_classLit, 42, -1, [55349, 56519]), initValues(_3C_classLit, 42, -1, [8625]), initValues(_3C_classLit, 42, -1, [93]), initValues(_3C_classLit, 42, -1, [8217]), initValues(_3C_classLit, 42, -1, [8217]), initValues(_3C_classLit, 42, -1, [8908]), initValues(_3C_classLit, 42, -1, [8906]), initValues(_3C_classLit, 42, -1, [9657]), initValues(_3C_classLit, 42, -1, [8885]), initValues(_3C_classLit, 42, -1, [9656]), initValues(_3C_classLit, 42, -1, [10702]), initValues(_3C_classLit, 42, -1, [10600]), initValues(_3C_classLit, 42, -1, [8478]), initValues(_3C_classLit, 42, -1, [347]), initValues(_3C_classLit, 42, -1, [8218]), initValues(_3C_classLit, 42, -1, [8827]), initValues(_3C_classLit, 42, -1, [10932]), initValues(_3C_classLit, 42, -1, [10936]), initValues(_3C_classLit, 42, -1, [353]), initValues(_3C_classLit, 42, -1, [8829]), initValues(_3C_classLit, 42, -1, [10928]), initValues(_3C_classLit, 42, -1, [351]), initValues(_3C_classLit, 42, -1, [349]), initValues(_3C_classLit, 42, -1, [10934]), initValues(_3C_classLit, 42, -1, [10938]), initValues(_3C_classLit, 42, -1, [8937]), initValues(_3C_classLit, 42, -1, [10771]), initValues(_3C_classLit, 42, -1, [8831]), initValues(_3C_classLit, 42, -1, [1089]), initValues(_3C_classLit, 42, -1, [8901]), initValues(_3C_classLit, 42, -1, [8865]), initValues(_3C_classLit, 42, -1, [10854]), initValues(_3C_classLit, 42, -1, [8664]), initValues(_3C_classLit, 42, -1, [10533]), initValues(_3C_classLit, 42, -1, [8600]), initValues(_3C_classLit, 42, -1, [8600]), initValues(_3C_classLit, 42, -1, [167]), initValues(_3C_classLit, 42, -1, [167]), initValues(_3C_classLit, 42, -1, [59]), initValues(_3C_classLit, 42, -1, [10537]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [10038]), initValues(_3C_classLit, 42, -1, [55349, 56624]), initValues(_3C_classLit, 42, -1, [8994]), initValues(_3C_classLit, 42, -1, [9839]), initValues(_3C_classLit, 42, -1, [1097]), initValues(_3C_classLit, 42, -1, [1096]), initValues(_3C_classLit, 42, -1, [8739]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [173]), initValues(_3C_classLit, 42, -1, [173]), initValues(_3C_classLit, 42, -1, [963]), initValues(_3C_classLit, 42, -1, [962]), initValues(_3C_classLit, 42, -1, [962]), initValues(_3C_classLit, 42, -1, [8764]), initValues(_3C_classLit, 42, -1, [10858]), initValues(_3C_classLit, 42, -1, [8771]), initValues(_3C_classLit, 42, -1, [8771]), initValues(_3C_classLit, 42, -1, [10910]), initValues(_3C_classLit, 42, -1, [10912]), initValues(_3C_classLit, 42, -1, [10909]), initValues(_3C_classLit, 42, -1, [10911]), initValues(_3C_classLit, 42, -1, [8774]), initValues(_3C_classLit, 42, -1, [10788]), initValues(_3C_classLit, 42, -1, [10610]), initValues(_3C_classLit, 42, -1, [8592]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [10803]), initValues(_3C_classLit, 42, -1, [10724]), initValues(_3C_classLit, 42, -1, [8739]), initValues(_3C_classLit, 42, -1, [8995]), initValues(_3C_classLit, 42, -1, [10922]), initValues(_3C_classLit, 42, -1, [10924]), initValues(_3C_classLit, 42, -1, [1100]), initValues(_3C_classLit, 42, -1, [47]), initValues(_3C_classLit, 42, -1, [10692]), initValues(_3C_classLit, 42, -1, [9023]), initValues(_3C_classLit, 42, -1, [55349, 56676]), initValues(_3C_classLit, 42, -1, [9824]), initValues(_3C_classLit, 42, -1, [9824]), initValues(_3C_classLit, 42, -1, [8741]), initValues(_3C_classLit, 42, -1, [8851]), initValues(_3C_classLit, 42, -1, [8852]), initValues(_3C_classLit, 42, -1, [8847]), initValues(_3C_classLit, 42, -1, [8849]), initValues(_3C_classLit, 42, -1, [8847]), initValues(_3C_classLit, 42, -1, [8849]), initValues(_3C_classLit, 42, -1, [8848]), initValues(_3C_classLit, 42, -1, [8850]), initValues(_3C_classLit, 42, -1, [8848]), initValues(_3C_classLit, 42, -1, [8850]), initValues(_3C_classLit, 42, -1, [9633]), initValues(_3C_classLit, 42, -1, [9633]), initValues(_3C_classLit, 42, -1, [9642]), initValues(_3C_classLit, 42, -1, [9642]), initValues(_3C_classLit, 42, -1, [8594]), initValues(_3C_classLit, 42, -1, [55349, 56520]), initValues(_3C_classLit, 42, -1, [8726]), initValues(_3C_classLit, 42, -1, [8995]), initValues(_3C_classLit, 42, -1, [8902]), initValues(_3C_classLit, 42, -1, [9734]), initValues(_3C_classLit, 42, -1, [9733]), initValues(_3C_classLit, 42, -1, [1013]), initValues(_3C_classLit, 42, -1, [981]), initValues(_3C_classLit, 42, -1, [175]), initValues(_3C_classLit, 42, -1, [8834]), initValues(_3C_classLit, 42, -1, [10949]), initValues(_3C_classLit, 42, -1, [10941]), initValues(_3C_classLit, 42, -1, [8838]), initValues(_3C_classLit, 42, -1, [10947]), initValues(_3C_classLit, 42, -1, [10945]), initValues(_3C_classLit, 42, -1, [10955]), initValues(_3C_classLit, 42, -1, [8842]), initValues(_3C_classLit, 42, -1, [10943]), initValues(_3C_classLit, 42, -1, [10617]), initValues(_3C_classLit, 42, -1, [8834]), initValues(_3C_classLit, 42, -1, [8838]), initValues(_3C_classLit, 42, -1, [10949]), initValues(_3C_classLit, 42, -1, [8842]), initValues(_3C_classLit, 42, -1, [10955]), initValues(_3C_classLit, 42, -1, [10951]), initValues(_3C_classLit, 42, -1, [10965]), initValues(_3C_classLit, 42, -1, [10963]), initValues(_3C_classLit, 42, -1, [8827]), initValues(_3C_classLit, 42, -1, [10936]), initValues(_3C_classLit, 42, -1, [8829]), initValues(_3C_classLit, 42, -1, [10928]), initValues(_3C_classLit, 42, -1, [10938]), initValues(_3C_classLit, 42, -1, [10934]), initValues(_3C_classLit, 42, -1, [8937]), initValues(_3C_classLit, 42, -1, [8831]), initValues(_3C_classLit, 42, -1, [8721]), initValues(_3C_classLit, 42, -1, [9834]), initValues(_3C_classLit, 42, -1, [185]), initValues(_3C_classLit, 42, -1, [185]), initValues(_3C_classLit, 42, -1, [178]), initValues(_3C_classLit, 42, -1, [178]), initValues(_3C_classLit, 42, -1, [179]), initValues(_3C_classLit, 42, -1, [179]), initValues(_3C_classLit, 42, -1, [8835]), initValues(_3C_classLit, 42, -1, [10950]), initValues(_3C_classLit, 42, -1, [10942]), initValues(_3C_classLit, 42, -1, [10968]), initValues(_3C_classLit, 42, -1, [8839]), initValues(_3C_classLit, 42, -1, [10948]), initValues(_3C_classLit, 42, -1, [10967]), initValues(_3C_classLit, 42, -1, [10619]), initValues(_3C_classLit, 42, -1, [10946]), initValues(_3C_classLit, 42, -1, [10956]), initValues(_3C_classLit, 42, -1, [8843]), initValues(_3C_classLit, 42, -1, [10944]), initValues(_3C_classLit, 42, -1, [8835]), initValues(_3C_classLit, 42, -1, [8839]), initValues(_3C_classLit, 42, -1, [10950]), initValues(_3C_classLit, 42, -1, [8843]), initValues(_3C_classLit, 42, -1, [10956]), initValues(_3C_classLit, 42, -1, [10952]), initValues(_3C_classLit, 42, -1, [10964]), initValues(_3C_classLit, 42, -1, [10966]), initValues(_3C_classLit, 42, -1, [8665]), initValues(_3C_classLit, 42, -1, [10534]), initValues(_3C_classLit, 42, -1, [8601]), initValues(_3C_classLit, 42, -1, [8601]), initValues(_3C_classLit, 42, -1, [10538]), initValues(_3C_classLit, 42, -1, [223]), initValues(_3C_classLit, 42, -1, [223]), initValues(_3C_classLit, 42, -1, [8982]), initValues(_3C_classLit, 42, -1, [964]), initValues(_3C_classLit, 42, -1, [9140]), initValues(_3C_classLit, 42, -1, [357]), initValues(_3C_classLit, 42, -1, [355]), initValues(_3C_classLit, 42, -1, [1090]), initValues(_3C_classLit, 42, -1, [8411]), initValues(_3C_classLit, 42, -1, [8981]), initValues(_3C_classLit, 42, -1, [55349, 56625]), initValues(_3C_classLit, 42, -1, [8756]), initValues(_3C_classLit, 42, -1, [8756]), initValues(_3C_classLit, 42, -1, [952]), initValues(_3C_classLit, 42, -1, [977]), initValues(_3C_classLit, 42, -1, [977]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [8764]), initValues(_3C_classLit, 42, -1, [8201]), initValues(_3C_classLit, 42, -1, [8776]), initValues(_3C_classLit, 42, -1, [8764]), initValues(_3C_classLit, 42, -1, [254]), initValues(_3C_classLit, 42, -1, [254]), initValues(_3C_classLit, 42, -1, [732]), initValues(_3C_classLit, 42, -1, [215]), initValues(_3C_classLit, 42, -1, [215]), initValues(_3C_classLit, 42, -1, [8864]), initValues(_3C_classLit, 42, -1, [10801]), initValues(_3C_classLit, 42, -1, [10800]), initValues(_3C_classLit, 42, -1, [8749]), initValues(_3C_classLit, 42, -1, [10536]), initValues(_3C_classLit, 42, -1, [8868]), initValues(_3C_classLit, 42, -1, [9014]), initValues(_3C_classLit, 42, -1, [10993]), initValues(_3C_classLit, 42, -1, [55349, 56677]), initValues(_3C_classLit, 42, -1, [10970]), initValues(_3C_classLit, 42, -1, [10537]), initValues(_3C_classLit, 42, -1, [8244]), initValues(_3C_classLit, 42, -1, [8482]), initValues(_3C_classLit, 42, -1, [9653]), initValues(_3C_classLit, 42, -1, [9663]), initValues(_3C_classLit, 42, -1, [9667]), initValues(_3C_classLit, 42, -1, [8884]), initValues(_3C_classLit, 42, -1, [8796]), initValues(_3C_classLit, 42, -1, [9657]), initValues(_3C_classLit, 42, -1, [8885]), initValues(_3C_classLit, 42, -1, [9708]), initValues(_3C_classLit, 42, -1, [8796]), initValues(_3C_classLit, 42, -1, [10810]), initValues(_3C_classLit, 42, -1, [10809]), initValues(_3C_classLit, 42, -1, [10701]), initValues(_3C_classLit, 42, -1, [10811]), initValues(_3C_classLit, 42, -1, [9186]), initValues(_3C_classLit, 42, -1, [55349, 56521]), initValues(_3C_classLit, 42, -1, [1094]), initValues(_3C_classLit, 42, -1, [1115]), initValues(_3C_classLit, 42, -1, [359]), initValues(_3C_classLit, 42, -1, [8812]), initValues(_3C_classLit, 42, -1, [8606]), initValues(_3C_classLit, 42, -1, [8608]), initValues(_3C_classLit, 42, -1, [8657]), initValues(_3C_classLit, 42, -1, [10595]), initValues(_3C_classLit, 42, -1, [250]), initValues(_3C_classLit, 42, -1, [250]), initValues(_3C_classLit, 42, -1, [8593]), initValues(_3C_classLit, 42, -1, [1118]), initValues(_3C_classLit, 42, -1, [365]), initValues(_3C_classLit, 42, -1, [251]), initValues(_3C_classLit, 42, -1, [251]), initValues(_3C_classLit, 42, -1, [1091]), initValues(_3C_classLit, 42, -1, [8645]), initValues(_3C_classLit, 42, -1, [369]), initValues(_3C_classLit, 42, -1, [10606]), initValues(_3C_classLit, 42, -1, [10622]), initValues(_3C_classLit, 42, -1, [55349, 56626]), initValues(_3C_classLit, 42, -1, [249]), initValues(_3C_classLit, 42, -1, [249]), initValues(_3C_classLit, 42, -1, [8639]), initValues(_3C_classLit, 42, -1, [8638]), initValues(_3C_classLit, 42, -1, [9600]), initValues(_3C_classLit, 42, -1, [8988]), initValues(_3C_classLit, 42, -1, [8988]), initValues(_3C_classLit, 42, -1, [8975]), initValues(_3C_classLit, 42, -1, [9720]), initValues(_3C_classLit, 42, -1, [363]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [168]), initValues(_3C_classLit, 42, -1, [371]), initValues(_3C_classLit, 42, -1, [55349, 56678]), initValues(_3C_classLit, 42, -1, [8593]), initValues(_3C_classLit, 42, -1, [8597]), initValues(_3C_classLit, 42, -1, [8639]), initValues(_3C_classLit, 42, -1, [8638]), initValues(_3C_classLit, 42, -1, [8846]), initValues(_3C_classLit, 42, -1, [965]), initValues(_3C_classLit, 42, -1, [978]), initValues(_3C_classLit, 42, -1, [965]), initValues(_3C_classLit, 42, -1, [8648]), initValues(_3C_classLit, 42, -1, [8989]), initValues(_3C_classLit, 42, -1, [8989]), initValues(_3C_classLit, 42, -1, [8974]), initValues(_3C_classLit, 42, -1, [367]), initValues(_3C_classLit, 42, -1, [9721]), initValues(_3C_classLit, 42, -1, [55349, 56522]), initValues(_3C_classLit, 42, -1, [8944]), initValues(_3C_classLit, 42, -1, [361]), initValues(_3C_classLit, 42, -1, [9653]), initValues(_3C_classLit, 42, -1, [9652]), initValues(_3C_classLit, 42, -1, [8648]), initValues(_3C_classLit, 42, -1, [252]), initValues(_3C_classLit, 42, -1, [252]), initValues(_3C_classLit, 42, -1, [10663]), initValues(_3C_classLit, 42, -1, [8661]), initValues(_3C_classLit, 42, -1, [10984]), initValues(_3C_classLit, 42, -1, [10985]), initValues(_3C_classLit, 42, -1, [8872]), initValues(_3C_classLit, 42, -1, [10652]), initValues(_3C_classLit, 42, -1, [949]), initValues(_3C_classLit, 42, -1, [1008]), initValues(_3C_classLit, 42, -1, [8709]), initValues(_3C_classLit, 42, -1, [966]), initValues(_3C_classLit, 42, -1, [982]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [8597]), initValues(_3C_classLit, 42, -1, [1009]), initValues(_3C_classLit, 42, -1, [962]), initValues(_3C_classLit, 42, -1, [977]), initValues(_3C_classLit, 42, -1, [8882]), initValues(_3C_classLit, 42, -1, [8883]), initValues(_3C_classLit, 42, -1, [1074]), initValues(_3C_classLit, 42, -1, [8866]), initValues(_3C_classLit, 42, -1, [8744]), initValues(_3C_classLit, 42, -1, [8891]), initValues(_3C_classLit, 42, -1, [8794]), initValues(_3C_classLit, 42, -1, [8942]), initValues(_3C_classLit, 42, -1, [124]), initValues(_3C_classLit, 42, -1, [124]), initValues(_3C_classLit, 42, -1, [55349, 56627]), initValues(_3C_classLit, 42, -1, [8882]), initValues(_3C_classLit, 42, -1, [55349, 56679]), initValues(_3C_classLit, 42, -1, [8733]), initValues(_3C_classLit, 42, -1, [8883]), initValues(_3C_classLit, 42, -1, [55349, 56523]), initValues(_3C_classLit, 42, -1, [10650]), initValues(_3C_classLit, 42, -1, [373]), initValues(_3C_classLit, 42, -1, [10847]), initValues(_3C_classLit, 42, -1, [8743]), initValues(_3C_classLit, 42, -1, [8793]), initValues(_3C_classLit, 42, -1, [8472]), initValues(_3C_classLit, 42, -1, [55349, 56628]), initValues(_3C_classLit, 42, -1, [55349, 56680]), initValues(_3C_classLit, 42, -1, [8472]), initValues(_3C_classLit, 42, -1, [8768]), initValues(_3C_classLit, 42, -1, [8768]), initValues(_3C_classLit, 42, -1, [55349, 56524]), initValues(_3C_classLit, 42, -1, [8898]), initValues(_3C_classLit, 42, -1, [9711]), initValues(_3C_classLit, 42, -1, [8899]), initValues(_3C_classLit, 42, -1, [9661]), initValues(_3C_classLit, 42, -1, [55349, 56629]), initValues(_3C_classLit, 42, -1, [10234]), initValues(_3C_classLit, 42, -1, [10231]), initValues(_3C_classLit, 42, -1, [958]), initValues(_3C_classLit, 42, -1, [10232]), initValues(_3C_classLit, 42, -1, [10229]), initValues(_3C_classLit, 42, -1, [10236]), initValues(_3C_classLit, 42, -1, [8955]), initValues(_3C_classLit, 42, -1, [10752]), initValues(_3C_classLit, 42, -1, [55349, 56681]), initValues(_3C_classLit, 42, -1, [10753]), initValues(_3C_classLit, 42, -1, [10754]), initValues(_3C_classLit, 42, -1, [10233]), initValues(_3C_classLit, 42, -1, [10230]), initValues(_3C_classLit, 42, -1, [55349, 56525]), initValues(_3C_classLit, 42, -1, [10758]), initValues(_3C_classLit, 42, -1, [10756]), initValues(_3C_classLit, 42, -1, [9651]), initValues(_3C_classLit, 42, -1, [8897]), initValues(_3C_classLit, 42, -1, [8896]), initValues(_3C_classLit, 42, -1, [253]), initValues(_3C_classLit, 42, -1, [253]), initValues(_3C_classLit, 42, -1, [1103]), initValues(_3C_classLit, 42, -1, [375]), initValues(_3C_classLit, 42, -1, [1099]), initValues(_3C_classLit, 42, -1, [165]), initValues(_3C_classLit, 42, -1, [165]), initValues(_3C_classLit, 42, -1, [55349, 56630]), initValues(_3C_classLit, 42, -1, [1111]), initValues(_3C_classLit, 42, -1, [55349, 56682]), initValues(_3C_classLit, 42, -1, [55349, 56526]), initValues(_3C_classLit, 42, -1, [1102]), initValues(_3C_classLit, 42, -1, [255]), initValues(_3C_classLit, 42, -1, [255]), initValues(_3C_classLit, 42, -1, [378]), initValues(_3C_classLit, 42, -1, [382]), initValues(_3C_classLit, 42, -1, [1079]), initValues(_3C_classLit, 42, -1, [380]), initValues(_3C_classLit, 42, -1, [8488]), initValues(_3C_classLit, 42, -1, [950]), initValues(_3C_classLit, 42, -1, [55349, 56631]), initValues(_3C_classLit, 42, -1, [1078]), initValues(_3C_classLit, 42, -1, [8669]), initValues(_3C_classLit, 42, -1, [55349, 56683]), initValues(_3C_classLit, 42, -1, [55349, 56527]), initValues(_3C_classLit, 42, -1, [8205]), initValues(_3C_classLit, 42, -1, [8204])]);
 1.21716 +  WINDOWS_1252 = initValues(_3_3C_classLit, 52, 12, [initValues(_3C_classLit, 42, -1, [8364]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [8218]), initValues(_3C_classLit, 42, -1, [402]), initValues(_3C_classLit, 42, -1, [8222]), initValues(_3C_classLit, 42, -1, [8230]), initValues(_3C_classLit, 42, -1, [8224]), initValues(_3C_classLit, 42, -1, [8225]), initValues(_3C_classLit, 42, -1, [710]), initValues(_3C_classLit, 42, -1, [8240]), initValues(_3C_classLit, 42, -1, [352]), initValues(_3C_classLit, 42, -1, [8249]), initValues(_3C_classLit, 42, -1, [338]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [381]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [8216]), initValues(_3C_classLit, 42, -1, [8217]), initValues(_3C_classLit, 42, -1, [8220]), initValues(_3C_classLit, 42, -1, [8221]), initValues(_3C_classLit, 42, -1, [8226]), initValues(_3C_classLit, 42, -1, [8211]), initValues(_3C_classLit, 42, -1, [8212]), initValues(_3C_classLit, 42, -1, [732]), initValues(_3C_classLit, 42, -1, [8482]), initValues(_3C_classLit, 42, -1, [353]), initValues(_3C_classLit, 42, -1, [8250]), initValues(_3C_classLit, 42, -1, [339]), initValues(_3C_classLit, 42, -1, [65533]), initValues(_3C_classLit, 42, -1, [382]), initValues(_3C_classLit, 42, -1, [376])]);
 1.21717 +}
 1.21718 +
 1.21719 +var NAMES, VALUES_0, WINDOWS_1252;
 1.21720 +function localEqualsBuffer(local, buf, offset, length){
 1.21721 +  var i;
 1.21722 +  if (local.length != length) {
 1.21723 +    return false;
 1.21724 +  }
 1.21725 +  for (i = 0; i < length; ++i) {
 1.21726 +    if (local.charCodeAt(i) != buf[offset + i]) {
 1.21727 +      return false;
 1.21728 +    }
 1.21729 +  }
 1.21730 +  return true;
 1.21731 +}
 1.21732 +
 1.21733 +function lowerCaseLiteralEqualsIgnoreAsciiCaseString(lowerCaseLiteral, string){
 1.21734 +  var c0, c1, i;
 1.21735 +  if (string == null) {
 1.21736 +    return false;
 1.21737 +  }
 1.21738 +  if (lowerCaseLiteral.length != string.length) {
 1.21739 +    return false;
 1.21740 +  }
 1.21741 +  for (i = 0; i < lowerCaseLiteral.length; ++i) {
 1.21742 +    c0 = lowerCaseLiteral.charCodeAt(i);
 1.21743 +    c1 = string.charCodeAt(i);
 1.21744 +    if (c1 >= 65 && c1 <= 90) {
 1.21745 +      c1 += 32;
 1.21746 +    }
 1.21747 +    if (c0 != c1) {
 1.21748 +      return false;
 1.21749 +    }
 1.21750 +  }
 1.21751 +  return true;
 1.21752 +}
 1.21753 +
 1.21754 +function lowerCaseLiteralIsPrefixOfIgnoreAsciiCaseString(lowerCaseLiteral, string){
 1.21755 +  var c0, c1, i;
 1.21756 +  if (string == null) {
 1.21757 +    return false;
 1.21758 +  }
 1.21759 +  if (lowerCaseLiteral.length > string.length) {
 1.21760 +    return false;
 1.21761 +  }
 1.21762 +  for (i = 0; i < lowerCaseLiteral.length; ++i) {
 1.21763 +    c0 = lowerCaseLiteral.charCodeAt(i);
 1.21764 +    c1 = string.charCodeAt(i);
 1.21765 +    if (c1 >= 65 && c1 <= 90) {
 1.21766 +      c1 += 32;
 1.21767 +    }
 1.21768 +    if (c0 != c1) {
 1.21769 +      return false;
 1.21770 +    }
 1.21771 +  }
 1.21772 +  return true;
 1.21773 +}
 1.21774 +
 1.21775 +function $StackNode(this$static, group, ns, name, node, scoping, special, fosterParenting, popName, attributes){
 1.21776 +  this$static.group = group;
 1.21777 +  this$static.name_0 = name;
 1.21778 +  this$static.popName = popName;
 1.21779 +  this$static.ns = ns;
 1.21780 +  this$static.node = node;
 1.21781 +  this$static.scoping = scoping;
 1.21782 +  this$static.special = special;
 1.21783 +  this$static.fosterParenting = fosterParenting;
 1.21784 +  this$static.attributes = attributes;
 1.21785 +  this$static.refcount = 1;
 1.21786 +  return this$static;
 1.21787 +}
 1.21788 +
 1.21789 +function $StackNode_0(this$static, ns, elementName, node){
 1.21790 +  this$static.group = elementName.group;
 1.21791 +  this$static.name_0 = elementName.name_0;
 1.21792 +  this$static.popName = elementName.name_0;
 1.21793 +  this$static.ns = ns;
 1.21794 +  this$static.node = node;
 1.21795 +  this$static.scoping = elementName.scoping;
 1.21796 +  this$static.special = elementName.special;
 1.21797 +  this$static.fosterParenting = elementName.fosterParenting;
 1.21798 +  this$static.attributes = null;
 1.21799 +  this$static.refcount = 1;
 1.21800 +  return this$static;
 1.21801 +}
 1.21802 +
 1.21803 +function $StackNode_3(this$static, ns, elementName, node, attributes){
 1.21804 +  this$static.group = elementName.group;
 1.21805 +  this$static.name_0 = elementName.name_0;
 1.21806 +  this$static.popName = elementName.name_0;
 1.21807 +  this$static.ns = ns;
 1.21808 +  this$static.node = node;
 1.21809 +  this$static.scoping = elementName.scoping;
 1.21810 +  this$static.special = elementName.special;
 1.21811 +  this$static.fosterParenting = elementName.fosterParenting;
 1.21812 +  this$static.attributes = attributes;
 1.21813 +  this$static.refcount = 1;
 1.21814 +  return this$static;
 1.21815 +}
 1.21816 +
 1.21817 +function $StackNode_1(this$static, ns, elementName, node, popName){
 1.21818 +  this$static.group = elementName.group;
 1.21819 +  this$static.name_0 = elementName.name_0;
 1.21820 +  this$static.popName = popName;
 1.21821 +  this$static.ns = ns;
 1.21822 +  this$static.node = node;
 1.21823 +  this$static.scoping = elementName.scoping;
 1.21824 +  this$static.special = elementName.special;
 1.21825 +  this$static.fosterParenting = elementName.fosterParenting;
 1.21826 +  this$static.attributes = null;
 1.21827 +  this$static.refcount = 1;
 1.21828 +  return this$static;
 1.21829 +}
 1.21830 +
 1.21831 +function $StackNode_2(this$static, ns, elementName, node, popName, scoping){
 1.21832 +  this$static.group = elementName.group;
 1.21833 +  this$static.name_0 = elementName.name_0;
 1.21834 +  this$static.popName = popName;
 1.21835 +  this$static.ns = ns;
 1.21836 +  this$static.node = node;
 1.21837 +  this$static.scoping = scoping;
 1.21838 +  this$static.special = false;
 1.21839 +  this$static.fosterParenting = false;
 1.21840 +  this$static.attributes = null;
 1.21841 +  this$static.refcount = 1;
 1.21842 +  return this$static;
 1.21843 +}
 1.21844 +
 1.21845 +function getClass_55(){
 1.21846 +  return Lnu_validator_htmlparser_impl_StackNode_2_classLit;
 1.21847 +}
 1.21848 +
 1.21849 +function toString_11(){
 1.21850 +  return this.name_0;
 1.21851 +}
 1.21852 +
 1.21853 +function StackNode(){
 1.21854 +}
 1.21855 +
 1.21856 +_ = StackNode.prototype = new Object_0();
 1.21857 +_.getClass$ = getClass_55;
 1.21858 +_.toString$ = toString_11;
 1.21859 +_.typeId$ = 38;
 1.21860 +_.attributes = null;
 1.21861 +_.fosterParenting = false;
 1.21862 +_.group = 0;
 1.21863 +_.name_0 = null;
 1.21864 +_.node = null;
 1.21865 +_.ns = null;
 1.21866 +_.popName = null;
 1.21867 +_.refcount = 1;
 1.21868 +_.scoping = false;
 1.21869 +_.special = false;
 1.21870 +function $UTF16Buffer(this$static, buffer, start, end){
 1.21871 +  this$static.buffer = buffer;
 1.21872 +  this$static.start = start;
 1.21873 +  this$static.end = end;
 1.21874 +  return this$static;
 1.21875 +}
 1.21876 +
 1.21877 +function $adjust(this$static, lastWasCR){
 1.21878 +  if (lastWasCR && this$static.buffer[this$static.start] == 10) {
 1.21879 +    ++this$static.start;
 1.21880 +  }
 1.21881 +}
 1.21882 +
 1.21883 +function getClass_58(){
 1.21884 +  return Lnu_validator_htmlparser_impl_UTF16Buffer_2_classLit;
 1.21885 +}
 1.21886 +
 1.21887 +function UTF16Buffer(){
 1.21888 +}
 1.21889 +
 1.21890 +_ = UTF16Buffer.prototype = new Object_0();
 1.21891 +_.getClass$ = getClass_58;
 1.21892 +_.typeId$ = 39;
 1.21893 +_.buffer = null;
 1.21894 +_.end = 0;
 1.21895 +_.start = 0;
 1.21896 +function $SAXException(this$static, message){
 1.21897 +  this$static.detailMessage = message;
 1.21898 +  this$static.exception = null;
 1.21899 +  return this$static;
 1.21900 +}
 1.21901 +
 1.21902 +function $getMessage(this$static){
 1.21903 +  var message;
 1.21904 +  message = this$static.detailMessage;
 1.21905 +  if (message == null && !!this$static.exception) {
 1.21906 +    return this$static.exception.detailMessage;
 1.21907 +  }
 1.21908 +   else {
 1.21909 +    return message;
 1.21910 +  }
 1.21911 +}
 1.21912 +
 1.21913 +function getClass_59(){
 1.21914 +  return Lorg_xml_sax_SAXException_2_classLit;
 1.21915 +}
 1.21916 +
 1.21917 +function getMessage_0(){
 1.21918 +  return $getMessage(this);
 1.21919 +}
 1.21920 +
 1.21921 +function toString_12(){
 1.21922 +  if (this.exception) {
 1.21923 +    return $toString_1(this.exception);
 1.21924 +  }
 1.21925 +   else {
 1.21926 +    return $toString_1(this);
 1.21927 +  }
 1.21928 +}
 1.21929 +
 1.21930 +function SAXException(){
 1.21931 +}
 1.21932 +
 1.21933 +_ = SAXException.prototype = new Exception();
 1.21934 +_.getClass$ = getClass_59;
 1.21935 +_.getMessage = getMessage_0;
 1.21936 +_.toString$ = toString_12;
 1.21937 +_.typeId$ = 40;
 1.21938 +_.exception = null;
 1.21939 +function $SAXParseException(this$static, message, locator){
 1.21940 +  this$static.detailMessage = message;
 1.21941 +  this$static.exception = null;
 1.21942 +  if (locator) {
 1.21943 +    $getLineNumber(locator);
 1.21944 +    $getColumnNumber(locator);
 1.21945 +  }
 1.21946 +   else {
 1.21947 +  }
 1.21948 +  return this$static;
 1.21949 +}
 1.21950 +
 1.21951 +function $SAXParseException_0(this$static, message, locator, e){
 1.21952 +  this$static.detailMessage = message;
 1.21953 +  this$static.exception = e;
 1.21954 +  if (locator) {
 1.21955 +    $getLineNumber(locator);
 1.21956 +    $getColumnNumber(locator);
 1.21957 +  }
 1.21958 +   else {
 1.21959 +  }
 1.21960 +  return this$static;
 1.21961 +}
 1.21962 +
 1.21963 +function getClass_60(){
 1.21964 +  return Lorg_xml_sax_SAXParseException_2_classLit;
 1.21965 +}
 1.21966 +
 1.21967 +function SAXParseException(){
 1.21968 +}
 1.21969 +
 1.21970 +_ = SAXParseException.prototype = new SAXException();
 1.21971 +_.getClass$ = getClass_60;
 1.21972 +_.typeId$ = 41;
 1.21973 +function init_0(){
 1.21974 +  !!$stats && $stats({moduleName:$moduleName, subSystem:'startup', evtGroup:'moduleStartup', millis:(new Date()).getTime(), type:'onModuleLoadStart', className:'nu.validator.htmlparser.gwt.HtmlParserModule'});
 1.21975 +  Envjs.parseHtmlDocument = parseHtmlDocument;
 1.21976 +}
 1.21977 +
 1.21978 +__defineParser__ = function gwtOnLoad(errFn, modName, modBase){
 1.21979 +  $moduleName = modName;
 1.21980 +  $moduleBase = modBase;
 1.21981 +  if (errFn)
 1.21982 +    try {
 1.21983 +      init_0();
 1.21984 +    }
 1.21985 +     catch (e) {
 1.21986 +      errFn(modName);
 1.21987 +    }
 1.21988 +   else {
 1.21989 +    init_0();
 1.21990 +  }
 1.21991 +}
 1.21992 +
 1.21993 +function nullMethod(){
 1.21994 +}
 1.21995 +
 1.21996 +var Ljava_lang_Object_2_classLit = createForClass('java.lang.', 'Object'), Lcom_google_gwt_user_client_Timer_2_classLit = createForClass('com.google.gwt.user.client.', 'Timer'), Ljava_lang_Throwable_2_classLit = createForClass('java.lang.', 'Throwable'), Ljava_lang_Exception_2_classLit = createForClass('java.lang.', 'Exception'), Ljava_lang_RuntimeException_2_classLit = createForClass('java.lang.', 'RuntimeException'), Lcom_google_gwt_core_client_JavaScriptException_2_classLit = createForClass('com.google.gwt.core.client.', 'JavaScriptException'), Lcom_google_gwt_core_client_JavaScriptObject_2_classLit = createForClass('com.google.gwt.core.client.', 'JavaScriptObject$'), _3Ljava_lang_String_2_classLit = createForArray('[Ljava.lang.', 'String;'), Ljava_lang_Enum_2_classLit = createForClass('java.lang.', 'Enum'), _3_3D_classLit = createForArray('', '[[D'), Ljava_util_AbstractCollection_2_classLit = createForClass('java.util.', 'AbstractCollection'), Ljava_util_AbstractList_2_classLit = createForClass('java.util.', 'AbstractList'), Ljava_util_ArrayList_2_classLit = createForClass('java.util.', 'ArrayList'), Lcom_google_gwt_user_client_Timer$1_2_classLit = createForClass('com.google.gwt.user.client.', 'Timer$1'), Ljava_lang_IndexOutOfBoundsException_2_classLit = createForClass('java.lang.', 'IndexOutOfBoundsException'), Ljava_lang_ArrayStoreException_2_classLit = createForClass('java.lang.', 'ArrayStoreException'), _3C_classLit = createForArray('', '[C'), Ljava_lang_Class_2_classLit = createForClass('java.lang.', 'Class'), Ljava_lang_ClassCastException_2_classLit = createForClass('java.lang.', 'ClassCastException'), Ljava_lang_IllegalArgumentException_2_classLit = createForClass('java.lang.', 'IllegalArgumentException'), _3I_classLit = createForArray('', '[I'), Ljava_lang_NullPointerException_2_classLit = createForClass('java.lang.', 'NullPointerException'), Ljava_lang_String_2_classLit = createForClass('java.lang.', 'String'), Ljava_lang_StringBuffer_2_classLit = createForClass('java.lang.', 'StringBuffer'), Ljava_lang_StringBuilder_2_classLit = createForClass('java.lang.', 'StringBuilder'), Ljava_lang_StringIndexOutOfBoundsException_2_classLit = createForClass('java.lang.', 'StringIndexOutOfBoundsException'), Ljava_lang_UnsupportedOperationException_2_classLit = createForClass('java.lang.', 'UnsupportedOperationException'), _3Ljava_lang_Object_2_classLit = createForArray('[Ljava.lang.', 'Object;'), Ljava_util_AbstractMap_2_classLit = createForClass('java.util.', 'AbstractMap'), Ljava_util_AbstractHashMap_2_classLit = createForClass('java.util.', 'AbstractHashMap'), Ljava_util_AbstractSet_2_classLit = createForClass('java.util.', 'AbstractSet'), Ljava_util_AbstractHashMap$EntrySet_2_classLit = createForClass('java.util.', 'AbstractHashMap$EntrySet'), Ljava_util_AbstractHashMap$EntrySetIterator_2_classLit = createForClass('java.util.', 'AbstractHashMap$EntrySetIterator'), Ljava_util_AbstractMapEntry_2_classLit = createForClass('java.util.', 'AbstractMapEntry'), Ljava_util_AbstractHashMap$MapEntryNull_2_classLit = createForClass('java.util.', 'AbstractHashMap$MapEntryNull'), Ljava_util_AbstractHashMap$MapEntryString_2_classLit = createForClass('java.util.', 'AbstractHashMap$MapEntryString'), Ljava_util_AbstractList$IteratorImpl_2_classLit = createForClass('java.util.', 'AbstractList$IteratorImpl'), Ljava_util_AbstractList$ListIteratorImpl_2_classLit = createForClass('java.util.', 'AbstractList$ListIteratorImpl'), Ljava_util_AbstractSequentialList_2_classLit = createForClass('java.util.', 'AbstractSequentialList'), Ljava_util_Comparators$1_2_classLit = createForClass('java.util.', 'Comparators$1'), Ljava_util_HashMap_2_classLit = createForClass('java.util.', 'HashMap'), Ljava_util_LinkedList_2_classLit = createForClass('java.util.', 'LinkedList'), Ljava_util_LinkedList$ListIteratorImpl_2_classLit = createForClass('java.util.', 'LinkedList$ListIteratorImpl'), Ljava_util_LinkedList$Node_2_classLit = createForClass('java.util.', 'LinkedList$Node'), Ljava_util_NoSuchElementException_2_classLit = createForClass('java.util.', 'NoSuchElementException'), Lnu_validator_htmlparser_common_DoctypeExpectation_2_classLit = createForEnum('nu.validator.htmlparser.common.', 'DoctypeExpectation'), Lnu_validator_htmlparser_common_DocumentMode_2_classLit = createForEnum('nu.validator.htmlparser.common.', 'DocumentMode'), Lnu_validator_htmlparser_common_XmlViolationPolicy_2_classLit = createForEnum('nu.validator.htmlparser.common.', 'XmlViolationPolicy'), Lnu_validator_htmlparser_impl_TreeBuilder_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'TreeBuilder'), Lnu_validator_htmlparser_impl_CoalescingTreeBuilder_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'CoalescingTreeBuilder'), Lnu_validator_htmlparser_gwt_BrowserTreeBuilder_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'BrowserTreeBuilder'), Lnu_validator_htmlparser_gwt_BrowserTreeBuilder$ScriptHolder_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'BrowserTreeBuilder$ScriptHolder'), Lnu_validator_htmlparser_gwt_HtmlParser_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'HtmlParser'), Lnu_validator_htmlparser_gwt_HtmlParser$1_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'HtmlParser$1'), Lnu_validator_htmlparser_gwt_ParseEndListener_2_classLit = createForClass('nu.validator.htmlparser.gwt.', 'ParseEndListener'), _3Z_classLit = createForArray('', '[Z'), _3Lnu_validator_htmlparser_impl_AttributeName_2_classLit = createForArray('[Lnu.validator.htmlparser.impl.', 'AttributeName;'), Lnu_validator_htmlparser_impl_AttributeName_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'AttributeName'), _3Lnu_validator_htmlparser_impl_ElementName_2_classLit = createForArray('[Lnu.validator.htmlparser.impl.', 'ElementName;'), Lnu_validator_htmlparser_impl_ElementName_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'ElementName'), Lnu_validator_htmlparser_impl_Tokenizer_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'Tokenizer'), Lnu_validator_htmlparser_impl_ErrorReportingTokenizer_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'ErrorReportingTokenizer'), Lnu_validator_htmlparser_impl_HtmlAttributes_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'HtmlAttributes'), Lnu_validator_htmlparser_impl_LocatorImpl_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'LocatorImpl'), _3_3C_classLit = createForArray('', '[[C'), Lnu_validator_htmlparser_impl_StackNode_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'StackNode'), _3Lnu_validator_htmlparser_impl_StackNode_2_classLit = createForArray('[Lnu.validator.htmlparser.impl.', 'StackNode;'), Lnu_validator_htmlparser_impl_UTF16Buffer_2_classLit = createForClass('nu.validator.htmlparser.impl.', 'UTF16Buffer'), Lorg_xml_sax_SAXException_2_classLit = createForClass('org.xml.sax.', 'SAXException'), Lorg_xml_sax_SAXParseException_2_classLit = createForClass('org.xml.sax.', 'SAXParseException');
 1.21997 +if (false) {  var __gwt_initHandlers = nu_validator_htmlparser_HtmlParser.__gwt_initHandlers;  nu_validator_htmlparser_HtmlParser.onScriptLoad(gwtOnLoad);}})();
 1.21998 +
 1.21999 +/**
 1.22000 +* DOMParser
 1.22001 +*/
 1.22002 +
 1.22003 +__defineParser__(function(e){
 1.22004 +    console.log('Error loading html 5 parser implementation');
 1.22005 +}, 'nu_validator_htmlparser_HtmlParser', '');
 1.22006 +
 1.22007 +/*DOMParser = function(principle, documentURI, baseURI){};
 1.22008 +__extend__(DOMParser.prototype,{
 1.22009 +    parseFromString: function(xmlstring, mimetype){
 1.22010 +        //console.log('DOMParser.parseFromString %s', mimetype);
 1.22011 +        var xmldoc = new Document(new DOMImplementation());
 1.22012 +        return XMLParser.parseDocument(xmlstring, xmldoc, mimetype);
 1.22013 +    }
 1.22014 +});*/
 1.22015 +
 1.22016 +XMLParser.parseDocument = function(xmlstring, xmldoc, mimetype){
 1.22017 +    //console.log('XMLParser.parseDocument');
 1.22018 +    var tmpdoc = new Document(new DOMImplementation()),
 1.22019 +        parent,
 1.22020 +        importedNode,
 1.22021 +        tmpNode;
 1.22022 +
 1.22023 +    if(mimetype && mimetype == 'text/xml'){
 1.22024 +        //console.log('mimetype: text/xml');
 1.22025 +        tmpdoc.baseURI = 'http://envjs.com/xml';
 1.22026 +        xmlstring = '<html><head></head><body>'+
 1.22027 +            '<envjs_1234567890 xmlns="envjs_1234567890">'
 1.22028 +                +xmlstring+
 1.22029 +            '</envjs_1234567890>'+
 1.22030 +        '</body></html>';
 1.22031 +        Envjs.parseHtmlDocument(xmlstring, tmpdoc, false, null, null);
 1.22032 +        parent = tmpdoc.getElementsByTagName('envjs_1234567890')[0];
 1.22033 +    }else{
 1.22034 +        Envjs.parseHtmlDocument(xmlstring, tmpdoc, false, null, null);
 1.22035 +        parent = tmpdoc.documentElement;
 1.22036 +    }
 1.22037 +
 1.22038 +    while(xmldoc.firstChild != null){
 1.22039 +        xmldoc.removeChild( xmldoc.firstChild );
 1.22040 +    }
 1.22041 +    while(parent.firstChild != null){
 1.22042 +        tmpNode  = parent.removeChild( parent.firstChild );
 1.22043 +        importedNode = xmldoc.importNode( tmpNode, true);
 1.22044 +        xmldoc.appendChild( importedNode );
 1.22045 +    }
 1.22046 +    return xmldoc;
 1.22047 +};
 1.22048 +
 1.22049 +var __fragmentCache__ = {length:0},
 1.22050 +    __cachable__ = 255;
 1.22051 +
 1.22052 +HTMLParser.parseDocument = function(htmlstring, htmldoc){
 1.22053 +    //console.log('HTMLParser.parseDocument %s', htmldoc.async);
 1.22054 +    htmldoc.parsing = true;
 1.22055 +    Envjs.parseHtmlDocument(htmlstring, htmldoc, htmldoc.async, null, null);
 1.22056 +    //Envjs.wait(-1);
 1.22057 +    return htmldoc;
 1.22058 +};
 1.22059 +HTMLParser.parseFragment = function(htmlstring, element){
 1.22060 +    //console.log('HTMLParser.parseFragment')
 1.22061 +    // fragment is allowed to be an element as well
 1.22062 +    var tmpdoc,
 1.22063 +        parent,
 1.22064 +        importedNode,
 1.22065 +        tmpNode,
 1.22066 +        length,
 1.22067 +        i,
 1.22068 +        docstring;
 1.22069 +    //console.log('parsing fragment: %s', htmlstring);
 1.22070 +    //console.log('__fragmentCache__.length %s', __fragmentCache__.length)
 1.22071 +    if( htmlstring.length > __cachable__ && htmlstring in __fragmentCache__){
 1.22072 +        tmpdoc = __fragmentCache__[htmlstring];
 1.22073 +    }else{
 1.22074 +        //console.log('parsing html fragment \n%s', htmlstring);
 1.22075 +        tmpdoc = new HTMLDocument(new DOMImplementation());
 1.22076 +
 1.22077 +
 1.22078 +        // Need some indicator that this document isn't THE document
 1.22079 +        // to fire off img.src change events and other items.
 1.22080 +        // Otherwise, what happens is the tmpdoc fires and img.src
 1.22081 +        // event, then when it's all imported to the original document
 1.22082 +        // it happens again.
 1.22083 +
 1.22084 +        tmpdoc.fragment = true;
 1.22085 +
 1.22086 +        //preserves leading white space
 1.22087 +        docstring = '<html><head></head><body>'+
 1.22088 +            '<envjs_1234567890 xmlns="envjs_1234567890">'
 1.22089 +                +htmlstring+
 1.22090 +            '</envjs_1234567890>'+
 1.22091 +        '</body></html>';
 1.22092 +        Envjs.parseHtmlDocument(docstring,tmpdoc, false, null,null);
 1.22093 +        if(htmlstring.length > __cachable__ ){
 1.22094 +            tmpdoc.normalizeDocument();
 1.22095 +            __fragmentCache__[htmlstring] = tmpdoc;
 1.22096 +            __fragmentCache__.length += htmlstring.length;
 1.22097 +            tmpdoc.cached = true;
 1.22098 +        }else{
 1.22099 +            tmpdoc.cached = false;
 1.22100 +        }
 1.22101 +    }
 1.22102 +
 1.22103 +    //parent is envjs_1234567890 element
 1.22104 +    parent = tmpdoc.body.childNodes[0];
 1.22105 +    while(element.firstChild != null){
 1.22106 +        //zap the elements children so we can import
 1.22107 +        element.removeChild( element.firstChild );
 1.22108 +    }
 1.22109 +
 1.22110 +    if(tmpdoc.cached){
 1.22111 +        length = parent.childNodes.length;
 1.22112 +        for(i=0;i<length;i++){
 1.22113 +            importedNode = element.importNode( parent.childNodes[i], true );
 1.22114 +            element.appendChild( importedNode );
 1.22115 +        }
 1.22116 +    }else{
 1.22117 +        while(parent.firstChild != null){
 1.22118 +            tmpNode  = parent.removeChild( parent.firstChild );
 1.22119 +            importedNode = element.importNode( tmpNode, true);
 1.22120 +            element.appendChild( importedNode );
 1.22121 +        }
 1.22122 +    }
 1.22123 +
 1.22124 +    // console.log('finished fragment: %s', element.outerHTML);
 1.22125 +    return element;
 1.22126 +};
 1.22127 +
 1.22128 +var __clearFragmentCache__ = function(){
 1.22129 +    __fragmentCache__ = {};
 1.22130 +}
 1.22131 +
 1.22132 +
 1.22133 +/**
 1.22134 + * @name Document
 1.22135 + * @w3c:domlevel 2 
 1.22136 + * @uri http://www.w3.org/TR/2000/REC-DOM-Level-2-Events-20001113/events.html
 1.22137 + */
 1.22138 +__extend__(Document.prototype, {
 1.22139 +    loadXML : function(xmlString) {
 1.22140 +        //console.log('Parser::Document.loadXML');
 1.22141 +        // create Document
 1.22142 +        if(this === document){
 1.22143 +            //$debug("Setting internal window.document");
 1.22144 +            document = this;
 1.22145 +        }
 1.22146 +        // populate Document
 1.22147 +        try {
 1.22148 +            // make sure this document object is empty before we try to load ...
 1.22149 +            this.attributes      = new NamedNodeMap(this, this);
 1.22150 +            this._namespaces     = new NamespaceNodeMap(this, this);
 1.22151 +            this._readonly = false;
 1.22152 +
 1.22153 +            XMLParser.parseDocument(xmlString, this);
 1.22154 +            
 1.22155 +            Envjs.wait(-1);
 1.22156 +        } catch (e) {
 1.22157 +            //$error(e);
 1.22158 +        }
 1.22159 +        return this;
 1.22160 +    }
 1.22161 +});
 1.22162 +
 1.22163 +
 1.22164 +__extend__(HTMLDocument.prototype, {
 1.22165 +
 1.22166 +    open : function() {
 1.22167 +        //console.log('opening doc for write.');
 1.22168 +        if (! this._writebuffer) {
 1.22169 +            this._writebuffer = [];
 1.22170 +        }
 1.22171 +    },
 1.22172 +    close : function() {
 1.22173 +        //console.log('closing doc.');
 1.22174 +        if (this._writebuffer) {
 1.22175 +            HTMLParser.parseDocument(this._writebuffer.join(''), this);
 1.22176 +            this._writebuffer = null;
 1.22177 +            //console.log('finished writing doc.');
 1.22178 +        }
 1.22179 +    },
 1.22180 +
 1.22181 +    /**
 1.22182 +     * http://dev.w3.org/html5/spec/Overview.html#document.write
 1.22183 +     */
 1.22184 +    write: function(htmlstring) {
 1.22185 +        //console.log('writing doc.');
 1.22186 +        this.open();
 1.22187 +        this._writebuffer.push(htmlstring);
 1.22188 +    },
 1.22189 +
 1.22190 +    /**
 1.22191 +     * http://dev.w3.org/html5/spec/Overview.html#dom-document-writeln
 1.22192 +     */
 1.22193 +    writeln: function(htmlstring) {
 1.22194 +        this.open();
 1.22195 +        this._writebuffer.push(htmlstring + '\n');
 1.22196 +    }
 1.22197 +});
 1.22198 +
 1.22199 +/**
 1.22200 + * elementPopped is called by the parser in two cases
 1.22201 + *
 1.22202 + * - an 'tag' is * complete (all children process and end tag, real or
 1.22203 + *   implied is * processed)
 1.22204 + * - a replaceElement happens (this happens by making placeholder
 1.22205 + *   nodes and then the real one is swapped in.
 1.22206 + *
 1.22207 + */
 1.22208 +var __elementPopped__ = function(ns, name, node){
 1.22209 +    //console.log('popped html element %s %s %s', ns, name, node);
 1.22210 +    var doc = node.ownerDocument,
 1.22211 +        okay,
 1.22212 +        event;
 1.22213 +    switch(doc.parsing){
 1.22214 +        case false:
 1.22215 +            //innerHTML so dont do loading patterns for parsing
 1.22216 +            //console.log('element popped (implies innerHTML) not in parsing mode %s', node.nodeName);
 1.22217 +            break;
 1.22218 +        case true:
 1.22219 +            switch(doc+''){
 1.22220 +                case '[object XMLDocument]':
 1.22221 +                    break;
 1.22222 +                case '[object HTMLDocument]':
 1.22223 +                    switch(node.namespaceURI){
 1.22224 +                        case "http://n.validator.nu/placeholder/":
 1.22225 +                            //console.log('got script during parsing %s', node.textContent);
 1.22226 +                            break;
 1.22227 +                        case null:
 1.22228 +                        case "":
 1.22229 +                        case "http://www.w3.org/1999/xhtml":
 1.22230 +                            switch(name.toLowerCase()){
 1.22231 +                                case 'script':
 1.22232 +                                    try{
 1.22233 +                                        okay = Envjs.loadLocalScript(node, null);
 1.22234 +                                        // console.log('loaded script? %s %s', node.uuid, okay);
 1.22235 +                                        // only fire event if we actually had something to load
 1.22236 +                                        if (node.src && node.src.length > 0){
 1.22237 +                                            event = doc.createEvent('HTMLEvents');
 1.22238 +                                            event.initEvent( okay ? "load" : "error", false, false );
 1.22239 +                                            node.dispatchEvent( event, false );
 1.22240 +                                        }
 1.22241 +                                    }catch(e){
 1.22242 +                                        console.log('error loading html element %s %s %s %e', ns, name, node, e.toString());
 1.22243 +                                    }
 1.22244 +                                    break;
 1.22245 +                                case 'frame':
 1.22246 +                                case 'iframe':
 1.22247 +                                    node.contentWindow = { };
 1.22248 +                                    node.contentDocument = new HTMLDocument(new DOMImplementation(), node.contentWindow);
 1.22249 +                                    node.contentWindow.document = node.contentDocument;
 1.22250 +                                    try{
 1.22251 +                                        Window;
 1.22252 +                                    }catch(e){
 1.22253 +                                        node.contentDocument.addEventListener('DOMContentLoaded', function(){
 1.22254 +                                            event = node.contentDocument.createEvent('HTMLEvents');
 1.22255 +                                            event.initEvent("load", false, false);
 1.22256 +                                            node.dispatchEvent( event, false );
 1.22257 +                                        });
 1.22258 +                                    }
 1.22259 +                                    try{
 1.22260 +                                        if (node.src && node.src.length > 0){
 1.22261 +                                            //console.log("getting content document for (i)frame from %s", node.src);
 1.22262 +                                            Envjs.loadFrame(node, Envjs.uri(node.src));
 1.22263 +                                            event = node.contentDocument.createEvent('HTMLEvents');
 1.22264 +                                            event.initEvent("load", false, false);
 1.22265 +                                            node.dispatchEvent( event, false );
 1.22266 +                                        }else{
 1.22267 +                                            //I dont like this being here:
 1.22268 +                                            //TODO: better  mix-in strategy so the try/catch isnt required
 1.22269 +                                            try{
 1.22270 +                                                if(Window){
 1.22271 +                                                    Envjs.loadFrame(node);
 1.22272 +                                                    //console.log('src/html/document.js: triggering frame load');
 1.22273 +                                                    event = node.contentDocument.createEvent('HTMLEvents');
 1.22274 +                                                    event.initEvent("load", false, false);
 1.22275 +                                                    node.dispatchEvent( event, false );
 1.22276 +                                                }
 1.22277 +                                            }catch(e){}
 1.22278 +                                        }
 1.22279 +                                    }catch(e){
 1.22280 +                                        console.log('error loading html element %s %e', node, e.toString());
 1.22281 +                                    }
 1.22282 +                                    /*try{
 1.22283 +                                        if (node.src && node.src.length > 0){
 1.22284 +                                            //console.log("getting content document for (i)frame from %s", node.src);
 1.22285 +                                            Envjs.loadFrame(node, Envjs.uri(node.src));
 1.22286 +                                            event = node.ownerDocument.createEvent('HTMLEvents');
 1.22287 +                                            event.initEvent("load", false, false);
 1.22288 +                                            node.dispatchEvent( event, false );
 1.22289 +                                        }else{
 1.22290 +                                            //console.log('src/parser/htmldocument: triggering frame load (no src)');
 1.22291 +                                        }
 1.22292 +                                    }catch(e){
 1.22293 +                                        console.log('error loading html element %s %s %s %e', ns, name, node, e.toString());
 1.22294 +                                    }*/
 1.22295 +                                    break;
 1.22296 +                                case 'link':
 1.22297 +                                    if (node.href) {
 1.22298 +                                        __loadLink__(node, node.href);
 1.22299 +                                    }
 1.22300 +                                    break;
 1.22301 +                                case 'option':
 1.22302 +                                    node._updateoptions();
 1.22303 +                                    break;
 1.22304 +                                case 'img':
 1.22305 +                                    if (node.src){
 1.22306 +                                        __loadImage__(node, node.src);
 1.22307 +                                    }
 1.22308 +                                    break;
 1.22309 +                                case 'html':
 1.22310 +                                    //console.log('html popped');
 1.22311 +                                    doc.parsing = false;
 1.22312 +                                    //DOMContentLoaded event
 1.22313 +                                    // try{
 1.22314 +                                        if(doc.createEvent){
 1.22315 +                                            event = doc.createEvent('Events');
 1.22316 +                                            event.initEvent("DOMContentLoaded", false, false);
 1.22317 +                                            doc.dispatchEvent( event, false );
 1.22318 +                                        }
 1.22319 +                                    /* }catch(e){
 1.22320 +                                        console.log('%s', e);
 1.22321 +                                    } */
 1.22322 +                                    try{
 1.22323 +                                        if(doc.createEvent){
 1.22324 +                                            event = doc.createEvent('HTMLEvents');
 1.22325 +                                            event.initEvent("load", false, false);
 1.22326 +                                            doc.dispatchEvent( event, false );
 1.22327 +                                        }
 1.22328 +                                    }catch(e){
 1.22329 +                                        console.log('%s', e);
 1.22330 +                                    }
 1.22331 +
 1.22332 +                                    try{
 1.22333 +                                        if(doc.parentWindow){
 1.22334 +                                            event = doc.createEvent('HTMLEvents');
 1.22335 +                                            event.initEvent("load", false, false);
 1.22336 +                                            doc.parentWindow.dispatchEvent( event, false );
 1.22337 +                                        }
 1.22338 +                                    }catch(e){
 1.22339 +                                        console.log('%s', e);
 1.22340 +                                    }
 1.22341 +                                    try{
 1.22342 +                                        if(doc === window.document){
 1.22343 +                                            //console.log('triggering window.load')
 1.22344 +                                            event = doc.createEvent('HTMLEvents');
 1.22345 +                                            event.initEvent("load", false, false);
 1.22346 +                                            try{
 1.22347 +                                                window.dispatchEvent( event, false );
 1.22348 +                                            }catch(e){
 1.22349 +                                                console.log('%s', e);
 1.22350 +                                            }
 1.22351 +                                        }
 1.22352 +                                    }catch(e){
 1.22353 +                                        //console.log('%s', e);
 1.22354 +                                        //swallow
 1.22355 +                                    }
 1.22356 +                                default:
 1.22357 +                                    if(node.getAttribute('onload')){
 1.22358 +                                        //console.log('%s onload', node);
 1.22359 +                                        node.onload();
 1.22360 +                                    }
 1.22361 +                                    break;
 1.22362 +                            }//switch on name
 1.22363 +                        default:
 1.22364 +                            break;
 1.22365 +                    }//switch on ns
 1.22366 +                    break;
 1.22367 +                default:
 1.22368 +                    console.log('element popped: %s %s', ns, name, node.ownerDocument+'');
 1.22369 +            }//switch on doc type
 1.22370 +        default:
 1.22371 +            break;
 1.22372 +    }//switch on parsing
 1.22373 +};
 1.22374 +
 1.22375 +__extend__(HTMLElement.prototype,{
 1.22376 +    set innerHTML(html){
 1.22377 +        HTMLParser.parseFragment(html, this);
 1.22378 +    }
 1.22379 +});
 1.22380 +
 1.22381 +/**
 1.22382 + * @author john resig & the envjs team
 1.22383 + * @uri http://www.envjs.com/
 1.22384 + * @copyright 2008-2010
 1.22385 + * @license MIT
 1.22386 + */
 1.22387 +//CLOSURE_END
 1.22388 +}());
 1.22389 +/*
 1.22390 + * Envjs xhr.1.2.13 
 1.22391 + * Pure JavaScript Browser Environment
 1.22392 + * By John Resig <http://ejohn.org/> and the Envjs Team
 1.22393 + * Copyright 2008-2010 John Resig, under the MIT License
 1.22394 + * 
 1.22395 + * Parts of the implementation originally written by Yehuda Katz.
 1.22396 + * 
 1.22397 + * This file simply provides the global definitions we need to 
 1.22398 + * be able to correctly implement to core browser (XML)HTTPRequest 
 1.22399 + * interfaces.
 1.22400 + */
 1.22401 +var Location,
 1.22402 +    XMLHttpRequest;
 1.22403 +
 1.22404 +/*
 1.22405 + * Envjs xhr.1.2.13 
 1.22406 + * Pure JavaScript Browser Environment
 1.22407 + * By John Resig <http://ejohn.org/> and the Envjs Team
 1.22408 + * Copyright 2008-2010 John Resig, under the MIT License
 1.22409 + */
 1.22410 +
 1.22411 +//CLOSURE_START
 1.22412 +(function(){
 1.22413 +
 1.22414 +
 1.22415 +
 1.22416 +
 1.22417 +
 1.22418 +/**
 1.22419 + * @author john resig
 1.22420 + */
 1.22421 +// Helper method for extending one object with another.
 1.22422 +function __extend__(a,b) {
 1.22423 +    for ( var i in b ) {
 1.22424 +        var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
 1.22425 +        if ( g || s ) {
 1.22426 +            if ( g ) { a.__defineGetter__(i, g); }
 1.22427 +            if ( s ) { a.__defineSetter__(i, s); }
 1.22428 +        } else {
 1.22429 +            a[i] = b[i];
 1.22430 +        }
 1.22431 +    } return a;
 1.22432 +}
 1.22433 +
 1.22434 +/**
 1.22435 + * @author john resig
 1.22436 + */
 1.22437 +//from jQuery
 1.22438 +function __setArray__( target, array ) {
 1.22439 +    // Resetting the length to 0, then using the native Array push
 1.22440 +    // is a super-fast way to populate an object with array-like properties
 1.22441 +    target.length = 0;
 1.22442 +    Array.prototype.push.apply( target, array );
 1.22443 +}
 1.22444 +
 1.22445 +/**
 1.22446 + * @author ariel flesler
 1.22447 + *    http://flesler.blogspot.com/2008/11/fast-trim-function-for-javascript.html
 1.22448 + * @param {Object} str
 1.22449 + */
 1.22450 +function __trim__( str ){
 1.22451 +    return (str || "").replace( /^\s+|\s+$/g, "" );
 1.22452 +}
 1.22453 +
 1.22454 +
 1.22455 +/**
 1.22456 + * @todo: document
 1.22457 + */
 1.22458 +__extend__(Document.prototype,{
 1.22459 +    load: function(url){
 1.22460 +        if(this.documentURI == 'about:html'){
 1.22461 +            this.location.assign(url);
 1.22462 +        }else if(this.documentURI == url){
 1.22463 +            this.location.reload(false);
 1.22464 +        }else{
 1.22465 +            this.location.replace(url);
 1.22466 +        }
 1.22467 +    },
 1.22468 +    get location(){
 1.22469 +        return new Location(this.documentURI, this);
 1.22470 +    },
 1.22471 +    set location(url){
 1.22472 +        //very important or you will go into an infinite
 1.22473 +        //loop when creating a xml document
 1.22474 +        if(url) {
 1.22475 +            this.location.replace(url);
 1.22476 +        }
 1.22477 +    }
 1.22478 +});
 1.22479 +
 1.22480 +
 1.22481 +HTMLFormElement.prototype.submit = function(){
 1.22482 +    var event = __submit__(this),
 1.22483 +        serialized,
 1.22484 +        xhr,
 1.22485 +        method,
 1.22486 +        action;
 1.22487 +    if(!event.cancelled){
 1.22488 +        serialized = __formSerialize__(this);
 1.22489 +        xhr = new XMLHttpRequest();
 1.22490 +        method = this.method !== ""?this.method:"GET";
 1.22491 +        action = this.action !== ""?this.action:this.ownerDocument.baseURI;
 1.22492 +        xhr.open(method, action, false);
 1.22493 +        xhr.send(data, false);
 1.22494 +        if(xhr.readyState === 4){
 1.22495 +            __exchangeHTMLDocument__(this.ownerDocument, xhr.responseText, url);
 1.22496 +        }
 1.22497 +    }
 1.22498 +};
 1.22499 +
 1.22500 +/**
 1.22501 + * Form Submissions
 1.22502 + *
 1.22503 + * This code is borrow largely from jquery.params and jquery.form.js
 1.22504 + *
 1.22505 + * formToArray() gathers form element data into an array of objects that can
 1.22506 + * be passed to any of the following ajax functions: $.get, $.post, or load.
 1.22507 + * Each object in the array has both a 'name' and 'value' property.  An example of
 1.22508 + * an array for a simple login form might be:
 1.22509 + *
 1.22510 + * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
 1.22511 + *
 1.22512 + * It is this array that is passed to pre-submit callback functions provided to the
 1.22513 + * ajaxSubmit() and ajaxForm() methods.
 1.22514 + *
 1.22515 + * The semantic argument can be used to force form serialization in semantic order.
 1.22516 + * This is normally true anyway, unless the form contains input elements of type='image'.
 1.22517 + * If your form must be submitted with name/value pairs in semantic order and your form
 1.22518 + * contains an input of type='image" then pass true for this arg, otherwise pass false
 1.22519 + * (or nothing) to avoid the overhead for this logic.
 1.22520 + *
 1.22521 + *
 1.22522 + * @name formToArray
 1.22523 + * @param semantic true if serialization must maintain strict semantic ordering of elements (slower)
 1.22524 + * @type Array<Object>
 1.22525 + */
 1.22526 +var __formToArray__ = function(form, semantic) {
 1.22527 +    var array = [],
 1.22528 +        elements = semantic ? form.getElementsByTagName('*') : form.elements,
 1.22529 +        element,
 1.22530 +        i,j,imax, jmax,
 1.22531 +        name,
 1.22532 +        value;
 1.22533 +
 1.22534 +    if (!elements) {
 1.22535 +        return array;
 1.22536 +    }
 1.22537 +
 1.22538 +    imax = elements.length;
 1.22539 +    for(i=0; i < imax; i++) {
 1.22540 +        element = elements[i];
 1.22541 +        name = element.name;
 1.22542 +        if (!name) {
 1.22543 +            continue;
 1.22544 +        }
 1.22545 +        if (semantic && form.clk && element.type === "image") {
 1.22546 +            // handle image inputs on the fly when semantic == true
 1.22547 +            if(!element.disabled && form.clk == element) {
 1.22548 +                array.push({
 1.22549 +                    name: name+'.x',
 1.22550 +                    value: form.clk_x
 1.22551 +                },{
 1.22552 +                    name: name+'.y',
 1.22553 +                    value: form.clk_y
 1.22554 +                });
 1.22555 +            }
 1.22556 +            continue;
 1.22557 +        }
 1.22558 +
 1.22559 +        value = __fieldValue__(element, true);
 1.22560 +        if (value && value.constructor == Array) {
 1.22561 +            jmax = value.length;
 1.22562 +            for(j=0; j < jmax; j++){
 1.22563 +                array.push({name: name, value: value[j]});
 1.22564 +            }
 1.22565 +        } else if (value !== null && typeof value != 'undefined'){
 1.22566 +            array.push({name: name, value: value});
 1.22567 +        }
 1.22568 +    }
 1.22569 +
 1.22570 +    if (!semantic && form.clk) {
 1.22571 +        // input type=='image' are not found in elements array! handle them here
 1.22572 +        elements = form.getElementsByTagName("input");
 1.22573 +        imax = imax=elements.length;
 1.22574 +        for(i=0; i < imax; i++) {
 1.22575 +            element = elements[i];
 1.22576 +            name = element.name;
 1.22577 +            if(name && !element.disabled && element.type == "image" && form.clk == input) {
 1.22578 +                array.push(
 1.22579 +                    {name: name+'.x', value: form.clk_x},
 1.22580 +                    {name: name+'.y', value: form.clk_y});
 1.22581 +            }
 1.22582 +        }
 1.22583 +    }
 1.22584 +    return array;
 1.22585 +};
 1.22586 +
 1.22587 +
 1.22588 +/**
 1.22589 + * Serializes form data into a 'submittable' string. This method will return a string
 1.22590 + * in the format: name1=value1&amp;name2=value2
 1.22591 + *
 1.22592 + * The semantic argument can be used to force form serialization in semantic order.
 1.22593 + * If your form must be submitted with name/value pairs in semantic order then pass
 1.22594 + * true for this arg, otherwise pass false (or nothing) to avoid the overhead for
 1.22595 + * this logic (which can be significant for very large forms).
 1.22596 + *
 1.22597 + *
 1.22598 + * @name formSerialize
 1.22599 + * @param semantic true if serialization must maintain strict semantic ordering of elements (slower)
 1.22600 + * @type String
 1.22601 + */
 1.22602 +var __formSerialize__ = function(form, semantic) {
 1.22603 +    //hand off to param for proper encoding
 1.22604 +    return __param__(__formToArray__(form, semantic));
 1.22605 +};
 1.22606 +
 1.22607 +
 1.22608 +/**
 1.22609 + * Serializes all field elements inputs Array into a query string.
 1.22610 + * This method will return a string in the format: name1=value1&amp;name2=value2
 1.22611 + *
 1.22612 + * The successful argument controls whether or not serialization is limited to
 1.22613 + * 'successful' controls (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
 1.22614 + * The default value of the successful argument is true.
 1.22615 + *
 1.22616 + *
 1.22617 + * @name fieldSerialize
 1.22618 + * @param successful true if only successful controls should be serialized (default is true)
 1.22619 + * @type String
 1.22620 + */
 1.22621 +var __fieldSerialize__ = function(inputs, successful) {
 1.22622 +    var array = [],
 1.22623 +        input,
 1.22624 +        name,
 1.22625 +        value,
 1.22626 +        i,j, imax, jmax;
 1.22627 +
 1.22628 +    imax = inputs.length;
 1.22629 +    for(i=0; i<imax; i++){
 1.22630 +        input = inputs[i];
 1.22631 +        name = input.name;
 1.22632 +        if (!name) {
 1.22633 +            return '';
 1.22634 +        }
 1.22635 +        value = __fieldValue__(input, successful);
 1.22636 +        if (value && value.constructor == Array) {
 1.22637 +            jmax = value.length;
 1.22638 +            for (j=0; j < jmax; j++){
 1.22639 +                array.push({
 1.22640 +                    name: name,
 1.22641 +                    value: value[j]
 1.22642 +                });
 1.22643 +            }
 1.22644 +        }else if (value !== null && typeof value != 'undefined'){
 1.22645 +            array.push({
 1.22646 +                name: input.name,
 1.22647 +                value: value
 1.22648 +            });
 1.22649 +        }
 1.22650 +    }
 1.22651 +
 1.22652 +    //hand off  for proper encoding
 1.22653 +    return __param__(array);
 1.22654 +};
 1.22655 +
 1.22656 +
 1.22657 +/**
 1.22658 + * Returns the value(s) of the element in the matched set.  For example, consider the following form:
 1.22659 + *
 1.22660 + *
 1.22661 + * The successful argument controls whether or not the field element must be 'successful'
 1.22662 + * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
 1.22663 + * The default value of the successful argument is true.  If this value is false the value(s)
 1.22664 + * for each element is returned.
 1.22665 + *
 1.22666 + * Note: This method *always* returns an array.  If no valid value can be determined the
 1.22667 + *       array will be empty, otherwise it will contain one or more values.
 1.22668 + *
 1.22669 + *
 1.22670 + * @name fieldValue
 1.22671 + * @param Boolean successful true if only the values for successful controls
 1.22672 + *        should be returned (default is true)
 1.22673 + * @type Array<String>
 1.22674 + */
 1.22675 +var __fieldValues__ = function(inputs, successful) {
 1.22676 +    var i,
 1.22677 +        imax = inputs.length,
 1.22678 +        element,
 1.22679 +        values = [],
 1.22680 +        value;
 1.22681 +    for (i=0; i < imax; i++) {
 1.22682 +        element = inputs[i];
 1.22683 +        value = __fieldValue__(element, successful);
 1.22684 +        if (value === null || typeof value == 'undefined' ||
 1.22685 +            (value.constructor == Array && !value.length)) {
 1.22686 +            continue;
 1.22687 +        }
 1.22688 +        if (value.constructor == Array) {
 1.22689 +            Array.prototype.push(values, value);
 1.22690 +        } else {
 1.22691 +            values.push(value);
 1.22692 +        }
 1.22693 +    }
 1.22694 +    return values;
 1.22695 +};
 1.22696 +
 1.22697 +/**
 1.22698 + * Returns the value of the field element.
 1.22699 + *
 1.22700 + * The successful argument controls whether or not the field element must be 'successful'
 1.22701 + * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
 1.22702 + * The default value of the successful argument is true.  If the given element is not
 1.22703 + * successful and the successful arg is not false then the returned value will be null.
 1.22704 + *
 1.22705 + * Note: If the successful flag is true (default) but the element is not successful, the return will be null
 1.22706 + * Note: The value returned for a successful select-multiple element will always be an array.
 1.22707 + * Note: If the element has no value the return value will be undefined.
 1.22708 + *
 1.22709 + * @name fieldValue
 1.22710 + * @param Element el The DOM element for which the value will be returned
 1.22711 + * @param Boolean successful true if value returned must be for a successful controls (default is true)
 1.22712 + * @type String or Array<String> or null or undefined
 1.22713 + */
 1.22714 +var __fieldValue__ = function(element, successful) {
 1.22715 +    var name = element.name,
 1.22716 +        type = element.type,
 1.22717 +        tag = element.tagName.toLowerCase(),
 1.22718 +        index,
 1.22719 +        array,
 1.22720 +        options,
 1.22721 +        option,
 1.22722 +        one,
 1.22723 +        i, imax,
 1.22724 +        value;
 1.22725 +
 1.22726 +    if (typeof successful == 'undefined')  {
 1.22727 +        successful = true;
 1.22728 +    }
 1.22729 +
 1.22730 +    if (successful && (!name || element.disabled || type == 'reset' || type == 'button' ||
 1.22731 +             (type == 'checkbox' || type == 'radio') &&  !element.checked ||
 1.22732 +             (type == 'submit' || type == 'image') &&
 1.22733 +             element.form && element.form.clk != element || tag === 'select' &&
 1.22734 +             element.selectedIndex === -1)) {
 1.22735 +            return null;
 1.22736 +    }
 1.22737 +
 1.22738 +    if (tag === 'select') {
 1.22739 +        index = element.selectedIndex;
 1.22740 +        if (index < 0) {
 1.22741 +            return null;
 1.22742 +        }
 1.22743 +        array = [];
 1.22744 +        options = element.options;
 1.22745 +        one = (type == 'select-one');
 1.22746 +        imax = (one ? index+1 : options.length);
 1.22747 +        i = (one ? index : 0);
 1.22748 +        for( i; i < imax; i++) {
 1.22749 +            option = options[i];
 1.22750 +            if (option.selected) {
 1.22751 +                value = option.value;
 1.22752 +                if (one) {
 1.22753 +                    return value;
 1.22754 +                }
 1.22755 +                array.push(value);
 1.22756 +            }
 1.22757 +        }
 1.22758 +        return array;
 1.22759 +    }
 1.22760 +    return element.value;
 1.22761 +};
 1.22762 +
 1.22763 +
 1.22764 +/**
 1.22765 + * Clears the form data.  Takes the following actions on the form's input fields:
 1.22766 + *  - input text fields will have their 'value' property set to the empty string
 1.22767 + *  - select elements will have their 'selectedIndex' property set to -1
 1.22768 + *  - checkbox and radio inputs will have their 'checked' property set to false
 1.22769 + *  - inputs of type submit, button, reset, and hidden will *not* be effected
 1.22770 + *  - button elements will *not* be effected
 1.22771 + *
 1.22772 + *
 1.22773 + * @name clearForm
 1.22774 + */
 1.22775 +var __clearForm__ = function(form) {
 1.22776 +    var i,
 1.22777 +        j, jmax,
 1.22778 +        elements,
 1.22779 +        resetable = ['input','select','textarea'];
 1.22780 +    for(i=0; i<resetable.length; i++){
 1.22781 +        elements = form.getElementsByTagName(resetable[i]);
 1.22782 +        jmax = elements.length;
 1.22783 +        for(j=0;j<jmax;j++){
 1.22784 +            __clearField__(elements[j]);
 1.22785 +        }
 1.22786 +    }
 1.22787 +};
 1.22788 +
 1.22789 +/**
 1.22790 + * Clears the selected form element.  Takes the following actions on the element:
 1.22791 + *  - input text fields will have their 'value' property set to the empty string
 1.22792 + *  - select elements will have their 'selectedIndex' property set to -1
 1.22793 + *  - checkbox and radio inputs will have their 'checked' property set to false
 1.22794 + *  - inputs of type submit, button, reset, and hidden will *not* be effected
 1.22795 + *  - button elements will *not* be effected
 1.22796 + *
 1.22797 + * @name clearFields
 1.22798 + */
 1.22799 +var __clearField__ = function(element) {
 1.22800 +    var type = element.type,
 1.22801 +        tag = element.tagName.toLowerCase();
 1.22802 +    if (type == 'text' || type == 'password' || tag === 'textarea') {
 1.22803 +        element.value = '';
 1.22804 +    } else if (type == 'checkbox' || type == 'radio') {
 1.22805 +        element.checked = false;
 1.22806 +    } else if (tag === 'select') {
 1.22807 +        element.selectedIndex = -1;
 1.22808 +    }
 1.22809 +};
 1.22810 +
 1.22811 +
 1.22812 +// Serialize an array of key/values into a query string
 1.22813 +var __param__= function( array ) {
 1.22814 +    var i, serialized = [];
 1.22815 +
 1.22816 +    // Serialize the key/values
 1.22817 +    for(i=0; i<array.length; i++){
 1.22818 +        serialized[ serialized.length ] =
 1.22819 +            encodeURIComponent(array[i].name) + '=' +
 1.22820 +            encodeURIComponent(array[i].value);
 1.22821 +    }
 1.22822 +
 1.22823 +    // Return the resulting serialization
 1.22824 +    return serialized.join("&").replace(/%20/g, "+");
 1.22825 +};
 1.22826 +
 1.22827 +/**
 1.22828 + * Location
 1.22829 + *
 1.22830 + * Mozilla MDC:
 1.22831 + * https://developer.mozilla.org/En/DOM/Window.location
 1.22832 + * https://developer.mozilla.org/en/DOM/document.location
 1.22833 + *
 1.22834 + * HTML5: 6.10.4 The Location interface
 1.22835 + * http://dev.w3.org/html5/spec/Overview.html#location
 1.22836 + *
 1.22837 + * HTML5: 2.5.3 Interfaces for URL manipulation
 1.22838 + * http://dev.w3.org/html5/spec/Overview.html#url-decomposition-idl-attributes
 1.22839 + * All of section 2.5 is worth reading, but 2.5.3 contains very
 1.22840 + * detailed information on how getters/setter should work
 1.22841 + *
 1.22842 + * NOT IMPLEMENTED:
 1.22843 + *  HTML5: Section 6.10.4.1 Security -- prevents scripts from another domain
 1.22844 + *   from accessing most of the 'Location'
 1.22845 + *  Not sure if anyone implements this in HTML4
 1.22846 + */
 1.22847 +
 1.22848 +Location = function(url, doc, history) {
 1.22849 +    //console.log('Location url %s', url);
 1.22850 +    var $url = url,
 1.22851 +    $document = doc ? doc : null,
 1.22852 +    $history = history ? history : null;
 1.22853 +
 1.22854 +    var parts = Envjs.urlsplit($url);
 1.22855 +
 1.22856 +    return {
 1.22857 +        get hash() {
 1.22858 +            return parts.fragment ? '#' + parts.fragment : parts.fragment;
 1.22859 +        },
 1.22860 +        set hash(s) {
 1.22861 +            if (s[0] === '#') {
 1.22862 +                parts.fragment = s.substr(1);
 1.22863 +            } else {
 1.22864 +                parts.fragment = s;
 1.22865 +            }
 1.22866 +            $url = Envjs.urlunsplit(parts);
 1.22867 +            if ($history) {
 1.22868 +                $history.add($url, 'hash');
 1.22869 +            }
 1.22870 +        },
 1.22871 +
 1.22872 +        get host() {
 1.22873 +            return parts.netloc;
 1.22874 +        },
 1.22875 +        set host(s) {
 1.22876 +            if (!s || s === '') {
 1.22877 +                return;
 1.22878 +            }
 1.22879 +
 1.22880 +            parts.netloc = s;
 1.22881 +            $url = Envjs.urlunsplit(parts);
 1.22882 +
 1.22883 +            // this regenerates hostname & port
 1.22884 +            parts = Envjs.urlsplit($url);
 1.22885 +
 1.22886 +            if ($history) {
 1.22887 +                $history.add( $url, 'host');
 1.22888 +            }
 1.22889 +            this.assign($url);
 1.22890 +        },
 1.22891 +
 1.22892 +        get hostname() {
 1.22893 +            return parts.hostname;
 1.22894 +        },
 1.22895 +        set hostname(s) {
 1.22896 +            if (!s || s === '') {
 1.22897 +                return;
 1.22898 +            }
 1.22899 +
 1.22900 +            parts.netloc = s;
 1.22901 +            if (parts.port != '') {
 1.22902 +                parts.netloc += ':' + parts.port;
 1.22903 +            }
 1.22904 +            parts.hostname = s;
 1.22905 +            $url = Envjs.urlunsplit(parts);
 1.22906 +            if ($history) {
 1.22907 +                $history.add( $url, 'hostname');
 1.22908 +            }
 1.22909 +            this.assign($url);
 1.22910 +        },
 1.22911 +
 1.22912 +        get href() {
 1.22913 +            return $url;
 1.22914 +        },
 1.22915 +        set href(url) {
 1.22916 +            $url = url;
 1.22917 +            if ($history) {
 1.22918 +                $history.add($url, 'href');
 1.22919 +            }
 1.22920 +            this.assign($url);
 1.22921 +        },
 1.22922 +
 1.22923 +        get pathname() {
 1.22924 +            return parts.path;
 1.22925 +        },
 1.22926 +        set pathname(s) {
 1.22927 +            if (s[0] === '/') {
 1.22928 +                parts.path = s;
 1.22929 +            } else {
 1.22930 +                parts.path = '/' + s;
 1.22931 +            }
 1.22932 +            $url = Envjs.urlunsplit(parts);
 1.22933 +
 1.22934 +            if ($history) {
 1.22935 +                $history.add($url, 'pathname');
 1.22936 +            }
 1.22937 +            this.assign($url);
 1.22938 +        },
 1.22939 +
 1.22940 +        get port() {
 1.22941 +            // make sure it's a string
 1.22942 +            return '' + parts.port;
 1.22943 +        },
 1.22944 +        set port(p) {
 1.22945 +            // make a string
 1.22946 +            var s = '' + p;
 1.22947 +            parts.port = s;
 1.22948 +            parts.netloc = parts.hostname + ':' + parts.port;
 1.22949 +            $url = Envjs.urlunsplit(parts);
 1.22950 +            if ($history) {
 1.22951 +                $history.add( $url, 'port');
 1.22952 +            }
 1.22953 +            this.assign($url);
 1.22954 +        },
 1.22955 +
 1.22956 +        get protocol() {
 1.22957 +            return parts.scheme + ':';
 1.22958 +        },
 1.22959 +        set protocol(s) {
 1.22960 +            var i = s.indexOf(':');
 1.22961 +            if (i != -1) {
 1.22962 +                s = s.substr(0,i);
 1.22963 +            }
 1.22964 +            parts.scheme = s;
 1.22965 +            $url = Envjs.urlunsplit(parts);
 1.22966 +            if ($history) {
 1.22967 +                $history.add($url, 'protocol');
 1.22968 +            }
 1.22969 +            this.assign($url);
 1.22970 +        },
 1.22971 +
 1.22972 +        get search() {
 1.22973 +            return (parts.query) ? '?' + parts.query : parts.query;
 1.22974 +        },
 1.22975 +        set search(s) {
 1.22976 +            if (s[0] == '?') {
 1.22977 +                s = s.substr(1);
 1.22978 +            }
 1.22979 +            parts.query = s;
 1.22980 +            $url = Envjs.urlunsplit(parts);
 1.22981 +            if ($history) {
 1.22982 +                $history.add($url, 'search');
 1.22983 +            }
 1.22984 +            this.assign($url);
 1.22985 +        },
 1.22986 +
 1.22987 +        toString: function() {
 1.22988 +            return $url;
 1.22989 +        },
 1.22990 +
 1.22991 +        assign: function(url) {
 1.22992 +            var _this = this,
 1.22993 +                xhr,
 1.22994 +                event,
 1.22995 +                cookie;
 1.22996 +
 1.22997 +            //console.log('assigning %s',url);
 1.22998 +
 1.22999 +            // update closure upvars
 1.23000 +            $url = url;
 1.23001 +            parts = Envjs.urlsplit($url);
 1.23002 +
 1.23003 +            //we can only assign if this Location is associated with a document
 1.23004 +            if ($document) {
 1.23005 +                //console.log('fetching %s (async? %s)', url, $document.async);
 1.23006 +                xhr = new XMLHttpRequest();
 1.23007 +
 1.23008 +                // TODO: make async flag a Envjs paramter
 1.23009 +                xhr.open('GET', url, false);//$document.async);
 1.23010 +
 1.23011 +                // TODO: is there a better way to test if a node is an HTMLDocument?
 1.23012 +                if ($document.toString() === '[object HTMLDocument]') {
 1.23013 +                    //tell the xhr to not parse the document as XML
 1.23014 +                    //console.log('loading html document');
 1.23015 +                    xhr.onreadystatechange = function() {
 1.23016 +                        //console.log('readyState %s', xhr.readyState);
 1.23017 +                        if (xhr.readyState === 4) {
 1.23018 +                            $document.baseURI = new Location(url, $document);
 1.23019 +                            //console.log('new document baseURI %s', $document.baseURI);
 1.23020 +                            __exchangeHTMLDocument__($document, xhr.responseText, url);
 1.23021 +                        }
 1.23022 +                    };
 1.23023 +                    xhr.send(null, false);
 1.23024 +                } else {
 1.23025 +                    //Treat as an XMLDocument
 1.23026 +                    xhr.onreadystatechange = function() {
 1.23027 +                        if (xhr.readyState === 4) {
 1.23028 +                            $document = xhr.responseXML;
 1.23029 +                            $document.baseURI = $url;
 1.23030 +                            if ($document.createEvent) {
 1.23031 +                                event = $document.createEvent('Event');
 1.23032 +                                event.initEvent('DOMContentLoaded');
 1.23033 +                                $document.dispatchEvent( event, false );
 1.23034 +                            }
 1.23035 +                        }
 1.23036 +                    };
 1.23037 +                    xhr.send();
 1.23038 +                }
 1.23039 +
 1.23040 +            };
 1.23041 +
 1.23042 +        },
 1.23043 +        reload: function(forceget) {
 1.23044 +            //for now we have no caching so just proxy to assign
 1.23045 +            //console.log('reloading %s',$url);
 1.23046 +            this.assign($url);
 1.23047 +        },
 1.23048 +        replace: function(url) {
 1.23049 +            this.assign(url);
 1.23050 +        }
 1.23051 +    };
 1.23052 +};
 1.23053 +
 1.23054 +var __exchangeHTMLDocument__ = function(doc, text, url) {
 1.23055 +    var html, head, title, body, event, e;
 1.23056 +    // try {
 1.23057 +        doc.baseURI = url;
 1.23058 +        HTMLParser.parseDocument(text, doc);
 1.23059 +        Envjs.wait();
 1.23060 +    /* } catch (e) {
 1.23061 +        console.log('parsererror %s', e);
 1.23062 +        try {
 1.23063 +            console.log('document \n %s', doc.documentElement.outerHTML);
 1.23064 +        } catch (e) {
 1.23065 +            // swallow
 1.23066 +        }
 1.23067 +        doc = new HTMLDocument(new DOMImplementation(), doc.ownerWindow);
 1.23068 +        html =    doc.createElement('html');
 1.23069 +        head =    doc.createElement('head');
 1.23070 +        title =   doc.createElement('title');
 1.23071 +        body =    doc.createElement('body');
 1.23072 +        title.appendChild(doc.createTextNode('Error'));
 1.23073 +        body.appendChild(doc.createTextNode('' + e));
 1.23074 +        head.appendChild(title);
 1.23075 +        html.appendChild(head);
 1.23076 +        html.appendChild(body);
 1.23077 +        doc.appendChild(html);
 1.23078 +        //console.log('default error document \n %s', doc.documentElement.outerHTML);
 1.23079 +
 1.23080 +        //DOMContentLoaded event
 1.23081 +        if (doc.createEvent) {
 1.23082 +            event = doc.createEvent('Event');
 1.23083 +            event.initEvent('DOMContentLoaded', false, false);
 1.23084 +            doc.dispatchEvent( event, false );
 1.23085 +
 1.23086 +            event = doc.createEvent('HTMLEvents');
 1.23087 +            event.initEvent('load', false, false);
 1.23088 +            doc.dispatchEvent( event, false );
 1.23089 +        }
 1.23090 +
 1.23091 +        //finally fire the window.onload event
 1.23092 +        //TODO: this belongs in window.js which is a event
 1.23093 +        //      event handler for DOMContentLoaded on document
 1.23094 +
 1.23095 +        try {
 1.23096 +            if (doc === window.document) {
 1.23097 +                console.log('triggering window.load');
 1.23098 +                event = doc.createEvent('HTMLEvents');
 1.23099 +                event.initEvent('load', false, false);
 1.23100 +                window.dispatchEvent( event, false );
 1.23101 +            }
 1.23102 +        } catch (e) {
 1.23103 +            //console.log('window load event failed %s', e);
 1.23104 +            //swallow
 1.23105 +        }
 1.23106 +    }; */  /* closes return {... */
 1.23107 +};
 1.23108 +
 1.23109 +/**
 1.23110 + *
 1.23111 + * @class XMLHttpRequest
 1.23112 + * @author Originally implemented by Yehuda Katz
 1.23113 + *
 1.23114 + */
 1.23115 +
 1.23116 +// this implementation can be used without requiring a DOMParser
 1.23117 +// assuming you dont try to use it to get xml/html documents
 1.23118 +var domparser;
 1.23119 +
 1.23120 +XMLHttpRequest = function(){
 1.23121 +    this.headers = {};
 1.23122 +    this.responseHeaders = {};
 1.23123 +    this.aborted = false;//non-standard
 1.23124 +};
 1.23125 +
 1.23126 +// defined by the standard: http://www.w3.org/TR/XMLHttpRequest/#xmlhttprequest
 1.23127 +// but not provided by Firefox.  Safari and others do define it.
 1.23128 +XMLHttpRequest.UNSENT = 0;
 1.23129 +XMLHttpRequest.OPEN = 1;
 1.23130 +XMLHttpRequest.HEADERS_RECEIVED = 2;
 1.23131 +XMLHttpRequest.LOADING = 3;
 1.23132 +XMLHttpRequest.DONE = 4;
 1.23133 +
 1.23134 +XMLHttpRequest.prototype = {
 1.23135 +    open: function(method, url, async, user, password){
 1.23136 +        //console.log('openning xhr %s %s %s', method, url, async);
 1.23137 +        this.readyState = 1;
 1.23138 +        this.async = (async === false)?false:true;
 1.23139 +        this.method = method || "GET";
 1.23140 +        this.url = Envjs.uri(url);
 1.23141 +        this.onreadystatechange();
 1.23142 +    },
 1.23143 +    setRequestHeader: function(header, value){
 1.23144 +        this.headers[header] = value;
 1.23145 +    },
 1.23146 +    send: function(data, parsedoc/*non-standard*/){
 1.23147 +        var _this = this;
 1.23148 +        parsedoc = (parsedoc === undefined)?true:!!parsedoc;
 1.23149 +        function makeRequest(){
 1.23150 +            var cookie = Envjs.getCookies(_this.url);
 1.23151 +            if(cookie){
 1.23152 +                _this.setRequestHeader('COOKIE', cookie);
 1.23153 +            }
 1.23154 +            Envjs.connection(_this, function(){
 1.23155 +                if (!_this.aborted){
 1.23156 +                    var doc = null,
 1.23157 +                        domparser,
 1.23158 +                        cookie;
 1.23159 +                    // try to parse the document if we havent explicitly set a
 1.23160 +                    // flag saying not to and if we can assure the text at least
 1.23161 +                    // starts with valid xml
 1.23162 +                    if ( parsedoc && _this.responseText.match(/^\s*</) ) {
 1.23163 +                        domparser = domparser||new DOMParser();
 1.23164 +                        try {
 1.23165 +                            //console.log("parsing response text into xml document");
 1.23166 +                            doc = domparser.parseFromString(_this.responseText+"", 'text/xml');
 1.23167 +                        } catch(e) {
 1.23168 +                            //Envjs.error('response XML does not appear to be well formed xml', e);
 1.23169 +                            console.warn('parseerror \n%s', e);
 1.23170 +                            doc = document.implementation.createDocument('','error',null);
 1.23171 +                            doc.appendChild(doc.createTextNode(e+''));
 1.23172 +                        }
 1.23173 +                    }else{
 1.23174 +                        //Envjs.warn('response XML does not appear to be xml');
 1.23175 +                    }
 1.23176 +                    
 1.23177 +                    try{
 1.23178 +                        cookie = _this.getResponseHeader('SET-COOKIE');
 1.23179 +                        if(cookie){
 1.23180 +                             Envjs.setCookie(_this.url, cookie);
 1.23181 +                        }
 1.23182 +                    }catch(e){
 1.23183 +                        console.warn("Failed to set cookie");
 1.23184 +                    }
 1.23185 +                    _this.__defineGetter__("responseXML", function(){
 1.23186 +                        return doc;
 1.23187 +                    });
 1.23188 +                }
 1.23189 +            }, data);
 1.23190 +
 1.23191 +            if (!_this.aborted){
 1.23192 +                _this.onreadystatechange();
 1.23193 +            }
 1.23194 +        }
 1.23195 +
 1.23196 +        if (this.async){
 1.23197 +            //TODO: what we really need to do here is rejoin the
 1.23198 +            //      current thread and call onreadystatechange via
 1.23199 +            //      setTimeout so the callback is essentially applied
 1.23200 +            //      at the end of the current callstack
 1.23201 +            //console.log('requesting async: %s', this.url);
 1.23202 +            Envjs.runAsync(makeRequest);
 1.23203 +        }else{
 1.23204 +            //console.log('requesting sync: %s', this.url);
 1.23205 +            makeRequest();
 1.23206 +        }
 1.23207 +    },
 1.23208 +    abort: function(){
 1.23209 +        this.aborted = true;
 1.23210 +    },
 1.23211 +    onreadystatechange: function(){
 1.23212 +        //Instance specific
 1.23213 +    },
 1.23214 +    getResponseHeader: function(header){
 1.23215 +        //$debug('GETTING RESPONSE HEADER '+header);
 1.23216 +        var rHeader, returnedHeaders;
 1.23217 +        if (this.readyState < 3){
 1.23218 +            throw new Error("INVALID_STATE_ERR");
 1.23219 +        } else {
 1.23220 +            returnedHeaders = [];
 1.23221 +            for (rHeader in this.responseHeaders) {
 1.23222 +                if (rHeader.match(new RegExp(header, "i"))) {
 1.23223 +                    returnedHeaders.push(this.responseHeaders[rHeader]);
 1.23224 +                }
 1.23225 +            }
 1.23226 +
 1.23227 +            if (returnedHeaders.length){
 1.23228 +                //$debug('GOT RESPONSE HEADER '+returnedHeaders.join(", "));
 1.23229 +                return returnedHeaders.join(", ");
 1.23230 +            }
 1.23231 +        }
 1.23232 +        return null;
 1.23233 +    },
 1.23234 +    getAllResponseHeaders: function(){
 1.23235 +        var header, returnedHeaders = [];
 1.23236 +        if (this.readyState < 3){
 1.23237 +            throw new Error("INVALID_STATE_ERR");
 1.23238 +        } else {
 1.23239 +            for (header in this.responseHeaders) {
 1.23240 +                returnedHeaders.push( header + ": " + this.responseHeaders[header] );
 1.23241 +            }
 1.23242 +        }
 1.23243 +        return returnedHeaders.join("\r\n");
 1.23244 +    },
 1.23245 +    async: true,
 1.23246 +    readyState: 0,
 1.23247 +    responseText: "",
 1.23248 +    status: 0,
 1.23249 +    statusText: ""
 1.23250 +};
 1.23251 +
 1.23252 +/**
 1.23253 + * @author john resig & the envjs team
 1.23254 + * @uri http://www.envjs.com/
 1.23255 + * @copyright 2008-2010
 1.23256 + * @license MIT
 1.23257 + */
 1.23258 +//CLOSURE_END
 1.23259 +}());
 1.23260 +
 1.23261 +/**
 1.23262 + * @todo: document
 1.23263 + */
 1.23264 +var Window,
 1.23265 +    Screen,
 1.23266 +    History,
 1.23267 +    Navigator;
 1.23268 +
 1.23269 +
 1.23270 +/*
 1.23271 + * Envjs window.1.2.13 
 1.23272 + * Pure JavaScript Browser Environment
 1.23273 + * By John Resig <http://ejohn.org/> and the Envjs Team
 1.23274 + * Copyright 2008-2010 John Resig, under the MIT License
 1.23275 + */
 1.23276 +
 1.23277 +//CLOSURE_START
 1.23278 +(function(){
 1.23279 +
 1.23280 +
 1.23281 +
 1.23282 +
 1.23283 +
 1.23284 +/**
 1.23285 + * @author john resig
 1.23286 + */
 1.23287 +// Helper method for extending one object with another.
 1.23288 +function __extend__(a,b) {
 1.23289 +    for ( var i in b ) {
 1.23290 +        var g = b.__lookupGetter__(i), s = b.__lookupSetter__(i);
 1.23291 +        if ( g || s ) {
 1.23292 +            if ( g ) { a.__defineGetter__(i, g); }
 1.23293 +            if ( s ) { a.__defineSetter__(i, s); }
 1.23294 +        } else {
 1.23295 +            a[i] = b[i];
 1.23296 +        }
 1.23297 +    } return a;
 1.23298 +}
 1.23299 +
 1.23300 +/**
 1.23301 + * @todo: document
 1.23302 + */
 1.23303 +
 1.23304 +__extend__(HTMLFrameElement.prototype,{
 1.23305 +
 1.23306 +    get contentDocument(){
 1.23307 +        return this.contentWindow?
 1.23308 +            this.contentWindow.document:
 1.23309 +            null;
 1.23310 +    },
 1.23311 +    set src(value){
 1.23312 +        var event;
 1.23313 +        this.setAttribute('src', value);
 1.23314 +        if (this.parentNode && value && value.length > 0){
 1.23315 +            //console.log('loading frame %s', value);
 1.23316 +            Envjs.loadFrame(this, Envjs.uri(value));
 1.23317 +
 1.23318 +            //console.log('event frame load %s', value);
 1.23319 +            event = this.ownerDocument.createEvent('HTMLEvents');
 1.23320 +            event.initEvent("load", false, false);
 1.23321 +            this.dispatchEvent( event, false );
 1.23322 +        }
 1.23323 +    }
 1.23324 +
 1.23325 +});
 1.23326 +
 1.23327 +/*
 1.23328 + *       history.js
 1.23329 + *
 1.23330 + */
 1.23331 +
 1.23332 +History = function(owner) {
 1.23333 +    var $current = 0,
 1.23334 +        $history = [null],
 1.23335 +        $owner = owner;
 1.23336 +
 1.23337 +    return {
 1.23338 +        go : function(target) {
 1.23339 +            if (typeof target === "number") {
 1.23340 +                target = $current + target;
 1.23341 +                if (target > -1 && target < $history.length){
 1.23342 +                    if ($history[target].type === "hash") {
 1.23343 +                        if ($owner.location) {
 1.23344 +                            $owner.location.hash = $history[target].value;
 1.23345 +                        }
 1.23346 +                    } else {
 1.23347 +                        if ($owner.location) {
 1.23348 +                            $owner.location = $history[target].value;
 1.23349 +                        }
 1.23350 +                    }
 1.23351 +                    $current = target;
 1.23352 +                }
 1.23353 +            } else {
 1.23354 +                //TODO: walk through the history and find the 'best match'?
 1.23355 +            }
 1.23356 +        },
 1.23357 +
 1.23358 +        get length() {
 1.23359 +            return $history.length;
 1.23360 +        },
 1.23361 +
 1.23362 +        back : function(count) {
 1.23363 +            if (count) {
 1.23364 +                this.go(-count);
 1.23365 +            } else {
 1.23366 +                this.go(-1);
 1.23367 +            }
 1.23368 +        },
 1.23369 +
 1.23370 +        get current() {
 1.23371 +            return this.item($current);
 1.23372 +        },
 1.23373 +
 1.23374 +        get previous() {
 1.23375 +            return this.item($current-1);
 1.23376 +        },
 1.23377 +
 1.23378 +        forward : function(count) {
 1.23379 +            if (count) {
 1.23380 +                this.go(count);
 1.23381 +            } else {
 1.23382 +                this.go(1);
 1.23383 +            }
 1.23384 +        },
 1.23385 +
 1.23386 +        item: function(idx) {
 1.23387 +            if (idx >= 0 && idx < $history.length) {
 1.23388 +                return $history[idx];
 1.23389 +            } else {
 1.23390 +                return null;
 1.23391 +            }
 1.23392 +        },
 1.23393 +
 1.23394 +        add: function(newLocation, type) {
 1.23395 +            //not a standard interface, we expose it to simplify
 1.23396 +            //history state modifications
 1.23397 +            if (newLocation !== $history[$current]) {
 1.23398 +                $history.slice(0, $current);
 1.23399 +                $history.push({
 1.23400 +                    type: type || 'href',
 1.23401 +                    value: newLocation
 1.23402 +                });
 1.23403 +            }
 1.23404 +        }
 1.23405 +    }; /* closes 'return {' */
 1.23406 +};
 1.23407 +
 1.23408 +
 1.23409 +/*
 1.23410 + *      navigator.js
 1.23411 + *  Browser Navigator
 1.23412 + */
 1.23413 +Navigator = function(){
 1.23414 +
 1.23415 +    return {
 1.23416 +        get appCodeName(){
 1.23417 +            return Envjs.appCodeName;
 1.23418 +        },
 1.23419 +        get appName(){
 1.23420 +            return Envjs.appName;
 1.23421 +        },
 1.23422 +        get appVersion(){
 1.23423 +            return Envjs.version +" ("+
 1.23424 +                this.platform +"; "+
 1.23425 +                "U; "+//?
 1.23426 +                Envjs.os_name+" "+Envjs.os_arch+" "+Envjs.os_version+"; "+
 1.23427 +                (Envjs.lang?Envjs.lang:"en-US")+"; "+
 1.23428 +                "rv:"+Envjs.revision+
 1.23429 +                ")";
 1.23430 +        },
 1.23431 +        get cookieEnabled(){
 1.23432 +            return true;
 1.23433 +        },
 1.23434 +        get mimeTypes(){
 1.23435 +            return [];
 1.23436 +        },
 1.23437 +        get platform(){
 1.23438 +            return Envjs.platform;
 1.23439 +        },
 1.23440 +        get plugins(){
 1.23441 +            return [];
 1.23442 +        },
 1.23443 +        get userAgent(){
 1.23444 +            return this.appCodeName + "/" + this.appVersion + " " + this.appName;
 1.23445 +        },
 1.23446 +        javaEnabled : function(){
 1.23447 +            return Envjs.javaEnabled;
 1.23448 +        }
 1.23449 +    };
 1.23450 +};
 1.23451 +
 1.23452 +
 1.23453 +/**
 1.23454 + * Screen
 1.23455 + * @param {Object} __window__
 1.23456 + */
 1.23457 +
 1.23458 +Screen = function(__window__){
 1.23459 +
 1.23460 +    var $availHeight  = 600,
 1.23461 +        $availWidth   = 800,
 1.23462 +        $colorDepth   = 16,
 1.23463 +        $pixelDepth   = 24,
 1.23464 +        $height       = 600,
 1.23465 +        $width        = 800,
 1.23466 +        $top          = 0,
 1.23467 +        $left         = 0,
 1.23468 +        $availTop     = 0,
 1.23469 +        $availLeft    = 0;
 1.23470 +
 1.23471 +    __extend__( __window__, {
 1.23472 +        moveBy : function(dx,dy){
 1.23473 +            //TODO - modify $locals to reflect change
 1.23474 +        },
 1.23475 +        moveTo : function(x,y) {
 1.23476 +            //TODO - modify $locals to reflect change
 1.23477 +        },
 1.23478 +        /*print : function(){
 1.23479 +            //TODO - good global to modify to ensure print is not misused
 1.23480 +        };*/
 1.23481 +        resizeBy : function(dw, dh){
 1.23482 +            __window__resizeTo($width + dw, $height + dh);
 1.23483 +        },
 1.23484 +        resizeTo : function(width, height){
 1.23485 +            $width = (width <= $availWidth) ? width : $availWidth;
 1.23486 +            $height = (height <= $availHeight) ? height : $availHeight;
 1.23487 +        },
 1.23488 +        scroll : function(x,y){
 1.23489 +            //TODO - modify $locals to reflect change
 1.23490 +        },
 1.23491 +        scrollBy : function(dx, dy){
 1.23492 +            //TODO - modify $locals to reflect change
 1.23493 +        },
 1.23494 +        scrollTo : function(x,y){
 1.23495 +            //TODO - modify $locals to reflect change
 1.23496 +        }
 1.23497 +    });
 1.23498 +
 1.23499 +    return {
 1.23500 +        get top(){
 1.23501 +            return $top;
 1.23502 +        },
 1.23503 +        get left(){
 1.23504 +            return $left;
 1.23505 +        },
 1.23506 +        get availTop(){
 1.23507 +            return $availTop;
 1.23508 +        },
 1.23509 +        get availLeft(){
 1.23510 +            return $availLeft;
 1.23511 +        },
 1.23512 +        get availHeight(){
 1.23513 +            return $availHeight;
 1.23514 +        },
 1.23515 +        get availWidth(){
 1.23516 +            return $availWidth;
 1.23517 +        },
 1.23518 +        get colorDepth(){
 1.23519 +            return $colorDepth;
 1.23520 +        },
 1.23521 +        get pixelDepth(){
 1.23522 +            return $pixelDepth;
 1.23523 +        },
 1.23524 +        get height(){
 1.23525 +            return $height;
 1.23526 +        },
 1.23527 +        get width(){
 1.23528 +            return $width;
 1.23529 +        }
 1.23530 +    };
 1.23531 +};
 1.23532 +
 1.23533 +/*
 1.23534 + * Copyright (c) 2010 Nick Galbreath
 1.23535 + * http://code.google.com/p/stringencoders/source/browse/#svn/trunk/javascript
 1.23536 + *
 1.23537 + * Permission is hereby granted, free of charge, to any person
 1.23538 + * obtaining a copy of this software and associated documentation
 1.23539 + * files (the "Software"), to deal in the Software without
 1.23540 + * restriction, including without limitation the rights to use,
 1.23541 + * copy, modify, merge, publish, distribute, sublicense, and/or sell
 1.23542 + * copies of the Software, and to permit persons to whom the
 1.23543 + * Software is furnished to do so, subject to the following
 1.23544 + * conditions:
 1.23545 + *
 1.23546 + * The above copyright notice and this permission notice shall be
 1.23547 + * included in all copies or substantial portions of the Software.
 1.23548 + *
 1.23549 + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
 1.23550 + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
 1.23551 + * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
 1.23552 + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
 1.23553 + * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
 1.23554 + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
 1.23555 + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
 1.23556 + * OTHER DEALINGS IN THE SOFTWARE.
 1.23557 + */
 1.23558 +
 1.23559 +/* base64 encode/decode compatible with window.btoa/atob
 1.23560 + *
 1.23561 + * window.atob/btoa is a Firefox extension to convert binary data (the "b")
 1.23562 + * to base64 (ascii, the "a").
 1.23563 + *
 1.23564 + * It is also found in Safari and Chrome.  It is not available in IE.
 1.23565 + *
 1.23566 + * if (!window.btoa) window.btoa = base64.encode
 1.23567 + * if (!window.atob) window.atob = base64.decode
 1.23568 + *
 1.23569 + * The original spec's for atob/btoa are a bit lacking
 1.23570 + * https://developer.mozilla.org/en/DOM/window.atob
 1.23571 + * https://developer.mozilla.org/en/DOM/window.btoa
 1.23572 + *
 1.23573 + * window.btoa and base64.encode takes a string where charCodeAt is [0,255]
 1.23574 + * If any character is not [0,255], then an DOMException(5) is thrown.
 1.23575 + *
 1.23576 + * window.atob and base64.decode take a base64-encoded string
 1.23577 + * If the input length is not a multiple of 4, or contains invalid characters
 1.23578 + *   then an DOMException(5) is thrown.
 1.23579 + */
 1.23580 +var base64 = {};
 1.23581 +base64.PADCHAR = '=';
 1.23582 +base64.ALPHA = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
 1.23583 +
 1.23584 +base64.makeDOMException = function() {
 1.23585 +    // sadly in FF,Safari,Chrome you can't make a DOMException
 1.23586 +    var e, tmp;
 1.23587 +
 1.23588 +    try {
 1.23589 +        return new DOMException(DOMException.INVALID_CHARACTER_ERR);
 1.23590 +    } catch (tmp) {
 1.23591 +        // not available, just passback a duck-typed equiv
 1.23592 +        // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Error
 1.23593 +        // https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Global_Objects/Error/prototype
 1.23594 +        var ex = new Error("DOM Exception 5");
 1.23595 +
 1.23596 +        // ex.number and ex.description is IE-specific.
 1.23597 +        ex.code = ex.number = 5;
 1.23598 +        ex.name = ex.description = "INVALID_CHARACTER_ERR";
 1.23599 +
 1.23600 +        // Safari/Chrome output format
 1.23601 +        ex.toString = function() { return 'Error: ' + ex.name + ': ' + ex.message; };
 1.23602 +        return ex;
 1.23603 +    }
 1.23604 +};
 1.23605 +
 1.23606 +base64.getbyte64 = function(s,i) {
 1.23607 +    // This is oddly fast, except on Chrome/V8.
 1.23608 +    //  Minimal or no improvement in performance by using a
 1.23609 +    //   object with properties mapping chars to value (eg. 'A': 0)
 1.23610 +    var idx = base64.ALPHA.indexOf(s.charAt(i));
 1.23611 +    if (idx === -1) {
 1.23612 +        throw base64.makeDOMException();
 1.23613 +    }
 1.23614 +    return idx;
 1.23615 +};
 1.23616 +
 1.23617 +base64.decode = function(s) {
 1.23618 +    // convert to string
 1.23619 +    s = '' + s;
 1.23620 +    var getbyte64 = base64.getbyte64;
 1.23621 +    var pads, i, b10;
 1.23622 +    var imax = s.length;
 1.23623 +    if (imax === 0) {
 1.23624 +        return s;
 1.23625 +    }
 1.23626 +
 1.23627 +    if (imax % 4 !== 0) {
 1.23628 +        throw base64.makeDOMException();
 1.23629 +    }
 1.23630 +
 1.23631 +    pads = 0;
 1.23632 +    if (s.charAt(imax - 1) === base64.PADCHAR) {
 1.23633 +        pads = 1;
 1.23634 +        if (s.charAt(imax - 2) === base64.PADCHAR) {
 1.23635 +            pads = 2;
 1.23636 +        }
 1.23637 +        // either way, we want to ignore this last block
 1.23638 +        imax -= 4;
 1.23639 +    }
 1.23640 +
 1.23641 +    var x = [];
 1.23642 +    for (i = 0; i < imax; i += 4) {
 1.23643 +        b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12) |
 1.23644 +            (getbyte64(s,i+2) << 6) | getbyte64(s,i+3);
 1.23645 +        x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 0xff, b10 & 0xff));
 1.23646 +    }
 1.23647 +
 1.23648 +    switch (pads) {
 1.23649 +    case 1:
 1.23650 +        b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12) | (getbyte64(s,i+2) << 6);
 1.23651 +        x.push(String.fromCharCode(b10 >> 16, (b10 >> 8) & 0xff));
 1.23652 +        break;
 1.23653 +    case 2:
 1.23654 +        b10 = (getbyte64(s,i) << 18) | (getbyte64(s,i+1) << 12);
 1.23655 +        x.push(String.fromCharCode(b10 >> 16));
 1.23656 +        break;
 1.23657 +    }
 1.23658 +    return x.join('');
 1.23659 +};
 1.23660 +
 1.23661 +base64.getbyte = function(s,i) {
 1.23662 +    var x = s.charCodeAt(i);
 1.23663 +    if (x > 255) {
 1.23664 +        throw base64.makeDOMException();
 1.23665 +    }
 1.23666 +    return x;
 1.23667 +};
 1.23668 +
 1.23669 +base64.encode = function(s) {
 1.23670 +    if (arguments.length !== 1) {
 1.23671 +        throw new SyntaxError("Not enough arguments");
 1.23672 +    }
 1.23673 +    var padchar = base64.PADCHAR;
 1.23674 +    var alpha   = base64.ALPHA;
 1.23675 +    var getbyte = base64.getbyte;
 1.23676 +
 1.23677 +    var i, b10;
 1.23678 +    var x = [];
 1.23679 +
 1.23680 +    // convert to string
 1.23681 +    s = '' + s;
 1.23682 +
 1.23683 +    var imax = s.length - s.length % 3;
 1.23684 +
 1.23685 +    if (s.length === 0) {
 1.23686 +        return s;
 1.23687 +    }
 1.23688 +    for (i = 0; i < imax; i += 3) {
 1.23689 +        b10 = (getbyte(s,i) << 16) | (getbyte(s,i+1) << 8) | getbyte(s,i+2);
 1.23690 +        x.push(alpha.charAt(b10 >> 18));
 1.23691 +        x.push(alpha.charAt((b10 >> 12) & 0x3F));
 1.23692 +        x.push(alpha.charAt((b10 >> 6) & 0x3f));
 1.23693 +        x.push(alpha.charAt(b10 & 0x3f));
 1.23694 +    }
 1.23695 +    switch (s.length - imax) {
 1.23696 +    case 1:
 1.23697 +        b10 = getbyte(s,i) << 16;
 1.23698 +        x.push(alpha.charAt(b10 >> 18) + alpha.charAt((b10 >> 12) & 0x3F) +
 1.23699 +               padchar + padchar);
 1.23700 +        break;
 1.23701 +    case 2:
 1.23702 +        b10 = (getbyte(s,i) << 16) | (getbyte(s,i+1) << 8);
 1.23703 +        x.push(alpha.charAt(b10 >> 18) + alpha.charAt((b10 >> 12) & 0x3F) +
 1.23704 +               alpha.charAt((b10 >> 6) & 0x3f) + padchar);
 1.23705 +        break;
 1.23706 +    }
 1.23707 +    return x.join('');
 1.23708 +};
 1.23709 +//These descriptions of window properties are taken loosely David Flanagan's
 1.23710 +//'JavaScript - The Definitive Guide' (O'Reilly)
 1.23711 +
 1.23712 +var __windows__ = {};
 1.23713 +
 1.23714 +var __top__ = function(_scope){
 1.23715 +    var _parent = _scope.parent;
 1.23716 +    while (_scope && _parent && _scope !== _parent) {
 1.23717 +        if (_parent === _parent.parent) {
 1.23718 +            break;
 1.23719 +        }
 1.23720 +        _parent = _parent.parent;
 1.23721 +        //console.log('scope %s _parent %s', scope, _parent);
 1.23722 +    }
 1.23723 +    return _parent || null;
 1.23724 +};
 1.23725 +
 1.23726 +/**
 1.23727 + * Window
 1.23728 + * @param {Object} scope
 1.23729 + * @param {Object} parent
 1.23730 + * @param {Object} opener
 1.23731 + */
 1.23732 +Window = function(scope, parent, opener){
 1.23733 +
 1.23734 +    // the window property is identical to the self property and to this obj
 1.23735 +    //var proxy = new Envjs.proxy(scope, parent);
 1.23736 +    //scope.__proxy__ = proxy;
 1.23737 +    scope.__defineGetter__('window', function(){
 1.23738 +        return scope;
 1.23739 +    });
 1.23740 +
 1.23741 +    var $uuid = new Date().getTime()+'-'+Math.floor(Math.random()*1000000000000000);
 1.23742 +    __windows__[$uuid] = scope;
 1.23743 +    //console.log('opening window %s', $uuid);
 1.23744 +
 1.23745 +    // every window has one-and-only-one .document property which is always
 1.23746 +    // an [object HTMLDocument].  also, only window.document objects are
 1.23747 +    // html documents, all other documents created by the window.document are
 1.23748 +    // [object XMLDocument]
 1.23749 +    var $htmlImplementation =  new DOMImplementation();
 1.23750 +    $htmlImplementation.namespaceAware = true;
 1.23751 +    $htmlImplementation.errorChecking = false;
 1.23752 +
 1.23753 +    // read only reference to the Document object
 1.23754 +    var $document = new HTMLDocument($htmlImplementation, scope);
 1.23755 +
 1.23756 +    // A read-only reference to the Window object that contains this window
 1.23757 +    // or frame.  If the window is a top-level window, parent refers to
 1.23758 +    // the window itself.  If this window is a frame, this property refers
 1.23759 +    // to the window or frame that contains it.
 1.23760 +    var $parent = parent;
 1.23761 +
 1.23762 +    /**> $cookies - see cookie.js <*/
 1.23763 +    // read only boolean specifies whether the window has been closed
 1.23764 +    var $closed = false;
 1.23765 +
 1.23766 +    // a read/write string that specifies the default message that
 1.23767 +    // appears in the status line
 1.23768 +    var $defaultStatus = "Done";
 1.23769 +
 1.23770 +    // IE only, refers to the most recent event object - this maybe be
 1.23771 +    // removed after review
 1.23772 +    var $event = null;
 1.23773 +
 1.23774 +    // a read-only reference to the History object
 1.23775 +    var $history = new History();
 1.23776 +
 1.23777 +    // a read-only reference to the Location object.  the location object does
 1.23778 +    // expose read/write properties
 1.23779 +    var $location = new Location('about:blank', $document, $history);
 1.23780 +
 1.23781 +    // The name of window/frame. Set directly, when using open(), or in frameset.
 1.23782 +    // May be used when specifying the target attribute of links
 1.23783 +    var $name = null;
 1.23784 +
 1.23785 +    // a read-only reference to the Navigator object
 1.23786 +    var $navigator = new Navigator();
 1.23787 +
 1.23788 +    // a read/write reference to the Window object that contained the script
 1.23789 +    // that called open() to open this browser window.  This property is valid
 1.23790 +    // only for top-level window objects.
 1.23791 +    var $opener = opener?opener:null;
 1.23792 +
 1.23793 +    // read-only properties that specify the height and width, in pixels
 1.23794 +    var $innerHeight = 600, $innerWidth = 800;
 1.23795 +
 1.23796 +    // Read-only properties that specify the total height and width, in pixels,
 1.23797 +    // of the browser window. These dimensions include the height and width of
 1.23798 +    // the menu bar, toolbars, scrollbars, window borders and so on.  These
 1.23799 +    // properties are not supported by IE and IE offers no alternative
 1.23800 +    // properties;
 1.23801 +    var $outerHeight = $innerHeight,
 1.23802 +        $outerWidth = $innerWidth;
 1.23803 +
 1.23804 +    // Read-only properties that specify the number of pixels that the current
 1.23805 +    // document has been scrolled to the right and down.  These are not
 1.23806 +    // supported by IE.
 1.23807 +    var $pageXOffset = 0, $pageYOffset = 0;
 1.23808 +
 1.23809 +    // a read-only reference to the Screen object that specifies information
 1.23810 +    // about the screen: the number of available pixels and the number of
 1.23811 +    // available colors.
 1.23812 +    var $screen = new Screen(scope);
 1.23813 +
 1.23814 +    // read only properties that specify the coordinates of the upper-left
 1.23815 +    // corner of the screen.
 1.23816 +    var $screenX = 1,
 1.23817 +        $screenY = 1;
 1.23818 +    var $screenLeft = $screenX,
 1.23819 +        $screenTop = $screenY;
 1.23820 +
 1.23821 +    // a read/write string that specifies the current status line.
 1.23822 +    var $status = '';
 1.23823 +
 1.23824 +    __extend__(scope, EventTarget.prototype);
 1.23825 +
 1.23826 +    return __extend__( scope, {
 1.23827 +        get closed(){
 1.23828 +            return $closed;
 1.23829 +        },
 1.23830 +        get defaultStatus(){
 1.23831 +            return $defaultStatus;
 1.23832 +        },
 1.23833 +        set defaultStatus(defaultStatus){
 1.23834 +            $defaultStatus = defaultStatus;
 1.23835 +        },
 1.23836 +        get document(){
 1.23837 +            return $document;
 1.23838 +        },
 1.23839 +        set document(doc){
 1.23840 +            $document = doc;
 1.23841 +        },
 1.23842 +        /*
 1.23843 +        deprecated ie specific property probably not good to support
 1.23844 +        get event(){
 1.23845 +            return $event;
 1.23846 +        },
 1.23847 +        */
 1.23848 +        get frames(){
 1.23849 +        return new HTMLCollection($document.getElementsByTagName('frame'));
 1.23850 +        },
 1.23851 +        get length(){
 1.23852 +            // should be frames.length,
 1.23853 +            return this.frames.length;
 1.23854 +        },
 1.23855 +        get history(){
 1.23856 +            return $history;
 1.23857 +        },
 1.23858 +        get innerHeight(){
 1.23859 +            return $innerHeight;
 1.23860 +        },
 1.23861 +        get innerWidth(){
 1.23862 +            return $innerWidth;
 1.23863 +        },
 1.23864 +        get clientHeight(){
 1.23865 +            return $innerHeight;
 1.23866 +        },
 1.23867 +        get clientWidth(){
 1.23868 +            return $innerWidth;
 1.23869 +        },
 1.23870 +        get location(){
 1.23871 +            return $location;
 1.23872 +        },
 1.23873 +        set location(uri){
 1.23874 +            uri = Envjs.uri(uri);
 1.23875 +            //new Window(this, this.parent, this.opener);
 1.23876 +            if($location.href == uri){
 1.23877 +                $location.reload();
 1.23878 +            }else if($location.href == 'about:blank'){
 1.23879 +                $location.assign(uri);
 1.23880 +            }else{
 1.23881 +                $location.replace(uri);
 1.23882 +            }
 1.23883 +        },
 1.23884 +        get name(){
 1.23885 +            return $name;
 1.23886 +        },
 1.23887 +        set name(newName){
 1.23888 +            $name = newName;
 1.23889 +        },
 1.23890 +        get navigator(){
 1.23891 +            return $navigator;
 1.23892 +        },
 1.23893 +        get opener(){
 1.23894 +            return $opener;
 1.23895 +        },
 1.23896 +        get outerHeight(){
 1.23897 +            return $outerHeight;
 1.23898 +        },
 1.23899 +        get outerWidth(){
 1.23900 +            return $outerWidth;
 1.23901 +        },
 1.23902 +        get pageXOffest(){
 1.23903 +            return $pageXOffset;
 1.23904 +        },
 1.23905 +        get pageYOffset(){
 1.23906 +            return $pageYOffset;
 1.23907 +        },
 1.23908 +        get parent(){
 1.23909 +            return $parent;
 1.23910 +        },
 1.23911 +        get screen(){
 1.23912 +            return $screen;
 1.23913 +        },
 1.23914 +        get screenLeft(){
 1.23915 +            return $screenLeft;
 1.23916 +        },
 1.23917 +        get screenTop(){
 1.23918 +            return $screenTop;
 1.23919 +        },
 1.23920 +        get screenX(){
 1.23921 +            return $screenX;
 1.23922 +        },
 1.23923 +        get screenY(){
 1.23924 +            return $screenY;
 1.23925 +        },
 1.23926 +        get self(){
 1.23927 +            return scope;
 1.23928 +        },
 1.23929 +        get status(){
 1.23930 +            return $status;
 1.23931 +        },
 1.23932 +        set status(status){
 1.23933 +            $status = status;
 1.23934 +        },
 1.23935 +        // a read-only reference to the top-level window that contains this window.
 1.23936 +        // If this window is a top-level window it is simply a reference to itself.
 1.23937 +        // If this window is a frame, the top property refers to the top-level
 1.23938 +        // window that contains the frame.
 1.23939 +        get top(){
 1.23940 +            return __top__(scope);
 1.23941 +        },
 1.23942 +        get window(){
 1.23943 +            return this;
 1.23944 +        },
 1.23945 +        toString : function(){
 1.23946 +            return '[Window]';
 1.23947 +        },
 1.23948 +
 1.23949 +        /**
 1.23950 +         * getComputedStyle
 1.23951 +         *
 1.23952 +         * Firefox 3.6:
 1.23953 +         *  - Requires both elements to be present else an
 1.23954 +         *    exception is thrown.
 1.23955 +         *  - Returns a 'ComputedCSSStyleDeclaration' object.
 1.23956 +         *    while a raw element.style returns a 'CSSStyleDeclaration' object.
 1.23957 +         *  - Bogus input also throws exception
 1.23958 +         *
 1.23959 +         * Safari 4:
 1.23960 +         *  - Requires one argument (second can be MIA)
 1.23961 +         *  - Returns a CSSStyleDeclaration object
 1.23962 +         *  - if bad imput, returns null
 1.23963 +         *
 1.23964 +         * getComputedStyle should really be an "add on" from the css
 1.23965 +         * modules.  Unfortunately, 'window' comes way after the 'css'
 1.23966 +         * so css can't add it.
 1.23967 +         */
 1.23968 +        getComputedStyle: function(element, pseudoElement) {
 1.23969 +            return element.style;
 1.23970 +        },
 1.23971 +
 1.23972 +        open: function(url, name, features, replace){
 1.23973 +            if (features) {
 1.23974 +                console.log("'features argument not yet implemented");
 1.23975 +            }
 1.23976 +            var _window = Envjs.proxy({}),
 1.23977 +                open;
 1.23978 +            if(replace && name){
 1.23979 +                for(open in __windows__){
 1.23980 +                    if(open.name === name) {
 1.23981 +                        _window = open;
 1.23982 +                    }
 1.23983 +                }
 1.23984 +            }
 1.23985 +            new Window(_window, _window, this);
 1.23986 +            if(name) {
 1.23987 +                _window.name = name;
 1.23988 +            }
 1.23989 +            _window.document.async = false;
 1.23990 +            _window.location.assign(Envjs.uri(url));
 1.23991 +            return _window;
 1.23992 +        },
 1.23993 +        close: function(){
 1.23994 +            //console.log('closing window %s', __windows__[$uuid]);
 1.23995 +            try{
 1.23996 +                delete __windows__[$uuid];
 1.23997 +            }catch(e){
 1.23998 +                console.log('%s',e);
 1.23999 +            }
 1.24000 +        },
 1.24001 +        alert : function(message){
 1.24002 +            Envjs.alert(message);
 1.24003 +        },
 1.24004 +        confirm : function(question){
 1.24005 +            Envjs.confirm(question);
 1.24006 +        },
 1.24007 +        prompt : function(message, defaultMsg){
 1.24008 +            Envjs.prompt(message, defaultMsg);
 1.24009 +        },
 1.24010 +        btoa: function(binary){
 1.24011 +            return base64.encode(binary);
 1.24012 +        },
 1.24013 +        atob: function(ascii){
 1.24014 +            return base64.decode(ascii);
 1.24015 +        },
 1.24016 +        onload: function(){},
 1.24017 +        onunload: function(){},
 1.24018 +        get guid(){
 1.24019 +            return $uuid;
 1.24020 +        }
 1.24021 +    });
 1.24022 +
 1.24023 +};
 1.24024 +
 1.24025 +
 1.24026 +//finally pre-supply the window with the window-like environment
 1.24027 +//console.log('Default Window');
 1.24028 +new Window(__this__, __this__);
 1.24029 +console.log('[ %s ]',window.navigator.userAgent);
 1.24030 +/**
 1.24031 + *
 1.24032 + * @param {Object} event
 1.24033 + */
 1.24034 +__extend__(Envjs.defaultEventBehaviors,{
 1.24035 +
 1.24036 +    'submit': function(event) {
 1.24037 +        var target = event.target;
 1.24038 +        while (target && target.nodeName !== 'FORM') {
 1.24039 +            target = target.parentNode;
 1.24040 +        }
 1.24041 +        if (target && target.nodeName === 'FORM') {
 1.24042 +            target.submit();
 1.24043 +        }
 1.24044 +    },
 1.24045 +    'click': function(event) {
 1.24046 +        // console.log('handling event target default behavior for click');
 1.24047 +    }
 1.24048 +
 1.24049 +});
 1.24050 +/**
 1.24051 + * @author john resig & the envjs team
 1.24052 + * @uri http://www.envjs.com/
 1.24053 + * @copyright 2008-2010
 1.24054 + * @license MIT
 1.24055 + */
 1.24056 +//CLOSURE_END
 1.24057 +}());
     2.1 --- a/pom.xml	Wed Jun 04 09:56:04 2014 +0200
     2.2 +++ b/pom.xml	Wed Jun 04 10:24:28 2014 +0200
     2.3 @@ -95,6 +95,7 @@
     2.4                         <exclude>*</exclude>
     2.5                         <exclude>.*/**</exclude>
     2.6                         <exclude>ko4j/src/main/resources/org/netbeans/html/ko4j/knockout*.js</exclude>
     2.7 +                       <exclude>boot-script/src/test/resources/net/java/html/boot/script/ko4j/env.nashorn.1.2-debug.js</exclude>
     2.8                         <exclude>src/main/javadoc/resources/teavm.js</exclude>
     2.9                    </excludes>
    2.10                </configuration>