<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="-1">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta content="Robot Framework 2.8.7 (Python 2.7.10 on linux2)" name="Generator">
<link rel="icon" type="image/x-icon" href="data:image/x-icon;base64,AAABAAEAEBAQAAEABAAoAQAAFgAAACgAAAAQAAAAIAAAAAEABAAAAAAAAAIAAAAAAAAAAAAAEAAAAAAAAAAAAAAAJEBoACtnfgA5cYYAERsiAEx2lAAbKkQAcazBACZCVwAcM1cAK0ucAAMDBQAnQncASG+FABkoVQAyWmgA6f8SgvH/Ij99+GLyIinyJfn/Yi//KSLzUy9iZogpIld3/4JVVTkid7vyUjNVNVJEAGOZ6Z7pXwAABpmZkRiLAAAGiJZpmGAAAEEt3SXdxAAATC7o/u3EAAC8MRZpjasAAAY1VVVTYAAABKqqqqpAAAAADKqq4AAAAAAAv4sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMADAADgAwAA4AcAAOAHAADgBwAAwAcAAOAHAADgDwAA8A8AAPg/AAD+fwAA">
<style media="all" type="text/css">
/* Generic and misc styles */
body {
    font-family: Helvetica, sans-serif;
    font-size: 0.8em;
    color: black;
    padding: 6px;
    background: white;
}
table {
    table-layout: fixed;
    word-wrap: break-word;
    empty-cells: show;
    font-size: 1em;
}
th, td {
    vertical-align: top;
}
br {
    mso-data-placement: same-cell; /* maintain line breaks in Excel */
}
a, a:link, a:visited {
    text-decoration: none;
    color: blue;
}
a > img {
    border: 1px solid blue !important;
}
a:hover, a:active {
    text-decoration: underline;
    color: purple;
}
.parent-name {
    font-size: 0.7em;
    letter-spacing: -0.07em;
}
.message {
    white-space: pre-wrap;
}
/* Headers */
#header {
    width: 65em;
    height: 3em;
    margin: 6px 0;
}
h1 {
    float: left;
    margin: 0 0 0.5em 0;
    width: 75%;
}
h2 {
    clear: left;
}
#generated {
    float: right;
    text-align: right;
    font-size: 0.9em;
    white-space: nowrap;
}
/* Documentation headers */
.doc > h2 {
    font-size: 1.2em;
}
.doc > h3 {
    font-size: 1.1em;
}
.doc > h4 {
    font-size: 1.0em;
}
/* Status text colors -- !important allows using them in links */
.error, .fail {
    color: red !important;
    font-weight: bold;
}
.pass {
    color: #009900 !important;
}
.warn {
    color: #FFCC00 !important;
    font-weight: bold;
}
.not-run {
    color: #444444 !important;
}
/* Top right header */
#top-right-header {
    position: fixed;
    top: 0;
    right: 0;
    z-index: 1000;
    width: 12em;
    text-align: center;
}
#report-or-log-link a {
    display: block;
    background: black;
    color: white;
    text-decoration: none;
    letter-spacing: 0.1em;
    padding: 0.3em 0;
    border-bottom-left-radius: 4px;
}
#report-or-log-link a:hover {
    color: yellow;
}
#log-level-selector {
    padding: 0.3em 0;
    font-size: 0.9em;
    border-bottom-left-radius: 4px;
    background: lightgray;
}
/* Statistics table */
.statistics {
    width: 65em;
    border-collapse: collapse;
    empty-cells: show;
    margin-bottom: 1em;
}
.statistics tr:hover {
    background: #ECECF7;
    cursor: pointer;
}
.statistics th, .statistics td {
    border: 1px solid black;
    padding: 0.1em 0.3em;
}
.statistics th {
    background-color: #DCDCF0;
    padding: 0.2em 0.3em;
}
.statistics td {
    vertical-align: middle;
}
.stats-col-stat {
    width: 4.5em;
    text-align: center;
}
.stats-col-elapsed {
    width: 5.5em;
    text-align: center;
}
.stats-col-graph {
    width: 9em;
}
th.stats-col-graph:hover {
    cursor: default;
}
.stat-name {
    float: left;
}
.stat-name a, .stat-name span {
    font-weight: bold;
}
.tag-links {
    font-size: 0.9em;
    float: right;
    margin-top: 0.05em;
}
.tag-links span {
    margin-left: 0.2em;
}
/* Statistics graph */
.graph, .empty-graph {
    border: 1px solid black;
    width: auto;
    height: 7px;
    padding: 0;
    background: red;
}
.empty-graph {
    background: #E9E9E9;
}
.pass-bar, .fail-bar {
    float: left;
    height: 100%;
}
.pass-bar {
    background: #00F000;
}
/* Tablesorter - adapted from provided Blue Skin */
.tablesorter-header {
    background-image: url(data:image/gif;base64,R0lGODlhCwAJAIAAAH9/fwAAACH5BAEAAAEALAAAAAALAAkAAAIRjAOnBr3cnIr0WUjTrC9e9BQAOw==);
    background-repeat: no-repeat;
    background-position: center right;
    cursor: pointer;
}
.tablesorter-header:hover {
    background-color: #B8C8E3;
}
.tablesorter-headerAsc {
    background-image: url(data:image/gif;base64,R0lGODlhCwAJAKEAAAAAAH9/fwAAAAAAACH5BAEAAAIALAAAAAALAAkAAAIUlBWnFr3cnIr0WQOyBmvzp13CpxQAOw==);
    background-color: #B8C8E3 !important;
}
.tablesorter-headerDesc {
    background-image: url(data:image/gif;base64,R0lGODlhCwAJAKEAAAAAAH9/fwAAAAAAACH5BAEAAAIALAAAAAALAAkAAAIUlAWnBr3cnIr0WROyDmvzp13CpxQAOw==);
    background-color: #B8C8E3 !important;
}
.sorter-false {
    background-image: none;
    cursor: default;
}
.sorter-false:hover {
    background-color: #DCDCF0;
}
</style>
<style media="all" type="text/css">
/* Icons are from Open Iconic <https://useiconic.com/open/>.
   Licensed under the MIT License. */
/* Containers */
.suite, .test, #errors {
    border: 1px solid gray;
    padding: 0.3em 0.2em;
    margin: 0.2em 0;
}
.test {
    border-style: dashed;
}
#errors, .messages, .metadata {
    width: 100%;
    border-spacing: 0;
}
.children {
    display: none;
    margin-left: 1.4em;
}
.suite, .test, .keyword {
    margin-left: -0.2em;
}
#s1, .suite > .children > .keyword {
    margin-left: 0;
}
/* Suite, test and kw headers */
.element-header {
    border: 1px solid transparent;
    border-radius: 2px;
    position: relative;
}
.element-header:hover {
    cursor: pointer;
    background-color: #ECECF7;
    border-color: #BCBCD7;
}
.element-header-toggle {
    position: absolute;
    left: 3px;
    top: 4px;
    background-repeat: no-repeat;
    background-position: center;
    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAQAAABKxSfDAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfeCR0JChSkZz20AAAAGklEQVQI12NgQAKMDKzInP8IDhOqMk4G7AAANQwBE427PYUAAAAASUVORK5CYII=);
    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0wIDB2Mmg4di0yaC04eiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAzKSIgLz4KPC9zdmc+), none;
    height: 10px;
    width: 10px;
    background-size: 6px 6px;
    border: 1px solid black;
    border-radius: 2px;
}
.closed > .element-header-toggle {
    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAYAAAAGCAQAAABKxSfDAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfeCR0JCDHdVYtxAAAAM0lEQVQI103MMQqAMBQFwVHyITaB3P+W1sKzSBC3mW6hRFw0pUB5DvF1bu9FN0RM3X/wAk98CUnvFTakAAAAAElFTkSuQmCC);
    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0zIDB2M2gtM3YyaDN2M2gydi0zaDN2LTJoLTN2LTNoLTJ6IiAvPgo8L3N2Zz4=), none;
}
.element-header:hover > .element-header-toggle {
    background-color: yellow;
}
.element-header-right:hover ~ .element-header-toggle {
    background-color: transparent;
}
.element-header-left {
    padding: 3px 80px 3px 20px;
}
.element-header-right {
    position: absolute;
    right: 0;
    top: 0;
    padding: 3px;
    cursor: default;
}
.name {
    font-weight: bold;
}
.elapsed {
    float: right;
    color: #808080;
    padding-left: 1em;
}
.link {
    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAHlJREFUGJVtzrEJwmAQBtCn6ASuIKTIBhY2gmghBiJYB1udwk10B8FJbKMBcQFbtbkfJHrVwfu+4/idJR64Y9H7E3higj5O3S8Y44ApLnjhnXCNGhV2yNGggDJwiC02gavUbpDFvscRo4QdXOMKDHBufz3HLYKzNn4AbSkV3fncGQYAAAAASUVORK5CYII=);
    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik01Ljg4LjAzYy0uMTguMDEtLjM2LjAzLS41My4wOS0uMjcuMS0uNTMuMjUtLjc1LjQ3YS41LjUgMCAxIDAgLjY5LjY5Yy4xMS0uMTEuMjQtLjE3LjM4LS4yMi4zNS0uMTIuNzgtLjA3IDEuMDYuMjIuMzkuMzkuMzkgMS4wNCAwIDEuNDRsLTEuNSAxLjVjLS40NC40NC0uOC40OC0xLjA2LjQ3LS4yNi0uMDEtLjQxLS4xMy0uNDEtLjEzYS41LjUgMCAxIDAtLjUuODhzLjM0LjIyLjg0LjI1Yy41LjAzIDEuMi0uMTYgMS44MS0uNzhsMS41LTEuNWMuNzgtLjc4Ljc4LTIuMDQgMC0yLjgxLS4yOC0uMjgtLjYxLS40NS0uOTctLjUzLS4xOC0uMDQtLjM4LS4wNC0uNTYtLjAzem0tMiAyLjMxYy0uNS0uMDItMS4xOS4xNS0xLjc4Ljc1bC0xLjUgMS41Yy0uNzguNzgtLjc4IDIuMDQgMCAyLjgxLjU2LjU2IDEuMzYuNzIgMi4wNi40Ny4yNy0uMS41My0uMjUuNzUtLjQ3YS41LjUgMCAxIDAtLjY5LS42OWMtLjExLjExLS4yNC4xNy0uMzguMjItLjM1LjEyLS43OC4wNy0xLjA2LS4yMi0uMzktLjM5LS4zOS0xLjA0IDAtMS40NGwxLjUtMS41Yy40LS40Ljc1LS40NSAxLjAzLS40NC4yOC4wMS40Ny4wOS40Ny4wOWEuNS41IDAgMSAwIC40NC0uODhzLS4zNC0uMi0uODQtLjIyeiIKICAvPgo8L3N2Zz4=), none;
}
.expand {
    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAADtJREFUGJVjYCACKDAwMByA0ljFDjAwMPxnYGB4ABVQgLL/Q+VQBB6gseGmIivCkERXhFUSWRFOSawAAEl7E3uv1iMcAAAAAElFTkSuQmCC);
    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0xLjUgMGwtMS41IDEuNSA0IDQgNC00LTEuNS0xLjUtMi41IDIuNS0yLjUtMi41eiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMCAxKSIgLz4KPC9zdmc+), none;
}
.collapse {
    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAICAYAAADED76LAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEwAACxMBAJqcGAAAAC5JREFUGJVjYCARNEAxTsn/UIyhCFkSQxG6ThQ+C5IpjWhG1yNb4YDFTdjEMAEACi8Q++9Y9TAAAAAASUVORK5CYII=);
    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik00IDBsLTQgNCAxLjUgMS41IDIuNS0yLjUgMi41IDIuNSAxLjUtMS41LTQtNHoiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMSkiIC8+Cjwvc3ZnPg==), none;
}
.expand, .collapse, .link {
    float: left;
    display: block;
    visibility: hidden;
    margin: 0 4px;
    height: 14px;
    width: 14px;
    background-size: 8px 8px;
    background-repeat: no-repeat;
    background-position: center;
    border: 1px solid black;
    border-radius: 2px;
}
.link {
    background-size: 10px 10px;
}
.element-header:hover a {
    visibility: visible;
}
.expand:hover, .collapse:hover, .link:hover {
    background-color: yellow;
}
/* Messages and errors */
.messages {
    font-family: monospace;
    font-size: 1.1em;
}
.message-row {
    height: 20px;
}
.time {
    width: 8em;
}
.error-time {
    width: 11em;
    white-space: nowrap;
}
.level {
    width: 4.5em;
    text-align: center;
}
.select-message {
    width: 24px;
}
.select-message > div {
    float: right;
    margin-right: 2px;
    height: 16px;
    width: 16px;
    background-size: 12px 12px;
    background-repeat: no-repeat;
    background-position: center;
}
.message-row:hover .select-message div {
    background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAMCAQAAAD8fJRsAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfeCR0MOzhWKZQOAAAASUlEQVQY032PsRHAIAwDX9BkicD+W8UMEqegAQJWKZ/+3sLZJhFGQEZzNaIa4ibh66En867VNaIeoP5WppNuIGoAlOm3g5VC1AdYeQv1BZPRSgAAAABJRU5ErkJggg==);
    background-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSI4IiBoZWlnaHQ9IjgiIHZpZXdCb3g9IjAgMCA4IDgiPgogIDxwYXRoIGQ9Ik0wIDB2MWg4di0xaC04em0wIDJ2MWg2di0xaC02em0wIDJ2MWg4di0xaC04em0wIDJ2MWg2di0xaC02eiIgLz4KPC9zdmc+), none;
    border: 1px solid black;
    border-radius: 2px;
}
.select-message:hover div {
    background-color: yellow;
    cursor: pointer;
}
/* Message tables - these MUST NOT be combined together because otherwise
   dynamically altering them based on visible log level is not possible. */
.trace-message {
    display: table;
}
.debug-message {
    display: table;
}
/* Metadata */
.metadata th {
    width: 12.5em;
    text-align: left;
    white-space: nowrap;
    padding: 0;
}
.metadata td {
    padding: 0.2em;
}
.keyword-metadata {
    font-size: 0.9em;
}
/* Custom styles for statistics */
#total-stats tr:hover, #tag-stats tr:hover {
    cursor: default;
}
</style>
<style media="print" type="text/css">
body {
    background: white !important;
    padding: 0;
    font-size: 8pt;
}
a:link, a:visited {
    color: black;
}
#header {
    width: auto;
}
.details, .statistics {
    width: 100%;
}
#generated-ago, #top-right-header, #normal-selector, #search-buttons,
.folding-button, .expand, .hidden, .details-col-toggle {
    display: none;
}
.element-header-text, .children {
    margin: 0;
}
#test-details {
    border-collapse: collapse;
    table-layout: auto;
}
#test-details th, #test-details td {
    border: 1px solid black;
}
.details-col-header {
    padding: 0;
}
#print-selector {
    display: table-cell;
}
.tablesorter-header {
    background-image: none;
    background: #DCDCF0 !important;
}
</style>
<style media="all" type="text/css">
#javascript-disabled {
    width: 600px;
    margin: 100px auto 0 auto;
    padding: 20px;
    color: #2A2A2E;
    border: 1px solid #9A9A9E;
    background: #FAFAFF;
}
#javascript-disabled h1 {
    width: 100%;
    float: none;
}
#javascript-disabled ul {
    font-size: 1.2em;
}
#javascript-disabled li {
    margin: 0.5em 0;
}
#javascript-disabled b {
    font-style: italic;
}
</style>
<style media="all" type="text/css">
.doc > * {
    margin: 0.7em 1em 0.1em 1em;
    padding: 0;
}
.doc > p, .doc > h1, .doc > h2, .doc > h3, .doc > h4 {
    margin: 0.7em 0 0.1em 0;
}
.doc > *:first-child {
    margin-top: 0.1em;
}
.doc table {
    border: 1px solid gray;
    background: transparent;
    border-collapse: collapse;
    empty-cells: show;
    font-size: 0.9em;
}
.doc table th, .doc table td {
    border: 1px solid gray;
    background: transparent;
    padding: 0.1em 0.3em;
    height: 1.2em;
}
.doc table th {
    text-align: center;
    letter-spacing: 0.1em;
}
.doc pre {
    font-size: 1.1em;
    letter-spacing: 0.05em;
    background: #F4F4FF;
}
.doc code {
    padding: 0 0.2em;
    letter-spacing: 0.05em;
    background: #F4F4FF;
}
.doc li {
    list-style-position: inside;
    list-style-type: square;
}
.doc img {
    border: 1px solid gray;
}
.doc hr {
    background: gray;
    height: 1px;
    border: 0;
}
</style>
<script type="text/javascript">
var LEVELS = {TRACE: 0, DEBUG: 1, INFO: 2, WARN: 3, FAIL: 4, NONE: 5};
function toggleSuite(suiteId) {
    toggleElement(suiteId, ['keyword', 'suite', 'test']);
}
function toggleTest(testId) {
    toggleElement(testId, ['keyword']);
}
function toggleKeyword(kwId) {
    toggleElement(kwId, ['keyword', 'message']);
}
function toggleElement(elementId, childrenNames) {
    var element = $('#' + elementId);
    var children = element.children('.children');
    children.toggle(100, '', function () {
        element.children('.element-header').toggleClass('closed');
    });
    populateChildren(elementId, children, childrenNames);
}
function populateChildren(elementId, childElement, childrenNames) {
    if (!childElement.hasClass('populated')) {
        var element = window.testdata.findLoaded(elementId);
        var callback = drawCallback(element, childElement, childrenNames);
        element.callWhenChildrenReady(callback);
        childElement.addClass('populated');
    }
}
function drawCallback(element, childElement, childrenNames) {
    return function () {
        util.map(childrenNames, function (childName) {
            var children = element[childName + 's']();
            var template = childName + 'Template';
            util.map(children, function (child) {
                $.tmpl(template, child).appendTo(childElement);
            });
        });
    }
}
function expandSuite(suite) {
    if (suite.status == "PASS")
        expandElement(suite);
    else
        expandCriticalFailed(suite);
}
function expandElement(item) {
    var element = $('#' + item.id);
    var children = element.children('.children');
    // .css is faster than .show and .show w/ callback is terribly slow
    children.css({'display': 'block'});
    populateChildren(item.id, children, item.childrenNames);
    element.children('.element-header').removeClass('closed');
}
function expandElementWithId(elementid) {
    expandElement(window.testdata.findLoaded(elementid));
}
function expandCriticalFailed(element) {
    if (element.status == "FAIL") {
        window.elementsToExpand = [element];
        window.expandDecider = function (e) {
            return e.status == "FAIL" && (e.isCritical === undefined || e.isCritical);
        };
        expandRecursively();
    }
}
function expandAll(elementId) {
    window.elementsToExpand = [window.testdata.findLoaded(elementId)];
    window.expandDecider = function () { return true; };
    expandRecursively();
}
function expandRecursively() {
    if (!window.elementsToExpand.length)
        return;
    var element = window.elementsToExpand.pop();
    if (!element || elementHiddenByUser(element.id)) {
        window.elementsToExpand = [];
        return;
    }
    expandElement(element);
    element.callWhenChildrenReady(function () {
        var children = element.children();
        for (var i = children.length-1; i >= 0; i--) {
            if (window.expandDecider(children[i]))
                window.elementsToExpand.push(children[i]);
        }
        if (window.elementsToExpand.length)
            setTimeout(expandRecursively, 0);
    });
}
function elementHiddenByUser(id) {
    var element = $('#' + id);
    return !element.is(":visible");
}
function collapseAll(id) {
    var element = $('#' + id);
    element.find('.children').css({'display': 'none'});
    element.find('.element-header').addClass('closed');
}
function logLevelSelected(level) {
    var anchors = getViewAnchorElements();
    setMessageVisibility(level);
    scrollToShortestVisibleAnchorElement(anchors);
}
function getViewAnchorElements() {
    var elem1 = $(document.elementFromPoint(100, 0));
    var elem2 = $(document.elementFromPoint(100, 20));
    return [elem1, elem2];
}
function scrollToShortestVisibleAnchorElement(anchors) {
    anchors = util.map(anchors, closestVisibleParent);
    var shortest = anchors[0];
    for (var i = 1; i < anchors.length; i++)
        if (shortest.height() > anchors[i].height())
            shortest = anchors[i];
    shortest.get()[0].scrollIntoView(true);
}
function setMessageVisibility(level) {
    level = parseInt(level);
    changeClassDisplay(".trace-message", level <= LEVELS.TRACE);
    changeClassDisplay(".debug-message", level <= LEVELS.DEBUG);
    changeClassDisplay(".info-message", level <= LEVELS.INFO);
}
function closestVisibleParent(elem) {
    while (!elem.is(":visible"))
        elem = elem.parent();
    return elem;
}
function changeClassDisplay(clazz, visible) {
    var styles = document.styleSheets;
    for (var i = 0; i < styles.length; i++) {
        var rules = getRules(styles[i]);
        if (rules === null)
            continue;
        for (var j = 0; j < rules.length; j++)
            if (rules[j].selectorText === clazz)
                rules[j].style.display = visible ? "table" : "none";
    }
}
function getRules(style) {
    // With Chrome external CSS files seem to have only null roles and with
    // Firefox accessing rules can result to security error.
    // Neither of these are a problem on with generated logs.
    try {
        return style.cssRules || style.rules;
    } catch (e) {
        return null;
    }
}
function selectMessage(parentId) {
    var element = $('#' + parentId).find('.message').get(0);
    selectText(element);
}
function selectText(element) {
    // Based on http://stackoverflow.com/questions/985272
    var range, selection;
    if (document.body.createTextRange) {  // IE 8
        range = document.body.createTextRange();
        range.moveToElementText(element);
        range.select();
    } else if (window.getSelection) {  // Others
        selection = window.getSelection();
        range = document.createRange();
        range.selectNodeContents(element);
        selection.removeAllRanges();
        selection.addRange(range);
    }
}
function LogLevelController(minLevel, defaultLevel) {
    minLevel = LEVELS[minLevel];
    defaultLevel = LEVELS[defaultLevel];
    function showLogLevelSelector() {
        return minLevel < LEVELS.INFO;
    }
    function defaultLogLevel() {
        if (minLevel > defaultLevel)
            return minLevel;
        return defaultLevel;
    }
    function showTrace() {
        return minLevel == LEVELS.TRACE;
    }
    return {
        showLogLevelSelector: showLogLevelSelector,
        defaultLogLevel: defaultLogLevel,
        showTrace: showTrace
    };
}
</script>
<script type="text/javascript">
/*! jQuery v1.8.3 jquery.com | jquery.org/license */
(function(e,t){function _(e){var t=M[e]={};return v.each(e.split(y),function(e,n){t[n]=!0}),t}function H(e,n,r){if(r===t&&e.nodeType===1){var i="data-"+n.replace(P,"-$1").toLowerCase();r=e.getAttribute(i);if(typeof r=="string"){try{r=r==="true"?!0:r==="false"?!1:r==="null"?null:+r+""===r?+r:D.test(r)?v.parseJSON(r):r}catch(s){}v.data(e,n,r)}else r=t}return r}function B(e){var t;for(t in e){if(t==="data"&&v.isEmptyObject(e[t]))continue;if(t!=="toJSON")return!1}return!0}function et(){return!1}function tt(){return!0}function ut(e){return!e||!e.parentNode||e.parentNode.nodeType===11}function at(e,t){do e=e[t];while(e&&e.nodeType!==1);return e}function ft(e,t,n){t=t||0;if(v.isFunction(t))return v.grep(e,function(e,r){var i=!!t.call(e,r,e);return i===n});if(t.nodeType)return v.grep(e,function(e,r){return e===t===n});if(typeof t=="string"){var r=v.grep(e,function(e){return e.nodeType===1});if(it.test(t))return v.filter(t,r,!n);t=v.filter(t,r)}return v.grep(e,function(e,r){return v.inArray(e,t)>=0===n})}function lt(e){var t=ct.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}function Lt(e,t){return e.getElementsByTagName(t)[0]||e.appendChild(e.ownerDocument.createElement(t))}function At(e,t){if(t.nodeType!==1||!v.hasData(e))return;var n,r,i,s=v._data(e),o=v._data(t,s),u=s.events;if(u){delete o.handle,o.events={};for(n in u)for(r=0,i=u[n].length;r<i;r++)v.event.add(t,n,u[n][r])}o.data&&(o.data=v.extend({},o.data))}function Ot(e,t){var n;if(t.nodeType!==1)return;t.clearAttributes&&t.clearAttributes(),t.mergeAttributes&&t.mergeAttributes(e),n=t.nodeName.toLowerCase(),n==="object"?(t.parentNode&&(t.outerHTML=e.outerHTML),v.support.html5Clone&&e.innerHTML&&!v.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):n==="input"&&Et.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):n==="option"?t.selected=e.defaultSelected:n==="input"||n==="textarea"?t.defaultValue=e.defaultValue:n==="script"&&t.text!==e.text&&(t.text=e.text),t.removeAttribute(v.expando)}function Mt(e){return typeof e.getElementsByTagName!="undefined"?e.getElementsByTagName("*"):typeof e.querySelectorAll!="undefined"?e.querySelectorAll("*"):[]}function _t(e){Et.test(e.type)&&(e.defaultChecked=e.checked)}function Qt(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=Jt.length;while(i--){t=Jt[i]+n;if(t in e)return t}return r}function Gt(e,t){return e=t||e,v.css(e,"display")==="none"||!v.contains(e.ownerDocument,e)}function Yt(e,t){var n,r,i=[],s=0,o=e.length;for(;s<o;s++){n=e[s];if(!n.style)continue;i[s]=v._data(n,"olddisplay"),t?(!i[s]&&n.style.display==="none"&&(n.style.display=""),n.style.display===""&&Gt(n)&&(i[s]=v._data(n,"olddisplay",nn(n.nodeName)))):(r=Dt(n,"display"),!i[s]&&r!=="none"&&v._data(n,"olddisplay",r))}for(s=0;s<o;s++){n=e[s];if(!n.style)continue;if(!t||n.style.display==="none"||n.style.display==="")n.style.display=t?i[s]||"":"none"}return e}function Zt(e,t,n){var r=Rt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function en(e,t,n,r){var i=n===(r?"border":"content")?4:t==="width"?1:0,s=0;for(;i<4;i+=2)n==="margin"&&(s+=v.css(e,n+$t[i],!0)),r?(n==="content"&&(s-=parseFloat(Dt(e,"padding"+$t[i]))||0),n!=="margin"&&(s-=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0)):(s+=parseFloat(Dt(e,"padding"+$t[i]))||0,n!=="padding"&&(s+=parseFloat(Dt(e,"border"+$t[i]+"Width"))||0));return s}function tn(e,t,n){var r=t==="width"?e.offsetWidth:e.offsetHeight,i=!0,s=v.support.boxSizing&&v.css(e,"boxSizing")==="border-box";if(r<=0||r==null){r=Dt(e,t);if(r<0||r==null)r=e.style[t];if(Ut.test(r))return r;i=s&&(v.support.boxSizingReliable||r===e.style[t]),r=parseFloat(r)||0}return r+en(e,t,n||(s?"border":"content"),i)+"px"}function nn(e){if(Wt[e])return Wt[e];var t=v("<"+e+">").appendTo(i.body),n=t.css("display");t.remove();if(n==="none"||n===""){Pt=i.body.appendChild(Pt||v.extend(i.createElement("iframe"),{frameBorder:0,width:0,height:0}));if(!Ht||!Pt.createElement)Ht=(Pt.contentWindow||Pt.contentDocument).document,Ht.write("<!doctype html><html><body>"),Ht.close();t=Ht.body.appendChild(Ht.createElement(e)),n=Dt(t,"display"),i.body.removeChild(Pt)}return Wt[e]=n,n}function fn(e,t,n,r){var i;if(v.isArray(t))v.each(t,function(t,i){n||sn.test(e)?r(e,i):fn(e+"["+(typeof i=="object"?t:"")+"]",i,n,r)});else if(!n&&v.type(t)==="object")for(i in t)fn(e+"["+i+"]",t[i],n,r);else r(e,t)}function Cn(e){return function(t,n){typeof t!="string"&&(n=t,t="*");var r,i,s,o=t.toLowerCase().split(y),u=0,a=o.length;if(v.isFunction(n))for(;u<a;u++)r=o[u],s=/^\+/.test(r),s&&(r=r.substr(1)||"*"),i=e[r]=e[r]||[],i[s?"unshift":"push"](n)}}function kn(e,n,r,i,s,o){s=s||n.dataTypes[0],o=o||{},o[s]=!0;var u,a=e[s],f=0,l=a?a.length:0,c=e===Sn;for(;f<l&&(c||!u);f++)u=a[f](n,r,i),typeof u=="string"&&(!c||o[u]?u=t:(n.dataTypes.unshift(u),u=kn(e,n,r,i,u,o)));return(c||!u)&&!o["*"]&&(u=kn(e,n,r,i,"*",o)),u}function Ln(e,n){var r,i,s=v.ajaxSettings.flatOptions||{};for(r in n)n[r]!==t&&((s[r]?e:i||(i={}))[r]=n[r]);i&&v.extend(!0,e,i)}function An(e,n,r){var i,s,o,u,a=e.contents,f=e.dataTypes,l=e.responseFields;for(s in l)s in r&&(n[l[s]]=r[s]);while(f[0]==="*")f.shift(),i===t&&(i=e.mimeType||n.getResponseHeader("content-type"));if(i)for(s in a)if(a[s]&&a[s].test(i)){f.unshift(s);break}if(f[0]in r)o=f[0];else{for(s in r){if(!f[0]||e.converters[s+" "+f[0]]){o=s;break}u||(u=s)}o=o||u}if(o)return o!==f[0]&&f.unshift(o),r[o]}function On(e,t){var n,r,i,s,o=e.dataTypes.slice(),u=o[0],a={},f=0;e.dataFilter&&(t=e.dataFilter(t,e.dataType));if(o[1])for(n in e.converters)a[n.toLowerCase()]=e.converters[n];for(;i=o[++f];)if(i!=="*"){if(u!=="*"&&u!==i){n=a[u+" "+i]||a["* "+i];if(!n)for(r in a){s=r.split(" ");if(s[1]===i){n=a[u+" "+s[0]]||a["* "+s[0]];if(n){n===!0?n=a[r]:a[r]!==!0&&(i=s[0],o.splice(f--,0,i));break}}}if(n!==!0)if(n&&e["throws"])t=n(t);else try{t=n(t)}catch(l){return{state:"parsererror",error:n?l:"No conversion from "+u+" to "+i}}}u=i}return{state:"success",data:t}}function Fn(){try{return new e.XMLHttpRequest}catch(t){}}function In(){try{return new e.ActiveXObject("Microsoft.XMLHTTP")}catch(t){}}function $n(){return setTimeout(function(){qn=t},0),qn=v.now()}function Jn(e,t){v.each(t,function(t,n){var r=(Vn[t]||[]).concat(Vn["*"]),i=0,s=r.length;for(;i<s;i++)if(r[i].call(e,t,n))return})}function Kn(e,t,n){var r,i=0,s=0,o=Xn.length,u=v.Deferred().always(function(){delete a.elem}),a=function(){var t=qn||$n(),n=Math.max(0,f.startTime+f.duration-t),r=n/f.duration||0,i=1-r,s=0,o=f.tweens.length;for(;s<o;s++)f.tweens[s].run(i);return u.notifyWith(e,[f,i,n]),i<1&&o?n:(u.resolveWith(e,[f]),!1)},f=u.promise({elem:e,props:v.extend({},t),opts:v.extend(!0,{specialEasing:{}},n),originalProperties:t,originalOptions:n,startTime:qn||$n(),duration:n.duration,tweens:[],createTween:function(t,n,r){var i=v.Tween(e,f.opts,t,n,f.opts.specialEasing[t]||f.opts.easing);return f.tweens.push(i),i},stop:function(t){var n=0,r=t?f.tweens.length:0;for(;n<r;n++)f.tweens[n].run(1);return t?u.resolveWith(e,[f,t]):u.rejectWith(e,[f,t]),this}}),l=f.props;Qn(l,f.opts.specialEasing);for(;i<o;i++){r=Xn[i].call(f,e,l,f.opts);if(r)return r}return Jn(f,l),v.isFunction(f.opts.start)&&f.opts.start.call(e,f),v.fx.timer(v.extend(a,{anim:f,queue:f.opts.queue,elem:e})),f.progress(f.opts.progress).done(f.opts.done,f.opts.complete).fail(f.opts.fail).always(f.opts.always)}function Qn(e,t){var n,r,i,s,o;for(n in e){r=v.camelCase(n),i=t[r],s=e[n],v.isArray(s)&&(i=s[1],s=e[n]=s[0]),n!==r&&(e[r]=s,delete e[n]),o=v.cssHooks[r];if(o&&"expand"in o){s=o.expand(s),delete e[r];for(n in s)n in e||(e[n]=s[n],t[n]=i)}else t[r]=i}}function Gn(e,t,n){var r,i,s,o,u,a,f,l,c,h=this,p=e.style,d={},m=[],g=e.nodeType&&Gt(e);n.queue||(l=v._queueHooks(e,"fx"),l.unqueued==null&&(l.unqueued=0,c=l.empty.fire,l.empty.fire=function(){l.unqueued||c()}),l.unqueued++,h.always(function(){h.always(function(){l.unqueued--,v.queue(e,"fx").length||l.empty.fire()})})),e.nodeType===1&&("height"in t||"width"in t)&&(n.overflow=[p.overflow,p.overflowX,p.overflowY],v.css(e,"display")==="inline"&&v.css(e,"float")==="none"&&(!v.support.inlineBlockNeedsLayout||nn(e.nodeName)==="inline"?p.display="inline-block":p.zoom=1)),n.overflow&&(p.overflow="hidden",v.support.shrinkWrapBlocks||h.done(function(){p.overflow=n.overflow[0],p.overflowX=n.overflow[1],p.overflowY=n.overflow[2]}));for(r in t){s=t[r];if(Un.exec(s)){delete t[r],a=a||s==="toggle";if(s===(g?"hide":"show"))continue;m.push(r)}}o=m.length;if(o){u=v._data(e,"fxshow")||v._data(e,"fxshow",{}),"hidden"in u&&(g=u.hidden),a&&(u.hidden=!g),g?v(e).show():h.done(function(){v(e).hide()}),h.done(function(){var t;v.removeData(e,"fxshow",!0);for(t in d)v.style(e,t,d[t])});for(r=0;r<o;r++)i=m[r],f=h.createTween(i,g?u[i]:0),d[i]=u[i]||v.style(e,i),i in u||(u[i]=f.start,g&&(f.end=f.start,f.start=i==="width"||i==="height"?1:0))}}function Yn(e,t,n,r,i){return new Yn.prototype.init(e,t,n,r,i)}function Zn(e,t){var n,r={height:e},i=0;t=t?1:0;for(;i<4;i+=2-t)n=$t[i],r["margin"+n]=r["padding"+n]=e;return t&&(r.opacity=r.width=e),r}function tr(e){return v.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:!1}var n,r,i=e.document,s=e.location,o=e.navigator,u=e.jQuery,a=e.$,f=Array.prototype.push,l=Array.prototype.slice,c=Array.prototype.indexOf,h=Object.prototype.toString,p=Object.prototype.hasOwnProperty,d=String.prototype.trim,v=function(e,t){return new v.fn.init(e,t,n)},m=/[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source,g=/\S/,y=/\s+/,b=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,w=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,E=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,S=/^[\],:{}\s]*$/,x=/(?:^|:|,)(?:\s*\[)+/g,T=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,N=/"[^"\\\r\n]*"|true|false|null|-?(?:\d\d*\.|)\d+(?:[eE][\-+]?\d+|)/g,C=/^-ms-/,k=/-([\da-z])/gi,L=function(e,t){return(t+"").toUpperCase()},A=function(){i.addEventListener?(i.removeEventListener("DOMContentLoaded",A,!1),v.ready()):i.readyState==="complete"&&(i.detachEvent("onreadystatechange",A),v.ready())},O={};v.fn=v.prototype={constructor:v,init:function(e,n,r){var s,o,u,a;if(!e)return this;if(e.nodeType)return this.context=this[0]=e,this.length=1,this;if(typeof e=="string"){e.charAt(0)==="<"&&e.charAt(e.length-1)===">"&&e.length>=3?s=[null,e,null]:s=w.exec(e);if(s&&(s[1]||!n)){if(s[1])return n=n instanceof v?n[0]:n,a=n&&n.nodeType?n.ownerDocument||n:i,e=v.parseHTML(s[1],a,!0),E.test(s[1])&&v.isPlainObject(n)&&this.attr.call(e,n,!0),v.merge(this,e);o=i.getElementById(s[2]);if(o&&o.parentNode){if(o.id!==s[2])return r.find(e);this.length=1,this[0]=o}return this.context=i,this.selector=e,this}return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e)}return v.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),v.makeArray(e,this))},selector:"",jquery:"1.8.3",length:0,size:function(){return this.length},toArray:function(){return l.call(this)},get:function(e){return e==null?this.toArray():e<0?this[this.length+e]:this[e]},pushStack:function(e,t,n){var r=v.merge(this.constructor(),e);return r.prevObject=this,r.context=this.context,t==="find"?r.selector=this.selector+(this.selector?" ":"")+n:t&&(r.selector=this.selector+"."+t+"("+n+")"),r},each:function(e,t){return v.each(this,e,t)},ready:function(e){return v.ready.promise().done(e),this},eq:function(e){return e=+e,e===-1?this.slice(e):this.slice(e,e+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(l.apply(this,arguments),"slice",l.call(arguments).join(","))},map:function(e){return this.pushStack(v.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:[].sort,splice:[].splice},v.fn.init.prototype=v.fn,v.extend=v.fn.extend=function(){var e,n,r,i,s,o,u=arguments[0]||{},a=1,f=arguments.length,l=!1;typeof u=="boolean"&&(l=u,u=arguments[1]||{},a=2),typeof u!="object"&&!v.isFunction(u)&&(u={}),f===a&&(u=this,--a);for(;a<f;a++)if((e=arguments[a])!=null)for(n in e){r=u[n],i=e[n];if(u===i)continue;l&&i&&(v.isPlainObject(i)||(s=v.isArray(i)))?(s?(s=!1,o=r&&v.isArray(r)?r:[]):o=r&&v.isPlainObject(r)?r:{},u[n]=v.extend(l,o,i)):i!==t&&(u[n]=i)}return u},v.extend({noConflict:function(t){return e.$===v&&(e.$=a),t&&e.jQuery===v&&(e.jQuery=u),v},isReady:!1,readyWait:1,holdReady:function(e){e?v.readyWait++:v.ready(!0)},ready:function(e){if(e===!0?--v.readyWait:v.isReady)return;if(!i.body)return setTimeout(v.ready,1);v.isReady=!0;if(e!==!0&&--v.readyWait>0)return;r.resolveWith(i,[v]),v.fn.trigger&&v(i).trigger("ready").off("ready")},isFunction:function(e){return v.type(e)==="function"},isArray:Array.isArray||function(e){return v.type(e)==="array"},isWindow:function(e){return e!=null&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return e==null?String(e):O[h.call(e)]||"object"},isPlainObject:function(e){if(!e||v.type(e)!=="object"||e.nodeType||v.isWindow(e))return!1;try{if(e.constructor&&!p.call(e,"constructor")&&!p.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(n){return!1}var r;for(r in e);return r===t||p.call(e,r)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw new Error(e)},parseHTML:function(e,t,n){var r;return!e||typeof e!="string"?null:(typeof t=="boolean"&&(n=t,t=0),t=t||i,(r=E.exec(e))?[t.createElement(r[1])]:(r=v.buildFragment([e],t,n?null:[]),v.merge([],(r.cacheable?v.clone(r.fragment):r.fragment).childNodes)))},parseJSON:function(t){if(!t||typeof t!="string")return null;t=v.trim(t);if(e.JSON&&e.JSON.parse)return e.JSON.parse(t);if(S.test(t.replace(T,"@").replace(N,"]").replace(x,"")))return(new Function("return "+t))();v.error("Invalid JSON: "+t)},parseXML:function(n){var r,i;if(!n||typeof n!="string")return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(s){r=t}return(!r||!r.documentElement||r.getElementsByTagName("parsererror").length)&&v.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&g.test(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(C,"ms-").replace(k,L)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,n,r){var i,s=0,o=e.length,u=o===t||v.isFunction(e);if(r){if(u){for(i in e)if(n.apply(e[i],r)===!1)break}else for(;s<o;)if(n.apply(e[s++],r)===!1)break}else if(u){for(i in e)if(n.call(e[i],i,e[i])===!1)break}else for(;s<o;)if(n.call(e[s],s,e[s++])===!1)break;return e},trim:d&&!d.call("\ufeff\u00a0")?function(e){return e==null?"":d.call(e)}:function(e){return e==null?"":(e+"").replace(b,"")},makeArray:function(e,t){var n,r=t||[];return e!=null&&(n=v.type(e),e.length==null||n==="string"||n==="function"||n==="regexp"||v.isWindow(e)?f.call(r,e):v.merge(r,e)),r},inArray:function(e,t,n){var r;if(t){if(c)return c.call(t,e,n);r=t.length,n=n?n<0?Math.max(0,r+n):n:0;for(;n<r;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,s=0;if(typeof r=="number")for(;s<r;s++)e[i++]=n[s];else while(n[s]!==t)e[i++]=n[s++];return e.length=i,e},grep:function(e,t,n){var r,i=[],s=0,o=e.length;n=!!n;for(;s<o;s++)r=!!t(e[s],s),n!==r&&i.push(e[s]);return i},map:function(e,n,r){var i,s,o=[],u=0,a=e.length,f=e instanceof v||a!==t&&typeof a=="number"&&(a>0&&e[0]&&e[a-1]||a===0||v.isArray(e));if(f)for(;u<a;u++)i=n(e[u],u,r),i!=null&&(o[o.length]=i);else for(s in e)i=n(e[s],s,r),i!=null&&(o[o.length]=i);return o.concat.apply([],o)},guid:1,proxy:function(e,n){var r,i,s;return typeof n=="string"&&(r=e[n],n=e,e=r),v.isFunction(e)?(i=l.call(arguments,2),s=function(){return e.apply(n,i.concat(l.call(arguments)))},s.guid=e.guid=e.guid||v.guid++,s):t},access:function(e,n,r,i,s,o,u){var a,f=r==null,l=0,c=e.length;if(r&&typeof r=="object"){for(l in r)v.access(e,n,l,r[l],1,o,i);s=1}else if(i!==t){a=u===t&&v.isFunction(i),f&&(a?(a=n,n=function(e,t,n){return a.call(v(e),n)}):(n.call(e,i),n=null));if(n)for(;l<c;l++)n(e[l],r,a?i.call(e[l],l,n(e[l],r)):i,u);s=1}return s?e:f?n.call(e):c?n(e[0],r):o},now:function(){return(new Date).getTime()}}),v.ready.promise=function(t){if(!r){r=v.Deferred();if(i.readyState==="complete")setTimeout(v.ready,1);else if(i.addEventListener)i.addEventListener("DOMContentLoaded",A,!1),e.addEventListener("load",v.ready,!1);else{i.attachEvent("onreadystatechange",A),e.attachEvent("onload",v.ready);var n=!1;try{n=e.frameElement==null&&i.documentElement}catch(s){}n&&n.doScroll&&function o(){if(!v.isReady){try{n.doScroll("left")}catch(e){return setTimeout(o,50)}v.ready()}}()}}return r.promise(t)},v.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(e,t){O["[object "+t+"]"]=t.toLowerCase()}),n=v(i);var M={};v.Callbacks=function(e){e=typeof e=="string"?M[e]||_(e):v.extend({},e);var n,r,i,s,o,u,a=[],f=!e.once&&[],l=function(t){n=e.memory&&t,r=!0,u=s||0,s=0,o=a.length,i=!0;for(;a&&u<o;u++)if(a[u].apply(t[0],t[1])===!1&&e.stopOnFalse){n=!1;break}i=!1,a&&(f?f.length&&l(f.shift()):n?a=[]:c.disable())},c={add:function(){if(a){var t=a.length;(function r(t){v.each(t,function(t,n){var i=v.type(n);i==="function"?(!e.unique||!c.has(n))&&a.push(n):n&&n.length&&i!=="string"&&r(n)})})(arguments),i?o=a.length:n&&(s=t,l(n))}return this},remove:function(){return a&&v.each(arguments,function(e,t){var n;while((n=v.inArray(t,a,n))>-1)a.splice(n,1),i&&(n<=o&&o--,n<=u&&u--)}),this},has:function(e){return v.inArray(e,a)>-1},empty:function(){return a=[],this},disable:function(){return a=f=n=t,this},disabled:function(){return!a},lock:function(){return f=t,n||c.disable(),this},locked:function(){return!f},fireWith:function(e,t){return t=t||[],t=[e,t.slice?t.slice():t],a&&(!r||f)&&(i?f.push(t):l(t)),this},fire:function(){return c.fireWith(this,arguments),this},fired:function(){return!!r}};return c},v.extend({Deferred:function(e){var t=[["resolve","done",v.Callbacks("once memory"),"resolved"],["reject","fail",v.Callbacks("once memory"),"rejected"],["notify","progress",v.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return v.Deferred(function(n){v.each(t,function(t,r){var s=r[0],o=e[t];i[r[1]](v.isFunction(o)?function(){var e=o.apply(this,arguments);e&&v.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[s+"With"](this===i?n:this,[e])}:n[s])}),e=null}).promise()},promise:function(e){return e!=null?v.extend(e,r):r}},i={};return r.pipe=r.then,v.each(t,function(e,s){var o=s[2],u=s[3];r[s[1]]=o.add,u&&o.add(function(){n=u},t[e^1][2].disable,t[2][2].lock),i[s[0]]=o.fire,i[s[0]+"With"]=o.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=l.call(arguments),r=n.length,i=r!==1||e&&v.isFunction(e.promise)?r:0,s=i===1?e:v.Deferred(),o=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?l.call(arguments):r,n===u?s.notifyWith(t,n):--i||s.resolveWith(t,n)}},u,a,f;if(r>1){u=new Array(r),a=new Array(r),f=new Array(r);for(;t<r;t++)n[t]&&v.isFunction(n[t].promise)?n[t].promise().done(o(t,f,n)).fail(s.reject).progress(o(t,a,u)):--i}return i||s.resolveWith(f,n),s.promise()}}),v.support=function(){var t,n,r,s,o,u,a,f,l,c,h,p=i.createElement("div");p.setAttribute("className","t"),p.innerHTML="  <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",n=p.getElementsByTagName("*"),r=p.getElementsByTagName("a")[0];if(!n||!r||!n.length)return{};s=i.createElement("select"),o=s.appendChild(i.createElement("option")),u=p.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t={leadingWhitespace:p.firstChild.nodeType===3,tbody:!p.getElementsByTagName("tbody").length,htmlSerialize:!!p.getElementsByTagName("link").length,style:/top/.test(r.getAttribute("style")),hrefNormalized:r.getAttribute("href")==="/a",opacity:/^0.5/.test(r.style.opacity),cssFloat:!!r.style.cssFloat,checkOn:u.value==="on",optSelected:o.selected,getSetAttribute:p.className!=="t",enctype:!!i.createElement("form").enctype,html5Clone:i.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",boxModel:i.compatMode==="CSS1Compat",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0,boxSizingReliable:!0,pixelPosition:!1},u.checked=!0,t.noCloneChecked=u.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!o.disabled;try{delete p.test}catch(d){t.deleteExpando=!1}!p.addEventListener&&p.attachEvent&&p.fireEvent&&(p.attachEvent("onclick",h=function(){t.noCloneEvent=!1}),p.cloneNode(!0).fireEvent("onclick"),p.detachEvent("onclick",h)),u=i.createElement("input"),u.value="t",u.setAttribute("type","radio"),t.radioValue=u.value==="t",u.setAttribute("checked","checked"),u.setAttribute("name","t"),p.appendChild(u),a=i.createDocumentFragment(),a.appendChild(p.lastChild),t.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,t.appendChecked=u.checked,a.removeChild(u),a.appendChild(p);if(p.attachEvent)for(l in{submit:!0,change:!0,focusin:!0})f="on"+l,c=f in p,c||(p.setAttribute(f,"return;"),c=typeof p[f]=="function"),t[l+"Bubbles"]=c;return v(function(){var n,r,s,o,u="padding:0;margin:0;border:0;display:block;overflow:hidden;",a=i.getElementsByTagName("body")[0];if(!a)return;n=i.createElement("div"),n.style.cssText="visibility:hidden;border:0;width:0;height:0;position:static;top:0;margin-top:1px",a.insertBefore(n,a.firstChild),r=i.createElement("div"),n.appendChild(r),r.innerHTML="<table><tr><td></td><td>t</td></tr></table>",s=r.getElementsByTagName("td"),s[0].style.cssText="padding:0;margin:0;border:0;display:none",c=s[0].offsetHeight===0,s[0].style.display="",s[1].style.display="none",t.reliableHiddenOffsets=c&&s[0].offsetHeight===0,r.innerHTML="",r.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",t.boxSizing=r.offsetWidth===4,t.doesNotIncludeMarginInBodyOffset=a.offsetTop!==1,e.getComputedStyle&&(t.pixelPosition=(e.getComputedStyle(r,null)||{}).top!=="1%",t.boxSizingReliable=(e.getComputedStyle(r,null)||{width:"4px"}).width==="4px",o=i.createElement("div"),o.style.cssText=r.style.cssText=u,o.style.marginRight=o.style.width="0",r.style.width="1px",r.appendChild(o),t.reliableMarginRight=!parseFloat((e.getComputedStyle(o,null)||{}).marginRight)),typeof r.style.zoom!="undefined"&&(r.innerHTML="",r.style.cssText=u+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=r.offsetWidth===3,r.style.display="block",r.style.overflow="visible",r.innerHTML="<div></div>",r.firstChild.style.width="5px",t.shrinkWrapBlocks=r.offsetWidth!==3,n.style.zoom=1),a.removeChild(n),n=r=s=o=null}),a.removeChild(p),n=r=s=o=u=a=p=null,t}();var D=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;v.extend({cache:{},deletedIds:[],uuid:0,expando:"jQuery"+(v.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(e){return e=e.nodeType?v.cache[e[v.expando]]:e[v.expando],!!e&&!B(e)},data:function(e,n,r,i){if(!v.acceptData(e))return;var s,o,u=v.expando,a=typeof n=="string",f=e.nodeType,l=f?v.cache:e,c=f?e[u]:e[u]&&u;if((!c||!l[c]||!i&&!l[c].data)&&a&&r===t)return;c||(f?e[u]=c=v.deletedIds.pop()||v.guid++:c=u),l[c]||(l[c]={},f||(l[c].toJSON=v.noop));if(typeof n=="object"||typeof n=="function")i?l[c]=v.extend(l[c],n):l[c].data=v.extend(l[c].data,n);return s=l[c],i||(s.data||(s.data={}),s=s.data),r!==t&&(s[v.camelCase(n)]=r),a?(o=s[n],o==null&&(o=s[v.camelCase(n)])):o=s,o},removeData:function(e,t,n){if(!v.acceptData(e))return;var r,i,s,o=e.nodeType,u=o?v.cache:e,a=o?e[v.expando]:v.expando;if(!u[a])return;if(t){r=n?u[a]:u[a].data;if(r){v.isArray(t)||(t in r?t=[t]:(t=v.camelCase(t),t in r?t=[t]:t=t.split(" ")));for(i=0,s=t.length;i<s;i++)delete r[t[i]];if(!(n?B:v.isEmptyObject)(r))return}}if(!n){delete u[a].data;if(!B(u[a]))return}o?v.cleanData([e],!0):v.support.deleteExpando||u!=u.window?delete u[a]:u[a]=null},_data:function(e,t,n){return v.data(e,t,n,!0)},acceptData:function(e){var t=e.nodeName&&v.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),v.fn.extend({data:function(e,n){var r,i,s,o,u,a=this[0],f=0,l=null;if(e===t){if(this.length){l=v.data(a);if(a.nodeType===1&&!v._data(a,"parsedAttrs")){s=a.attributes;for(u=s.length;f<u;f++)o=s[f].name,o.indexOf("data-")||(o=v.camelCase(o.substring(5)),H(a,o,l[o]));v._data(a,"parsedAttrs",!0)}}return l}return typeof e=="object"?this.each(function(){v.data(this,e)}):(r=e.split(".",2),r[1]=r[1]?"."+r[1]:"",i=r[1]+"!",v.access(this,function(n){if(n===t)return l=this.triggerHandler("getData"+i,[r[0]]),l===t&&a&&(l=v.data(a,e),l=H(a,e,l)),l===t&&r[1]?this.data(r[0]):l;r[1]=n,this.each(function(){var t=v(this);t.triggerHandler("setData"+i,r),v.data(this,e,n),t.triggerHandler("changeData"+i,r)})},null,n,arguments.length>1,null,!1))},removeData:function(e){return this.each(function(){v.removeData(this,e)})}}),v.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=v._data(e,t),n&&(!r||v.isArray(n)?r=v._data(e,t,v.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=v.queue(e,t),r=n.length,i=n.shift(),s=v._queueHooks(e,t),o=function(){v.dequeue(e,t)};i==="inprogress"&&(i=n.shift(),r--),i&&(t==="fx"&&n.unshift("inprogress"),delete s.stop,i.call(e,o,s)),!r&&s&&s.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return v._data(e,n)||v._data(e,n,{empty:v.Callbacks("once memory").add(function(){v.removeData(e,t+"queue",!0),v.removeData(e,n,!0)})})}}),v.fn.extend({queue:function(e,n){var r=2;return typeof e!="string"&&(n=e,e="fx",r--),arguments.length<r?v.queue(this[0],e):n===t?this:this.each(function(){var t=v.queue(this,e,n);v._queueHooks(this,e),e==="fx"&&t[0]!=="inprogress"&&v.dequeue(this,e)})},dequeue:function(e){return this.each(function(){v.dequeue(this,e)})},delay:function(e,t){return e=v.fx?v.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,s=v.Deferred(),o=this,u=this.length,a=function(){--i||s.resolveWith(o,[o])};typeof e!="string"&&(n=e,e=t),e=e||"fx";while(u--)r=v._data(o[u],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(a));return a(),s.promise(n)}});var j,F,I,q=/[\t\r\n]/g,R=/\r/g,U=/^(?:button|input)$/i,z=/^(?:button|input|object|select|textarea)$/i,W=/^a(?:rea|)$/i,X=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,V=v.support.getSetAttribute;v.fn.extend({attr:function(e,t){return v.access(this,v.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){v.removeAttr(this,e)})},prop:function(e,t){return v.access(this,v.prop,e,t,arguments.length>1)},removeProp:function(e){return e=v.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,s,o,u;if(v.isFunction(e))return this.each(function(t){v(this).addClass(e.call(this,t,this.className))});if(e&&typeof e=="string"){t=e.split(y);for(n=0,r=this.length;n<r;n++){i=this[n];if(i.nodeType===1)if(!i.className&&t.length===1)i.className=e;else{s=" "+i.className+" ";for(o=0,u=t.length;o<u;o++)s.indexOf(" "+t[o]+" ")<0&&(s+=t[o]+" ");i.className=v.trim(s)}}}return this},removeClass:function(e){var n,r,i,s,o,u,a;if(v.isFunction(e))return this.each(function(t){v(this).removeClass(e.call(this,t,this.className))});if(e&&typeof e=="string"||e===t){n=(e||"").split(y);for(u=0,a=this.length;u<a;u++){i=this[u];if(i.nodeType===1&&i.className){r=(" "+i.className+" ").replace(q," ");for(s=0,o=n.length;s<o;s++)while(r.indexOf(" "+n[s]+" ")>=0)r=r.replace(" "+n[s]+" "," ");i.className=e?v.trim(r):""}}}return this},toggleClass:function(e,t){var n=typeof e,r=typeof t=="boolean";return v.isFunction(e)?this.each(function(n){v(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if(n==="string"){var i,s=0,o=v(this),u=t,a=e.split(y);while(i=a[s++])u=r?u:!o.hasClass(i),o[u?"addClass":"removeClass"](i)}else if(n==="undefined"||n==="boolean")this.className&&v._data(this,"__className__",this.className),this.className=this.className||e===!1?"":v._data(this,"__className__")||""})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;n<r;n++)if(this[n].nodeType===1&&(" "+this[n].className+" ").replace(q," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,s=this[0];if(!arguments.length){if(s)return n=v.valHooks[s.type]||v.valHooks[s.nodeName.toLowerCase()],n&&"get"in n&&(r=n.get(s,"value"))!==t?r:(r=s.value,typeof r=="string"?r.replace(R,""):r==null?"":r);return}return i=v.isFunction(e),this.each(function(r){var s,o=v(this);if(this.nodeType!==1)return;i?s=e.call(this,r,o.val()):s=e,s==null?s="":typeof s=="number"?s+="":v.isArray(s)&&(s=v.map(s,function(e){return e==null?"":e+""})),n=v.valHooks[this.type]||v.valHooks[this.nodeName.toLowerCase()];if(!n||!("set"in n)||n.set(this,s,"value")===t)this.value=s})}}),v.extend({valHooks:{option:{get:function(e){var t=e.attributes.value;return!t||t.specified?e.value:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,s=e.type==="select-one"||i<0,o=s?null:[],u=s?i+1:r.length,a=i<0?u:s?i:0;for(;a<u;a++){n=r[a];if((n.selected||a===i)&&(v.support.optDisabled?!n.disabled:n.getAttribute("disabled")===null)&&(!n.parentNode.disabled||!v.nodeName(n.parentNode,"optgroup"))){t=v(n).val();if(s)return t;o.push(t)}}return o},set:function(e,t){var n=v.makeArray(t);return v(e).find("option").each(function(){this.selected=v.inArray(v(this).val(),n)>=0}),n.length||(e.selectedIndex=-1),n}}},attrFn:{},attr:function(e,n,r,i){var s,o,u,a=e.nodeType;if(!e||a===3||a===8||a===2)return;if(i&&v.isFunction(v.fn[n]))return v(e)[n](r);if(typeof e.getAttribute=="undefined")return v.prop(e,n,r);u=a!==1||!v.isXMLDoc(e),u&&(n=n.toLowerCase(),o=v.attrHooks[n]||(X.test(n)?F:j));if(r!==t){if(r===null){v.removeAttr(e,n);return}return o&&"set"in o&&u&&(s=o.set(e,r,n))!==t?s:(e.setAttribute(n,r+""),r)}return o&&"get"in o&&u&&(s=o.get(e,n))!==null?s:(s=e.getAttribute(n),s===null?t:s)},removeAttr:function(e,t){var n,r,i,s,o=0;if(t&&e.nodeType===1){r=t.split(y);for(;o<r.length;o++)i=r[o],i&&(n=v.propFix[i]||i,s=X.test(i),s||v.attr(e,i,""),e.removeAttribute(V?i:n),s&&n in e&&(e[n]=!1))}},attrHooks:{type:{set:function(e,t){if(U.test(e.nodeName)&&e.parentNode)v.error("type property can't be changed");else if(!v.support.radioValue&&t==="radio"&&v.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}},value:{get:function(e,t){return j&&v.nodeName(e,"button")?j.get(e,t):t in e?e.value:null},set:function(e,t,n){if(j&&v.nodeName(e,"button"))return j.set(e,t,n);e.value=t}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(e,n,r){var i,s,o,u=e.nodeType;if(!e||u===3||u===8||u===2)return;return o=u!==1||!v.isXMLDoc(e),o&&(n=v.propFix[n]||n,s=v.propHooks[n]),r!==t?s&&"set"in s&&(i=s.set(e,r,n))!==t?i:e[n]=r:s&&"get"in s&&(i=s.get(e,n))!==null?i:e[n]},propHooks:{tabIndex:{get:function(e){var n=e.getAttributeNode("tabindex");return n&&n.specified?parseInt(n.value,10):z.test(e.nodeName)||W.test(e.nodeName)&&e.href?0:t}}}}),F={get:function(e,n){var r,i=v.prop(e,n);return i===!0||typeof i!="boolean"&&(r=e.getAttributeNode(n))&&r.nodeValue!==!1?n.toLowerCase():t},set:function(e,t,n){var r;return t===!1?v.removeAttr(e,n):(r=v.propFix[n]||n,r in e&&(e[r]=!0),e.setAttribute(n,n.toLowerCase())),n}},V||(I={name:!0,id:!0,coords:!0},j=v.valHooks.button={get:function(e,n){var r;return r=e.getAttributeNode(n),r&&(I[n]?r.value!=="":r.specified)?r.value:t},set:function(e,t,n){var r=e.getAttributeNode(n);return r||(r=i.createAttribute(n),e.setAttributeNode(r)),r.value=t+""}},v.each(["width","height"],function(e,t){v.attrHooks[t]=v.extend(v.attrHooks[t],{set:function(e,n){if(n==="")return e.setAttribute(t,"auto"),n}})}),v.attrHooks.contenteditable={get:j.get,set:function(e,t,n){t===""&&(t="false"),j.set(e,t,n)}}),v.support.hrefNormalized||v.each(["href","src","width","height"],function(e,n){v.attrHooks[n]=v.extend(v.attrHooks[n],{get:function(e){var r=e.getAttribute(n,2);return r===null?t:r}})}),v.support.style||(v.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||t},set:function(e,t){return e.style.cssText=t+""}}),v.support.optSelected||(v.propHooks.selected=v.extend(v.propHooks.selected,{get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}})),v.support.enctype||(v.propFix.enctype="encoding"),v.support.checkOn||v.each(["radio","checkbox"],function(){v.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}}),v.each(["radio","checkbox"],function(){v.valHooks[this]=v.extend(v.valHooks[this],{set:function(e,t){if(v.isArray(t))return e.checked=v.inArray(v(e).val(),t)>=0}})});var $=/^(?:textarea|input|select)$/i,J=/^([^\.]*|)(?:\.(.+)|)$/,K=/(?:^|\s)hover(\.\S+|)\b/,Q=/^key/,G=/^(?:mouse|contextmenu)|click/,Y=/^(?:focusinfocus|focusoutblur)$/,Z=function(e){return v.event.special.hover?e:e.replace(K,"mouseenter$1 mouseleave$1")};v.event={add:function(e,n,r,i,s){var o,u,a,f,l,c,h,p,d,m,g;if(e.nodeType===3||e.nodeType===8||!n||!r||!(o=v._data(e)))return;r.handler&&(d=r,r=d.handler,s=d.selector),r.guid||(r.guid=v.guid++),a=o.events,a||(o.events=a={}),u=o.handle,u||(o.handle=u=function(e){return typeof v=="undefined"||!!e&&v.event.triggered===e.type?t:v.event.dispatch.apply(u.elem,arguments)},u.elem=e),n=v.trim(Z(n)).split(" ");for(f=0;f<n.length;f++){l=J.exec(n[f])||[],c=l[1],h=(l[2]||"").split(".").sort(),g=v.event.special[c]||{},c=(s?g.delegateType:g.bindType)||c,g=v.event.special[c]||{},p=v.extend({type:c,origType:l[1],data:i,handler:r,guid:r.guid,selector:s,needsContext:s&&v.expr.match.needsContext.test(s),namespace:h.join(".")},d),m=a[c];if(!m){m=a[c]=[],m.delegateCount=0;if(!g.setup||g.setup.call(e,i,h,u)===!1)e.addEventListener?e.addEventListener(c,u,!1):e.attachEvent&&e.attachEvent("on"+c,u)}g.add&&(g.add.call(e,p),p.handler.guid||(p.handler.guid=r.guid)),s?m.splice(m.delegateCount++,0,p):m.push(p),v.event.global[c]=!0}e=null},global:{},remove:function(e,t,n,r,i){var s,o,u,a,f,l,c,h,p,d,m,g=v.hasData(e)&&v._data(e);if(!g||!(h=g.events))return;t=v.trim(Z(t||"")).split(" ");for(s=0;s<t.length;s++){o=J.exec(t[s])||[],u=a=o[1],f=o[2];if(!u){for(u in h)v.event.remove(e,u+t[s],n,r,!0);continue}p=v.event.special[u]||{},u=(r?p.delegateType:p.bindType)||u,d=h[u]||[],l=d.length,f=f?new RegExp("(^|\\.)"+f.split(".").sort().join("\\.(?:.*\\.|)")+"(\\.|$)"):null;for(c=0;c<d.length;c++)m=d[c],(i||a===m.origType)&&(!n||n.guid===m.guid)&&(!f||f.test(m.namespace))&&(!r||r===m.selector||r==="**"&&m.selector)&&(d.splice(c--,1),m.selector&&d.delegateCount--,p.remove&&p.remove.call(e,m));d.length===0&&l!==d.length&&((!p.teardown||p.teardown.call(e,f,g.handle)===!1)&&v.removeEvent(e,u,g.handle),delete h[u])}v.isEmptyObject(h)&&(delete g.handle,v.removeData(e,"events",!0))},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(n,r,s,o){if(!s||s.nodeType!==3&&s.nodeType!==8){var u,a,f,l,c,h,p,d,m,g,y=n.type||n,b=[];if(Y.test(y+v.event.triggered))return;y.indexOf("!")>=0&&(y=y.slice(0,-1),a=!0),y.indexOf(".")>=0&&(b=y.split("."),y=b.shift(),b.sort());if((!s||v.event.customEvent[y])&&!v.event.global[y])return;n=typeof n=="object"?n[v.expando]?n:new v.Event(y,n):new v.Event(y),n.type=y,n.isTrigger=!0,n.exclusive=a,n.namespace=b.join("."),n.namespace_re=n.namespace?new RegExp("(^|\\.)"+b.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,h=y.indexOf(":")<0?"on"+y:"";if(!s){u=v.cache;for(f in u)u[f].events&&u[f].events[y]&&v.event.trigger(n,r,u[f].handle.elem,!0);return}n.result=t,n.target||(n.target=s),r=r!=null?v.makeArray(r):[],r.unshift(n),p=v.event.special[y]||{};if(p.trigger&&p.trigger.apply(s,r)===!1)return;m=[[s,p.bindType||y]];if(!o&&!p.noBubble&&!v.isWindow(s)){g=p.delegateType||y,l=Y.test(g+y)?s:s.parentNode;for(c=s;l;l=l.parentNode)m.push([l,g]),c=l;c===(s.ownerDocument||i)&&m.push([c.defaultView||c.parentWindow||e,g])}for(f=0;f<m.length&&!n.isPropagationStopped();f++)l=m[f][0],n.type=m[f][1],d=(v._data(l,"events")||{})[n.type]&&v._data(l,"handle"),d&&d.apply(l,r),d=h&&l[h],d&&v.acceptData(l)&&d.apply&&d.apply(l,r)===!1&&n.preventDefault();return n.type=y,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(s.ownerDocument,r)===!1)&&(y!=="click"||!v.nodeName(s,"a"))&&v.acceptData(s)&&h&&s[y]&&(y!=="focus"&&y!=="blur"||n.target.offsetWidth!==0)&&!v.isWindow(s)&&(c=s[h],c&&(s[h]=null),v.event.triggered=y,s[y](),v.event.triggered=t,c&&(s[h]=c)),n.result}return},dispatch:function(n){n=v.event.fix(n||e.event);var r,i,s,o,u,a,f,c,h,p,d=(v._data(this,"events")||{})[n.type]||[],m=d.delegateCount,g=l.call(arguments),y=!n.exclusive&&!n.namespace,b=v.event.special[n.type]||{},w=[];g[0]=n,n.delegateTarget=this;if(b.preDispatch&&b.preDispatch.call(this,n)===!1)return;if(m&&(!n.button||n.type!=="click"))for(s=n.target;s!=this;s=s.parentNode||this)if(s.disabled!==!0||n.type!=="click"){u={},f=[];for(r=0;r<m;r++)c=d[r],h=c.selector,u[h]===t&&(u[h]=c.needsContext?v(h,this).index(s)>=0:v.find(h,this,null,[s]).length),u[h]&&f.push(c);f.length&&w.push({elem:s,matches:f})}d.length>m&&w.push({elem:this,matches:d.slice(m)});for(r=0;r<w.length&&!n.isPropagationStopped();r++){a=w[r],n.currentTarget=a.elem;for(i=0;i<a.matches.length&&!n.isImmediatePropagationStopped();i++){c=a.matches[i];if(y||!n.namespace&&!c.namespace||n.namespace_re&&n.namespace_re.test(c.namespace))n.data=c.data,n.handleObj=c,o=((v.event.special[c.origType]||{}).handle||c.handler).apply(a.elem,g),o!==t&&(n.result=o,o===!1&&(n.preventDefault(),n.stopPropagation()))}}return b.postDispatch&&b.postDispatch.call(this,n),n.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return e.which==null&&(e.which=t.charCode!=null?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,s,o,u=n.button,a=n.fromElement;return e.pageX==null&&n.clientX!=null&&(r=e.target.ownerDocument||i,s=r.documentElement,o=r.body,e.pageX=n.clientX+(s&&s.scrollLeft||o&&o.scrollLeft||0)-(s&&s.clientLeft||o&&o.clientLeft||0),e.pageY=n.clientY+(s&&s.scrollTop||o&&o.scrollTop||0)-(s&&s.clientTop||o&&o.clientTop||0)),!e.relatedTarget&&a&&(e.relatedTarget=a===e.target?n.toElement:a),!e.which&&u!==t&&(e.which=u&1?1:u&2?3:u&4?2:0),e}},fix:function(e){if(e[v.expando])return e;var t,n,r=e,s=v.event.fixHooks[e.type]||{},o=s.props?this.props.concat(s.props):this.props;e=v.Event(r);for(t=o.length;t;)n=o[--t],e[n]=r[n];return e.target||(e.target=r.srcElement||i),e.target.nodeType===3&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,r):e},special:{load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(e,t,n){v.isWindow(this)&&(this.onbeforeunload=n)},teardown:function(e,t){this.onbeforeunload===t&&(this.onbeforeunload=null)}}},simulate:function(e,t,n,r){var i=v.extend(new v.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?v.event.trigger(i,null,t):v.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},v.event.handle=v.event.dispatch,v.removeEvent=i.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]=="undefined"&&(e[r]=null),e.detachEvent(r,n))},v.Event=function(e,t){if(!(this instanceof v.Event))return new v.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?tt:et):this.type=e,t&&v.extend(this,t),this.timeStamp=e&&e.timeStamp||v.now(),this[v.expando]=!0},v.Event.prototype={preventDefault:function(){this.isDefaultPrevented=tt;var e=this.originalEvent;if(!e)return;e.preventDefault?e.preventDefault():e.returnValue=!1},stopPropagation:function(){this.isPropagationStopped=tt;var e=this.originalEvent;if(!e)return;e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=tt,this.stopPropagation()},isDefaultPrevented:et,isPropagationStopped:et,isImmediatePropagationStopped:et},v.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){v.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,s=e.handleObj,o=s.selector;if(!i||i!==r&&!v.contains(r,i))e.type=s.origType,n=s.handler.apply(this,arguments),e.type=t;return n}}}),v.support.submitBubbles||(v.event.special.submit={setup:function(){if(v.nodeName(this,"form"))return!1;v.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=v.nodeName(n,"input")||v.nodeName(n,"button")?n.form:t;r&&!v._data(r,"_submit_attached")&&(v.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),v._data(r,"_submit_attached",!0))})},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&v.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){if(v.nodeName(this,"form"))return!1;v.event.remove(this,"._submit")}}),v.support.changeBubbles||(v.event.special.change={setup:function(){if($.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")v.event.add(this,"propertychange._change",function(e){e.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),v.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),v.event.simulate("change",this,e,!0)});return!1}v.event.add(this,"beforeactivate._change",function(e){var t=e.target;$.test(t.nodeName)&&!v._data(t,"_change_attached")&&(v.event.add(t,"change._change",function(e){this.parentNode&&!e.isSimulated&&!e.isTrigger&&v.event.simulate("change",this.parentNode,e,!0)}),v._data(t,"_change_attached",!0))})},handle:function(e){var t=e.target;if(this!==t||e.isSimulated||e.isTrigger||t.type!=="radio"&&t.type!=="checkbox")return e.handleObj.handler.apply(this,arguments)},teardown:function(){return v.event.remove(this,"._change"),!$.test(this.nodeName)}}),v.support.focusinBubbles||v.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){v.event.simulate(t,e.target,v.event.fix(e),!0)};v.event.special[t]={setup:function(){n++===0&&i.addEventListener(e,r,!0)},teardown:function(){--n===0&&i.removeEventListener(e,r,!0)}}}),v.fn.extend({on:function(e,n,r,i,s){var o,u;if(typeof e=="object"){typeof n!="string"&&(r=r||n,n=t);for(u in e)this.on(u,n,r,e[u],s);return this}r==null&&i==null?(i=n,r=n=t):i==null&&(typeof n=="string"?(i=r,r=t):(i=r,r=n,n=t));if(i===!1)i=et;else if(!i)return this;return s===1&&(o=i,i=function(e){return v().off(e),o.apply(this,arguments)},i.guid=o.guid||(o.guid=v.guid++)),this.each(function(){v.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,s;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,v(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if(typeof e=="object"){for(s in e)this.off(s,n,e[s]);return this}if(n===!1||typeof n=="function")r=n,n=t;return r===!1&&(r=et),this.each(function(){v.event.remove(this,e,r,n)})},bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},live:function(e,t,n){return v(this.context).on(e,this.selector,t,n),this},die:function(e,t){return v(this.context).off(e,this.selector||"**",t),this},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return arguments.length===1?this.off(e,"**"):this.off(t,e||"**",n)},trigger:function(e,t){return this.each(function(){v.event.trigger(e,t,this)})},triggerHandler:function(e,t){if(this[0])return v.event.trigger(e,t,this[0],!0)},toggle:function(e){var t=arguments,n=e.guid||v.guid++,r=0,i=function(n){var i=(v._data(this,"lastToggle"+e.guid)||0)%r;return v._data(this,"lastToggle"+e.guid,i+1),n.preventDefault(),t[i].apply(this,arguments)||!1};i.guid=n;while(r<t.length)t[r++].guid=n;return this.click(i)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),v.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(e,t){v.fn[t]=function(e,n){return n==null&&(n=e,e=null),arguments.length>0?this.on(t,null,e,n):this.trigger(t)},Q.test(t)&&(v.event.fixHooks[t]=v.event.keyHooks),G.test(t)&&(v.event.fixHooks[t]=v.event.mouseHooks)}),function(e,t){function nt(e,t,n,r){n=n||[],t=t||g;var i,s,a,f,l=t.nodeType;if(!e||typeof e!="string")return n;if(l!==1&&l!==9)return[];a=o(t);if(!a&&!r)if(i=R.exec(e))if(f=i[1]){if(l===9){s=t.getElementById(f);if(!s||!s.parentNode)return n;if(s.id===f)return n.push(s),n}else if(t.ownerDocument&&(s=t.ownerDocument.getElementById(f))&&u(t,s)&&s.id===f)return n.push(s),n}else{if(i[2])return S.apply(n,x.call(t.getElementsByTagName(e),0)),n;if((f=i[3])&&Z&&t.getElementsByClassName)return S.apply(n,x.call(t.getElementsByClassName(f),0)),n}return vt(e.replace(j,"$1"),t,n,r,a)}function rt(e){return function(t){var n=t.nodeName.toLowerCase();return n==="input"&&t.type===e}}function it(e){return function(t){var n=t.nodeName.toLowerCase();return(n==="input"||n==="button")&&t.type===e}}function st(e){return N(function(t){return t=+t,N(function(n,r){var i,s=e([],n.length,t),o=s.length;while(o--)n[i=s[o]]&&(n[i]=!(r[i]=n[i]))})})}function ot(e,t,n){if(e===t)return n;var r=e.nextSibling;while(r){if(r===t)return-1;r=r.nextSibling}return 1}function ut(e,t){var n,r,s,o,u,a,f,l=L[d][e+" "];if(l)return t?0:l.slice(0);u=e,a=[],f=i.preFilter;while(u){if(!n||(r=F.exec(u)))r&&(u=u.slice(r[0].length)||u),a.push(s=[]);n=!1;if(r=I.exec(u))s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=r[0].replace(j," ");for(o in i.filter)(r=J[o].exec(u))&&(!f[o]||(r=f[o](r)))&&(s.push(n=new m(r.shift())),u=u.slice(n.length),n.type=o,n.matches=r);if(!n)break}return t?u.length:u?nt.error(e):L(e,a).slice(0)}function at(e,t,r){var i=t.dir,s=r&&t.dir==="parentNode",o=w++;return t.first?function(t,n,r){while(t=t[i])if(s||t.nodeType===1)return e(t,n,r)}:function(t,r,u){if(!u){var a,f=b+" "+o+" ",l=f+n;while(t=t[i])if(s||t.nodeType===1){if((a=t[d])===l)return t.sizset;if(typeof a=="string"&&a.indexOf(f)===0){if(t.sizset)return t}else{t[d]=l;if(e(t,r,u))return t.sizset=!0,t;t.sizset=!1}}}else while(t=t[i])if(s||t.nodeType===1)if(e(t,r,u))return t}}function ft(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function lt(e,t,n,r,i){var s,o=[],u=0,a=e.length,f=t!=null;for(;u<a;u++)if(s=e[u])if(!n||n(s,r,i))o.push(s),f&&t.push(u);return o}function ct(e,t,n,r,i,s){return r&&!r[d]&&(r=ct(r)),i&&!i[d]&&(i=ct(i,s)),N(function(s,o,u,a){var f,l,c,h=[],p=[],d=o.length,v=s||dt(t||"*",u.nodeType?[u]:u,[]),m=e&&(s||!t)?lt(v,h,e,u,a):v,g=n?i||(s?e:d||r)?[]:o:m;n&&n(m,g,u,a);if(r){f=lt(g,p),r(f,[],u,a),l=f.length;while(l--)if(c=f[l])g[p[l]]=!(m[p[l]]=c)}if(s){if(i||e){if(i){f=[],l=g.length;while(l--)(c=g[l])&&f.push(m[l]=c);i(null,g=[],f,a)}l=g.length;while(l--)(c=g[l])&&(f=i?T.call(s,c):h[l])>-1&&(s[f]=!(o[f]=c))}}else g=lt(g===o?g.splice(d,g.length):g),i?i(null,o,g,a):S.apply(o,g)})}function ht(e){var t,n,r,s=e.length,o=i.relative[e[0].type],u=o||i.relative[" "],a=o?1:0,f=at(function(e){return e===t},u,!0),l=at(function(e){return T.call(t,e)>-1},u,!0),h=[function(e,n,r){return!o&&(r||n!==c)||((t=n).nodeType?f(e,n,r):l(e,n,r))}];for(;a<s;a++)if(n=i.relative[e[a].type])h=[at(ft(h),n)];else{n=i.filter[e[a].type].apply(null,e[a].matches);if(n[d]){r=++a;for(;r<s;r++)if(i.relative[e[r].type])break;return ct(a>1&&ft(h),a>1&&e.slice(0,a-1).join("").replace(j,"$1"),n,a<r&&ht(e.slice(a,r)),r<s&&ht(e=e.slice(r)),r<s&&e.join(""))}h.push(n)}return ft(h)}function pt(e,t){var r=t.length>0,s=e.length>0,o=function(u,a,f,l,h){var p,d,v,m=[],y=0,w="0",x=u&&[],T=h!=null,N=c,C=u||s&&i.find.TAG("*",h&&a.parentNode||a),k=b+=N==null?1:Math.E;T&&(c=a!==g&&a,n=o.el);for(;(p=C[w])!=null;w++){if(s&&p){for(d=0;v=e[d];d++)if(v(p,a,f)){l.push(p);break}T&&(b=k,n=++o.el)}r&&((p=!v&&p)&&y--,u&&x.push(p))}y+=w;if(r&&w!==y){for(d=0;v=t[d];d++)v(x,m,a,f);if(u){if(y>0)while(w--)!x[w]&&!m[w]&&(m[w]=E.call(l));m=lt(m)}S.apply(l,m),T&&!u&&m.length>0&&y+t.length>1&&nt.uniqueSort(l)}return T&&(b=k,c=N),x};return o.el=0,r?N(o):o}function dt(e,t,n){var r=0,i=t.length;for(;r<i;r++)nt(e,t[r],n);return n}function vt(e,t,n,r,s){var o,u,f,l,c,h=ut(e),p=h.length;if(!r&&h.length===1){u=h[0]=h[0].slice(0);if(u.length>2&&(f=u[0]).type==="ID"&&t.nodeType===9&&!s&&i.relative[u[1].type]){t=i.find.ID(f.matches[0].replace($,""),t,s)[0];if(!t)return n;e=e.slice(u.shift().length)}for(o=J.POS.test(e)?-1:u.length-1;o>=0;o--){f=u[o];if(i.relative[l=f.type])break;if(c=i.find[l])if(r=c(f.matches[0].replace($,""),z.test(u[0].type)&&t.parentNode||t,s)){u.splice(o,1),e=r.length&&u.join("");if(!e)return S.apply(n,x.call(r,0)),n;break}}}return a(e,h)(r,t,s,n,z.test(e)),n}function mt(){}var n,r,i,s,o,u,a,f,l,c,h=!0,p="undefined",d=("sizcache"+Math.random()).replace(".",""),m=String,g=e.document,y=g.documentElement,b=0,w=0,E=[].pop,S=[].push,x=[].slice,T=[].indexOf||function(e){var t=0,n=this.length;for(;t<n;t++)if(this[t]===e)return t;return-1},N=function(e,t){return e[d]=t==null||t,e},C=function(){var e={},t=[];return N(function(n,r){return t.push(n)>i.cacheLength&&delete e[t.shift()],e[n+" "]=r},e)},k=C(),L=C(),A=C(),O="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[-\\w]|[^\\x00-\\xa0])+",_=M.replace("w","w#"),D="([*^$|!~]?=)",P="\\["+O+"*("+M+")"+O+"*(?:"+D+O+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+_+")|)|)"+O+"*\\]",H=":("+M+")(?:\\((?:(['\"])((?:\\\\.|[^\\\\])*?)\\2|([^()[\\]]*|(?:(?:"+P+")|[^:]|\\\\.)*|.*))\\)|)",B=":(even|odd|eq|gt|lt|nth|first|last)(?:\\("+O+"*((?:-\\d)?\\d*)"+O+"*\\)|)(?=[^-]|$)",j=new RegExp("^"+O+"+|((?:^|[^\\\\])(?:\\\\.)*)"+O+"+$","g"),F=new RegExp("^"+O+"*,"+O+"*"),I=new RegExp("^"+O+"*([\\x20\\t\\r\\n\\f>+~])"+O+"*"),q=new RegExp(H),R=/^(?:#([\w\-]+)|(\w+)|\.([\w\-]+))$/,U=/^:not/,z=/[\x20\t\r\n\f]*[+~]/,W=/:not\($/,X=/h\d/i,V=/input|select|textarea|button/i,$=/\\(?!\\)/g,J={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),NAME:new RegExp("^\\[name=['\"]?("+M+")['\"]?\\]"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+P),PSEUDO:new RegExp("^"+H),POS:new RegExp(B,"i"),CHILD:new RegExp("^:(only|nth|first|last)-child(?:\\("+O+"*(even|odd|(([+-]|)(\\d*)n|)"+O+"*(?:([+-]|)"+O+"*(\\d+)|))"+O+"*\\)|)","i"),needsContext:new RegExp("^"+O+"*[>+~]|"+B,"i")},K=function(e){var t=g.createElement("div");try{return e(t)}catch(n){return!1}finally{t=null}},Q=K(function(e){return e.appendChild(g.createComment("")),!e.getElementsByTagName("*").length}),G=K(function(e){return e.innerHTML="<a href='#'></a>",e.firstChild&&typeof e.firstChild.getAttribute!==p&&e.firstChild.getAttribute("href")==="#"}),Y=K(function(e){e.innerHTML="<select></select>";var t=typeof e.lastChild.getAttribute("multiple");return t!=="boolean"&&t!=="string"}),Z=K(function(e){return e.innerHTML="<div class='hidden e'></div><div class='hidden'></div>",!e.getElementsByClassName||!e.getElementsByClassName("e").length?!1:(e.lastChild.className="e",e.getElementsByClassName("e").length===2)}),et=K(function(e){e.id=d+0,e.innerHTML="<a name='"+d+"'></a><div name='"+d+"'></div>",y.insertBefore(e,y.firstChild);var t=g.getElementsByName&&g.getElementsByName(d).length===2+g.getElementsByName(d+0).length;return r=!g.getElementById(d),y.removeChild(e),t});try{x.call(y.childNodes,0)[0].nodeType}catch(tt){x=function(e){var t,n=[];for(;t=this[e];e++)n.push(t);return n}}nt.matches=function(e,t){return nt(e,null,null,t)},nt.matchesSelector=function(e,t){return nt(t,null,null,[e]).length>0},s=nt.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(i===1||i===9||i===11){if(typeof e.textContent=="string")return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=s(e)}else if(i===3||i===4)return e.nodeValue}else for(;t=e[r];r++)n+=s(t);return n},o=nt.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?t.nodeName!=="HTML":!1},u=nt.contains=y.contains?function(e,t){var n=e.nodeType===9?e.documentElement:e,r=t&&t.parentNode;return e===r||!!(r&&r.nodeType===1&&n.contains&&n.contains(r))}:y.compareDocumentPosition?function(e,t){return t&&!!(e.compareDocumentPosition(t)&16)}:function(e,t){while(t=t.parentNode)if(t===e)return!0;return!1},nt.attr=function(e,t){var n,r=o(e);return r||(t=t.toLowerCase()),(n=i.attrHandle[t])?n(e):r||Y?e.getAttribute(t):(n=e.getAttributeNode(t),n?typeof e[t]=="boolean"?e[t]?t:null:n.specified?n.value:null:null)},i=nt.selectors={cacheLength:50,createPseudo:N,match:J,attrHandle:G?{}:{href:function(e){return e.getAttribute("href",2)},type:function(e){return e.getAttribute("type")}},find:{ID:r?function(e,t,n){if(typeof t.getElementById!==p&&!n){var r=t.getElementById(e);return r&&r.parentNode?[r]:[]}}:function(e,n,r){if(typeof n.getElementById!==p&&!r){var i=n.getElementById(e);return i?i.id===e||typeof i.getAttributeNode!==p&&i.getAttributeNode("id").value===e?[i]:t:[]}},TAG:Q?function(e,t){if(typeof t.getElementsByTagName!==p)return t.getElementsByTagName(e)}:function(e,t){var n=t.getElementsByTagName(e);if(e==="*"){var r,i=[],s=0;for(;r=n[s];s++)r.nodeType===1&&i.push(r);return i}return n},NAME:et&&function(e,t){if(typeof t.getElementsByName!==p)return t.getElementsByName(name)},CLASS:Z&&function(e,t,n){if(typeof t.getElementsByClassName!==p&&!n)return t.getElementsByClassName(e)}},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace($,""),e[3]=(e[4]||e[5]||"").replace($,""),e[2]==="~="&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),e[1]==="nth"?(e[2]||nt.error(e[0]),e[3]=+(e[3]?e[4]+(e[5]||1):2*(e[2]==="even"||e[2]==="odd")),e[4]=+(e[6]+e[7]||e[2]==="odd")):e[2]&&nt.error(e[0]),e},PSEUDO:function(e){var t,n;if(J.CHILD.test(e[0]))return null;if(e[3])e[2]=e[3];else if(t=e[4])q.test(t)&&(n=ut(t,!0))&&(n=t.indexOf(")",t.length-n)-t.length)&&(t=t.slice(0,n),e[0]=e[0].slice(0,n)),e[2]=t;return e.slice(0,3)}},filter:{ID:r?function(e){return e=e.replace($,""),function(t){return t.getAttribute("id")===e}}:function(e){return e=e.replace($,""),function(t){var n=typeof t.getAttributeNode!==p&&t.getAttributeNode("id");return n&&n.value===e}},TAG:function(e){return e==="*"?function(){return!0}:(e=e.replace($,"").toLowerCase(),function(t){return t.nodeName&&t.nodeName.toLowerCase()===e})},CLASS:function(e){var t=k[d][e+" "];return t||(t=new RegExp("(^|"+O+")"+e+"("+O+"|$)"))&&k(e,function(e){return t.test(e.className||typeof e.getAttribute!==p&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r,i){var s=nt.attr(r,e);return s==null?t==="!=":t?(s+="",t==="="?s===n:t==="!="?s!==n:t==="^="?n&&s.indexOf(n)===0:t==="*="?n&&s.indexOf(n)>-1:t==="$="?n&&s.substr(s.length-n.length)===n:t==="~="?(" "+s+" ").indexOf(n)>-1:t==="|="?s===n||s.substr(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r){return e==="nth"?function(e){var t,i,s=e.parentNode;if(n===1&&r===0)return!0;if(s){i=0;for(t=s.firstChild;t;t=t.nextSibling)if(t.nodeType===1){i++;if(e===t)break}}return i-=r,i===n||i%n===0&&i/n>=0}:function(t){var n=t;switch(e){case"only":case"first":while(n=n.previousSibling)if(n.nodeType===1)return!1;if(e==="first")return!0;n=t;case"last":while(n=n.nextSibling)if(n.nodeType===1)return!1;return!0}}},PSEUDO:function(e,t){var n,r=i.pseudos[e]||i.setFilters[e.toLowerCase()]||nt.error("unsupported pseudo: "+e);return r[d]?r(t):r.length>1?(n=[e,e,"",t],i.setFilters.hasOwnProperty(e.toLowerCase())?N(function(e,n){var i,s=r(e,t),o=s.length;while(o--)i=T.call(e,s[o]),e[i]=!(n[i]=s[o])}):function(e){return r(e,0,n)}):r}},pseudos:{not:N(function(e){var t=[],n=[],r=a(e.replace(j,"$1"));return r[d]?N(function(e,t,n,i){var s,o=r(e,null,i,[]),u=e.length;while(u--)if(s=o[u])e[u]=!(t[u]=s)}):function(e,i,s){return t[0]=e,r(t,null,s,n),!n.pop()}}),has:N(function(e){return function(t){return nt(e,t).length>0}}),contains:N(function(e){return function(t){return(t.textContent||t.innerText||s(t)).indexOf(e)>-1}}),enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&!!e.checked||t==="option"&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},parent:function(e){return!i.pseudos.empty(e)},empty:function(e){var t;e=e.firstChild;while(e){if(e.nodeName>"@"||(t=e.nodeType)===3||t===4)return!1;e=e.nextSibling}return!0},header:function(e){return X.test(e.nodeName)},text:function(e){var t,n;return e.nodeName.toLowerCase()==="input"&&(t=e.type)==="text"&&((n=e.getAttribute("type"))==null||n.toLowerCase()===t)},radio:rt("radio"),checkbox:rt("checkbox"),file:rt("file"),password:rt("password"),image:rt("image"),submit:it("submit"),reset:it("reset"),button:function(e){var t=e.nodeName.toLowerCase();return t==="input"&&e.type==="button"||t==="button"},input:function(e){return V.test(e.nodeName)},focus:function(e){var t=e.ownerDocument;return e===t.activeElement&&(!t.hasFocus||t.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},active:function(e){return e===e.ownerDocument.activeElement},first:st(function(){return[0]}),last:st(function(e,t){return[t-1]}),eq:st(function(e,t,n){return[n<0?n+t:n]}),even:st(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:st(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:st(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:st(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}},f=y.compareDocumentPosition?function(e,t){return e===t?(l=!0,0):(!e.compareDocumentPosition||!t.compareDocumentPosition?e.compareDocumentPosition:e.compareDocumentPosition(t)&4)?-1:1}:function(e,t){if(e===t)return l=!0,0;if(e.sourceIndex&&t.sourceIndex)return e.sourceIndex-t.sourceIndex;var n,r,i=[],s=[],o=e.parentNode,u=t.parentNode,a=o;if(o===u)return ot(e,t);if(!o)return-1;if(!u)return 1;while(a)i.unshift(a),a=a.parentNode;a=u;while(a)s.unshift(a),a=a.parentNode;n=i.length,r=s.length;for(var f=0;f<n&&f<r;f++)if(i[f]!==s[f])return ot(i[f],s[f]);return f===n?ot(e,s[f],-1):ot(i[f],t,1)},[0,0].sort(f),h=!l,nt.uniqueSort=function(e){var t,n=[],r=1,i=0;l=h,e.sort(f);if(l){for(;t=e[r];r++)t===e[r-1]&&(i=n.push(r));while(i--)e.splice(n[i],1)}return e},nt.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},a=nt.compile=function(e,t){var n,r=[],i=[],s=A[d][e+" "];if(!s){t||(t=ut(e)),n=t.length;while(n--)s=ht(t[n]),s[d]?r.push(s):i.push(s);s=A(e,pt(i,r))}return s},g.querySelectorAll&&function(){var e,t=vt,n=/'|\\/g,r=/\=[\x20\t\r\n\f]*([^'"\]]*)[\x20\t\r\n\f]*\]/g,i=[":focus"],s=[":active"],u=y.matchesSelector||y.mozMatchesSelector||y.webkitMatchesSelector||y.oMatchesSelector||y.msMatchesSelector;K(function(e){e.innerHTML="<select><option selected=''></option></select>",e.querySelectorAll("[selected]").length||i.push("\\["+O+"*(?:checked|disabled|ismap|multiple|readonly|selected|value)"),e.querySelectorAll(":checked").length||i.push(":checked")}),K(function(e){e.innerHTML="<p test=''></p>",e.querySelectorAll("[test^='']").length&&i.push("[*^$]="+O+"*(?:\"\"|'')"),e.innerHTML="<input type='hidden'/>",e.querySelectorAll(":enabled").length||i.push(":enabled",":disabled")}),i=new RegExp(i.join("|")),vt=function(e,r,s,o,u){if(!o&&!u&&!i.test(e)){var a,f,l=!0,c=d,h=r,p=r.nodeType===9&&e;if(r.nodeType===1&&r.nodeName.toLowerCase()!=="object"){a=ut(e),(l=r.getAttribute("id"))?c=l.replace(n,"\\$&"):r.setAttribute("id",c),c="[id='"+c+"'] ",f=a.length;while(f--)a[f]=c+a[f].join("");h=z.test(e)&&r.parentNode||r,p=a.join(",")}if(p)try{return S.apply(s,x.call(h.querySelectorAll(p),0)),s}catch(v){}finally{l||r.removeAttribute("id")}}return t(e,r,s,o,u)},u&&(K(function(t){e=u.call(t,"div");try{u.call(t,"[test!='']:sizzle"),s.push("!=",H)}catch(n){}}),s=new RegExp(s.join("|")),nt.matchesSelector=function(t,n){n=n.replace(r,"='$1']");if(!o(t)&&!s.test(n)&&!i.test(n))try{var a=u.call(t,n);if(a||e||t.document&&t.document.nodeType!==11)return a}catch(f){}return nt(n,null,null,[t]).length>0})}(),i.pseudos.nth=i.pseudos.eq,i.filters=mt.prototype=i.pseudos,i.setFilters=new mt,nt.attr=v.attr,v.find=nt,v.expr=nt.selectors,v.expr[":"]=v.expr.pseudos,v.unique=nt.uniqueSort,v.text=nt.getText,v.isXMLDoc=nt.isXML,v.contains=nt.contains}(e);var nt=/Until$/,rt=/^(?:parents|prev(?:Until|All))/,it=/^.[^:#\[\.,]*$/,st=v.expr.match.needsContext,ot={children:!0,contents:!0,next:!0,prev:!0};v.fn.extend({find:function(e){var t,n,r,i,s,o,u=this;if(typeof e!="string")return v(e).filter(function(){for(t=0,n=u.length;t<n;t++)if(v.contains(u[t],this))return!0});o=this.pushStack("","find",e);for(t=0,n=this.length;t<n;t++){r=o.length,v.find(e,this[t],o);if(t>0)for(i=r;i<o.length;i++)for(s=0;s<r;s++)if(o[s]===o[i]){o.splice(i--,1);break}}return o},has:function(e){var t,n=v(e,this),r=n.length;return this.filter(function(){for(t=0;t<r;t++)if(v.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e,!1),"not",e)},filter:function(e){return this.pushStack(ft(this,e,!0),"filter",e)},is:function(e){return!!e&&(typeof e=="string"?st.test(e)?v(e,this.context).index(this[0])>=0:v.filter(e,this).length>0:this.filter(e).length>0)},closest:function(e,t){var n,r=0,i=this.length,s=[],o=st.test(e)||typeof e!="string"?v(e,t||this.context):0;for(;r<i;r++){n=this[r];while(n&&n.ownerDocument&&n!==t&&n.nodeType!==11){if(o?o.index(n)>-1:v.find.matchesSelector(n,e)){s.push(n);break}n=n.parentNode}}return s=s.length>1?v.unique(s):s,this.pushStack(s,"closest",e)},index:function(e){return e?typeof e=="string"?v.inArray(this[0],v(e)):v.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.prevAll().length:-1},add:function(e,t){var n=typeof e=="string"?v(e,t):v.makeArray(e&&e.nodeType?[e]:e),r=v.merge(this.get(),n);return this.pushStack(ut(n[0])||ut(r[0])?r:v.unique(r))},addBack:function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}}),v.fn.andSelf=v.fn.addBack,v.each({parent:function(e){var t=e.parentNode;return t&&t.nodeType!==11?t:null},parents:function(e){return v.dir(e,"parentNode")},parentsUntil:function(e,t,n){return v.dir(e,"parentNode",n)},next:function(e){return at(e,"nextSibling")},prev:function(e){return at(e,"previousSibling")},nextAll:function(e){return v.dir(e,"nextSibling")},prevAll:function(e){return v.dir(e,"previousSibling")},nextUntil:function(e,t,n){return v.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return v.dir(e,"previousSibling",n)},siblings:function(e){return v.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return v.sibling(e.firstChild)},contents:function(e){return v.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:v.merge([],e.childNodes)}},function(e,t){v.fn[e]=function(n,r){var i=v.map(this,t,n);return nt.test(e)||(r=n),r&&typeof r=="string"&&(i=v.filter(r,i)),i=this.length>1&&!ot[e]?v.unique(i):i,this.length>1&&rt.test(e)&&(i=i.reverse()),this.pushStack(i,e,l.call(arguments).join(","))}}),v.extend({filter:function(e,t,n){return n&&(e=":not("+e+")"),t.length===1?v.find.matchesSelector(t[0],e)?[t[0]]:[]:v.find.matches(e,t)},dir:function(e,n,r){var i=[],s=e[n];while(s&&s.nodeType!==9&&(r===t||s.nodeType!==1||!v(s).is(r)))s.nodeType===1&&i.push(s),s=s[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)e.nodeType===1&&e!==t&&n.push(e);return n}});var ct="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ht=/ jQuery\d+="(?:null|\d+)"/g,pt=/^\s+/,dt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,vt=/<([\w:]+)/,mt=/<tbody/i,gt=/<|&#?\w+;/,yt=/<(?:script|style|link)/i,bt=/<(?:script|object|embed|option|style)/i,wt=new RegExp("<(?:"+ct+")[\\s/>]","i"),Et=/^(?:checkbox|radio)$/,St=/checked\s*(?:[^=]|=\s*.checked.)/i,xt=/\/(java|ecma)script/i,Tt=/^\s*<!(?:\[CDATA\[|\-\-)|[\]\-]{2}>\s*$/g,Nt={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},Ct=lt(i),kt=Ct.appendChild(i.createElement("div"));Nt.optgroup=Nt.option,Nt.tbody=Nt.tfoot=Nt.colgroup=Nt.caption=Nt.thead,Nt.th=Nt.td,v.support.htmlSerialize||(Nt._default=[1,"X<div>","</div>"]),v.fn.extend({text:function(e){return v.access(this,function(e){return e===t?v.text(this):this.empty().append((this[0]&&this[0].ownerDocument||i).createTextNode(e))},null,e,arguments.length)},wrapAll:function(e){if(v.isFunction(e))return this.each(function(t){v(this).wrapAll(e.call(this,t))});if(this[0]){var t=v(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&e.firstChild.nodeType===1)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return v.isFunction(e)?this.each(function(t){v(this).wrapInner(e.call(this,t))}):this.each(function(){var t=v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=v.isFunction(e);return this.each(function(n){v(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){v.nodeName(this,"body")||v(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.appendChild(e)})},prepend:function(){return this.domManip(arguments,!0,function(e){(this.nodeType===1||this.nodeType===11)&&this.insertBefore(e,this.firstChild)})},before:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(e,this),"before",this.selector)}},after:function(){if(!ut(this[0]))return this.domManip(arguments,!1,function(e){this.parentNode.insertBefore(e,this.nextSibling)});if(arguments.length){var e=v.clean(arguments);return this.pushStack(v.merge(this,e),"after",this.selector)}},remove:function(e,t){var n,r=0;for(;(n=this[r])!=null;r++)if(!e||v.filter(e,[n]).length)!t&&n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),v.cleanData([n])),n.parentNode&&n.parentNode.removeChild(n);return this},empty:function(){var e,t=0;for(;(e=this[t])!=null;t++){e.nodeType===1&&v.cleanData(e.getElementsByTagName("*"));while(e.firstChild)e.removeChild(e.firstChild)}return this},clone:function(e,t){return e=e==null?!1:e,t=t==null?e:t,this.map(function(){return v.clone(this,e,t)})},html:function(e){return v.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return n.nodeType===1?n.innerHTML.replace(ht,""):t;if(typeof e=="string"&&!yt.test(e)&&(v.support.htmlSerialize||!wt.test(e))&&(v.support.leadingWhitespace||!pt.test(e))&&!Nt[(vt.exec(e)||["",""])[1].toLowerCase()]){e=e.replace(dt,"<$1></$2>");try{for(;r<i;r++)n=this[r]||{},n.nodeType===1&&(v.cleanData(n.getElementsByTagName("*")),n.innerHTML=e);n=0}catch(s){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(e){return ut(this[0])?this.length?this.pushStack(v(v.isFunction(e)?e():e),"replaceWith",e):this:v.isFunction(e)?this.each(function(t){var n=v(this),r=n.html();n.replaceWith(e.call(this,t,r))}):(typeof e!="string"&&(e=v(e).detach()),this.each(function(){var t=this.nextSibling,n=this.parentNode;v(this).remove(),t?v(t).before(e):v(n).append(e)}))},detach:function(e){return this.remove(e,!0)},domManip:function(e,n,r){e=[].concat.apply([],e);var i,s,o,u,a=0,f=e[0],l=[],c=this.length;if(!v.support.checkClone&&c>1&&typeof f=="string"&&St.test(f))return this.each(function(){v(this).domManip(e,n,r)});if(v.isFunction(f))return this.each(function(i){var s=v(this);e[0]=f.call(this,i,n?s.html():t),s.domManip(e,n,r)});if(this[0]){i=v.buildFragment(e,this,l),o=i.fragment,s=o.firstChild,o.childNodes.length===1&&(o=s);if(s){n=n&&v.nodeName(s,"tr");for(u=i.cacheable||c-1;a<c;a++)r.call(n&&v.nodeName(this[a],"table")?Lt(this[a],"tbody"):this[a],a===u?o:v.clone(o,!0,!0))}o=s=null,l.length&&v.each(l,function(e,t){t.src?v.ajax?v.ajax({url:t.src,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0}):v.error("no ajax"):v.globalEval((t.text||t.textContent||t.innerHTML||"").replace(Tt,"")),t.parentNode&&t.parentNode.removeChild(t)})}return this}}),v.buildFragment=function(e,n,r){var s,o,u,a=e[0];return n=n||i,n=!n.nodeType&&n[0]||n,n=n.ownerDocument||n,e.length===1&&typeof a=="string"&&a.length<512&&n===i&&a.charAt(0)==="<"&&!bt.test(a)&&(v.support.checkClone||!St.test(a))&&(v.support.html5Clone||!wt.test(a))&&(o=!0,s=v.fragments[a],u=s!==t),s||(s=n.createDocumentFragment(),v.clean(e,n,s,r),o&&(v.fragments[a]=u&&s)),{fragment:s,cacheable:o}},v.fragments={},v.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){v.fn[e]=function(n){var r,i=0,s=[],o=v(n),u=o.length,a=this.length===1&&this[0].parentNode;if((a==null||a&&a.nodeType===11&&a.childNodes.length===1)&&u===1)return o[t](this[0]),this;for(;i<u;i++)r=(i>0?this.clone(!0):this).get(),v(o[i])[t](r),s=s.concat(r);return this.pushStack(s,e,o.selector)}}),v.extend({clone:function(e,t,n){var r,i,s,o;v.support.html5Clone||v.isXMLDoc(e)||!wt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(kt.innerHTML=e.outerHTML,kt.removeChild(o=kt.firstChild));if((!v.support.noCloneEvent||!v.support.noCloneChecked)&&(e.nodeType===1||e.nodeType===11)&&!v.isXMLDoc(e)){Ot(e,o),r=Mt(e),i=Mt(o);for(s=0;r[s];++s)i[s]&&Ot(r[s],i[s])}if(t){At(e,o);if(n){r=Mt(e),i=Mt(o);for(s=0;r[s];++s)At(r[s],i[s])}}return r=i=null,o},clean:function(e,t,n,r){var s,o,u,a,f,l,c,h,p,d,m,g,y=t===i&&Ct,b=[];if(!t||typeof t.createDocumentFragment=="undefined")t=i;for(s=0;(u=e[s])!=null;s++){typeof u=="number"&&(u+="");if(!u)continue;if(typeof u=="string")if(!gt.test(u))u=t.createTextNode(u);else{y=y||lt(t),c=t.createElement("div"),y.appendChild(c),u=u.replace(dt,"<$1></$2>"),a=(vt.exec(u)||["",""])[1].toLowerCase(),f=Nt[a]||Nt._default,l=f[0],c.innerHTML=f[1]+u+f[2];while(l--)c=c.lastChild;if(!v.support.tbody){h=mt.test(u),p=a==="table"&&!h?c.firstChild&&c.firstChild.childNodes:f[1]==="<table>"&&!h?c.childNodes:[];for(o=p.length-1;o>=0;--o)v.nodeName(p[o],"tbody")&&!p[o].childNodes.length&&p[o].parentNode.removeChild(p[o])}!v.support.leadingWhitespace&&pt.test(u)&&c.insertBefore(t.createTextNode(pt.exec(u)[0]),c.firstChild),u=c.childNodes,c.parentNode.removeChild(c)}u.nodeType?b.push(u):v.merge(b,u)}c&&(u=c=y=null);if(!v.support.appendChecked)for(s=0;(u=b[s])!=null;s++)v.nodeName(u,"input")?_t(u):typeof u.getElementsByTagName!="undefined"&&v.grep(u.getElementsByTagName("input"),_t);if(n){m=function(e){if(!e.type||xt.test(e.type))return r?r.push(e.parentNode?e.parentNode.removeChild(e):e):n.appendChild(e)};for(s=0;(u=b[s])!=null;s++)if(!v.nodeName(u,"script")||!m(u))n.appendChild(u),typeof u.getElementsByTagName!="undefined"&&(g=v.grep(v.merge([],u.getElementsByTagName("script")),m),b.splice.apply(b,[s+1,0].concat(g)),s+=g.length)}return b},cleanData:function(e,t){var n,r,i,s,o=0,u=v.expando,a=v.cache,f=v.support.deleteExpando,l=v.event.special;for(;(i=e[o])!=null;o++)if(t||v.acceptData(i)){r=i[u],n=r&&a[r];if(n){if(n.events)for(s in n.events)l[s]?v.event.remove(i,s):v.removeEvent(i,s,n.handle);a[r]&&(delete a[r],f?delete i[u]:i.removeAttribute?i.removeAttribute(u):i[u]=null,v.deletedIds.push(r))}}}}),function(){var e,t;v.uaMatch=function(e){e=e.toLowerCase();var t=/(chrome)[ \/]([\w.]+)/.exec(e)||/(webkit)[ \/]([\w.]+)/.exec(e)||/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(e)||/(msie) ([\w.]+)/.exec(e)||e.indexOf("compatible")<0&&/(mozilla)(?:.*? rv:([\w.]+)|)/.exec(e)||[];return{browser:t[1]||"",version:t[2]||"0"}},e=v.uaMatch(o.userAgent),t={},e.browser&&(t[e.browser]=!0,t.version=e.version),t.chrome?t.webkit=!0:t.webkit&&(t.safari=!0),v.browser=t,v.sub=function(){function e(t,n){return new e.fn.init(t,n)}v.extend(!0,e,this),e.superclass=this,e.fn=e.prototype=this(),e.fn.constructor=e,e.sub=this.sub,e.fn.init=function(r,i){return i&&i instanceof v&&!(i instanceof e)&&(i=e(i)),v.fn.init.call(this,r,i,t)},e.fn.init.prototype=e.fn;var t=e(i);return e}}();var Dt,Pt,Ht,Bt=/alpha\([^)]*\)/i,jt=/opacity=([^)]*)/,Ft=/^(top|right|bottom|left)$/,It=/^(none|table(?!-c[ea]).+)/,qt=/^margin/,Rt=new RegExp("^("+m+")(.*)$","i"),Ut=new RegExp("^("+m+")(?!px)[a-z%]+$","i"),zt=new RegExp("^([-+])=("+m+")","i"),Wt={BODY:"block"},Xt={position:"absolute",visibility:"hidden",display:"block"},Vt={letterSpacing:0,fontWeight:400},$t=["Top","Right","Bottom","Left"],Jt=["Webkit","O","Moz","ms"],Kt=v.fn.toggle;v.fn.extend({css:function(e,n){return v.access(this,function(e,n,r){return r!==t?v.style(e,n,r):v.css(e,n)},e,n,arguments.length>1)},show:function(){return Yt(this,!0)},hide:function(){return Yt(this)},toggle:function(e,t){var n=typeof e=="boolean";return v.isFunction(e)&&v.isFunction(t)?Kt.apply(this,arguments):this.each(function(){(n?e:Gt(this))?v(this).show():v(this).hide()})}}),v.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Dt(e,"opacity");return n===""?"1":n}}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":v.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(!e||e.nodeType===3||e.nodeType===8||!e.style)return;var s,o,u,a=v.camelCase(n),f=e.style;n=v.cssProps[a]||(v.cssProps[a]=Qt(f,a)),u=v.cssHooks[n]||v.cssHooks[a];if(r===t)return u&&"get"in u&&(s=u.get(e,!1,i))!==t?s:f[n];o=typeof r,o==="string"&&(s=zt.exec(r))&&(r=(s[1]+1)*s[2]+parseFloat(v.css(e,n)),o="number");if(r==null||o==="number"&&isNaN(r))return;o==="number"&&!v.cssNumber[a]&&(r+="px");if(!u||!("set"in u)||(r=u.set(e,r,i))!==t)try{f[n]=r}catch(l){}},css:function(e,n,r,i){var s,o,u,a=v.camelCase(n);return n=v.cssProps[a]||(v.cssProps[a]=Qt(e.style,a)),u=v.cssHooks[n]||v.cssHooks[a],u&&"get"in u&&(s=u.get(e,!0,i)),s===t&&(s=Dt(e,n)),s==="normal"&&n in Vt&&(s=Vt[n]),r||i!==t?(o=parseFloat(s),r||v.isNumeric(o)?o||0:s):s},swap:function(e,t,n){var r,i,s={};for(i in t)s[i]=e.style[i],e.style[i]=t[i];r=n.call(e);for(i in t)e.style[i]=s[i];return r}}),e.getComputedStyle?Dt=function(t,n){var r,i,s,o,u=e.getComputedStyle(t,null),a=t.style;return u&&(r=u.getPropertyValue(n)||u[n],r===""&&!v.contains(t.ownerDocument,t)&&(r=v.style(t,n)),Ut.test(r)&&qt.test(n)&&(i=a.width,s=a.minWidth,o=a.maxWidth,a.minWidth=a.maxWidth=a.width=r,r=u.width,a.width=i,a.minWidth=s,a.maxWidth=o)),r}:i.documentElement.currentStyle&&(Dt=function(e,t){var n,r,i=e.currentStyle&&e.currentStyle[t],s=e.style;return i==null&&s&&s[t]&&(i=s[t]),Ut.test(i)&&!Ft.test(t)&&(n=s.left,r=e.runtimeStyle&&e.runtimeStyle.left,r&&(e.runtimeStyle.left=e.currentStyle.left),s.left=t==="fontSize"?"1em":i,i=s.pixelLeft+"px",s.left=n,r&&(e.runtimeStyle.left=r)),i===""?"auto":i}),v.each(["height","width"],function(e,t){v.cssHooks[t]={get:function(e,n,r){if(n)return e.offsetWidth===0&&It.test(Dt(e,"display"))?v.swap(e,Xt,function(){return tn(e,t,r)}):tn(e,t,r)},set:function(e,n,r){return Zt(e,n,r?en(e,t,r,v.support.boxSizing&&v.css(e,"boxSizing")==="border-box"):0)}}}),v.support.opacity||(v.cssHooks.opacity={get:function(e,t){return jt.test((t&&e.currentStyle?e.currentStyle.filter:e.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":t?"1":""},set:function(e,t){var n=e.style,r=e.currentStyle,i=v.isNumeric(t)?"alpha(opacity="+t*100+")":"",s=r&&r.filter||n.filter||"";n.zoom=1;if(t>=1&&v.trim(s.replace(Bt,""))===""&&n.removeAttribute){n.removeAttribute("filter");if(r&&!r.filter)return}n.filter=Bt.test(s)?s.replace(Bt,i):s+" "+i}}),v(function(){v.support.reliableMarginRight||(v.cssHooks.marginRight={get:function(e,t){return v.swap(e,{display:"inline-block"},function(){if(t)return Dt(e,"marginRight")})}}),!v.support.pixelPosition&&v.fn.position&&v.each(["top","left"],function(e,t){v.cssHooks[t]={get:function(e,n){if(n){var r=Dt(e,t);return Ut.test(r)?v(e).position()[t]+"px":r}}}})}),v.expr&&v.expr.filters&&(v.expr.filters.hidden=function(e){return e.offsetWidth===0&&e.offsetHeight===0||!v.support.reliableHiddenOffsets&&(e.style&&e.style.display||Dt(e,"display"))==="none"},v.expr.filters.visible=function(e){return!v.expr.filters.hidden(e)}),v.each({margin:"",padding:"",border:"Width"},function(e,t){v.cssHooks[e+t]={expand:function(n){var r,i=typeof n=="string"?n.split(" "):[n],s={};for(r=0;r<4;r++)s[e+$t[r]+t]=i[r]||i[r-2]||i[0];return s}},qt.test(e)||(v.cssHooks[e+t].set=Zt)});var rn=/%20/g,sn=/\[\]$/,on=/\r?\n/g,un=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,an=/^(?:select|textarea)/i;v.fn.extend({serialize:function(){return v.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?v.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||an.test(this.nodeName)||un.test(this.type))}).map(function(e,t){var n=v(this).val();return n==null?null:v.isArray(n)?v.map(n,function(e,n){return{name:t.name,value:e.replace(on,"\r\n")}}):{name:t.name,value:n.replace(on,"\r\n")}}).get()}}),v.param=function(e,n){var r,i=[],s=function(e,t){t=v.isFunction(t)?t():t==null?"":t,i[i.length]=encodeURIComponent(e)+"="+encodeURIComponent(t)};n===t&&(n=v.ajaxSettings&&v.ajaxSettings.traditional);if(v.isArray(e)||e.jquery&&!v.isPlainObject(e))v.each(e,function(){s(this.name,this.value)});else for(r in e)fn(r,e[r],n,s);return i.join("&").replace(rn,"+")};var ln,cn,hn=/#.*$/,pn=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,dn=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,vn=/^(?:GET|HEAD)$/,mn=/^\/\//,gn=/\?/,yn=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bn=/([?&])_=[^&]*/,wn=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+)|)|)/,En=v.fn.load,Sn={},xn={},Tn=["*/"]+["*"];try{cn=s.href}catch(Nn){cn=i.createElement("a"),cn.href="",cn=cn.href}ln=wn.exec(cn.toLowerCase())||[],v.fn.load=function(e,n,r){if(typeof e!="string"&&En)return En.apply(this,arguments);if(!this.length)return this;var i,s,o,u=this,a=e.indexOf(" ");return a>=0&&(i=e.slice(a,e.length),e=e.slice(0,a)),v.isFunction(n)?(r=n,n=t):n&&typeof n=="object"&&(s="POST"),v.ajax({url:e,type:s,dataType:"html",data:n,complete:function(e,t){r&&u.each(r,o||[e.responseText,t,e])}}).done(function(e){o=arguments,u.html(i?v("<div>").append(e.replace(yn,"")).find(i):e)}),this},v.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,t){v.fn[t]=function(e){return this.on(t,e)}}),v.each(["get","post"],function(e,n){v[n]=function(e,r,i,s){return v.isFunction(r)&&(s=s||i,i=r,r=t),v.ajax({type:n,url:e,data:r,success:i,dataType:s})}}),v.extend({getScript:function(e,n){return v.get(e,t,n,"script")},getJSON:function(e,t,n){return v.get(e,t,n,"json")},ajaxSetup:function(e,t){return t?Ln(e,v.ajaxSettings):(t=e,e=v.ajaxSettings),Ln(e,t),e},ajaxSettings:{url:cn,isLocal:dn.test(ln[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded; charset=UTF-8",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":Tn},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":e.String,"text html":!0,"text json":v.parseJSON,"text xml":v.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:Cn(Sn),ajaxTransport:Cn(xn),ajax:function(e,n){function T(e,n,s,a){var l,y,b,w,S,T=n;if(E===2)return;E=2,u&&clearTimeout(u),o=t,i=a||"",x.readyState=e>0?4:0,s&&(w=An(c,x,s));if(e>=200&&e<300||e===304)c.ifModified&&(S=x.getResponseHeader("Last-Modified"),S&&(v.lastModified[r]=S),S=x.getResponseHeader("Etag"),S&&(v.etag[r]=S)),e===304?(T="notmodified",l=!0):(l=On(c,w),T=l.state,y=l.data,b=l.error,l=!b);else{b=T;if(!T||e)T="error",e<0&&(e=0)}x.status=e,x.statusText=(n||T)+"",l?d.resolveWith(h,[y,T,x]):d.rejectWith(h,[x,T,b]),x.statusCode(g),g=t,f&&p.trigger("ajax"+(l?"Success":"Error"),[x,c,l?y:b]),m.fireWith(h,[x,T]),f&&(p.trigger("ajaxComplete",[x,c]),--v.active||v.event.trigger("ajaxStop"))}typeof e=="object"&&(n=e,e=t),n=n||{};var r,i,s,o,u,a,f,l,c=v.ajaxSetup({},n),h=c.context||c,p=h!==c&&(h.nodeType||h instanceof v)?v(h):v.event,d=v.Deferred(),m=v.Callbacks("once memory"),g=c.statusCode||{},b={},w={},E=0,S="canceled",x={readyState:0,setRequestHeader:function(e,t){if(!E){var n=e.toLowerCase();e=w[n]=w[n]||e,b[e]=t}return this},getAllResponseHeaders:function(){return E===2?i:null},getResponseHeader:function(e){var n;if(E===2){if(!s){s={};while(n=pn.exec(i))s[n[1].toLowerCase()]=n[2]}n=s[e.toLowerCase()]}return n===t?null:n},overrideMimeType:function(e){return E||(c.mimeType=e),this},abort:function(e){return e=e||S,o&&o.abort(e),T(0,e),this}};d.promise(x),x.success=x.done,x.error=x.fail,x.complete=m.add,x.statusCode=function(e){if(e){var t;if(E<2)for(t in e)g[t]=[g[t],e[t]];else t=e[x.status],x.always(t)}return this},c.url=((e||c.url)+"").replace(hn,"").replace(mn,ln[1]+"//"),c.dataTypes=v.trim(c.dataType||"*").toLowerCase().split(y),c.crossDomain==null&&(a=wn.exec(c.url.toLowerCase()),c.crossDomain=!(!a||a[1]===ln[1]&&a[2]===ln[2]&&(a[3]||(a[1]==="http:"?80:443))==(ln[3]||(ln[1]==="http:"?80:443)))),c.data&&c.processData&&typeof c.data!="string"&&(c.data=v.param(c.data,c.traditional)),kn(Sn,c,n,x);if(E===2)return x;f=c.global,c.type=c.type.toUpperCase(),c.hasContent=!vn.test(c.type),f&&v.active++===0&&v.event.trigger("ajaxStart");if(!c.hasContent){c.data&&(c.url+=(gn.test(c.url)?"&":"?")+c.data,delete c.data),r=c.url;if(c.cache===!1){var N=v.now(),C=c.url.replace(bn,"$1_="+N);c.url=C+(C===c.url?(gn.test(c.url)?"&":"?")+"_="+N:"")}}(c.data&&c.hasContent&&c.contentType!==!1||n.contentType)&&x.setRequestHeader("Content-Type",c.contentType),c.ifModified&&(r=r||c.url,v.lastModified[r]&&x.setRequestHeader("If-Modified-Since",v.lastModified[r]),v.etag[r]&&x.setRequestHeader("If-None-Match",v.etag[r])),x.setRequestHeader("Accept",c.dataTypes[0]&&c.accepts[c.dataTypes[0]]?c.accepts[c.dataTypes[0]]+(c.dataTypes[0]!=="*"?", "+Tn+"; q=0.01":""):c.accepts["*"]);for(l in c.headers)x.setRequestHeader(l,c.headers[l]);if(!c.beforeSend||c.beforeSend.call(h,x,c)!==!1&&E!==2){S="abort";for(l in{success:1,error:1,complete:1})x[l](c[l]);o=kn(xn,c,n,x);if(!o)T(-1,"No Transport");else{x.readyState=1,f&&p.trigger("ajaxSend",[x,c]),c.async&&c.timeout>0&&(u=setTimeout(function(){x.abort("timeout")},c.timeout));try{E=1,o.send(b,T)}catch(k){if(!(E<2))throw k;T(-1,k)}}return x}return x.abort()},active:0,lastModified:{},etag:{}});var Mn=[],_n=/\?/,Dn=/(=)\?(?=&|$)|\?\?/,Pn=v.now();v.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Mn.pop()||v.expando+"_"+Pn++;return this[e]=!0,e}}),v.ajaxPrefilter("json jsonp",function(n,r,i){var s,o,u,a=n.data,f=n.url,l=n.jsonp!==!1,c=l&&Dn.test(f),h=l&&!c&&typeof a=="string"&&!(n.contentType||"").indexOf("application/x-www-form-urlencoded")&&Dn.test(a);if(n.dataTypes[0]==="jsonp"||c||h)return s=n.jsonpCallback=v.isFunction(n.jsonpCallback)?n.jsonpCallback():n.jsonpCallback,o=e[s],c?n.url=f.replace(Dn,"$1"+s):h?n.data=a.replace(Dn,"$1"+s):l&&(n.url+=(_n.test(f)?"&":"?")+n.jsonp+"="+s),n.converters["script json"]=function(){return u||v.error(s+" was not called"),u[0]},n.dataTypes[0]="json",e[s]=function(){u=arguments},i.always(function(){e[s]=o,n[s]&&(n.jsonpCallback=r.jsonpCallback,Mn.push(s)),u&&v.isFunction(o)&&o(u[0]),u=o=t}),"script"}),v.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){return v.globalEval(e),e}}}),v.ajaxPrefilter("script",function(e){e.cache===t&&(e.cache=!1),e.crossDomain&&(e.type="GET",e.global=!1)}),v.ajaxTransport("script",function(e){if(e.crossDomain){var n,r=i.head||i.getElementsByTagName("head")[0]||i.documentElement;return{send:function(s,o){n=i.createElement("script"),n.async="async",e.scriptCharset&&(n.charset=e.scriptCharset),n.src=e.url,n.onload=n.onreadystatechange=function(e,i){if(i||!n.readyState||/loaded|complete/.test(n.readyState))n.onload=n.onreadystatechange=null,r&&n.parentNode&&r.removeChild(n),n=t,i||o(200,"success")},r.insertBefore(n,r.firstChild)},abort:function(){n&&n.onload(0,1)}}}});var Hn,Bn=e.ActiveXObject?function(){for(var e in Hn)Hn[e](0,1)}:!1,jn=0;v.ajaxSettings.xhr=e.ActiveXObject?function(){return!this.isLocal&&Fn()||In()}:Fn,function(e){v.extend(v.support,{ajax:!!e,cors:!!e&&"withCredentials"in e})}(v.ajaxSettings.xhr()),v.support.ajax&&v.ajaxTransport(function(n){if(!n.crossDomain||v.support.cors){var r;return{send:function(i,s){var o,u,a=n.xhr();n.username?a.open(n.type,n.url,n.async,n.username,n.password):a.open(n.type,n.url,n.async);if(n.xhrFields)for(u in n.xhrFields)a[u]=n.xhrFields[u];n.mimeType&&a.overrideMimeType&&a.overrideMimeType(n.mimeType),!n.crossDomain&&!i["X-Requested-With"]&&(i["X-Requested-With"]="XMLHttpRequest");try{for(u in i)a.setRequestHeader(u,i[u])}catch(f){}a.send(n.hasContent&&n.data||null),r=function(e,i){var u,f,l,c,h;try{if(r&&(i||a.readyState===4)){r=t,o&&(a.onreadystatechange=v.noop,Bn&&delete Hn[o]);if(i)a.readyState!==4&&a.abort();else{u=a.status,l=a.getAllResponseHeaders(),c={},h=a.responseXML,h&&h.documentElement&&(c.xml=h);try{c.text=a.responseText}catch(p){}try{f=a.statusText}catch(p){f=""}!u&&n.isLocal&&!n.crossDomain?u=c.text?200:404:u===1223&&(u=204)}}}catch(d){i||s(-1,d)}c&&s(u,f,c,l)},n.async?a.readyState===4?setTimeout(r,0):(o=++jn,Bn&&(Hn||(Hn={},v(e).unload(Bn)),Hn[o]=r),a.onreadystatechange=r):r()},abort:function(){r&&r(0,1)}}}});var qn,Rn,Un=/^(?:toggle|show|hide)$/,zn=new RegExp("^(?:([-+])=|)("+m+")([a-z%]*)$","i"),Wn=/queueHooks$/,Xn=[Gn],Vn={"*":[function(e,t){var n,r,i=this.createTween(e,t),s=zn.exec(t),o=i.cur(),u=+o||0,a=1,f=20;if(s){n=+s[2],r=s[3]||(v.cssNumber[e]?"":"px");if(r!=="px"&&u){u=v.css(i.elem,e,!0)||n||1;do a=a||".5",u/=a,v.style(i.elem,e,u+r);while(a!==(a=i.cur()/o)&&a!==1&&--f)}i.unit=r,i.start=u,i.end=s[1]?u+(s[1]+1)*n:n}return i}]};v.Animation=v.extend(Kn,{tweener:function(e,t){v.isFunction(e)?(t=e,e=["*"]):e=e.split(" ");var n,r=0,i=e.length;for(;r<i;r++)n=e[r],Vn[n]=Vn[n]||[],Vn[n].unshift(t)},prefilter:function(e,t){t?Xn.unshift(e):Xn.push(e)}}),v.Tween=Yn,Yn.prototype={constructor:Yn,init:function(e,t,n,r,i,s){this.elem=e,this.prop=n,this.easing=i||"swing",this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=s||(v.cssNumber[n]?"":"px")},cur:function(){var e=Yn.propHooks[this.prop];return e&&e.get?e.get(this):Yn.propHooks._default.get(this)},run:function(e){var t,n=Yn.propHooks[this.prop];return this.options.duration?this.pos=t=v.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):Yn.propHooks._default.set(this),this}},Yn.prototype.init.prototype=Yn.prototype,Yn.propHooks={_default:{get:function(e){var t;return e.elem[e.prop]==null||!!e.elem.style&&e.elem.style[e.prop]!=null?(t=v.css(e.elem,e.prop,!1,""),!t||t==="auto"?0:t):e.elem[e.prop]},set:function(e){v.fx.step[e.prop]?v.fx.step[e.prop](e):e.elem.style&&(e.elem.style[v.cssProps[e.prop]]!=null||v.cssHooks[e.prop])?v.style(e.elem,e.prop,e.now+e.unit):e.elem[e.prop]=e.now}}},Yn.propHooks.scrollTop=Yn.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},v.each(["toggle","show","hide"],function(e,t){var n=v.fn[t];v.fn[t]=function(r,i,s){return r==null||typeof r=="boolean"||!e&&v.isFunction(r)&&v.isFunction(i)?n.apply(this,arguments):this.animate(Zn(t,!0),r,i,s)}}),v.fn.extend({fadeTo:function(e,t,n,r){return this.filter(Gt).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=v.isEmptyObject(e),s=v.speed(t,n,r),o=function(){var t=Kn(this,v.extend({},e),s);i&&t.stop(!0)};return i||s.queue===!1?this.each(o):this.queue(s.queue,o)},stop:function(e,n,r){var i=function(e){var t=e.stop;delete e.stop,t(r)};return typeof e!="string"&&(r=n,n=e,e=t),n&&e!==!1&&this.queue(e||"fx",[]),this.each(function(){var t=!0,n=e!=null&&e+"queueHooks",s=v.timers,o=v._data(this);if(n)o[n]&&o[n].stop&&i(o[n]);else for(n in o)o[n]&&o[n].stop&&Wn.test(n)&&i(o[n]);for(n=s.length;n--;)s[n].elem===this&&(e==null||s[n].queue===e)&&(s[n].anim.stop(r),t=!1,s.splice(n,1));(t||!r)&&v.dequeue(this,e)})}}),v.each({slideDown:Zn("show"),slideUp:Zn("hide"),slideToggle:Zn("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){v.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),v.speed=function(e,t,n){var r=e&&typeof e=="object"?v.extend({},e):{complete:n||!n&&t||v.isFunction(e)&&e,duration:e,easing:n&&t||t&&!v.isFunction(t)&&t};r.duration=v.fx.off?0:typeof r.duration=="number"?r.duration:r.duration in v.fx.speeds?v.fx.speeds[r.duration]:v.fx.speeds._default;if(r.queue==null||r.queue===!0)r.queue="fx";return r.old=r.complete,r.complete=function(){v.isFunction(r.old)&&r.old.call(this),r.queue&&v.dequeue(this,r.queue)},r},v.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2}},v.timers=[],v.fx=Yn.prototype.init,v.fx.tick=function(){var e,n=v.timers,r=0;qn=v.now();for(;r<n.length;r++)e=n[r],!e()&&n[r]===e&&n.splice(r--,1);n.length||v.fx.stop(),qn=t},v.fx.timer=function(e){e()&&v.timers.push(e)&&!Rn&&(Rn=setInterval(v.fx.tick,v.fx.interval))},v.fx.interval=13,v.fx.stop=function(){clearInterval(Rn),Rn=null},v.fx.speeds={slow:600,fast:200,_default:400},v.fx.step={},v.expr&&v.expr.filters&&(v.expr.filters.animated=function(e){return v.grep(v.timers,function(t){return e===t.elem}).length});var er=/^(?:body|html)$/i;v.fn.offset=function(e){if(arguments.length)return e===t?this:this.each(function(t){v.offset.setOffset(this,e,t)});var n,r,i,s,o,u,a,f={top:0,left:0},l=this[0],c=l&&l.ownerDocument;if(!c)return;return(r=c.body)===l?v.offset.bodyOffset(l):(n=c.documentElement,v.contains(n,l)?(typeof l.getBoundingClientRect!="undefined"&&(f=l.getBoundingClientRect()),i=tr(c),s=n.clientTop||r.clientTop||0,o=n.clientLeft||r.clientLeft||0,u=i.pageYOffset||n.scrollTop,a=i.pageXOffset||n.scrollLeft,{top:f.top+u-s,left:f.left+a-o}):f)},v.offset={bodyOffset:function(e){var t=e.offsetTop,n=e.offsetLeft;return v.support.doesNotIncludeMarginInBodyOffset&&(t+=parseFloat(v.css(e,"marginTop"))||0,n+=parseFloat(v.css(e,"marginLeft"))||0),{top:t,left:n}},setOffset:function(e,t,n){var r=v.css(e,"position");r==="static"&&(e.style.position="relative");var i=v(e),s=i.offset(),o=v.css(e,"top"),u=v.css(e,"left"),a=(r==="absolute"||r==="fixed")&&v.inArray("auto",[o,u])>-1,f={},l={},c,h;a?(l=i.position(),c=l.top,h=l.left):(c=parseFloat(o)||0,h=parseFloat(u)||0),v.isFunction(t)&&(t=t.call(e,n,s)),t.top!=null&&(f.top=t.top-s.top+c),t.left!=null&&(f.left=t.left-s.left+h),"using"in t?t.using.call(e,f):i.css(f)}},v.fn.extend({position:function(){if(!this[0])return;var e=this[0],t=this.offsetParent(),n=this.offset(),r=er.test(t[0].nodeName)?{top:0,left:0}:t.offset();return n.top-=parseFloat(v.css(e,"marginTop"))||0,n.left-=parseFloat(v.css(e,"marginLeft"))||0,r.top+=parseFloat(v.css(t[0],"borderTopWidth"))||0,r.left+=parseFloat(v.css(t[0],"borderLeftWidth"))||0,{top:n.top-r.top,left:n.left-r.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||i.body;while(e&&!er.test(e.nodeName)&&v.css(e,"position")==="static")e=e.offsetParent;return e||i.body})}}),v.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,n){var r=/Y/.test(n);v.fn[e]=function(i){return v.access(this,function(e,i,s){var o=tr(e);if(s===t)return o?n in o?o[n]:o.document.documentElement[i]:e[i];o?o.scrollTo(r?v(o).scrollLeft():s,r?s:v(o).scrollTop()):e[i]=s},e,i,arguments.length,null)}}),v.each({Height:"height",Width:"width"},function(e,n){v.each({padding:"inner"+e,content:n,"":"outer"+e},function(r,i){v.fn[i]=function(i,s){var o=arguments.length&&(r||typeof i!="boolean"),u=r||(i===!0||s===!0?"margin":"border");return v.access(this,function(n,r,i){var s;return v.isWindow(n)?n.document.documentElement["client"+e]:n.nodeType===9?(s=n.documentElement,Math.max(n.body["scroll"+e],s["scroll"+e],n.body["offset"+e],s["offset"+e],s["client"+e])):i===t?v.css(n,r,i,u):v.style(n,r,i,u)},n,o?i:t,o,null)}})}),e.jQuery=e.$=v,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return v})})(window);
</script>
<script type="text/javascript">
/*
 * jQuery Templates Plugin 1.0.0pre
 * http://github.com/jquery/jquery-tmpl
 * Requires jQuery 1.4.2
 *
 * Copyright Software Freedom Conservancy, Inc.
 * Dual licensed under the MIT or GPL Version 2 licenses.
 * http://jquery.org/license
 */
(function(a){var r=a.fn.domManip,d="_tmplitem",q=/^[^<]*(<[\w\W]+>)[^>]*$|\{\{\! /,b={},f={},e,p={key:0,data:{}},i=0,c=0,l=[];function g(g,d,h,e){var c={data:e||(e===0||e===false)?e:d?d.data:{},_wrap:d?d._wrap:null,tmpl:null,parent:d||null,nodes:[],calls:u,nest:w,wrap:x,html:v,update:t};g&&a.extend(c,g,{nodes:[],parent:d});if(h){c.tmpl=h;c._ctnt=c._ctnt||c.tmpl(a,c);c.key=++i;(l.length?f:b)[i]=c}return c}a.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(f,d){a.fn[f]=function(n){var g=[],i=a(n),k,h,m,l,j=this.length===1&&this[0].parentNode;e=b||{};if(j&&j.nodeType===11&&j.childNodes.length===1&&i.length===1){i[d](this[0]);g=this}else{for(h=0,m=i.length;h<m;h++){c=h;k=(h>0?this.clone(true):this).get();a(i[h])[d](k);g=g.concat(k)}c=0;g=this.pushStack(g,f,i.selector)}l=e;e=null;a.tmpl.complete(l);return g}});a.fn.extend({tmpl:function(d,c,b){return a.tmpl(this[0],d,c,b)},tmplItem:function(){return a.tmplItem(this[0])},template:function(b){return a.template(b,this[0])},domManip:function(d,m,k){if(d[0]&&a.isArray(d[0])){var g=a.makeArray(arguments),h=d[0],j=h.length,i=0,f;while(i<j&&!(f=a.data(h[i++],"tmplItem")));if(f&&c)g[2]=function(b){a.tmpl.afterManip(this,b,k)};r.apply(this,g)}else r.apply(this,arguments);c=0;!e&&a.tmpl.complete(b);return this}});a.extend({tmpl:function(d,h,e,c){var i,k=!c;if(k){c=p;d=a.template[d]||a.template(null,d);f={}}else if(!d){d=c.tmpl;b[c.key]=c;c.nodes=[];c.wrapped&&n(c,c.wrapped);return a(j(c,null,c.tmpl(a,c)))}if(!d)return[];if(typeof h==="function")h=h.call(c||{});e&&e.wrapped&&n(e,e.wrapped);i=a.isArray(h)?a.map(h,function(a){return a?g(e,c,d,a):null}):[g(e,c,d,h)];return k?a(j(c,null,i)):i},tmplItem:function(b){var c;if(b instanceof a)b=b[0];while(b&&b.nodeType===1&&!(c=a.data(b,"tmplItem"))&&(b=b.parentNode));return c||p},template:function(c,b){if(b){if(typeof b==="string")b=o(b);else if(b instanceof a)b=b[0]||{};if(b.nodeType)b=a.data(b,"tmpl")||a.data(b,"tmpl",o(b.innerHTML));return typeof c==="string"?(a.template[c]=b):b}return c?typeof c!=="string"?a.template(null,c):a.template[c]||a.template(null,q.test(c)?c:a(c)):null},encode:function(a){return(""+a).split("&").join("&amp;").split("<").join("&lt;").split(">").join("&gt;").split('"').join("&#34;").split("'").join("&#39;")}});a.extend(a.tmpl,{tag:{tmpl:{_default:{$2:"null"},open:"if($notnull_1){__=__.concat($item.nest($1,$2));}"},wrap:{_default:{$2:"null"},open:"$item.calls(__,$1,$2);__=[];",close:"call=$item.calls();__=call._.concat($item.wrap(call,__));"},each:{_default:{$2:"$index, $value"},open:"if($notnull_1){$.each($1a,function($2){with(this){",close:"}});}"},"if":{open:"if(($notnull_1) && $1a){",close:"}"},"else":{_default:{$1:"true"},open:"}else if(($notnull_1) && $1a){"},html:{open:"if($notnull_1){__.push($1a);}"},"=":{_default:{$1:"$data"},open:"if($notnull_1){__.push($.encode($1a));}"},"!":{open:""}},complete:function(){b={}},afterManip:function(f,b,d){var e=b.nodeType===11?a.makeArray(b.childNodes):b.nodeType===1?[b]:[];d.call(f,b);m(e);c++}});function j(e,g,f){var b,c=f?a.map(f,function(a){return typeof a==="string"?e.key?a.replace(/(<\w+)(?=[\s>])(?![^>]*_tmplitem)([^>]*)/g,"$1 "+d+'="'+e.key+'" $2'):a:j(a,e,a._ctnt)}):e;if(g)return c;c=c.join("");c.replace(/^\s*([^<\s][^<]*)?(<[\w\W]+>)([^>]*[^>\s])?\s*$/,function(f,c,e,d){b=a(e).get();m(b);if(c)b=k(c).concat(b);if(d)b=b.concat(k(d))});return b?b:k(c)}function k(c){var b=document.createElement("div");b.innerHTML=c;return a.makeArray(b.childNodes)}function o(b){return new Function("jQuery","$item","var $=jQuery,call,__=[],$data=$item.data;with($data){__.push('"+a.trim(b).replace(/([\\'])/g,"\\$1").replace(/[\r\t\n]/g," ").replace(/\$\{([^\}]*)\}/g,"{{= $1}}").replace(/\{\{(\/?)(\w+|.)(?:\(((?:[^\}]|\}(?!\}))*?)?\))?(?:\s+(.*?)?)?(\(((?:[^\}]|\}(?!\}))*?)\))?\s*\}\}/g,function(m,l,k,g,b,c,d){var j=a.tmpl.tag[k],i,e,f;if(!j)throw"Unknown template tag: "+k;i=j._default||[];if(c&&!/\w$/.test(b)){b+=c;c=""}if(b){b=h(b);d=d?","+h(d)+")":c?")":"";e=c?b.indexOf(".")>-1?b+h(c):"("+b+").call($item"+d:b;f=c?e:"(typeof("+b+")==='function'?("+b+").call($item):("+b+"))"}else f=e=i.$1||"null";g=h(g);return"');"+j[l?"close":"open"].split("$notnull_1").join(b?"typeof("+b+")!=='undefined' && ("+b+")!=null":"true").split("$1a").join(f).split("$1").join(e).split("$2").join(g||i.$2||"")+"__.push('"})+"');}return __;")}function n(c,b){c._wrap=j(c,true,a.isArray(b)?b:[q.test(b)?b:a(b).html()]).join("")}function h(a){return a?a.replace(/\\'/g,"'").replace(/\\\\/g,"\\"):null}function s(b){var a=document.createElement("div");a.appendChild(b.cloneNode(true));return a.innerHTML}function m(o){var n="_"+c,k,j,l={},e,p,h;for(e=0,p=o.length;e<p;e++){if((k=o[e]).nodeType!==1)continue;j=k.getElementsByTagName("*");for(h=j.length-1;h>=0;h--)m(j[h]);m(k)}function m(j){var p,h=j,k,e,m;if(m=j.getAttribute(d)){while(h.parentNode&&(h=h.parentNode).nodeType===1&&!(p=h.getAttribute(d)));if(p!==m){h=h.parentNode?h.nodeType===11?0:h.getAttribute(d)||0:0;if(!(e=b[m])){e=f[m];e=g(e,b[h]||f[h]);e.key=++i;b[i]=e}c&&o(m)}j.removeAttribute(d)}else if(c&&(e=a.data(j,"tmplItem"))){o(e.key);b[e.key]=e;h=a.data(j.parentNode,"tmplItem");h=h?h.key:0}if(e){k=e;while(k&&k.key!=h){k.nodes.push(j);k=k.parent}delete e._ctnt;delete e._wrap;a.data(j,"tmplItem",e)}function o(a){a=a+n;e=l[a]=l[a]||g(e,b[e.parent.key+n]||e.parent)}}}function u(a,d,c,b){if(!a)return l.pop();l.push({_:a,tmpl:d,item:this,data:c,options:b})}function w(d,c,b){return a.tmpl(a.template(d),c,b,this)}function x(b,d){var c=b.options||{};c.wrapped=d;return a.tmpl(a.template(b.tmpl),b.data,c,b.item)}function v(d,c){var b=this._wrap;return a.map(a(a.isArray(b)?b.join(""):b).filter(d||"*"),function(a){return c?a.innerText||a.textContent:a.outerHTML||s(a)})}function t(){var b=this.nodes;a.tmpl(null,null,null,this).insertBefore(b[0]);a(b).remove()}})(jQuery);
</script>
<script type="text/javascript">
/*!
* TableSorter 2.7.8 min - Client-side table sorting with ease!
* Copyright (c) 2007 Christian Bach
*/
!function(j){j.extend({tablesorter:new function(){function e(d){"undefined"!==typeof console&&"undefined"!==typeof console.log?console.log(d):alert(d)}function u(d,c){e(d+" ("+((new Date).getTime()-c.getTime())+"ms)")}function p(d,c,a){if(!c)return"";var b=d.config,g=b.textExtraction,f="",f="simple"===g?b.supportsTextContent?c.textContent:j(c).text():"function"===typeof g?g(c,d,a):"object"===typeof g&&g.hasOwnProperty(a)?g[a](c,d,a):b.supportsTextContent?c.textContent:j(c).text();return j.trim(f)} function h(d){var c=d.config,a=c.$tbodies=c.$table.children("tbody:not(."+c.cssInfoBlock+")"),b,q,f,l,j,n,k="";if(0===a.length)return c.debug?e("*Empty table!* Not building a parser cache"):"";a=a[0].rows;if(a[0]){b=[];q=a[0].cells.length;for(f=0;f<q;f++){l=c.$headers.filter(":not([colspan])");l=l.add(c.$headers.filter('[colspan="1"]')).filter('[data-column="'+f+'"]:last');j=c.headers[f];n=g.getParserById(g.getData(l,j,"sorter"));c.empties[f]=g.getData(l,j,"empty")||c.emptyTo||(c.emptyToBottom?"bottom": "top");c.strings[f]=g.getData(l,j,"string")||c.stringTo||"max";if(!n)a:{l=d;j=a;n=-1;for(var u=f,x=void 0,t=g.parsers.length,y=!1,m="",x=!0;""===m&&x;)n++,j[n]?(y=j[n].cells[u],m=p(l,y,u),l.config.debug&&e("Checking if value was empty on row "+n+", column: "+u+": "+m)):x=!1;for(x=1;x<t;x++)if(g.parsers[x].is&&g.parsers[x].is(m,l,y)){n=g.parsers[x];break a}n=g.parsers[0]}c.debug&&(k+="column:"+f+"; parser:"+n.id+"; string:"+c.strings[f]+"; empty: "+c.empties[f]+"\n");b.push(n)}}c.debug&&e(k);return b} function s(d){var c=d.tBodies,a=d.config,b,q,f=a.parsers,l,v,n,k,h,x,t,m=[];a.cache={};if(!f)return a.debug?e("*Empty table!* Not building a cache"):"";a.debug&&(t=new Date);a.showProcessing&&g.isProcessing(d,!0);for(k=0;k<c.length;k++)if(a.cache[k]={row:[],normalized:[]},!j(c[k]).hasClass(a.cssInfoBlock)){b=c[k]&&c[k].rows.length||0;q=c[k].rows[0]&&c[k].rows[0].cells.length||0;for(v=0;v<b;++v)if(h=j(c[k].rows[v]),x=[],h.hasClass(a.cssChildRow))a.cache[k].row[a.cache[k].row.length-1]=a.cache[k].row[a.cache[k].row.length- 1].add(h);else{a.cache[k].row.push(h);for(n=0;n<q;++n)if(l=p(d,h[0].cells[n],n),l=f[n].format(l,d,h[0].cells[n],n),x.push(l),"numeric"===(f[n].type||"").toLowerCase())m[n]=Math.max(Math.abs(l),m[n]||0);x.push(a.cache[k].normalized.length);a.cache[k].normalized.push(x)}a.cache[k].colMax=m}a.showProcessing&&g.isProcessing(d);a.debug&&u("Building cache for "+b+" rows",t)}function m(d,c){var a=d.config,b=d.tBodies,q=[],f=a.cache,e,v,n,k,h,p,m,y,s,r,E;if(f[0]){a.debug&&(E=new Date);for(y=0;y<b.length;y++)if(e= j(b[y]),!e.hasClass(a.cssInfoBlock)){h=g.processTbody(d,e,!0);e=f[y].row;v=f[y].normalized;k=(n=v.length)?v[0].length-1:0;for(p=0;p<n;p++)if(r=v[p][k],q.push(e[r]),!a.appender||!a.removeRows){s=e[r].length;for(m=0;m<s;m++)h.append(e[r][m])}g.processTbody(d,h,!1)}a.appender&&a.appender(d,q);a.debug&&u("Rebuilt table",E);c||g.applyWidget(d);j(d).trigger("sortEnd",d)}}function F(d){var c,a,b,g=d.config,f=g.sortList,e=[g.cssAsc,g.cssDesc],h=j(d).find("tfoot tr").children().removeClass(e.join(" "));g.$headers.removeClass(e.join(" ")); b=f.length;for(c=0;c<b;c++)if(2!==f[c][1]&&(d=g.$headers.not(".sorter-false").filter('[data-column="'+f[c][0]+'"]'+(1===b?":last":"")),d.length))for(a=0;a<d.length;a++)d[a].sortDisabled||(d.eq(a).addClass(e[f[c][1]]),h.length&&h.filter('[data-column="'+f[c][0]+'"]').eq(a).addClass(e[f[c][1]]))}function G(d){var c=0,a=d.config,b=a.sortList,g=b.length,f=d.tBodies.length,e,h,n,k,p,m,t,r,s;if(!a.serverSideSorting&&a.cache[0]){a.debug&&(e=new Date);for(n=0;n<f;n++)p=a.cache[n].colMax,s=(m=a.cache[n].normalized)&& m[0]?m[0].length-1:0,m.sort(function(f,e){for(h=0;h<g;h++){k=b[h][0];r=b[h][1];t=/n/i.test(a.parsers&&a.parsers[k]?a.parsers[k].type||"":"")?"Numeric":"Text";t+=0===r?"":"Desc";/Numeric/.test(t)&&a.strings[k]&&(c="boolean"===typeof a.string[a.strings[k]]?(0===r?1:-1)*(a.string[a.strings[k]]?-1:1):a.strings[k]?a.string[a.strings[k]]||0:0);var l=j.tablesorter["sort"+t](d,f[k],e[k],k,p[k],c);if(l)return l}return f[s]-e[s]});a.debug&&u("Sorting on "+b.toString()+" and dir "+r+" time",e)}}function C(d, c){d.trigger("updateComplete");"function"===typeof c&&c(d[0])}function I(d,c,a){!1!==c?d.trigger("sorton",[d[0].config.sortList,function(){C(d,a)}]):C(d,a)}var g=this;g.version="2.7.8";g.parsers=[];g.widgets=[];g.defaults={theme:"default",widthFixed:!1,showProcessing:!1,headerTemplate:"{content}",onRenderTemplate:null,onRenderHeader:null,cancelSelection:!0,dateFormat:"mmddyyyy",sortMultiSortKey:"shiftKey",sortResetKey:"ctrlKey",usNumberFormat:!0,delayInit:!1,serverSideSorting:!1,headers:{},ignoreCase:!0, sortForce:null,sortList:[],sortAppend:null,sortInitialOrder:"asc",sortLocaleCompare:!1,sortReset:!1,sortRestart:!1,emptyTo:"bottom",stringTo:"max",textExtraction:"simple",textSorter:null,widgets:[],widgetOptions:{zebra:["even","odd"]},initWidgets:!0,initialized:null,tableClass:"tablesorter",cssAsc:"tablesorter-headerAsc",cssChildRow:"tablesorter-childRow",cssDesc:"tablesorter-headerDesc",cssHeader:"tablesorter-header",cssHeaderRow:"tablesorter-headerRow",cssIcon:"tablesorter-icon",cssInfoBlock:"tablesorter-infoOnly", cssProcessing:"tablesorter-processing",selectorHeaders:"> thead th, > thead td",selectorSort:"th, td",selectorRemove:".remove-me",debug:!1,headerList:[],empties:{},strings:{},parsers:[]};g.benchmark=u;g.construct=function(d){return this.each(function(){if(!this.tHead||0===this.tBodies.length||!0===this.hasInitialized)return this.config&&this.config.debug?e("stopping initialization! No thead, tbody or tablesorter has already been initialized"):"";var c=j(this),a=this,b,q,f,l="",v,n,k,C,x=j.metadata; a.hasInitialized=!1;a.config={};b=j.extend(!0,a.config,g.defaults,d);j.data(a,"tablesorter",b);b.debug&&j.data(a,"startoveralltimer",new Date);b.supportsTextContent="x"===j("<span>x</span>")[0].textContent;b.supportsDataObject=1.4<=parseFloat(j.fn.jquery);b.string={max:1,min:-1,"max+":1,"max-":-1,zero:0,none:0,"null":0,top:!0,bottom:!1};/tablesorter\-/.test(c.attr("class"))||(l=""!==b.theme?" tablesorter-"+b.theme:"");b.$table=c.addClass(b.tableClass+l);b.$tbodies=c.children("tbody:not(."+b.cssInfoBlock+ ")");var t=[],y={},O=0,R=j(a).find("thead:eq(0), tfoot").children("tr"),E,K,z,A,P,D,L,S,T,H;for(E=0;E<R.length;E++){P=R[E].cells;for(K=0;K<P.length;K++){A=P[K];D=A.parentNode.rowIndex;L=D+"-"+A.cellIndex;S=A.rowSpan||1;T=A.colSpan||1;"undefined"===typeof t[D]&&(t[D]=[]);for(z=0;z<t[D].length+1;z++)if("undefined"===typeof t[D][z]){H=z;break}y[L]=H;O=Math.max(H,O);j(A).attr({"data-column":H});for(z=D;z<D+S;z++){"undefined"===typeof t[z]&&(t[z]=[]);L=t[z];for(A=H;A<H+T;A++)L[A]="x"}}}a.config.columns= O;var M,B,Q,U,N,J,V,w=a.config;w.headerList=[];w.headerContent=[];w.debug&&(V=new Date);U=w.cssIcon?'<i class="'+w.cssIcon+'"></i>':"";t=j(a).find(w.selectorHeaders).each(function(a){B=j(this);M=w.headers[a];w.headerContent[a]=this.innerHTML;N=w.headerTemplate.replace(/\{content\}/g,this.innerHTML).replace(/\{icon\}/g,U);w.onRenderTemplate&&(Q=w.onRenderTemplate.apply(B,[a,N]))&&"string"===typeof Q&&(N=Q);this.innerHTML='<div class="tablesorter-header-inner">'+N+"</div>";w.onRenderHeader&&w.onRenderHeader.apply(B, [a]);this.column=y[this.parentNode.rowIndex+"-"+this.cellIndex];var b=g.getData(B,M,"sortInitialOrder")||w.sortInitialOrder;this.order=/^d/i.test(b)||1===b?[1,0,2]:[0,1,2];this.count=-1;"false"===g.getData(B,M,"sorter")?(this.sortDisabled=!0,B.addClass("sorter-false")):B.removeClass("sorter-false");this.lockedOrder=!1;J=g.getData(B,M,"lockedOrder")||!1;"undefined"!==typeof J&&!1!==J&&(this.order=this.lockedOrder=/^d/i.test(J)||1===J?[1,1,1]:[0,0,0]);B.addClass((this.sortDisabled?"sorter-false ":" ")+ w.cssHeader);w.headerList[a]=this;B.parent().addClass(w.cssHeaderRow)});a.config.debug&&(u("Built headers:",V),e(t));b.$headers=t;if(a.config.widthFixed&&0===j(a).find("colgroup").length){var W=j("<colgroup>"),X=j(a).width();j("tr:first td",a.tBodies[0]).each(function(){W.append(j("<col>").css("width",parseInt(1E3*(j(this).width()/X),10)/10+"%"))});j(a).prepend(W)}b.parsers=h(a);b.delayInit||s(a);b.$headers.find("*")[j.fn.addBack?"addBack":"andSelf"]().filter(b.selectorSort).unbind("mousedown.tablesorter mouseup.tablesorter").bind("mousedown.tablesorter mouseup.tablesorter", function(d,e){var h=(this.tagName.match("TH|TD")?j(this):j(this).parents("th, td").filter(":last"))[0];if(1!==(d.which||d.button))return!1;if("mousedown"===d.type)return C=(new Date).getTime(),"INPUT"===d.target.tagName?"":!b.cancelSelection;if(!0!==e&&250<(new Date).getTime()-C)return!1;b.delayInit&&!b.cache&&s(a);if(!h.sortDisabled){c.trigger("sortStart",a);l=!d[b.sortMultiSortKey];h.count=d[b.sortResetKey]?2:(h.count+1)%(b.sortReset?3:2);b.sortRestart&&(q=h,b.$headers.each(function(){if(this!== q&&(l||!j(this).is("."+b.cssDesc+",."+b.cssAsc)))this.count=-1}));q=h.column;if(l){b.sortList=[];if(null!==b.sortForce){v=b.sortForce;for(f=0;f<v.length;f++)v[f][0]!==q&&b.sortList.push(v[f])}k=h.order[h.count];if(2>k&&(b.sortList.push([q,k]),1<h.colSpan))for(f=1;f<h.colSpan;f++)b.sortList.push([q+f,k])}else if(b.sortAppend&&1<b.sortList.length&&g.isValueInArray(b.sortAppend[0][0],b.sortList)&&b.sortList.pop(),g.isValueInArray(q,b.sortList))for(f=0;f<b.sortList.length;f++)n=b.sortList[f],k=b.headerList[n[0]], n[0]===q&&(n[1]=k.order[k.count],2===n[1]&&(b.sortList.splice(f,1),k.count=-1));else if(k=h.order[h.count],2>k&&(b.sortList.push([q,k]),1<h.colSpan))for(f=1;f<h.colSpan;f++)b.sortList.push([q+f,k]);if(null!==b.sortAppend){v=b.sortAppend;for(f=0;f<v.length;f++)v[f][0]!==q&&b.sortList.push(v[f])}c.trigger("sortBegin",a);setTimeout(function(){F(a);G(a);m(a)},1)}});b.cancelSelection&&b.$headers.each(function(){this.onselectstart=function(){return!1}});c.unbind("sortReset update updateCell addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave ".split(" ").join(".tablesorter ")).bind("sortReset.tablesorter", function(){b.sortList=[];F(a);G(a);m(a)}).bind("update.tablesorter updateRows.tablesorter",function(d,f,g){j(b.selectorRemove,a).remove();b.parsers=h(a);s(a);I(c,f,g)}).bind("updateCell.tablesorter",function(d,f,g,e){var q,h,l;q=c.find("tbody");d=q.index(j(f).parents("tbody").filter(":last"));var k=j(f).parents("tr").filter(":last");f=j(f)[0];q.length&&0<=d&&(h=q.eq(d).find("tr").index(k),l=f.cellIndex,q=a.config.cache[d].normalized[h].length-1,a.config.cache[d].row[a.config.cache[d].normalized[h][q]]= k,a.config.cache[d].normalized[h][l]=b.parsers[l].format(p(a,f,l),a,f,l),I(c,g,e))}).bind("addRows.tablesorter",function(d,g,e,q){var j=g.filter("tr").length,l=[],k=g[0].cells.length,n=c.find("tbody").index(g.closest("tbody"));b.parsers||(b.parsers=h(a));for(d=0;d<j;d++){for(f=0;f<k;f++)l[f]=b.parsers[f].format(p(a,g[d].cells[f],f),a,g[d].cells[f],f);l.push(b.cache[n].row.length);b.cache[n].row.push([g[d]]);b.cache[n].normalized.push(l);l=[]}I(c,e,q)}).bind("sorton.tablesorter",function(b,d,f,g){c.trigger("sortStart", this);var e,q,l,h=a.config;b=d||h.sortList;h.sortList=[];j.each(b,function(a,b){e=[parseInt(b[0],10),parseInt(b[1],10)];if(l=h.headerList[e[0]])h.sortList.push(e),q=j.inArray(e[1],l.order),l.count=0<=q?q:e[1]%(h.sortReset?3:2)});F(a);G(a);m(a,g);"function"===typeof f&&f(a)}).bind("appendCache.tablesorter",function(b,c,d){m(a,d);"function"===typeof c&&c(a)}).bind("applyWidgetId.tablesorter",function(c,d){g.getWidgetById(d).format(a,b,b.widgetOptions)}).bind("applyWidgets.tablesorter",function(b,c){g.applyWidget(a, c)}).bind("refreshWidgets.tablesorter",function(b,c,d){g.refreshWidgets(a,c,d)}).bind("destroy.tablesorter",function(b,c,d){g.destroy(a,c,d)});b.supportsDataObject&&"undefined"!==typeof c.data().sortlist?b.sortList=c.data().sortlist:x&&(c.metadata()&&c.metadata().sortlist)&&(b.sortList=c.metadata().sortlist);g.applyWidget(a,!0);0<b.sortList.length?c.trigger("sorton",[b.sortList,{},!b.initWidgets]):b.initWidgets&&g.applyWidget(a);b.showProcessing&&c.unbind("sortBegin.tablesorter sortEnd.tablesorter").bind("sortBegin.tablesorter sortEnd.tablesorter", function(b){g.isProcessing(a,"sortBegin"===b.type)});a.hasInitialized=!0;b.debug&&g.benchmark("Overall initialization time",j.data(a,"startoveralltimer"));c.trigger("tablesorter-initialized",a);"function"===typeof b.initialized&&b.initialized(a)})};g.isProcessing=function(d,c,a){var b=d.config;d=a||j(d).find("."+b.cssHeader);c?(0<b.sortList.length&&(d=d.filter(function(){return this.sortDisabled?!1:g.isValueInArray(parseFloat(j(this).attr("data-column")),b.sortList)})),d.addClass(b.cssProcessing)): d.removeClass(b.cssProcessing)};g.processTbody=function(d,c,a){if(a)return c.before('<span class="tablesorter-savemyplace"/>'),d=j.fn.detach?c.detach():c.remove();d=j(d).find("span.tablesorter-savemyplace");c.insertAfter(d);d.remove()};g.clearTableBody=function(d){d.config.$tbodies.empty()};g.destroy=function(d,c,a){if(d.hasInitialized){g.refreshWidgets(d,!0,!0);var b=j(d),e=d.config,f=b.find("thead:first"),h=f.find("tr."+e.cssHeaderRow).removeClass(e.cssHeaderRow),u=b.find("tfoot:first > tr").children("th, td"); f.find("tr").not(h).remove();b.removeData("tablesorter").unbind("sortReset update updateCell addRows sorton appendCache applyWidgetId applyWidgets refreshWidgets destroy mouseup mouseleave sortBegin sortEnd ".split(" ").join(".tablesorter "));e.$headers.add(u).removeClass(e.cssHeader+" "+e.cssAsc+" "+e.cssDesc).removeAttr("data-column");h.find(e.selectorSort).unbind("mousedown.tablesorter mouseup.tablesorter");h.children().each(function(a){j(this).html(e.headerContent[a])});!1!==c&&b.removeClass(e.tableClass+ " tablesorter-"+e.theme);d.hasInitialized=!1;"function"===typeof a&&a(d)}};g.regex=[/(^([+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?)?$|^0x[0-9a-f]+$|\d+)/gi,/(^([\w ]+,?[\w ]+)?[\w ]+,?[\w ]+\d+:\d+(:\d+)?[\w ]?|^\d{1,4}[\/\-]\d{1,4}[\/\-]\d{1,4}|^\w+, \w+ \d+, \d{4})/,/^0x[0-9a-f]+$/i];g.sortText=function(d,c,a,b){if(c===a)return 0;var e=d.config,f=e.string[e.empties[b]||e.emptyTo],h=g.regex;if(""===c&&0!==f)return"boolean"===typeof f?f?-1:1:-f||-1;if(""===a&&0!==f)return"boolean"===typeof f? f?1:-1:f||1;if("function"===typeof e.textSorter)return e.textSorter(c,a,d,b);d=c.replace(h[0],"\\0$1\\0").replace(/\\0$/,"").replace(/^\\0/,"").split("\\0");b=a.replace(h[0],"\\0$1\\0").replace(/\\0$/,"").replace(/^\\0/,"").split("\\0");c=parseInt(c.match(h[2]),16)||1!==d.length&&c.match(h[1])&&Date.parse(c);if(a=parseInt(a.match(h[2]),16)||c&&a.match(h[1])&&Date.parse(a)||null){if(c<a)return-1;if(c>a)return 1}e=Math.max(d.length,b.length);for(c=0;c<e;c++){a=isNaN(d[c])?d[c]||0:parseFloat(d[c])|| 0;h=isNaN(b[c])?b[c]||0:parseFloat(b[c])||0;if(isNaN(a)!==isNaN(h))return isNaN(a)?1:-1;typeof a!==typeof h&&(a+="",h+="");if(a<h)return-1;if(a>h)return 1}return 0};g.sortTextDesc=function(d,c,a,b){if(c===a)return 0;var e=d.config,f=e.string[e.empties[b]||e.emptyTo];return""===c&&0!==f?"boolean"===typeof f?f?-1:1:f||1:""===a&&0!==f?"boolean"===typeof f?f?1:-1:-f||-1:"function"===typeof e.textSorter?e.textSorter(a,c,d,b):g.sortText(d,a,c)};g.getTextValue=function(d,c,a){if(c){var b=d.length,e=c+a; for(c=0;c<b;c++)e+=d.charCodeAt(c);return a*e}return 0};g.sortNumeric=function(d,c,a,b,e,f){if(c===a)return 0;d=d.config;b=d.string[d.empties[b]||d.emptyTo];if(""===c&&0!==b)return"boolean"===typeof b?b?-1:1:-b||-1;if(""===a&&0!==b)return"boolean"===typeof b?b?1:-1:b||1;isNaN(c)&&(c=g.getTextValue(c,e,f));isNaN(a)&&(a=g.getTextValue(a,e,f));return c-a};g.sortNumericDesc=function(d,c,a,b,e,f){if(c===a)return 0;d=d.config;b=d.string[d.empties[b]||d.emptyTo];if(""===c&&0!==b)return"boolean"===typeof b? b?-1:1:b||1;if(""===a&&0!==b)return"boolean"===typeof b?b?1:-1:-b||-1;isNaN(c)&&(c=g.getTextValue(c,e,f));isNaN(a)&&(a=g.getTextValue(a,e,f));return a-c};g.characterEquivalents={a:"\u00e1\u00e0\u00e2\u00e3\u00e4\u0105\u00e5",A:"\u00c1\u00c0\u00c2\u00c3\u00c4\u0104\u00c5",c:"\u00e7\u0107\u010d",C:"\u00c7\u0106\u010c",e:"\u00e9\u00e8\u00ea\u00eb\u011b\u0119",E:"\u00c9\u00c8\u00ca\u00cb\u011a\u0118",i:"\u00ed\u00ec\u0130\u00ee\u00ef\u0131",I:"\u00cd\u00cc\u0130\u00ce\u00cf",o:"\u00f3\u00f2\u00f4\u00f5\u00f6", O:"\u00d3\u00d2\u00d4\u00d5\u00d6",ss:"\u00df",SS:"\u1e9e",u:"\u00fa\u00f9\u00fb\u00fc\u016f",U:"\u00da\u00d9\u00db\u00dc\u016e"};g.replaceAccents=function(d){var c,a="[",b=g.characterEquivalents;if(!g.characterRegex){g.characterRegexArray={};for(c in b)"string"===typeof c&&(a+=b[c],g.characterRegexArray[c]=RegExp("["+b[c]+"]","g"));g.characterRegex=RegExp(a+"]")}if(g.characterRegex.test(d))for(c in b)"string"===typeof c&&(d=d.replace(g.characterRegexArray[c],c));return d};g.isValueInArray=function(d, c){var a,b=c.length;for(a=0;a<b;a++)if(c[a][0]===d)return!0;return!1};g.addParser=function(d){var c,a=g.parsers.length,b=!0;for(c=0;c<a;c++)g.parsers[c].id.toLowerCase()===d.id.toLowerCase()&&(b=!1);b&&g.parsers.push(d)};g.getParserById=function(d){var c,a=g.parsers.length;for(c=0;c<a;c++)if(g.parsers[c].id.toLowerCase()===d.toString().toLowerCase())return g.parsers[c];return!1};g.addWidget=function(d){g.widgets.push(d)};g.getWidgetById=function(d){var c,a,b=g.widgets.length;for(c=0;c<b;c++)if((a= g.widgets[c])&&a.hasOwnProperty("id")&&a.id.toLowerCase()===d.toLowerCase())return a};g.applyWidget=function(d,c){var a=d.config,b=a.widgetOptions,e=a.widgets.sort().reverse(),f,h,m,n=e.length;h=j.inArray("zebra",a.widgets);0<=h&&(a.widgets.splice(h,1),a.widgets.push("zebra"));a.debug&&(f=new Date);for(h=0;h<n;h++)(m=g.getWidgetById(e[h]))&&(!0===c&&m.hasOwnProperty("init")?m.init(d,m,a,b):!c&&m.hasOwnProperty("format")&&m.format(d,a,b));a.debug&&u("Completed "+(!0===c?"initializing":"applying")+ " widgets",f)};g.refreshWidgets=function(d,c,a){var b,h=d.config,f=h.widgets,l=g.widgets,m=l.length;for(b=0;b<m;b++)if(l[b]&&l[b].id&&(c||0>j.inArray(l[b].id,f)))h.debug&&e("Refeshing widgets: Removing "+l[b].id),l[b].hasOwnProperty("remove")&&l[b].remove(d,h,h.widgetOptions);!0!==a&&g.applyWidget(d,c)};g.getData=function(d,c,a){var b="";d=j(d);var e,f;if(!d.length)return"";e=j.metadata?d.metadata():!1;f=" "+(d.attr("class")||"");"undefined"!==typeof d.data(a)||"undefined"!==typeof d.data(a.toLowerCase())? b+=d.data(a)||d.data(a.toLowerCase()):e&&"undefined"!==typeof e[a]?b+=e[a]:c&&"undefined"!==typeof c[a]?b+=c[a]:" "!==f&&f.match(" "+a+"-")&&(b=f.match(RegExp(" "+a+"-(\\w+)"))[1]||"");return j.trim(b)};g.formatFloat=function(d,c){if("string"!==typeof d||""===d)return d;var a;d=(c&&c.config?!1!==c.config.usNumberFormat:"undefined"!==typeof c?c:1)?d.replace(/,/g,""):d.replace(/[\s|\.]/g,"").replace(/,/g,".");/^\s*\([.\d]+\)/.test(d)&&(d=d.replace(/^\s*\(/,"-").replace(/\)/,""));a=parseFloat(d);return isNaN(a)? j.trim(d):a};g.isDigit=function(d){return isNaN(d)?/^[\-+(]?\d+[)]?$/.test(d.toString().replace(/[,.'"\s]/g,"")):!0}}});var h=j.tablesorter;j.fn.extend({tablesorter:h.construct});h.addParser({id:"text",is:function(){return!0},format:function(e,u){var p=u.config;e=j.trim(p.ignoreCase?e.toLocaleLowerCase():e);return p.sortLocaleCompare?h.replaceAccents(e):e},type:"text"});h.addParser({id:"currency",is:function(e){return/^\(?\d+[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]|[\u00a3$\u20ac\u00a4\u00a5\u00a2?.]\d+\)?$/.test((e|| "").replace(/[,. ]/g,""))},format:function(e,j){return h.formatFloat(e.replace(/[^\w,. \-()]/g,""),j)},type:"numeric"});h.addParser({id:"ipAddress",is:function(e){return/^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$/.test(e)},format:function(e,j){var p,r=e.split("."),s="",m=r.length;for(p=0;p<m;p++)s+=("00"+r[p]).slice(-3);return h.formatFloat(s,j)},type:"numeric"});h.addParser({id:"url",is:function(e){return/^(https?|ftp|file):\/\//.test(e)},format:function(e){return j.trim(e.replace(/(https?|ftp|file):\/\//, ""))},type:"text"});h.addParser({id:"isoDate",is:function(e){return/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}/.test(e)},format:function(e,j){return h.formatFloat(""!==e?(new Date(e.replace(/-/g,"/"))).getTime()||"":"",j)},type:"numeric"});h.addParser({id:"percent",is:function(e){return/(\d\s?%|%\s?\d)/.test(e)},format:function(e,j){return h.formatFloat(e.replace(/%/g,""),j)},type:"numeric"});h.addParser({id:"usLongDate",is:function(e){return/^[A-Z]{3,10}\.?\s+\d{1,2},?\s+(\d{4})(\s+\d{1,2}:\d{2}(:\d{2})?(\s+[AP]M)?)?$/i.test(e)|| /^\d{1,2}\s+[A-Z]{3,10}\s+\d{4}/i.test(e)},format:function(e,j){return h.formatFloat((new Date(e.replace(/(\S)([AP]M)$/i,"$1 $2"))).getTime()||"",j)},type:"numeric"});h.addParser({id:"shortDate",is:function(e){return/^(\d{1,2}|\d{4})[\/\-\,\.\s+]\d{1,2}[\/\-\.\,\s+](\d{1,2}|\d{4})$/.test(e)},format:function(e,j,p,r){p=j.config;var s=p.headerList[r],m=s.shortDateFormat;"undefined"===typeof m&&(m=s.shortDateFormat=h.getData(s,p.headers[r],"dateFormat")||p.dateFormat);e=e.replace(/\s+/g," ").replace(/[\-|\.|\,]/g, "/");"mmddyyyy"===m?e=e.replace(/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/,"$3/$1/$2"):"ddmmyyyy"===m?e=e.replace(/(\d{1,2})[\/\s](\d{1,2})[\/\s](\d{4})/,"$3/$2/$1"):"yyyymmdd"===m&&(e=e.replace(/(\d{4})[\/\s](\d{1,2})[\/\s](\d{1,2})/,"$1/$2/$3"));return h.formatFloat((new Date(e)).getTime()||"",j)},type:"numeric"});h.addParser({id:"time",is:function(e){return/^(([0-2]?\d:[0-5]\d)|([0-1]?\d:[0-5]\d\s?([AP]M)))$/i.test(e)},format:function(e,j){return h.formatFloat((new Date("2000/01/01 "+e.replace(/(\S)([AP]M)$/i, "$1 $2"))).getTime()||"",j)},type:"numeric"});h.addParser({id:"digit",is:function(e){return h.isDigit(e)},format:function(e,j){return h.formatFloat(e.replace(/[^\w,. \-()]/g,""),j)},type:"numeric"});h.addParser({id:"metadata",is:function(){return!1},format:function(e,h,p){e=h.config;e=!e.parserMetadataName?"sortValue":e.parserMetadataName;return j(p).metadata()[e]},type:"numeric"});h.addWidget({id:"zebra",format:function(e,u,p){var r,s,m,F,G,C,I=RegExp(u.cssChildRow,"i"),g=u.$tbodies;u.debug&&(G= new Date);for(e=0;e<g.length;e++)r=g.eq(e),C=r.children("tr").length,1<C&&(m=0,r=r.children("tr:visible"),r.each(function(){s=j(this);I.test(this.className)||m++;F=0===m%2;s.removeClass(p.zebra[F?1:0]).addClass(p.zebra[F?0:1])}));u.debug&&h.benchmark("Applying Zebra widget",G)},remove:function(e,h){var p,r,s=h.$tbodies,m=(h.widgetOptions.zebra||["even","odd"]).join(" ");for(p=0;p<s.length;p++)r=j.tablesorter.processTbody(e,s.eq(p),!0),r.children().removeClass(m),j.tablesorter.processTbody(e,r,!1)}})}(jQuery);
</script>
<script type="text/javascript">
/*
    Copyright 2008-2013
        Matthias Ehmann,
        Michael Gerhaeuser,
        Carsten Miller,
        Bianca Valentin,
        Alfred Wassermann,
        Peter Wilfahrt
    Dual licensed under the Apache License Version 2.0, or LGPL Version 3 licenses.
    You should have received a copy of the GNU Lesser General Public License
    along with JSXCompressor.  If not, see <http://www.gnu.org/licenses/>.
    You should have received a copy of the Apache License along with JSXCompressor.
    If not, see <http://www.apache.org/licenses/>.
*/
(function(){var e,r,n;(function(t){function o(e,r){return y.call(e,r)}function i(e,r){var n,t,o,i,u,f,a,c,s,l,p=r&&r.split("/"),d=k.map,g=d&&d["*"]||{};if(e&&"."===e.charAt(0))if(r){for(p=p.slice(0,p.length-1),e=p.concat(e.split("/")),c=0;e.length>c;c+=1)if(l=e[c],"."===l)e.splice(c,1),c-=1;else if(".."===l){if(1===c&&(".."===e[2]||".."===e[0]))break;c>0&&(e.splice(c-1,2),c-=2)}e=e.join("/")}else 0===e.indexOf("./")&&(e=e.substring(2));if((p||g)&&d){for(n=e.split("/"),c=n.length;c>0;c-=1){if(t=n.slice(0,c).join("/"),p)for(s=p.length;s>0;s-=1)if(o=d[p.slice(0,s).join("/")],o&&(o=o[t])){i=o,u=c;break}if(i)break;!f&&g&&g[t]&&(f=g[t],a=c)}!i&&f&&(i=f,u=a),i&&(n.splice(0,u,i),e=n.join("/"))}return e}function u(e,r){return function(){return d.apply(t,v.call(arguments,0).concat([e,r]))}}function f(e){return function(r){return i(r,e)}}function a(e){return function(r){b[e]=r}}function c(e){if(o(m,e)){var r=m[e];delete m[e],C[e]=!0,p.apply(t,r)}if(!o(b,e)&&!o(C,e))throw Error("No "+e);return b[e]}function s(e){var r,n=e?e.indexOf("!"):-1;return n>-1&&(r=e.substring(0,n),e=e.substring(n+1,e.length)),[r,e]}function l(e){return function(){return k&&k.config&&k.config[e]||{}}}var p,d,g,h,b={},m={},k={},C={},y=Object.prototype.hasOwnProperty,v=[].slice;g=function(e,r){var n,t=s(e),o=t[0];return e=t[1],o&&(o=i(o,r),n=c(o)),o?e=n&&n.normalize?n.normalize(e,f(r)):i(e,r):(e=i(e,r),t=s(e),o=t[0],e=t[1],o&&(n=c(o))),{f:o?o+"!"+e:e,n:e,pr:o,p:n}},h={require:function(e){return u(e)},exports:function(e){var r=b[e];return r!==void 0?r:b[e]={}},module:function(e){return{id:e,uri:"",exports:b[e],config:l(e)}}},p=function(e,r,n,i){var f,s,l,p,d,k,y=[];if(i=i||e,"function"==typeof n){for(r=!r.length&&n.length?["require","exports","module"]:r,d=0;r.length>d;d+=1)if(p=g(r[d],i),s=p.f,"require"===s)y[d]=h.require(e);else if("exports"===s)y[d]=h.exports(e),k=!0;else if("module"===s)f=y[d]=h.module(e);else if(o(b,s)||o(m,s)||o(C,s))y[d]=c(s);else{if(!p.p)throw Error(e+" missing "+s);p.p.load(p.n,u(i,!0),a(s),{}),y[d]=b[s]}l=n.apply(b[e],y),e&&(f&&f.exports!==t&&f.exports!==b[e]?b[e]=f.exports:l===t&&k||(b[e]=l))}else e&&(b[e]=n)},e=r=d=function(e,r,n,o,i){return"string"==typeof e?h[e]?h[e](r):c(g(e,r).f):(e.splice||(k=e,r.splice?(e=r,r=n,n=null):e=t),r=r||function(){},"function"==typeof n&&(n=o,o=i),o?p(t,e,r,n):setTimeout(function(){p(t,e,r,n)},4),d)},d.config=function(e){return k=e,k.deps&&d(k.deps,k.callback),d},n=function(e,r,n){r.splice||(n=r,r=[]),o(b,e)||o(m,e)||(m[e]=[e,r,n])},n.amd={jQuery:!0}})(),n("../node_modules/almond/almond",function(){}),n("jxg",[],function(){var e={};return"object"!=typeof JXG||JXG.extend||(e=JXG),e.extend=function(e,r,n,t){var o,i;n=n||!1,t=t||!1;for(o in r)(!n||n&&r.hasOwnProperty(o))&&(i=t?o.toLowerCase():o,e[i]=r[o])},e.extend(e,{boards:{},readers:{},elements:{},registerElement:function(e,r){e=e.toLowerCase(),this.elements[e]=r},registerReader:function(e,r){var n,t;for(n=0;r.length>n;n++)t=r[n].toLowerCase(),"function"!=typeof this.readers[t]&&(this.readers[t]=e)},shortcut:function(e,r){return function(){return e[r].apply(this,arguments)}},getRef:function(e,r){return e.select(r)},getReference:function(e,r){return e.select(r)},debugInt:function(){var e,r;for(e=0;arguments.length>e;e++)r=arguments[e],"object"==typeof window&&window.console&&console.log?console.log(r):"object"==typeof document&&document.getElementById("debug")&&(document.getElementById("debug").innerHTML+=r+"<br/>")},debugWST:function(){var r=Error();e.debugInt.apply(this,arguments),r&&r.stack&&(e.debugInt("stacktrace"),e.debugInt(r.stack.split("\n").slice(1).join("\n")))},debugLine:function(){var r=Error();e.debugInt.apply(this,arguments),r&&r.stack&&e.debugInt("Called from",r.stack.split("\n").slice(2,3).join("\n"))},debug:function(){e.debugInt.apply(this,arguments)}}),e}),n("utils/zip",["jxg"],function(e){var r=[0,128,64,192,32,160,96,224,16,144,80,208,48,176,112,240,8,136,72,200,40,168,104,232,24,152,88,216,56,184,120,248,4,132,68,196,36,164,100,228,20,148,84,212,52,180,116,244,12,140,76,204,44,172,108,236,28,156,92,220,60,188,124,252,2,130,66,194,34,162,98,226,18,146,82,210,50,178,114,242,10,138,74,202,42,170,106,234,26,154,90,218,58,186,122,250,6,134,70,198,38,166,102,230,22,150,86,214,54,182,118,246,14,142,78,206,46,174,110,238,30,158,94,222,62,190,126,254,1,129,65,193,33,161,97,225,17,145,81,209,49,177,113,241,9,137,73,201,41,169,105,233,25,153,89,217,57,185,121,249,5,133,69,197,37,165,101,229,21,149,85,213,53,181,117,245,13,141,77,205,45,173,109,237,29,157,93,221,61,189,125,253,3,131,67,195,35,163,99,227,19,147,83,211,51,179,115,243,11,139,75,203,43,171,107,235,27,155,91,219,59,187,123,251,7,135,71,199,39,167,103,231,23,151,87,215,55,183,119,247,15,143,79,207,47,175,111,239,31,159,95,223,63,191,127,255],n=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],t=[0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0,99,99],o=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577],i=[0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13],u=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15],f=256;return e.Util=e.Util||{},e.Util.Unzip=function(a){function c(){return q+=8,N>R?a[R++]:-1}function s(){T=1}function l(){var e;return q++,e=1&T,T>>=1,0===T&&(T=c(),e=1&T,T=128|T>>1),e}function p(e){for(var n=0,t=e;t--;)n=n<<1|l();return e&&(n=r[n]>>8-e),n}function d(){L=0}function g(e){A++,E[L++]=e,z.push(String.fromCharCode(e)),32768===L&&(L=0)}function h(){this.b0=0,this.b1=0,this.jump=null,this.jumppos=-1}function b(){for(;;){if(H[P]>=w)return-1;if(U[H[P]]===P)return H[P]++;H[P]++}}function m(){var e,r=F[X];if(17===P)return-1;if(X++,P++,e=b(),e>=0)r.b0=e;else if(r.b0=32768,m())return-1;if(e=b(),e>=0)r.b1=e,r.jump=null;else if(r.b1=32768,r.jump=F[X],r.jumppos=X,m())return-1;return P--,0}function k(e,r,n){var t;for(F=e,X=0,U=n,w=r,t=0;17>t;t++)H[t]=0;return P=0,m()?-1:0}function C(e){for(var r,n,t,o=0,i=e[o];;)if(t=l()){if(!(32768&i.b1))return i.b1;for(i=i.jump,r=e.length,n=0;r>n;n++)if(e[n]===i){o=n;break}}else{if(!(32768&i.b0))return i.b0;o++,i=e[o]}}function y(){var f,a,b,m,y,v,j,A,x,U,w,S,z,I,O,B,N;do if(f=l(),b=p(2),0===b)for(s(),U=c(),U|=c()<<8,S=c(),S|=c()<<8,65535&(U^~S)&&e.debug("BlockLen checksum mismatch\n");U--;)a=c(),g(a);else if(1===b)for(;;)if(y=r[p(7)]>>1,y>23?(y=y<<1|l(),y>199?(y-=128,y=y<<1|l()):(y-=48,y>143&&(y+=136))):y+=256,256>y)g(y);else{if(256===y)break;for(y-=257,x=p(t[y])+n[y],y=r[p(5)]>>3,i[y]>8?(w=p(8),w|=p(i[y]-8)<<8):w=p(i[y]),w+=o[y],y=0;x>y;y++)a=E[32767&L-w],g(a)}else if(2===b){for(j=Array(320),I=257+p(5),O=1+p(5),B=4+p(4),y=0;19>y;y++)j[y]=0;for(y=0;B>y;y++)j[u[y]]=p(3);for(x=J.length,m=0;x>m;m++)J[m]=new h;if(k(J,19,j,0))return d(),1;for(z=I+O,m=0,N=-1;z>m;)if(N++,y=C(J),16>y)j[m++]=y;else if(16===y){if(y=3+p(2),m+y>z)return d(),1;for(v=m?j[m-1]:0;y--;)j[m++]=v}else{if(y=17===y?3+p(3):11+p(7),m+y>z)return d(),1;for(;y--;)j[m++]=0}for(x=G.length,m=0;x>m;m++)G[m]=new h;if(k(G,I,j,0))return d(),1;for(x=G.length,m=0;x>m;m++)J[m]=new h;for(A=[],m=I;j.length>m;m++)A[m-I]=j[m];if(k(J,O,A,0))return d(),1;for(;;)if(y=C(G),y>=256){if(y-=256,0===y)break;for(y-=1,x=p(t[y])+n[y],y=C(J),i[y]>8?(w=p(8),w|=p(i[y]-8)<<8):w=p(i[y]),w+=o[y];x--;)a=E[32767&L-w],g(a)}else g(y)}while(!f);return d(),s(),0}function v(){var e,r,n,t,o,i,u,a,s=[];if(z=[],B=!1,s[0]=c(),s[1]=c(),120===s[0]&&218===s[1]&&(y(),O[I]=[z.join(""),"geonext.gxt"],I++),31===s[0]&&139===s[1]&&(S(),O[I]=[z.join(""),"file"],I++),80===s[0]&&75===s[1]&&(B=!0,s[2]=c(),s[3]=c(),3===s[2]&&4===s[3])){for(s[0]=c(),s[1]=c(),j=c(),j|=c()<<8,a=c(),a|=c()<<8,c(),c(),c(),c(),u=c(),u|=c()<<8,u|=c()<<16,u|=c()<<24,i=c(),i|=c()<<8,i|=c()<<16,i|=c()<<24,o=c(),o|=c()<<8,o|=c()<<16,o|=c()<<24,t=c(),t|=c()<<8,n=c(),n|=c()<<8,e=0,M=[];t--;)r=c(),"/"===r|":"===r?e=0:f-1>e&&(M[e++]=String.fromCharCode(r));for(x||(x=M),e=0;n>e;)r=c(),e++;A=0,8===a&&(y(),O[I]=Array(2),O[I][0]=z.join(""),O[I][1]=M.join(""),I++),S()}}var j,A,x,U,w,S,z=[],I=0,O=[],E=Array(32768),L=0,B=!1,N=a.length,R=0,T=1,q=0,G=Array(288),J=Array(32),X=0,F=null,P=(Array(64),Array(64),0),H=Array(17),M=[];H[0]=0,S=function(){var e,r,n,t,o,i,u=[];if(8&j&&(u[0]=c(),u[1]=c(),u[2]=c(),u[3]=c(),80===u[0]&&75===u[1]&&7===u[2]&&8===u[3]?(e=c(),e|=c()<<8,e|=c()<<16,e|=c()<<24):e=u[0]|u[1]<<8|u[2]<<16|u[3]<<24,r=c(),r|=c()<<8,r|=c()<<16,r|=c()<<24,n=c(),n|=c()<<8,n|=c()<<16,n|=c()<<24),B&&v(),u[0]=c(),8===u[0]){if(j=c(),c(),c(),c(),c(),c(),t=c(),4&j)for(u[0]=c(),u[2]=c(),P=u[0]+256*u[1],o=0;P>o;o++)c();if(8&j)for(o=0,M=[],i=c();i;)("7"===i||":"===i)&&(o=0),f-1>o&&(M[o++]=i),i=c();if(16&j)for(i=c();i;)i=c();2&j&&(c(),c()),y(),e=c(),e|=c()<<8,e|=c()<<16,e|=c()<<24,n=c(),n|=c()<<8,n|=c()<<16,n|=c()<<24,B&&v()}},e.Util.Unzip.prototype.unzipFile=function(e){var r;for(this.unzip(),r=0;O.length>r;r++)if(O[r][1]===e)return O[r][0];return""},e.Util.Unzip.prototype.unzip=function(){return v(),O}},e.Util}),n("utils/encoding",["jxg"],function(e){var r=0,n=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,9,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,7,8,8,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,10,3,3,3,3,3,3,3,3,3,3,3,3,4,3,3,11,6,6,6,5,8,8,8,8,8,8,8,8,8,8,8,0,12,24,36,60,96,84,12,12,12,48,72,12,12,12,12,12,12,12,12,12,12,12,12,12,0,12,12,12,12,12,0,12,0,12,12,12,24,12,12,12,12,12,24,12,24,12,12,12,12,12,12,12,12,12,24,12,12,12,12,12,24,12,12,12,12,12,12,12,24,12,12,12,12,12,12,12,12,12,36,12,36,12,12,12,36,12,12,12,12,12,36,12,36,12,12,12,36,12,12,12,12,12,12,12,12,12,12];return e.Util=e.Util||{},e.Util.UTF8={encode:function(e){var r,n,t="",o=e.length;if(e=e.replace(/\r\n/g,"\n"),"function"==typeof unescape&&"function"==typeof encodeURIComponent)return unescape(encodeURIComponent(e));for(r=0;o>r;r++)n=e.charCodeAt(r),128>n?t+=String.fromCharCode(n):n>127&&2048>n?(t+=String.fromCharCode(192|n>>6),t+=String.fromCharCode(128|63&n)):(t+=String.fromCharCode(224|n>>12),t+=String.fromCharCode(128|63&n>>6),t+=String.fromCharCode(128|63&n));return t},decode:function(e){var t,o,i,u=0,f=0,a=r,c=[],s=e.length,l=[];for(t=0;s>t;t++)o=e.charCodeAt(t),i=n[o],f=a!==r?63&o|f<<6:255>>i&o,a=n[256+a+i],a===r&&(f>65535?c.push(55232+(f>>10),56320+(1023&f)):c.push(f),u++,0===u%1e4&&(l.push(String.fromCharCode.apply(null,c)),c=[]));return l.push(String.fromCharCode.apply(null,c)),l.join("")},asciiCharCodeAt:function(e,r){var n=e.charCodeAt(r);if(n>255)switch(n){case 8364:n=128;break;case 8218:n=130;break;case 402:n=131;break;case 8222:n=132;break;case 8230:n=133;break;case 8224:n=134;break;case 8225:n=135;break;case 710:n=136;break;case 8240:n=137;break;case 352:n=138;break;case 8249:n=139;break;case 338:n=140;break;case 381:n=142;break;case 8216:n=145;break;case 8217:n=146;break;case 8220:n=147;break;case 8221:n=148;break;case 8226:n=149;break;case 8211:n=150;break;case 8212:n=151;break;case 732:n=152;break;case 8482:n=153;break;case 353:n=154;break;case 8250:n=155;break;case 339:n=156;break;case 382:n=158;break;case 376:n=159;break;default:}return n}},e.Util.UTF8}),n("utils/base64",["jxg","utils/encoding"],function(e,r){var n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";return e.Util=e.Util||{},e.Util.Base64={encode:function(e){var t,o,i,u,f,a,c,s=[],l=0;for(e=r.encode(e);e.length>l;)t=e.charCodeAt(l++),o=e.charCodeAt(l++),i=e.charCodeAt(l++),u=t>>2,f=(3&t)<<4|o>>4,a=(15&o)<<2|i>>6,c=63&i,isNaN(o)?a=c=64:isNaN(i)&&(c=64),s.push([n.charAt(u),n.charAt(f),n.charAt(a),n.charAt(c)].join(""));return s.join("")},decode:function(e,t){var o,i,u,f,a,c,s,l=[],p=0,d=e.length;for(e=e.replace(/[^A-Za-z0-9\+\/\=]/g,"");d>p;)f=n.indexOf(e.charAt(p++)),a=n.indexOf(e.charAt(p++)),c=n.indexOf(e.charAt(p++)),s=n.indexOf(e.charAt(p++)),o=f<<2|a>>4,i=(15&a)<<4|c>>2,u=(3&c)<<6|s,l.push(String.fromCharCode(o)),64!==c&&l.push(String.fromCharCode(i)),64!==s&&l.push(String.fromCharCode(u));return l=l.join(""),t&&(l=r.decode(l)),l},decodeAsArray:function(e){var r,n=this.decode(e),t=[],o=n.length;for(r=0;o>r;r++)t[r]=n.charCodeAt(r);return t}},e.Util.Base64}),n("../build/compressor.deps.js",["jxg","utils/zip","utils/base64"],function(e,r,n){return e.decompress=function(e){return unescape(new r.Unzip(n.decodeAsArray(e)).unzip()[0][0])},e}),window.JXG=r("../build/compressor.deps.js")})();
</script>
<script type="text/javascript">
window.fileLoading = (function () {
    var fileLoadingCallbacks = {};
    var timestamp = new Date().getTime();
    function loadKeywordsFile(filename, callback) {
        fileLoadingCallbacks[filename] = callback;
        var script = document.createElement('script');
        script.type = 'text/javascript';
        // timestamp as an argument to prevent browsers from caching scripts
        // see: http://stackoverflow.com/questions/866619/how-to-force-ie-to-reload-javascript
        script.src = filename+'?time='+timestamp;
        document.getElementsByTagName("head")[0].appendChild(script);
    }
    function getCallbackHandlerForKeywords(parent) {
        var callableList = [];
        return function (callable) {
            if (!parent.isChildrenLoaded) {
                callableList.push(callable);
                if (callableList.length == 1) {
                    loadKeywordsFile(parent.childFileName, function () {
                        parent.isChildrenLoaded = true;
                        for (var i = 0; i < callableList.length; i++) {
                            callableList[i]();
                        }
                    });
                }
            } else {
                callable();
            }
        }
    }
    function notifyFileLoaded(filename) {
        fileLoadingCallbacks[filename]();
    }
    return {
        getCallbackHandlerForKeywords: getCallbackHandlerForKeywords,
        notify: notifyFileLoaded
    }
}());
</script>
<script type="text/javascript">
window.model = (function () {
    function Suite(data) {
        var suite = createModelObject(data);
        suite.source = data.source;
        suite.relativeSource = data.relativeSource;
        suite.fullName = data.parent ? data.parent.fullName + '.' + data.name : data.name;
        setStats(suite, data.statistics);
        suite.metadata = data.metadata;
        suite.populateKeywords = createIterablePopulator('Keyword');
        suite.populateTests = createIterablePopulator('Test');
        suite.populateSuites = createIterablePopulator('Suite');
        suite.childrenNames = ['keyword', 'suite', 'test'];
        suite.callWhenChildrenReady = function (callable) { callable(); };
        suite.message = data.message;
        suite.children = function () {
            return suite.keywords().concat(suite.tests()).concat(suite.suites());
        };
        suite.searchTests = function (predicate) {
            var tests = [];
            var suites = this.suites();
            for (var i in suites)
                tests = tests.concat(suites[i].searchTests(predicate));
            return tests.concat(util.filter(this.tests(), predicate));
        };
        suite.searchTestsInSuite = function (pattern, matcher) {
            if (!matcher)
                matcher = util.Matcher(pattern);
            if (matcher.matchesAny([suite.fullName, suite.name]))
                return suite.allTests();
            var tests = [];
            var suites = this.suites();
            for (var i in suites)
                tests = tests.concat(suites[i].searchTestsInSuite(pattern, matcher));
            return tests;
        }
        suite.searchTestsByTag = function (tag) {
            return suite.searchTests(function (test) {
                if (tag.combined)
                    return containsTagPattern(test.tags, tag.combined);
                return containsTag(test.tags, tag.label);
            });
        };
        suite.findSuiteByName = function (name) {
            return findSuiteByName(suite, name);
        };
        suite.allTests = function () {
            return suite.searchTests(function (test) {
                return true;
            });
        };
        suite.criticalTests = function () {
            return suite.searchTests(function (test) {
                return test.isCritical;
            });
        };
        return suite;
    }
    function containsTag(testTags, tagname) {
        testTags = util.map(testTags, util.normalize);
        return util.contains(testTags, util.normalize(tagname));
    }
    function containsTagPattern(testTags, pattern) {
        var patterns;
        if (pattern.indexOf('NOT') != -1) {
            patterns = pattern.split('NOT');
            return containsTagPattern(testTags, patterns[0]) &&
                util.all(util.map(patterns.slice(1), function (p) {
                    return !containsTagPattern(testTags, p);
                }));
        }
        if (pattern.indexOf('OR') != -1) {
            patterns = pattern.split('OR');
            return util.any(util.map(patterns, function (p) {
                return containsTagPattern(testTags, p);
            }));
        }
        if (pattern.indexOf('AND') != -1) {
            patterns = pattern.split('AND');
            return util.all(util.map(patterns, function (p) {
                return containsTagPattern(testTags, p);
            }));
        }
        return util.Matcher(pattern).matchesAny(testTags);
    }
    function findSuiteByName(suite, name) {
        if (suite.fullName == name)
            return suite;
        var subSuites = suite.suites();
        for (var i in subSuites) {
            var match = findSuiteByName(subSuites[i], name);
            if (match)
                return match;
        }
        return null;
    }
    function setStats(suite, stats) {
        for (var name in stats) {
            suite[name] = stats[name];
        }
    }
    function createModelObject(data) {
        return {
            name: data.name,
            doc: data.doc,
            status: data.status,
            times: data.times,
            id: data.parent ? data.parent.id + '-' + data.id : data.id
        };
    }
    function Test(data) {
        var test = createModelObject(data);
        test.fullName = data.parent.fullName + '.' + test.name;
        test.formatParentName = function () { return util.formatParentName(test); };
        test.timeout = data.timeout;
        test.populateKeywords = createIterablePopulator('Keyword');
        test.childrenNames = ['keyword'];
        test.isChildrenLoaded = data.isChildrenLoaded;
        test.callWhenChildrenReady = window.fileLoading.getCallbackHandlerForKeywords(test);
        test.children = function () {
            if (test.isChildrenLoaded)
                return test.keywords();
        };
        test.isCritical = data.isCritical;
        test.tags = data.tags;
        test.message = data.message;
        test.matchesTagPattern = function (pattern) {
            return containsTagPattern(test.tags, pattern);
        };
        test.matchesNamePattern = function (pattern) {
            return util.Matcher(pattern).matchesAny([test.name, test.fullName]);
        };
        return test;
    }
    function Keyword(data) {
        var kw = createModelObject(data);
        kw.type = data.type;
        kw.arguments = data.args;
        kw.timeout = data.timeout;
        kw.populateMessages = createIterablePopulator('Message');
        kw.populateKeywords = createIterablePopulator('Keyword');
        kw.childrenNames = ['keyword', 'message'];
        kw.isChildrenLoaded = data.isChildrenLoaded;
        kw.callWhenChildrenReady = window.fileLoading.getCallbackHandlerForKeywords(kw);
        kw.children = function () {
            if (kw.isChildrenLoaded)
                return kw.keywords();
        };
        return kw;
    }
    function Message(level, date, text, link) {
        return {
            level: level,
            time: util.timeFromDate(date),
            date: util.dateFromDate(date),
            text: text,
            link: link
        };
    }
    function Times(timedata) {
        var start = timedata[0];
        var end = timedata[1];
        var elapsed = timedata[2];
        return {
            elapsedMillis: elapsed,
            elapsedTime: util.formatElapsed(elapsed),
            startTime: util.dateTimeFromDate(start),
            endTime:  util.dateTimeFromDate(end)
        };
    }
    function createIterablePopulator(name) {
        return function (populator) {
            populateIterable(this, name, populator);
        };
    }
    function populateIterable(obj, name, populator) {
        name = name.toLowerCase() + 's';
        obj[name] = createGetAllFunction(populator.numberOfItems, populator.creator);
    }
    function createGetAllFunction(numberOfElements, creator) {
        var cached = null;
        return function () {
            if (cached === null) {
                cached = [];
                for (var i = 0; i < numberOfElements(); i++) {
                    cached.push(creator(i));
                }
            }
            return cached;
        };
    }
    return {
        Suite: Suite,
        Test: Test,
        Keyword: Keyword,
        Message: Message,
        Times: Times,
        containsTag: containsTag,  // Exposed for tests
        containsTagPattern: containsTagPattern  // Exposed for tests
    };
}());
window.stats = (function () {
    function Statistics(totalElems, tagElems, suiteElems) {
        return {total: util.map(totalElems, totalStatElem),
                tag:   util.map(tagElems, tagStatElem),
                suite: util.map(suiteElems, suiteStatElem)};
    }
    function statElem(stat) {
        stat.total = stat.pass + stat.fail;
        var percents = calculatePercents(stat.total, stat.pass, stat.fail);
        stat.passPercent = percents[0];
        stat.failPercent = percents[1];
        var widths = calculateWidths(stat.passPercent, stat.failPercent);
        stat.passWidth = widths[0];
        stat.failWidth = widths[1];
        return stat;
    }
    function totalStatElem(data) {
        var stat = statElem(data);
        stat.type = stat.label == 'Critical Tests' ? 'critical' : 'all';
        return stat;
    }
    function tagStatElem(data) {
        var stat = statElem(data);
        stat.links = parseLinks(stat.links);
        return stat;
    }
    function suiteStatElem(data) {
        var stat = statElem(data);
        stat.fullName = stat.label;
        stat.formatParentName = function () { return util.formatParentName(stat); };
        // compatibility with RF 2.5 outputs
        if (!stat.name)
            stat.name = stat.label.split('.').pop();
        return stat;
    }
    function parseLinks(linksData) {
        if (!linksData)
            return [];
        return util.map(linksData.split(':::'), function (link) {
                var index = link.indexOf(':');
                return {title: link.slice(0, index), url: link.slice(index+1)};
            });
    }
    function calculatePercents(total, passed, failed) {
        if (total == 0)
            return [0.0, 0.0];
        var pass = 100.0 * passed / total;
        var fail = 100.0 * failed / total;
        if (pass > 0 && pass < 0.1)
            return [0.1, 99.9];
        if (fail > 0 && fail < 0.1)
            return [99.9, 0.1];
        return [Math.round(pass*10)/10, Math.round(fail*10)/10];
    }
    function calculateWidths(num1, num2) {
        if (num1 + num2 == 0)
            return [0.0, 0.0];
        // Make small percentages better visible
        if (num1 > 0 && num1 < 1)
            return [1.0, 99.0];
        if (num2 > 0 && num2 < 1)
            return [99.0, 1.0];
        // Handle situation where both are rounded up
        while (num1 + num2 > 100) {
            if (num1 > num2)
                num1 -= 0.1;
            if (num2 > num1)
                num2 -= 0.1;
        }
        return [num1, num2];
    }
    return {
        Statistics: Statistics
    };
}());
</script>
<script type="text/javascript">
window.util = function () {
    function map(elems, func) {
        var ret = [];
        for (var i = 0, len = elems.length; i < len; i++) {
            ret[i] = func(elems[i]);
        }
        return ret;
    }
    function filter(elems, predicate) {
        var ret = [];
        for (var i = 0, len = elems.length; i < len; i++) {
            if (predicate(elems[i]))
                ret.push(elems[i]);
        }
        return ret;
    }
    function all(elems) {
        for (var i = 0, len = elems.length; i < len; i++) {
            if (!elems[i])
                return false;
        }
        return true;
    }
    function any(elems) {
        for (var i = 0, len = elems.length; i < len; i++) {
            if (elems[i])
                return elems[i];
        }
        return false;
    }
    function contains(elems, e) {
        for (var i = 0, len = elems.length; i < len; i++) {
            if (elems[i] == e)
                return true;
        }
        return false;
    }
    function last(items) {
        return items[items.length-1];
    }
    function unescape(string) {
        return string.replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&amp;/g, '&');
    }
    function escape(string) {
        return string.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
    }
    function normalize(string) {
        return string.toLowerCase().replace(/ /g, '').replace(/_/g, '');
    }
    function regexpEscape(string) {
        return string.replace(/[-[\]{}()+?*.,\\^$|#]/g, "\\$&");
    }
    function Matcher(pattern) {
        pattern = regexpEscape(normalize(pattern));
        var rePattern = '^' + pattern.replace(/\\\?/g, '.').replace(/\\\*/g, '[\\s\\S]*') + '$';
        var regexp = new RegExp(rePattern);
        function matches(string) {
            return regexp.test(normalize(string));
        }
        return {
            matches: matches,
            matchesAny: function (strings) {
                for (var i = 0, len = strings.length; i < len; i++)
                    if (matches(strings[i]))
                        return true;
                return false;
            }
        };
    }
    function formatParentName(item) {
        var parentName = item.fullName.slice(0, item.fullName.length - item.name.length);
        return parentName.replace(/\./g, ' . ');
    }
    function timeFromDate(date) {
        if (!date)
            return 'N/A';
        return formatTime(date.getHours(), date.getMinutes(),
                          date.getSeconds(), date.getMilliseconds());
    }
    function dateFromDate(date) {
        if (!date)
            return 'N/A';
        return padTo(date.getFullYear(), 4) +
               padTo(date.getMonth() + 1, 2) +
               padTo(date.getDate(), 2);
    }
    function dateTimeFromDate(date) {
        if (!date)
            return 'N/A';
        return dateFromDate(date) + ' ' + timeFromDate(date);
    }
    function formatTime(hours, minutes, seconds, milliseconds) {
        return padTo(hours, 2) + ':' +
               padTo(minutes, 2) + ':' +
               padTo(seconds, 2) + '.' +
               padTo(milliseconds, 3);
    }
    function formatElapsed(elapsed) {
        var millis = elapsed;
        var hours = Math.floor(millis / (60 * 60 * 1000));
        millis -= hours * 60 * 60 * 1000;
        var minutes = Math.floor(millis / (60 * 1000));
        millis -= minutes * 60 * 1000;
        var seconds = Math.floor(millis / 1000);
        millis -= seconds * 1000;
        return formatTime(hours, minutes, seconds, millis);
    }
    function padTo(number, len) {
        var numString = number + "";
        while (numString.length < len) numString = "0" + numString;
        return numString;
    }
    function timestamp(millis) {
        // used also by tools that do not set window.output.baseMillis
        var base = window.output ? window.output.baseMillis : 0;
        return new Date(base + millis);
    }
    function createGeneratedAgoString(generatedMillis) {
        generatedMillis = timestamp(generatedMillis);
        function timeString(time, shortUnit) {
            var unit = {y: 'year', d: 'day', h: 'hour', m: 'minute',
                        s: 'second'}[shortUnit];
            var end = time == 1 ? ' ' : 's ';
            return time + ' ' + unit + end;
        }
        function compensateLeapYears(days, years) {
            // Not a perfect algorithm but ought to be enough
            return days - Math.floor(years / 4);
        }
        var generated = Math.round(generatedMillis / 1000);
        var current = Math.round(new Date().getTime() / 1000);
        var elapsed = current - generated;
        var prefix = '';
        if (elapsed < 0) {
            prefix = '- ';
            elapsed = Math.abs(elapsed);
        }
        var secs  = elapsed % 60;
        var mins  = Math.floor(elapsed / 60) % 60;
        var hours = Math.floor(elapsed / (60*60)) % 24;
        var days  = Math.floor(elapsed / (60*60*24)) % 365;
        var years = Math.floor(elapsed / (60*60*24*365));
        if (years) {
            days = compensateLeapYears(days, years);
            return prefix + timeString(years, 'y') + timeString(days, 'd');
        } else if (days) {
            return prefix + timeString(days, 'd') + timeString(hours, 'h');
        } else if (hours) {
            return prefix + timeString(hours, 'h') + timeString(mins, 'm');
        } else if (mins) {
            return prefix + timeString(mins, 'm') + timeString(secs, 's');
        } else {
            return prefix + timeString(secs, 's');
        }
    }
    function parseQueryString(query) {
        var result = {};
        if (!query)
            return result;
        var params = query.split('&');
        var parts;
        function decode(item) {
            return decodeURIComponent(item.replace('+', ' '));
        }
        for (var i = 0, len = params.length; i < len; i++) {
            parts = params[i].split('=');
            result[decode(parts.shift())] = decode(parts.join('='));
        }
        return result;
    }
    return {
        map: map,
        filter: filter,
        all: all,
        any: any,
        contains: contains,
        last: last,
        escape: escape,
        unescape: unescape,
        normalize: normalize,
        regexpEscape: regexpEscape,
        Matcher: Matcher,
        formatParentName: formatParentName,
        timeFromDate: timeFromDate,
        dateFromDate: dateFromDate,
        dateTimeFromDate: dateTimeFromDate,
        formatElapsed: formatElapsed,
        timestamp: timestamp,
        createGeneratedAgoString: createGeneratedAgoString,
        parseQueryString: parseQueryString
    };
}();
</script>
<script type="text/javascript">
window.testdata = function () {
    var elementsById = {};
    var idCounter = 0;
    var _statistics = null;
    var LEVELS = ['TRACE', 'DEBUG', 'INFO', 'WARN', 'FAIL', 'ERROR'];
    var STATUSES = ['FAIL', 'PASS', 'NOT_RUN'];
    var KEYWORDS = ['KEYWORD', 'SETUP', 'TEARDOWN', 'FOR', 'VAR'];
    function addElement(elem) {
        if (!elem.id)
            elem.id = uniqueId();
        elementsById[elem.id] = elem;
        return elem;
    }
    function uniqueId() {
        idCounter++;
        return 'element-id-' + idCounter;
    }
    function times(stats) {
        var startMillis = stats[1];
        var elapsed = stats[2];
        if (startMillis === null)
            return [null, null, elapsed];
        return [util.timestamp(startMillis),
                util.timestamp(startMillis + elapsed),
                elapsed];
    }
    function message(element, strings) {
        return addElement(model.Message(LEVELS[element[1]],
                                        util.timestamp(element[0]),
                                        strings.get(element[2]),
                                        strings.get(element[3])));
    }
    function parseStatus(stats) {
        return STATUSES[stats[0]];
    }
    function childCreator(parent, childType) {
        return function (elem, strings, index) {
            return addElement(childType(parent, elem, strings, index));
        };
    }
    function createKeyword(parent, element, strings, index) {
        var kw = model.Keyword({
            parent: parent,
            type: KEYWORDS[element[0]],
            id: 'k' + (index + 1),
            name: strings.get(element[1]),
            timeout: strings.get(element[2]),
            args: strings.get(element[4]),
            doc: function () {
                var doc = strings.get(element[3]);
                this.doc = function () { return doc; };
                return doc;
            },
            status: parseStatus(element[5], strings),
            times: model.Times(times(element[5])),
            isChildrenLoaded: typeof(element[6]) !== 'number'
        });
        lazyPopulateKeywordsFromFile(kw, element[6], strings);
        kw.populateMessages(Populator(element[7], strings, message));
        return kw;
    }
    function lazyPopulateKeywordsFromFile(parent, keywordsOrIndex, strings) {
        if (parent.isChildrenLoaded) {
            var keywords = keywordsOrIndex;
            parent.populateKeywords(Populator(keywords, strings, childCreator(parent, createKeyword)));
        } else {
            var index = keywordsOrIndex;
            parent.childFileName = window.settings['splitLogBase'] + '-' + index + '.js';
            parent.populateKeywords(SplitLogPopulator(keywordsOrIndex, childCreator(parent, createKeyword)));
        }
    }
    function tags(taglist, strings) {
        return util.map(taglist, strings.get);
    }
    function createTest(parent, element, strings, index) {
        var statusElement = element[5];
        var test = model.Test({
            parent: parent,
            id: 't' + (index + 1),
            name: strings.get(element[0]),
            doc: function () {
                var doc = strings.get(element[3]);
                this.doc = function () { return doc; };
                return doc;
            },
            timeout: strings.get(element[1]),
            isCritical: element[2],
            status: parseStatus(statusElement),
            message: function () {
                var msg = createMessage(statusElement, strings);
                this.message = function () { return msg; };
                return msg;
            },
            times: model.Times(times(statusElement)),
            tags: tags(element[4], strings),
            isChildrenLoaded: typeof(element[6]) !== 'number'
        });
        lazyPopulateKeywordsFromFile(test, element[6], strings);
        return test;
    }
    function createMessage(statusElement, strings) {
        return statusElement.length == 4 ? strings.get(statusElement[3]) : '';
    }
    function createSuite(parent, element, strings, index) {
        var statusElement = element[5];
        var suite = model.Suite({
            parent: parent,
            id: 's' + ((index || 0) + 1),
            name: strings.get(element[0]),
            source: strings.get(element[1]),
            relativeSource: strings.get(element[2]),
            doc: function () {
                var doc = strings.get(element[3]);
                this.doc = function () { return doc; };
                return doc;
            },
            status: parseStatus(statusElement),
            message: function () {
                var msg = createMessage(statusElement, strings);
                this.message = function () { return msg; };
                return msg;
            },
            times: model.Times(times(statusElement)),
            statistics: suiteStats(util.last(element)),
            metadata: parseMetadata(element[4], strings)
        });
        suite.populateKeywords(Populator(element[8], strings, childCreator(suite, createKeyword)));
        suite.populateTests(Populator(element[7], strings, childCreator(suite, createTest)));
        suite.populateSuites(Populator(element[6], strings, childCreator(suite, createSuite)));
        return suite;
    }
    function parseMetadata(data, strings) {
        var metadata = [];
        for (var i=0; i<data.length; i+=2) {
            metadata.push([strings.get(data[i]), strings.get(data[i+1])]);
        }
        return metadata;
    }
    function suiteStats(stats) {
        return {
            total: stats[0],
            totalPassed: stats[1],
            totalFailed: stats[0] - stats[1],
            critical: stats[2],
            criticalPassed: stats[3],
            criticalFailed: stats[2] - stats[3]
        };
    }
    function Populator(items, strings, creator) {
        return {
            numberOfItems: function () {
                return items.length;
            },
            creator: function (index) {
                return creator(items[index], strings, index);
            }
        };
    }
    function SplitLogPopulator(structureIndex, creator) {
        return {
            numberOfItems: function () {
                return window['keywords'+structureIndex].length;
            },
            creator: function (index) {
                return creator(window['keywords'+structureIndex][index],
                               StringStore(window['strings'+structureIndex]),
                               index);
            }
        };
    }
    function suite() {
        var elem = window.output.suite;
        if (elementsById[elem.id])
            return elem;
        var root = addElement(createSuite(null, elem, StringStore(window.output.strings)));
        window.output.suite = root;
        return root;
    }
    function findLoaded(id) {
        return elementsById[id];
    }
    function ensureLoaded(id, callback) {
        var ids = id.split('-');
        var root = suite();
        ids.shift();
        loadItems(ids, root, [root.id], callback);
    }
    function loadItems(ids, current, result, callback) {
        if (!ids.length) {
            callback(result);
            return;
        }
        current.callWhenChildrenReady(function () {
            var id = ids.shift();
            var type = id[0];
            var index = parseInt(id.substring(1)) - 1;
            var item = selectFrom(current, type, index);
            result.push(item.id);
            loadItems(ids, item, result, callback);
        });
    }
    function selectFrom(element, type, index) {
        if (type === 'k') {
            return element.keywords()[index];
        } else if (type === 't') {
            return element.tests()[index];
        } else {
            return element.suites()[index];
        }
    }
    function errorIterator() {
        return {
            next: function () {
                return message(window.output.errors.shift(),
                               StringStore(window.output.strings));
            },
            hasNext: function () {
                return window.output.errors.length > 0;
            }
        };
    }
    function statistics() {
        if (!_statistics) {
            var statData = window.output.stats;
            _statistics = stats.Statistics(statData[0], statData[1], statData[2]);
        }
        return _statistics;
    }
    function StringStore(strings) {
        function getText(id) {
            var text = strings[id];
            if (!text)
                return '';
            if (text[0] == '*')
                return text.substring(1);
            var extracted = extract(text);
            strings[id] = '*' + extracted;
            return extracted;
        }
        function extract(text) {
            var decoded = JXG.Util.Base64.decodeAsArray(text);
            var extracted = (new JXG.Util.Unzip(decoded)).unzip()[0][0];
            return JXG.Util.UTF8.decode(extracted);
        }
        function get(id) {
            if (id === null) return null;
            return getText(id);
        }
        return {get: get};
    }
    return {
        suite: suite,
        errorIterator: errorIterator,
        findLoaded: findLoaded,
        ensureLoaded: ensureLoaded,
        statistics: statistics,
        StringStore: StringStore,  // exposed for tests
        LEVELS: LEVELS
    };
}();
</script>
<script type="text/javascript">
function removeJavaScriptDisabledWarning() {
    // Not using jQuery here for maximum speed
    document.getElementById('javascript-disabled').style.display = 'none';
}
function addJavaScriptDisabledWarning(error) {
    if (window.console)
        console.error('Opening failed: ' + error.name + ': ' + error.message);
    document.getElementById('javascript-disabled').style.display = 'block';
}
function initLayout(suiteName, type) {
    parseTemplates();
    setTitle(suiteName, type);
    addHeader();
    addReportOrLogLink(type);
}
function parseTemplates() {
    $('script[type="text/x-jquery-tmpl"]').map(function (idx, elem) {
        $.template(elem.id, elem.text);
    });
}
function setTitle(suiteName, type) {
    var givenTitle = window.settings.title;
    var title = givenTitle ? givenTitle : suiteName + " Test " + type;
    document.title = util.unescape(title);
}
function addHeader() {
    $.tmpl('<h1>${title}</h1>' +
           '<div id="generated">' +
             '<span>Generated<br>${generated}</span><br>' +
             '<span id="generated-ago">${ago} ago</span>' +
           '</div>' +
           '<div id="top-right-header">' +
             '<div id="report-or-log-link"><a href="#"></a></div>' +
           '</div>', {
        generated: window.output.generatedTimestamp,
        ago: util.createGeneratedAgoString(window.output.generatedMillis),
        title: document.title
    }).appendTo($('#header'));
}
function addReportOrLogLink(myType) {
    var url;
    var text;
    var container = $('#report-or-log-link');
    if (myType == 'Report') {
        url = window.settings.logURL;
        text = 'LOG';
    } else {
        url = window.settings.reportURL;
        text = 'REPORT';
    }
    if (url) {
        container.find('a').attr('href', url);
        container.find('a').text(text);
    } else {
        container.remove();
    }
}
function addStatistics() {
    var statHeaders =
        '<th class="stats-col-stat">Total</th>' +
        '<th class="stats-col-stat">Pass</th>' +
        '<th class="stats-col-stat">Fail</th>' +
        '<th class="stats-col-elapsed">Elapsed</th>' +
        '<th class="stats-col-graph">Pass / Fail</th>';
    var statTable =
        '<h2>Test Statistics</h2>' +
        '<table class="statistics" id="total-stats"><thead><tr>' +
        '<th class="stats-col-name">Total Statistics</th>' + statHeaders +
        '</tr></thead></table>' +
        '<table class="statistics" id="tag-stats"><thead><tr>' +
        '<th class="stats-col-name">Statistics by Tag</th>' + statHeaders +
        '</tr></thead></table>' +
        '<table class="statistics" id="suite-stats"><thead><tr>' +
        '<th class="stats-col-name">Statistics by Suite</th>' + statHeaders +
        '</tr></thead></table>';
    $(statTable).appendTo('#statistics-container');
    util.map(['total', 'tag', 'suite'], addStatTable);
    addTooltipsToElapsedTimes();
    enableStatisticsSorter();
}
function addTooltipsToElapsedTimes() {
    $('.stats-col-elapsed').attr('title',
        'Total execution time of these test cases. ' +
        'Excludes suite setups and teardowns.');
    $('#suite-stats').find('.stats-col-elapsed').attr('title',
        'Total execution time of this test suite.');
}
function enableStatisticsSorter() {
    $.tablesorter.addParser({
        id: 'statName',
        type: 'numeric',
        is: function(s) {
            return false;  // do not auto-detect
        },
        format: function(string, table, cell, cellIndex) {
            // Rows have class in format 'row-<index>'.
            var index = $(cell).parent().attr('class').substring(4);
            return parseInt(index);
        }
    });
    $(".statistics").tablesorter({
        sortInitialOrder: 'desc',
        headers: {0: {sorter:'statName', sortInitialOrder: 'asc'},
                  5: {sorter: false}}
    });
}
function addStatTable(tableName) {
    var stats = window.testdata.statistics()[tableName];
    if (tableName == 'tag' && stats.length == 0) {
        renderNoTagStatTable();
    } else {
        renderStatTable(tableName, stats);
    }
}
function renderNoTagStatTable() {
    $('<tbody><tr class="row-0">' +
        '<td class="stats-col-name">No Tags</td>' +
        '<td class="stats-col-stat"></td>' +
        '<td class="stats-col-stat"></td>' +
        '<td class="stats-col-stat"></td>' +
        '<td class="stats-col-elapsed"></td>' +
        '<td class="stats-col-graph">' +
          '<div class="empty-graph"></div>' +
        '</td>' +
      '</tr></tbody>').appendTo('#tag-stats');
}
function renderStatTable(tableName, stats) {
    var template = tableName + 'StatisticsRowTemplate';
    var tbody = $('<tbody></tbody>');
    for (var i = 0, len = stats.length; i < len; i++) {
        $.tmpl(template, stats[i], {index: i}).appendTo(tbody);
    }
    tbody.appendTo('#' + tableName + '-stats');
}
$.template('statColumnsTemplate',
    '<td class="stats-col-stat">${total}</td>' +
    '<td class="stats-col-stat">${pass}</td>' +
    '<td class="stats-col-stat">${fail}</td>' +
    '<td class="stats-col-elapsed">${elapsed}</td>' +
    '<td class="stats-col-graph">' +
      '{{if total}}' +
      '<div class="graph">' +
        '<div class="pass-bar" style="width: ${passWidth}%" title="${passPercent}%"></div>' +
        '<div class="fail-bar" style="width: ${failWidth}%" title="${failPercent}%"></div>' +
      '</div>' +
      '{{else}}' +
      '<div class="empty-graph"></div>' +
      '{{/if}}' +
    '</td>'
);
$.template('suiteStatusMessageTemplate',
    '${critical} critical test, ' +
    '${criticalPassed} passed, ' +
    '<span class="{{if criticalFailed}}fail{{else}}pass{{/if}}">${criticalFailed} failed</span><br>' +
    '${total} test total, ' +
    '${totalPassed} passed, ' +
    '<span class="{{if totalFailed}}fail{{else}}pass{{/if}}">${totalFailed} failed</span>'
);
// For complete cross-browser experience..
// http://www.quirksmode.org/js/events_order.html
function stopPropagation(event) {
    var event = event || window.event;
    event.cancelBubble = true;
    if (event.stopPropagation)
        event.stopPropagation();
}
</script>
<script type="text/javascript">
window.output = {};
</script>
<script type="text/javascript">
window.sPart0 = [[4,31,0,0,0,[1,35488,9689],[[0,32,0,33,34,[1,35488,7454],[[0,35,0,36,37,[1,35489,0],[],[]],[0,35,0,36,38,[1,35489,1],[],[]],[0,39,0,40,41,[1,35490,1],[],[[35491,2,42]]],[0,43,0,44,45,[1,35491,0],[],[[35491,2,42]]],[0,46,0,47,48,[1,35492,357],[],[[35492,2,49],[35849,2,50]]],[0,51,0,52,53,[1,35849,55],[],[[35904,2,54]]],[0,55,0,56,57,[1,35904,1036],[],[[36940,2,58]]],[0,59,0,60,61,[1,36941,6001],[],[[42942,2,62]]]],[]],[0,63,0,64,65,[1,42943,529],[[0,65,0,66,0,[1,42943,529],[[3,67,0,0,0,[1,42944,528],[[4,68,0,0,0,[1,42944,528],[[0,69,0,0,70,[1,42944,528],[[0,71,0,72,73,[1,42945,506],[[0,74,0,75,76,[1,42946,0],[],[[42946,2,77]]],[0,78,0,40,79,[1,42947,0],[],[[42947,2,80]]],[0,46,0,47,81,[1,42948,366],[],[[42948,2,82],[43313,2,83]]],[0,51,0,52,84,[1,43314,20],[],[[43334,2,85]]],[0,86,0,56,87,[1,43334,1],[],[[43335,2,88],[43335,2,89]]],[0,90,0,91,0,[1,43335,115],[],[]],[0,74,0,75,92,[1,43450,0],[],[[43450,2,88]]]],[[43451,2,93]]],[0,94,0,95,96,[1,43451,0],[],[]],[0,97,0,98,99,[1,43452,18],[],[[43470,2,100],[43470,2,101]]],[0,74,0,75,102,[1,43470,1],[],[[43471,2,103]]],[0,104,0,105,106,[1,43471,0],[],[[43471,2,107]]]],[]]],[]]],[]]],[]]],[[43472,2,108],[43472,2,109]]],[0,110,0,111,112,[1,43472,1],[],[]],[0,63,0,64,113,[1,43473,15],[[0,114,0,115,116,[1,43474,14],[[0,117,0,118,34,[1,43474,14],[[3,67,0,0,0,[1,43475,13],[[4,68,0,0,0,[1,43475,13],[[0,119,0,120,121,[1,43475,8],[[0,97,0,98,122,[1,43476,6],[],[[43482,2,100],[43482,2,101]]],[0,74,0,75,102,[1,43482,1],[],[[43483,2,103]]]],[[43483,2,101]]],[0,74,0,75,102,[1,43483,1],[],[[43484,2,103]]],[0,104,0,105,106,[1,43484,0],[],[[43484,2,107]]],[0,123,0,124,102,[1,43485,0],[],[[43485,2,125]]],[0,126,0,127,102,[1,43485,1],[],[[43486,2,128]]],[0,129,0,130,131,[1,43486,1],[],[[43487,2,132],[43487,2,133]]],[0,134,0,135,136,[1,43487,1],[],[[43487,2,137]]]],[]]],[]]],[]]],[]]],[[43488,2,108],[43488,2,109]]],[0,110,0,111,112,[1,43488,1],[],[]],[0,63,0,64,138,[1,43489,38],[[0,114,0,115,139,[1,43489,38],[[0,140,0,141,0,[1,43490,36],[[3,67,0,0,0,[1,43491,35],[[4,68,0,0,0,[1,43491,35],[[0,119,0,120,121,[1,43491,8],[[0,97,0,98,122,[1,43492,6],[],[[43498,2,100],[43498,2,101]]],[0,74,0,75,102,[1,43498,1],[],[[43499,2,103]]]],[[43499,2,101]]],[0,74,0,75,102,[1,43499,1],[],[[43500,2,103]]],[0,104,0,105,106,[1,43500,1],[],[[43500,2,107]]],[0,123,0,124,102,[1,43501,0],[],[[43501,2,125]]],[0,126,0,127,102,[1,43501,1],[],[[43502,2,128]]],[0,142,0,0,143,[1,43502,24],[[0,129,0,130,144,[1,43503,1],[],[[43504,2,132],[43504,2,133]]],[3,145,0,0,0,[1,43504,22],[[4,146,0,0,0,[1,43504,3],[[0,147,0,148,149,[1,43505,0],[],[[43505,2,150]]],[0,151,0,152,153,[1,43505,1],[],[[43506,2,154]]],[0,104,0,105,155,[1,43506,0],[],[[43506,2,156]]]],[]],[4,157,0,0,0,[1,43507,2],[[0,147,0,148,149,[1,43507,0],[],[[43507,2,158]]],[0,151,0,152,153,[1,43508,0],[],[[43508,2,154]]],[0,104,0,105,155,[1,43508,1],[],[[43509,2,156]]]],[]],[4,159,0,0,0,[1,43509,2],[[0,147,0,148,149,[1,43509,0],[],[[43510,2,160]]],[0,151,0,152,153,[1,43510,0],[],[[43510,2,154]]],[0,104,0,105,155,[1,43510,1],[],[[43511,2,156]]]],[]],[4,161,0,0,0,[1,43511,2],[[0,147,0,148,149,[1,43511,1],[],[[43512,2,162]]],[0,151,0,152,153,[1,43512,0],[],[[43513,2,154]]],[0,104,0,105,155,[1,43513,0],[],[[43513,2,156]]]],[]],[4,163,0,0,0,[1,43513,2],[[0,147,0,148,149,[1,43514,0],[],[[43514,2,164]]],[0,151,0,152,153,[1,43514,1],[],[[43515,2,154]]],[0,104,0,105,155,[1,43515,0],[],[[43515,2,156]]]],[]],[4,165,0,0,0,[1,43515,2],[[0,147,0,148,149,[1,43516,0],[],[[43516,2,166]]],[0,151,0,152,153,[1,43516,1],[],[[43517,2,154]]],[0,104,0,105,155,[1,43517,0],[],[[43517,2,156]]]],[]],[4,167,0,0,0,[1,43518,2],[[0,147,0,148,149,[1,43518,0],[],[[43518,2,168]]],[0,151,0,152,153,[1,43519,0],[],[[43519,2,154]]],[0,104,0,105,155,[1,43519,1],[],[[43519,2,156]]]],[]],[4,169,0,0,0,[1,43520,2],[[0,147,0,148,149,[1,43520,0],[],[[43520,2,170]]],[0,151,0,152,153,[1,43521,0],[],[[43521,2,154]]],[0,104,0,105,155,[1,43521,1],[],[[43522,2,156]]]],[]],[4,171,0,0,0,[1,43522,2],[[0,147,0,148,149,[1,43522,0],[],[[43523,2,172]]],[0,151,0,152,153,[1,43523,0],[],[[43523,2,154]]],[0,104,0,105,155,[1,43523,1],[],[[43524,2,156]]]],[]],[4,173,0,0,0,[1,43524,2],[[0,147,0,148,149,[1,43524,1],[],[[43525,2,174]]],[0,151,0,152,153,[1,43525,0],[],[[43525,2,154]]],[0,104,0,105,155,[1,43525,1],[],[[43526,2,156]]]],[]]],[]]],[]]],[]]],[]]],[]]],[]]],[[43527,2,108],[43527,2,109]]],[0,110,0,111,112,[1,43527,0],[],[]],[0,63,0,64,175,[1,43528,37],[[0,114,0,115,176,[1,43528,37],[[0,177,0,178,179,[1,43529,36],[[3,67,0,0,0,[1,43529,36],[[4,68,0,0,0,[1,43529,36],[[0,119,0,120,121,[1,43530,7],[[0,97,0,98,122,[1,43530,6],[],[[43536,2,100],[43536,2,101]]],[0,74,0,75,102,[1,43537,0],[],[[43537,2,103]]]],[[43537,2,101]]],[0,74,0,75,102,[1,43538,0],[],[[43538,2,103]]],[0,104,0,105,106,[1,43538,1],[],[[43539,2,107]]],[0,123,0,124,102,[1,43539,0],[],[[43539,2,125]]],[0,126,0,127,102,[1,43540,0],[],[[43540,2,128]]],[0,180,0,0,181,[1,43541,23],[[0,129,0,130,144,[1,43542,0],[],[[43542,2,132],[43542,2,133]]],[3,145,0,0,0,[1,43542,22],[[4,146,0,0,0,[1,43542,2],[[0,147,0,148,149,[1,43543,0],[],[[43543,2,150]]],[0,151,0,152,182,[1,43543,1],[],[[43544,2,183]]],[0,104,0,105,184,[1,43544,0],[],[[43544,2,185]]]],[]],[4,157,0,0,0,[1,43545,2],[[0,147,0,148,149,[1,43545,0],[],[[43545,2,158]]],[0,151,0,152,182,[1,43546,0],[],[[43546,2,183]]],[0,104,0,105,184,[1,43546,1],[],[[43546,2,185]]]],[]],[4,159,0,0,0,[1,43547,2],[[0,147,0,148,149,[1,43547,0],[],[[43547,2,160]]],[0,151,0,152,182,[1,43548,0],[],[[43548,2,183]]],[0,104,0,105,184,[1,43548,1],[],[[43549,2,185]]]],[]],[4,161,0,0,0,[1,43549,2],[[0,147,0,148,149,[1,43549,1],[],[[43550,2,162]]],[0,151,0,152,182,[1,43550,0],[],[[43550,2,183]]],[0,104,0,105,184,[1,43551,0],[],[[43551,2,185]]]],[]],[4,163,0,0,0,[1,43551,3],[[0,147,0,148,149,[1,43551,1],[],[[43552,2,164]]],[0,151,0,152,182,[1,43552,1],[],[[43553,2,183]]],[0,104,0,105,184,[1,43553,0],[],[[43553,2,185]]]],[]],[4,165,0,0,0,[1,43554,2],[[0,147,0,148,149,[1,43554,0],[],[[43554,2,166]]],[0,151,0,152,182,[1,43555,0],[],[[43555,2,183]]],[0,104,0,105,184,[1,43555,1],[],[[43555,2,185]]]],[]],[4,167,0,0,0,[1,43556,2],[[0,147,0,148,149,[1,43556,0],[],[[43556,2,168]]],[0,151,0,152,182,[1,43557,0],[],[[43557,2,183]]],[0,104,0,105,184,[1,43557,1],[],[[43558,2,185]]]],[]],[4,169,0,0,0,[1,43558,2],[[0,147,0,148,149,[1,43558,1],[],[[43559,2,170]]],[0,151,0,152,182,[1,43559,0],[],[[43559,2,183]]],[0,104,0,105,184,[1,43559,1],[],[[43560,2,185]]]],[]],[4,171,0,0,0,[1,43560,2],[[0,147,0,148,149,[1,43560,1],[],[[43561,2,172]]],[0,151,0,152,182,[1,43561,0],[],[[43561,2,183]]],[0,104,0,105,184,[1,43562,0],[],[[43562,2,185]]]],[]],[4,173,0,0,0,[1,43562,2],[[0,147,0,148,149,[1,43562,1],[],[[43563,2,174]]],[0,151,0,152,182,[1,43563,0],[],[[43564,2,183]]],[0,104,0,105,184,[1,43564,0],[],[[43564,2,185]]]],[]]],[]]],[]]],[]]],[]]],[]]],[]]],[[43565,2,108],[43565,2,109]]],[0,110,0,111,112,[1,43565,1],[],[]],[0,63,0,64,186,[1,43566,11],[[0,114,0,115,187,[1,43566,11],[[0,188,0,189,190,[1,43567,10],[[3,67,0,0,0,[1,43568,9],[[4,68,0,0,0,[1,43568,9],[[0,119,0,120,191,[1,43568,6],[[0,97,0,98,122,[1,43569,4],[],[[43573,2,100],[43573,2,101]]],[0,74,0,75,102,[1,43573,1],[],[[43574,2,192]]]],[[43574,2,101]]],[0,74,0,75,102,[1,43574,1],[],[[43575,2,192]]],[0,193,0,194,195,[1,43575,1],[],[[43576,2,196]]],[0,197,0,194,198,[1,43576,0],[],[[43576,2,199]]],[0,104,0,105,200,[1,43577,0],[],[[43577,2,201]]]],[]]],[]]],[]]],[]]],[[43578,2,108],[43578,2,109]]],[0,110,0,111,112,[1,43578,0],[],[]],[0,63,0,64,202,[1,43579,63],[[0,114,0,115,203,[1,43579,63],[[0,204,0,205,0,[1,43579,63],[[3,67,0,0,0,[1,43580,62],[[4,68,0,0,0,[1,43580,61],[[0,119,0,120,206,[1,43580,9],[[0,97,0,98,122,[1,43581,7],[],[[43588,2,100],[43588,2,101]]],[0,74,0,75,102,[1,43588,1],[],[[43589,2,207]]]],[[43589,2,101]]],[0,126,0,127,102,[1,43589,1],[],[[43590,2,208]]],[0,129,0,130,209,[1,43591,0],[],[[43591,2,210],[43591,2,211]]],[0,74,0,75,102,[1,43591,1],[],[[43592,2,207]]],[0,119,0,120,212,[1,43592,37],[[0,97,0,98,122,[1,43593,34],[],[[43627,2,100],[43627,2,101]]],[0,74,0,75,102,[1,43628,1],[],[[43628,2,213]]]],[[43629,2,101]]],[0,126,0,127,102,[1,43629,2],[],[[43631,2,214]]],[0,129,0,130,215,[1,43632,0],[],[[43632,2,216],[43632,2,217]]],[0,74,0,75,102,[1,43632,1],[],[[43633,2,213]]],[0,119,0,120,218,[1,43633,6],[[0,97,0,98,122,[1,43634,4],[],[[43638,2,100],[43638,2,101]]],[0,74,0,75,102,[1,43638,1],[],[[43639,2,219]]]],[[43639,2,101]]],[0,126,0,127,102,[1,43639,1],[],[[43640,2,220]]],[0,129,0,130,221,[1,43640,1],[],[[43641,2,222],[43641,2,223]]],[0,74,0,75,102,[1,43641,0],[],[[43641,2,219]]]],[]]],[]]],[]]],[]]],[[43642,2,108],[43642,2,109]]],[0,63,0,64,224,[1,43642,108],[[0,114,0,115,225,[1,43643,107],[[0,226,0,227,0,[1,43643,107],[[3,67,0,0,0,[1,43644,105],[[4,68,0,0,0,[1,43644,105],[[0,119,0,120,121,[1,43644,8],[[0,97,0,98,122,[1,43645,6],[],[[43651,2,100],[43651,2,101]]],[0,74,0,75,102,[1,43651,0],[],[[43651,2,103]]]],[[43652,2,101]]],[0,104,0,105,106,[1,43652,1],[],[[43652,2,107]]],[0,126,0,127,102,[1,43653,0],[],[[43653,2,128]]],[0,228,0,0,229,[1,43654,95],[[0,129,0,130,144,[1,43655,0],[],[[43655,2,132],[43655,2,133]]],[0,230,0,231,0,[1,43655,1],[],[[43656,2,232]]],[3,145,0,0,0,[1,43656,27],[[4,146,0,0,0,[1,43656,2],[[0,233,0,148,149,[1,43656,1],[],[[43657,2,234]]],[0,235,0,152,236,[1,43657,0],[],[[43657,2,237]]],[0,238,0,239,240,[1,43657,1],[],[]],[0,74,0,75,241,[1,43658,0],[],[[43658,2,242]]]],[]],[4,157,0,0,0,[1,43659,2],[[0,233,0,148,149,[1,43659,0],[],[[43659,2,243]]],[0,235,0,152,236,[1,43660,0],[],[[43660,2,244]]],[0,238,0,239,240,[1,43660,0],[],[]],[0,74,0,75,241,[1,43661,0],[],[[43661,2,245]]]],[]],[4,159,0,0,0,[1,43661,3],[[0,233,0,148,149,[1,43661,1],[],[[43662,2,246]]],[0,235,0,152,236,[1,43662,0],[],[[43663,2,247]]],[0,238,0,239,240,[1,43663,0],[],[]],[0,74,0,75,241,[1,43663,1],[],[[43664,2,248]]]],[]],[4,161,0,0,0,[1,43664,2],[[0,233,0,148,149,[1,43664,0],[],[[43665,2,249]]],[0,235,0,152,236,[1,43665,0],[],[[43665,2,250]]],[0,238,0,239,240,[1,43665,1],[],[]],[0,74,0,75,241,[1,43666,0],[],[[43666,2,251]]]],[]],[4,163,0,0,0,[1,43666,3],[[0,233,0,148,149,[1,43667,0],[],[[43667,2,252]]],[0,235,0,152,236,[1,43667,1],[],[[43668,2,253]]],[0,238,0,239,240,[1,43668,0],[],[]],[0,74,0,75,241,[1,43669,0],[],[[43669,2,254]]]],[]],[4,165,0,0,0,[1,43669,3],[[0,233,0,148,149,[1,43669,1],[],[[43670,2,255]]],[0,235,0,152,236,[1,43670,1],[],[[43671,2,256]]],[0,238,0,239,240,[1,43671,0],[],[]],[0,74,0,75,241,[1,43671,1],[],[[43672,2,257]]]],[]],[4,167,0,0,0,[1,43672,3],[[0,233,0,148,149,[1,43672,1],[],[[43673,2,258]]],[0,235,0,152,236,[1,43673,0],[],[[43673,2,259]]],[0,238,0,239,240,[1,43674,0],[],[]],[0,74,0,75,241,[1,43674,0],[],[[43674,2,260]]]],[]],[4,169,0,0,0,[1,43675,2],[[0,233,0,148,149,[1,43675,0],[],[[43675,2,261]]],[0,235,0,152,236,[1,43676,0],[],[[43676,2,262]]],[0,238,0,239,240,[1,43676,1],[],[]],[0,74,0,75,241,[1,43677,0],[],[[43677,2,263]]]],[]],[4,171,0,0,0,[1,43677,3],[[0,233,0,148,149,[1,43677,1],[],[[43678,2,264]]],[0,235,0,152,236,[1,43678,0],[],[[43679,2,265]]],[0,238,0,239,240,[1,43679,0],[],[]],[0,74,0,75,241,[1,43679,1],[],[[43680,2,266]]]],[]],[4,173,0,0,0,[1,43680,2],[[0,233,0,148,149,[1,43680,1],[],[[43681,2,267]]],[0,235,0,152,236,[1,43681,0],[],[[43681,2,268]]],[0,238,0,239,240,[1,43681,1],[],[]],[0,74,0,75,241,[1,43682,0],[],[[43682,2,269]]]],[]]],[]],[0,129,0,130,241,[1,43683,0],[],[[43683,2,132],[43683,2,133]]],[3,270,0,0,0,[1,43683,66],[[4,271,0,0,0,[1,43683,7],[[0,119,0,120,272,[1,43684,6],[[0,97,0,98,122,[1,43685,4],[],[[43688,2,100],[43689,2,101]]],[0,74,0,75,102,[1,43689,0],[],[[43689,2,273]]]],[[43690,2,101]]],[0,74,0,75,102,[1,43690,0],[],[[43690,2,273]]]],[]],[4,274,0,0,0,[1,43690,7],[[0,119,0,120,272,[1,43691,5],[[0,97,0,98,122,[1,43692,3],[],[[43695,2,100],[43695,2,101]]],[0,74,0,75,102,[1,43695,1],[],[[43696,2,275]]]],[[43696,2,101]]],[0,74,0,75,102,[1,43696,1],[],[[43697,2,275]]]],[]],[4,276,0,0,0,[1,43697,6],[[0,119,0,120,272,[1,43697,5],[[0,97,0,98,122,[1,43698,3],[],[[43701,2,100],[43702,2,101]]],[0,74,0,75,102,[1,43702,0],[],[[43702,2,277]]]],[[43703,2,101]]],[0,74,0,75,102,[1,43703,0],[],[[43703,2,277]]]],[]],[4,278,0,0,0,[1,43703,7],[[0,119,0,120,272,[1,43703,6],[[0,97,0,98,122,[1,43704,4],[],[[43708,2,100],[43708,2,101]]],[0,74,0,75,102,[1,43708,0],[],[[43708,2,279]]]],[[43709,2,101]]],[0,74,0,75,102,[1,43709,0],[],[[43709,2,279]]]],[]],[4,280,0,0,0,[1,43710,7],[[0,119,0,120,272,[1,43710,6],[[0,97,0,98,122,[1,43711,4],[],[[43715,2,100],[43715,2,101]]],[0,74,0,75,102,[1,43716,0],[],[[43716,2,281]]]],[[43716,2,101]]],[0,74,0,75,102,[1,43717,0],[],[[43717,2,281]]]],[]],[4,282,0,0,0,[1,43717,6],[[0,119,0,120,272,[1,43717,6],[[0,97,0,98,122,[1,43718,4],[],[[43722,2,100],[43722,2,101]]],[0,74,0,75,102,[1,43722,0],[],[[43722,2,283]]]],[[43723,2,101]]],[0,74,0,75,102,[1,43723,0],[],[[43723,2,283]]]],[]],[4,284,0,0,0,[1,43724,5],[[0,119,0,120,272,[1,43724,5],[[0,97,0,98,122,[1,43725,3],[],[[43728,2,100],[43728,2,101]]],[0,74,0,75,102,[1,43728,0],[],[[43728,2,285]]]],[[43729,2,101]]],[0,74,0,75,102,[1,43729,0],[],[[43729,2,285]]]],[]],[4,286,0,0,0,[1,43730,6],[[0,119,0,120,272,[1,43730,5],[[0,97,0,98,122,[1,43731,3],[],[[43734,2,100],[43734,2,101]]],[0,74,0,75,102,[1,43735,0],[],[[43735,2,287]]]],[[43735,2,101]]],[0,74,0,75,102,[1,43736,0],[],[[43736,2,287]]]],[]],[4,288,0,0,0,[1,43736,7],[[0,119,0,120,272,[1,43736,6],[[0,97,0,98,122,[1,43737,4],[],[[43741,2,100],[43741,2,101]]],[0,74,0,75,102,[1,43741,1],[],[[43742,2,289]]]],[[43742,2,101]]],[0,74,0,75,102,[1,43742,1],[],[[43743,2,289]]]],[]],[4,290,0,0,0,[1,43743,6],[[0,119,0,120,272,[1,43743,5],[[0,97,0,98,122,[1,43744,3],[],[[43747,2,100],[43747,2,101]]],[0,74,0,75,102,[1,43748,0],[],[[43748,2,291]]]],[[43748,2,101]]],[0,74,0,75,102,[1,43749,0],[],[[43749,2,291]]]],[]]],[]]],[]]],[]]],[]]],[]]],[]]],[[43750,2,108],[43750,2,109]]],[0,63,0,64,292,[1,43750,570],[[0,114,0,115,293,[1,43751,569],[[0,294,0,295,0,[1,43751,569],[[0,296,0,297,45,[1,43752,0],[],[]],[0,298,0,299,0,[1,43752,1],[],[]],[0,51,0,52,300,[1,43753,4],[],[[43757,2,300]]],[0,86,0,56,57,[1,43757,185],[],[[43941,2,301],[43942,2,302]]],[0,74,0,75,92,[1,43942,1],[],[[43943,2,301]]],[0,51,0,52,303,[1,43943,3],[],[[43946,2,303]]],[0,86,0,56,57,[1,43946,23],[],[[43969,2,304],[43969,2,305]]],[0,74,0,75,92,[1,43969,1],[],[[43969,2,304]]],[0,51,0,52,306,[1,43970,6],[],[[43975,2,306]]],[0,86,0,56,57,[1,43976,312],[],[[44288,2,307],[44289,2,308]]],[0,74,0,75,92,[1,44289,0],[],[[44289,2,307]]],[0,51,0,52,309,[1,44289,5],[],[[44293,2,309]]],[0,86,0,56,57,[1,44294,25],[],[[44319,2,310],[44319,2,311]]],[0,74,0,75,92,[1,44319,1],[],[[44320,2,310]]]],[]]],[]]],[[44320,2,108],[44320,2,109]]],[0,312,0,313,0,[1,44321,806],[[0,35,0,36,314,[1,44321,1],[],[]],[0,296,0,297,45,[1,44322,0],[],[]],[0,298,0,299,0,[1,44322,1],[],[]],[0,51,0,52,315,[1,44323,3],[],[[44325,2,315]]],[0,55,0,56,87,[1,44326,686],[],[[45012,2,316]]],[0,90,0,91,0,[1,45012,115],[],[]]],[]],[0,63,0,64,317,[1,45127,37],[[0,114,0,115,318,[1,45128,36],[[0,319,0,320,0,[1,45128,36],[[3,67,0,0,0,[1,45129,35],[[4,68,0,0,0,[1,45129,35],[[0,119,0,120,121,[1,45129,8],[[0,97,0,98,122,[1,45130,5],[],[[45135,2,100],[45136,2,101]]],[0,74,0,75,102,[1,45136,0],[],[[45136,2,321]]]],[[45137,2,101]]],[0,74,0,75,102,[1,45137,0],[],[[45137,2,321]]],[0,104,0,105,106,[1,45138,0],[],[[45138,2,107]]],[0,123,0,124,102,[1,45138,1],[],[[45139,2,322]]],[0,126,0,127,102,[1,45139,0],[],[[45140,2,323]]],[0,142,0,0,324,[1,45140,24],[[0,129,0,130,144,[1,45141,1],[],[[45141,2,132],[45142,2,133]]],[3,145,0,0,0,[1,45142,22],[[4,146,0,0,0,[1,45142,2],[[0,147,0,148,149,[1,45142,1],[],[[45143,2,325]]],[0,151,0,152,153,[1,45143,0],[],[[45143,2,326]]],[0,104,0,105,155,[1,45144,0],[],[[45144,2,156]]]],[]],[4,157,0,0,0,[1,45144,2],[[0,147,0,148,149,[1,45144,1],[],[[45145,2,327]]],[0,151,0,152,153,[1,45145,0],[],[[45145,2,326]]],[0,104,0,105,155,[1,45146,0],[],[[45146,2,156]]]],[]],[4,159,0,0,0,[1,45146,2],[[0,147,0,148,149,[1,45146,1],[],[[45147,2,328]]],[0,151,0,152,153,[1,45147,1],[],[[45148,2,326]]],[0,104,0,105,155,[1,45148,0],[],[[45148,2,156]]]],[]],[4,161,0,0,0,[1,45148,3],[[0,147,0,148,149,[1,45149,0],[],[[45149,2,329]]],[0,151,0,152,153,[1,45149,1],[],[[45150,2,326]]],[0,104,0,105,155,[1,45150,0],[],[[45150,2,156]]]],[]],[4,163,0,0,0,[1,45151,2],[[0,147,0,148,149,[1,45151,0],[],[[45151,2,330]]],[0,151,0,152,153,[1,45152,0],[],[[45152,2,326]]],[0,104,0,105,155,[1,45152,1],[],[[45153,2,156]]]],[]],[4,165,0,0,0,[1,45153,2],[[0,147,0,148,149,[1,45153,0],[],[[45154,2,331]]],[0,151,0,152,153,[1,45154,0],[],[[45154,2,326]]],[0,104,0,105,155,[1,45154,1],[],[[45155,2,156]]]],[]],[4,167,0,0,0,[1,45155,2],[[0,147,0,148,149,[1,45155,1],[],[[45156,2,332]]],[0,151,0,152,153,[1,45156,0],[],[[45156,2,326]]],[0,104,0,105,155,[1,45157,0],[],[[45157,2,156]]]],[]],[4,169,0,0,0,[1,45157,2],[[0,147,0,148,149,[1,45157,1],[],[[45158,2,333]]],[0,151,0,152,153,[1,45158,0],[],[[45158,2,326]]],[0,104,0,105,155,[1,45159,0],[],[[45159,2,156]]]],[]],[4,171,0,0,0,[1,45159,2],[[0,147,0,148,149,[1,45159,1],[],[[45160,2,334]]],[0,151,0,152,153,[1,45160,1],[],[[45161,2,326]]],[0,104,0,105,155,[1,45161,0],[],[[45161,2,156]]]],[]],[4,173,0,0,0,[1,45161,2],[[0,147,0,148,149,[1,45162,0],[],[[45162,2,335]]],[0,151,0,152,153,[1,45162,1],[],[[45163,2,326]]],[0,104,0,105,155,[1,45163,0],[],[[45163,2,156]]]],[]]],[]]],[]]],[]]],[]]],[]]],[]]],[[45164,2,108],[45164,2,109]]],[0,110,0,111,112,[1,45165,0],[],[]],[0,63,0,64,336,[1,45165,11],[[0,114,0,115,337,[1,45166,10],[[0,338,0,339,340,[1,45166,9],[[3,67,0,0,0,[1,45167,8],[[4,68,0,0,0,[1,45167,8],[[0,119,0,120,191,[1,45167,5],[[0,97,0,98,122,[1,45168,3],[],[[45171,2,100],[45171,2,101]]],[0,74,0,75,102,[1,45172,0],[],[[45172,2,341]]]],[[45172,2,101]]],[0,74,0,75,102,[1,45173,0],[],[[45173,2,341]]],[0,193,0,194,195,[1,45173,1],[],[[45174,2,342]]],[0,197,0,194,198,[1,45174,0],[],[[45175,2,343]]],[0,104,0,105,344,[1,45175,0],[],[[45175,2,345]]]],[]]],[]]],[]]],[]]],[[45176,2,108],[45176,2,109]]],[0,110,0,111,112,[1,45176,0],[],[]],[0,346,0,347,34,[1,45177,0],[],[[45177,2,348],[45177,2,349]]]],[]],[4,350,0,0,0,[1,45177,12502],[[0,32,0,351,34,[1,45178,8386],[[0,35,0,36,37,[1,45178,1],[],[]],[0,35,0,36,38,[1,45179,0],[],[]],[0,39,0,40,41,[1,45179,1],[],[[45180,2,352]]],[0,43,0,44,45,[1,45181,0],[],[[45181,2,352]]],[0,46,0,47,48,[1,45181,345],[],[[45182,2,49],[45526,2,353]]],[0,51,0,52,53,[1,45527,72],[],[[45599,2,354]]],[0,55,0,56,57,[1,45599,1963],[],[[47562,2,355]]],[0,59,0,60,61,[1,47562,6002],[],[[53563,2,62]]]],[]],[0,63,0,64,65,[1,53564,572],[[0,65,0,66,0,[1,53565,571],[[3,67,0,0,0,[1,53565,571],[[4,68,0,0,0,[1,53566,570],[[0,69,0,0,70,[1,53566,570],[[0,71,0,72,73,[1,53567,558],[[0,74,0,75,76,[1,53568,0],[],[[53568,2,77]]],[0,78,0,40,79,[1,53568,1],[],[[53569,2,356]]],[0,46,0,47,81,[1,53569,422],[],[[53570,2,82],[53991,2,357]]],[0,51,0,52,84,[1,53991,18],[],[[54009,2,85]]],[0,86,0,56,87,[1,54010,0],[],[[54010,2,88],[54010,2,89]]],[0,90,0,91,0,[1,54011,114],[],[]],[0,74,0,75,92,[1,54125,0],[],[[54125,2,88]]]],[[54126,2,93]]],[0,94,0,95,96,[1,54126,0],[],[]],[0,97,0,98,99,[1,54126,8],[],[[54134,2,100],[54134,2,101]]],[0,74,0,75,102,[1,54134,1],[],[[54134,2,358]]],[0,104,0,105,106,[1,54135,0],[],[[54135,2,107]]]],[]]],[]]],[]]],[]]],[[54136,2,108],[54136,2,109]]],[0,110,0,111,112,[1,54137,0],[],[]],[0,63,0,64,113,[1,54137,16],[[0,114,0,115,116,[1,54138,15],[[0,117,0,118,34,[1,54138,15],[[3,67,0,0,0,[1,54139,14],[[4,68,0,0,0,[1,54139,14],[[0,119,0,120,121,[1,54139,9],[[0,97,0,98,122,[1,54140,7],[],[[54147,2,100],[54147,2,101]]],[0,74,0,75,102,[1,54147,1],[],[[54148,2,358]]]],[[54148,2,101]]],[0,74,0,75,102,[1,54148,1],[],[[54149,2,358]]],[0,104,0,105,106,[1,54149,1],[],[[54149,2,107]]],[0,123,0,124,102,[1,54150,0],[],[[54150,2,359]]],[0,126,0,127,102,[1,54150,1],[],[[54151,2,360]]],[0,129,0,130,131,[1,54151,1],[],[[54152,2,361],[54152,2,362]]],[0,134,0,135,136,[1,54152,1],[],[[54153,2,137]]]],[]]],[]]],[]]],[]]],[[54153,2,108],[54153,2,109]]],[0,110,0,111,112,[1,54154,0],[],[]],[0,63,0,64,138,[1,54154,59],[[0,114,0,115,139,[1,54155,58],[[0,140,0,141,0,[1,54155,57],[[3,67,0,0,0,[1,54156,56],[[4,68,0,0,0,[1,54156,56],[[0,119,0,120,121,[1,54156,7],[[0,97,0,98,122,[1,54157,5],[],[[54162,2,100],[54162,2,101]]],[0,74,0,75,102,[1,54163,0],[],[[54163,2,358]]]],[[54164,2,101]]],[0,74,0,75,102,[1,54164,0],[],[[54164,2,358]]],[0,104,0,105,106,[1,54165,0],[],[[54165,2,107]]],[0,123,0,124,102,[1,54165,1],[],[[54166,2,359]]],[0,126,0,127,102,[1,54166,1],[],[[54167,2,360]]],[0,142,0,0,143,[1,54167,45],[[0,129,0,130,144,[1,54168,0],[],[[54168,2,361],[54168,2,362]]],[3,145,0,0,0,[1,54169,43],[[4,146,0,0,0,[1,54169,2],[[0,147,0,148,149,[1,54169,0],[],[[54169,2,363]]],[0,151,0,152,153,[1,54170,0],[],[[54170,2,154]]],[0,104,0,105,155,[1,54170,1],[],[[54171,2,156]]]],[]],[4,157,0,0,0,[1,54171,2],[[0,147,0,148,149,[1,54171,0],[],[[54172,2,364]]],[0,151,0,152,153,[1,54172,0],[],[[54172,2,154]]],[0,104,0,105,155,[1,54172,1],[],[[54173,2,156]]]],[]],[4,159,0,0,0,[1,54173,2],[[0,147,0,148,149,[1,54173,1],[],[[54174,2,365]]],[0,151,0,152,153,[1,54174,1],[],[[54175,2,154]]],[0,104,0,105,155,[1,54175,0],[],[[54175,2,156]]]],[]],[4,161,0,0,0,[1,54175,3],[[0,147,0,148,149,[1,54176,0],[],[[54176,2,366]]],[0,151,0,152,153,[1,54176,1],[],[[54177,2,154]]],[0,104,0,105,155,[1,54177,0],[],[[54177,2,156]]]],[]],[4,163,0,0,0,[1,54178,2],[[0,147,0,148,149,[1,54178,0],[],[[54178,2,367]]],[0,151,0,152,153,[1,54179,0],[],[[54179,2,154]]],[0,104,0,105,155,[1,54179,1],[],[[54180,2,156]]]],[]],[4,165,0,0,0,[1,54180,2],[[0,147,0,148,149,[1,54180,0],[],[[54181,2,368]]],[0,151,0,152,153,[1,54181,0],[],[[54181,2,154]]],[0,104,0,105,155,[1,54181,1],[],[[54182,2,156]]]],[]],[4,167,0,0,0,[1,54182,2],[[0,147,0,148,149,[1,54182,1],[],[[54183,2,369]]],[0,151,0,152,153,[1,54183,0],[],[[54183,2,154]]],[0,104,0,105,155,[1,54184,0],[],[[54184,2,156]]]],[]],[4,169,0,0,0,[1,54184,2],[[0,147,0,148,149,[1,54184,1],[],[[54185,2,370]]],[0,151,0,152,153,[1,54185,0],[],[[54186,2,154]]],[0,104,0,105,155,[1,54186,0],[],[[54186,2,156]]]],[]],[4,171,0,0,0,[1,54186,2],[[0,147,0,148,149,[1,54187,0],[],[[54187,2,371]]],[0,151,0,152,153,[1,54187,1],[],[[54188,2,154]]],[0,104,0,105,155,[1,54188,0],[],[[54188,2,156]]]],[]],[4,173,0,0,0,[1,54189,2],[[0,147,0,148,149,[1,54189,0],[],[[54189,2,372]]],[0,151,0,152,153,[1,54190,0],[],[[54190,2,154]]],[0,104,0,105,155,[1,54190,1],[],[[54190,2,156]]]],[]],[4,373,0,0,0,[1,54191,2],[[0,147,0,148,149,[1,54191,0],[],[[54191,2,374]]],[0,151,0,152,153,[1,54192,0],[],[[54192,2,154]]],[0,104,0,105,155,[1,54192,1],[],[[54193,2,156]]]],[]],[4,375,0,0,0,[1,54193,2],[[0,147,0,148,149,[1,54193,0],[],[[54194,2,376]]],[0,151,0,152,153,[1,54194,0],[],[[54194,2,154]]],[0,104,0,105,155,[1,54194,1],[],[[54195,2,156]]]],[]],[4,377,0,0,0,[1,54195,2],[[0,147,0,148,149,[1,54195,1],[],[[54196,2,378]]],[0,151,0,152,153,[1,54196,0],[],[[54196,2,154]]],[0,104,0,105,155,[1,54197,0],[],[[54197,2,156]]]],[]],[4,379,0,0,0,[1,54197,2],[[0,147,0,148,149,[1,54197,1],[],[[54198,2,380]]],[0,151,0,152,153,[1,54198,0],[],[[54198,2,154]]],[0,104,0,105,155,[1,54199,0],[],[[54199,2,156]]]],[]],[4,381,0,0,0,[1,54199,2],[[0,147,0,148,149,[1,54199,1],[],[[54200,2,382]]],[0,151,0,152,153,[1,54200,0],[],[[54201,2,154]]],[0,104,0,105,155,[1,54201,0],[],[[54201,2,156]]]],[]],[4,383,0,0,0,[1,54201,2],[[0,147,0,148,149,[1,54202,0],[],[[54202,2,384]]],[0,151,0,152,153,[1,54202,1],[],[[54203,2,154]]],[0,104,0,105,155,[1,54203,0],[],[[54203,2,156]]]],[]],[4,385,0,0,0,[1,54204,2],[[0,147,0,148,149,[1,54204,0],[],[[54204,2,386]]],[0,151,0,152,153,[1,54204,1],[],[[54205,2,154]]],[0,104,0,105,155,[1,54205,0],[],[[54205,2,156]]]],[]],[4,387,0,0,0,[1,54206,2],[[0,147,0,148,149,[1,54206,0],[],[[54206,2,388]]],[0,151,0,152,153,[1,54207,0],[],[[54207,2,154]]],[0,104,0,105,155,[1,54207,1],[],[[54208,2,156]]]],[]],[4,389,0,0,0,[1,54208,2],[[0,147,0,148,149,[1,54208,0],[],[[54209,2,390]]],[0,151,0,152,153,[1,54209,0],[],[[54209,2,154]]],[0,104,0,105,155,[1,54209,1],[],[[54210,2,156]]]],[]],[4,391,0,0,0,[1,54210,2],[[0,147,0,148,149,[1,54210,1],[],[[54211,2,392]]],[0,151,0,152,153,[1,54211,0],[],[[54211,2,154]]],[0,104,0,105,155,[1,54211,1],[],[[54212,2,156]]]],[]]],[]]],[]]],[]]],[]]],[]]],[]]],[[54213,2,108],[54213,2,109]]],[0,110,0,111,112,[1,54213,0],[],[]],[0,63,0,64,175,[1,54214,58],[[0,114,0,115,176,[1,54214,58],[[0,177,0,178,179,[1,54215,57],[[3,67,0,0,0,[1,54215,57],[[4,68,0,0,0,[1,54216,56],[[0,119,0,120,121,[1,54216,7],[[0,97,0,98,122,[1,54217,5],[],[[54222,2,100],[54222,2,101]]],[0,74,0,75,102,[1,54223,0],[],[[54223,2,358]]]],[[54223,2,101]]],[0,74,0,75,102,[1,54224,0],[],[[54224,2,358]]],[0,104,0,105,106,[1,54224,1],[],[[54225,2,107]]],[0,123,0,124,102,[1,54225,1],[],[[54226,2,359]]],[0,126,0,127,102,[1,54226,0],[],[[54227,2,360]]],[0,180,0,0,181,[1,54227,45],[[0,129,0,130,144,[1,54228,0],[],[[54228,2,361],[54228,2,362]]],[3,145,0,0,0,[1,54228,43],[[4,146,0,0,0,[1,54229,2],[[0,147,0,148,149,[1,54229,0],[],[[54229,2,363]]],[0,151,0,152,182,[1,54230,0],[],[[54230,2,183]]],[0,104,0,105,184,[1,54230,1],[],[[54230,2,185]]]],[]],[4,157,0,0,0,[1,54231,2],[[0,147,0,148,149,[1,54231,0],[],[[54231,2,364]]],[0,151,0,152,182,[1,54232,0],[],[[54232,2,183]]],[0,104,0,105,184,[1,54232,1],[],[[54233,2,185]]]],[]],[4,159,0,0,0,[1,54233,2],[[0,147,0,148,149,[1,54233,1],[],[[54234,2,365]]],[0,151,0,152,182,[1,54234,0],[],[[54234,2,183]]],[0,104,0,105,184,[1,54234,1],[],[[54235,2,185]]]],[]],[4,161,0,0,0,[1,54235,2],[[0,147,0,148,149,[1,54235,1],[],[[54236,2,366]]],[0,151,0,152,182,[1,54236,0],[],[[54236,2,183]]],[0,104,0,105,184,[1,54237,0],[],[[54237,2,185]]]],[]],[4,163,0,0,0,[1,54237,2],[[0,147,0,148,149,[1,54237,1],[],[[54238,2,367]]],[0,151,0,152,182,[1,54238,0],[],[[54239,2,183]]],[0,104,0,105,184,[1,54239,0],[],[[54239,2,185]]]],[]],[4,165,0,0,0,[1,54239,2],[[0,147,0,148,149,[1,54239,1],[],[[54240,2,368]]],[0,151,0,152,182,[1,54240,1],[],[[54241,2,183]]],[0,104,0,105,184,[1,54241,0],[],[[54241,2,185]]]],[]],[4,167,0,0,0,[1,54241,3],[[0,147,0,148,149,[1,54242,0],[],[[54242,2,369]]],[0,151,0,152,182,[1,54242,1],[],[[54243,2,183]]],[0,104,0,105,184,[1,54243,0],[],[[54243,2,185]]]],[]],[4,169,0,0,0,[1,54244,2],[[0,147,0,148,149,[1,54244,0],[],[[54244,2,370]]],[0,151,0,152,182,[1,54245,0],[],[[54245,2,183]]],[0,104,0,105,184,[1,54245,1],[],[[54245,2,185]]]],[]],[4,171,0,0,0,[1,54246,2],[[0,147,0,148,149,[1,54246,0],[],[[54246,2,371]]],[0,151,0,152,182,[1,54247,0],[],[[54247,2,183]]],[0,104,0,105,184,[1,54247,1],[],[[54248,2,185]]]],[]],[4,173,0,0,0,[1,54248,2],[[0,147,0,148,149,[1,54248,0],[],[[54249,2,372]]],[0,151,0,152,182,[1,54249,0],[],[[54249,2,183]]],[0,104,0,105,184,[1,54249,1],[],[[54250,2,185]]]],[]],[4,373,0,0,0,[1,54250,2],[[0,147,0,148,149,[1,54250,1],[],[[54251,2,374]]],[0,151,0,152,182,[1,54251,0],[],[[54252,2,183]]],[0,104,0,105,184,[1,54252,0],[],[[54252,2,185]]]],[]],[4,375,0,0,0,[1,54252,2],[[0,147,0,148,149,[1,54253,0],[],[[54253,2,376]]],[0,151,0,152,182,[1,54253,1],[],[[54254,2,183]]],[0,104,0,105,184,[1,54254,0],[],[[54254,2,185]]]],[]],[4,377,0,0,0,[1,54254,2],[[0,147,0,148,149,[1,54255,0],[],[[54255,2,378]]],[0,151,0,152,182,[1,54255,1],[],[[54256,2,183]]],[0,104,0,105,184,[1,54256,0],[],[[54256,2,185]]]],[]],[4,379,0,0,0,[1,54257,2],[[0,147,0,148,149,[1,54257,0],[],[[54257,2,380]]],[0,151,0,152,182,[1,54258,0],[],[[54258,2,183]]],[0,104,0,105,184,[1,54258,1],[],[[54258,2,185]]]],[]],[4,381,0,0,0,[1,54259,2],[[0,147,0,148,149,[1,54259,0],[],[[54259,2,382]]],[0,151,0,152,182,[1,54260,0],[],[[54260,2,183]]],[0,104,0,105,184,[1,54260,1],[],[[54261,2,185]]]],[]],[4,383,0,0,0,[1,54261,2],[[0,147,0,148,149,[1,54261,0],[],[[54262,2,384]]],[0,151,0,152,182,[1,54262,0],[],[[54262,2,183]]],[0,104,0,105,184,[1,54262,1],[],[[54263,2,185]]]],[]],[4,385,0,0,0,[1,54263,2],[[0,147,0,148,149,[1,54263,1],[],[[54264,2,386]]],[0,151,0,152,182,[1,54264,0],[],[[54264,2,183]]],[0,104,0,105,184,[1,54264,1],[],[[54265,2,185]]]],[]],[4,387,0,0,0,[1,54265,2],[[0,147,0,148,149,[1,54265,1],[],[[54266,2,388]]],[0,151,0,152,182,[1,54266,0],[],[[54266,2,183]]],[0,104,0,105,184,[1,54267,0],[],[[54267,2,185]]]],[]],[4,389,0,0,0,[1,54267,2],[[0,147,0,148,149,[1,54267,1],[],[[54268,2,390]]],[0,151,0,152,182,[1,54268,0],[],[[54268,2,183]]],[0,104,0,105,184,[1,54269,0],[],[[54269,2,185]]]],[]],[4,391,0,0,0,[1,54269,2],[[0,147,0,148,149,[1,54269,1],[],[[54270,2,392]]],[0,151,0,152,182,[1,54270,1],[],[[54271,2,183]]],[0,104,0,105,184,[1,54271,0],[],[[54271,2,185]]]],[]]],[]]],[]]],[]]],[]]],[]]],[]]],[[54272,2,108],[54272,2,109]]],[0,110,0,111,112,[1,54272,1],[],[]],[0,63,0,64,186,[1,54273,11],[[0,114,0,115,187,[1,54273,11],[[0,188,0,189,190,[1,54274,10],[[3,67,0,0,0,[1,54275,9],[[4,68,0,0,0,[1,54276,8],[[0,119,0,120,191,[1,54276,5],[[0,97,0,98,122,[1,54277,3],[],[[54280,2,100],[54280,2,101]]],[0,74,0,75,102,[1,54280,1],[],[[54281,2,393]]]],[[54281,2,101]]],[0,74,0,75,102,[1,54281,1],[],[[54282,2,393]]],[0,193,0,194,195,[1,54282,0],[],[[54283,2,394]]],[0,197,0,194,198,[1,54283,0],[],[[54283,2,199]]],[0,104,0,105,200,[1,54284,0],[],[[54284,2,201]]]],[]]],[]]],[]]],[]]],[[54285,2,108],[54285,2,109]]],[0,110,0,111,112,[1,54285,0],[],[]],[0,63,0,64,202,[1,54285,58],[[0,114,0,115,203,[1,54286,57],[[0,204,0,205,0,[1,54286,57],[[3,67,0,0,0,[1,54287,56],[[4,68,0,0,0,[1,54287,56],[[0,119,0,120,206,[1,54287,8],[[0,97,0,98,122,[1,54288,5],[],[[54293,2,100],[54294,2,101]]],[0,74,0,75,102,[1,54294,0],[],[[54294,2,395]]]],[[54295,2,101]]],[0,126,0,127,102,[1,54295,1],[],[[54296,2,396]]],[0,129,0,130,209,[1,54296,1],[],[[54296,2,397],[54297,2,398]]],[0,74,0,75,102,[1,54297,0],[],[[54297,2,395]]],[0,119,0,120,212,[1,54298,31],[[0,97,0,98,122,[1,54299,28],[],[[54326,2,100],[54327,2,101]]],[0,74,0,75,102,[1,54327,1],[],[[54328,2,399]]]],[[54329,2,101]]],[0,126,0,127,102,[1,54329,3],[],[[54333,2,400]]],[0,129,0,130,215,[1,54333,1],[],[[54333,2,401],[54334,2,402]]],[0,74,0,75,102,[1,54334,1],[],[[54334,2,399]]],[0,119,0,120,218,[1,54335,6],[[0,97,0,98,122,[1,54336,4],[],[[54340,2,100],[54340,2,101]]],[0,74,0,75,102,[1,54340,0],[],[[54340,2,219]]]],[[54341,2,101]]],[0,126,0,127,102,[1,54341,0],[],[[54342,2,220]]],[0,129,0,130,221,[1,54342,0],[],[[54342,2,222],[54342,2,223]]],[0,74,0,75,102,[1,54343,0],[],[[54343,2,219]]]],[]]],[]]],[]]],[]]],[[54344,2,108],[54344,2,109]]],[0,63,0,64,224,[1,54344,190],[[0,114,0,115,225,[1,54344,190],[[0,226,0,227,0,[1,54345,189],[[3,67,0,0,0,[1,54345,189],[[4,68,0,0,0,[1,54346,187],[[0,119,0,120,121,[1,54346,7],[[0,97,0,98,122,[1,54347,5],[],[[54352,2,100],[54352,2,101]]],[0,74,0,75,102,[1,54352,1],[],[[54353,2,358]]]],[[54353,2,101]]],[0,104,0,105,106,[1,54353,1],[],[[54354,2,107]]],[0,126,0,127,102,[1,54354,1],[],[[54355,2,360]]],[0,228,0,0,229,[1,54355,178],[[0,129,0,130,144,[1,54356,1],[],[[54356,2,361],[54357,2,362]]],[0,230,0,231,0,[1,54357,0],[],[[54357,2,232]]],[3,145,0,0,0,[1,54357,54],[[4,146,0,0,0,[1,54357,3],[[0,233,0,148,149,[1,54358,0],[],[[54358,2,403]]],[0,235,0,152,236,[1,54358,1],[],[[54359,2,237]]],[0,238,0,239,240,[1,54359,0],[],[]],[0,74,0,75,241,[1,54360,0],[],[[54360,2,242]]]],[]],[4,157,0,0,0,[1,54360,3],[[0,233,0,148,149,[1,54360,1],[],[[54361,2,404]]],[0,235,0,152,236,[1,54361,0],[],[[54361,2,405]]],[0,238,0,239,240,[1,54362,0],[],[]],[0,74,0,75,241,[1,54362,1],[],[[54362,2,406]]]],[]],[4,159,0,0,0,[1,54363,2],[[0,233,0,148,149,[1,54363,0],[],[[54363,2,407]]],[0,235,0,152,236,[1,54364,0],[],[[54364,2,408]]],[0,238,0,239,240,[1,54364,1],[],[]],[0,74,0,75,241,[1,54365,0],[],[[54365,2,409]]]],[]],[4,161,0,0,0,[1,54365,3],[[0,233,0,148,149,[1,54366,0],[],[[54366,2,410]]],[0,235,0,152,236,[1,54366,1],[],[[54367,2,411]]],[0,238,0,239,240,[1,54367,0],[],[]],[0,74,0,75,241,[1,54367,1],[],[[54368,2,412]]]],[]],[4,163,0,0,0,[1,54368,3],[[0,233,0,148,149,[1,54368,1],[],[[54369,2,413]]],[0,235,0,152,236,[1,54369,0],[],[[54369,2,414]]],[0,238,0,239,240,[1,54370,0],[],[]],[0,74,0,75,241,[1,54370,0],[],[[54370,2,415]]]],[]],[4,165,0,0,0,[1,54371,2],[[0,233,0,148,149,[1,54371,0],[],[[54371,2,416]]],[0,235,0,152,236,[1,54372,0],[],[[54372,2,417]]],[0,238,0,239,240,[1,54372,0],[],[]],[0,74,0,75,241,[1,54373,0],[],[[54373,2,418]]]],[]],[4,167,0,0,0,[1,54373,3],[[0,233,0,148,149,[1,54373,1],[],[[54374,2,419]]],[0,235,0,152,236,[1,54374,0],[],[[54375,2,420]]],[0,238,0,239,240,[1,54375,0],[],[]],[0,74,0,75,241,[1,54375,1],[],[[54376,2,421]]]],[]],[4,169,0,0,0,[1,54376,3],[[0,233,0,148,149,[1,54376,1],[],[[54377,2,422]]],[0,235,0,152,236,[1,54377,1],[],[[54378,2,244]]],[0,238,0,239,240,[1,54378,0],[],[]],[0,74,0,75,241,[1,54379,0],[],[[54379,2,423]]]],[]],[4,171,0,0,0,[1,54379,3],[[0,233,0,148,149,[1,54379,1],[],[[54380,2,424]]],[0,235,0,152,236,[1,54380,0],[],[[54380,2,425]]],[0,238,0,239,240,[1,54381,0],[],[]],[0,74,0,75,241,[1,54381,1],[],[[54381,2,426]]]],[]],[4,173,0,0,0,[1,54382,2],[[0,233,0,148,149,[1,54382,0],[],[[54382,2,427]]],[0,235,0,152,236,[1,54383,0],[],[[54383,2,428]]],[0,238,0,239,240,[1,54383,1],[],[]],[0,74,0,75,241,[1,54384,0],[],[[54384,2,429]]]],[]],[4,373,0,0,0,[1,54384,3],[[0,233,0,148,149,[1,54385,0],[],[[54385,2,430]]],[0,235,0,152,236,[1,54385,1],[],[[54386,2,247]]],[0,238,0,239,240,[1,54386,0],[],[]],[0,74,0,75,241,[1,54386,1],[],[[54387,2,431]]]],[]],[4,375,0,0,0,[1,54387,3],[[0,233,0,148,149,[1,54387,1],[],[[54388,2,432]]],[0,235,0,152,236,[1,54388,0],[],[[54388,2,250]]],[0,238,0,239,240,[1,54389,0],[],[]],[0,74,0,75,241,[1,54389,1],[],[[54389,2,433]]]],[]],[4,377,0,0,0,[1,54390,2],[[0,233,0,148,149,[1,54390,0],[],[[54390,2,434]]],[0,235,0,152,236,[1,54391,0],[],[[54391,2,253]]],[0,238,0,239,240,[1,54391,1],[],[]],[0,74,0,75,241,[1,54392,0],[],[[54392,2,435]]]],[]],[4,379,0,0,0,[1,54392,3],[[0,233,0,148,149,[1,54393,0],[],[[54393,2,436]]],[0,235,0,152,236,[1,54393,1],[],[[54394,2,437]]],[0,238,0,239,240,[1,54394,0],[],[]],[0,74,0,75,241,[1,54394,1],[],[[54395,2,438]]]],[]],[4,381,0,0,0,[1,54395,3],[[0,233,0,148,149,[1,54395,1],[],[[54396,2,439]]],[0,235,0,152,236,[1,54396,0],[],[[54396,2,256]]],[0,238,0,239,240,[1,54397,0],[],[]],[0,74,0,75,241,[1,54397,1],[],[[54397,2,440]]]],[]],[4,383,0,0,0,[1,54398,2],[[0,233,0,148,149,[1,54398,0],[],[[54398,2,441]]],[0,235,0,152,236,[1,54399,0],[],[[54399,2,442]]],[0,238,0,239,240,[1,54399,1],[],[]],[0,74,0,75,241,[1,54400,0],[],[[54400,2,443]]]],[]],[4,385,0,0,0,[1,54400,3],[[0,233,0,148,149,[1,54400,1],[],[[54401,2,444]]],[0,235,0,152,236,[1,54401,1],[],[[54402,2,259]]],[0,238,0,239,240,[1,54402,0],[],[]],[0,74,0,75,241,[1,54402,1],[],[[54403,2,445]]]],[]],[4,387,0,0,0,[1,54403,3],[[0,233,0,148,149,[1,54403,1],[],[[54404,2,446]]],[0,235,0,152,236,[1,54404,0],[],[[54404,2,262]]],[0,238,0,239,240,[1,54405,0],[],[]],[0,74,0,75,241,[1,54405,1],[],[[54406,2,447]]]],[]],[4,389,0,0,0,[1,54406,2],[[0,233,0,148,149,[1,54406,0],[],[[54407,2,448]]],[0,235,0,152,236,[1,54407,0],[],[[54407,2,265]]],[0,238,0,239,240,[1,54407,1],[],[]],[0,74,0,75,241,[1,54408,0],[],[[54408,2,449]]]],[]],[4,391,0,0,0,[1,54408,3],[[0,233,0,148,149,[1,54409,0],[],[[54409,2,450]]],[0,235,0,152,236,[1,54409,1],[],[[54410,2,268]]],[0,238,0,239,240,[1,54410,0],[],[]],[0,74,0,75,241,[1,54411,0],[],[[54411,2,451]]]],[]]],[]],[0,129,0,130,241,[1,54411,1],[],[[54412,2,361],[54412,2,362]]],[3,270,0,0,0,[1,54412,121],[[4,271,0,0,0,[1,54412,6],[[0,119,0,120,272,[1,54412,5],[[0,97,0,98,122,[1,54413,3],[],[[54416,2,100],[54416,2,101]]],[0,74,0,75,102,[1,54417,0],[],[[54417,2,452]]]],[[54417,2,101]]],[0,74,0,75,102,[1,54418,0],[],[[54418,2,452]]]],[]],[4,453,0,0,0,[1,54418,6],[[0,119,0,120,272,[1,54418,5],[[0,97,0,98,122,[1,54419,3],[],[[54422,2,100],[54422,2,101]]],[0,74,0,75,102,[1,54422,1],[],[[54423,2,454]]]],[[54423,2,101]]],[0,74,0,75,102,[1,54423,1],[],[[54424,2,454]]]],[]],[4,455,0,0,0,[1,54424,5],[[0,119,0,120,272,[1,54424,5],[[0,97,0,98,122,[1,54425,3],[],[[54427,2,100],[54428,2,101]]],[0,74,0,75,102,[1,54428,0],[],[[54428,2,456]]]],[[54429,2,101]]],[0,74,0,75,102,[1,54429,0],[],[[54429,2,456]]]],[]],[4,457,0,0,0,[1,54429,6],[[0,119,0,120,272,[1,54430,5],[[0,97,0,98,122,[1,54431,3],[],[[54434,2,100],[54434,2,101]]],[0,74,0,75,102,[1,54434,0],[],[[54434,2,458]]]],[[54435,2,101]]],[0,74,0,75,102,[1,54435,0],[],[[54435,2,458]]]],[]],[4,459,0,0,0,[1,54436,6],[[0,119,0,120,272,[1,54436,5],[[0,97,0,98,122,[1,54437,3],[],[[54440,2,100],[54440,2,101]]],[0,74,0,75,102,[1,54440,0],[],[[54440,2,460]]]],[[54441,2,101]]],[0,74,0,75,102,[1,54441,0],[],[[54441,2,460]]]],[]],[4,461,0,0,0,[1,54442,6],[[0,119,0,120,272,[1,54442,5],[[0,97,0,98,122,[1,54443,3],[],[[54446,2,100],[54446,2,101]]],[0,74,0,75,102,[1,54447,0],[],[[54447,2,462]]]],[[54447,2,101]]],[0,74,0,75,102,[1,54448,0],[],[[54448,2,462]]]],[]],[4,463,0,0,0,[1,54448,6],[[0,119,0,120,272,[1,54448,5],[[0,97,0,98,122,[1,54449,3],[],[[54452,2,100],[54452,2,101]]],[0,74,0,75,102,[1,54453,0],[],[[54453,2,464]]]],[[54453,2,101]]],[0,74,0,75,102,[1,54454,0],[],[[54454,2,464]]]],[]],[4,274,0,0,0,[1,54454,7],[[0,119,0,120,272,[1,54454,6],[[0,97,0,98,122,[1,54455,4],[],[[54459,2,100],[54459,2,101]]],[0,74,0,75,102,[1,54459,1],[],[[54460,2,465]]]],[[54460,2,101]]],[0,74,0,75,102,[1,54460,1],[],[[54461,2,465]]]],[]],[4,466,0,0,0,[1,54461,6],[[0,119,0,120,272,[1,54461,5],[[0,97,0,98,122,[1,54462,3],[],[[54465,2,100],[54465,2,101]]],[0,74,0,75,102,[1,54465,1],[],[[54465,2,467]]]],[[54466,2,101]]],[0,74,0,75,102,[1,54466,1],[],[[54466,2,467]]]],[]],[4,468,0,0,0,[1,54467,6],[[0,119,0,120,272,[1,54467,5],[[0,97,0,98,122,[1,54468,3],[],[[54471,2,100],[54471,2,101]]],[0,74,0,75,102,[1,54471,0],[],[[54471,2,469]]]],[[54472,2,101]]],[0,74,0,75,102,[1,54472,0],[],[[54472,2,469]]]],[]],[4,276,0,0,0,[1,54473,5],[[0,119,0,120,272,[1,54473,5],[[0,97,0,98,122,[1,54474,3],[],[[54476,2,100],[54477,2,101]]],[0,74,0,75,102,[1,54477,0],[],[[54477,2,470]]]],[[54478,2,101]]],[0,74,0,75,102,[1,54478,0],[],[[54478,2,470]]]],[]],[4,278,0,0,0,[1,54479,6],[[0,119,0,120,272,[1,54479,5],[[0,97,0,98,122,[1,54480,3],[],[[54483,2,100],[54483,2,101]]],[0,74,0,75,102,[1,54483,1],[],[[54484,2,471]]]],[[54484,2,101]]],[0,74,0,75,102,[1,54484,1],[],[[54485,2,471]]]],[]],[4,280,0,0,0,[1,54485,6],[[0,119,0,120,272,[1,54485,5],[[0,97,0,98,122,[1,54486,3],[],[[54489,2,100],[54489,2,101]]],[0,74,0,75,102,[1,54489,1],[],[[54490,2,472]]]],[[54490,2,101]]],[0,74,0,75,102,[1,54490,1],[],[[54491,2,472]]]],[]],[4,473,0,0,0,[1,54491,6],[[0,119,0,120,272,[1,54491,5],[[0,97,0,98,122,[1,54492,3],[],[[54495,2,100],[54495,2,101]]],[0,74,0,75,102,[1,54495,1],[],[[54496,2,474]]]],[[54496,2,101]]],[0,74,0,75,102,[1,54496,1],[],[[54497,2,474]]]],[]],[4,282,0,0,0,[1,54497,6],[[0,119,0,120,272,[1,54497,5],[[0,97,0,98,122,[1,54498,3],[],[[54501,2,100],[54501,2,101]]],[0,74,0,75,102,[1,54501,1],[],[[54502,2,475]]]],[[54502,2,101]]],[0,74,0,75,102,[1,54502,1],[],[[54503,2,475]]]],[]],[4,476,0,0,0,[1,54503,6],[[0,119,0,120,272,[1,54503,5],[[0,97,0,98,122,[1,54504,3],[],[[54507,2,100],[54507,2,101]]],[0,74,0,75,102,[1,54507,1],[],[[54508,2,477]]]],[[54508,2,101]]],[0,74,0,75,102,[1,54508,1],[],[[54509,2,477]]]],[]],[4,284,0,0,0,[1,54509,6],[[0,119,0,120,272,[1,54509,5],[[0,97,0,98,122,[1,54510,3],[],[[54513,2,100],[54513,2,101]]],[0,74,0,75,102,[1,54513,1],[],[[54513,2,478]]]],[[54514,2,101]]],[0,74,0,75,102,[1,54514,1],[],[[54514,2,478]]]],[]],[4,286,0,0,0,[1,54515,6],[[0,119,0,120,272,[1,54515,5],[[0,97,0,98,122,[1,54516,3],[],[[54519,2,100],[54519,2,101]]],[0,74,0,75,102,[1,54519,1],[],[[54520,2,479]]]],[[54520,2,101]]],[0,74,0,75,102,[1,54520,1],[],[[54521,2,479]]]],[]],[4,288,0,0,0,[1,54521,6],[[0,119,0,120,272,[1,54521,5],[[0,97,0,98,122,[1,54522,3],[],[[54525,2,100],[54525,2,101]]],[0,74,0,75,102,[1,54526,0],[],[[54526,2,480]]]],[[54526,2,101]]],[0,74,0,75,102,[1,54527,0],[],[[54527,2,480]]]],[]],[4,290,0,0,0,[1,54527,6],[[0,119,0,120,272,[1,54527,5],[[0,97,0,98,122,[1,54528,3],[],[[54531,2,100],[54531,2,101]]],[0,74,0,75,102,[1,54532,0],[],[[54532,2,481]]]],[[54532,2,101]]],[0,74,0,75,102,[1,54533,0],[],[[54533,2,481]]]],[]]],[]]],[]]],[]]],[]]],[]]],[]]],[[54534,2,108],[54534,2,109]]],[0,63,0,64,292,[1,54534,1280],[[0,114,0,115,293,[1,54535,1279],[[0,294,0,295,0,[1,54535,1279],[[0,296,0,297,45,[1,54536,0],[],[]],[0,298,0,299,0,[1,54536,1],[],[]],[0,51,0,52,300,[1,54537,4],[],[[54541,2,300]]],[0,86,0,56,57,[1,54542,469],[],[[55011,2,482],[55012,2,483]]],[0,74,0,75,92,[1,55012,1],[],[[55012,2,482]]],[0,51,0,52,303,[1,55013,4],[],[[55017,2,303]]],[0,86,0,56,57,[1,55017,48],[],[[55065,2,484],[55065,2,485]]],[0,74,0,75,92,[1,55065,1],[],[[55065,2,484]]],[0,51,0,52,306,[1,55066,5],[],[[55071,2,306]]],[0,86,0,56,57,[1,55072,689],[],[[55761,2,486],[55762,2,308]]],[0,74,0,75,92,[1,55762,0],[],[[55762,2,486]]],[0,51,0,52,309,[1,55763,2],[],[[55765,2,309]]],[0,86,0,56,57,[1,55766,47],[],[[55813,2,487],[55813,2,311]]],[0,74,0,75,92,[1,55813,1],[],[[55814,2,487]]]],[]]],[]]],[[55815,2,108],[55815,2,109]]],[0,312,0,313,0,[1,55815,1791],[[0,35,0,36,314,[1,55816,0],[],[]],[0,296,0,297,45,[1,55816,0],[],[]],[0,298,0,299,0,[1,55817,0],[],[]],[0,51,0,52,315,[1,55817,2],[],[[55819,2,315]]],[0,55,0,56,87,[1,55820,1671],[],[[57491,2,488]]],[0,90,0,91,0,[1,57492,114],[],[]]],[]],[0,63,0,64,317,[1,57606,60],[[0,114,0,115,318,[1,57607,59],[[0,319,0,320,0,[1,57607,59],[[3,67,0,0,0,[1,57608,58],[[4,68,0,0,0,[1,57608,58],[[0,119,0,120,121,[1,57609,8],[[0,97,0,98,122,[1,57609,7],[],[[57616,2,100],[57616,2,101]]],[0,74,0,75,102,[1,57616,1],[],[[57617,2,489]]]],[[57617,2,101]]],[0,74,0,75,102,[1,57617,1],[],[[57618,2,489]]],[0,104,0,105,106,[1,57618,1],[],[[57618,2,107]]],[0,123,0,124,102,[1,57619,0],[],[[57619,2,490]]],[0,126,0,127,102,[1,57619,1],[],[[57620,2,491]]],[0,142,0,0,324,[1,57620,46],[[0,129,0,130,144,[1,57621,1],[],[[57622,2,361],[57622,2,362]]],[3,145,0,0,0,[1,57622,44],[[4,146,0,0,0,[1,57622,2],[[0,147,0,148,149,[1,57622,1],[],[[57623,2,492]]],[0,151,0,152,153,[1,57623,1],[],[[57624,2,326]]],[0,104,0,105,155,[1,57624,0],[],[[57624,2,156]]]],[]],[4,157,0,0,0,[1,57624,3],[[0,147,0,148,149,[1,57625,0],[],[[57625,2,493]]],[0,151,0,152,153,[1,57625,1],[],[[57626,2,326]]],[0,104,0,105,155,[1,57626,0],[],[[57626,2,156]]]],[]],[4,159,0,0,0,[1,57627,2],[[0,147,0,148,149,[1,57627,0],[],[[57627,2,494]]],[0,151,0,152,153,[1,57628,0],[],[[57628,2,326]]],[0,104,0,105,155,[1,57628,1],[],[[57629,2,156]]]],[]],[4,161,0,0,0,[1,57629,2],[[0,147,0,148,149,[1,57629,0],[],[[57630,2,495]]],[0,151,0,152,153,[1,57630,0],[],[[57630,2,326]]],[0,104,0,105,155,[1,57630,1],[],[[57631,2,156]]]],[]],[4,163,0,0,0,[1,57631,2],[[0,147,0,148,149,[1,57631,1],[],[[57632,2,496]]],[0,151,0,152,153,[1,57632,1],[],[[57633,2,326]]],[0,104,0,105,155,[1,57633,0],[],[[57633,2,156]]]],[]],[4,165,0,0,0,[1,57633,3],[[0,147,0,148,149,[1,57634,0],[],[[57634,2,497]]],[0,151,0,152,153,[1,57634,1],[],[[57635,2,326]]],[0,104,0,105,155,[1,57635,0],[],[[57635,2,156]]]],[]],[4,167,0,0,0,[1,57636,2],[[0,147,0,148,149,[1,57636,0],[],[[57636,2,498]]],[0,151,0,152,153,[1,57637,0],[],[[57637,2,326]]],[0,104,0,105,155,[1,57637,1],[],[[57637,2,156]]]],[]],[4,169,0,0,0,[1,57638,2],[[0,147,0,148,149,[1,57638,0],[],[[57638,2,499]]],[0,151,0,152,153,[1,57639,0],[],[[57639,2,326]]],[0,104,0,105,155,[1,57639,1],[],[[57640,2,156]]]],[]],[4,171,0,0,0,[1,57640,2],[[0,147,0,148,149,[1,57640,0],[],[[57641,2,500]]],[0,151,0,152,153,[1,57641,0],[],[[57641,2,326]]],[0,104,0,105,155,[1,57641,1],[],[[57642,2,156]]]],[]],[4,173,0,0,0,[1,57642,2],[[0,147,0,148,149,[1,57642,1],[],[[57643,2,501]]],[0,151,0,152,153,[1,57643,0],[],[[57643,2,326]]],[0,104,0,105,155,[1,57644,0],[],[[57644,2,156]]]],[]],[4,373,0,0,0,[1,57644,2],[[0,147,0,148,149,[1,57644,1],[],[[57645,2,502]]],[0,151,0,152,153,[1,57645,0],[],[[57645,2,326]]],[0,104,0,105,155,[1,57646,0],[],[[57646,2,156]]]],[]],[4,375,0,0,0,[1,57646,2],[[0,147,0,148,149,[1,57647,0],[],[[57647,2,503]]],[0,151,0,152,153,[1,57647,1],[],[[57648,2,326]]],[0,104,0,105,155,[1,57648,0],[],[[57648,2,156]]]],[]],[4,377,0,0,0,[1,57648,3],[[0,147,0,148,149,[1,57649,0],[],[[57649,2,504]]],[0,151,0,152,153,[1,57649,1],[],[[57650,2,326]]],[0,104,0,105,155,[1,57650,0],[],[[57650,2,156]]]],[]],[4,379,0,0,0,[1,57651,2],[[0,147,0,148,149,[1,57651,0],[],[[57651,2,505]]],[0,151,0,152,153,[1,57652,0],[],[[57652,2,326]]],[0,104,0,105,155,[1,57652,1],[],[[57652,2,156]]]],[]],[4,381,0,0,0,[1,57653,2],[[0,147,0,148,149,[1,57653,0],[],[[57653,2,506]]],[0,151,0,152,153,[1,57654,0],[],[[57654,2,326]]],[0,104,0,105,155,[1,57654,1],[],[[57655,2,156]]]],[]],[4,383,0,0,0,[1,57655,2],[[0,147,0,148,149,[1,57655,1],[],[[57656,2,507]]],[0,151,0,152,153,[1,57656,0],[],[[57656,2,326]]],[0,104,0,105,155,[1,57656,1],[],[[57657,2,156]]]],[]],[4,385,0,0,0,[1,57657,2],[[0,147,0,148,149,[1,57657,1],[],[[57658,2,508]]],[0,151,0,152,153,[1,57658,0],[],[[57658,2,326]]],[0,104,0,105,155,[1,57659,0],[],[[57659,2,156]]]],[]],[4,387,0,0,0,[1,57659,2],[[0,147,0,148,149,[1,57659,1],[],[[57660,2,509]]],[0,151,0,152,153,[1,57660,0],[],[[57661,2,326]]],[0,104,0,105,155,[1,57661,0],[],[[57661,2,156]]]],[]],[4,389,0,0,0,[1,57661,3],[[0,147,0,148,149,[1,57662,0],[],[[57662,2,510]]],[0,151,0,152,153,[1,57662,1],[],[[57663,2,326]]],[0,104,0,105,155,[1,57663,0],[],[[57663,2,156]]]],[]],[4,391,0,0,0,[1,57664,2],[[0,147,0,148,149,[1,57664,0],[],[[57664,2,511]]],[0,151,0,152,153,[1,57665,0],[],[[57665,2,326]]],[0,104,0,105,155,[1,57665,1],[],[[57665,2,156]]]],[]]],[]]],[]]],[]]],[]]],[]]],[]]],[[57666,2,108],[57667,2,109]]],[0,110,0,111,112,[1,57667,0],[],[]],[0,63,0,64,336,[1,57667,11],[[0,114,0,115,337,[1,57668,10],[[0,338,0,339,340,[1,57668,10],[[3,67,0,0,0,[1,57669,8],[[4,68,0,0,0,[1,57669,8],[[0,119,0,120,191,[1,57669,5],[[0,97,0,98,122,[1,57670,3],[],[[57673,2,100],[57674,2,101]]],[0,74,0,75,102,[1,57674,0],[],[[57674,2,512]]]],[[57675,2,101]]],[0,74,0,75,102,[1,57675,0],[],[[57675,2,512]]],[0,193,0,194,195,[1,57675,1],[],[[57676,2,342]]],[0,197,0,194,198,[1,57676,1],[],[[57677,2,343]]],[0,104,0,105,344,[1,57677,0],[],[[57677,2,345]]]],[]]],[]]],[]]],[]]],[[57678,2,108],[57678,2,109]]],[0,110,0,111,112,[1,57678,1],[],[]],[0,346,0,347,34,[1,57679,0],[],[[57679,2,348],[57679,2,513]]]],[]]];
</script>
<script type="text/javascript">
window.output["suite"] = [1,2,3,4,[],[1,0,60951],[],[[5,0,1,6,[7],[1,35479,22203],[[0,8,0,9,10,[1,35481,1],[],[[35482,2,11]]],[0,12,0,13,14,[1,35484,22196],[[0,15,0,16,17,[1,35485,0],[],[[35485,2,18]]],[0,19,0,20,21,[1,35486,0],[],[[35486,2,22],[35486,2,23]]],[0,24,0,20,25,[1,35486,1],[],[[35486,2,22],[35487,2,26]]],[0,27,0,20,28,[1,35487,0],[],[[35487,2,22],[35487,2,29]]],[3,30,0,0,0,[1,35487,22192],window.sPart0,[]]],[[57680,2,514]]],[0,74,0,75,515,[1,57680,1],[],[[57680,2,516]]],[0,8,0,9,517,[1,57681,0],[],[[57681,2,11]]]]]],[[1,518,0,519,520,[1,197,35282],[[0,521,0,522,0,[1,200,2],[[0,523,0,231,524,[1,201,0],[],[[201,2,525]]],[0,43,0,44,526,[1,202,0],[],[[202,2,525]]]],[]],[0,527,0,528,529,[1,202,11960],[],[[210,2,530],[12163,2,531]]],[0,134,0,135,532,[1,12164,1],[],[[12165,2,107]]],[3,67,0,0,0,[1,12165,4683],[[4,68,0,0,0,[1,12165,4683],[[0,527,0,528,533,[1,12165,4680],[],[[12174,2,534],[16846,2,531]]],[0,134,0,135,532,[1,16847,1],[],[[16847,2,107]]]],[]]],[]],[0,535,0,536,0,[1,16848,17],[[0,537,0,538,539,[1,16849,0],[],[[16849,2,540]]],[3,67,0,0,0,[1,16850,14],[[4,68,0,0,0,[1,16850,14],[[0,541,0,542,543,[1,16850,14],[],[[16863,2,544]]]],[]]],[]]],[]],[0,114,0,115,545,[1,16865,18613],[[0,546,0,547,0,[0,16866,10],[[3,67,0,0,0,[0,16866,10],[[4,68,0,0,0,[0,16867,9],[[0,119,0,120,121,[0,16867,9],[[0,97,0,98,122,[0,16868,7],[],[[16873,2,548],[16874,2,100],[16875,4,549]]]],[]]],[]]],[]]],[]],[0,546,0,547,0,[0,18878,6],[[3,67,0,0,0,[0,18879,4],[[4,68,0,0,0,[0,18879,4],[[0,119,0,120,121,[0,18880,3],[[0,97,0,98,122,[0,18880,3],[],[[18882,2,550],[18882,2,100],[18883,4,549]]]],[]]],[]]],[]]],[]],[0,546,0,547,0,[0,20886,5],[[3,67,0,0,0,[0,20887,4],[[4,68,0,0,0,[0,20887,4],[[0,119,0,120,121,[0,20887,4],[[0,97,0,98,122,[0,20888,3],[],[[20889,2,551],[20890,2,100],[20890,4,549]]]],[]]],[]]],[]]],[]],[0,546,0,547,0,[0,22893,5],[[3,67,0,0,0,[0,22894,4],[[4,68,0,0,0,[0,22894,4],[[0,119,0,120,121,[0,22895,3],[[0,97,0,98,122,[0,22895,3],[],[[22896,2,552],[22897,2,100],[22898,4,549]]]],[]]],[]]],[]]],[]],[0,546,0,547,0,[0,24900,137],[[3,67,0,0,0,[0,24901,136],[[4,68,0,0,0,[0,24901,136],[[0,119,0,120,121,[1,24902,133],[[0,97,0,98,122,[1,24902,131],[],[[24903,2,553],[25033,2,100],[25033,2,554]]],[0,74,0,75,102,[1,25034,0],[],[[25034,2,555]]]],[[25035,2,554]]],[0,104,0,105,106,[0,25035,2],[],[[25035,2,107],[25037,4,556]]]],[]]],[]]],[]],[0,546,0,547,0,[0,27040,15],[[3,67,0,0,0,[0,27040,15],[[4,68,0,0,0,[0,27041,13],[[0,119,0,120,121,[1,27041,12],[[0,97,0,98,122,[1,27042,10],[],[[27052,2,100],[27052,2,557]]],[0,74,0,75,102,[1,27053,0],[],[[27053,2,0]]]],[[27053,2,557]]],[0,104,0,105,106,[0,27054,0],[],[[27054,2,107],[27054,4,558]]]],[]]],[]]],[]],[0,546,0,547,0,[0,29057,13],[[3,67,0,0,0,[0,29058,12],[[4,68,0,0,0,[0,29058,12],[[0,119,0,120,121,[1,29058,11],[[0,97,0,98,122,[1,29059,9],[],[[29068,2,100],[29068,2,557]]],[0,74,0,75,102,[1,29068,1],[],[[29068,2,0]]]],[[29069,2,557]]],[0,104,0,105,106,[0,29069,1],[],[[29070,2,107],[29070,4,558]]]],[]]],[]]],[]],[0,546,0,547,0,[0,31073,130],[[3,67,0,0,0,[0,31073,130],[[4,68,0,0,0,[0,31074,129],[[0,119,0,120,121,[1,31074,128],[[0,97,0,98,122,[1,31075,126],[],[[31201,2,100],[31201,2,559]]],[0,74,0,75,102,[1,31201,1],[],[[31202,2,560]]]],[[31202,2,559]]],[0,104,0,105,106,[0,31202,1],[],[[31203,2,107],[31203,4,561]]]],[]]],[]]],[]],[0,546,0,547,0,[0,33206,248],[[3,67,0,0,0,[0,33206,248],[[4,68,0,0,0,[0,33207,246],[[0,119,0,120,121,[1,33207,245],[[0,97,0,98,122,[1,33208,243],[],[[33451,2,100],[33451,2,559]]],[0,74,0,75,102,[1,33452,0],[],[[33452,2,560]]]],[[33452,2,559]]],[0,104,0,105,106,[0,33453,0],[],[[33453,2,107],[33453,4,561]]]],[]]],[]]],[]],[0,546,0,547,0,[1,35456,22],[[3,67,0,0,0,[1,35457,21],[[4,68,0,0,0,[1,35457,21],[[0,119,0,120,121,[1,35457,20],[[0,97,0,98,122,[1,35458,18],[],[[35476,2,100],[35476,2,101]]],[0,74,0,75,102,[1,35477,0],[],[[35477,2,562]]]],[[35477,2,101]]],[0,104,0,105,106,[1,35478,0],[],[[35478,2,107]]]],[]]],[]]],[]]],[]]],[]],[2,563,0,564,0,[1,57683,3268],[[0,527,0,528,565,[1,57683,280],[],[[57693,2,566],[57964,2,531]]],[0,527,0,528,567,[1,57964,15],[],[[57974,2,568],[57979,2,531]]],[0,134,0,135,532,[1,57980,1],[],[[57980,2,107]]],[0,527,0,528,569,[1,57981,12],[],[[57989,2,570],[57993,2,531]]],[0,134,0,135,532,[1,57994,1],[],[[57995,2,107]]],[0,571,0,572,0,[1,57995,1930],[[0,573,0,72,574,[1,57996,1929],[[0,74,0,75,76,[1,57997,1],[],[[57998,2,575]]],[0,78,0,40,79,[1,57998,1],[],[[57999,2,576]]],[0,46,0,47,81,[1,58000,348],[],[[58000,2,49],[58347,2,577]]],[0,51,0,52,84,[1,58348,5],[],[[58353,2,578]]],[0,86,0,56,87,[1,58353,1456],[],[[59809,2,579],[59809,2,580]]],[0,90,0,91,0,[1,59810,114],[],[]],[0,74,0,75,92,[1,59924,1],[],[[59925,2,579]]]],[]]],[]],[3,67,0,0,0,[1,59925,1026],[[4,68,0,0,0,[1,59926,1025],[[0,581,0,582,70,[1,59926,1024],[[0,573,0,72,583,[1,59927,519],[[0,74,0,75,76,[1,59928,0],[],[[59928,2,584]]],[0,78,0,40,79,[1,59929,1],[],[[59930,2,585]]],[0,46,0,47,81,[1,59930,378],[],[[59930,2,82],[60307,2,586]]],[0,51,0,52,84,[1,60308,20],[],[[60328,2,587]]],[0,86,0,56,87,[1,60329,2],[],[[60331,2,588],[60331,2,589]]],[0,90,0,91,0,[1,60331,114],[],[]],[0,74,0,75,92,[1,60445,1],[],[[60446,2,588]]]],[]],[0,590,0,40,591,[1,60446,1],[],[]],[0,46,0,47,592,[1,60447,351],[],[[60447,2,82],[60798,2,593]]],[0,594,0,595,596,[1,60798,88],[],[[60874,2,597],[60886,2,598]]],[0,90,0,91,0,[1,60886,64],[],[]]],[]]],[]]],[]]],[]]],[1,1,1,1]];
</script>
<script type="text/javascript">
window.output["strings"] = [];
</script>
<script type="text/javascript">
window.output["strings"] = window.output["strings"].concat(["*","*ScalePOC","*/tmp/ONLabTest/TestON/RobotTests/ScalePOC.robot","*ScalePOC.robot","*<p>ONOS Sanity Test Suite\x3c/p>","*Find Max Switches By Scaling","eNqNUktr40AMvvdXiJ5SKEm6xyUESunCHkpDY9rzxJZjUXlkRrKz6a9fTV4tpIFePIb5pO81s27+h2IF1iC04R/Evl1hAqlBN2Rlgwp1khbuptBHI4aEoWworuHXFCiCGnaa4XfTMRS+pBZm2WSAD5fvCiHlzRU6RZJ+3cDL47KA+8Vf/T2bdPOrWc/+YZq/YqJ6CxUOVCKU4nxA6j8pYWmziUO+wakF6zUDwxCIw4rxEjQJ417P0/2yeHyBUYV16Nl2N9lNGRR33i3EKrDErCOaXzOmm7O9Jp2wrLceSinrSB94kGtfctyTK4yKg//QEVxPjrPXX9Y+rxTTgJAjPor2cmigqg/M23MkU3zXW2hEzQ8XDbWnr6esc62fDs7nTyS1QDDwWRfNOCCDRGgpUnQzo7dEZhi93AQLebgZw7LJNDuy26OKTN9JMh3Dw777MkRYZT9KvAVqO8YWo2GVyazJjDuuoLBB5k99y+J5AU8H+sKjutTp6Zl8YJLLBSl6A1F+XMbEH+V/jw4Wgw==","*done","*OperatingSystem.Append To File","*<p>Appends the given contend to the specified file.\x3c/p>","*${SWITCHES_RESULT_FILE}, Max Switches Linear Topo\\n","*Appended to file '<a href=\"file:///home/fedora/workspace/tools/switches.csv\">/home/fedora/workspace/tools/switches.csv\x3c/a>'","*${max} = Find Max Switches","*<p>Will find out max switches starting from 10 till reaching ${stop} and in steps defined by ${step}\x3c/p>","*${start}, ${end}, ${increments}","*${max-switches} = BuiltIn.Set Variable","*<p>Returns the given values which can then be assigned to a variables.\x3c/p>","*${0}","*${max-switches} = 0","*${start} = BuiltIn.Convert To Integer","*<p>Converts the given item to an integer number.\x3c/p>","*${start}","*Argument types are:\n&lt;type 'unicode'&gt;","*${start} = 10","*${stop} = BuiltIn.Convert To Integer","*${stop}","*${stop} = 20","*${step} = BuiltIn.Convert To Integer","*${step}","*${step} = 10","*${switches} IN RANGE [ ${start} | ${stop+1} | ${step} ]","*${switches} = 10","*Start Mininet Linear","*<p>Start mininet linear topology with 10 nodes\x3c/p>","*${switches}","*BuiltIn.Log To Console","*<p>Logs the given message to the console.\x3c/p>","*\\n","*Starting mininet linear ${switches}","*${mininet_conn_id} = SSHLibrary.Open Connection","*<p>Opens a new SSH connection to the given `host` and `port`.\x3c/p>","*${MININET_IP}, prompt=${LINUX_PROMPT}, timeout=${switches*3}","*${mininet_conn_id} = 1","*BuiltIn.Set Suite Variable","*<p>Makes a variable available everywhere within the scope of the current suite.\x3c/p>","*${mininet_conn_id}","*SSHLibrary.Login With Public Key","*<p>Logs into the SSH server using key-based authentication.\x3c/p>","*${MININET_USER}, ${USER_HOME}/.ssh/id_rsa, any","*Logging into '10.0.0.121:22' as 'fedora'.","*Read output: Last login: Wed Jul  1 17:01:22 2015 from 10.0.0.121\n[fedora@ip-10-0-0-121 ~]$","*SSHLibrary.Write","*<p>Writes the given `text` on the remote machine and appends a newline.\x3c/p>","*sudo mn --controller=remote,ip=${CONTROLLER_IP} --topo linear,${switches} --switch ovsk,protocols=OpenFlow13","*sudo mn --controller=remote,ip=10.0.0.152 --topo linea \nr,10 --switch ovsk,protocols=OpenFlow13","*SSHLibrary.Read Until","*<p>Consumes and returns the server output until `expected` is encountered.\x3c/p>","*mininet&gt;","eNqNkctqwzAQRff5irsqqSnG70e6Kl4VuusXBMf1iDgy6Krk9zsKakm9aXeHGd0DupMkCQY3Hb2xM+zkr6s77xIdvpxOYTSu1rt1WSZ3P5WVnoed5JACUkIqSA1pIC2kg/SQPMN9glfjR5k0xBwswBKswBpswBbswB7chBZjz5rYS/6ku0fspVAoApQKZYBKoQpQK9QBGoUmQKvQBugUugC9Qh8gz4IxU2QR3Syjm1V0s45uNtHNNrrZRTf76OZNqfLbB4bVfpj50/2U9a+u3v3R+U3r43anj7/L/KvLNE1/Z4e318PuYqzRSz/M/vkLhuWIqQ==","*BuiltIn.Sleep","*<p>Pauses the test executed for the given time.\x3c/p>","*6","*Slept 6 seconds","*${status}, ${result} = BuiltIn.Run Keyword And Ignore Error","*<p>Runs the given keyword with the given arguments and ignores possible error.\x3c/p>","*Verify Controllers are Not Dead","*<p>Verifies each controller is not dead by making sure karaf log does not contain \"OutOfMemoryError\" and rest call still returns 200\x3c/p>","*${ip} IN [ @{controller_list} ]","*${ip} = 10.0.0.152","*Verify Controller Is Not Dead","*${ip}","*${response} = Run Command On Remote System","*<p>Reduces the common work of running a command on a remote system to a single higher level robot keyword,\x3c/p>","*${controller}, grep java.lang.OutOfMemoryError /opt/onos/log/karaf.log","*BuiltIn.Log","*<p>Logs the given message with the given level.\x3c/p>","*Attempting to execute ${cmd} on ${remote_system}","*Attempting to execute grep java.lang.OutOfMemoryError /opt/onos/log/karaf.log on 10.0.0.152","*${conn_id} = SSHLibrary.Open Connection","*${remote_system}, prompt=${prompt}, timeout=${prompt_timeout}","*${conn_id} = 2","*${user}, ${USER_HOME}/.ssh/id_rsa, any","*Logging into '10.0.0.152:22' as 'fedora'.","*Read output: Last login: Wed Jul  1 17:01:59 2015 from 10.0.0.121\n[fedora@ip-10-0-0-152 ~]$","*${cmd}","*grep java.lang.OutOfMemoryError /opt/onos/log/karaf.lo \ng","*${output} = SSHLibrary.Read Until","*${LINUX_PROMPT}","*[fedora@ip-10-0-0-152 ~]$","*${output} = [fedora@ip-10-0-0-152 ~]$","*SSHLibrary.Close Connection","*<p>Closes the current connection.\x3c/p>","*${output}","*${response} = [fedora@ip-10-0-0-152 ~]$","*BuiltIn.Should Not Contain","*<p>Fails if `item1` contains `item2` one or more times.\x3c/p>","*${response}, OutOfMemoryError","*${resp} = RequestsLibrary.Get","*<p>* * *   Depricated - See Get Request now   * * *\x3c/p>","*${controller}, /onos/v1/devices","*Deprication Warning  Use Get Request in the future","*${resp} = &lt;Response [200]&gt;","*${resp.content}","eNrN0k1LxDAQBuC/ssy5libp901EsQddsAseRJaYzdpATUoau0jpfzfRkwdzySXtpfO2U+ZhssKJL4LxGdqXFcQJWlDnNvt7UUjAfE3cvuyfu8PNva3pQsVI30YbGv3JE9DKPcPDdX+4fbIffJy1LR8FE5omu06y1IbDxWb7icvd0l+EYYPNZpfhlKTo6l2YvCoy1pQu51rQ0f1DSW5rNtB5FnPnZnQTUSmVoUYoaYdfYdLKKKZcw/7uiMhvh5R8/OlAWepuhFGbl6QuYduSf8EoOjAKBedecB4dOA8EN9gLLqIDF6EbrrxgHB0Yh4JrL5hEByahRxp5wXV04Dp0w40X3EQHbkI3nHnBZXTgMhRMvOAqOnAVeqQLC37dvgG1CLp7","*BuiltIn.Should Be Equal As Strings","*<p>Fails if objects are unequal after converting them to strings.\x3c/p>","*${resp.status_code}, 200","*Argument types are:\n&lt;type 'int'&gt;\n&lt;type 'unicode'&gt;","*${status} = PASS","*${result} = None","*BuiltIn.Exit For Loop If","*<p>Stops executing the enclosing for loop if the `condition` is true.\x3c/p>","*'${status}' == 'FAIL'","*Wait Until Keyword Succeeds, ${switches*2}, 2s, Ensure Switch Count, ${switches}","*BuiltIn.Wait Until Keyword Succeeds","*<p>Waits until the specified keyword succeeds or the given timeout expires.\x3c/p>","*${switches*2}, 2s, Ensure Switch Count, ${switches}","*Ensure Switch Count","*<p>Verfies the device count (passed in as arg) on each controller is accurate.\x3c/p>","*${resp} = ONOS Get","*<p>Common keyword to issue GET requests to the controller. Arguments are the session (controller ip) and api path\x3c/p>","*${ip}, devices","*${session}, /onos/v1/${noun}","*BuiltIn.Should Not Be Empty","*<p>Verifies that the given item is not empty.\x3c/p>","*Length is 2423","*${jsondata} = RequestsLibrary.To Json","*<p>Convert a string to a JSON object\x3c/p>","*${jsondata} = {u'devices': [{u'available': True, u'chassisId': u'a', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46386', u'protocol': u'OF_13'}, u'mfr': u'Nicira,...","*${length} = BuiltIn.Get Length","*<p>Returns and logs the length of the given item.\x3c/p>","*${jsondata['devices']}","*Length is 10","*${length} = 10","*BuiltIn.Should Be Equal As Integers","*<p>Fails if objects are unequal after converting them to integers.\x3c/p>","*${length}, ${switch_count}","*Argument types are:\n&lt;type 'int'&gt;\n&lt;type 'int'&gt;","*Wait Until Keyword Succeeds, ${switches*2}, 2s, Ensure Switches are Available","*${switches*2}, 2s, Ensure Switches are Available","*Ensure Switches are Available","*<p>Verifies that the switch's availability state is true on all switches through all controllers\x3c/p>","*Check Each Switch Status","*${jsondata}, True","*${jdata['devices']}","*${INDEX} IN RANGE [ 0 | ${length} ]","*${INDEX} = 0","*${data} = Collections.Get From List","*<p>Returns the value specified with an `index` from `list`.\x3c/p>","*${jdata['devices']}, ${INDEX}","*${data} = {u'available': True, u'chassisId': u'a', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46386', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${status} = Collections.Get From Dictionary","*<p>Returns a value from the given `dictionary` based on the given `key`.\x3c/p>","*${data}, available","*${status} = True","*${status}, ${bool}","*Argument types are:\n&lt;type 'bool'&gt;\n&lt;type 'unicode'&gt;","*${INDEX} = 1","*${data} = {u'available': True, u'chassisId': u'1', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46384', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${INDEX} = 2","*${data} = {u'available': True, u'chassisId': u'4', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46392', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${INDEX} = 3","*${data} = {u'available': True, u'chassisId': u'5', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46387', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${INDEX} = 4","*${data} = {u'available': True, u'chassisId': u'2', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46388', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${INDEX} = 5","*${data} = {u'available': True, u'chassisId': u'3', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46391', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${INDEX} = 6","*${data} = {u'available': True, u'chassisId': u'8', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46389', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${INDEX} = 7","*${data} = {u'available': True, u'chassisId': u'9', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46390', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${INDEX} = 8","*${data} = {u'available': True, u'chassisId': u'6', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46393', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${INDEX} = 9","*${data} = {u'available': True, u'chassisId': u'7', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46385', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*Wait Until Keyword Succeeds, ${switches*2}, 2s, Ensure Switch Role, MASTER","*${switches*2}, 2s, Ensure Switch Role, MASTER","*Ensure Switch Role","*<p>Verifies that the controller's role for each switch is MASTER (default in standalone mode)\x3c/p>","*MASTER","*Ensure Role","*${jsondata}, ${role}","*${data}, role","*${status} = MASTER","*${status}, ${role}","*Argument types are:\n&lt;type 'unicode'&gt;\n&lt;type 'unicode'&gt;","*Wait Until Keyword Succeeds, ${switches*2}, 2s, Ensure Topology, ${switches}, ${cluster}","*${switches*2}, 2s, Ensure Topology, ${switches}, ${cluster}","*Ensure Topology","*<p>Verifies the devices count through /topoplogy api. Currently, cluster count is inconsistent (Possible bug, will look into it), so the check on that is ignored, but logged\x3c/p>","*${switches}, ${cluster}","*${ip}, topology","*{\"time\":778317929317684,\"devices\":10,\"links\":18,\"clusters\":1}","*${devices} = HttpLibrary.HTTP.Get Json Value","*<p>Get the target node of the JSON document `json_string` specified by `json_pointer`.\x3c/p>","*${resp.content}, /devices","*${devices} = 10","*${clusters} = HttpLibrary.HTTP.Get Json Value","*${resp.content}, /clusters","*${clusters} = 1","*${devices}, ${device_count}","*Argument types are:\n&lt;type 'str'&gt;\n&lt;type 'int'&gt;","*Wait Until Keyword Succeeds, ${switches*2}, 2s, Experiment Links, Hosts, and Flows","*${switches*2}, 2s, Experiment Links, Hosts, and Flows","*Experiment Links, Hosts, and Flows","*<p>Currently this only returns the information the controller has on links, hosts, and flows. Checks can easily be implemented\x3c/p>","*${ip}, links","eNq11D0PgjAQBuD/crODUPpBN4MMrIa4GAeCmBCNENqYGMJ/t2yyGF7jdWvvrnmSa2+ke/u4ObKnkdxQkx2p7wZPlgRt6NI827oJm+5qt8slaQpx5z8q4u8Vaq7wr36O7otDnpUh3/nKzwe7rCyOecgAGQnMkBwMATMSDoaBGSkHQ8MMw8FQMENzMGKYITgYKcyofmKsuXTJEBxPNIY/7Jo2/pshYUbCwUhghuBgKJghORgGZmgORgozDAdDwwzFwcCnaMTBiGDGqrlxnt5Am5MY","eNpTqc4qzs9LSSxJrFWwVaguVc/JzMsuVrdSiAayi4uSgSwgIyW1LDM5FcguVc9PszJABabqOkDxgvyiErACY/VaED+luIQIvWaoeo0geksqCyAaXDyDXJ1DwGqKSxJLIIKOziGeYa4glTidqKenBwBH1D70","*${jsondata['links']}","*Length is 18","*${length} = 18","*${ip}, flows","eNrtm99r2zAQx/8XP2dwJ93pR94GLWxPKyx9GCUML1U2szQOjrtRSv73XdKXFZriDsc7mfhJjhJL+vC9O51yfiyWq/r3tpjePBbVbTEtTEDyHh35gBxMMSnKzeaj9OCk+N7U94c2TIpNU9VN1T4UUwK5JkVb3aX6vj10Vtur1NyV67SW+7a5T5PiNv2qFmn/46JeTuH5Vcow27Zsk/S+v7i4vJD7VbVMTyOVi5+p3R7a3x7a9NRaldv2c0prmRhZ9h7Qh2hY5tGksr07jCxLWm9l+EVb1eunNbYPm/0gn65nV9czGWVTN/LFd3Y3309xmZomyRRv5juZUFqlRVs3++csZKmpqcq/n3E5+/B19uXqUp6S2h+zw4cGmHbz3W7yzzRZCUmnk2R07NmCO+vyTTQtow0vC9NzQJeRMP+/iVN4UZjkMEI4C/ONwgQDL+FksBgJhsGJY/Gax3A6a4kDhdPbeW8ovVI7ZyS2NmQmTK81AFnpcUgZCVPpzugNJM/C7EBT5mgMnl6X1A9J74xah2nQoh1Gl33RZKN2Y2QsecS8cDpUG3+IIAafj52zUesxu5LUJEylNMVrMiIMFM25J5oU1OY/5BhwgAO4vlAy6AznQtKD9yEjkqzWYXYlqcjEA2p1mMaRWH9eNJn05uXSOKxzAJxmLPHneG7elSbrIMlRLUnPzsZsSEZDWvNycOgt5mXhXm9ejp7RxKxwRmOVxh9RZ0Q2A4VzOxav+Ur+I/7Uwundph1PADqW/yBidGdh9pQDdaWpRJdOb/4DFA2cddlT/sPiL8MAO/Yw8gOjyJatTG8YYfZFk7zajZEhkEZeOD2q3RixA2TMx871nnF0JqlImAq85jGagdAPsDGKYy/MZOPBuIGO2eNYTo1ecZghRjIZCZP0mnhHkmdhdsh/bLDOuTPNvraZIs04UNWWG0/9wdEyo0gB7Om9phvP/7zHygkDhMhZCVPziwEMwC5mZudqq4Y701Ri5qz2ONMagjBQ/Zsfe5mrhHMEF1xmOI1er2mI4wBvrfSGUm05IVuwDvISJutNKbvS5DPJZyTnuz/erb1p","*${jsondata} = {u'flows': [{u'life': 0, u'isPermanent': True, u'packets': 0, u'treatment': {u'deferred': [], u'instructions': [{u'type': u'OUTPUT', u'port': -3}]}, u'groupId': 0, u'priority': 40000, u'bytes': 0, u's...","*${jsondata['flows']}","*Length is 50","*${length} = 50","*${ip}, hosts","*{\"hosts\":[]}","*${jsondata} = {u'hosts': []}","*${jsondata['hosts']}","*Length is 0","*${length} = 0","*Wait Until Keyword Succeeds, ${switches*2}, 2s, Check Each Switch Individually","*${switches*2}, 2s, Check Each Switch Individually","*Check Each Switch Individually","*<p>Currently just observe each information the device has. Checks can easily be implemented\x3c/p>","*Check Each Switch","*${jsondata}","*@{dpid_list} = BuiltIn.Create List","*<p>Returns a list containing given items.\x3c/p>","*@{dpid_list} = [ ]","*${devicedata} = Collections.Get From List","*${devicedata} = {u'available': True, u'chassisId': u'a', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46386', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${id} = Collections.Get From Dictionary","*${devicedata}, id","*${id} = of:000000000000000a","*Collections.Append To List","*<p>Adds `values` to the end of `list`.\x3c/p>","*${dpid_list}, ${id}","*${dpid_list}","*[u'of:000000000000000a']","*${devicedata} = {u'available': True, u'chassisId': u'1', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46384', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${id} = of:0000000000000001","*[u'of:000000000000000a', u'of:0000000000000001']","*${devicedata} = {u'available': True, u'chassisId': u'4', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46392', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${id} = of:0000000000000004","*[u'of:000000000000000a', u'of:0000000000000001', u'of:0000000000000004']","*${devicedata} = {u'available': True, u'chassisId': u'5', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46387', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${id} = of:0000000000000005","eNqLLlXPT7MyQAWJ6joK2MQNcYib4BA3VY8FAB+2FSA=","*${devicedata} = {u'available': True, u'chassisId': u'2', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46388', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${id} = of:0000000000000002","eNqLLlXPT7MyQAWJ6joK2MQNcYib4BA3xSFupB4LAFx6GkA=","*${devicedata} = {u'available': True, u'chassisId': u'3', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46391', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${id} = of:0000000000000003","eNqLLlXPT7MyQAWJ6joK2MQNcYib4BA3xSFuhEPcWD0WABRQH2E=","*${devicedata} = {u'available': True, u'chassisId': u'8', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46389', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${id} = of:0000000000000008","eNqLLlXPT7MyQAWJ6joK2MQNcYib4BA3xSFuhEPcGIe4hXosAEdNJIc=","*${devicedata} = {u'available': True, u'chassisId': u'9', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46390', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${id} = of:0000000000000009","eNqLLlXPT7MyQAWJ6joK2MQNcYib4BA3xSFuhEPcGIe4BQ5xS/VYAPXdKa4=","*${devicedata} = {u'available': True, u'chassisId': u'6', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46393', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${id} = of:0000000000000006","eNqLLlXPT7MyQAWJ6joK2MQNcYib4BA3xSFuhEPcGIe4BQ5xSxziZuqxACAqLtI=","*${devicedata} = {u'available': True, u'chassisId': u'7', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46385', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${id} = of:0000000000000007","eNqLLlXPT7MyQAWJ6joK2MQNcYib4BA3xSFuhEPcGIe4BQ5xSxziZjjEzdVjAcXLM/c=","*${i} IN [ @{dpid_list} ]","*${i} = of:000000000000000a","*${ip}, devices/${i}","*{\"id\":\"of:000000000000000a\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"a\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46386\"}}","*${i} = of:0000000000000001","*{\"id\":\"of:0000000000000001\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"1\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46384\"}}","*${i} = of:0000000000000004","*{\"id\":\"of:0000000000000004\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"4\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46392\"}}","*${i} = of:0000000000000005","*{\"id\":\"of:0000000000000005\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"5\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46387\"}}","*${i} = of:0000000000000002","*{\"id\":\"of:0000000000000002\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"2\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46388\"}}","*${i} = of:0000000000000003","*{\"id\":\"of:0000000000000003\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"3\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46391\"}}","*${i} = of:0000000000000008","*{\"id\":\"of:0000000000000008\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"8\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46389\"}}","*${i} = of:0000000000000009","*{\"id\":\"of:0000000000000009\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"9\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46390\"}}","*${i} = of:0000000000000006","*{\"id\":\"of:0000000000000006\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"6\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46393\"}}","*${i} = of:0000000000000007","*{\"id\":\"of:0000000000000007\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"7\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46385\"}}","*Wait Until Keyword Succeeds, ${switches*2}, 2s, Check Mininet at Lower Level","*${switches*2}, 2s, Check Mininet at Lower Level","*Check Mininet at Lower Level","*<p>PoC for executing mininet commands at the lower level\x3c/p>","*SSHLibrary.Switch Connection","*<p>Switches the active connection by index or alias.\x3c/p>","*SSHLibrary.Read","*<p>Consumes and returns everything available on the server output.\x3c/p>","*dpctl dump-flows -O OpenFlow13","eNrNmc1v2jAYh+/9K3KaWsQqf7z+6pTTNE5oTF2lHZG/MkWlgJJMK//9gnaoMFmblDhebhYofvyzH+zXzGazrMbZx5Geq9Xi2/eH9WK5+pFVfr85ZNerBb6lN9n1c+ly9Exu7q4yu9s9lr5tYdQ+Eqj0TMI8c78q3ZS7bc5vKRH1PGu02bTfm2fb9V7bR9/UOTk2zKHxdY5526j91q2Lze73uvJP2b4qd1XZHHI4vnnuNuvmsD/2JKW1mbbHt9f559XXh/vVcvnl/o4zRtkZEWGMCyP7EaEXIvRPHjYv9/37B6o1Ejron46biAIyKBHhqR8xkb88utpfCkEvmpZXAWZHO0hqOxRTngaDlt2DhpdBUwLx7HAWi35EUewwGJyKm8hQOwqi3CkRlZPbcQ5x4bS8bQdNbof1QILkaVI7OEOCB9PAp7RDKirjJjLQDs55YU+JgE5tRwfEhdPyth2Q2g4NROMgeZ7WDguOBasTprSjcErETWSoHc4wEyTCJrdjZIg+drDkdhjRJnW6FlBSOwRVFPoRRbHDClzwuIkMtENAYYJKCNTUdnRA0NgnK57aDkMMK04HzdLWHUI7Rfv9dsexw7ef/Fd7h7CAg0oIJt87OiA4jmyHSG6HKkxwFcHS7h2S4CKohNiUd1aOaQNxExloh6RSyH5E8ewYG6KPHTK1HRYDdv3W4lR2KM5wSjtsgYO9S0BaO7R1YsRE3mfHOQSPbYdKboeUIriKEGntUEgb1I8oih0eqCBxExlohyKY8hETeZcdHRBcRbYDo8R6gDeCBQcJSVL+HcgNVVL2I4qhB0OCgI6byDA9uGEIBcdfMXXh0QVx4bS8CvBUbsutbz78bD79AfHqc+E=","eNqtysEKgyAcgPF7T/E/7FDiJLWVDLx2GjjYYMew9BBFRioUY+8+9w77bj/4Tm8XwxrDByQghMBTOP+pTLX3x7Nrb+oFm13nA3LVUsILyPfRyHJnxTWDwblptEm0TImKC3sRFQYTNx1Gt8iacNZ4DEH3c/owLN2qh8kGL9kP/RGsl7RO8HYxhJAvnsY18A==","*dump","eNqV1E1LwzAYwPG7n6Kn9aKS5MlrhydBPDlQ8AvM4ApdU9bADsPvbjob9yQ5hbJDyp/+CNmTzeC3r272zYF24fdg/YF0lDwuD22m/usJGOebb79t7jb/LQstS1oWW5W3EFpIWoityVseWp60fG0FzVsRWpG0IraQtzK0MmllbEXeqtCqpFWxLfamQ6uTVse22JsJrUlas7ay2Bsly2GQ9DRIzNH2dp8fH+fe7w+Xdjo57/ZumNuuaXeTHV8Gd6bQ/jRzONrBdZSpvw/dz9dzpt2bG+26YNdFFHStwHKBYYHdhHUBmFO0loOcA8wB5qDkeC3Hc45jjmOOl5yq5UTOCcwJzImC06SWkzknMScxJ0uu+s+ock5hTmFOlZys5XTOacxpzOmSM7WcyTmDOYM5U3CGVU82KUabJLNNiuE26MZ7t0fn7bMb/ckNgz1d2n5akHjlCBaQfTBuLzopIV7gsN4Tx37sR+uXxS+Ug993","eNpdysEKQEAQgOG7p5iD3Gx2ZzaxuXsQQinKOMm7G2XTbH//7cuv7eT95Bs6KFYO/XYwzLaVy5HnqrWVebOwL0OHjqiYOED2WyfWKeuirVOLYlFZjLZJLYklZemz3qbWi/XK+mhRW2PMAzJYQjQ=","*links","eNpd0DsOgzAURNE+q6BCpECy3/NXLIGCVaAYKaGJ968ouLC45ehMdYud91rM+K7LPL7q8r22HaZtHbb1+SgCF7jCFe7gDu7hHh7gAR7hEZ7gCZ7hGW4NA5n7oxURFJTuCr/+2t3BFe7hDh7gHh7hAZ7gEZ7hCd6CCBL2w+c4j3Ovf/oBSImv4A==","eNpTqc4vLSkoLalVsFXIMNRNLckwUMspsdZVSy+xLgbzDRU0/L0V/L01uTKM0OSN0OSN0eSN0eRN0ORN0ORN0eRN0eTN0OTN0OTN0eTN0eQt0OT19PQAQkZI/w==","*ports","eNpF0DsKAkEQhOHcU0xkJkx3z9vzLLqgazBzfxSsrc4K/i+qKeH1GTFMuW3rKUOwdGi4TEVURj3jf9mwHzMwIzMyc5bAElkiS84yWCbLZNlZAStkhaw4q2CVrJJVZw2skTWy5qyDdbJO1p1JPF+Nfmvkr+/92I9tXR/r/gVRGmoL","eNpFyjsKgDAQRdHeVUxhazDzSTHgcgQLIUKSSty7AcdJ9R7cM9+51avVBzYoEc6sa99lr0fUaA8VYSpoET3iH79HSp2RMXJGzmgwNsbO2BkPJsbEmTiTwZKxFEJ4AZUyOjE=","*Stop Mininet","*<p>Stop mininet topology\x3c/p>","*Stopping Mininet","*exit","eNpljzsOwjAYg/ecwgNTpFZN390YuAEjYkBp4I8oSVVHYuPslIEBao+29claaxxTnGcfbjCwMaQlTpNbqGwBpX/iAZMPd6p8q79mAT59suKoaMASrMAabMAW7MAeHECzQRSQyEQlBlJCKkgNaSAtpIP0kAHyXR1icMrGxzy55Eb4gD4fuhXn1hsj1enqxrhc9n7OTJF9bEqD13n3Bj01RL8=","*Wait Until Keyword Succeeds, ${switches*2}, 2s, Ensure No Switches are Available","*${switches*2}, 2s, Ensure No Switches are Available","*Ensure No Switches are Available","*<p>Verifies that the switch's availability state is false on all switches through all controllers\x3c/p>","eNrN0k1rxCAQBuC/ssw5G6Lm+7p0aS6bwxZ6KKVY1zRCqiFKlhLy36vtqYd68WI8zSsT5mHc4MZXwbiG9mUDcYMW1NBmfz8KCZivmdvL63P3dHq0NV2pmOj7ZMOBTponsChXwKW/PNj7z2FxhWBiocmhkyy14Xi3WT9zeVivd2HYaDPtMpySFB0/hMmrImNN6XK+CDq5fyjJbc1GqrXQnRvRDUSlVIYaoaSdfYN5UUYx5Rr68xsivx1S8umnA2WpOwijNi9JXcK+J/96UWxeFOrNvd48Nm8e6G2w11vE5i1C91t5vTg2Lw711l4vic1LQt8z8nrr2Lx16H4br7eJzduE7jfzesvYvGWol3i9VWzeKvQ9F9b7un8DGdu3UQ==","*Length is 2413","*${jsondata} = {u'devices': [{u'available': False, u'chassisId': u'a', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46386', u'protocol': u'OF_13'}, u'mfr': u'Nicira...","*${jsondata}, False","*${data} = {u'available': False, u'chassisId': u'a', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46386', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${status} = False","*${data} = {u'available': False, u'chassisId': u'1', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46384', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'4', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46392', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'5', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46387', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'2', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46388', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'3', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46391', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'8', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46389', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'9', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46390', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'6', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46393', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'7', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46385', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*Wait Until Keyword Succeeds, ${switches*2}, 2s, Ensure No Switches in Topology, ${cluster}","*${switches*2}, 2s, Ensure No Switches in Topology, ${cluster}","*Ensure No Switches in Topology","*<p>Verifies the topology sees no devices\x3c/p>","*${cluster}","*{\"time\":778322492077022,\"devices\":0,\"links\":0,\"clusters\":0}","*${devices} = 0","*${clusters} = 0","*${devices}, 0","*Argument types are:\n&lt;type 'str'&gt;\n&lt;type 'unicode'&gt;","*${max-switches} = BuiltIn.Convert To String","*<p>Converts the given item to a Unicode string.\x3c/p>","*Argument types are:\n&lt;type 'int'&gt;","*${max-switches} = 10","*${switches} = 20","*<p>Start mininet linear topology with 20 nodes\x3c/p>","*${mininet_conn_id} = 3","*Read output: Last login: Wed Jul  1 17:02:41 2015 from 10.0.0.121\n[fedora@ip-10-0-0-121 ~]$","*sudo mn --controller=remote,ip=10.0.0.152 --topo linea \nr,20 --switch ovsk,protocols=OpenFlow13","eNqtk81qwlAQhfc+xayKlSKZ/MeuiqtCd30C0dQbtAnk3OLr98wkFuvahXC4d/i+OeS6Wq1kO7a72PVH6dt4GcbTYsXDt8PBjvZDH8fhfG7H29MwIGKzCCohlZBJyCUUEkoJlYRaQiNBE/54rxxQTihHlDPKIeWUckw5lyZyS8ali/vQEg4VpIJMkAsKQSmoBLWgERAOwkE4CAfhIByEg3AQDsJxBz93/YnkZdAX3j/LMqQMqYWMIbOQM+QWCobCQslQWqgYKgs1Q22hYWgsaGLExKPDna6GV+erCdQNagp1h5pE3aKmUfeoidRNaip1l5pM3ZaaLTUb0rkJsrkJ8rkJirkJyrkJqrkJ6rkJmrkJvEDjSa9VMO3v+Gl/F0z7u2La3yXT/q6Z9nfRtL+rpv1d5vtbFf8426H/6o4/49/Deui7+oy7Md695P39HYevD+9R7269Xv93bD/eN4vvru/4L3s6xtdfIU3e0w==","*${conn_id} = 4","*Read output: Last login: Wed Jul  1 17:03:04 2015 from 10.0.0.121\n[fedora@ip-10-0-0-152 ~]$","eNrN109LwzAUAPCvMnKuJenftTcRxR104AYeREaapi5Qk9HGDRn77ibz5MF3eZfXXprXpuTHS17aM+v10Sg9s/btzEzPWuaGlv89JEuY/z7ocHPzutrePYa2PEozym4MQT996YRNLl6zp9vN9v4lPPA5TKH5bJSZZLJYWZWG4P4UYuuDtovj5mS82ofYHGNZmqfi5sP4oi65aqoY15ORY3yHszq01V7Os5lXcYxxRNJa56U3zobBn9lhct4pFzusH3Yi/+1hrR6vPQRP4yky0RZVwXN2uST/gnty4B4LbkCwJgfWWHAJgjty4A4JFjBYkQMrbIYLEDyQAw/YDFcQWAhy4OuQEOK8qcEUExRjwWCZFhk9cIZdxQIUc3pijs3xEpzUBTlxga1b8MdWSQ5cYuc0WKg5vVWMXsRgnb52JraIc6w4A1NMT4wFCxAs6FUtgS5b4M7El+TES+ychjemhhy4wWaYg+CKHLjCguFfppocuMZO6Zjh98sPYTZyBA==","*Length is 4838","*${jsondata} = {u'devices': [{u'available': True, u'chassisId': u'a', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46403', u'protocol': u'OF_13'}, u'mfr': u'Nicira,...","*Length is 20","*${length} = 20","*${data} = {u'available': True, u'chassisId': u'a', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46403', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${data} = {u'available': True, u'chassisId': u'd', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46409', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${data} = {u'available': True, u'chassisId': u'e', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46405', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${data} = {u'available': True, u'chassisId': u'b', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46415', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${data} = {u'available': True, u'chassisId': u'c', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46404', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${data} = {u'available': True, u'chassisId': u'f', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46416', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${data} = {u'available': True, u'chassisId': u'11', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46397', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': True, u'chassisId': u'1', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46399', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${data} = {u'available': True, u'chassisId': u'12', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46401', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': True, u'chassisId': u'10', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46398', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${INDEX} = 10","*${data} = {u'available': True, u'chassisId': u'4', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46413', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${INDEX} = 11","*${data} = {u'available': True, u'chassisId': u'5', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46406', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${INDEX} = 12","*${data} = {u'available': True, u'chassisId': u'2', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46407', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${INDEX} = 13","*${data} = {u'available': True, u'chassisId': u'13', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46402', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${INDEX} = 14","*${data} = {u'available': True, u'chassisId': u'3', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46412', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${INDEX} = 15","*${data} = {u'available': True, u'chassisId': u'14', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46411', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${INDEX} = 16","*${data} = {u'available': True, u'chassisId': u'8', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46408', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${INDEX} = 17","*${data} = {u'available': True, u'chassisId': u'9', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46410', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${INDEX} = 18","*${data} = {u'available': True, u'chassisId': u'6', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46414', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${INDEX} = 19","*${data} = {u'available': True, u'chassisId': u'7', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46400', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*{\"time\":778328373894303,\"devices\":20,\"links\":38,\"clusters\":1}","*${devices} = 20","eNq9mDtrw0AQhP/L1inubvWw1QXHhdtg0oQU0ukEJiE21hEIwv89Em4ScoiMyUidHic+NLN7sxrk7fD+2kv1PEh/9lINcjqeo1Sicidt+Dj4MJ4cu8r8PDK5jPf7+G2Fm1+RTyvi52m6+7B73G724/N9rON04X6z3z1txydAjBbGCDdhzL/U6m+MeXDrCBimQTFMzcBwsCiW4Y0AY3QMjBzGKBgYHYphDaNSMrhSlGFRuGANpWA9jNEwvFHAFi0ZX6OFv4ZnYMAWNUoQ5Vp+UMFSumgJe2PFECXAorQMjBzGyBjesLA3HMMbK9gba4YoHSwKIwSmuqguH4ktnL4so31dkyXkjYYhSg2LQrFoCWMUDAy4bxhK32hgDM+oFIUrhdHMbxiXGJE4lTeUMS45eGvT5eeU1NamjEis8Jzils8bqTnFMdLXX1ozhEH5v7GGvcGIxKmNXv9hQHi5fAH4O25R","eNpTqc4qzs9LSSxJrFWwVaguVc/JzMsuVrdSiAayi4uSgSwgIyW1LDM5FcguVc9PszJABSbqOkDxgvyiErACY/VaED+luIQIvaaoeo0geksqCyAaXDyDXJ1DwGqKSxJLIIKOziGeYa4glTidqKenBwBG5D7y","*Length is 38","*${length} = 38","eNrtnV1rG0cUhv/LXqtwzpyPmfFdwabNTWqoc1GCCbK8bkVty6zWLSbov3dWAZOCNx3CaHzGVW68tmLt6uE9n3Nm/Lm7ud38ve1OPn7u1tfdSecCsveo7ANKcN2iWz48vEuv4KL7fdg87q9h0T0M682wHp+6E1l04/qu3zyO+xfW2/N+uFve9/fp+3F47Bfddf/XetVPv9htbk7g3/+W6RbbcTn26dUfT0/PTtP3t+ub/stdlqs/+3G7v756GvsvV7fL7fhr39+nh2IS7wFDRJ9eGId+Od7t75w+zv023X41rjf3Xz7f+PQw3eSXDxfnHy7SXR42Q/qPP9DucnrEm34Y+vSIHy936YH62341bobpfVbpY/bDevn1e5xd/Pzp4rfzs/Qu/fjHxf6HDoR3l7vd4rtJ8sTDCE20STOqeCFQSzT5mSY5tsqTBCm8LE8vAbUhQ399aXJ4UZqsGCE0J014dWmCgxelGVTSEx5emteFpCliVZqaxOljHWnm0XTPNFGdVZ5zXjOFIcF03RxQtmvrHqJIQ7bOVvPNbJLVpNk0zcgxwOF12RciqWQ2BkVmD3V02Rdzma/O8xsxKCB41xxQZzYGRQDP2pCtO6teM5tkNWk24Tlneh4KAtHXoXmVRROfaQZ8GaejYLblERDJ0+Ht/KqMMh15s9lRLslqymyaJoiCb0iXwWwrLrnzGFvzmN5oZpQiEHEIlVqbq2KtTVS7IYjT0/HhTX1VKDlCMes0c0lWk2YGTTVLk4RiaEiXajUEicNUBjXnMsVude6mr4eX5k2p7MjsQqV37LTS4kUeTXqm6Zis8pzvxClCUGoOqN2V30gg5BuydbPTR9kkq0mzCc85Q9NpJD38RAJiIZJoNQZJFOFKMSiTZsbihUO7LtP5FJ6kIWmadZnZJKtJswlDn1m8AA1B4tHQSyWbAoSRKxWWWKi3icGs4yRiCVyh5VHI1DGYjenIQhSOyizUJKb0iiK3o0wfjYb0fJLVlJlh50YTpJS7B3FSZ/AIXal2BxLZzd1jRD38kGEmzP+WJrHNEKRMwNFpQyTJahWUTbKakbdLM1VBMahAcy6TzS6gO4riD5+1IxQq0A1E87lOnBOtNJedSTOnQH/1XHN+WAYogobWgNqtg9ilupK5HVs3Wwflk6wmzSY850xVmZ7RuQoTCVyIpDiznSOHhJUW0LmYyxS0GoPEEXvEI9BivTjmlML7hmzdrtfMJVlNmhk0rS6vCQoiVOpsShZNfabJQef2WtldDuJUp2OFg4+k1LY1o8tBiaQHX6FEL0fSrsvMJVnNyJvQ5YzLdMrJ+ptzmXZzI0oXUOHsjlJtYvFm1ylzSRaQ5v+Aphel2JAure6nFFD0hJZ0meMyxeyGSkEv6GJzQO3u6aep4XH4+nzfpCqycc3s+Gs2yQI94mI07Y6/ogCTJZo5C7+IZmdlyIXkPhsydKtNd0UXmLE5aTq7k9kpQrpKhSUVO5Arqt1eXPKqVOHwvVK2HtVsLy659KgNkRSzvbhcktWMvAldzvXipilDOLrMcnXQ1NysMBfHpdrEZk9+zSZZID0qRlPM1kHMgbgxmnaPyyYJnl1DZm72aPzpj7OQO5p5obUgSRl7qLAWFErtsrJ6gJSQUPCV1oJCsdQoqNny3DGki+aAmj2Ri2TqbmJDtm62qMwmWU2aTXjOOZqB0VdodsRC04Vgdi7beXCVtrJk0swZIwa06zJDjBXy9nLSBLtGnkmymjQzaJqdiaNAqno09HLJZhJnrLSjRUsdIqV2t19EDlDhTza8GZTzW60ChCiNCdNwDQQgFU6EfDso5wN6Lsmjx8wJ6I4hVNoX5L+ieX72/vTd+58+JarfWVey3aP3HIIGbREqRbse1LHECqecvTGVzo56CAEpHC2/aGzKZWpLo1Zi/eXuH7Slj+g=","*${jsondata} = {u'flows': [{u'life': 0, u'isPermanent': True, u'packets': 0, u'treatment': {u'deferred': [], u'instructions': [{u'type': u'OUTPUT', u'port': -3}]}, u'groupId': 0, u'priority': 5, u'bytes': 0, u'state...","*Length is 100","*${length} = 100","*${devicedata} = {u'available': True, u'chassisId': u'a', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46403', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${devicedata} = {u'available': True, u'chassisId': u'd', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46409', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${id} = of:000000000000000d","*[u'of:000000000000000a', u'of:000000000000000d']","*${devicedata} = {u'available': True, u'chassisId': u'e', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46405', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${id} = of:000000000000000e","*[u'of:000000000000000a', u'of:000000000000000d', u'of:000000000000000e']","*${devicedata} = {u'available': True, u'chassisId': u'b', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46415', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${id} = of:000000000000000b","eNqLLlXPT7MyQAWJ6joK2MRTcIin4hBPUo8FAC+RFbE=","*${devicedata} = {u'available': True, u'chassisId': u'c', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46404', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${id} = of:000000000000000c","eNqLLlXPT7MyQAWJ6joK2MRTcIin4hBPwiGerB4LAHqAGwI=","*${devicedata} = {u'available': True, u'chassisId': u'f', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46416', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","*${id} = of:000000000000000f","eNqLLlXPT7MyQAWJ6joK2MRTcIin4hBPwiGejEM8TT0WAEUfIFY=","*${devicedata} = {u'available': True, u'chassisId': u'11', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46397', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${id} = of:0000000000000011","eNqLLlXPT7MyQAWJ6joK2MRTcIin4hBPwiGejEM8Dbu4oaF6LACPAyV2","*${devicedata} = {u'available': True, u'chassisId': u'1', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46399', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","eNqLLlXPT7MyQAWJ6joK2MRTcIin4hBPwiGejEM8Dbu4oSEO9YbqsQBT8iqV","*${devicedata} = {u'available': True, u'chassisId': u'12', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46401', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${id} = of:0000000000000012","eNqLLlXPT7MyQAWJ6joK2MRTcIin4hBPwiGejEM8Dbu4oSEO9TjEDY3UYwGT0C+2","*${devicedata} = {u'available': True, u'chassisId': u'10', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46398', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${id} = of:0000000000000010","eNqLLlXPT7MyQAWJ6joK2MRTcIin4hBPwiGejEM8Dbu4oSEO9TjEDY1wiBuoxwIATs801Q==","*${devicedata} = {u'available': True, u'chassisId': u'4', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46413', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","eNqLLlXPT7MyQAWJ6joK2MRTcIin4hBPwiGejEM8Dbu4oSEO9TjEDY1wiBvgMMdEPRYAhL459w==","*${devicedata} = {u'available': True, u'chassisId': u'5', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46406', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","eNqLLlXPT7MyQAWJ6joK2MRTcIin4hBPwiGejEM8Dbu4oSEO9TjEDY1wiBvgMMcEh7ipeiwANe8/Gg==","*${devicedata} = {u'available': True, u'chassisId': u'2', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46407', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","eNqLLlXPT7MyQAWJ6joK2MRTcIin4hBPwiGejEM8Dbu4oSEO9TjEDY1wiBvgMMcEh7gpDnEj9VgAYl9EOg==","*${devicedata} = {u'available': True, u'chassisId': u'13', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46402', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${id} = of:0000000000000013","eNqLLlXPT7MyQAWJ6joK2MRTcIin4hBPwiGejEM8Dbu4oSEO9TjEDY1wiBvgMMcEh7gpDnFc5hurxwIACeVJXA==","*${devicedata} = {u'available': True, u'chassisId': u'3', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46412', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","eNqLLlXPT7MyQAWJ6joK2MRTcIin4hBPwiGejEM8Dbu4oSEO9TjEDY1wiBvgMMcEh7gpDnFc5hvjUG+sHgsALJdOfQ==","*${devicedata} = {u'available': True, u'chassisId': u'14', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46411', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${id} = of:0000000000000014","eNqLLlXPT7MyQAWJ6joK2MRTcIin4hBPwiGejEM8Dbu4oSEO9TjEDY1wiBvgMMcEh7gpDnFc5hvjUI9D3NBEPRYAymhToA==","*${devicedata} = {u'available': True, u'chassisId': u'8', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46408', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","eNqLLlXPT7MyQAWJ6joK2MRTcIin4hBPwiGejEM8Dbu4oSEO9TjEDY1wiBvgMMcEh7gpDnFc5hvjUI9D3BCXvRbqsQDjmFjG","*${devicedata} = {u'available': True, u'chassisId': u'9', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46410', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","eNqLLlXPT7MyQAWJ6joK2MRTcIin4hBPwiGejEM8Dbu4oSEO9TjEDY1wiBvgMMcEh7gpDnFc5hvjUI9D3BCXvRY4xC3VYwF4al3t","*${devicedata} = {u'available': True, u'chassisId': u'6', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46414', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","eNqLLlXPT7MyQAWJ6joK2MRTcIin4hBPwiGejEM8Dbu4oSEO9TjEDY1wiBvgMMcEh7gpDnFc5hvjUI9D3BCXvRY4xC1xiJupxwIAiNtjEQ==","*${devicedata} = {u'available': True, u'chassisId': u'7', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46400', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'role...","eNqLLlXPT7MyQAWJ6joK2MRTcIin4hBPwiGejEM8Dbu4oSEO9TjEDY1wiBvgMMcEh7gpDnFc5hvjUI9D3BCXvRY4xC1xiJvhEDdXjwUAFL5oNg==","*{\"id\":\"of:000000000000000a\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"a\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46403\"}}","*${i} = of:000000000000000d","*{\"id\":\"of:000000000000000d\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"d\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46409\"}}","*${i} = of:000000000000000e","*{\"id\":\"of:000000000000000e\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"e\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46405\"}}","*${i} = of:000000000000000b","*{\"id\":\"of:000000000000000b\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"b\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46415\"}}","*${i} = of:000000000000000c","*{\"id\":\"of:000000000000000c\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"c\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46404\"}}","*${i} = of:000000000000000f","*{\"id\":\"of:000000000000000f\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"f\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46416\"}}","*${i} = of:0000000000000011","*{\"id\":\"of:0000000000000011\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"11\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46397\"}}","*{\"id\":\"of:0000000000000001\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"1\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46399\"}}","*${i} = of:0000000000000012","*{\"id\":\"of:0000000000000012\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"12\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46401\"}}","*${i} = of:0000000000000010","*{\"id\":\"of:0000000000000010\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"10\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46398\"}}","*{\"id\":\"of:0000000000000004\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"4\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46413\"}}","*{\"id\":\"of:0000000000000005\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"5\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46406\"}}","*{\"id\":\"of:0000000000000002\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"2\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46407\"}}","*${i} = of:0000000000000013","*{\"id\":\"of:0000000000000013\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"13\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46402\"}}","*{\"id\":\"of:0000000000000003\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"3\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46412\"}}","*${i} = of:0000000000000014","*{\"id\":\"of:0000000000000014\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"14\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46411\"}}","*{\"id\":\"of:0000000000000008\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"8\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46408\"}}","*{\"id\":\"of:0000000000000009\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"9\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46410\"}}","*{\"id\":\"of:0000000000000006\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"6\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46414\"}}","*{\"id\":\"of:0000000000000007\",\"type\":\"SWITCH\",\"available\":true,\"role\":\"MASTER\",\"mfr\":\"Nicira, Inc.\",\"hw\":\"Open vSwitch\",\"sw\":\"2.3.1-git4750c96\",\"serial\":\"None\",\"chassisId\":\"7\",\"annotations\":{\"protocol\":\"OF_13\",\"channelId\":\"10.0.0.121:46400\"}}","eNrF28tuIkcUBuD9PEWvohmLWHU5py4TsYrilRWiyUhZorpGaDyAgCjjtw8kC0wPRFWtOhS7lhH9129/dFVX++HhYdjz4cdGr3eLp99+/7x8el78MezS9uV1eL944o/yw/D+2yrO2Tfx4eO7IWw2X1bpeMTZ8WVAmoQGZkP8a+cOq816rh6N4vvZcHD+5fi+2bBebl34kg77uTwd+NdD2s8FHA/2aR2X+WXz93KXvg7b3WqzWx1e53D65Fl8WR5et6czGRPC4MLp0/fznxe/fv60eH7+5dNHhSjxu0QCUWlvRonY9UTsnIjdzIOz1bb8/CCdY9rRNmJBVDWik0xliYoa+S+P2217hsD/D/Bw0iF667Bok7wctL3xt8jfjNpwRscjBq7LIpHw8ByiJa6k1kcWNjasZJqPxiFKfMjuPkICcTlotNcHrc6DBqPIeChkWo0S6XvyMFaOrl5o2jZSqUMplUNZIjodV0Ioah3QW4cD4fjloDnrqyNAxLJENDpytJq2kVod0aNv2Mg0HY1DlOjA7jq8Pjb1dtCWmb5zKy2thFEkcUceQfOsRufnfedWGrJ3Zb8lOh+tQ5T4UL19eOExl82t8M13JUM6Hi5aWZaIhkc6/oS2kVodAbht2Mg0HY1DlOjQ3XXY7C9vRzC48VUN50FLAWQ6jOBZlCUi0RHReaBtpFKHkUabho1M0nEtBPV9K9NbR+DAY9lERp8HjUrT6bAKednUhkZHyFyWnX9qI7U6XIi6YSPTdFwJIYh12O46jNGjmxFWdF2XW+Y8K0tEoiOB1IK2kUodVnCpGjYySce1EJJYB2edeUDyGkerYHFjtWXOo1ZgqHgoL60xZYkoeCDTAhxtI3U8lEfGUsNGpvBoHqKIR+8dc8jC+9EqWOme63LlXUy6LBENj6ScpW2klkcAFRs2Mo1H4xBFPER3Ho7xy6mEtdj16hGEAFWWiIQHR88MbSOVPII8VtiwkUk8Woco4tF7xxwZBz1aB996jOY+aw8VrHJYloiGR8hK0zZSy8NF4Rs2Mo1H4xBFPKA7D2PiaFOw9eMTlTwi8wzKEpHwECCDom2kkkcU3LiGjUzi0TpEEQ/sziNHMdoTtLbnfV0VdVbjJyTvysMbgWXnv899XRUtJtuwkWk8roSg3hPkvbfMQRnjxg//Yderh2QuurJEFDzg32c0aRup5CEFV6xhI5N4tA5RxEN355EjG830Zd+1h9RZ2rJENDy8zp62kVoeFn1u2Mg0Ho1DFPHovWkOWnP1dqavHxnHrpMredRhyhKR8LAioKNtpJIHMMdTw0Ym8WgdooiH7c4jYZCXowbZlQconXVZIhoejnlL20gtD510bNjINB6NQxT9p2D3XXODToz3PW7s9ojzqLkSdDxiQFWWiISH48gNbSO1PLKIoWEj03hcCQF0PL6u1qt1Ovzw5+GnfwCLfOn8","eNqtyrEKgzAUQNHdr3hDBw1pMCaVUMjqVLDQQkeJmiEoRswLKKX/3vQfercD9/T2EdeIH9BACIHA4fynsra5P55dc2tfsNl1PiBvG85EAfnuRl3uVXHNYPB+cjaJlyklhbIXJSmMcTPo/KJrpmoeKKDp5/RRWLrVDJPFoMUP/YE26EomBLuMjLEvn3U19A==","eNqVl81qGzEURvd9ill5Nm3Rp39N6KpQsmqggb6AO8QDkxljD2QR+u6RnFGiq7sSwQuZAwfxeY6dw7zd3a/XrTthiK9v43YSA8T39IfuPP37oeHc4Wm7674cPlgZWUlYmdlQsyqyirBqZz1qVkdWE1ZnVtWsiawhrMmsqVkbWUtYm1l2NxdZR1iXWXY3H1lPWL+zQdZsiGwgbMisrlmINIaga4iMW4bftqvGy+sFz/A0H+h+2AeUQjA8LQg6IVTG2T2RRgRdETrj/KppR9AhYTLOr5qmBN0SNuP8qmlN0Dmx7ynBr5oGBV0UPuP8qmlT0FERMs6uKtOqkq4qRcaLqz78fXx8mbbj6bU/X9ZtPa7ztR+6/uE8Lr/m9QWq/99d4+jzOkC6d+/X6+0DgOH3uoz7Qd4Ou0Gi1SBrgywN8tOwHxTR6VadqnWq1KlSp7jOtep0rdOlTpc6zXRKtOpMrTOlzpQ6w3WqVWdrnS11ttRZrmv+MLpa50qdK3WO60Krztc6X+p8qfNMp2WrLtS6UOpCqQtcZ5qfbMEebUGebVEa309U6ZuVvCY0JyBKMKVprgtYXkD6AhIY8MKY5sKAJQakMSCRAa+Maa4MWGZAOgMSGvDS2ObSgKUGpDUgsQGvjW2uDVhuQHoDEhzw4tj2rz+WHJDmgEQHvDq2uTpg2QHpDkh4wMvjmssDlh6Q9oDEB7w+rrk+ktVHkvpIwX5auKI3f8bndRt/rst2Wed5vLz20zlJPn7bySg5RsfnG4O1Kv9T4PaOPE/LtIxbOrwBKHe7EQ==","eNpdyjkKgDAQQNHeU0whdgYnC27YexDFCEIEx0q8uyMYZMLndy+/wkn7STcMUGzUj+Eg8Njx5Uy+6rBSbwj7Og0W67pYqIfst5qtFlZH26bWsDXCms82mFrL1gprozWpdWydsC5aJ61S6gE5z0JF","eNpl0jtqw1AURdE+o3BlnMKg856+eAguNAoRGRI30fwJsQuZ5fKyT7W4a87LtjbH7+1yPn5tl9/HncNpvh7m6+fHWuiFXumV3tJbekfv6D29pw/0gT7SR/pEn+hpBGpcvBFqGBGjYmSMjhEySkbKaBkxo2bkjJ4RNIpG0mhaNC2YPr+s8JVl75X+2Ne9t/RK7+gtvad39IHe00f6QJ/oI/35ZIW3fB1EocbFm2FcqBgZo2OEjJKRMlpGzKgZOaNnBI2ikbRIGkx/bvfbfdn+2x8UHmu4","eNpN0Ttuw1AMRNHeq1CVLoDue/pnPUZiIHEKaf9IAJMz7AjMrXhOhu/fYxxO3u/XFwdxtaMNt7PF2DS2HF9XP/p/1iPryrqy7myKbFI2KZuczZHNymZls7MlskXZomxxtka2KluVrc62yDZlm7LN2R7ZrmxXtjtjzK+Ofuuo8nVGKoAigFNKmhzYA4NQREgSbIJRKCokC3bBMBQZkgbbYByKDsmDfTAQRYgkwkYYiaJEMmEnDEWRIqmwFcaiaLXUatZq0rr9PJ6P5/16+7w+/gAxu9yg","eNqN0LFOwzAUheHdT3EGpkitcp02TTYG3qAjYkCJ4UQEO8q1xNZn5zAgARP2Zv/+dOWmaXCtZduW/ArDVHLdy7qm3cPUIjQ/r7sR65LfPBz/t36/ji38Y6kTkwc3eIR38BP8DO/hF/gAH+GmznRvCkyFKTE1pshUmTJTF/+OpwMWrx5oYAQ78ASewR68gAM4gtIpndIpndIpndIpndIpnd/6Q8kpTOV9W1NNM5YMs2M/aMakv5o9PL6kuezP98t2sPbwtS0abk93nx7GW4A=","eNrN171qwzAQAOBXCZpdo/Nv7DW0NEsypNChlKLIci1wpWCbhBLy7pXSqUNvueXsSSdk7uOks30VnTlbbWbRvl2F7UQrfN/Kv5cSiVi+TyZMHl63L5vnMFZnZUd1HEOwV+NsEjH5OBC7/e4xzH/1UxxYbSeVrLZOpyE4XEJsfzJudT5c7KKHEJtjLEvzFB4+7VLUpdRNFeNmsmqMz/DOhLEe1DzbeRtTjAkp5/yiFutdyP0qTpNfvPZxwf7pA/LfFc6Z8b4CZBpvyKAtqkLm4nZL/vV23Lwd1dugXsPNa6jeEvUeuXmPRC/gXs3Nq6n1LVBvz83bU+tbYV4Abt57RgRw3tRogfmBqV60QUPGzptRTzCgYMkOLKkVXqM7uuAGLqgtC//EKrl5S+qGRlu0ZHeCyQcY7dD3xbwOcE4FZ2iB2YGpXkC9wK5hAbljoa8kueYGXlM3NP5Garh5G2p9JeqtuHkrqhf/Saq5eWvqfo71fb/9ADaKa7A=","*Length is 4818","*${jsondata} = {u'devices': [{u'available': False, u'chassisId': u'a', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46403', u'protocol': u'OF_13'}, u'mfr': u'Nicira...","*${data} = {u'available': False, u'chassisId': u'a', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46403', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'd', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46409', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'e', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46405', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'b', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46415', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'c', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46404', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'f', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46416', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'11', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46397', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'ro...","*${data} = {u'available': False, u'chassisId': u'1', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46399', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'12', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46401', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'ro...","*${data} = {u'available': False, u'chassisId': u'10', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46398', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'ro...","*${data} = {u'available': False, u'chassisId': u'4', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46413', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'5', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46406', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'2', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46407', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'13', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46402', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'ro...","*${data} = {u'available': False, u'chassisId': u'3', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46412', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'14', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46411', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'ro...","*${data} = {u'available': False, u'chassisId': u'8', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46408', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'9', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46410', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'6', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46414', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*${data} = {u'available': False, u'chassisId': u'7', u'sw': u'2.3.1-git4750c96', u'hw': u'Open vSwitch', u'annotations': {u'channelId': u'10.0.0.121:46400', u'protocol': u'OF_13'}, u'mfr': u'Nicira, Inc.', u'rol...","*{\"time\":778334956950892,\"devices\":0,\"links\":0,\"clusters\":0}","*${max-switches} = 20","*${max} = 20","*${max}","*20","*${SWITCHES_RESULT_FILE}, ${max}\\n","*ONOS Suite Setup","*<p>Transfers the ONOS dist over to the test vm and start the controller. We will leverage the bash script, \"onos-install\" to do this.\x3c/p>","*${CONTROLLER_IP}, ${CONTROLLER_USER}","*Create Controller IP List","*<p>Creates a list of controller ips for a cluster. When creating a cluster, be sure to set each variable to %{OC} env vars in the variables section\x3c/p>","*@{controller_list} = BuiltIn.Create List","*${CONTROLLER_IP}","*@{controller_list} = [ 10.0.0.152 ]","*@{controller_list}","*${rc} = OperatingSystem.Run And Return Rc","*<p>Runs the given command in the system and returns the return code.\x3c/p>","*onos-package","*Running command 'onos-package 2&gt;&amp;1'","*${rc} = 0","*${rc}, 0","*onos-install -f ${ip}","*Running command 'onos-install -f 10.0.0.152 2&gt;&amp;1'","*Create HTTP Sessions","*<p>Creates an http session with all controllers in the cluster. Session names are set to respective ips.\x3c/p>","*${HEADERS} = Collections.Create Dictionary","*<p>Creates and returns a dictionary based on given items.\x3c/p>","*Content-Type, application/json","*${HEADERS} = {u'Content-Type': u'application/json'}","*RequestsLibrary.Create Session","*<p>Create Session: create a HTTP session to a server\x3c/p>","*${ip}, <a href=\"http://${ip}:${RESTCONFPORT}\">http://${ip}:${RESTCONFPORT}\x3c/a>, headers=${HEADERS}","*Argument types are:\n&lt;type 'bool'&gt;","*60s, 2s, Verify All Controller are up","*Verify All Controller are up","*<p>Verifies each controller is up by issuing a rest call and getting a 200\x3c/p>","*Starting new HTTP connection (1): 10.0.0.152","*ConnectionError: ('Connection aborted.', error(111, 'Connection refused'))","*Starting new HTTP connection (2): 10.0.0.152","*Starting new HTTP connection (3): 10.0.0.152","*Starting new HTTP connection (4): 10.0.0.152","*Starting new HTTP connection (5): 10.0.0.152","*${resp} = &lt;Response [404]&gt;","eNrtVLFugzAQ3fMVJw9s1E2USimELFWqtkODaH7AwDUggU3tCy1/XwyNI6aqWwduunf33tPTSbZXUVhQXXknCheeBShyB2okAQVR4+PHuWwj9qAkoST/2DXIIBtRxAi/iFubMCuENkjR89vB32zu7v0l486OSqrQor3WSsP6dg2viuBRnWVu99wRBjqfZElV3l1Trmz7dDzGsE+SQxJYs1GzcqTGdrFWaYU1iCxDY0p5Aq6kMrxd8hzbsh/eQILCKBmMIj0EgL6m2X4WY38NooFfxuWlMbWohovG6hM15pB2sO0PqfE9Yi9I1AWcD0aOOSBrwHa/ELZc7MIF/LFmwSyYBf9bMDzxyTfH3df8DW3wEFU=","*404 != 200","*${resp} = &lt;Response [401]&gt;","*401 != 200","*${resp} = &lt;Response [503]&gt;","*{\"code\":503,\"message\":\"Service org.onosproject.net.device.DeviceService not found\"}","*503 != 200","*{\"devices\":[]}","*ONOS Suite Teardown","*<p>Stop ONOS on Controller VMs and grabs karaf logs on each controller (put them in /tmp)\x3c/p>","*onos-kill","*Running command 'onos-kill 2&gt;&amp;1'","*cp ${SWITCHES_RESULT_FILE} ${JENKINS_WORKSPACE}","*Running command 'cp /home/fedora/workspace/tools/switches.csv /home/fedora/workspace/ONOS-Stable/ 2&gt;&amp;1'","*rm ${SWITCHES_RESULT_FILE}","*Running command 'rm /home/fedora/workspace/tools/switches.csv 2&gt;&amp;1'","*Clean Mininet System","*<p>Cleans the mininet environment (sudo mn -c)\x3c/p>","*Run Command On Remote System","*${mininet_system}, sudo mn -c, ${CONTROLLER_USER}, ${LINUX_PROMPT}, 600s","*Attempting to execute sudo mn -c on 10.0.0.121","*${conn_id} = 5","*Read output: Last login: Wed Jul  1 17:02:51 2015 from 10.0.0.121\n[fedora@ip-10-0-0-121 ~]$","*sudo mn -c","eNrFUsFq3DAQvfsrhlC6rYNWcW7ZEiiUnnooNKUEzBIca7xWV9YIz9i7h5Jvr2ScjX3qsegympn35klv8jyHH9jRaP0B8FwjM9TkpSfnsGdNTehJqCaXYlNJFSppWYfYz9rTGTk7Wucq5xY4eIPBGwoSCCLmqaYewYm6xDSyooC+cXQy021BNpjwfBJkgc7jGWuwI8Pt+4N8Am1w1H5w7iJC3f1fHSEJSSpUA1c8GJqbr7J8+dW/B3+EpqcOtHQh67vUn0I9xok+n2NHB57jfEuDvIYxv+YjZ+CxKEAG79Hxujj7esQ+1uBiYhYYqjP8ATz0GEARbEwob9Td/noTs4wGNqxN0N7t9GaifOP8/uthwZR+auRa4suV2A6j1PsCnGVRz/0/qiupyUJn/ZGjXyAtQuSXqBsaIoXSPmY2TA3ALZ1W2j+U6mlb7irnh26331+n9rLcGXuwku4fNyvsNPdbNCuNZakcQme99ShxNUwc3FP6tbjfS0vnlt2EfmgHkQQ3dPIzx6sBS9DPKXf/Nb4nOiCr2pa51Z2fN+BFz3edTxO+OKz8EOJKd8Gh4DYrGzTUV59tUMWNSqe4LeBl/+4vjaRONQ==","*${output} = *** Removing excess controllers/ofprotocols/ofdatapaths/pings/noxes\nkillall controller ofprotocol ofdatapath ping nox_core lt-nox_core ovs-openflowd ovs-controller udpbwtest mnexec ivs 2&gt; /dev/null\n...","*Get Karaf Logs","*<p>Compresses all the karaf log files on each controler and puts them on your pybot execution machine (in /tmp)\x3c/p>","*${controller}, tar -zcvf /tmp/${SUITE NAME}.${controller}.tar.gz ${ONOS_HOME}/log","*Attempting to execute tar -zcvf /tmp/ScalePOC.10.0.0.152.tar.gz /opt/onos/log on 10.0.0.152","*${conn_id} = 6","*Read output: Last login: Wed Jul  1 17:03:15 2015 from 10.0.0.121\n[fedora@ip-10-0-0-152 ~]$","*tar -zcvf /tmp/ScalePOC.10.0.0.152.tar.gz /opt/onos/lo \ng","*tar: Removing leading `/' from member names\n/opt/onos/log\n[fedora@ip-10-0-0-152 ~]$","*${output} = tar: Removing leading `/' from member names\n/opt/onos/log\n[fedora@ip-10-0-0-152 ~]$","*SSHLibrary.Open Connection","*${controller}, prompt=${LINUX_PROMPT}, timeout=${prompt_timeout}","*${CONTROLLER_USER}, ${USER_HOME}/.ssh/id_rsa, any","*Read output: Last login: Wed Jul  1 17:03:21 2015 from 10.0.0.121\n[fedora@ip-10-0-0-152 ~]$","*SSHLibrary.Get File","*<p>Downloads file(s) from the remote machine to the local machine.\x3c/p>","*/tmp/${SUITE NAME}.${controller}.tar.gz, /tmp/","*[chan 1] Opened sftp connection (server version 3)","*'/tmp/ScalePOC.10.0.0.152.tar.gz' -&gt; '/tmp/ScalePOC.10.0.0.152.tar.gz'"]);
</script>
<script type="text/javascript">
window.output["generatedTimestamp"] = "20150701 17:03:07 GMT 00:00";
</script>
<script type="text/javascript">
window.output["errors"] = [];
</script>
<script type="text/javascript">
window.output["stats"] = [[{"elapsed":"00:00:22","fail":0,"label":"Critical Tests","pass":1},{"elapsed":"00:00:22","fail":0,"label":"All Tests","pass":1}],[{"elapsed":"00:00:22","fail":0,"label":"done","pass":1}],[{"elapsed":"00:01:01","fail":0,"id":"s1","label":"ScalePOC","name":"ScalePOC","pass":1}]];
</script>
<script type="text/javascript">
window.output["generatedMillis"] = 60908;
</script>
<script type="text/javascript">
window.output["baseMillis"] = 1435770126092;
</script>
<script type="text/javascript">
window.settings = {"defaultLevel":"INFO","minLevel":"INFO","reportURL":"report.html","splitLogBase":"log","title":""};
</script>
<title></title>
</head>
<body>
<div id="javascript-disabled">
  <h1>Opening Robot Framework log failed</h1>
  <ul>
    <li>Verify that you have <b>JavaScript enabled</b> in your browser.</li>
    <li>Make sure you are using a <b>modern enough browser</b>. Firefox 3.5, IE 8, or equivalent is required, newer browsers are recommended.</li>
    <li>Check are there messages in your browser's <b>JavaScript error log</b>. Please report the problem if you suspect you have encountered a bug.</li>
  </ul>
</div>
<script type="text/javascript">removeJavaScriptDisabledWarning();</script>

<div id="header"></div>
<div id="statistics-container"></div>

<script type="text/javascript">
$(document).ready(function() {
    try {
        var topsuite = window.testdata.suite();
    } catch (error) {
        addJavaScriptDisabledWarning(error);
        return;
    }
    initLayout(topsuite.name, 'Log');
    addStatistics();
    addErrors();
    addTestExecutionLog(topsuite);
    addLogLevelSelector(window.settings['minLevel'], window.settings['defaultLevel']);
    if (window.location.hash) {
        makeElementVisible(window.location.hash.substring(1));
    } else {
        expandSuite(topsuite);
    }
});

function addLogLevelSelector(minLevel, defaultLevel) {
    var controller = LogLevelController(minLevel, defaultLevel);
    if (controller.showLogLevelSelector()) {
        var selector = $.tmpl('logLevelSelectorTemplate', controller);
        selector.find('select').val(controller.defaultLogLevel());
        selector.appendTo($('#top-right-header'));
        $('#report-or-log-link').find('a').css({'border-bottom-left-radius': '0'});
        setMessageVisibility(controller.defaultLogLevel());
    }
}

function addErrors() {
    var errors = window.testdata.errorIterator();
    if (errors.hasNext()) {
        $.tmpl('errorHeaderTemplate').appendTo($('body'));
        drawErrorsRecursively(errors, $('#errors'));
    }
}

function drawErrorsRecursively(errors, target) {
    var elements = popFromIterator(errors, 10);
    $.tmpl('errorTemplate', elements).appendTo(target);
    if (errors.hasNext())
        setTimeout(function () { drawErrorsRecursively(errors, target); }, 0);
    else {
        // Errors may have moved scroll position. Resetting location re-scrolls.
        if (window.location.hash)
            window.location.replace(window.location.hash);
        highlightLinkTarget();
    }
}

function highlightLinkTarget() {
    if (window.location.hash) {
        var target = $(window.location.hash);
        highlight(target);
    }
}

function highlight(element, color) {
    if (color === undefined)
        color = 242;
    if (color < 255) {
        element.css({'background-color': 'rgb('+color+','+color+','+color+')'});
        setTimeout(function () { highlight(element, color+1); }, 300);
    } else {
        element.css({'background-color': ''});
    }
}

function popFromIterator(iterator, upTo) {
    var result = [];
    while (iterator.hasNext() > 0 && result.length < upTo)
        result.push(iterator.next());
    return result;
}

function makeElementVisible(id) {
    window.testdata.ensureLoaded(id, function (ids) {
        util.map(ids, expandElementWithId);
        if (ids.length) {
            expandCriticalFailed(window.testdata.findLoaded(util.last(ids)));
            window.location.hash = id;
            highlightLinkTarget();
        }
    });
}

function addTestExecutionLog(main) {
    $('body').append($('<h2>Test Execution Log</h2>'),
                     $.tmpl('suiteTemplate', main));
}
</script>

<script type="text/x-jquery-tmpl" id="totalStatisticsRowTemplate">
  <tr class="row-${$item.index}">
    <td class="stats-col-name">
      <div class="stat-name">
        <span>{{html label}}</span>
      </div>
    </td>
    {{tmpl($data) 'statColumnsTemplate'}}
  </tr>
</script>

<script type="text/x-jquery-tmpl" id="tagStatisticsRowTemplate">
  <tr class="row-${$item.index}">
    <td class="stats-col-name" title="{{html doc}}">
      <div class="stat-name">
        <span>{{html label}}</span>
        {{if info}}(${info}){{/if}}
      </div>
      <div class="tag-links">
        {{each links}}
        <span>[<a href="{{html $value.url}}" title="{{html $value.url}}">{{html $value.title}}</a>]</span>
        {{/each}}
      </div>
    </td>
    {{tmpl($data) 'statColumnsTemplate'}}
  </tr>
</script>

<script type="text/x-jquery-tmpl" id="suiteStatisticsRowTemplate">
  <tr onclick="makeElementVisible('${id}')" class="row-${$item.index}">
    <td class="stats-col-name" title="{{html label}}">
      <div class="stat-name">
        <a href="#${id}"><span class="parent-name">{{html formatParentName}}</span>{{html name}}</a>
      </div>
    </td>
    {{tmpl($data) 'statColumnsTemplate'}}
  </tr>
</script>

<script type="text/x-jquery-tmpl" id="errorHeaderTemplate">
  <h2>Test Execution Errors</h2>
  <table id="errors"></table>
</script>

<script type="text/x-jquery-tmpl" id="errorTemplate">
  <tr id="${id}" class="message-row">
    <td class="error-time">
      {{if link}}
      <a onclick="makeElementVisible('${link}')" href="#${link}" title="Link to details">${date} ${time}</a>
      {{else}}
      ${date} ${time}
      {{/if}}
    </td>
    <td class="${level.toLowerCase()} level">${level}</td>
    <td class="message">{{html text}}</td>
    <td class="select-message" onclick="javascript:selectMessage('${id}')" title="Select message text">
      <div></div>
    </td>
  </tr>
</script>

<script type="text/x-jquery-tmpl" id="suiteTemplate">
  <div id="${id}" class="suite">
    <div class="element-header closed" onclick="toggleSuite('${id}')">
      <div class="element-header-left" title="{{html fullName}}">
        <span class="elapsed" title="Elapsed time">${times.elapsedTime}</span>
        <span class="${status.toLowerCase()}">TEST SUITE: </span>
        <span class="name">{{html name}}</span>
      </div>
      <div class="element-header-right" onclick="stopPropagation(event)" title="">
        <a class="expand" title="Expand all" href="javascript:expandAll('${id}')"></a>
        <a class="collapse" title="Collapse all" href="javascript:collapseAll('${id}')"></a>
        <a class="link" title="Link to this suite" href="#${id}" onclick="makeElementVisible('${id}')"></a>
      </div>
      <div class="element-header-toggle" title="Toggle visibility"></div>
    </div>
    <div class="children">
      <table class="metadata">
        <tr>
          <th>Full Name:</th>
          <td>{{html fullName}}</td>
        </tr>
        {{if doc()}}
        <tr>
          <th>Documentation:</th>
          <td class="doc">{{html doc()}}</td>
        </tr>
        {{/if}}
        {{each metadata}}
        <tr>
          <th>{{html $value[0]}}:</th>
          <td class="doc">{{html $value[1]}}</td>
        </tr>
        {{/each}}
        {{if source}}
        <tr>
          <th>Source:</th>
          {{if relativeSource}}
          <td><a href="${relativeSource}">{{html source}}</a></td>
          {{else}}
          <td>{{html source}}</td>
          {{/if}}
        </tr>
        {{/if}}
        <tr>
          <th>Start / End / Elapsed:</th>
          <td>${times.startTime} / ${times.endTime} / ${times.elapsedTime}</td>
        </tr>
        <tr>
          <th>Status:</th>
          <td>{{tmpl($data) 'suiteStatusMessageTemplate'}}</td>
        </tr>
        {{if message()}}
        <tr>
          <th>Message:</th>
          <td class="message">{{html message()}}</td>
        </tr>
        {{/if}}
      </table>
    </div>
  </div>
</script>

<script type="text/x-jquery-tmpl" id="testTemplate">
  <div id="${id}" class="test">
    <div class="element-header closed" onclick="toggleTest('${id}')">
      <div class="element-header-left" title="{{html fullName}}">
        <span class="elapsed" title="Elapsed time">${times.elapsedTime}</span>
        <span class="${status.toLowerCase()}">TEST CASE: </span>
        <span class="name">{{html name}}</span>
        {{if !isCritical}}(non-critical){{/if}}
      </div>
      <div class="element-header-right" onclick="stopPropagation(event)" title="">
        <a class="expand" title="Expand all" href="javascript:expandAll('${id}')"></a>
        <a class="collapse" title="Collapse all" href="javascript:collapseAll('${id}')"></a>
        <a class="link" title="Link to this test" href="#${id}" onclick="makeElementVisible('${id}')"></a>
      </div>
      <div class="element-header-toggle" title="Toggle visibility"></div>
    </div>
    <div class="children">
      <table class="metadata">
        <tr>
          <th>Full Name:</th>
          <td>{{html fullName}}</td>
        </tr>
        {{if doc()}}
        <tr>
          <th>Documentation:</th>
          <td class="doc">{{html doc()}}</td>
        </tr>
        {{/if}}
        {{if tags.length}}
        <tr>
          <th>Tags:</th>
          <td>{{html tags.join(', ')}}</td>
        </tr>
        {{/if}}
        {{if timeout}}
        <tr>
          <th>Timeout:</th>
          <td>{{html timeout}}</td>
        </tr>
        {{/if}}
        <tr>
          <th>Start / End / Elapsed:</th>
          <td>${times.startTime} / ${times.endTime} / ${times.elapsedTime}</td>
        </tr>
        <tr>
          <th>Status:</th>
          <td><span class="${status.toLowerCase()}">${status}</span> ({{if isCritical}}critical{{else}}non-critical{{/if}})</td>
        </tr>
        {{if message()}}
        <tr>
          <th>Message:</th>
          <td class="message">{{html message()}}</td>
        </tr>
        {{/if}}
      </table>
    </div>
  </div>
</script>

<script type="text/x-jquery-tmpl" id="keywordTemplate">
  <div id="${id}" class="keyword">
    <div class="element-header closed" onclick="toggleKeyword('${id}')">
      <div class="element-header-left" title="{{html name}}">
        <span class="elapsed" title="Elapsed time">${times.elapsedTime}</span>
        <span class="${status.toLowerCase()}">${type}: </span>
        <span class="name">{{html name}}</span>
        <span class="arg">{{html arguments}}</span>
      </div>
      <div class="element-header-right" onclick="stopPropagation(event)">
        <a class="expand" title="Expand all" href="javascript:expandAll('${id}')"></a>
        <a class="collapse" title="Collapse all" href="javascript:collapseAll('${id}')"></a>
        <a class="link" title="Link to this keyword" href="#${id}" onclick="makeElementVisible('${id}')"></a>
      </div>
      <div class="element-header-toggle" title="Toggle visibility"></div>
    </div>
    <div class="children">
      <table class="metadata keyword-metadata">
        {{if doc()}}
        <tr>
          <th>Documentation:</th>
          <td class="doc">{{html doc()}}</td>
        </tr>
        {{/if}}
        {{if timeout}}
        <tr>
          <th>Timeout:</th>
          <td>{{html timeout}}</td>
        </tr>
        {{/if}}
        <tr>
          <th>Start / End / Elapsed:</th>
          <td>${times.startTime} / ${times.endTime} / ${times.elapsedTime}</td>
        </tr>
      </table>
    </div>
  </div>
</script>

<script type="text/x-jquery-tmpl" id="messageTemplate">
  <table id="${id}" class="messages ${level.toLowerCase()}-message">
    <tr class="message-row">
      <td class="time">${time}</td>
      <td class="${level.toLowerCase()} level">${level}</td>
      <td class="message">{{html text}}</td>
      <td class="select-message" onclick="javascript:selectMessage('${id}')" title="Select message text">
        <div></div>
      </td>
    </tr>
  </table>
</script>

<script type="text/x-jquery-tmpl" id="logLevelSelectorTemplate">
  <div id="log-level-selector">
  Log level:
    <select onchange="logLevelSelected(this.options[selectedIndex].value)">
      <option value="2">INFO</option>
      <option value="1">DEBUG</option>
      {{if showTrace()}}<option value="0">TRACE</option>{{/if}}
    </select>
  </div>
</script>

</body>
</html>
